SpyBara
Go Premium

permission-modes.md 2026-10-01 23:59 UTC to 2026-10-02 13:00 UTC

This page contains 136 additions and 135 deletions.

2026
Thu 1 23:59 Fri 2 13:58

選擇權限模式

控制 Claude 在採取動作前是否詢問。在 CLI 中使用 Shift+Tab、在 VS Code 中使用模式指示器,或在 Desktop 中使用模式選擇器來切換權限模式。

權限模式設定 Claude 在工作階段中可以執行哪些操作而無需先詢問您。在 Manual 模式中,Claude Code 會在大多數編輯檔案、執行 shell 命令或存取網路的操作前停止並詢問您。在自動模式中,第二個模型(分類器)會審查操作而不是您;分類器如何評估操作列出它審查的操作以及跳過的操作。

在 Claude Code v2.1.283 或更新版本中,自動模式是互動式終端和 VS Code 工作階段的內建起始權限模式。在較早版本中,它只在 Pro、Max 和 Team 方案上是內建的起始權限模式。工作階段在哪個模式中啟動涵蓋改變起始權限模式的表面和設定。您也可以隨時改變執行中工作階段的權限模式。

可用的模式

每種模式在便利性和監督之間做出不同的權衡。下表顯示在每種模式中 Claude 無需權限提示即可執行的操作。Manual 模式出現在其設定值 default 下。

模式 無需詢問即可執行 最適合
default 僅讀取 自己審查每個操作、敏感工作
acceptEdits 讀取、檔案編輯和常見的檔案系統命令(mkdir、touch、mv、cp 等) 迭代您正在審查的程式碼
plan 讀取,加上當自動模式可用時分類器批准的命令 在變更程式碼前探索程式碼庫
auto 所有操作,具有背景安全檢查 長期任務、減少提示疲勞
dontAsk 讀取和預先批准的工具;任何會提示的操作都被拒絕 鎖定的 CI 和指令碼
bypassPermissions 所有操作 僅限隔離的容器和虛擬機器

審查每個操作的模式在 CLI 中、claude --help 中、VS Code 和 JetBrains 擴充功能中以及桌面應用程式中名為 Manual。其設定值為 default,這是 hooks 和 SDK 整合使用的值。CLI 接受 manual 作為別名,無論您在何處輸入該值,例如 claude --permission-mode manual 或 "defaultMode": "manual"。Manual 標籤和 manual 別名需要 Claude Code v2.1.200 或更新版本。桌面應用程式的標籤不取決於您的 CLI 版本。

寫入受保護的路徑永遠不會自動批准,唯一的例外是 bypassPermissions 模式,以及可使用略過權限的 Plan Mode 工作階段,也就是以將 bypassPermissions 放入模式循環的方式啟動的工作階段。

模式設定基準。在頂部分層權限規則以預先批准或阻止特定工具。拒絕規則在每種模式中都會阻止,包括 bypassPermissions。拒絕和詢問規則不適用於 EndConversation,只要 Claude 仍有至少一個其他工具可以呼叫。允許規則在 bypassPermissions 中無效。

任何模式都不會自動批准的操作

Claude Code 在任何模式中都不會自動批准以下操作,包括 bypassPermissions。每個項目都連結到說明在每種模式中會發生什麼的部分:

  • 符合明確詢問規則的工具

  • 您的組織設定為 ask 的連接器工具,在該設定到達 Claude Code 的工作階段中

  • 需要使用者互動的工具:內建的 AskUserQuestion 工具和標記為 requiresUserInteraction 的 MCP 工具

  • rm 和 rmdir 移除針對關鍵路徑,沒有允許規則或 PreToolUse hook "allow" 批准

  • 跨工作階段訊息保護措施

  • 當 permissions.blockReadsOutsideWorkingDirectories 開啟時,在工作目錄外讀取:已識別的檔案讀取 Bash 命令即使在自動模式和 bypassPermissions 模式中也會提示,任何未沙箱化的重試需要批准才能在沙箱外執行也是如此。需要 Claude Code v2.1.257 或更新版本。

    殼層解析器無法追蹤的命令,例如變更目錄超過一次或執行子殼層的命令,即使在命名沒有外部路徑時也會以相同方式提示。當命令在沙箱中執行且沙箱強制執行該區塊時,此提示不適用。

常見設定

權限模式決定 Claude 是否在操作前詢問,而 Bash 沙箱和外部隔離邊界決定操作執行後可以到達什麼。下表中的每一行將目標與讓您到達該目標的旗標或設定以及所需的隔離配對,作為起點。可用的模式列出在每種模式中無需提示即可執行的操作。

您想要 開始使用 所需的隔離 注意
自己審查每個操作 Manual 模式:claude --permission-mode default 無 敏感工作、不熟悉的程式碼
在本地迭代,提示更少,無需分類器 Manual 模式加上 Bash 沙箱在自動允許模式中:claude --permission-mode default,然後執行 /sandbox 並選擇自動允許 內建 Bash 沙箱,在 macOS、Linux 和 WSL2 上 拒絕規則仍然適用,詢問規則命名命令(例如 Bash(git push *))仍然提示。若要改為從設定檔開啟沙箱,請將 sandbox.enabled 設定為 true
在變更任何內容前探索 claude --permission-mode plan 無 Claude Code 會阻止編輯,直到您批准計畫
在自動模式中無人值守工作 claude --permission-mode auto、內建起始權限模式(v2.1.283 或更新版本) 無;沙箱或容器增加深度防禦 需要支援的模型,您的組織可以關閉自動模式
在 CI 中使用精確允許清單執行 claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" 無,超出您的 CI 執行器提供的 雲端工作階段忽略設定檔中的 dontAsk
在容器內完全無人值守執行 claude -p "<prompt>" --dangerously-skip-permissions 必需:容器、虛擬機或沙箱執行時;在 Linux 和 macOS 上,以非 root 使用者執行 雲端工作階段忽略設定檔中的此模式。在此 -p 執行中,仍會提示的少數呼叫會被拒絕

Bash 沙箱和自動模式獨立工作並結合,除了沙箱模式下列出的例外。如需完整互動,請參閱沙箱化如何與權限和權限模式相關和隔離如何與權限模式相關。

工作階段在哪個模式中啟動

當您在終端中啟動新工作階段時,Claude Code 會從適用的第一個中取得權限模式:

  1. --permission-mode 旗標或 --dangerously-skip-permissions

  2. 設定檔中的 permissions.defaultMode

    如果您在 .claude/settings.json 或 .claude/settings.local.json 中設定 "auto",該值不會生效,Claude Code 會改為使用內建預設值而不是來自 ~/.claude/settings.json 的 defaultMode。如果您在這兩個檔案中設定 "bypassPermissions",它也不會生效,工作階段會以 Manual 模式啟動。其他值適用於任何設定檔。

  3. 內建預設值

VS Code 擴充功能啟動的對話遵循切換權限模式中的擴充功能自身清單。如需 Claude Code 在恢復工作階段時啟動的權限模式,請參閱恢復時的權限模式。

內建 auto 預設在 macOS、Linux 和 WSL 上需要 Claude Code v2.1.228 或更新版本,在原生 Windows 上需要 v2.1.233 或更新版本。在較早的版本上,內建預設是 Manual。

內建預設取決於您如何執行 Claude Code。符合的第一行適用。該表涵蓋您在終端或透過 VS Code 擴充功能啟動的工作階段;對於桌面應用程式和 claude.ai,請參閱切換權限模式中的 Desktop 和 Web 標籤。

您如何執行 Claude Code 內建起始權限模式
任何設定檔將 disableAutoMode 設定為 "disable" default
claude -p 或 Agent SDK 在擷取功能旗標的工作階段中為 default。在不擷取的工作階段中,例如在第三方提供者上或關閉遙測的情況下,Claude Code v2.1.285 或更新版本上為 auto,較早版本上為 default。組織政策禁止 auto 預設的工作階段會改為以 default 啟動
在終端或透過 VS Code 擴充功能 Claude Code v2.1.283 或更新版本上的 auto;在較早的版本上,Pro、Max 或 Team 方案上的 auto(在擷取功能旗標的工作階段中),否則為 default

在您安裝或升級後的第一個工作階段中,Claude Code 可以在其功能旗標到達之前選擇起始權限模式。該工作階段可能以不同的權限模式啟動,而不是表格給出的模式,您的下一個工作階段符合表格。

當旗標、設定檔或內建預設選擇 auto 但自動模式對工作階段不可用時,Claude Code 會改為以 Manual 啟動工作階段。當工作階段不符合可用性要求時,自動模式不可用,例如設定檔關閉它或不支援它的模型,或當 Anthropic 已在伺服器端暫時關閉它時。

內建預設第一次在自動模式中啟動您的工作階段時,Claude Code 會顯示連結到此頁面的通知:

  • 在終端中,一次,在工作階段頂部
  • 在 VS Code 擴充功能中,作為新對話螢幕上的卡片,直到您關閉它

如果您的 ~/.claude/settings.json 將 defaultMode 設定為 auto 以外的值,且沒有其他設定檔設定它,您的工作階段會繼續以該模式啟動。在 Pro、Max 和 Team 方案上,以及在不擷取功能旗標的工作階段中,Claude Code 會在終端或 VS Code 擴充功能中詢問一次,是否將設定變更為自動模式。如果您拒絕,您的設定會保持原樣。

以不同的權限模式啟動

您可以為一個工作階段、或作為機器、專案或組織中每個工作階段的預設值設定起始權限模式。當多個設定檔設定 permissions.defaultMode 時,設定優先順序決定,因此專案或受管值優先於 ~/.claude/settings.json。若要變更已執行工作階段的權限模式,請參閱切換權限模式。

若要為以下設定起始權限模式 執行此操作
您即將啟動的一個工作階段 將權限模式作為旗標傳遞,例如 claude --permission-mode default
您在此機器上啟動的每個終端工作階段 在 ~/.claude/settings.json 中設定 permissions.defaultMode。如需 VS Code 擴充功能讀取的內容,請參閱切換權限模式
您在一個專案中啟動的每個終端工作階段 在專案的 .claude/settings.json 中設定 permissions.defaultMode。您在終端中啟動的工作階段遵守除 auto 和 bypassPermissions 外的每個值;VS Code 擴充功能啟動的工作階段不讀取專案設定以取得起始權限模式
您組織中的每個終端工作階段 在受管設定中設定 permissions.defaultMode。終端工作階段以該模式啟動,人們仍然可以切換到自動模式;如需 VS Code 擴充功能讀取的內容,請參閱切換權限模式。若要移除自動模式以便沒有人可以選擇它,請改為將 permissions.disableAutoMode 設定為 "disable"

此範例使您機器上的每個終端工作階段以 Manual 模式啟動,其設定值為 default。將其儲存在 ~/.claude/settings.json 中:

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

您啟動的下一個工作階段會在狀態列中顯示 ⏸ manual mode on。

切換權限模式

每個介面都有自己的控制項用於在工作階段期間切換權限模式,以及自己的方式來選擇新工作階段啟動的權限模式。選擇您的介面以查看其控制項。

在工作階段期間:按 Shift+Tab 循環切換權限模式。從 auto,第一次按下切換到 default,循環然後執行 default → acceptEdits → plan → 回到 default。可選模式(如下所述)在 plan 之後插入。狀態列將活動模式顯示為 default 的灰色 ⏸ manual mode on,或作為 ⏵⏵ accept edits on、⏸ plan mode on、⏵⏵ auto mode on、⏵⏵ don't ask on 或 ⏵⏵ bypass permissions on。

並非每個模式都在預設循環中:

  • auto:當自動模式可用時出現;循環切換到它會在不需要確認提示的情況下切換模式
  • bypassPermissions:在您使用 --permission-mode bypassPermissions、--dangerously-skip-permissions、--allow-dangerously-skip-permissions 或使用者、--settings 或受管設定中的 permissions.defaultMode: "bypassPermissions" 啟動後出現。--allow- 變體將權限模式新增到循環中而不啟動它
  • dontAsk:永遠不會在循環中出現;使用 --permission-mode dontAsk 設定它

啟用的可選模式在 plan 之後插入,bypassPermissions 優先,auto 最後。如果您同時啟用了兩者,您將在循環到 auto 的途中循環通過 bypassPermissions。

從 Bash 權限提示:在 Manual 和 acceptEdits 權限模式中,當自動模式可用時,Claude Code 會將是的,並切換到自動模式新增到 Bash 命令的權限提示。選擇它以批准命令並將工作階段切換到自動模式。PowerShell 工具提示不提供該選項。需要 Claude Code v2.1.247 或更新版本。

Claude Code 不會將該選項新增到由您的ask 規則之一或hook強制的提示,因為自動模式仍會向您顯示這些提示,因此切換不會移除它們。

在啟動時:將權限模式作為旗標傳遞。

claude --permission-mode plan

作為預設值:在您想要的範圍設定 permissions.defaultMode,如以不同的權限模式啟動中所述。

相同的 --permission-mode 旗標適用於 -p 用於非互動式執行。

使用 acceptEdits 模式自動批准檔案編輯

acceptEdits 模式讓 Claude 在您的工作目錄中建立和編輯檔案,無需提示。當此模式處於活動狀態時,狀態列會顯示 ⏵⏵ accept edits on。

除了檔案編輯外,acceptEdits 模式還會自動批准常見的檔案系統 Bash 命令:mkdir、touch、rm、rmdir、mv、cp 和 sed。當這些命令以安全環境變數(例如 LANG=C 或 NO_COLOR=1)或程序包裝器(例如 timeout、nice 或 nohup)作為前綴時,也會自動批准。與檔案編輯一樣,自動批准僅適用於工作目錄或 additionalDirectories 內的路徑。

每個路徑也會經過符號連結檢查,因此解析到該範圍外的寫入不會自動批准。超出該範圍的路徑、寫入受保護路徑、rm 和 rmdir 移除針對關鍵路徑,以及所有其他 Bash 命令(除了內建唯讀集合)仍會提示。

當PowerShell 工具啟用時,acceptEdits 模式也會自動批准 Set-Content、Add-Content、Clear-Content 和 Remove-Item 在範圍內的路徑上,以及它們的常見別名。相同的範圍和受保護路徑規則適用,Remove-Item 有自己的檢查。包含引號字元的位置引數(例如 Set-Content .\notes.txt "It's done" 中的撇號)仍會在範圍內路徑上提示,因為 Claude Code 無法靜態驗證其引用和未引用讀數不同的引數。透過命名參數(例如 -Value)傳遞內容以避免提示。

當您想在編輯器中或透過 git diff 事後檢查變更,而不是逐個批准每個編輯時,請使用 acceptEdits。

從 Manual 模式按一次 Shift+Tab 進入它,或直接啟動它:

claude --permission-mode acceptEdits

使用 Plan Mode 在編輯前進行分析

Plan Mode 告訴 Claude 在進行變更前先研究並提出建議。Claude 會讀取檔案、執行 shell 命令進行探索,並撰寫計畫,但不會編輯您的原始碼。除了在具有略過權限可用的互動式終端機工作階段中,編輯會保持被阻止,直到您核准計畫。

shell 命令在規劃期間發生的情況取決於工作階段,以及以下第一個符合的情況適用:

  • 具有可用略過權限的互動式終端機工作階段:分類器和提示都不適用於規劃命令。使用 bypassPermissions Mode 略過所有檢查涵蓋了仍在該處提示的少數事項。
  • 自動模式可用且 useAutoModeDuringPlan 設定已開啟,預設為開啟:分類器會檢查 shell 命令(關鍵路徑移除除外),而不是提示您。已核准的命令會執行,被拒絕的命令會被阻止。
  • 自動模式不可用,或 useAutoModeDuringPlan 關閉:內建唯讀集合之外的命令會提示您核准,包括當沙箱的自動允許模式已啟用時。

按 Shift+Tab 或在單一提示前加上 /plan 來進入 Plan Mode。您也可以從 CLI 開始使用 Plan Mode:

claude --permission-mode plan

再次按 Shift+Tab 以離開 Plan Mode,而不核准計畫。

檢查並核准計畫

當計畫準備好時,Claude 會呈現它並詢問如何進行。從該提示中,您可以選擇:

  • 是的,並使用自動模式:核准並開始使用自動模式。如果自動模式對您的工作階段不可用,例如因為您的組織關閉了它,此選項會顯示為是的,自動接受編輯。如果您使用啟用的略過權限開始工作階段,該選項會改為顯示是的,並為此工作階段切換到 BYPASS PERMISSIONS(無進一步提示)。
  • 是的,手動核准編輯:核准並逐個檢查每個編輯。
  • 否,繼續規劃:保持在 Plan Mode 並告訴 Claude 要變更什麼。

