1
問題現象:設了 bypass,它還是每次都問
你打開 settings.json,老老實實加上了 "defaultMode": "bypassPermissions",滿心期待 Claude Code 從此不再煩你。
結果打開 VS Code,Claude 一跑指令——「Allow this bash command?」——又來了。
你以為是自己設錯了,於是反覆檢查、反覆修改。每次被問你都乖乖點「允許」,結果 allow 白名單從 10 條變成 50 條,再變成 100 多條。文件越來越亂,問題卻一點都沒解決。
惡性循環流程圖
用戶設 bypass
settings.json
→
Claude Code 啟動
VS Code 擴展
→
每次操作彈框
Allow this command?
→
用戶點「允許」
以為是自己的問題
→
allow 列表 100+ 條
越積越長,完全沒用
真相:這不是你的問題。社區已經確認至少三個 Bug 會導致 bypass 設定失效,影響所有 VS Code 用戶。
2
三個已知 Bug:讓你的 bypass 形同虛設
經過 Reddit 和 GitHub 的大量討論,社區確認了至少三個不同層面的 Bug,它們可以單獨觸發,也可以疊加在一起,讓你的 bypass 完全失效。
BUG #1
VS Code 擴展不讀 bypass 設定
GitHub #43953 確認了這個問題:VS Code 擴展中的
也就是說,它完全無視你在
影響範圍:所有在 VS Code 面板裡使用 Claude Code 的用戶。終端 CLI 不受影響。
requestToolPermission 方法被寫死了,只放行 MCP 工具(外部 API 呼叫),其他所有操作(讀文件、寫文件、跑 Bash)一律彈框。
也就是說,它完全無視你在
settings.json 裡設的 defaultMode: "bypassPermissions"。
影響範圍:所有在 VS Code 面板裡使用 Claude Code 的用戶。終端 CLI 不受影響。
小白翻譯:就像你跟大門保全說「我有 VIP 通行證,以後不用刷卡」,保全點了點頭。但實際上他的刷卡機是硬體設定的,根本沒有「VIP 免刷」這個功能。所以你每次進門他還是攔你——不是他不想放你進去,是他的機器不支持。
BUG #2
操作項目外文件,bypass 偷偷被降級
GitHub #41763 確認了這個問題:當你的 Claude Code 要操作項目根目錄以外的文件時(例如
你點了「允許」之後,看起來操作繼續了,但背後 Claude Code 偷偷把你的權限模式從 bypass 降級成了 acceptEdits。從這一刻起,所有後續操作都會彈框。
觸發條件:操作
D:\tmp\、C:\Users\),Claude Code 會彈出「suspicious path」提示。
你點了「允許」之後,看起來操作繼續了,但背後 Claude Code 偷偷把你的權限模式從 bypass 降級成了 acceptEdits。從這一刻起,所有後續操作都會彈框。
觸發條件:操作
D:\tmp\、C:\Users\ 等非項目目錄的文件。
小白翻譯:你拿著 VIP 通行證走出了大樓,去隔壁辦事。回來的時候保全說:「你出去過了?那 VIP 通行證降級為普通訪客證,以後每次都要刷卡。」而且他不會告訴你通行證已經被降級了。
BUG #3
.claude/ 目錄被硬編碼保護,bypass 無效
從 v2.1.78 開始,因為安全漏洞
任何對
這不是 Bug,是故意的安全設計。但 Anthropic 沒有在文件裡說明這點,導致很多人以為自己的 bypass 壞了。
CVE-2026-33068(攻擊者可以通過修改 .claude/ 內的文件來注入指令),Anthropic 直接在程式碼裡硬編碼了保護:
任何對
.claude/ 和 .git/ 目錄內文件的操作,永遠會彈框,不管你設了什麼。
這不是 Bug,是故意的安全設計。但 Anthropic 沒有在文件裡說明這點,導致很多人以為自己的 bypass 壞了。
小白翻譯:大樓裡有一間「保險庫」,就算你是 VIP,進保險庫的時候還是要刷一次卡。這是安全規定,不會因為你是 VIP 就豁免。區別是:這個規定大樓管理處沒有公告,你第一次被攔的時候會很困惑。
三個 Bug 的作用範圍
Bug 1:VS Code 不讀
影響所有 VS Code 用戶
+
Bug 2:路徑偷偷降級
影響跨目錄操作
+
Bug 3:硬編碼保護
影響 .claude/ .git/
=
bypass 形同虛設
到處都在彈框
3
社區證據:不是你一個人遇到
以下是 GitHub Issues 和 Reddit 上的真實討論,全部指向同一個問題。你不是一個人在戰鬥。
GitHub Issues
| Issue | 狀態 | 描述 |
|---|---|---|
#43953 |
OPEN | VS Code 擴展的 requestToolPermission 寫死只放行 MCP 工具,完全不讀 bypass 設定 |
#41763 |
OPEN | 操作項目外路徑觸發「suspicious path」提示後,bypass 被偷偷降級為 acceptEdits |
#43845 |
OPEN | VS Code UI 裡的 toggle 開關不會寫入 settings.json,重開 session 設定消失 |
#36192 |
OPEN | --dangerously-skip-permissions 旗標在 Edit 工具上無效(22 則留言討論) |
#35756 |
OPEN | initialPermissionMode 被忽略,不管設什麼都不生效 |
#39057 |
OPEN | 對話中途 bypass 模式被無預警重置為 edit 模式 |
Reddit 討論
| 來源 | 熱度 | 描述 |
|---|---|---|
| 28 upvotes | v2.1.78 broke bypassPermissions — 升級後 bypass 完全失效 | |
| 29 upvotes | binary patcher workaround — 有人直接修改二進制文件繞過限制 | |
| 多篇 | 「Claude asking permission every 10 seconds」— 每 10 秒問一次,工作流完全中斷 |
一句話總結:6 個 GitHub Issues 全部 OPEN,沒有一個被修復。Reddit 上幾十個 upvote,說明這是大規模影響的問題。不是個案,不是設定錯誤,就是 Bug。
4
解決方案:五招對抗 bypass 失效
官方 Bug 還沒修,但社區已經摸索出一套可靠的繞過方案。以下五招可以搭配使用,效果最好。
方案 1
用通配符清理 allow 列表
如果你的
解法:把 100+ 條精確匹配替換成 10 條左右的通配符規則。一條通配符可以覆蓋幾十條精確規則。
permissions.allow 裡已經積累了 100 多條精確命令,每一條只匹配一個特定指令,毫無通用性。
解法:把 100+ 條精確匹配替換成 10 條左右的通配符規則。一條通配符可以覆蓋幾十條精確規則。
通配符 ALLOW 列表範例
// 替代幾十條精確的 Bash 命令 "permissions": { "allow": [ "Bash(*)", // 所有 Bash 指令 "Read(*)", // 所有文件讀取 "Edit(*)", // 所有文件編輯 "Write(*)", // 所有文件寫入 "Grep(*)", // 所有搜尋 "Glob(*)", // 所有文件匹配 "WebFetch(*)", // 所有網頁抓取 "WebSearch(*)", // 所有搜尋引擎 "mcp__*(*)", // 所有 MCP 工具 "TodoWrite(*)" // Todo 操作 ] }
效果:10 條通配符規則 = 原來 100+ 條精確規則。而且新的操作也自動被覆蓋,不用每次再點「允許」。
方案 2
三個文件都要設 bypass(缺一不可)
很多人只設了一個文件,以為就夠了。但 Claude Code 會從多個位置讀取設定,缺了任何一個都可能導致 bypass 失效。
1
全局設定 ~/.claude/settings.json
路徑:
作用:對所有項目生效的「校規」。沒有項目級設定的項目會靠它。
C:\Users\你的名字\.claude\settings.json作用:對所有項目生效的「校規」。沒有項目級設定的項目會靠它。
2
項目設定 .claude/settings.json
路徑:
作用:這個項目的「班規」,可以覆蓋全局。如果沒有 defaultMode,全局的 bypass 就被吃掉。
你的項目/.claude/settings.json作用:這個項目的「班規」,可以覆蓋全局。如果沒有 defaultMode,全局的 bypass 就被吃掉。
3
本地設定 .claude/settings.local.json
路徑:
作用:不進 git 的個人設定,優先級最高。如果存在但沒有 defaultMode,其他文件的 bypass 都會被覆蓋。
你的項目/.claude/settings.local.json作用:不進 git 的個人設定,優先級最高。如果存在但沒有 defaultMode,其他文件的 bypass 都會被覆蓋。
4
VS Code 設定 settings.json (VS Code)
VS Code 的
Ctrl+, → 搜索 claude code → 確認 permission 相關設定沒有覆蓋。
關鍵:四個地方,缺一不可。任何一個文件存在但沒有設 bypass,就可能把其他文件的 bypass 覆蓋掉。
方案 3
終端 CLI 比 VS Code 面板可靠
Bug #1 的核心是 VS Code 擴展不讀 bypass 設定。所以最直接的繞過方式是——不用 VS Code 面板,改用終端 CLI。
在終端裡執行:
在終端裡執行:
終端 CLI 用法
# 方法一:直接在終端啟動(推薦) claude --dangerously-skip-permissions # 方法二:在 VS Code 裡開終端(Terminal),而不是用 Claude 面板 # Ctrl+` 打開終端,輸入: claude --dangerously-skip-permissions
小白提醒:「面板」是 VS Code 左側或底部的 Claude Code 聊天窗口。「終端 CLI」是你自己打開的命令行。Bug 只影響面板,終端 CLI 會正確讀取 settings.json 的 bypass 設定。
方案 4
避免觸發降級(針對 Bug #2)
Bug #2 是操作項目外文件觸發降級。以下三招可以避免觸發:
A
把常用目錄加入 additionalDirectories
在 settings.json 裡加上你常用的非項目目錄,告訴 Claude Code 這些路徑是你信任的:
"additionalDirectories": ["D:\\tmp", "C:\\Users\\Administrator"]
B
中途按 Shift+Tab 切回 bypass
如果你發現 Claude 突然又開始彈框了,按
Shift+Tab 可以在 session 內重新切回 bypass 模式(但不是所有版本都支持)。
C
不要用 file:// 開頭的路徑
有用戶反映,在對話中給 Claude 一個
file:// 開頭的路徑會觸發「外部路徑」警告。用普通路徑即可。
方案 5
降級到 v2.1.77(核彈選項)
如果以上方案都不行,最後手段是降級到 v2.1.77。這是 Bug #3(.claude/ 硬編碼保護)引入之前的版本。
注意:降級意味著你失去了 CVE-2026-33068 的安全修補,如果有人能在你的 .claude/ 目錄裡放惡意文件,你會有安全風險。
只適合:個人電腦、不對外暴露、完全信任自己操作環境的用戶。
注意:降級意味著你失去了 CVE-2026-33068 的安全修補,如果有人能在你的 .claude/ 目錄裡放惡意文件,你會有安全風險。
只適合:個人電腦、不對外暴露、完全信任自己操作環境的用戶。
降級指令
# 全局安裝指定版本(需要 npm) npm install -g @anthropic-ai/claude-code@2.1.77 # 或使用 VS Code 擴展的版本控制 # 擴展面板 → Claude Code → 齒輪 → Install Another Version → 2.1.77
風險提醒:降級是「核彈選項」,解決了問題但犧牲了安全。建議優先嘗試方案 1-4,不行再考慮方案 5。
5
完整設定範本:直接複製貼上
以下是經過社區驗證的完整設定範本。兩個文件都要設,缺一不可。複製貼上即可。
全局設定
C:\Users\你的名字\.claude\settings.json
// 全局設定:影響所有項目 { "permissions": { "defaultMode": "bypassPermissions", "allow": [ "Bash(*)", "Read(*)", "Edit(*)", "Write(*)", "Grep(*)", "Glob(*)", "WebFetch(*)", "WebSearch(*)", "mcp__*(*)", "TodoWrite(*)" ], "deny": [] }, "skipDangerousModePermissionPrompt": true }
項目設定(本地)
你的項目/.claude/settings.local.json
// 項目級本地設定:不進 git,優先級最高 { "permissions": { "defaultMode": "bypassPermissions", "allow": [ "Bash(*)", "Read(*)", "Edit(*)", "Write(*)", "Grep(*)", "Glob(*)", "WebFetch(*)", "WebSearch(*)", "mcp__*(*)", "TodoWrite(*)" ], "deny": [] }, "skipDangerousModePermissionPrompt": true }
為什麼 bypass 了還要 allow?因為 Bug #1(VS Code 不讀 bypass),所以即使設了 bypass,也要用通配符 allow 列表做「雙保險」。如果 bypass 不生效,通配符 allow 至少能自動放行大部分操作。
設完之後記得:關掉當前 Claude Code 對話,開一個全新的 session。設定只在新 session 啟動時才會載入。
6
等待官方修復:你能做的事
截至 2026 年 4 月,以上六個 GitHub Issues 全部還在 OPEN 狀態,Anthropic 還沒有提供官方修復。但你可以做以下事情推動修復:
1
去 GitHub Issues 點讚
打開
#43953 和 #41763,點右上角的 thumbs up( 👍 )。這是 Anthropic 評估修復優先級的重要指標。越多人點,修得越快。
2
關注 Anthropic Changelog
每次 Claude Code 更新時,查看 changelog 裡是否提到了 permission/bypass 相關的修復。一旦官方修復了,你可以移除上面的 workaround。
3
暫時接受現狀
用方案 1-4 的組合,已經可以讓 95% 的操作不再彈框。剩下 5%(主要是 .claude/ 和 .git/ 目錄)是安全設計,接受就好。
最後一句話:bypass 權限失效不是你的問題,是已知 Bug。設好通配符 allow + 三個文件都設 bypass + 用終端 CLI,就能解決 95% 的煩惱。剩下的,等 Anthropic 修。