可用的模式
每種模式在便利性和監督之間做出不同的權衡。下表顯示在每種模式中 Claude 無需權限提示即可執行的操作。Manual 模式出現在其設定值default 下。
審查每個操作的模式在 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移除針對關鍵路徑,沒有允許規則或PreToolUsehook"allow"批准 - 跨工作階段訊息保護措施
-
當
permissions.blockReadsOutsideWorkingDirectories開啟時,在工作目錄外讀取:已識別的檔案讀取 Bash 命令即使在自動模式和bypassPermissions模式中也會提示,任何未沙箱化的重試需要批准才能在沙箱外執行也是如此。需要 Claude Code v2.1.257 或更新版本。 殼層解析器無法追蹤的命令,例如變更目錄超過一次或執行子殼層的命令,即使在命名沒有外部路徑時也會以相同方式提示。當命令在沙箱中執行且沙箱強制執行該區塊時,此提示不適用。
常見設定
權限模式決定 Claude 是否在操作前詢問,而 Bash 沙箱和外部隔離邊界決定操作執行後可以到達什麼。下表中的每一行將目標與讓您到達該目標的旗標或設定以及所需的隔離配對,作為起點。可用的模式列出在每種模式中無需提示即可執行的操作。
Bash 沙箱和自動模式獨立工作並結合,除了沙箱模式下列出的例外。如需完整互動,請參閱沙箱化如何與權限和權限模式相關和隔離如何與權限模式相關。
工作階段在哪個模式中啟動
當您在終端中啟動新工作階段時,Claude Code 會從適用的第一個中取得權限模式:-
--permission-mode旗標或--dangerously-skip-permissions -
設定檔中的
permissions.defaultMode如果您在.claude/settings.json或.claude/settings.local.json中設定"auto",該值不會生效,Claude Code 會改為使用內建預設值而不是來自~/.claude/settings.json的defaultMode。如果您在這兩個檔案中設定"bypassPermissions",它也不會生效,工作階段會以 Manual 模式啟動。其他值適用於任何設定檔。 - 內建預設值
auto 預設在 macOS、Linux 和 WSL 上需要 Claude Code v2.1.228 或更新版本,在原生 Windows 上需要 v2.1.233 或更新版本。在較早的版本上,內建預設是 Manual。
內建預設取決於您如何執行 Claude Code。符合的第一行適用。該表涵蓋您在終端或透過 VS Code 擴充功能啟動的工作階段;對於桌面應用程式和 claude.ai,請參閱切換權限模式中的 Desktop 和 Web 標籤。
在您安裝或升級後的第一個工作階段中,Claude Code 可以在其功能旗標到達之前選擇起始權限模式。該工作階段可能以不同的權限模式啟動,而不是表格給出的模式,您的下一個工作階段符合表格。
當旗標、設定檔或內建預設選擇
auto 但自動模式對工作階段不可用時,Claude Code 會改為以 Manual 啟動工作階段。當工作階段不符合可用性要求時,自動模式不可用,例如設定檔關閉它或不支援它的模型,或當 Anthropic 已在伺服器端暫時關閉它時。
內建預設第一次在自動模式中啟動您的工作階段時,Claude Code 會顯示連結到此頁面的通知:
- 在終端中,一次,在工作階段頂部
- 在 VS Code 擴充功能中,作為新對話螢幕上的卡片,直到您關閉它
~/.claude/settings.json 將 defaultMode 設定為 auto 以外的值,且沒有其他設定檔設定它,您的工作階段會繼續以該模式啟動。Claude Code 會在終端或 VS Code 擴充功能中詢問一次,是否將設定變更為自動模式。如果您拒絕,您的設定會保持原樣。
以不同的權限模式啟動
您可以為一個工作階段、或作為機器、專案或組織中每個工作階段的預設值設定起始權限模式。當多個設定檔設定permissions.defaultMode 時,設定優先順序決定,因此專案或受管值優先於 ~/.claude/settings.json。若要變更已執行工作階段的權限模式,請參閱切換權限模式。
此範例使您機器上的每個終端工作階段以 Manual 模式啟動,其設定值為
default。將其儲存在 ~/.claude/settings.json 中:
⏸ manual mode on。
切換權限模式
每個介面都有自己的控制項用於在工作階段期間切換權限模式,以及自己的方式來選擇新工作階段啟動的權限模式。選擇您的介面以查看其控制項。- CLI
- VS Code
- JetBrains
- Desktop
- Web and mobile
在工作階段期間:按 作為預設值:在您想要的範圍設定
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強制的提示,因為自動模式仍會向您顯示這些提示,因此切換不會移除它們。在啟動時:將權限模式作為旗標傳遞。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 進入它,或直接啟動它:
使用 Plan Mode 在編輯前進行分析
Plan Mode 告訴 Claude 在進行變更前先研究並提出建議。Claude 會讀取檔案、執行 shell 命令進行探索,並撰寫計畫,但不會編輯您的原始碼。除了在具有略過權限可用的互動式終端機工作階段中,編輯會保持被阻止,直到您核准計畫。 shell 命令在規劃期間發生的情況取決於工作階段,以及以下第一個符合的情況適用:- 具有可用略過權限的互動式終端機工作階段:分類器和提示都不適用於規劃命令。使用 bypassPermissions Mode 略過所有檢查涵蓋了仍在該處提示的少數事項。
- 自動模式可用且
useAutoModeDuringPlan設定已開啟,預設為開啟:分類器會檢查 shell 命令(關鍵路徑移除除外),而不是提示您。已核准的命令會執行,被拒絕的命令會被阻止。 - 自動模式不可用,或
useAutoModeDuringPlan關閉:內建唯讀集合之外的命令會提示您核准,包括當沙箱的自動允許模式已啟用時。
Shift+Tab 或在單一提示前加上 /plan 來進入 Plan Mode。您也可以從 CLI 開始使用 Plan Mode:
Shift+Tab 以離開 Plan Mode,而不核准計畫。
檢查並核准計畫
當計畫準備好時,Claude 會呈現它並詢問如何進行。從該提示中,您可以選擇:- 是的,並使用自動模式:核准並開始使用自動模式。如果自動模式對您的工作階段不可用,例如因為您的組織關閉了它,此選項會顯示為是的,自動接受編輯。如果您使用啟用的略過權限開始工作階段,該選項會改為顯示是的,並為此工作階段切換到 BYPASS PERMISSIONS(無進一步提示)。
- 是的,手動核准編輯:核准並逐個檢查每個編輯。
- 否,繼續規劃:保持在 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 使用SendMessage 向另一個代理傳送每條訊息前進行審查,無論是純文字還是結構化的代理團隊訊息,在自動模式和計畫模式中分類器審查命令時都會進行審查;傳送審查需要 Claude Code v2.1.222 或更新版本。
預設情況下,分類器不審查針對關鍵路徑(例如 rm -rf / 或 rm -rf ~)的 rm 和 rmdir 移除。關鍵路徑涵蓋在每個權限模式中對它們的處理。
自動模式也會促使 Claude 繼續工作而不停下來提出澄清問題,儘管當您的提示或技能明確依賴它時 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 應用程式閘道工作階段上預設可用。
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 應用程式閘道工作階段上,自動模式預設可用。使用 Claude Code v2.1.283 或更新版本,它也是互動式終端和 VS Code 工作階段的內建起始權限模式。要自己選擇起始權限模式,請按照以不同權限模式啟動的描述設定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:在互動式終端工作階段中,在每個 claude.ai 計畫和使用 Claude API 的帳戶上,隨著 Anthropic 推出。在 Pro、Max 和 Team 計畫上需要 Claude Code v2.1.271 或更新版本,在 Enterprise 計畫和 Claude API 帳戶上需要 v2.1.278 或更新版本。從 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_AUTO_MODE_SERVER=0。在直接連接到 Anthropic API 時,該變數需要 Claude Code v2.1.281 或更新版本。將其設定為 1 會在沒有伺服器審查的工作階段(例如 -p 或 Agent SDK 工作階段)中開啟伺服器審查,除非您也設定了 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 工作流程或部署配置、讀取秘密存儲並傳送資料的指令碼或設定步驟,以及擴大部署發佈內容的配置變更,例如登錄、可見性、成品或來源地圖設定。檢查適用於任何分支,即使儲存庫是公開的也適用,並在提交或推送時觸發,無論該提交或推送是否觸發管道;清除它需要命名執行效果,而不僅僅是提交或推送。在 v2.1.211 之前,此檢查的範圍限於預設分支:推送到那裡時,如果它攜帶敏感內容、相對於您要求的隱藏或誤述的變更、從儲存庫外移植的內容或繞過您要求的審查的內容,則被阻止
git reset --hard、git checkout -- .、git restore .、git clean -fd、git stash drop或git stash clear,分類器推測會丟棄未提交的變更git commit --amend當 HEAD 的提交不是在此工作階段中建立的- 從 v2.1.198 開始,
git commit --amend當 HEAD 的提交已經被推送時。僅訊息重述不被阻止:--amend -m沒有新暫存的內容,在 Claude 在此工作階段期間建立的提交上 terraform destroy、pulumi destroy、cdk destroy或terragrunt destroy,以及應用銷毀資源的計畫
- 寫入秘密管理器,或變更 DNS 記錄或 TLS 憑證
- 合併沒有人類批准的拉取請求、批准 Claude 自己的拉取請求或禁用 CI 檢查
- 發佈本身是自動化命令的評論,例如
atlantis apply或機器人的/deploy或/merge - 切換、調整或刪除生產功能旗標
- 將基礎設施變更應用於受保護的 IaC 範圍,或排空並移除叢集節點
- 寫入超出您命名的資源的共享計算叢集,例如標籤選擇器或
--all捕捉其他使用者的工作 - 建立在每個節點上執行或攔截叢集流量的 Kubernetes 資源,例如 DaemonSets 和准入 Webhooks
- 互動式殼層或連接埠轉發到敏感遠端目標
- 開啟隧道或反向殼層使本地服務可從公開網際網路到達
- 將即時認證或權杖列印到文字記錄或檔案中
- 存取在您的環境中列為敏感資料位置的位置,或從其中複製資料。從 v2.1.198 開始,這也會阻止從一個傳送資料到該條目排除的對象
- 繞過您的內部套件登錄將套件安裝路由到公開登錄。從 v2.1.198 開始,當您在對話中告訴 Claude 內部登錄或鏡像存在時,這也適用,而不僅僅是在您的環境中列出時
- 使用禁用安全防護的旗標執行命令,例如
--insecure - 啟動在沒有人類批准或沙箱的情況下執行的自主代理迴圈,例如使用
--dangerously-skip-permissions或--no-sandbox啟動的迴圈。從 v2.1.198 開始,這也涵蓋執行第三方代理或評估工具,隔離和每個操作批准禁用,例如使用--yes-always啟動的執行器 - Chrome 中的 Claude瀏覽器操作可能會將頁面內容、Cookie 或認證傳送到跨來源
- 通過萬用字元、glob 或年齡篩選器而不是特定命名路徑刪除
/tmp、$TMPDIR或其他共享暫存或快取目錄中的檔案 - 在您自己的訊息未授權這些詳細資訊給該收件人時,將敏感詳細資訊包含在傳送、上傳、發佈或寫入其他人或共享系統的內容中。PR 和問題正文、提交訊息和評論在儲存庫在信任邊界外或公開時計為此類出站內容,包括您組織自己的公開儲存庫;內部檔案路徑、代碼名稱、即時 API 回應資料(例如電子郵件或帳戶識別碼)和基礎設施識別碼計為敏感詳細資訊。PR、問題和提交訊息範圍需要 Claude Code v2.1.200 或更新版本。PR 或問題正文中的即時個人資料(例如電子郵件地址、帳戶或組織識別碼或使用指標)需要您命名這些詳細資訊和收件人,無論儲存庫的可見性或信任邊界如何。該檢查需要 Claude Code v2.1.203 或更新版本
- 傳送按鍵到 Claude Code 自己的 tmux 窗格以驅動其自己的介面,分類器將其視為 Claude 變更自己的權限或監督
- 註解掉、刪除或強制通過保護安全行為的測試或斷言,例如驗證、存取控制、輸入驗證或沙箱
- 刪除或拆除 Claude 在工作階段中未建立的有狀態資源,當沒有更具體的刪除規則適用且您未命名該資源時
- 將 API 基礎 URL、代理端點、Webhook 接收器或登錄鏡像重新指向不適合任務的第三方主機,包括在
.env.example等範例檔案中 - 使用
git remote set-url或git remote add變更推送去向,除非您命名了新遠端 - 推送秘密或個人或受信任資料到已知為公開的儲存庫,或推送不屬於該儲存庫自己工作的機密材料到那裡。Dotfiles 儲存庫自己的主題是個人或受信任資料的唯一例外,來自私有儲存庫到任何公開表面的內容以相同方式被阻止;兩項改進都需要 Claude Code v2.1.203 或更新版本。在 v2.1.203 之前,個人資料與機密材料分組,僅當它不屬於該儲存庫自己的工作時才被阻止。當儲存庫的可見性未確定時,分類器不單獨在此阻止;它改為根據其他規則判斷內容
- 針對不同儲存庫或組織開啟拉取請求、使用
gh repo fork進行分叉或推送到第三方儲存庫,除非您命名了該外部目標
- 來自敏感本地存儲或檔案名稱、路徑或類型將其標記為敏感的檔案的內容進入提交、推送、PR 或問題文字、gist 或貼上或套件發佈,除非您命名了來源和目的地。工作階段文字記錄和對話日誌、認證和配置點資料夾(例如 SSH 金鑰、雲端認證、瀏覽器設定檔和殼層歷史記錄)以及使用者資料匯出都計為此類,儲存庫為私有不會清除它
-
寫入 Claude Code 工作階段文字記錄、
~/.claude/projects/下的.jsonl歷史檔案或您配置的配置目錄,無論是直接還是通過殼層命令。該規則也涵蓋 Claude Code 為其自己的檢查附加到每個文字記錄條目的中繼資料行。讀取文字記錄不被阻止 -
遞迴強制刪除,例如
rm -rf "$VAR"或Remove-Item -Recurse -Force $dir,其目標是分類器看不到的殼層變數,在對話中的任何地方都未指派,或以此類變數為根的 glob。該值僅來自較早的命令輸出,分類器永遠不會收到,因此分類器無法根據其他刪除規則驗證刪除目標。當您命名被刪除的確切路徑或 Claude 使用寫入命令的已解析文字路徑重新執行刪除時,該塊會清除。目標分類器可以解析的刪除不受影響。 直接在變數下的 glob,如rm -rf "$VAR"/*,是關鍵路徑。Remove-Item目標為裸*或以/*或\*結尾的永遠不會到達分類器:Claude Code 直接拒絕它們。
- 從雲端實例中繼資料端點(例如
169.254.169.254)請求認證,或使用機器自己的服務帳戶或節點身份明確驗證雲端、叢集或登錄呼叫 - 通過直接請求以外的路由到達公開主機,例如隧道、反向殼層或重寫為指向外部的解析器或代理配置
- 讀取屬於主機而不是您的任務的認證,例如節點憑證或節點的容器登錄驗證
- 連接到或掃描 Claude 未啟動的同級容器、Pod 或 VM,或容器下的節點
autoMode.environment 中的主機包含條目中描述該設定。
Claude Code v2.1.261 及更新版本也預設阻止這些:
- 在訊息、PR 或問題文字、文件或連結將被開啟或獲取的任何其他地方發佈或寫入公開貼上、圖表或資料共享服務的連結,當 URL 本身攜帶被共享的內容時,除非您命名了該服務
- 您工作目錄中的本地檔案操作
- 安裝在您的鎖定檔案或清單中宣告的依賴項
- 讀取
.env並將認證傳送到其匹配的 API - 唯讀 HTTP 請求
- 推送到您正在處理的儲存庫的任何分支,包括預設分支。名稱將其標記為部署或發佈目標的非預設分支,例如
production或gh-pages,不被涵蓋:分類器根據其自己的條款判斷推送到那裡。推送的內容仍根據其他規則進行檢查,permissions.deny規則仍可以在每個模式中按書寫阻止推送命令,遠端自己的分支保護仍然適用。在 v2.1.211 之前,僅允許推送到您啟動的分支、Claude 建立的分支和到預設分支的例行推送,在 v2.1.203 之前任何直接推送到預設分支都被阻止
- 刪除 Claude 在同一工作階段中較早建立的確切工作
- 作為您的任務的一部分讀取、審查或寫入安全相關的程式碼、配置和威脅模型
- 在同一多代理工作階段中一起工作的代理之間的訊息
- 將資料傳送到您在
environment中列出的受信任域、儲存桶和服務。這僅涵蓋資料流,而不是相同基礎設施上的破壞性或認證操作 - Chrome 中的 Claude導航到受信任的內部域、localhost 或您命名的 URL
claude auto-mode defaults 以將完整規則清單列印為 JSON。如果例行操作被阻止,管理員可以通過 autoMode.environment 設定新增受信任的儲存庫、儲存桶和服務:請參閱配置自動模式。
推送到您正在處理的儲存庫的任何分支並建立與您的請求相符的拉取請求無需提示即可執行,除非推送或拉取請求屬於阻止清單,例如秘密或敏感資料離開儲存庫,或針對不同儲存庫或組織的拉取請求。要在保持自動模式的同時要求這些命令前的人類檢查點,請新增 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下的最近拒絕標籤中列出操作,您可以按r使用手動批准重試它。當分類器對操作沒有給出判決時,因為分類器自己的請求或其回應未解析的安全檢查拒絕了它,Claude Code 拒絕操作而沒有通知或最近拒絕條目。 - 重複阻止:如果分類器連續 3 次或總共 20 次阻止操作,自動模式暫停,Claude Code 恢復提示。批准提示的操作恢復自動模式。這些閾值不可配置。任何允許的操作重置連續計數器,而總計數器在工作階段中持續並僅在其自己的限制觸發回退時重置。當分類器自己的請求的安全檢查拒絕時,Claude Code 不計算拒絕到任一閾值;連結的條目涵蓋 Claude Code 如何處理這些拒絕。
- 無法提示的工作階段:沒有
--permission-prompt-tool的非互動式-p執行沒有回退提示。當重複阻止達到閾值時,操作不執行,Claude 繼續工作。當分類器自己的請求的安全檢查拒絕時也適用相同情況。Claude Code 在任一情況下都不停止執行。 - 伺服器沒有判決:在伺服器端分類器審查下,Claude Code 拒絕伺服器沒有給出判決的操作,並在連續十個沒有判決的回應後停止轉向。請參閱伺服器未返回安全判決。
- 檢查期間的模式切換:如果您在分類器檢查待決時切換權限模式,Claude Code 丟棄新模式不會請求的判決,而不是應用它:您改為被提示批准,或操作在
dontAsk模式中自動拒絕。
/feedback 報告誤報,或讓管理員配置受信任的基礎設施。
分類器如何評估操作
分類器如何評估操作
每個操作都經過固定的決策順序。第一個匹配的步驟獲勝:
- 與您的允許、詢問或拒絕規則相符的操作立即解決,但有以下例外:
- 唯讀操作和您工作目錄中的檔案編輯自動批准,除了寫入受保護路徑和工作目錄外的第一次讀取,這會提示您
- 其他所有內容都進入分類器,除了關鍵路徑移除在其預設處理下。在步驟 1 中直接提示您的連接器工具和
requiresUserInteractionMCP 工具永遠不會到達分類器,因此組織要求的批准或同意步驟都不會自動批准 - 如果分類器阻止,Claude 收到原因並嘗試替代方案。在大多數工作階段中,原因命名分類器相符的規則,例如
[Data Exfiltration],而不是給出書面解釋;請參閱審查拒絕
- 無條件
Bash(*)或PowerShell(*) - 萬用字元解釋器,例如
Bash(python*) - 套件管理器執行命令
Agent允許規則Monitor允許規則,因為 Claude Code 通過殼層執行 Monitor 命令
Bash(npm test) 保持有效。Claude Code 在您離開自動模式時恢復丟棄的規則。在 v2.1.236 之前,Claude Code 在自動模式中保持 Monitor 允許規則有效,因此與整個工具相符的規則批准 Monitor 命令而不進行分類器審查。Claude Code 也在會丟棄未提交工作的命令前執行 git status,例如 git reset --hard 或 rm -rf,並向分類器顯示是否存在暫存、修改或未追蹤的工作。Claude Code 在該檢查中報告未追蹤的檔案,即使儲存庫的 git 配置設定 status.showUntrackedFiles=no。在 Claude Code 本身發送的分類器請求中,分類器看到使用者訊息、除了唯讀查詢(例如檔案讀取和搜尋)之外的工具呼叫以及您的 CLAUDE.md 內容。工具結果從這些請求中被剝離,因此檔案或網頁中的惡意內容無法直接操縱分類器。您可以使用 PostToolUse hook 的 classifierContext 欄位註解呼叫的結果,分類器將其讀取為應用程式提供的上下文。該欄位需要 Claude Code v2.1.236 或更新版本。單獨的伺服器端探針掃描傳入的工具結果並在 Claude 讀取前標記可疑內容。有關這些層如何協同工作的更多資訊,請參閱自動模式公告和工程深入探討。自動模式如何處理子代理
自動模式如何處理子代理
分類器在三個點檢查子代理工作:
- 在子代理啟動前,委派的任務描述被評估,因此危險看起來的任務在生成時被阻止。
- 當子代理執行時,其每個操作都通過分類器進行,使用與父工作階段相同的規則,子代理前言中的任何
permissionMode都被忽略。 - 當子代理完成時,分類器審查其工作和最終報告,然後父讀取報告。當分類器標記子代理的工作或報告,或單獨的 API 安全檢查拒絕審查時,報告仍被傳遞,前面加上安全警告。當分類器對審查不可用時,報告到達時帶有在對其採取行動前驗證子代理工作的注意。
成本和延遲
成本和延遲
分類器預設在 Claude Sonnet 5 上執行,而不是在您的
/model 選擇上。Anthropic 配置伺服器端的分類器模型優先於該預設。當您工作階段的模型是 Claude Sonnet 4.6,或當 availableModels 排除 Sonnet 5 時,分類器改為在工作階段的模型上執行,或在工作階段在Fable 模型上執行時在 Opus 模型上執行;在 Anthropic API 以外的提供者上,該 Opus 回退是提供者的預設 Opus 模型。工作階段的第一個自動模式請求驗證 Sonnet 5 預設:如果請求成功,Sonnet 5 保持工作階段的分類器模型,如果它因模型不可用而失敗,工作階段改為使用回退。在該驗證解決後,分類器的模型在工作階段中不變。在 Enterprise 計畫和使用 Claude API 的帳戶、AWS 上的 Claude Platform、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上,分類器呼叫計入您的權杖使用。每次檢查發送文字記錄的一部分加上待決操作,在執行前新增往返。讀取和工作目錄編輯在受保護路徑外跳過分類器,因此開銷主要來自殼層命令和網路操作。伺服器審查操作作為工作階段模型請求的一部分的地方,沒有單獨的分類器呼叫計數;請參閱伺服器端分類器審查。沙箱網路存取不新增每個連接分類器請求。分類器與命令一起判斷命令命名的主機,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 以了解詳情。
在啟動時使用旗標設定:
使用 bypassPermissions 模式跳過所有檢查
bypassPermissions 模式會停用權限提示和安全檢查,使工具呼叫立即執行,包括寫入受保護路徑。
任何模式都不會自動批准的操作在此模式中仍會提示。PowerShell 中的 Remove-Item 拒絕也適用於此模式。
兩個跨工作階段訊息傳遞保護措施在此模式中仍然適用,以及在有可用的略過權限的計畫模式工作階段中:
- 針對超出此機器的工作階段訊息的
isolatePeerMachines核准提示仍會出現。 - 當沒有
crossSessionInbound值適用時,Claude Code 會保留來自您另一個工作階段的入站訊息以供您核准,只有當傳送工作階段識別自己也在略過權限提示時才會無需詢問即傳遞。如果您在保留訊息時離開權限模式,Claude Code 會重新套用入站規則,並傳遞任何現在接受的保留訊息。
rm 和 rmdir 移除仍會提示。
計畫模式在 Claude Code 執行時沒有互動式終端的任何地方都保持其區塊,包括使用 -p 的非互動式執行、Agent SDK 工作階段,以及 VS Code 擴充功能的聊天面板中的對話。在那裡,--allow-dangerously-skip-permissions 使 bypassPermissions 稍後可選。
您無法從未啟用此模式的工作階段進入 bypassPermissions。在啟動時使用 permissions.defaultMode: "bypassPermissions" 或使用啟用旗標來啟用它:
--dangerously-skip-permissions 旗標是等效的。
Claude Code 拒絕在您使用 --restricted 啟動的工作階段中使用 bypassPermissions。--restricted 需要 Claude Code v2.1.248 或更新版本。
第一次使用此模式啟動互動式工作階段時,Claude Code 會顯示警告對話框,要求您接受對無權限檢查執行的動作負責。Claude Code 會將您的接受儲存到使用者設定,因此對話框只會出現一次。如果您拒絕,Claude Code 會結束。在非互動模式中不會顯示對話框,使用 --bg 啟動的背景工作階段會被拒絕,直到您在互動式工作階段中接受對話框。
在 Linux 和 macOS 上,當以 root 或 sudo 身份執行時,Claude Code 拒絕以此模式啟動:
defaultMode: "bypassPermissions" 或 "dontAsk",因此儲存庫的簽入設定無法在略過權限模式下啟動雲端工作階段。該設定會被無聲地忽略,工作階段會改為以模式下拉式選單中顯示的權限模式啟動。請參閱切換權限模式以了解雲端工作階段提供哪些模式。
受保護的路徑
對於一小組路徑的寫入操作永遠不會自動批准,唯一的例外是bypassPermissions 模式,以及可使用略過權限的計畫模式互動式終端工作階段。這可以防止意外損壞儲存庫狀態和 Claude 自身的設定。
在使用
--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
.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.yamlgradle-wrapper.properties、maven-wrapper.properties.devcontainer.json.ripgreprc、pyrightconfig.json.mcp.json、.claude.json
關鍵路徑
Claude Code 永遠不會讓permissions.allow 規則或返回 "allow" 的 PreToolUse hook 批准針對關鍵路徑的 rm 或 rmdir 命令,即使在跳過其他提示的模式中。此斷路器防止模型錯誤。符合的拒絕規則仍會完全阻止命令。
會發生什麼取決於您的權限模式:
如果明確的詢問規則符合命令,Claude Code 即使在
auto 模式中也會詢問您,且沒有時間限制。在詢問的模式中,PermissionRequest hook 可以回答提示。
auto 和 bypassPermissions 處理需要 Claude Code v2.1.281 或更新版本。要關閉它,請在啟動 Claude Code 的環境中設定 CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1。在 auto 模式中,關鍵路徑移除隨後會進入分類器,在 bypassPermissions 模式中提示沒有時間限制。
在 auto 和 bypassPermissions 模式中,終端提示顯示兩分鐘倒計時:
- 如果倒計時在您回答之前用完,Claude Code 會拒絕命令並告訴 Claude 該怎麼做,因此無人值守的工作階段會繼續運作。
- 在提示開啟時按任何鍵以停止倒計時並保持提示等待您的回答。
- 在一個工作階段中,這些提示中的三個無人回答後,Claude Code 會停止顯示它們並立即拒絕進一步的關鍵路徑移除。傳送新訊息會重新開始計數。
auto 模式中,無論 Claude Code 無法向您顯示終端提示的地方,它都會立即拒絕命令,例如在非互動式執行中使用 -p、在 Agent SDK 工作階段中,以及在 VS Code 擴充功能的聊天面板和桌面應用程式中。拒絕告訴 Claude 報告它想刪除的內容並將移除留給您。
Claude Code 將 rm 或 rmdir 目標視為關鍵路徑,當它是以下任何一個時:
- 檔案系統根目錄
- 頂級目錄,意思是根目錄的任何直接子目錄,例如
/usr、/etc或/data - 您的主目錄
- Windows 磁碟機根目錄及其頂級目錄,例如
C:\和C:\Windows - 您的工作目錄及其父目錄
- 您的其他工作目錄及其父目錄,但僅當移除是其中一個下的 glob 時,例如
rm -rf <dir>/*。rm -rf <dir>在目錄本身上不會觸發此檢查
rm -rf "$DIR"/*,因為當變數為空時命令變成從檔案系統根目錄的移除。
此變數情況的提示會命名被標記的 rm 並說明如何重寫它以便檢查通過:
- 對於像
$DIR這樣的變數,保護每個擴展,使得當變數未設定或為空時 shell 會停止並出現錯誤,如rm -rf "${DIR:?}"/*,或使用字面路徑 - 對於通常已設定的變數,例如
$HOME,使用字面路徑
bypassPermissions 模式中它會在沒有提示的情況下執行,除非此部分中的另一個檢查標記它。
Claude Code 也將這些目標視為關鍵路徑:
- shell 變數後跟一個頂級目錄名稱,例如
rm -rf "$TMPDIR/mnt":當變數擴展為空時,命令會移除/mnt。這涵蓋常見的頂級名稱,例如mnt、tmp、usr和Users。 - 同一命令從目錄列印替換指派的變數,例如
D=$(pwd); rm -rf "$D"或來自$(git rev-parse --show-toplevel)的指派:該值可以命名您的工作目錄或儲存庫根目錄。"${D:?}"保護不會清除此檢查,因為變數不是空的;改為使用字面路徑。 - 僅反斜線目標,例如
rm -rf "\\":Windows 上的 Git Bash 將單個反斜線讀取為目前磁碟機的根目錄,因此檢查適用於每個平台。 - 僅命令替換的輸出,例如
rm -rf "$(pwd)",當rm是遞迴時:Claude Code 無法在命令執行前檢查目標,因此提示告訴 Claude 先自行執行替換,然後移除它列印的字面路徑。要關閉此檢查,請在啟動 Claude Code 的環境中設定CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1。
rm -rf ~/$(cmd),Claude Code 會檢查保留的路徑,在此範例中為您的主目錄。
使用 (...) 的子殼層、使用 { ...; } 的大括號群組、使用 $(...) 或反引號的命令替換,或使用 <(...) 的程序替換隱藏移除,不會跳過檢查。Claude Code 找到關鍵路徑移除,無論它位於巢狀形式內部(如 (rm -rf ~) 或 echo "$(rm -rf ~)"),還是位於同一命令中的其他地方。
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和PermissionRequesthooks 的自訂權限邏輯 - Security:保護措施和最佳實踐
- Sandboxing:Bash 命令的檔案系統和網路隔離
- Non-interactive mode:使用
-p旗標執行 Claude Code