Skip to content

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讀取、檔案編輯,以及常見檔案系統命令(mkdirtouchmvcp 等)⭐⭐⭐⭐迭代你正在審查的程式碼
plan僅讀取⭐⭐⭐⭐複雜任務,在變更前探索程式碼庫
auto所有操作,具有背景安全檢查⭐⭐⭐長時間執行的任務、減少提示疲勞
dontAsk僅預先批准的工具⭐⭐鎖定的 CI 與指令碼
bypassPermissions除受保護路徑外的所有操作僅隔離容器和 VM

Default 模式

最保守的模式,所有操作都需要人工確認。這是預設值,適合操作生產環境或包含敏感資料的專案。Session 中按 Shift+Tab 可循環切換到其他模式。

Accept Edits 模式

自動通過所有檔案建立與修改,以及 mkdirtouchmvcp 等常見檔案系統命令。其他 bash 指令(git commitnpm 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.jsondenyList 設定來禁止高破壞性指令。以下 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 -rfrm -frrm -rrm -Rrm -f遞迴 / 強制刪除,無法復原
最高權限sudo以 root 權限執行,影響範圍極廣
磁碟破壞ddmkfsdiskutil erase可直接覆寫或格式化磁碟
權限濫用chmod 777chmod -R 777開放所有人讀寫執行,嚴重資安漏洞
Git 不可逆reset --hardpush --force / push -fclean -fbranch -D強制覆寫遠端 / 本地紀錄,丟失提交
系統關機重開shutdownreboot中斷其他工作中的服務
檔案清空: >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 bypassPermissions

Bypass 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/sandbox

Session 恢復(任何模式皆可用)

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 指令逐一確認

相關概念

來源