Skip to content

Instantly share code, notes, and snippets.

@ColeMurray
Last active October 24, 2025 23:20
Show Gist options
  • Select an option

  • Save ColeMurray/dd3ec8e1028117c13e33126339f77953 to your computer and use it in GitHub Desktop.

Select an option

Save ColeMurray/dd3ec8e1028117c13e33126339f77953 to your computer and use it in GitHub Desktop.
claude code cursor extension yolo patch
#!/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
@seanGSISG
Copy link

This has broken, I have updated your script with a fix here https://github.com/seanGSISG/claude-code-extension-patcher

@monukoshy
Copy link

are u supposed to run this command on any server through ssh terminal in which you are working?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment