Appearance
Claude Code 權限模式與安全設定
控制 Claude Code 自動執行程度的六種安全等級,搭配危險指令禁用清單與 Status Line 工具,建立完整的安全使用體系。
概述
Claude Code 透過「權限模式」來決定每個 tool call(檔案修改、bash 指令、網路操作)是否需要人工確認。不同模式對應不同的信任等級與使用場景:最保守的 Default 模式確保每個動作都有人眼過目,而 Bypass Permissions 模式則讓 Claude 完全自主執行,中間有多種漸進式的選項。
選擇模式的核心考量是「如果 Claude 做錯了,後果有多嚴重?」在生產環境或包含敏感資料的專案,寧願多一次確認也不要意外操作;在乾淨的沙盒環境或 CI/CD pipeline,零中斷才能讓自動化發揮價值。
除了選擇適當的權限模式,還可以透過設定「危險指令禁用清單」阻止高破壞性的 bash 指令,並安裝 Status Line 工具即時監控 context 壓縮狀態與用量,讓長時間工作更加可控。
核心內容
六種模式總覽
| 模式 | 無需詢問即可執行的操作 | 安全性 | 最適合使用情境 |
|---|---|---|---|
default | 僅讀取 | ⭐⭐⭐⭐⭐ | 入門、敏感工作、生產環境 |
acceptEdits | 讀取、檔案編輯,以及常見檔案系統命令(mkdir、touch、mv、cp 等) | ⭐⭐⭐⭐ | 迭代你正在審查的程式碼 |
plan | 僅讀取 | ⭐⭐⭐⭐ | 複雜任務,在變更前探索程式碼庫 |
auto | 所有操作,具有背景安全檢查 | ⭐⭐⭐ | 長時間執行的任務、減少提示疲勞 |
dontAsk | 僅預先批准的工具 | ⭐⭐ | 鎖定的 CI 與指令碼 |
bypassPermissions | 除受保護路徑外的所有操作 | ⭐ | 僅隔離容器和 VM |
Default 模式
最保守的模式,所有操作都需要人工確認。這是預設值,適合操作生產環境或包含敏感資料的專案。Session 中按 Shift+Tab 可循環切換到其他模式。
Accept Edits 模式
自動通過所有檔案建立與修改,以及 mkdir、touch、mv、cp 等常見檔案系統命令。其他 bash 指令(git commit、npm install、測試執行等)仍需人工確認。這個設計讓你在享受高頻編輯不被打斷的同時,保留對系統層操作的最後防線。
適合大量檔案編輯但想保留 bash 指令審查權的日常開發。
Plan 模式
Claude 先呈現完整的執行計畫供你審查,核可整個計畫後才開始執行。個別操作在執行階段仍需確認。適合複雜重構或資料庫遷移等需要策略性審查的任務。
Auto 模式
由 Sonnet 4.6 classifier 即時判斷每個 tool call 是否安全。安全的操作(讀檔、寫程式碼、跑測試)自動通過;危險的操作(大規模刪檔、資料外洩、惡意指令)被攔截,並要求 Claude 改用更安全的方式。
連續 3 次被攔截、或累計 20 次 tool call 被攔截,系統暫停並交給人工處理。
限制: 目前僅限 Team / Enterprise plan,Pro/Max plan 尚未開放。Classifier 判斷會消耗額外 token,仍建議在隔離環境中使用。
dontAsk 模式
只有預先批准的工具清單中的工具能無需確認地執行,其餘全部詢問。與 acceptEdits 的差異:acceptEdits 是「所有檔案操作自動通過」,dontAsk 是「明確白名單以外都問」。
適合 CI pipeline 或指令碼自動化場景,需要在 settings.json 中明確列出允許的工具。
Bypass Permissions 模式
完全關閉所有權限提示,Claude 不問任何問題直接執行。即使在此模式下,受保護路徑的寫入仍會觸發提示(見下節)。
主要風險:
- 檔案誤刪或覆蓋(不可逆)
- 執行非預期的 bash 指令
- Scope creep(Claude 修改超出範圍的檔案)
適合乾淨的隔離環境、CI/CD pipeline、有 git 保護的小專案。搭配 Dev Container 隔離 使用更安全。
受保護路徑(所有模式皆適用)
即使在 bypassPermissions 模式下,以下路徑的寫入操作仍會觸發確認提示:
| 路徑 | 原因 |
|---|---|
.git/ | 防止 git 狀態損壞 |
.claude/ | 防止 Claude 自身設定被改寫 |
.claude/skills/ | v2.1.81 起新增保護 |
例外: .claude/commands、.claude/agents、.claude/skills、.claude/worktrees 允許 Claude 寫入,因為這些是 Claude 正常運作需要的路徑。
模式切換方式
Session 中切換: 按 Shift+Tab 循環切換。預設循環為 default → acceptEdits → plan。
以下模式需要額外啟用才會出現在循環中:
| 模式 | 啟用條件 |
|---|---|
auto | 需先執行 claude --enable-auto-mode,且帳號為 Team/Enterprise plan |
bypassPermissions | 需啟動時帶 --dangerously-skip-permissions 或 --allow-dangerously-skip-permissions |
持久化: 在 settings.json 中設定 defaultMode 欄位,每次啟動自動套用。
危險指令禁用設定
AI 執行的指令無法完全預期,可透過 settings.json 的 denyList 設定來禁止高破壞性指令。以下 Prompt 可直接給 Claude Code 請它修改設定(會保留其他原有設定):
text
我希望 Claude 在默認的 settings 禁止下面的指令(其他原有設定要保留):
- 刪除:rm -rf, rm -fr, rm -r, rm -R, rm -f
- 最高權限:sudo
- 磁碟破壞:dd, mkfs, diskutil erase
- 權限濫用:chmod 777, chmod -R 777
- Git 不可逆操作:reset --hard, push --force, push -f, clean -f, branch -D
- 系統關機/重開:shutdown, reboot
- 檔案清空:: >, truncate
完成後給我看設定檔| 類別 | 指令 / 模式 | 風險說明 |
|---|---|---|
| 刪除 | rm -rf、rm -fr、rm -r、rm -R、rm -f | 遞迴 / 強制刪除,無法復原 |
| 最高權限 | sudo | 以 root 權限執行,影響範圍極廣 |
| 磁碟破壞 | dd、mkfs、diskutil erase | 可直接覆寫或格式化磁碟 |
| 權限濫用 | chmod 777、chmod -R 777 | 開放所有人讀寫執行,嚴重資安漏洞 |
| Git 不可逆 | reset --hard、push --force / push -f、clean -f、branch -D | 強制覆寫遠端 / 本地紀錄,丟失提交 |
| 系統關機重開 | shutdown、reboot | 中斷其他工作中的服務 |
| 檔案清空 | : >、truncate | 直接清空檔案內容 |
完成設定後務必檢視最終的 settings 設定檔,確認禁用清單已正確寫入且未影響其他既有設定。
Status Line
Status Line 是長時間使用 Claude Code 時的監控工具,即時顯示以下狀態:
- Context 被壓縮(Compact):對話上下文被自動精簡,可能遺失關鍵資訊
- Claude 忘記前面資訊:模型已脫離原始指令脈絡
- 額度耗盡:API 用量或 token 配額已達上限
建議在開始使用 Claude Code 後就先安裝,避免成本超支或上下文遺失造成工作品質下降。
關鍵要點
- 六種模式對應從「全問」到「全放」的安全光譜,核心取捨是效率 vs. 誤操作風險
- Auto 模式是目前最聰明的方案,但需要 Team/Enterprise plan 才能使用
- 受保護路徑(
.git/、.claude/)在所有模式下都有保護,防止不可逆損壞 - Session 中可隨時按 Shift+Tab 切換,無需重新啟動
- 危險指令禁用清單(denyList)是對抗 AI 誤操作的額外防線,與權限模式互補
bypassPermissions模式風險最高,只應在完全隔離的容器或 VM 中使用
實際應用
搭配 OpenSpec SDD 框架 或 Superpowers 等需要長時間自動執行的工作流程時,模式選擇至關重要:
- 小專案 / 乾淨環境: 先做一次 git checkpoint,再用 bypassPermissions 獲得零中斷體驗
- 有一定規模的專案: 啟用 Auto 模式,讓 classifier 自動把關
- 安全最大化: acceptEdits 模式,檔案修改自動通過但 bash 指令逐一確認
- 完整安全設定: 設定危險指令 denyList + 安裝 Status Line,再搭配 Dev Container 隔離
部署設定參考
以下為實際使用的 CLI 指令與 settings.json 設定,供快速查詢與複製使用。
各模式啟動方式
bash
# Default(直接啟動即為 default)
claude
# Accept Edits
claude --permission-mode acceptEdits
# Plan
claude --permission-mode plan
# Auto(需先一次性啟用)
claude --enable-auto-mode
claude # 之後 Shift+Tab 切換到 auto
# Bypass Permissions
claude --dangerously-skip-permissions
claude --permission-mode bypassPermissionsBypass Permissions 進階用法
bash
# 搭配預算限制
claude --dangerously-skip-permissions --max-budget-usd 10.00
# 搭配 session 恢復
claude --dangerously-skip-permissions --resume my-session
# 搭配指定工作目錄
claude --dangerously-skip-permissions --cwd ~/projects/sandboxSession 恢復(任何模式皆可用)
bash
# 接回上次的 session(保留對話歷史)
claude --resume
# 搭配 bypass permissions
claude --dangerously-skip-permissions --resume危險指令禁用清單(settings.json)
json
{
"permissions": {
"deny": [
"Bash(rm -rf*)",
"Bash(rm -fr*)",
"Bash(rm -r*)",
"Bash(rm -R*)",
"Bash(rm -f*)",
"Bash(sudo*)",
"Bash(dd*)",
"Bash(mkfs*)",
"Bash(diskutil erase*)",
"Bash(chmod 777*)",
"Bash(chmod -R 777*)",
"Bash(*reset --hard*)",
"Bash(*push --force*)",
"Bash(*push -f *)",
"Bash(*clean -f*)",
"Bash(*branch -D*)",
"Bash(shutdown*)",
"Bash(reboot*)",
"Bash(truncate*)"
]
}
}Status Line 安裝
bash
npx @kamranahmedse/claude-statusline搭配 Superpowers 的推薦組合
bash
# 小專案 / 乾淨環境
git init && git add -A && git commit -m "checkpoint"
claude --dangerously-skip-permissions
# 進入後執行 /superpowers:brainstorm → 全程無中斷
# 有一定規模的專案
claude --enable-auto-mode # 一次性啟用
claude # 正常啟動,Shift+Tab 切換到 auto
# 安全最大化
claude --permission-mode acceptEdits
# 檔案修改自動通過,bash 指令逐一確認相關概念
- Claude Code Dev Container 導入 — bypassPermissions 的正確使用前提:容器隔離環境
- OpenSpec SDD 框架 — 搭配 Auto/Bypass 模式長時間自動執行的 Spec-Driven 開發框架
- Claude Desktop Extension(MCPB)打包與發布 — Claude 工具生態的另一個延伸形式
- GitHub Copilot Sub-Agent 編排 — 使用 Sub-Agent 模式進行 AI 輔助開發時,所需的 Claude Code 權限模式設定
- Superpowers AI 開發方法論 — 以強制性工作流(TDD、subagent 隔離)使用 Claude Code 的方法論;建議搭配 Auto 模式