核准計畫會退出 Plan Mode 並將工作階段切換到每個核准選項描述的權限模式,因此 Claude 開始編輯。若要再次規劃,使用 Shift+Tab 循環回到 Plan Mode,或在下一個提示前加上 /plan。

按 Ctrl+G 在您的預設文字編輯器中開啟提議的計畫並在 Claude 繼續前直接編輯它。當showClearContextOnPlanAccept已啟用時,清單會獲得第一個選項,該選項核准計畫並清除規劃內容。

接受計畫也會根據計畫為工作階段提供產生的標題,除非您已經命名了工作階段。

將 Plan Mode 設定為預設值

若要讓 Plan Mode 成為專案終端機工作階段的預設值,請在 .claude/settings.json 中將 defaultMode 設定為 plan,放置如以不同權限模式開始下的範例所示。VS Code 擴充功能啟動的對話不會讀取專案設定以取得起始權限模式。在那裡,改為在您的 VS Code 使用者設定中將 claudeCode.initialPermissionMode 設定為 plan。

使用自動模式消除權限提示

自動模式讓 Claude 無需例行權限提示即可執行。一個獨立的分類器模型在操作執行前進行審查,阻止任何超出您請求範圍、針對無法識別的基礎設施或似乎由 Claude 讀取的惡意內容驅動的操作。明確的詢問規則仍會強制提示。

使用 Claude Code v2.1.283 或更新版本,自動模式是所有計畫和提供商上互動式終端機和 VS Code 工作階段的內建起始權限模式。在較早版本上,它僅在 Pro、Max 和 Team 計畫上是內建起始權限模式。

分類器也會在 Claude Code 傳遞 Claude 使用 SendMessage 向另一個 agent 傳送的每條訊息之前進行審查,無論是純文字還是結構化的 agent team 訊息,在自動模式和分類器審查命令時的 plan mode 中都會進行審查;傳送審查需要 Claude Code v2.1.222 或更新版本。

預設情況下,分類器不審查針對關鍵路徑的 rm 和 rmdir 移除,例如 rm -rf / 或 rm -rf ~。關鍵路徑涵蓋在每個權限模式中對它們的處理。

自動模式也會促使 Claude 繼續工作而不停下來提出澄清問題,儘管當您的提示詞或 skill 明確依賴它時 Claude 仍會詢問。為了在仍會提示您的模式中獲得更強的自主行為,請改為設定主動輸出風格。

自動模式僅在您的帳戶滿足所有這些要求時才可用:

  • 計畫:所有計畫。
  • 組織:在 Team 和 Enterprise 上,自動模式預設可用。管理員可以透過在受管設定中將 permissions.disableAutoMode 設定為 "disable" 來為組織關閉它。
  • 模型:在 Anthropic API 和 AWS 上的 Claude Platform 上,Claude Opus 4.6 或更新版本、Sonnet 4.6 或更新版本,或 Fable 模型。在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和已登入的 Claude 應用程式閘道工作階段上,僅限 Claude Sonnet 5 或更新版本、Opus 4.7 或更新版本和 Fable 模型。較舊的模型,包括 Sonnet 4.5、Opus 4.5、Haiku 和 claude-3 模型,在任何提供商上都不受支援。
  • 提供商:在 Anthropic API、AWS 上的 Claude Platform、Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和已登入的 Claude 應用程式閘道工作階段上預設可用。

如果 Claude Code 報告自動模式不可用,首先檢查這些要求以及任何設定檔是否設定了 disableAutoMode。Anthropic 也可能已在伺服器端關閉自動模式,或伺服器可能已為您的帳戶拒絕自動模式。收到任一答案的工作階段會保持自動模式關閉直到工作階段結束,因此請稍後啟動新工作階段。

另一則指明某個模型並表示自動模式「無法確定」某個操作安全性的訊息,意味著分類器請求失敗。該失敗通常是暫時的,但在 Amazon Bedrock 上,它可能會重複發生,直到您的帳戶可以呼叫所指明的模型。請參閱錯誤參考以了解原因和應對方法。

如果您在設定中設定 defaultMode: "auto",而終端機工作階段在沒有錯誤的情況下以手動模式啟動,該設定可能位於 .claude/settings.json 或 .claude/settings.local.json 中。auto 不會從這些檔案生效。請將其移至 ~/.claude/settings.json。對於 VS Code 擴充功能啟動的對話,請改為檢查切換權限模式中該擴充功能自己的清單。

Bedrock、Agent Platform 或 Foundry 上的自動模式

在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和已登入的 Claude 應用程式閘道工作階段上,自動模式預設可用。當沒有其他設定指定權限模式時,在該章節表格列出的版本上,它也是內建起始權限模式。要自己選擇起始權限模式,請按照以不同權限模式啟動的說明設定 permissions.defaultMode,或從 VS Code 擴充功能的模式指示器中選擇權限模式。

這些提供商上僅支援 Claude Sonnet 5 或更新版本、Opus 4.7 或更新版本和 Fable 模型。在任何其他模型上,工作階段改為以手動模式啟動。

要防止開發人員使用自動模式,請在受管設定中將 disableAutoMode 設定為 "disable"。這會從 Shift+Tab 循環中移除 auto,並且以 --permission-mode auto 啟動的工作階段改為以手動模式啟動。已在自動模式中執行的工作階段,在該設定從管理員部署的來源送達該工作階段時會離開自動模式,並顯示 auto mode disabled by settings。在 v2.1.251 之前,執行中的工作階段會保持自動模式直到它結束。

在 v2.1.158 到 v2.1.206 中,自動模式在這些提供商上是關閉的,直到您設定 CLAUDE_CODE_ENABLE_AUTO_MODE=1,並且 Claude Code 在這些提供商上忽略 defaultMode: "auto",除非也設定了該變數。該變數仍被接受以保持相容性,從 v2.1.207 開始沒有效果。

伺服器端分類器審查

在自動模式中,Claude Code 可以要求伺服器檢查決策順序送交審查的操作,作為工作階段模型請求的一部分,而不是發送自己的分類器請求。以下工作階段會提出此要求:

  • 直接連接到 Anthropic API:在互動式終端機工作階段,以及 -p、Agent SDK、VS Code 擴充功能和桌面應用程式工作階段中,無論您的計畫或帳戶類型為何,隨 Anthropic 逐步推出。在互動式終端機工作階段中,在 Pro、Max 和 Team 計畫上需要 Claude Code v2.1.271 或更新版本,在 Enterprise 計畫和 Claude API 帳戶上需要 v2.1.278 或更新版本。在 -p、Agent SDK、VS Code 擴充功能和桌面應用程式工作階段中,需要 Claude Code v2.1.281 或更新版本。從 v2.1.282 開始,不擷取功能旗標的工作階段(例如因為您關閉了遙測),在任何類型的工作階段中都會預設詢問伺服器。
  • 雲端提供商,或 LLM 閘道或代理伺服器:在 AWS 上的 Claude Platform、Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,以及每當您將 ANTHROPIC_BASE_URL 指向 LLM 閘道或代理伺服器時,無論您的計畫為何。預設詢問需要 Claude Code v2.1.278 或更新版本。
  • 已登入的 Claude 應用程式閘道工作階段:需要 Claude Code v2.1.280 或更新版本

在伺服器審查操作的情況下,由其判決決定這些操作。還有兩種其他可能的結果:

  • 伺服器不審查工作階段:回應完成時沒有審查結果,或伺服器回答它不審查此工作階段。最常見的原因是 LLM 閘道或代理伺服器丟棄了審查請求或結果,以及平台、區域或憑證尚未提供伺服器端檢查。Claude Code 會改用自己的分類器請求。一旦該備援在工作階段的其餘部分持續生效,它會在這些請求會被計費的帳戶上顯示關於分類器請求費用的通知。
  • 伺服器對操作沒有給出判決:Claude Code 會拒絕該操作,而不是在未經審查的情況下執行它。在任何連線上,當回應在審查結果到達前結束,或結果以 Claude Code 無法讀取的形式到達時,就會發生這種情況。截斷回應或重寫結果的 LLM 閘道或代理伺服器可能導致任一情況。在直接連接到 Anthropic API 時,當伺服器對該操作的檢查失敗(例如逾時)時也會發生。伺服器未返回安全判決涵蓋拒絕訊息、拒絕重複發生時的情況以及應對方法。

