Last active
October 24, 2025 23:20
-
-
Save ColeMurray/dd3ec8e1028117c13e33126339f77953 to your computer and use it in GitHub Desktop.
claude code cursor extension yolo patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Patch Claude Code Extension for Bypass Permissions | |
| # Compatible with versions 2.0.1 and 2.0.10+ | |
| EXTENSION_DIR="$HOME/.cursor/extensions" | |
| EXTENSION_PATTERN="anthropic.claude-code-*-universal" | |
| patch_extension() { | |
| local ext_path=$(find "$EXTENSION_DIR" -maxdepth 1 -type d -name "$EXTENSION_PATTERN" | head -n 1) | |
| if [ -z "$ext_path" ]; then | |
| echo "β Claude Code extension not found" | |
| return 1 | |
| fi | |
| echo "π¦ Found extension: $(basename "$ext_path")" | |
| local extension_js="$ext_path/extension.js" | |
| local webview_js="$ext_path/webview/index.js" | |
| # Backup originals if not already backed up | |
| if [ ! -f "$extension_js.original" ]; then | |
| echo "πΎ Creating backup of extension.js" | |
| cp "$extension_js" "$extension_js.original" | |
| fi | |
| if [ ! -f "$webview_js.original" ]; then | |
| echo "πΎ Creating backup of webview/index.js" | |
| cp "$webview_js" "$webview_js.original" | |
| fi | |
| # Check if already patched | |
| if grep -q 'permissionMode:o,' "$extension_js" 2>/dev/null || \ | |
| grep -q 'permissionMode:L,' "$extension_js" 2>/dev/null; then | |
| if grep -q '\["bypassPermissions","acceptEdits","plan"\]' "$webview_js" 2>/dev/null; then | |
| echo "β Extension already patched" | |
| return 0 | |
| fi | |
| fi | |
| echo "π§ Applying patches..." | |
| # Patch 1: extension.js - Remove hardcoded "default" permission mode | |
| # Pattern for v2.0.1: permissionMode:o===void 0?"default":o | |
| # Pattern for v2.0.10: permissionMode:L="default" | |
| if grep -q 'permissionMode:o===void 0?"default":o' "$extension_js" 2>/dev/null; then | |
| # v2.0.1 pattern | |
| sed -i.bak 's/permissionMode:o===void 0?"default":o/permissionMode:o/g' "$extension_js" | |
| echo " β Patched extension.js (v2.0.1 pattern)" | |
| elif grep -q 'permissionMode:L="default"' "$extension_js" 2>/dev/null; then | |
| # v2.0.10 pattern | |
| sed -i.bak 's/permissionMode:L="default"/permissionMode:L/g' "$extension_js" | |
| echo " β Patched extension.js (v2.0.10 pattern)" | |
| else | |
| echo " β οΈ Could not find permissionMode pattern in extension.js" | |
| fi | |
| # Patch 2: webview/index.js - Change mode array | |
| # v2.0.1: Nye=["default","acceptEdits","plan"] | |
| # v2.0.10: Fye=["default","acceptEdits","plan"] | |
| if grep -q 'Nye=\["default","acceptEdits","plan"\]' "$webview_js" 2>/dev/null; then | |
| # v2.0.1 pattern | |
| sed -i.bak 's/Nye=\["default","acceptEdits","plan"\]/Nye=["bypassPermissions","acceptEdits","plan"]/g' "$webview_js" | |
| echo " β Patched webview/index.js mode array (v2.0.1)" | |
| elif grep -q 'Fye=\["default","acceptEdits","plan"\]' "$webview_js" 2>/dev/null; then | |
| # v2.0.10 pattern | |
| sed -i.bak 's/Fye=\["default","acceptEdits","plan"\]/Fye=["bypassPermissions","acceptEdits","plan"]/g' "$webview_js" | |
| echo " β Patched webview/index.js mode array (v2.0.10)" | |
| else | |
| echo " β οΈ Could not find mode array pattern in webview/index.js" | |
| fi | |
| # Patch 3: webview/index.js - Initialize session permissionMode to bypassPermissions | |
| if grep -q 'permissionMode=kn("default")' "$webview_js" 2>/dev/null; then | |
| sed -i.bak3 's/permissionMode=kn("default")/permissionMode=kn("bypassPermissions")/g' "$webview_js" | |
| echo " β Patched webview/index.js session init" | |
| else | |
| echo " β οΈ Could not find session permissionMode initialization" | |
| fi | |
| # Patch 4: webview/index.js - Update UI text (same for both versions) | |
| if grep -q 'case"default":default:return(0,zr.jsxs)("button",{type:"button",className:Ph.footerButton,onClick:e,title:"Claude will ask before each edit' "$webview_js" 2>/dev/null; then | |
| sed -i.bak2 's/case"default":default:return(0,zr.jsxs)("button",{type:"button",className:Ph.footerButton,onClick:e,title:"Claude will ask before each edit\. Click, or press Shift+Tab, to switch modes\.",children:\[(0,zr.jsx)(Pye,{}),(0,zr.jsx)("span",{children:"Ask before edits"})\]})/case"bypassPermissions":default:return(0,zr.jsxs)("button",{type:"button",className:Ph.footerButton,onClick:e,title:"Claude will skip all permission prompts. Click, or press Shift+Tab, to switch modes.",children:[(0,zr.jsx)(Pye,{}),(0,zr.jsx)("span",{children:"Bypass permissions"})]})/g' "$webview_js" | |
| echo " β Patched webview/index.js UI text" | |
| else | |
| echo " β οΈ Could not find UI text pattern in webview/index.js" | |
| fi | |
| # Clean up .bak files | |
| rm -f "$extension_js.bak" "$webview_js.bak" "$webview_js.bak2" "$webview_js.bak3" | |
| echo "β Patching complete!" | |
| echo "π Please reload Cursor (Cmd+Shift+P β 'Developer: Reload Window')" | |
| return 0 | |
| } | |
| restore_originals() { | |
| local ext_path=$(find "$EXTENSION_DIR" -maxdepth 1 -type d -name "$EXTENSION_PATTERN" | head -n 1) | |
| if [ -z "$ext_path" ]; then | |
| echo "β Extension not found" | |
| return 1 | |
| fi | |
| if [ -f "$ext_path/extension.js.original" ]; then | |
| cp "$ext_path/extension.js.original" "$ext_path/extension.js" | |
| echo "β Restored extension.js" | |
| fi | |
| if [ -f "$ext_path/webview/index.js.original" ]; then | |
| cp "$ext_path/webview/index.js.original" "$ext_path/webview/index.js" | |
| echo "β Restored webview/index.js" | |
| fi | |
| } | |
| case "${1:-}" in | |
| --restore) | |
| restore_originals | |
| ;; | |
| --help) | |
| echo "Usage: $0 [--restore|--help]" | |
| echo "" | |
| echo "Options:" | |
| echo " (none) Patch the extension" | |
| echo " --restore Restore original files from backups" | |
| echo " --help Show this help message" | |
| ;; | |
| *) | |
| patch_extension | |
| ;; | |
| esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
are u supposed to run this command on any server through ssh terminal in which you are working?