CoreCode部落格

用法

Claude Code 權限模式詳解:default、acceptEdits、plan、auto 和 bypassPermissions

釋出於 · 最後核對

搜“跳過權限確認”的人,多半是被一個接一個的確認彈窗煩到了。這一頁按 Anthropic 官方的 Choose a permission mode 文件,把每種權限模式能免確認的操作、切換方法和限制講清楚,並說明 bypassPermissions 為什麼只適合隔離環境。模式名、引數、設定項和行為都取自這份文件,2026 年 10 月 30 日核對。

要點
  • 權限模式決定 Claude 在一次工作階段裡哪些操作可以不先問你。default 在 CLI 裡顯示為 Manual,只有讀取不用確認。
  • 按文件,Claude Code v2.1.283 或更高版本里,auto 模式是互動式終端和 VS Code 工作階段的內建起始模式。彈窗多,先看看自己是不是已經在 auto 模式裡。
  • 想少點確認又不想裸奔:用 acceptEdits,或者用 auto,由另一個分類器模型代你審查操作。官方說 bypassPermissions 對提示注入和意外操作沒有任何保護。
  • bypassPermissions 只該在容器、虛擬機器這類隔離環境裡用;deny 規則在所有模式下都生效,包括它。
  • 用 Shift+Tab 切換模式,用 --permission-mode 或 permissions.defaultMode 設定起始模式。

有哪些權限模式

官方文件說,權限模式決定 Claude 在工作階段裡不用先問你就能做哪些事。Manual 模式下,Claude Code 在大多數編輯檔案、執行 shell 命令或訪問網路的操作前停下來問你。下表是文件裡“每種模式不彈確認就能做什麼”的表,Manual 模式在配置裡的值是 default。

模式不問就能做的事適合
default只讀取自己審查每個操作、敏感工作
acceptEdits讀取、檔案編輯,以及常見的檔案系統命令(mkdir、touch、mv、cp 等)迭代你正在審查的程式碼
plan讀取;auto 模式可用時,還包括分類器批准的命令改程式碼之前先摸清程式碼庫
auto所有操作,後臺做安全檢查長任務、減輕確認疲勞
dontAsk工作目錄內的檔案讀取和預先批准的工具;其他會彈窗的操作一律拒絕鎖死的 CI 和指令碼
bypassPermissions所有操作只用於隔離的容器和虛擬機器

審查每個操作的那個模式,在 CLI、claude --help、VS Code 和 JetBrains 擴充套件以及桌面應用裡叫 Manual,配置值是 default,hooks 和 SDK 整合用的也是這個值。CLI 在你輸入值的地方都接受別名 manual,例如 claude --permission-mode manual 或 "defaultMode": "manual"。

怎麼切換模式

工作階段中:按 Shift+Tab 輪換權限模式。從 auto 出發,第一次按會切到 default,之後的順序是 default → acceptEdits → plan,可選的模式排在 plan 之後。狀態列會顯示當前模式:

模式狀態列顯示
default灰色的 ⏸ manual mode on
acceptEdits⏵⏵ accept edits on
plan⏸ plan mode on
auto⏵⏵ auto mode on
dontAsk⏵⏵ don't ask on
bypassPermissions⏵⏵ bypass permissions on

不是每個模式都在預設的輪換裡:

可用的可選模式排在 plan 之後,bypassPermissions 在前、auto 在最後;兩個都開了,輪換到 auto 的路上會經過 bypassPermissions。

從 Bash 權限提示裡:在 Manual 和 acceptEdits 模式下,auto 模式可用時,Bash 命令的權限提示裡會多一個 Yes, and switch to auto mode,選它會批准這條命令並把工作階段切到 auto 模式。PowerShell 工具的提示沒有這個選項,需要 Claude Code v2.1.247 或更高版本。被你的 ask 規則或 hook 強制出現的提示裡不會加這個選項,因為 auto 模式仍然會把這些提示展示給你,切過去也去不掉它們。

啟動時:用引數指定模式,同一個 --permission-mode 引數也能配合 -p 用於非互動執行:

claude --permission-mode plan

設成預設:在想要的作用範圍裡設定 permissions.defaultMode。VS Code 裡點提示框底部的模式指示器,也可以用 claudeCode.initialPermissionMode 固定起始模式。

工作階段從哪個模式開始

在終端裡開新工作階段時,Claude Code 按下面的先後順序取第一個適用的:

  1. --permission-mode 引數,或 --dangerously-skip-permissions
  2. 某個設定檔案裡的 permissions.defaultMode
  3. 內建預設值

內建預設值在 Claude Code v2.1.283 或更高版本里是 auto(在終端或 VS Code 擴充套件裡);早期版本中,auto 只在 Pro、Max 或 Team 套餐、且會獲取 feature flag 的工作階段裡生效,其餘是 default。claude -p 和 Agent SDK 的內建預設值是 default。如果有設定檔案把 disableAutoMode 設成 "disable",起始模式也是 default。選中了 auto 但工作階段不滿足 auto 模式的可用條件時,工作階段改在 Manual 下啟動。

設定位置要注意,文件寫得很具體:

想設定起始模式的範圍做法
即將開始的一次工作階段傳引數,例如 claude --permission-mode default
這臺機器上每個終端工作階段在 ~/.claude/settings.json 裡設定 permissions.defaultMode
一個專案裡每個終端工作階段在專案的 .claude/settings.json 裡設定 permissions.defaultMode。終端工作階段認可除 auto 和 bypassPermissions 之外的每個值
組織裡每個終端工作階段在託管設定裡設定 permissions.defaultMode

如果在 .claude/settings.json 或 .claude/settings.local.json 裡寫 "auto",這個值不生效;寫 "bypassPermissions" 也不生效,工作階段會在 Manual 下啟動。讓每個終端工作階段都從 Manual 模式開始,把下面存進 ~/.claude/settings.json:

{
  "permissions": {
    "defaultMode": "default"
  }
}

下一個工作階段的狀態列會顯示 ⏸ manual mode on。

acceptEdits:自動批准檔案編輯

acceptEdits 模式讓 Claude 在工作目錄裡建立和編輯檔案時不彈確認,啟用期間狀態列顯示 ⏵⏵ accept edits on。除了檔案編輯,它還自動批准常見的檔案系統 Bash 命令:mkdir、touch、rm、rmdir、mv、cp 和 sed。和檔案編輯一樣,自動批准只適用於工作目錄或 additionalDirectories 之內的路徑。

這些情況仍然會彈窗:

文件建議:想事後在編輯器裡或用 git diff 審查改動,而不是逐條批准時,用 acceptEdits。從 Manual 模式按一次 Shift+Tab 進入,或者直接啟動:

claude --permission-mode acceptEdits

plan:先研究,不改程式碼

plan 模式讓 Claude 研究並提出改動方案,但不實際改動。Claude 會讀檔案、執行探索用的 shell 命令、寫出一份計劃,但不編輯你的原始碼。在沒有“可用的繞過權限”的情況下,編輯會一直被攔住,直到你批准計劃。

規劃期間 shell 命令怎麼處理,取決於工作階段,按第一個匹配的情況算:

按 Shift+Tab 或在單條提示前加 /plan 進入 plan 模式,也可以從 CLI 直接啟動:

claude --permission-mode plan

再按一次 Shift+Tab 可以不批准計劃就退出 plan 模式。計劃就緒後,Claude 會呈現計劃並問你怎麼繼續,可選:

按 Ctrl+G 可以在預設文字編輯器裡開啟計劃,在 Claude 繼續之前直接修改。想讓專案的終端工作階段預設進入 plan 模式,在 .claude/settings.json 裡把 defaultMode 設為 plan。

auto:由分類器代你審查

auto 模式讓 Claude 執行時不再有例行的權限彈窗。一個獨立的分類器模型會在操作執行前審查它,攔下超出你請求範圍的操作、指向不認識的基礎設施的操作,以及看起來是被 Claude 讀到的惡意內容驅動的操作。明確的 ask 規則仍然會強制彈窗。

文件裡有一條明確的警告:

官方警告(原文)

Auto mode reduces permission prompts but does not guarantee safety. Use it for tasks where you trust the general direction, not as a replacement for review on sensitive operations.

意思是:auto 模式減少權限彈窗,但不保證安全;適合你信任大方向的任務,不能代替對敏感操作的審查。

auto 模式只有在賬號滿足以下全部條件時可用:

預設被攔下的操作包括(文件的列表更長):下載並執行程式碼(如 curl | bash)、把敏感資料發到外部端點、生產環境部署和遷移、force push、授予 IAM 或倉庫權限,以及不可逆地銷燬工作階段開始前就存在的檔案。預設允許的包括:工作目錄內的本地檔案操作、安裝 lock 檔案或清單裡宣告的依賴、只讀 HTTP 請求。執行 claude auto-mode defaults 可以把完整規則列表以 JSON 列印出來。

你在對話裡說的邊界會被分類器當成攔截訊號:告訴 Claude“don't push”,分類器會攔下匹配的操作,即使預設規則允許。但邊界不會存成規則,上下文壓縮可能把寫下邊界的那條訊息刪掉;文件說,要硬性保證,請加一條 deny 規則。

回退:被攔下的操作會顯示通知,並列在 /permissions 的 Recently denied 標籤下,按 r 可以改用人工批准重試。如果分類器連續攔截 3 次或累計攔截 20 次,auto 模式會暫停,Claude Code 恢復彈窗;批准彈出的操作後,auto 模式恢復。這兩個閾值不可配置。

成本和延遲:文件說,分類器請求可能執行在與 /model 所選不同的模型上;在 Enterprise 套餐,以及使用 Claude API、Claude Platform on AWS、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 的賬號上,分類器呼叫計入 token 用量。每次檢查會傳送一部分對話記錄加上待執行的操作,在執行前多一次往返。讀取和工作目錄內(受保護路徑之外)的編輯會跳過分類器,所以開銷主要來自 shell 命令和網路操作。如果服務端在工作階段本身的模型請求裡一併審查這些操作,就沒有單獨的分類器呼叫;把 ANTHROPIC_BASE_URL 指向閘道器或代理時,Claude Code v2.1.278 起預設會請服務端審查,但閘道器或代理丟掉審查請求或結果時,Claude Code 會回退到自己的分類器請求。/status 裡 Auto mode server 顯示 Enabled,說明分類器請求只用於服務端審查範圍之外的呼叫。費用上的考慮見我們的 怎麼少花 token。

