Claude Code 的權限模式決定哪些動作可以不經詢問直接執行。default(顯示為 Manual)會在編輯檔案和執行 shell 指令前詢問。acceptEdits 還會直接放行檔案編輯和常見的檔案指令。plan 讓 Claude 讀取並提出計畫,但不能編輯。auto 由背景分類器代替你核准動作。dontAsk 會拒絕所有需要詢問的動作。bypassPermissions 可透過 --dangerously-skip-permissions 開啟,幾乎完全跳過詢問,只適合在隔離的容器或 VM 中使用。按 Shift+Tab 可切換模式,或用 claude --permission-mode <mode> 啟動。
本指南依據 Anthropic 的權限模式文件撰寫。Claude Code 更新頻繁,請到該文件確認你所使用版本的內容。
01六種模式一覽
default(Manual)僅限讀取需要逐一審查每個動作、處理敏感工作acceptEdits讀取、檔案編輯,以及在工作目錄內執行常見的檔案系統指令,例如 mkdir、touch、mv 和 cp一邊盯著一邊反覆修改程式碼plan讀取;在你核准計畫前會封鎖編輯動手修改前先探索auto全部允許,但每個動作都會先經過分類器檢查想減少 prompt 的長時間任務dontAsk工作目錄內的讀取與預先核准的工具;其他一律拒絕CI 與受嚴格限制的腳本bypassPermissions幾乎全部允許,僅少數例外僅限隔離的容器與 VMdefault 是在設定、hook 以及 --permission-mode 旗標中使用的名稱。CLI、IDE 擴充功能和桌面應用程式則將它標示為 Manual,CLI 也接受 manual 作為別名。
02如何切換模式
在 terminal 中按 Shift+Tab。切換順序為 default、acceptEdits、plan,接著是工作階段允許的其他選用模式。dontAsk 不會出現在切換循環中,只能透過旗標設定。
以特定模式啟動工作階段:
claude --permission-mode plan
若要將某個模式設為預設,請在 ~/.claude/settings.json 中設定:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
旗標優先於設定,設定又優先於內建預設值。有個限制值得注意:auto 和 bypassPermissions 寫在專案的 .claude/settings.json 或 .claude/settings.local.json 中不會生效,因此儲存庫無法偷偷讓你進入 bypass 模式。這兩種模式請在使用者設定中設定,或透過旗標指定。
新工作階段的起始模式
較新版本的 Claude Code(v2.1.283 以上)在 auto 模式可用時,互動式 terminal 與 VS Code 工作階段會以 auto 啟動,除非你的設定另有指定。claude -p 和 Agent SDK 則以 default 啟動。如果你從沒選過模式,卻好奇為什麼 prompt 這麼少,原因就在這裡。
03各模式詳細說明
default(Manual)
Claude 可以直接讀取檔案,不必詢問。編輯、shell 指令和網路存取則都會跳出 prompt。在 Bash 的 prompt 中選擇「Yes, and don't ask again」,會將允許規則儲存到 .claude/settings.local.json,之後在這個儲存庫中執行該指令就不會再詢問。檔案編輯的核准則持續到工作階段結束。
acceptEdits
工作目錄內的編輯與簡單檔案指令(mkdir、touch、rm、rmdir、mv、cp、sed)會直接執行,不跳出 prompt;其他 shell 指令仍會詢問。適合一邊即時查看 diff 的折衷做法。
plan
Claude 會透過讀取與唯讀指令探索程式碼,然後提出計畫。在你核准之前,原始碼都不會被修改。適合處理不熟悉的程式碼或有風險的變更。
auto
每個動作執行前,都會由另一個模型審查,並封鎖超出你要求範圍、針對它無法辨識的基礎設施,或看似受惡意內容驅動的動作。明確的 ask 規則仍會跳出 prompt。如果分類器連續封鎖三個動作,或在單一工作階段中封鎖二十個,auto 模式會暫停並恢復一般的 prompt 流程。Anthropic 官方的說法是:auto 模式「能減少權限 prompt,但不保證安全」。
dontAsk
任何需要 prompt 的動作都會被拒絕,只有符合允許規則或本來就不需核准的動作才會執行。這個模式專為沒有人可以回應的腳本與 CI 而設計。
bypassPermissions 與 --dangerously-skip-permissions
--dangerously-skip-permissions 等同於 --permission-mode bypassPermissions。所有 prompt 都會被略過,包括寫入 .git 和 .claude 等受保護路徑。不過有少數情況在任何模式下仍會詢問或被拒絕,包括明確的 ask 規則、AskUserQuestion,以及某些危險的 rm 指令。拒絕規則依然有效。
Anthropic 建議只在無網路連線的容器、VM 或 dev container 中使用。在 Mac 和 Linux 上,若不在可辨識的沙箱內,Claude Code 會拒絕以 root 或透過 sudo 在此模式下啟動。如果你只想讓 bypass 模式可供選用而不直接啟用,可以使用 --allow-dangerously-skip-permissions,將它加入 Shift+Tab 的切換循環,但不會切換過去。
04規則疊加在模式之上
模式決定基本行為,設定中的權限規則則用來微調:
{
"permissions": {
"allow": ["Bash(npm run test *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"]
}
}
規則的檢查順序為 deny、ask、allow,以第一個符合的規則為準。拒絕規則在所有模式下都會封鎖,包括 bypassPermissions。允許規則在 bypassPermissions 中沒有作用,因為那裡本來就全部允許。執行 /permissions 可查看所有規則及其來源檔案。
Hook 也能參與其中。PreToolUse hook 可以在任何模式下封鎖工具呼叫;PermissionRequest hook 可以替你回應 prompt,但無法覆蓋拒絕規則。詳見 PermissionRequest 指南。
05離開座位時該選哪種模式
大家會想用 --dangerously-skip-permissions,通常是想讓 Claude 持續執行,回來時不要看到 session 卡在某個 prompt 上。這確實是個問題,但 bypass 模式的解法是在你自己的電腦上完全拿掉你的監督。
比較安全的組合:
- 為無聊的指令設定 allow 規則。把測試、lint 和 build 指令加進
allow,對git push和部署保留ask,並維持在default或acceptEdits模式。 - auto 模式:適合長時間任務,且你願意讓分類器判斷例行操作。
- 讓 prompt 跟著你走。維持會詢問的模式,再用手機回覆少數真正重要的 prompt。
最後一種就是 Claude Code Notifier 在做的事。它是獨立工具,並非 Anthropic 出品。它的命令列工具 ccn 以 Claude Code hook 的形式在 Mac、Windows 和 Linux 上執行。當 Claude Code 即將要求權限而你不在電腦前時,請求會送到你已配對的 iPhone 或 Android 手機,你可以選擇允許一次、在本 session 中允許,或拒絕。它只會看到 Claude Code 原本就會顯示的 prompt,所以要不要詢問仍由模式和你的規則決定。在 auto 模式下請求會比較少;在 bypassPermissions 下則完全沒有,不過「Claude 已完成」的通知和提問仍會送達。設定方式請見手機核准指南,風險說明請見從手機核准安全嗎?。
06常見問題
default 和 acceptEdits 有什麼差別?
default 在每次編輯檔案和執行 shell 指令前都會詢問。acceptEdits 則允許在工作目錄內直接編輯檔案,以及執行 mkdir、mv、cp 等常見檔案指令,不必詢問。其他 shell 指令在兩種模式下都仍會跳出 prompt。
--dangerously-skip-permissions 和 bypassPermissions 一樣嗎?
是的。這個旗標等同於 --permission-mode bypassPermissions。Anthropic 建議只在隔離的容器或 VM 中使用,最好沒有網路連線。
如何讓 Claude Code 對某個指令不再詢問權限?
在 prompt 上選擇「Yes, and don't ask again」,或在設定的 permissions.allow 底下加入 allow 規則,例如 "Bash(npm test)"。這比切換整個模式安全。
專案的設定能把我切到 bypassPermissions 模式嗎?
不行。寫在 .claude/settings.json 或 .claude/settings.local.json 中的 bypassPermissions 和 auto 不會生效,只有在使用者設定、受管理設定或命令列旗標中才會套用。
bypassPermissions 模式下 hook 還會執行嗎?
會。hook 在所有模式下都會執行,而拒絕工具呼叫的 PreToolUse hook 即使在 bypassPermissions 下也能擋下呼叫。PermissionRequest hook 只在有 prompt 需要回覆時才會執行,所以在 bypass 模式下很少觸發。