要跳過詢問伺服器並始終使用 Claude Code 自己的分類器請求,請設定 CLAUDE_CODE_AUTO_MODE_SERVER=0。在直接連接到 Anthropic API 時,該變數需要 Claude Code v2.1.281 或更新版本。在該情況下將其設定為 1,會在尚未啟用伺服器審查的工作階段中開啟伺服器審查,除非您也設定了 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。如果您設定 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 並保持 CLAUDE_CODE_AUTO_MODE_SERVER 未設定,Claude Code 也會停止詢問伺服器,但停用預發行功能所述的情況除外。

分類器預設阻止的內容

分類器信任您的工作目錄,以及工作階段啟動時為其設定的遠端。在工作階段期間使用 git remote add 或 git remote set-url 新增或重新指向的遠端不受信任,其他所有內容都被視為外部,直到您設定受信任的基礎設施。在 v2.1.200 之前,工作階段中途新增的遠端也受信任。

預設阻止:

  • 下載並執行程式碼,例如 curl | bash
  • 將敏感資料傳送到外部端點
  • 生產部署和遷移
  • 雲端儲存上的大量刪除
  • 授予 IAM 或儲存庫權限
  • 修改共享基礎設施
  • 不可逆地銷毀工作階段前已存在的檔案
  • 強制推送
  • 提交或推送在執行時會將秘密或敏感資料傳送到儲存庫外部,或擴大部署所公開內容的變更。這涵蓋將秘密傳遞到原本未接收該秘密之目的地的 CI 工作流程或部署設定、讀取秘密儲存區並將資料送出的指令碼或設定步驟,以及擴大部署發佈內容的設定變更,例如 registry、可見性、建置產物或 sourcemap 設定。此檢查適用於任何分支,即使儲存庫是公開的也適用,並在提交或推送該變更時觸發,無論該提交或推送是否觸發管線;要解除它,需要指明執行時的效果,而不僅僅是提交或推送。在 v2.1.211 之前,此檢查的範圍改為限於預設分支:推送到預設分支時,如果攜帶敏感內容、相對於您的要求有隱藏或誤述的變更、從儲存庫外部移植的內容,或繞過了您要求的審查,則會被阻止
  • git reset --hard、git checkout -- .、git restore .、git clean -fd、git stash drop 或 git stash clear,分類器推定這些會丟棄未提交的變更
  • 當 HEAD 的提交不是在此工作階段中建立時的 git commit --amend
  • 從 v2.1.198 開始,當 HEAD 的提交已經被推送時的 git commit --amend。僅修改訊息的改寫不會被阻止:在 Claude 於此工作階段期間建立的提交上,沒有新暫存內容的 --amend -m
  • terraform destroy、pulumi destroy、cdk destroy 或 terragrunt destroy,以及套用會銷毀資源的計畫
  • 寫入秘密管理器,或變更 DNS 記錄或 TLS 憑證
  • 合併未經任何人核准的 pull request、核准 Claude 自己的 pull request,或停用 CI 檢查
  • 發佈本身就是對自動化發出命令的留言,例如 atlantis apply 或機器人的 /deploy 或 /merge
  • 切換、逐步調整或刪除生產環境的功能旗標
  • 將基礎設施變更套用到受保護的 IaC 範圍,或排空並移除叢集節點
  • 對共享運算叢集的寫入超出您所指明的資源,例如會涵蓋到其他使用者工作的標籤選擇器或 --all
  • 建立在每個節點上執行或攔截叢集流量的 Kubernetes 資源,例如 DaemonSets 和 admission webhooks
  • 對敏感遠端目標開啟互動式 shell 或連接埠轉發
  • 開啟使本機服務可從公開網際網路存取的通道或反向 shell
  • 將有效的憑證或 token 印出到逐字稿或檔案中
  • 存取在您的環境中列為敏感資料位置的位置,或從中複製資料出去。從 v2.1.198 開始,這也會阻止從該位置將資料傳送給該項目所排除的對象
  • 繞過您的內部套件 registry,將套件安裝導向公開 registry。從 v2.1.198 開始,這也適用於您在對話中告訴 Claude 存在內部 registry 或鏡像的情況,而不僅限於在您的環境中列出的情況
  • 執行帶有解除安全防護旗標的命令,例如 --insecure
  • 啟動在沒有人工核准或沙箱的情況下執行的自主 agent 迴圈,例如使用 --dangerously-skip-permissions 或 --no-sandbox 啟動的迴圈。從 v2.1.198 開始,這也涵蓋在停用隔離和逐項操作核准的情況下執行第三方 agent 或評估工具,例如使用 --yes-always 啟動的執行器
  • 可能將頁面內容、Cookie 或憑證傳送到其他來源的 Claude in Chrome 瀏覽器操作

其中幾個類別取決於環境項目,例如敏感遠端目標和受保護的 IaC 範圍,您可以將其縮小到具體名稱。

Claude Code v2.1.198 及更新版本也預設阻止這些:

  • 透過萬用字元、glob 或存留時間篩選,而非特定指名的路徑,刪除 /tmp、$TMPDIR 或其他共享暫存或快取目錄中的檔案
  • 在傳送、上傳、發佈或寫給其他人或共享系統的內容中包含敏感細節,而您自己的訊息並未授權將這些細節提供給該收件者。當儲存庫位於信任邊界之外或為公開時(包括您組織自己的公開儲存庫),PR 和 issue 內文、提交訊息和留言都視為此類對外內容;內部檔案路徑、代號、即時 API 回應資料(例如電子郵件或帳戶識別碼)以及基礎設施識別碼都視為敏感細節。PR、issue 和提交訊息的範圍界定需要 Claude Code v2.1.200 或更新版本。PR 或 issue 內文中來自 API 回應的即時個人資料,例如電子郵件地址、帳戶或組織識別碼或使用量指標,無論儲存庫的可見性或信任邊界為何,都需要您指明這些細節和收件者。該檢查需要 Claude Code v2.1.203 或更新版本
  • 向 Claude Code 自己的 tmux 窗格傳送按鍵以操控其自身介面,分類器將此視為 Claude 變更自己的權限或監督

Claude Code v2.1.200 及更新版本也預設阻止這些:

  • 註解掉、刪除或強制通過保護安全行為的測試或斷言,例如驗證、存取控制、輸入驗證或沙箱機制
  • 刪除或拆除 Claude 未在工作階段中建立的有狀態資源,當沒有更具體的刪除規則適用且您未指明該資源時
  • 將 API 基礎 URL、代理伺服器端點、webhook 接收器或 registry 鏡像重新指向不符合任務的第三方主機,包括在 .env.example 等範例檔案中
  • 使用 git remote set-url 或 git remote add 變更推送目的地,除非您指明了新的遠端
  • 將秘密或個人或受託資料推送到已知為公開的儲存庫,或將不屬於該儲存庫本身工作的機密資料推送到那裡。對個人或受託資料而言,dotfiles 儲存庫本身的主題內容是唯一的例外,而來自私人儲存庫的內容流向任何公開使用介面也會以相同方式被阻止;這兩項改進都需要 Claude Code v2.1.203 或更新版本。在 v2.1.203 之前,個人資料與機密資料歸為同一類,僅當其不屬於該儲存庫本身的工作時才會被阻止。當儲存庫的可見性未確定時,分類器不會僅憑此點而阻止;它會改為依據其他規則判斷內容
  • 對不同的儲存庫或組織開啟 pull request、使用 gh repo fork 進行分叉,或推送到第三方儲存庫,除非您指明了該外部目標

Claude Code v2.1.203 及更新版本也預設阻止這些:

  • 來自敏感本機儲存區,或來自名稱、路徑或類型標示其為敏感之檔案的內容,進入提交、推送、PR 或 issue 文字、gist 或貼文,或套件發佈,除非您同時指明了來源和目的地。工作階段逐字稿和對話日誌、憑證和設定點資料夾(例如 SSH 金鑰、雲端憑證、瀏覽器設定檔和 shell 歷史記錄)以及使用者資料匯出都包含在內,且儲存庫為私人並不會解除此限制