bypassPermissions:跳過所有檢查

bypassPermissions 模式關閉權限提示和安全檢查,工具呼叫立即執行,包括對受保護路徑的寫入。這就是大多數人搜“跳過權限確認”想找的那個模式,但官方的警告很重:

官方警告(原文)

Only use this mode in isolated environments like containers, VMs, or dev containers without internet access, where Claude Code cannot damage your host system.

只在容器、虛擬機器或沒有網路的 dev container 這類隔離環境裡使用,這樣 Claude Code 不會損壞你的宿主系統。

官方警告(原文)

bypassPermissions offers no protection against prompt injection or unintended actions. For background safety checks with far fewer permission prompts, use auto mode instead.

意思是:bypassPermissions 對提示注入和意外操作沒有任何保護;想要彈窗少得多、同時有後臺安全檢查,請改用 auto 模式。管理員可以在託管設定裡把 permissions.disableBypassPermissionsMode 設為 "disable" 來禁止這個模式。

啟用方式和限制:

即使在這個模式下,也有“任何模式都不自動批准”的操作,會彈窗或被拒絕:明確的 ask 規則匹配的工具、AskUserQuestion 這類需要使用者互動的工具,以及被識別的 rm 和 rmdir 關鍵路徑刪除(例如 rm -rf /、rm -rf ~)。文件同時說明,關鍵路徑檢查可能漏掉一些命令,所以它不能替代沙箱這類作業系統層面的控制。

dontAsk:只允許預先批准的工具

設為 dontAsk 模式後,Claude Code 自動拒絕所有本來會彈窗的工具呼叫。工作目錄內的檔案讀取、只讀 Bash 命令、匹配你 permissions.allow 規則的操作,以及被 PreToolUse hook 批准的呼叫照常執行。文件的說法是,這個模式用於預先定義好 Claude 能做什麼的 CI 流水線或受限環境,工作階段永遠不會等待輸入。hook 的寫法見 Claude Code hooks 入門。啟動引數:

claude --permission-mode dontAsk

CI 裡配合精確白名單的例子(取自文件的 Common setups 表):

claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"

用規則代替整體放開

文件說,模式設定的是基線,可以在上面疊加權限規則,預先批准或攔截具體的工具:

規則的具體語法見 Anthropic 的 Permissions 文件;/permissions 命令的用法見 Claude Code 常用命令大全。

受保護路徑

對一小部分路徑的寫入永遠不會被自動批准,只有 bypassPermissions 模式例外(以及繞過權限可用的互動式終端 plan 模式)。這是為了防止倉庫狀態和 Claude 自身配置被意外破壞。default 和 acceptEdits 下會彈窗,auto 下交給分類器,dontAsk 下直接拒絕。受保護的目錄包括 .git、.vscode、.idea、.husky 和 .claude(有少數例外);受保護的檔案包括 .gitconfig、.bashrc、.zshrc、.npmrc、.mcp.json 和 .claude.json 等,完整列表在文件的 Protected paths 一節。settings 檔案裡的 permissions.allow 規則不會預先批准對受保護路徑的寫入。

我該選哪個模式

下面幾條是按上面的內容整理的建議,不是官方的決策樹:

常見問題

怎麼讓 Claude Code 別再彈權限確認?

先看當前模式:狀態列會顯示,按 Shift+Tab 可以輪換。想少彈窗,文件裡按風險從低到高的選擇是 acceptEdits(只免檔案編輯和常見檔案系統命令的確認)、auto(分類器代你審查)和 bypassPermissions(關閉所有檢查,只適合隔離環境)。官方明確說 bypassPermissions 對提示注入沒有保護,想要彈窗少又有安全檢查,用 auto 模式。

auto 模式為什麼用不了,或者啟動後變成了 Manual?

文件給出的常見原因:工作階段不滿足可用條件(模型不受支援,或設定檔案裡有 disableAutoMode),或者 Anthropic 暫時在服務端關閉了它。另一個容易忽略的點:把 defaultMode: "auto" 寫在 .claude/settings.json 或 .claude/settings.local.json 裡不生效,終端工作階段會在 Manual 下無報錯地啟動,要把它移到 ~/.claude/settings.json。VS Code 裡 claudeCode.initialPermissionMode 也不接受 auto,要在模式指示器裡選一次 Auto。

bypassPermissions 下 Claude 真的什麼都不會問嗎?

不是。文件說,即使在這個模式下,明確的 ask 規則、AskUserQuestion 這類需要使用者互動的工具、被識別的 rm 和 rmdir 關鍵路徑刪除仍然會彈窗或被拒絕;deny 規則也照常攔截。不過這不等於安全:文件同樣說,這個模式對提示注入和意外操作沒有保護,所以只該放在隔離環境裡用。

來源