Claude Code v2.1.205 及更新版本也預設阻止這些:

  • 寫入 Claude Code 工作階段逐字稿,即 ~/.claude/projects/ 或您所設定之設定目錄下的 .jsonl 歷史檔案,無論是直接寫入還是透過 shell 命令。此規則也涵蓋 Claude Code 為其自身檢查附加到每個逐字稿項目的中繼資料行。讀取逐字稿不會被阻止

  • 遞迴強制刪除,例如 rm -rf "$VAR" 或 Remove-Item -Recurse -Force $dir,其目標是在分類器看到的對話中任何地方都未被指派的 shell 變數,或以此類變數為根的 glob。該值僅來自較早的命令輸出,而分類器永遠不會收到這些輸出,因此分類器無法依據其他刪除規則驗證刪除目標。當您指明正在刪除的確切路徑,或 Claude 將解析後的字面路徑寫入命令中重新執行刪除時,此阻止即會解除。分類器可以解析其目標的刪除不受影響。

    直接位於變數下的 glob,如 rm -rf "$VAR"/*,則屬於關鍵路徑。目標為單獨的 * 或以 /* 或 \* 結尾的 Remove-Item 永遠不會送到分類器:Claude Code 會直接拒絕它們。

Claude Code v2.1.257 及更新版本也預設阻止這些:

  • 從雲端執行個體中繼資料端點(例如 169.254.169.254)請求憑證,或明確使用機器自身的服務帳戶或節點身分來驗證雲端、叢集或 registry 呼叫
  • 透過直接請求以外的路徑連線到公開主機,例如通道、反向 shell,或被改寫為指向外部的解析器或代理伺服器設定
  • 讀取屬於主機而非屬於您任務的憑證,例如節點憑證或節點的容器 registry 驗證資訊
  • 連線到或掃描 Claude 未啟動的同層容器、Pod 或 VM,或容器底下的節點

如果 Claude Code 在本應允許其中某項操作的環境中執行,請在 autoMode.environment 的主機隔離項目中描述該設定。

Claude Code v2.1.261 及更新版本也預設阻止這些:

  • 在訊息、PR 或 issue 文字、文件,或任何連結會被開啟或擷取的其他地方,發佈或寫入指向公開貼文、圖表或資料分享服務的連結,而該 URL 本身即攜帶所分享的內容,除非您指明了該服務

預設允許:

  • 您工作目錄中的本機檔案操作
  • 安裝在您的鎖定檔案或清單檔中宣告的相依套件
  • 讀取 .env 並將憑證傳送到其對應的 API
  • 唯讀 HTTP 請求
  • 推送到您正在處理的儲存庫的任何分支,包括預設分支。名稱將其標示為部署或發佈目標的非預設分支,例如 production 或 gh-pages,不在此列:分類器會依其本身的情況判斷推送到那裡的操作。推送的內容仍會依據其他規則進行檢查,permissions.deny 規則仍可在每個模式中依撰寫方式阻止推送命令,遠端自身的分支保護也仍然適用。在 v2.1.211 之前,預設僅允許推送到您起始所在的分支、Claude 建立的分支,以及對預設分支的例行推送;而在 v2.1.203 之前,任何直接推送到預設分支的操作都會被阻止
  • 刪除 Claude 在同一工作階段中稍早建立的特定工作
  • 作為您任務的一部分讀取、審查或撰寫與安全相關的程式碼、設定和威脅模型
  • 在同一多 agent 工作階段中協同工作的 agent 之間的訊息
  • 將資料傳送到您在 environment 中列出的受信任網域、儲存桶和服務。這僅涵蓋資料流,不涵蓋在同一基礎設施上的破壞性操作或憑證操作
  • Claude in Chrome 導覽至受信任的內部網域、localhost 或您指明的 URL

沙箱化命令預設不會取得網路存取權。Claude 會在命令本身上指明該命令需要的主機,分類器會連同命令一起審查這些主機,核准的清單僅為該單一命令開放這些主機。每個命令允許的網域涵蓋清單可以和不能開放的內容,以及命令嘗試連線到未列出主機時的情況。

執行 claude auto-mode defaults 以將完整規則清單以 JSON 格式印出。如果例行操作被阻止,管理員可以透過 autoMode.environment 設定新增受信任的儲存庫、儲存桶和服務:請參閱設定自動模式。

推送到您正在處理的儲存庫的任何分支,以及建立符合您請求的 pull request,都無需提示即可執行,除非該推送或 pull request 屬於阻止清單,例如秘密或敏感資料離開儲存庫,或以不同儲存庫或組織為目標的 pull request。要在保持自動模式的同時,於這些命令執行前要求人工檢查點,請新增 permissions.ask 規則,這些規則會依撰寫方式比對命令:請參閱常見邊界。

工作目錄外的第一次讀取

當 permissions.blockReadsOutsideWorkingDirectories 關閉時,檔案讀取在自動模式中無需提示即可執行,包括在工作目錄外的讀取。Claude 第一次對工作目錄外的路徑使用 Read、Grep 或 Glob 工具時,Claude Code 會詢問是否允許該讀取。

該提示不會出現在非互動式 -p 執行或背景工作階段中;那裡的讀取照常執行。

無論您如何回答,Claude 都會繼續工作:

  • 是,並繼續允許工作目錄外的任何讀取:讀取會執行,之後在工作目錄外的讀取照常執行,Claude Code 會記錄您的答案,讓提示不再出現
  • 否,並從現在開始阻止工作目錄外的讀取:讀取被拒絕,Claude Code 會在您的使用者設定中將 permissions.blockReadsOutsideWorkingDirectories 設定為 true,這會使檔案工具在之後的每個工作階段和每個權限模式中拒絕此類讀取。若之後要讓 Claude 讀取此類路徑,請使用 /add-dir 新增其目錄或移除該設定。
  • 否,下次再詢問:讀取被拒絕,下一次在工作目錄外的讀取會再次提示
  • 是,但下次再詢問:讀取會執行,不會儲存任何內容,下一次在工作目錄外的讀取會再次提示

您在對話中陳述的邊界

分類器將您在對話中陳述的邊界視為阻止訊號。如果您告訴 Claude「不要推送」或「等我審查後再部署」,即使預設規則會允許,分類器也會阻止相符的操作。邊界會持續有效,直到您在之後的訊息中解除它。Claude 自行判斷條件已滿足並不會解除它。

邊界不會以規則的形式儲存。分類器在每次檢查時都會從逐字稿重新讀取它們,因此如果上下文壓縮移除了陳述該邊界的訊息,邊界可能會遺失。若需要硬性保證,請改為新增拒絕規則。

您在對話中陳述的核准

如果您告訴 Claude 某個被阻止的操作是允許的,分類器會將其視為您的核准,並可以解除該阻止。您的措辭決定了操作是否執行,以及核准的涵蓋範圍:

  • 指明操作及其細節:您的訊息必須指明該操作,以及使其危險的具體事項,例如強制推送的分支。僅指明動詞不會解除任何阻止,因此「您可以強制推送」會使阻止保持有效。
  • 預期它只涵蓋一個操作:核准涵蓋您所指明的破壞性操作,因此之後的操作會再次被阻止,除非您將核准授予為持續有效。若要停止逐一核准某個例行模式,請將其新增到 autoMode.allow。
  • 某些阻止會保持有效:分類器的優先順序說明了您的核准可以解除哪些阻止。要執行無法解除的步驟,請離開自動模式並回答權限提示。

當自動模式改用備援時

當自動模式無法核准您工作階段的操作時,發生的情況取決於具體情形:

  • 被阻止的操作:Claude Code 會顯示通知,並在 /permissions 的 Recently denied 分頁中列出該操作,您可以在此按 r 以手動核准重試。
  • 重複阻止:如果分類器連續 3 次或總共 20 次阻止操作,自動模式會暫停,Claude Code 會恢復提示。核准被提示的操作即可恢復自動模式。請參閱重複阻止閾值以了解阻止如何計數。
  • 分類器沒有判決:當自動模式以外的安全檢查拒絕分類器自身的請求,或分類器的回應無法解析時,Claude Code 會拒絕該操作,且不顯示通知,也不建立 Recently denied 項目。請參閱自動模式無法確定操作的安全性以了解每種情況顯示的訊息和應對方法。
  • 伺服器沒有判決:在伺服器端分類器審查下,Claude Code 會拒絕伺服器未給出判決的操作,並在連續十個沒有判決的回應後停止該回合。請參閱伺服器未返回安全判決。
  • 檢查期間切換模式:如果您在分類器檢查尚未完成時切換權限模式,Claude Code 會捨棄新模式不會請求的判決。您會改為被提示核准,或者該操作在 dontAsk 模式中被自動拒絕。

重複阻止閾值

連續 3 次阻止和總共 20 次阻止的閾值無法設定。總計數器會在整個工作階段中持續累計,僅在其自身的上限觸發備援時才會重設。當自動模式以外的安全檢查拒絕分類器自身的請求時,Claude Code 不會將該拒絕計入任一閾值。

沒有 --permission-prompt-tool 的非互動式 -p 執行沒有可改用的提示。當重複阻止達到閾值時,該操作不會執行,Claude 會繼續工作。Claude Code 不會停止執行。

重複阻止通常意味著分類器缺少關於您基礎設施的上下文。請使用 /feedback 回報誤判,或請管理員設定受信任的基礎設施。

自動模式如何評估操作

以下章節涵蓋 Claude Code 評估操作的順序、分類器如何審查 subagent 的工作,以及分類器呼叫在成本和延遲上增加的負擔。

每個操作都會經過固定的決策順序。第一個相符的步驟優先:
1. 符合您的[允許、詢問或拒絕規則](/docs/zh-TW/permissions#manage-permissions)的操作會立即決定,但有以下例外:
   * 寫入[受保護路徑](#protected-paths)的操作即使符合允許規則,也會送交分類器
   * 沒有任何允許規則能核准針對[關鍵路徑](#critical-paths)的 `rm` 和 `rmdir` 移除操作
   * 標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使符合允許規則也會直接提示您,而在[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具上,若該設定已送達 Claude Code 的工作階段,也是如此
   * 攜帶[每個命令允許的網域](/docs/zh-TW/sandboxing#per-command-allowed-domains-in-auto-mode)的 shell 命令即使符合允許規則,也會送交分類器,因為規則核准的是命令,而不是其主機
   * 依命令內容比對的詢問規則,例如 `Bash(git push *)`,會改用權限提示
   * 經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為受保護路徑的寫入操作,在 Claude 所請求的路徑本身不受保護時會提示您
2. 唯讀操作和您工作目錄中的檔案編輯會自動核准,但寫入[受保護路徑](#protected-paths)和[工作目錄外的第一次讀取](#first-read-outside-the-working-directories)除外,後者會提示您
   * 在具有[伺服器端分類器審查](#server-side-classifier-review)的工作階段中,唯讀和[沙箱化](/docs/zh-TW/sandboxing#sandbox-modes)的 shell 命令會等待該審查,若審查將其標記則會被阻止
   * 在您工作目錄內、經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為工作目錄外位置的寫入操作會提示您
   * 當 Claude 讀取[其他人製作的 artifact](/docs/zh-TW/artifacts#read-an-artifact-shared-with-you) 時,適用該章節所列的核准情況
3. 其他所有操作都會送交分類器,但採用預設處理方式的[關鍵路徑移除](#critical-paths)除外。在步驟 1 中直接提示您的連接器工具和 `requiresUserInteraction` MCP 工具也永遠不會送到分類器,因此組織要求的核准和同意步驟都不會被自動核准
4. 如果分類器阻止操作,Claude 會收到原因。在大多數工作階段中,原因會指明分類器比對到的規則,例如 `[Data Exfiltration]`,而不是提供書面說明;請參閱[檢視拒絕](/docs/zh-TW/auto-mode-config#review-denials)

您安裝的處理 `tool.check` 的 [mod](/docs/zh-TW/plugins/mods/overview) 可以在步驟 3 之前核准操作,分類器不會檢查 mod 核准的操作。請參閱[使用 hook 擴充權限](/docs/zh-TW/permissions#extend-permissions-with-hooks)。

進入自動模式時,授予任意程式碼執行能力的廣泛允許規則會被移除:

* 無條件的 `Bash(*)` 或 `PowerShell(*)`
* 使用萬用字元的直譯器,例如 `Bash(python*)`
* 套件管理器的執行命令
* `Agent` 允許規則
* [`Monitor`](/docs/zh-TW/tools-reference#monitor-tool) 允許規則,因為 Claude Code 透過 shell 執行 Monitor 命令

像 `Bash(npm test)` 這樣的窄規則仍然有效。當您離開自動模式時,Claude Code 會恢復被移除的規則。在 v2.1.236 之前,Claude Code 在自動模式中保留 `Monitor` 允許規則,因此比對整個工具的規則會在沒有分類器審查的情況下核准 Monitor 命令。

Claude Code 也會在可能丟棄未提交工作的命令(例如 `git reset --hard` 或 `rm -rf`)之前自行執行 `git status`,並向分類器顯示是否存在已暫存、已修改或未追蹤的工作。即使儲存庫的 git 設定指定了 `status.showUntrackedFiles=no`,Claude Code 仍會在該檢查中回報未追蹤的檔案。

在 Claude Code 本身發送的分類器請求中,分類器會看到使用者訊息、除唯讀查詢(例如檔案讀取和搜尋)之外的工具呼叫,以及您的 CLAUDE.md 內容。工具結果會從這些請求中移除,因此檔案或網頁中的惡意內容無法直接操縱分類器。

您可以使用 [PostToolUse hook 的 `classifierContext` 欄位](/docs/zh-TW/hooks#annotate-a-result-for-the-auto-mode-classifier)註解呼叫的結果,分類器會將其視為應用程式提供的上下文。該欄位需要 Claude Code v2.1.236 或更新版本。

另一個獨立的伺服器端探測器會掃描傳入的工具結果,並在 Claude 讀取之前標記可疑內容。有關這些防護層如何協同運作的更多資訊,請參閱[自動模式公告](https://claude.com/blog/auto-mode)和[工程深入探討](https://www.anthropic.com/engineering/claude-code-auto-mode)。
自動模式如何處理 subagent

分類器會在三個時間點檢查 subagent 的工作:

  1. 在 subagent 啟動之前,會評估委派的任務描述,因此看起來危險的任務會在產生時就被阻止。
  2. 在 subagent 執行期間,其每個操作都會經過與父工作階段相同的決策順序,並套用相同的阻止和允許規則。subagent frontmatter 中的任何 permissionMode 都會被忽略。
  3. 當 subagent 完成時,分類器會在父工作階段讀取報告之前審查其工作和最終報告。當分類器標記了 subagent 的工作或報告,或另一個獨立的 API 安全檢查拒絕了該審查時,報告仍會送達,但前面會加上安全警告。當分類器無法進行審查時,報告送達時會附帶一則說明,提醒您在據此採取行動前先驗證 subagent 的工作。
成本和延遲

分類器預設在 Claude Sonnet 5 上執行,而不是使用您的 /model 選擇。Anthropic 在伺服器端設定的分類器模型優先於此預設值。當您工作階段的模型是 Claude Sonnet 4.6,或 availableModels 排除了 Sonnet 5 時,分類器會改為在工作階段的模型上執行;若工作階段在 Fable 模型上執行,則改為在 Opus 模型上執行。在 Anthropic API 以外的提供商上,該 Opus 備援是您在 ANTHROPIC_DEFAULT_OPUS_MODEL 中設定的模型,若您未設定則為 Opus 5。

工作階段的第一個自動模式請求會驗證 Sonnet 5 預設值:如果請求成功,Sonnet 5 會保持為工作階段的分類器模型;如果因為模型不可用而失敗,工作階段會改用備援模型。

在 Enterprise 計畫,以及使用 Claude API、AWS 上的 Claude Platform、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 的帳戶上,分類器呼叫會計入您的 token 使用量。每次檢查都會傳送部分逐字稿以及待處理的操作,在執行前增加一次往返。讀取和受保護路徑以外的工作目錄編輯會略過分類器,因此額外負擔主要來自 shell 命令和網路操作。若伺服器將審查操作作為工作階段模型請求的一部分,就沒有獨立的分類器呼叫需要計入;請參閱伺服器端分類器審查。

沙箱化的網路存取不會針對每個連線增加分類器請求。分類器會在一次審查中,將命令所指明的主機與命令一併判斷,而 Claude Code 會依據核准的清單檢查每個連線,不會再次呼叫分類器。

使用 dontAsk 模式僅允許預先批准的工具

如果您設定 dontAsk 模式,Claude Code 會自動拒絕所有原本會提示的工具呼叫。Claude 仍會執行在 Manual 模式中不需要批准的操作,例如您工作目錄內的檔案讀取和唯讀 Bash 命令,加上符合您 permissions.allow 規則的操作和由 PreToolUse hook 批准的呼叫。在您預先定義 Claude 可以執行的確切操作的 CI 管道或受限環境中使用此模式;工作階段永遠不會等待輸入。此模式啟用時,狀態列會顯示 ⏵⏵ don't ask on。

Claude Code 會拒絕符合您明確 ask 規則的呼叫,而不是提示。它也會拒絕內建的 AskUserQuestion 工具,即使您的允許規則符合它,以及您的組織設定為 ask的連接器工具在該設定到達 Claude Code 的工作階段中。它以相同方式拒絕標記為 _meta["anthropic/requiresUserInteraction"] 的 MCP 工具,因為它們的批准卡需要此模式永遠不會收集的答案;這需要 Claude Code v2.1.199 或更新版本。

rm 和 rmdir 移除針對關鍵路徑,例如 rm -rf / 和 rm -rf ~,即使允許規則或 PreToolUse hook 允許它們也被拒絕。

Claude Code on the web 上的雲端工作階段會忽略 defaultMode: "dontAsk";詳見 bypassPermissions 以了解詳情。

在啟動時使用旗標設定:

claude --permission-mode dontAsk

使用 bypassPermissions 模式跳過所有檢查

bypassPermissions 模式會停用權限提示和安全檢查,使工具呼叫立即執行,包括寫入受保護路徑。

任何模式都不會自動核准的操作在此模式中仍會提示。讀取其他組織的公開 artifact 需要您的核准,而此模式不會詢問核准,因此 Claude 無法讀取。PowerShell 中的 Remove-Item 拒絕也適用於此模式。

兩個跨工作階段訊息傳遞保護措施在此模式中仍然適用,以及在有可用的略過權限的 Plan Mode 工作階段中:

  • 針對超出此機器的工作階段訊息的 isolatePeerMachines 核准提示仍會出現。
  • 當沒有 crossSessionInbound 值適用時,Claude Code 會保留來自您另一個工作階段的入站訊息以供您核准,只有當傳送工作階段識別自己也在略過權限提示時才會無需詢問即傳遞。如果您在保留訊息時離開權限模式,Claude Code 會重新套用入站規則,並傳遞任何現在接受的保留訊息。

在有可用略過權限的互動式終端工作階段中,Claude Code 也不會強制執行計畫模式的區塊。Claude 仍被指示在計畫時不進行編輯,但它在計畫期間嘗試的任何檔案編輯或 shell 命令都會無需提示即執行。明確的詢問規則和針對關鍵路徑的 rm 和 rmdir 移除仍會提示。

計畫模式在 Claude Code 執行時沒有互動式終端的任何地方都保持其區塊,包括使用 -p 的非互動式執行、Agent SDK 工作階段,以及 VS Code 擴充功能的聊天面板中的對話。在那裡,--allow-dangerously-skip-permissions 使 bypassPermissions 稍後可選。

您無法從未啟用此模式的工作階段進入 bypassPermissions。在啟動時使用 permissions.defaultMode: "bypassPermissions" 或使用啟用旗標來啟用它:

claude --permission-mode bypassPermissions

--dangerously-skip-permissions 旗標是等效的。

Claude Code 拒絕在您使用 --restricted 啟動的工作階段中使用 bypassPermissions。--restricted 需要 Claude Code v2.1.248 或更新版本。

第一次使用此模式啟動互動式工作階段時,Claude Code 會顯示警告對話框,要求您接受對無權限檢查執行的動作負責:

  • 如果您接受:Claude Code 會在 ~/.claude/settings.json 中將 skipDangerousModePermissionPrompt 設定為 true,因此後續工作階段會跳過對話框。若要再次看到對話框,請從該檔案中移除該鍵或將其設定為 false。skipDangerousModePermissionPrompt 參考列出了您或您的組織可以設定它的其他設定檔。
  • 如果您拒絕:Claude Code 會結束。

在非互動模式中不會顯示對話框,使用 --bg 啟動的背景工作階段會被拒絕,直到您在互動式工作階段中接受對話框。

在 Linux 和 macOS 上,當以 root 或 sudo 身份執行時,Claude Code 拒絕以此模式啟動:

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

在識別的沙箱內會自動跳過檢查。若要在容器中自主執行,請使用開發容器設定,它以非 root 使用者身份執行 Claude Code。

網路上的 Claude Code 不會遵守您設定檔中的 defaultMode: "bypassPermissions" 或 "dontAsk",因此儲存庫的簽入設定無法在略過權限模式下啟動雲端工作階段。該設定會被無聲地忽略,工作階段會改為以模式下拉式選單中顯示的權限模式啟動。請參閱切換權限模式以了解雲端工作階段提供哪些模式。

受保護的路徑

對於一小組路徑的寫入操作永遠不會自動批准,唯一的例外是 bypassPermissions 模式,以及可使用略過權限的計畫模式互動式終端工作階段。這可以防止意外損壞儲存庫狀態和 Claude 自身的設定。

模式 受保護路徑寫入
default、acceptEdits 提示
plan 在略過權限可用的互動式終端工作階段中允許。否則,當自動模式在規劃期間可用時路由到分類器,當它不可用時提示
auto 路由至分類器
dontAsk 拒絕
bypassPermissions 允許

在使用 --restricted 啟動的工作階段中,需要 Claude Code v2.1.248 或更新版本,分類器無法批准受保護路徑寫入。

在將受保護路徑寫入路由到分類器的模式中,當 Claude 要求的路徑本身不受保護時,符號連結檢查解析為受保護路徑的寫入會改為提示您。

設定檔案中的 permissions.allow 規則不會預先批准受保護路徑的寫入。安全檢查在 Claude Code 評估設定中的允許規則之前執行,因此在 ~/.claude/settings.json 或 .claude/settings.json 中的 Edit(.claude/**) 之類的項目不會改變上表中的每個模式結果。在提示的模式中,對專案的 .claude/ 資料夾或 ~/.claude/ 的寫入提示可以提供以下其中一個工作階段範圍的選項:

  • 對於專案的 .claude/ 資料夾:是的,並允許 Claude 在此工作階段編輯此專案的 .claude 資料夾中的檔案
  • 對於 ~/.claude/:是的,並允許 Claude 在此工作階段編輯其 ~/.claude 資料夾中的檔案

受保護的目錄:

  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude,除了 .claude/worktrees 其中 Claude 儲存其自身的 git worktrees
  • 您使用 --plugin-dir 載入的目錄,因為當檔案變更時 Claude Code 會從中重新載入並執行 mod 的程式碼

受保護的檔案:

  • .gitconfig、.gitmodules
  • .bashrc、.bash_profile、.bash_login、.bash_aliases、.bash_logout、.zshrc、.zprofile、.zshenv、.zlogin、.zlogout、.profile、.envrc
  • .npmrc、.yarnrc、.yarnrc.yml、.pnp.cjs、.pnp.loader.mjs、.pnpmfile.cjs、bunfig.toml、.bunfig.toml
  • .bazelrc、.bazelversion、.bazeliskrc
  • .pre-commit-config.yaml、lefthook.yml、lefthook.yaml、.lefthook.yml、.lefthook.yaml
  • gradle-wrapper.properties、maven-wrapper.properties
  • .devcontainer.json
  • .ripgreprc、pyrightconfig.json
  • .mcp.json、.claude.json

關鍵路徑

關鍵路徑是 Claude Code 保護的目錄,防止 rm 和 rmdir 命令刪除,例如檔案系統根目錄、您的主目錄和您的工作目錄。

Claude Code 絕不允許 permissions.allow 規則或返回 "allow" 的 PreToolUse hook 批准針對關鍵路徑的 rm 或 rmdir 命令,即使在跳過其他提示的模式中也是如此。此斷路器可防止模型錯誤。匹配的拒絕規則仍會直接阻止該命令。

取決於您的權限模式會發生什麼。Remove-Item 和 cmd 移除內建命令有自己的檢查,詳見 PowerShell 中的 Remove-Item。

哪些路徑是關鍵路徑

Claude Code 將 rm 或 rmdir 目標視為關鍵路徑,當它是以下任何一項時:

  • 檔案系統根目錄
  • 頂級目錄,即根目錄的任何直接子目錄,例如 /usr、/etc 或 /data
  • 您的主目錄
  • Windows 磁碟機根目錄及其頂級目錄,例如 C:\ 和 C:\Windows
  • 您的工作目錄及其父目錄
  • 您的其他工作目錄及其父目錄,但僅當移除是其中一個目錄下的 glob 時,例如 rm -rf <dir>/*。對目錄本身執行 rm -rf <dir> 不會觸發此檢查

計為關鍵路徑的其他目標

Claude Code 也將以下 rm 和 rmdir 目標視為關鍵路徑。最後一列說明每個目標計為關鍵路徑的原因。

目標 範例 計為關鍵路徑的原因
shell 變數下的 glob 或尾部斜線 rm -rf "$DIR"/* 當變數為空時,命令變成從檔案系統根目錄的移除
位置參數(例如 $1 或 $@)下的相同形式,當命令中沒有任何內容給它賦值時 rm -rf "$1"/* 命令展開為從根目錄的移除
shell 變數後跟一個常見的頂級目錄名稱,例如 mnt、tmp、usr 或 Users rm -rf "$TMPDIR/mnt" 當變數展開為空時,命令移除 /mnt
同一命令從目錄列印替換(例如 $(pwd) 或 $(git rev-parse --show-toplevel))分配的變數 D=$(pwd); rm -rf "$D" 該值可以命名您的工作目錄或儲存庫根目錄
僅是命令替換輸出的目標,當 rm 是遞迴時 rm -rf "$(pwd)" Claude Code 無法在命令執行前檢查目標
關鍵路徑後的尾部命令替換 rm -rf ~/$(cmd) Claude Code 檢查如果替換展開為空時會保留的路徑,這裡是您的主目錄
僅是反斜線的目標 rm -rf "\\" Windows 上的 Git Bash 將單個反斜線讀取為目前磁碟機的根目錄,因此檢查適用於每個平台

要關閉對僅是命令替換輸出的目標的檢查,請在啟動 Claude Code 的環境中設定 CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1。

巢狀命令和內聯指令碼中的移除

Claude Code 也會查看這些構造:

  • 巢狀命令:帶有 (...) 的子殼層、帶有 { ...; } 的大括號群組、帶有 $(...) 或反引號的命令替換,或帶有 <(...) 的程序替換。Claude Code 會找到關鍵路徑移除,無論它位於巢狀形式內(如 (rm -rf ~) 或 echo "$(rm -rf ~)"),還是位於同一命令中的其他位置。
  • 內聯指令碼:Claude Code 檢查傳遞給殼層(例如 sh -c 或 bash -c)的指令碼,以查找 shell 變數和位置參數目標。
    • 當指令碼是雙引號時,呼叫殼層會在內部殼層接收指令碼之前展開其變數。在 find . -name '*.tmp' -exec sh -c "rm -rf \"$1\"/*" _ {} \; 中,命令會針對每個匹配項展開為從檔案系統根目錄的移除,Claude Code 將其視為關鍵路徑移除。
    • 將 $1 綁定到實際值的單引號指令碼(如 sh -c 'rm -rf "$1"/*' _ {} 所做的)不會被標記。

重寫被標記的命令

如何重寫命令以通過檢查取決於它使用的其他目標:

  • glob 或尾部斜線在變數(例如 $DIR)下:保護每個展開,使殼層在變數未設定或為空時停止並出現錯誤,如 rm -rf "${DIR:?}"/*,或使用字面路徑。其展開都以這種方式保護的移除通過此檢查,因此在 bypassPermissions 模式中,除非另一個關鍵路徑檢查標記它,否則它會在沒有提示的情況下執行。
  • glob 或尾部斜線在通常設定的變數(例如 $HOME)下:使用字面路徑。
  • 從目錄列印替換分配的變數:使用字面路徑。"${D:?}" 保護不會清除此檢查,因為變數不為空。
  • 僅是命令替換輸出的目標:首先單獨執行替換,然後移除它列印的字面路徑。提示會告訴 Claude 執行相同操作。

對於變數下的 glob 或尾部斜線,提示會命名被標記的 rm 並說明如何重寫它以通過檢查。

每個權限模式中的關鍵路徑移除

Claude Code 對關鍵路徑移除的處理取決於您的權限模式:

模式 結果
default、acceptEdits 要求您批准
plan 要求您批准。當分類器在規劃期間檢查命令且沒有可用的繞過權限時,按 auto 模式處理
auto 在終端中要求您批准,有時間限制。在其他地方,拒絕它
dontAsk 拒絕它
bypassPermissions 要求您批准,在終端中有時間限制

如果明確的詢問規則與命令匹配,Claude Code 會改為詢問您,即使在 auto 模式中也沒有時間限制。在詢問的模式中,PermissionRequest hook 可以回答提示。

auto 和 bypassPermissions 模式中的時間限制和拒絕

在 auto 和 bypassPermissions 模式中,關鍵路徑移除的終端提示顯示兩分鐘倒計時:

  • 如果倒計時在您回答前用完,Claude Code 會拒絕該命令並告訴 Claude 改為執行什麼,因此無人值守的工作階段會繼續工作。
  • 在提示打開時按任何鍵以停止倒計時並保持提示等待您的回答。
  • 在一個工作階段中,這些提示中的三個在無人回答的情況下用完後,Claude Code 會停止顯示它們並立即拒絕進一步的關鍵路徑移除。發送新訊息會重新開始計數。

在 auto 模式中,無論 Claude Code 無法向您顯示終端提示的地方,它都會立即拒絕該命令,例如在非互動式執行中使用 -p、在 Agent SDK 工作階段中,以及在 VS Code 擴充功能的聊天面板和桌面應用程式中。拒絕會告訴 Claude 報告它想刪除的內容並將移除留給您。

auto 和 bypassPermissions 處理需要 Claude Code v2.1.281 或更新版本。要關閉它,請在啟動 Claude Code 的環境中設定 CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1。在 auto 模式中,關鍵路徑移除會改為進入分類器,在 bypassPermissions 模式中提示沒有時間限制。

PowerShell 中的 Remove-Item

當您啟用 PowerShell 工具時,Claude Code 為 Remove-Item 和 cmd 內建命令 rd、rmdir、del 和 erase 提供自己的檢查,與 rm 關鍵路徑清單分開。對於 Remove-Item,結果取決於目標,第一個匹配的情況適用:

  • 系統路徑:檔案系統根目錄及其頂級目錄、磁碟機根目錄及其頂級目錄,以及您的主目錄。Claude Code 在每種模式中都拒絕該命令,不詢問您。
  • 萬用字元:裸 *,或任何以 /* 或 \* 結尾的目標,包括 shell 變數下的 glob,例如 $dir/*。Claude Code 在每種模式中都拒絕該命令,不詢問您,在分類器看到它之前。
  • 您的工作目錄或其父目錄之一,帶有 -Recurse:Claude Code 將命令視為任何其他需要在您的權限模式中批准的命令,因此它在詢問的模式中詢問您,在 auto 模式中將其發送給分類器,在 dontAsk 模式中拒絕它。bypassPermissions 模式跳過此檢查。

系統路徑情況也適用於 rd、rmdir、del 和 erase,當 Claude 通過 cmd 執行它們時,如 cmd /c rd /s /q C:\Users。預設情況下,Claude Code 在每種模式中都拒絕此類命令,不詢問您。此 cmd 檢查需要 Claude Code v2.1.283 或更新版本。

在判斷 cmd 目標時,Claude Code 將跟在字面文字後的 PowerShell 變數視為空。這使得 cmd /c rd /s /q "C:\$name" 成為 C:\ 的移除,因此它也被拒絕。尾部萬用字元計為它清空的資料夾,因此 cmd /c del /q C:\* 被拒絕,而 cmd /c del /q dist\* 在您的專案中則不被拒絕。

要關閉 cmd 檢查,請在啟動 Claude Code 的環境中設定 CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY=1。Claude Code 在設定檔的 env 區塊中忽略此變數。系統路徑上的 Remove-Item 無論如何都保持被拒絕。

另請參閱

  • Permissions:allow、ask 和 deny 規則;受管理的原則
  • Configure auto mode:告訴分類器您的組織信任哪些基礎設施
  • Hooks:透過 PreToolUse 和 PermissionRequest hooks 的自訂權限邏輯
  • Security:保護措施和最佳實踐
  • Sandboxing:Bash 命令的檔案系統和網路隔離
  • Non-interactive mode:使用 -p 旗標執行 Claude Code