SpyBara
Go Premium

Documentation 2026-10-13 23:57 UTC to 2026-10-14 22:58 UTC

72 files changed +1,725 −1,077. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

18 18 

19* 針對一個工作階段:執行 `claude --ax-screen-reader`。19* 針對一個工作階段:執行 `claude --ax-screen-reader`。

20* 針對從一個 shell 啟動的工作階段:設定 `CLAUDE_AX_SCREEN_READER` 環境變數為 `1`。在 Bash 或 Zsh 中,執行 `export CLAUDE_AX_SCREEN_READER=1`。在 PowerShell 中,執行 `$env:CLAUDE_AX_SCREEN_READER = "1"`。將該行新增至您的 shell 設定檔以保留供未來的 shell 使用。20* 針對從一個 shell 啟動的工作階段:設定 `CLAUDE_AX_SCREEN_READER` 環境變數為 `1`。在 Bash 或 Zsh 中,執行 `export CLAUDE_AX_SCREEN_READER=1`。在 PowerShell 中,執行 `$env:CLAUDE_AX_SCREEN_READER = "1"`。將該行新增至您的 shell 設定檔以保留供未來的 shell 使用。

21* 針對機器上的每個工作階段:將 `"axScreenReader": true` 新增至您的使用者[設定檔](/docs/zh-TW/settings)。此設定適用於任何終端,包括 VS Code 整合終端。21* 針對機器上的每個工作階段:將 `"axScreenReader": true` 新增至您的使用者[設定檔](/docs/zh-TW/settings)。此設定適用於任何終端機,包括 VS Code 整合終端機。

22 22 

23如果您結合多種方法,Claude Code 會將 [`--ax-screen-reader`](/docs/zh-TW/cli-reference#cli-flags) 旗標應用於 [`CLAUDE_AX_SCREEN_READER`](/docs/zh-TW/env-vars#variables) 環境變數,並將環境變數應用於 [`axScreenReader`](/docs/zh-TW/settings-reference#axscreenreader) 設定。23如果您結合多種方法,Claude Code 會優先套用 [`--ax-screen-reader`](/docs/zh-TW/cli-reference#cli-flags) 旗標而非 [`CLAUDE_AX_SCREEN_READER`](/docs/zh-TW/env-vars#variables) 環境變數,並優先套用環境變數而非 [`axScreenReader`](/docs/zh-TW/settings-reference#axscreenreader) 設定。

24 24 

25如果您透過 SSH 使用 Claude Code,請在執行 Claude Code 的遠端機器上設定環境變數或設定。25如果您透過 SSH 使用 Claude Code,請在執行 Claude Code 的遠端機器上設定環境變數或設定。

26 26 

Details

855 855 

856遠端伺服器的狀態在報告 `"connected"` 後也可能變更。當連線在工作階段中途中斷時,Claude Code 會在 [重新連線](/docs/zh-TW/mcp#automatic-reconnection) 時將伺服器移回 `"pending"`。稍後在 TypeScript 中呼叫 `mcpServerStatus()`,或在 Python 中呼叫 [`ClaudeSDKClient.get_mcp_status()`](/docs/zh-TW/agent-sdk/python#methods),可能會針對您之前看到已連線的伺服器報告 `"pending"`,而您這一方沒有進行任何設定變更。856遠端伺服器的狀態在報告 `"connected"` 後也可能變更。當連線在工作階段中途中斷時,Claude Code 會在 [重新連線](/docs/zh-TW/mcp#automatic-reconnection) 時將伺服器移回 `"pending"`。稍後在 TypeScript 中呼叫 `mcpServerStatus()`,或在 Python 中呼叫 [`ClaudeSDKClient.get_mcp_status()`](/docs/zh-TW/agent-sdk/python#methods),可能會針對您之前看到已連線的伺服器報告 `"pending"`,而您這一方沒有進行任何設定變更。

857 857 

858在五次重新連線嘗試失敗後,伺服器會報告 `"failed"`,或在需要再次授權時報告 `"needs-auth"`。若要手動重試,請在 TypeScript 中呼叫 [`reconnectMcpServer()`](/docs/zh-TW/agent-sdk/typescript#methods),或在 Python 中呼叫 [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/zh-TW/agent-sdk/python#methods)。858在五次重新連線嘗試失敗後,伺服器會報告 `"failed"`,或在需要再次授權時報告 `"needs-auth"`。處於 `"failed"` 狀態的 HTTP 或 SSE 伺服器仍可能在您未進行任何呼叫的情況下恢復為 `"connected"`,因為 Claude Code 在發生暫時性錯誤後會持續 [在背景重試](/docs/zh-TW/mcp#mid-session-drops-of-a-remote-server)。若要手動重試,請在 TypeScript 中呼叫 [`reconnectMcpServer()`](/docs/zh-TW/agent-sdk/typescript#methods),或在 Python 中呼叫 [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/zh-TW/agent-sdk/python#methods)。

859 859 

860<h2 id="troubleshooting">860<h2 id="troubleshooting">

861 故障排除861 故障排除

Details

424 Claude Code 在系統提示之外新增的上下文424 Claude Code 在系統提示之外新增的上下文

425</h2>425</h2>

426 426 

427系統提醒是 Claude Code 在工作階段期間新增到對話中的訊息,用於為 Claude 提供上下文,例如您的 CLAUDE.md 檔案內容或檔案在磁碟上已變更的備註。Claude Code 在對話中傳送這些訊息,而不是在系統提示中,因此無論您使用 `claude_code` 預設值還是傳遞您自己的字串作為 `systemPrompt`,它們都會到達 Claude。427系統提醒是 Claude Code 在工作階段期間新增到對話中的訊息,用於為 Claude 提供上下文,例如您的 CLAUDE.md 檔案內容或檔案在磁碟上已變更的備註。Claude Code 在對話中傳送這些訊息,而不是在系統提示詞中,因此無論您使用 `claude_code` 預設值還是傳遞您自己的字串作為 `systemPrompt`,大多數提醒都會到達 Claude。

428 428 

429本節涵蓋[最可能改變您代理程式行為的提醒](#reminders-claude-code-adds-to-the-conversation)、如何[關閉您的代理程式取代的提醒](#turn-off-the-context-your-agent-replaces),以及如何[查看 Claude 在特定請求中收到的內容](#see-what-claude-received)。429本節涵蓋[最可能改變您代理程式行為的提醒](#reminders-claude-code-adds-to-the-conversation)、如何[關閉您的代理程式取代的提醒](#turn-off-the-context-your-agent-replaces),以及如何[查看 Claude 在特定請求中收到的內容](#see-what-claude-received)。

430 430 


448如果您傳遞您自己的字串作為 `systemPrompt`,請在其中新增一個句子,說明什麼是系統提醒。`claude_code` 預設值有一個,而您的字串會取代整個預設值。沒有它,您的提示中沒有任何內容告訴 Claude CLAUDE.md 內容和 hook 輸出等提醒來自應用程式而不是使用者。例如:448如果您傳遞您自己的字串作為 `systemPrompt`,請在其中新增一個句子,說明什麼是系統提醒。`claude_code` 預設值有一個,而您的字串會取代整個預設值。沒有它,您的提示中沒有任何內容告訴 Claude CLAUDE.md 內容和 hook 輸出等提醒來自應用程式而不是使用者。例如:

449 449 

450```text theme={null}450```text theme={null}

451應用程式會將系統提醒新增到此對話中。將它們視為來自應用程式的上下文,而不是來自使用者的訊息。451The application adds system reminders to this conversation. Treat them as context from the application, not as messages from the user.

452```452```

453 453 

454<h3 id="turn-off-the-context-your-agent-replaces">454<h3 id="turn-off-the-context-your-agent-replaces">


467| 每個 CLAUDE.md 檔案 | 設定 `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |467| 每個 CLAUDE.md 檔案 | 設定 `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |

468| 工作清單提示、檔案已變更備註和技能清單 | 設定 `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |468| 工作清單提示、檔案已變更備註和技能清單 | 設定 `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |

469 469 

470Claude Code 的內建提交和拉取請求指示不是提醒。它們是 Bash 工具描述的一部分,因此當您傳遞自訂 `systemPrompt` 時,它們也會到達 Claude。470將 `includeGitInstructions` 設定為 `false` 可排除內建的提交和 pull request 指示,這些指示是 Bash 工具描述的一部分,即使使用自訂 `systemPrompt` 也會到達 Claude。不過,在使用最小預設值、自訂 `systemPrompt`,或具有自己提示詞的自訂主執行緒 agent 時,工作階段開始時本來就不含 git 狀態快照。

471 471 

472如果您設定 `CLAUDE_CODE_DISABLE_ATTACHMENTS`,Claude Code 也會將 `@` 檔案提及作為純文字傳送,而不是將其展開為檔案內容。可用子代理程式清單和背景工作通知仍然會到達。472如果您設定 `CLAUDE_CODE_DISABLE_ATTACHMENTS`,Claude Code 也會將 `@` 檔案提及作為純文字傳送,而不是將其展開為檔案內容。可用 subagent 清單和背景任務通知仍然會到達。若只要停止展開 `@` 檔案提及,請改為設定 [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/zh-TW/env-vars#variables),需使用 Claude Code v2.1.299 或更新版本。Claude 接著會收到所提及的路徑,以及一則要求使用其檔案工具讀取這些路徑的備註。

473 473 

474以下範例適用於在 `append` 中攜帶自己提交規則的代理程式。它將兩個 `attribution` 金鑰設定為空字串以移除預告片和頁尾,並關閉 `includeGitInstructions`,以便 Claude Code 自己的提交工作流程指示不會與您的指示競爭:474以下範例適用於在 `append` 中攜帶自己提交規則的代理程式。它將兩個 `attribution` 金鑰設定為空字串以移除預告片和頁尾,並關閉 `includeGitInstructions`,以便 Claude Code 自己的提交工作流程指示不會與您的指示競爭:

475 475 

Details

164| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內嵌設定 |164| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內嵌設定 |

165| `initialPrompt` | `string` | 否 | 當此代理作為主執行緒代理執行時,自動提交為第一個使用者回合。當代理作為子代理叫用時忽略 |165| `initialPrompt` | `string` | 否 | 當此代理作為主執行緒代理執行時,自動提交為第一個使用者回合。當代理作為子代理叫用時忽略 |

166| `maxTurns` | `number` | 否 | 代理停止前的最大代理回合數。當代理達到限制時,Claude Code 會傳回標記為部分的輸出,您可以[繼續代理](#resume-subagents)以繼續。部分標記需要 Claude Code v2.1.246 或更新版本 |166| `maxTurns` | `number` | 否 | 代理停止前的最大代理回合數。當代理達到限制時,Claude Code 會傳回標記為部分的輸出,您可以[繼續代理](#resume-subagents)以繼續。部分標記需要 Claude Code v2.1.246 或更新版本 |

167| `autoCompactWindow` | `number` | 否 | 當此 agent 作為 subagent 執行時,將其[自動壓縮視窗](/docs/zh-TW/sub-agents#subagent-auto-compact-window)降低至 `100000` 到 `1000000` 之間的 token 數。需要 TypeScript Agent SDK v0.3.296 或更新版本。Python SDK 的 [`AgentDefinition`](/docs/zh-TW/agent-sdk/python#agentdefinition) 沒有此欄位 |

167| `background` | `boolean` | 否 | 叫用時以非阻塞背景工作執行此代理 |168| `background` | `boolean` | 否 | 叫用時以非阻塞背景工作執行此代理 |

168| `omitClaudeMd` | `boolean` | 否 | 當此代理作為子代理執行時,在不含使用者、專案和本機 CLAUDE.md 檔案的情況下執行此代理;受管理的原則檔案仍會載入。當代理作為主執行緒代理執行時忽略。需要 TypeScript Agent SDK v0.3.271 或更新版本。Python SDK 的 [`AgentDefinition`](/docs/zh-TW/agent-sdk/python#agentdefinition) 沒有此欄位 |169| `omitClaudeMd` | `boolean` | 否 | 將使用者、專案和本機 CLAUDE.md 檔案排除在此 agent 的初始上下文之外;受管理的原則檔案仍會載入。當 agent 作為主執行緒 agent 執行時忽略。需要 TypeScript Agent SDK v0.3.271 或更新版本。Python SDK 的 [`AgentDefinition`](/docs/zh-TW/agent-sdk/python#agentdefinition) 沒有此欄位 |

169| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | 否 | 此代理的推理工作量等級 |170| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | 否 | 此代理的推理工作量等級 |

170| `permissionMode` | `PermissionMode` | 否 | 此代理內工具執行的權限模式。[子代理繼承規則](/docs/zh-TW/agent-sdk/permissions#available-modes)決定何時適用 |171| `permissionMode` | `PermissionMode` | 否 | 此代理內工具執行的權限模式。[子代理繼承規則](/docs/zh-TW/agent-sdk/permissions#available-modes)決定何時適用 |

171 172 


200| 子代理接收 | 子代理不接收 |201| 子代理接收 | 子代理不接收 |

201| :- | :- |202| :- | :- |

202| 其自身的系統提示 (`AgentDefinition.prompt`) 和 Agent 工具的提示 | 父代理的對話歷史或工具結果 |203| 其自身的系統提示 (`AgentDefinition.prompt`) 和 Agent 工具的提示 | 父代理的對話歷史或工具結果 |

203| 專案 CLAUDE.md(透過 [`settingSources`](/docs/zh-TW/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) 載入),除非代理設定 [`omitClaudeMd`](#agentdefinition-configuration) | 預載入的技能內容,除非列在 `AgentDefinition.skills` 中 |204| 專案 CLAUDE.md(透過 [`settingSources`](/docs/zh-TW/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) 載入)。設定 [`omitClaudeMd`](#agentdefinition-configuration) 的 agent 在開始時不會包含它 | 預載入的 skill 內容,除非列在 `AgentDefinition.skills` 中 |

204| 工具定義(繼承自父代理或 `tools` 中的子集,[針對背景執行進行篩選](/docs/zh-TW/sub-agents#available-tools)) | 父代理的系統提示 |205| 工具定義(繼承自父代理或 `tools` 中的子集,[針對背景執行進行篩選](/docs/zh-TW/sub-agents#available-tools)) | 父代理的系統提示 |

205 206 

206<Note>207<Note>

Details

908 | "malformed"908 | "malformed"

909 | "not_honoured"909 | "not_honoured"

910 >;910 >;

911 claude_code_version?: string;

911};912};

912```913```

913 914 


922 923 

923請求的 `sdkMcpServerManifests` 欄位和回應的 `sdk_mcp_manifests_parked` 欄位,是用於您以 [`createSdkMcpServer()`](#createsdkmcpserver) 建立的處理程序內 [SDK MCP 伺服器](/docs/zh-TW/agent-sdk/custom-tools)。您的應用程式不需要設定或讀取這兩個欄位。924請求的 `sdkMcpServerManifests` 欄位和回應的 `sdk_mcp_manifests_parked` 欄位,是用於您以 [`createSdkMcpServer()`](#createsdkmcpserver) 建立的處理程序內 [SDK MCP 伺服器](/docs/zh-TW/agent-sdk/custom-tools)。您的應用程式不需要設定或讀取這兩個欄位。

924 925 

926`claude_code_version` 是執行工作階段回合之程序的 Claude Code 版本。它與 [`SDKSystemMessage`](#sdksystemmessage) init 訊息所攜帶的值相同,因此您可以在第一個回合之前讀取 CLI 版本。

927 

928* 此欄位需要 Agent SDK v0.3.296 或更新版本,其隨附 Claude Code v2.1.296。

929* 如果此欄位為 `undefined` 且您設定了 `pathToClaudeCodeExecutable`,請將其指向 Claude Code v2.1.296 或更新版本。

930 

925回應一律會回報 `fast_mode_state`,而當有某些因素阻擋[快速模式](/docs/zh-TW/fast-mode)時,`fast_mode_disabled_reason` 會一併帶有原因代碼,讓您可以說明被阻擋的狀態,而不必重新推導可用性。這兩種行為都需要 Claude Code v2.1.219 或更新版本。在 v2.1.219 之前,回應會在快速模式不可用時省略 `fast_mode_state`,且從不帶有原因。關於原因代碼及其意義,請參閱結果訊息上的 [`fast_mode_disabled_reason`](#sdkresultmessage)。931回應一律會回報 `fast_mode_state`,而當有某些因素阻擋[快速模式](/docs/zh-TW/fast-mode)時,`fast_mode_disabled_reason` 會一併帶有原因代碼,讓您可以說明被阻擋的狀態,而不必重新推導可用性。這兩種行為都需要 Claude Code v2.1.219 或更新版本。在 v2.1.219 之前,回應會在快速模式不可用時省略 `fast_mode_state`,且從不帶有原因。關於原因代碼及其意義,請參閱結果訊息上的 [`fast_mode_disabled_reason`](#sdkresultmessage)。

926 932 

927成功的 `initialize` 的控制回應包裝也帶有一個 `pending_permission_requests` 陣列。此欄位位於回應包裝本身,而不在上述 `SDKControlInitializeResponse` payload 中。每個項目都是一則完整的 `control_request` 訊息,其 `{ type: "control_request", request_id, request }` 形狀與工作階段在執行期間串流權限請求時相同。933成功的 `initialize` 的控制回應包裝也帶有一個 `pending_permission_requests` 陣列。此欄位位於回應包裝本身,而不在上述 `SDKControlInitializeResponse` payload 中。每個項目都是一則完整的 `control_request` 訊息,其 `{ type: "control_request", request_id, request }` 形狀與工作階段在執行期間串流權限請求時相同。


1218 skills?: string[];1224 skills?: string[];

1219 initialPrompt?: string;1225 initialPrompt?: string;

1220 maxTurns?: number;1226 maxTurns?: number;

1227 autoCompactWindow?: number;

1221 background?: boolean;1228 background?: boolean;

1222 omitClaudeMd?: boolean;1229 omitClaudeMd?: boolean;

1223 memory?: "user" | "project" | "local";1230 memory?: "user" | "project" | "local";


1238| `skills` | 否 | 要預先載入 agent 上下文的 skill 名稱陣列 |1245| `skills` | 否 | 要預先載入 agent 上下文的 skill 名稱陣列 |

1239| `initialPrompt` | 否 | 當此 agent 作為主執行緒 agent 執行時,自動提交為第一個使用者回合 |1246| `initialPrompt` | 否 | 當此 agent 作為主執行緒 agent 執行時,自動提交為第一個使用者回合 |

1240| `maxTurns` | 否 | 停止前的最大 agentic 回合數(API 往返次數) |1247| `maxTurns` | 否 | 停止前的最大 agentic 回合數(API 往返次數) |

1248| `autoCompactWindow` | 否 | 當此 agent 以 subagent 身分執行時,將其[自動壓縮視窗](/docs/zh-TW/sub-agents#subagent-auto-compact-window)降低至 `100000` 到 `1000000` 之間的 token 數。需要 TypeScript Agent SDK v0.3.296 或更新版本 |

1241| `background` | 否 | 被呼叫時,將此 agent 作為非阻塞的背景任務執行 |1249| `background` | 否 | 被呼叫時,將此 agent 作為非阻塞的背景任務執行 |

1242| `omitClaudeMd` | 否 | 當此 agent 作為 subagent 執行時,不載入使用者、專案和本機的 CLAUDE.md 檔案;受管政策檔案仍會載入。適用於從 Agent 工具提示詞取得所需一切的 agent。當此 agent 作為主執行緒 agent 執行時會忽略。需要 TypeScript Agent SDK v0.3.271 或更新版本 |1250| `omitClaudeMd` | 否 | 將使用者、專案和本機的 CLAUDE.md 檔案排除在此 agent 的初始上下文之外;受管政策檔案仍會載入。適用於從 Agent 工具提示詞取得所需一切內容的 agent。當此 agent 作為主執行緒 agent 執行時會被忽略。需要 TypeScript Agent SDK v0.3.271 或更新版本 |

1243| `memory` | 否 | 此 agent 的記憶來源:`'user'`、`'project'` 或 `'local'` |1251| `memory` | 否 | 此 agent 的記憶來源:`'user'`、`'project'` 或 `'local'` |

1244| `effort` | 否 | 此 agent 的推理 effort 等級。接受具名等級或整數 |1252| `effort` | 否 | 此 agent 的推理 effort 等級。接受具名等級或整數 |

1245| `permissionMode` | 否 | 此 agent 內工具執行的權限模式。[subagent 繼承規則](/docs/zh-TW/agent-sdk/permissions#available-modes)決定何時套用。請參閱 [`PermissionMode`](#permissionmode) |1253| `permissionMode` | 否 | 此 agent 內工具執行的權限模式。[subagent 繼承規則](/docs/zh-TW/agent-sdk/permissions#available-modes)決定何時套用。請參閱 [`PermissionMode`](#permissionmode) |


2434* `fromMode`:傳送端工作階段的權限類別,`bypass` 或 `prompting`,由在您的工作階段之間轉送對等訊息的主機宣告,例如[桌面應用程式](/docs/zh-TW/desktop#work-across-sessions)。Claude Code 會在接收端工作階段套用[傳入控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)時讀取它。需要 Agent SDK v0.3.234 或更新版本。2442* `fromMode`:傳送端工作階段的權限類別,`bypass` 或 `prompting`,由在您的工作階段之間轉送對等訊息的主機宣告,例如[桌面應用程式](/docs/zh-TW/desktop#work-across-sessions)。Claude Code 會在接收端工作階段套用[傳入控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)時讀取它。需要 Agent SDK v0.3.234 或更新版本。

2435* `senderTaskId`:隊員的任務 ID。對於跨工作階段對等端不存在。2443* `senderTaskId`:隊員的任務 ID。對於跨工作階段對等端不存在。

2436* `name`:傳送者的顯示名稱,經 Claude Code 正規化:它會移除 Unicode 控制、格式、代理(surrogate)以及行或段落分隔符號的碼位,然後修剪結果,並將其限制在 64 個碼位內,超出時加上省略號。需要 Claude Code v2.1.205 或更新版本。2444* `name`:傳送者的顯示名稱,經 Claude Code 正規化:它會移除 Unicode 控制、格式、代理(surrogate)以及行或段落分隔符號的碼位,然後修剪結果,並將其限制在 64 個碼位內,超出時加上省略號。需要 Claude Code v2.1.205 或更新版本。

2437* `body`:去除對等信封後解碼的訊息本文,與模型看到的內容逐位元組相同。隊員訊息一定會有此欄位;對於跨工作階段對等端,僅當回合恰好是由 Claude Code 形成的單一對等信封時才存在。請呈現 `name` 和 `body`,而不是重新解析訊息文字。需要 Claude Code v2.1.205 或更新版本。2445* `body`:已移除 peer 信封的解碼訊息本文,與模型所見內容逐位元組一致。單一隊員訊息時存在,多則訊息合併時不存在;對於跨工作階段對等端,僅在回合恰好是一個由 Claude Code 形成的 peer 信封時存在。請直接呈現 `name` 和 `body`,而非重新剖析訊息文字。在 v2.1.299 之前,合併的訊息會保留第一則訊息的 `body`。需要 Claude Code v2.1.205 或更新版本。

2438* `fromSession`:傳送者可由主機開啟的工作階段 ID,由傳送者的主機設定,讓您的 UI 可以連結回傳送端工作階段。與 `from` 一樣,它是傳送者自行宣稱的:僅將其用作導覽目標,不要將其視為傳送者身分的證明。需要 Claude Code v2.1.216 或更新版本。2446* `fromSession`:傳送者可由主機開啟的工作階段 ID,由傳送者的主機設定,讓您的 UI 可以連結回傳送端工作階段。與 `from` 一樣,它是傳送者自行宣稱的:僅將其用作導覽目標,不要將其視為傳送者身分的證明。需要 Claude Code v2.1.216 或更新版本。

2439* `verifiedPeerPid`:連線到此工作階段之跨工作階段傳訊 socket 的程序的程序 ID,由核心驗證,並從連線本身讀取,絕不從 payload 讀取。請使用它而非 `from` 來識別傳送者:同一使用者的任何程序都能偽造 `from`。當 Claude Code 無法驗證時,此欄位不存在,例如在 Windows 上或非 socket 的傳入途徑,因此值不存在即表示傳送者未經驗證。對於轉送的流量,它識別的是轉送者而非訊息的作者,且程序 ID 可能被重複使用,因此請將其視為來源資訊,而不是驗證 token。需要 Claude Code v2.1.216 或更新版本。2447* `verifiedPeerPid`:連線到此工作階段之跨工作階段傳訊 socket 的程序的程序 ID,由核心驗證,並從連線本身讀取,絕不從 payload 讀取。請使用它而非 `from` 來識別傳送者:同一使用者的任何程序都能偽造 `from`。當 Claude Code 無法驗證時,此欄位不存在,例如在 Windows 上或非 socket 的傳入途徑,因此值不存在即表示傳送者未經驗證。對於轉送的流量,它識別的是轉送者而非訊息的作者,且程序 ID 可能被重複使用,因此請將其視為來源資訊,而不是驗證 token。需要 Claude Code v2.1.216 或更新版本。

2440 2448 


3445 offset?: number;3453 offset?: number;

3446 limit?: number;3454 limit?: number;

3447 pages?: string;3455 pages?: string;

3456 allow_large?: boolean;

3448};3457};

3449```3458```

3450 3459 

3451從本機檔案系統讀取檔案,包括文字、影像、PDF 和 Jupyter 筆記本。使用 `pages` 指定 PDF 頁面範圍(例如 `"1-5"`)。3460從本機檔案系統讀取檔案,包括文字、影像、PDF 和 Jupyter 筆記本。

3461 

3462* 使用 `pages` 指定 PDF 頁面範圍(例如 `"1-5"`)。

3463* `allow_large` 讓 Claude 在工作階段的上下文視窗仍有空間時,讀取超過[一般大小限制](/docs/zh-TW/tools-reference#large-files)的文字檔案。需要 Agent SDK v0.3.296 或更新版本,該版本內含 Claude Code v2.1.296。

3452 3464 

3453對於 PDF,Claude 在 Read 呼叫的 `tool_result` 內容中接收檔案的內容。傳回 `pdf` [輸出](#tool-output-types)的讀取會帶有摘要 `text` 區塊,後面跟著 `document` 區塊。傳回 `parts` 輸出的讀取會帶有摘要 `text` 區塊,後面跟著每個擷取頁面的一個區塊:`image` 區塊,或當 Claude Code 無法將其呈現為影像時命名頁面的 `text` 區塊。在 Agent SDK v0.3.242 之前,Claude Code 在工具結果後將檔案的內容作為單獨的 `user` 訊息傳遞。3465對於 PDF,Claude 在 Read 呼叫的 `tool_result` 內容中接收檔案的內容。傳回 `pdf` [輸出](#tool-output-types)的讀取會帶有摘要 `text` 區塊,後面跟著 `document` 區塊。傳回 `parts` 輸出的讀取會帶有摘要 `text` 區塊,後面跟著每個擷取頁面的一個區塊:`image` 區塊,或當 Claude Code 無法將其呈現為影像時命名頁面的 `text` 區塊。在 Agent SDK v0.3.242 之前,Claude Code 在工具結果後將檔案的內容作為單獨的 `user` 訊息傳遞。

3454 3466 

agent-teams.md +2 −1

Details

270| **Task list** | 隊友認領和完成的共享工作項目列表 |270| **Task list** | 隊友認領和完成的共享工作項目列表 |

271| **Mailbox** | 代理之間通訊的訊息系統 |271| **Mailbox** | 代理之間通訊的訊息系統 |

272 272 

273每個代理的 mailbox 是位於 `~/.claude/teams/{team-name}/inboxes/{agent-name}.json` 的 JSON 檔案。Claude Code 在讀取 mailbox 檔案時驗證每個條目。不符合訊息格式的條目會被報告為錯誤並從檔案中移除;有效的訊息仍會被傳遞。在 v2.1.207 之前,單個格式錯誤的 mailbox 條目會導致每秒重複出現錯誤,並阻止該 mailbox 的傳遞,直到您手動刪除檔案。273每個 agent 的 mailbox 是位於 `~/.claude/teams/{team-name}/inboxes/{agent-name}.json` 的 JSON 檔案。Claude Code 在讀取 mailbox 檔案時驗證每個條目。不符合訊息格式的條目會被報告為錯誤並從檔案中移除;有效的訊息仍會被傳遞。

274 274 

275Claude Code 只在寫入收件人 mailbox 檔案成功時才報告訊息已發送,無論訊息是純文字還是結構化協議訊息(例如計畫批准或關閉請求)。當寫入失敗時(例如因為磁碟已滿或 mailbox 目錄不可寫),發送代理會收到錯誤,且不會發送任何內容。請參閱[無法寫入隊友的收件匣](/docs/zh-TW/errors#failed-to-write-to-a-teammate-inbox)以了解錯誤訊息和復原步驟。275Claude Code 只在寫入收件人 mailbox 檔案成功時才報告訊息已發送,無論訊息是純文字還是結構化協議訊息(例如計畫批准或關閉請求)。當寫入失敗時(例如因為磁碟已滿或 mailbox 目錄不可寫),發送代理會收到錯誤,且不會發送任何內容。請參閱[無法寫入隊友的收件匣](/docs/zh-TW/errors#failed-to-write-to-a-teammate-inbox)以了解錯誤訊息和復原步驟。

276 276 


309* **`model`**:當您的生成提示未命名模型時,Claude Code 在任一顯示模式中使用定義的 `model`。請參閱[Claude Code 如何選擇隊友的模型](#specify-teammates-and-models)。309* **`model`**:當您的生成提示未命名模型時,Claude Code 在任一顯示模式中使用定義的 `model`。請參閱[Claude Code 如何選擇隊友的模型](#specify-teammates-and-models)。

310* **`disallowedTools`**:對於進程內隊友,Claude Code 會從隊友的工具集中移除定義的 `disallowedTools` 中的工具。即使該列表中列出了 `SendMessage` 及其添加的 Task tools,這些工具仍然可用。310* **`disallowedTools`**:對於進程內隊友,Claude Code 會從隊友的工具集中移除定義的 `disallowedTools` 中的工具。即使該列表中列出了 `SendMessage` 及其添加的 Task tools,這些工具仍然可用。

311* **`effort`**:對於進程內隊友,Claude Code 會依照 [frontmatter effort 規則](/docs/zh-TW/model-config#set-the-effort-level)應用定義的 [`effort`](/docs/zh-TW/sub-agents#supported-frontmatter-fields)。311* **`effort`**:對於進程內隊友,Claude Code 會依照 [frontmatter effort 規則](/docs/zh-TW/model-config#set-the-effort-level)應用定義的 [`effort`](/docs/zh-TW/sub-agents#supported-frontmatter-fields)。

312* **`autoCompactWindow`**:對於進程內隊友,Claude Code 會依照[該欄位的規則](/docs/zh-TW/sub-agents#subagent-auto-compact-window)應用定義的 [`autoCompactWindow`](/docs/zh-TW/sub-agents#supported-frontmatter-fields)。分割窗格隊友會忽略該欄位。需要 Claude Code v2.1.296 或更新版本。

312* **Body**:對於進程內隊友,Claude Code 將定義的 body 附加到其預設系統提示中作為額外指示。對於分割窗格隊友,Claude Code 使用 body 代替其預設系統提示。313* **Body**:對於進程內隊友,Claude Code 將定義的 body 附加到其預設系統提示中作為額外指示。對於分割窗格隊友,Claude Code 使用 body 代替其預設系統提示。

313* **`skills`**:Claude Code 在任一顯示模式中都不會將定義的 `skills` 應用於隊友。隊友從您的專案和使用者設定中載入 skills。314* **`skills`**:Claude Code 在任一顯示模式中都不會將定義的 `skills` 應用於隊友。隊友從您的專案和使用者設定中載入 skills。

314* **`mcpServers`**:對於分割窗格隊友,Claude Code 在[該欄位的規則](/docs/zh-TW/sub-agents#scope-mcp-servers-to-a-subagent)下應用定義的 `mcpServers`,這些規則涵蓋使用 `--agent` 啟動的工作階段。進程內隊友忽略該欄位,並從您的專案和使用者設定中載入 MCP servers。315* **`mcpServers`**:對於分割窗格隊友,Claude Code 在[該欄位的規則](/docs/zh-TW/sub-agents#scope-mcp-servers-to-a-subagent)下應用定義的 `mcpServers`,這些規則涵蓋使用 `--agent` 啟動的工作階段。進程內隊友忽略該欄位,並從您的專案和使用者設定中載入 MCP servers。

agent-view.md +12 −12

Details

26 快速開始26 快速開始

27</h2>27</h2>

28 28 

29本逐步解說涵蓋核心 agent view 迴圈:分派工作、觀看其列更新(Claude 正在工作)、查看以檢查並回覆,以及附加到完整對話。您分派的工作階段在關閉 agent view 後會繼續執行,因此您可以離開並稍後返回。29本逐步解說涵蓋核心 agent view 迴圈:分派工作、在 Claude 工作時觀看其列更新、查看以檢查並回覆,以及附加以檢視完整對話。您分派的工作階段在關閉 agent view 後會繼續執行,因此您可以離開並稍後返回。

30 30 

31<Steps>31<Steps>

32 <Step title="開啟 agent view">32 <Step title="開啟 agent view">


38 38 

39 如果您尚未接受該目錄的[工作區信任對話](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust),Claude Code 會在 agent view 開啟前顯示它,與 `claude` 顯示的對話相同。接受以儲存工作區的信任並繼續。如果您拒絕,Claude Code 會退出而不開啟 agent view。39 如果您尚未接受該目錄的[工作區信任對話](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust),Claude Code 會在 agent view 開啟前顯示它,與 `claude` 顯示的對話相同。接受以儲存工作區的信任並繼續。如果您拒絕,Claude Code 會退出而不開啟 agent view。

40 40 

41 Agent view 開啟,底部有輸入框,隨著工作階段啟動,表格會填入。隨時按 `Esc` 返回您的 shell;如果您透過背景化工作階段 `←` 開啟了 agent view,`Esc` 會改為返回該對話。您的工作階段在您離開時繼續執行,下次開啟 agent view 時會重新出現。41 Agent view 開啟,底部有輸入框,隨著工作階段啟動,表格會填入。按 `Esc` 返回您的 shell;如果您透過以 `←` 將工作階段移至背景來開啟 agent view,`Esc` 會改為返回該對話。您的工作階段在您離開時繼續執行,下次開啟 agent view 時會重新出現。

42 </Step>42 </Step>

43 43 

44 <Step title="分派工作階段">44 <Step title="分派工作階段">

45 輸入描述工作的提示並按 `Enter`。新的背景工作階段在該工作上啟動並顯示為一列,顯示它是否正在工作、等待您或已完成。新工作階段使用 agent view 標題中顯示的模型。[它啟動時所在的權限模式](#permission-mode-model-and-effort)取決於您如何開啟 agent view。45 輸入描述工作的提示詞並按 `Enter`。新的背景工作階段在該工作上啟動並顯示為一列,顯示它是否正在工作、等待您或已完成。新工作階段使用 agent view 標題中顯示的模型。[它啟動時所在的權限模式](#permission-mode-model-and-effort)取決於您如何開啟 agent view。

46 46 

47 您在此輸入的每個提示都會啟動自己的新工作階段。輸入另一個提示並按 `Enter` 會在第一個工作階段旁邊啟動第二個工作階段,而不是向其發送後續訊息。您可以以這種方式並行執行多個工作階段。47 您在此輸入的每個提示詞都會啟動自己的新工作階段。輸入另一個提示詞並按 `Enter` 會在第一個工作階段旁邊啟動第二個工作階段,而不是向其發送後續訊息。您可以以這種方式並行執行多個工作階段。

48 48 

49 每個工作階段獨立使用您的訂閱配額,因此在一次分派許多工作階段之前,請參閱[限制](#limitations)。49 每個工作階段獨立使用您的訂閱配額,因此在一次分派許多工作階段之前,請參閱[限制](#limitations)。

50 </Step>50 </Step>

51 51 

52 <Step title="查看和回覆">52 <Step title="查看和回覆">

53 使用箭頭鍵選擇一列,然後按 `Space` 開啟查看面板。它顯示工作階段的最新輸出或它正在等待的問題,而不是完整的文字記錄。輸入回覆並按 `Enter` 發送,無需離開 agent view。53 使用箭頭鍵選擇一列,然後按 `Space` 開啟查看面板。它顯示工作階段的最新輸出或它正在等待的問題,而不是完整的逐字稿。輸入回覆並按 `Enter` 發送,無需離開 agent view。

54 </Step>54 </Step>

55 55 

56 <Step title="附加和分離">56 <Step title="附加和分離">

57 在一列上按 `Enter` 或 `→` 以在需要完整對話時附加。工作階段接管終端作為完整的互動式 Claude Code 工作階段。在空提示上按 `←` 分離並返回表格。57 在一列上按 `Enter` 或 `→` 以在需要完整對話時附加。工作階段會接管終端機,成為完整的互動式 Claude Code 工作階段。在空白提示詞上按 `←` 分離並返回表格。

58 </Step>58 </Step>

59 59 

60 <Step title="帶入現有工作階段">60 <Step title="帶入現有工作階段">

61 這個步驟需要一個執行中的工作階段。如果您遵循了之前的步驟,您在此終端中沒有開啟的工作階段,因此請在另一個終端中開啟一個常規 `claude` 工作階段並先向其發送訊息。61 這個步驟需要一個執行中的工作階段。如果您遵循了之前的步驟,您在此終端機中沒有開啟的工作階段,因此請在另一個終端機中開啟一個一般 `claude` 工作階段並先向其發送訊息。

62 62 

63 要將您已開啟的工作階段移入 agent view,在其中執行 `/bg`,或在空提示上按 `←` 以在一個步驟中背景化工作階段並開啟 agent view。在沒有訊息的全新工作階段中,`/bg` 會要求您先發送訊息,而 `←` 可以立即運作。工作階段繼續執行並顯示為一列,與您分派的工作階段並排。63 要將您已開啟的工作階段移入 agent view,在其中執行 `/bg`,或在空白提示詞上按 `←` 以在一個步驟中將工作階段移至背景並開啟 agent view。在尚無訊息的全新工作階段中,`/bg` 會要求您先發送訊息,而 `←` 可以立即運作。工作階段繼續執行並顯示為一列,與您分派的工作階段並排。

64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67在常規 `claude` 工作階段內,提示頁尾的 `←` 提示會計算正在等待您的背景 agent 數量,例如 `← 2 agents`,當沒有任何 agent 需要輸入時會返回 `← for agents`。超過 99 的計數顯示為 `99+`。當終端獲得焦點時,計數大約每十秒刷新一次,當焦點返回時立即刷新。當計數移動時以及當 agent 完成時,它會短暫改變顏色,當背景工作階段完成且沒有任何工作階段需要您的輸入時,它會短暫顯示已完成的數量,例如 `← 2 done`。當啟用了 [`prefersReducedMotion` 設定](/docs/zh-TW/settings-reference#prefersreducedmotion)時,兩個閃爍都會關閉,並且在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中隱藏提示。67在一般 `claude` 工作階段內,提示詞頁尾的 `←` 提示會計算正在等待您的背景 agent 數量,例如 `← 2 agents`,當沒有任何 agent 需要輸入時會返回 `← for agents`。超過 99 的計數顯示為 `99+`。當終端機獲得焦點時,計數大約每十秒刷新一次,當焦點返回時立即刷新。當計數變動時以及當 agent 完成時,它會短暫改變顏色,而當背景工作階段完成且沒有任何工作階段需要您的輸入時,它會短暫顯示已完成的數量,例如 `← 2 done`。當啟用了 [`prefersReducedMotion` 設定](/docs/zh-TW/settings-reference#prefersreducedmotion)時,兩種閃爍都會關閉,並且在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中會隱藏此提示。

68 68 

69<h3 id="open-agent-view-by-default">69<h3 id="open-agent-view-by-default">

70 預設開啟 agent view70 預設開啟 agent view


74 74 

75<Steps>75<Steps>

76 <Step title="開啟設定">76 <Step title="開啟設定">

77 在常規 `claude` 工作階段中,執行 `/config` 並開啟**預設開啟 agents view**。若要跳過選單,直接設定 [`defaultToAgentsView`](/docs/zh-TW/settings-reference#defaulttoagentsview) 鍵:77 在一般 `claude` 工作階段中,執行 `/config` 並開啟 **Open agents view by default**。若要跳過選單,直接設定 [`defaultToAgentsView`](/docs/zh-TW/settings-reference#defaulttoagentsview) 鍵:

78 78 

79 ```text theme={null}79 ```text theme={null}

80 /config defaultToAgentsView=true80 /config defaultToAgentsView=true


92 </Step>92 </Step>

93</Steps>93</Steps>

94 94 

95當設定開啟時,若要啟動常規工作階段,請傳遞提示:`claude "fix the login test"`。若要關閉設定,在常規工作階段中或從 agent view 附加的工作階段中執行 `/config defaultToAgentsView=false`。95當設定開啟時,若要啟動一般工作階段,請傳遞提示詞:`claude "fix the login test"`。若要關閉設定,在一般工作階段中或從 agent view 附加的工作階段中執行 `/config defaultToAgentsView=false`。

96 96 

97<h2 id="monitor-sessions-with-agent-view">97<h2 id="monitor-sessions-with-agent-view">

98 使用 agent 檢視監控工作階段98 使用 agent 檢視監控工作階段


290 290 

291您按下 `←` 的來源列,在您使用方向鍵或滑鼠移動選擇後,名稱仍會保持粗體且不變暗,讓您能分辨自己來自哪個工作階段。291您按下 `←` 的來源列,在您使用方向鍵或滑鼠移動選擇後,名稱仍會保持粗體且不變暗,讓您能分辨自己來自哪個工作階段。

292 292 

293如果您按 `←` 時有工具正在執行,Claude Code 會等待它完成再移至背景,而 Claude 會在背景工作階段中繼續回應。再按一次 `←` 即可立即移至背景而不等待。當進行中的工作無法轉移到背景工作階段時,Claude Code 會先顯示 `Background this session?` 對話框,與 [`/background`](#from-inside-a-session) 相同。293如果您按 `←` 時有工具正在執行,Claude Code 會等待它完成再移至背景,而 Claude 會在背景工作階段中繼續回應。再按一次 `←` 即可立即移至背景而不等待。當進行中的背景工作無法轉移到背景工作階段時,Claude Code 會先顯示 `Background this session?` 對話框,與 [`/background`](#from-inside-a-session) 相同。

294 294 

295約十秒後,Claude Code 會不再等待,直接將工作階段移至背景,但以下這類情況除外:295約十秒後,Claude Code 會不再等待,直接將工作階段移至背景,但以下這類情況除外:

296 296 

amazon-bedrock.md +10 −10

Details

219 認證快取和解析逾時219 認證快取和解析逾時

220</h4>220</h4>

221 221 

222Claude Code 解析 AWS 預設認證提供者鏈一次,並將解析的認證保留在記憶體中。它會重複使用這些認證,直到它們過期前五分鐘,或在沒有過期時間時使用一小時,因此 SSO 支援的設定檔大約每個認證生命週期向 IAM Identity Center 要求一次認證。來自 API 的認證錯誤會清除快取,重試會解析新認證。需要 Claude Code v2.1.207 或更新版本。222Claude Code 解析 AWS 預設憑證提供者鏈一次,並將解析的憑證保留在記憶體中。它會重複使用這些憑證,直到它們過期前五分鐘,或在沒有過期時間時使用一小時,因此 SSO 支援的設定檔大約每個憑證生命週期向 IAM Identity Center 請求一次憑證。來自 API 的憑證錯誤會清除快取,重試會解析新憑證。

223 223 

224快取涵蓋此步驟開頭列出的所有憑證方法,除了 Amazon Bedrock API 金鑰(不使用提供者鏈)。若要改為在每個請求上解析鏈,請設定 [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/zh-TW/env-vars)。224快取涵蓋此步驟開頭列出的所有憑證方法,除了 Amazon Bedrock API 金鑰(不使用提供者鏈)。若要改為在每個請求上解析鏈,請設定 [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/zh-TW/env-vars)。

225 225 


276 276 

277`Expiration` 是選用的。當命令傳回有效的 ISO 8601 `Expiration` 時,Claude Code 會快取認證直到該時間前五分鐘。沒有它時,認證會快取一小時。277`Expiration` 是選用的。當命令傳回有效的 ISO 8601 `Expiration` 時,Claude Code 會快取認證直到該時間前五分鐘。沒有它時,認證會快取一小時。

278 278 

279當您設定 `awsCredentialExport` 而不設定 `awsAuthRefresh` 時,Claude Code 會直接使用匯出的認證,並在啟動時不重新解析 AWS 預設認證提供者鏈。需要 Claude Code v2.1.206 或更新版本。279當您設定 `awsCredentialExport` 而不設定 `awsAuthRefresh` 時,Claude Code 會直接使用匯出的憑證,並在啟動時不重新解析 AWS 預設憑證提供者鏈。

280 280 

281<h3 id="3-configure-claude-code">281<h3 id="3-configure-claude-code">

282 3. 設定 Claude Code282 3. 設定 Claude Code


285設定下列環境變數以啟用 Amazon Bedrock:285設定下列環境變數以啟用 Amazon Bedrock:

286 286 

287```bash theme={null}287```bash theme={null}

288# 啟用 Bedrock 整合288# Enable Bedrock integration

289export CLAUDE_CODE_USE_BEDROCK=1289export CLAUDE_CODE_USE_BEDROCK=1

290export AWS_REGION=us-east-1 # 如果您的 AWS 設定檔已設定區域,則為選用290export AWS_REGION=us-east-1 # optional if your AWS profile already sets a region

291 291 

292# 選用:覆寫小型/快速模型的 AWS 區域(Bedrock 和 Mantle)。292# Optional: Override the AWS region for the small/fast model (Bedrock and Mantle).

293# 在 Bedrock 上,沒有設定 ANTHROPIC_DEFAULT_HAIKU_MODEL293# On Bedrock, has no effect without ANTHROPIC_DEFAULT_HAIKU_MODEL

294# 或已棄用的 ANTHROPIC_SMALL_FAST_MODEL 時無效。294# or the deprecated ANTHROPIC_SMALL_FAST_MODEL set.

295export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2295export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

296 296 

297# 選用:覆寫 Bedrock 端點 URL 以用於自訂端點或閘道297# Optional: Override the Bedrock endpoint URL for custom endpoints or gateways

298# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com298# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

299```299```

300 300 


358* 若要對背景工作使用 Haiku,請將 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 設定為您帳戶中可用的模型 ID。358* 若要對背景工作使用 Haiku,請將 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 設定為您帳戶中可用的模型 ID。

359 359 

360<Warning>360<Warning>

361 Opus 模型的每個權杖價格高於 Sonnet 模型,因此不釘選主要模型的部署在更新至 v2.1.207 或更新版本後會以 Opus 費率計費。若要將 Sonnet 4.5 保留為主要模型,請將 `ANTHROPIC_MODEL` 設定為其完整模型 ID。使用 `ANTHROPIC_DEFAULT_SONNET_MODEL` 引導預設且不設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 的部署會將其引導的 Sonnet 模型保留為預設值。361 Opus 模型的每個 token 價格高於 Sonnet 模型,因此如果您不釘選主要模型,將會以 Opus 費率計費。若要使用 Sonnet 4.5 作為主要模型,請將 `ANTHROPIC_MODEL` 設定為其完整模型 ID。使用 `ANTHROPIC_DEFAULT_SONNET_MODEL` 引導預設且不設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 的部署會將其引導的 Sonnet 模型保留為預設值。

362</Warning>362</Warning>

363 363 

364在 v2.1.280 之前,Amazon Bedrock 上的主要模型預設為 Opus 5,`opus` 別名從 v2.1.219 解析為 Opus 5。在 v2.1.207 至 v2.1.218 上,Amazon Bedrock 上的主要模型預設為 Opus 4.8,`opus` 別名解析為 Opus 4.8。在 v2.1.207 之前,主要模型預設為 Sonnet 4.5,`opus` 別名解析為 Opus 4.6,背景工作始終使用主要模型。364在 v2.1.280 之前,Amazon Bedrock 上的主要模型預設為 Opus 5,`opus` 別名從 v2.1.219 解析為 Opus 5。在 v2.1.207 至 v2.1.218 上,Amazon Bedrock 上的主要模型預設為 Opus 4.8,`opus` 別名解析為 Opus 4.8。

365 365 

366若要進一步自訂模型,請使用下列其中一種方法:366若要進一步自訂模型,請使用下列其中一種方法:

367 367 

artifacts.md +1 −1

Details

188 188 

189您的[權限模式](/docs/zh-TW/permission-modes)決定了當發送的評論到達時 Claude 的行為:189您的[權限模式](/docs/zh-TW/permission-modes)決定了當發送的評論到達時 Claude 的行為:

190 190 

191* **Claude 自動回覆**:當您的權限模式允許 Claude 在不詢問您的情況下發佈回覆時,Claude 會讀取執行緒並回覆,並在評論要求變更時編輯成品。您會看到 `Auto-replied to comment thread on Artifact: <name>` 或 `Auto-edited Artifact: <name> in response to a comment thread`。191* **Claude 自動回覆**:如果您處於允許 Claude 在不詢問您的情況下發佈回覆的權限模式,Claude 會讀取執行緒並回覆。您會看到 `Auto-replied to comment thread on Artifact: <name>`。

192* **Claude 等待您**:在計畫模式外,當發佈回覆需要您的批准時,您會看到 `Comments are waiting on Artifact: <name>`。Claude 隨後會要求您批准讀取執行緒,然後再次批准發佈回覆。192* **Claude 等待您**:在計畫模式外,當發佈回覆需要您的批准時,您會看到 `Comments are waiting on Artifact: <name>`。Claude 隨後會要求您批准讀取執行緒,然後再次批准發佈回覆。

193* **Claude 在計畫模式中暫停**:您會看到 `Comments are waiting on Artifact: <name>`,Claude 不會回覆,直到您離開計畫模式並要求它讀取並回覆。193* **Claude 在計畫模式中暫停**:您會看到 `Comments are waiting on Artifact: <name>`,Claude 不會回覆,直到您離開計畫模式並要求它讀取並回覆。

194 194 

chrome.md +25 −25

Details

54</Note>54</Note>

55 55 

56<h2 id="get-started-in-the-cli">56<h2 id="get-started-in-the-cli">

57 在 CLI 中開始57 在 CLI 中開始使用

58</h2>58</h2>

59 59 

60<Steps>60<Steps>


65 claude --chrome65 claude --chrome

66 ```66 ```

67 67 

68 第一次搭配 Chrome 啟動時,Claude Code 會顯示一次性的對話框,介紹此整合並說明網站權限的運作方式。按 Enter 繼續。68 首次搭配 Chrome 啟動時,Claude Code 會顯示一次性的對話方塊,介紹此整合功能並說明網站權限的運作方式。按 Enter 繼續。

69 69 

70 若要在未來的工作階段中不使用旗標即啟用 Chrome,請參閱[預設啟用 Chrome](#enable-chrome-by-default)。70 若要在未來的工作階段中不使用旗標即可啟用 Chrome,請參閱[預設啟用 Chrome](#enable-chrome-by-default)。

71 </Step>71 </Step>

72 72 

73 <Step title="要求 Claude 使用瀏覽器">73 <Step title="請 Claude 使用瀏覽器">

74 此範例會導航到頁面、與其互動並回報其發現,全部在您的終端機或編輯器中完成:74 此範例會導覽至某個頁面、與其互動,並回報找到的內容,全部都在您的終端機或編輯器中完成:

75 75 

76 ```text wrap theme={null}76 ```text wrap theme={null}

77 Go to code.claude.com/docs, click on the search box,77 Go to code.claude.com/docs, click on the search box,

78 type "hooks", and tell me what results appear78 type "hooks", and tell me what results appear

79 ```79 ```

80 80 

81 如果 Claude Code 在執行瀏覽器操作前要求權限,請批准它。對話框以 `Claude in Chrome wants to` 開頭,並提供一個選項,可在此工作階段中允許該網站上的所有操作。Claude 會開啟新分頁並開始執行任務。81 如果 Claude Code 在執行瀏覽器動作前要求權限,請予以核准。該對話方塊以 `Claude in Chrome wants to` 開頭,並提供在此工作階段中允許該網站所有動作的選項。Claude 會開啟新分頁並開始執行任務。

82 </Step>82 </Step>

83</Steps>83</Steps>

84 84 

85隨時執行 `/chrome` 以檢查連線狀態、管理權限、重新連線擴充功能,或選擇要使用的已連線瀏覽器。當狀態面板顯示「狀態:已啟用」和「擴充功能:已安裝」時,表示整合正常運作。85隨時執行 `/chrome` 即可檢查連線狀態、管理權限、重新連接擴充功能,或選擇要使用哪個已連接的瀏覽器。當狀態面板顯示「狀態:已啟用」以及「擴充功能:已安裝」時,即表示整合功能正常運作。

86 86 

87如果連線了多個瀏覽器,您可以選擇 Claude 要使用哪一個。當瀏覽器操作在您做出選擇之前開始時,Claude 會提示您選擇一個。若之後要切換瀏覽器,請執行 `/chrome` 並選擇 **選擇瀏覽器…**。即使有其他瀏覽器連線,Claude 仍會持續使用您的選擇。87如果連接了多個瀏覽器,您可以選擇 Claude 要使用哪一個。若在您做出選擇之前就開始執行瀏覽器動作,Claude 會提示您選擇一個。若之後要切換瀏覽器,請執行 `/chrome` 並選取 **Select browser…**。即使有其他瀏覽器連接,Claude 也會持續使用您所選擇的瀏覽器。

88 88 

89對於 VS Code,請參閱 [VS Code 中的瀏覽器自動化](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)。89若為 VS Code,請參閱 [VS Code 中的瀏覽器自動化](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)。

90 90 

91<h3 id="install-the-extension-when-claude-asks">91<h3 id="install-the-extension-when-claude-asks">

92 在 Claude 詢問時安裝擴充功能92 在 Claude 要求時安裝擴充功能

93</h3>93</h3>

94 94 

95當 Claude 在互動式工作階段中需要使用您的瀏覽器,而 Claude Code 未偵測到擴充功能時,Claude Code 會顯示標題為「Claude 想要使用您的瀏覽器」的安裝提示。Claude Code 每個工作階段最多詢問一次。95當 Claude 在互動式工作階段中需要使用您的瀏覽器,而 Claude Code 未偵測到擴充功能時,Claude Code 會顯示標題為「Claude wants to use your browser」的安裝提示。Claude Code 每個工作階段最多詢問一次。

96 96 

97此提示提供三個選項:97該提示提供三個選項:

98 98 

99* **安裝擴充功能**:在您的瀏覽器中開啟擴充功能安裝頁面,並開始引導式設定。Claude Code 會等待安裝完成、連線擴充功能,並在同一個工作階段中啟用瀏覽器工具。連線就緒後,選擇「繼續使用瀏覽器工具」,Claude 就會在您的瀏覽器中繼續執行任務。您可以選擇「不使用瀏覽器工具繼續」以離開設定,稍後再使用 `/chrome` 完成。99* **Install extension**:在您的瀏覽器中開啟擴充功能安裝頁面,並開始引導式設定。Claude Code 會等待安裝完成、連接擴充功能,並在同一個工作階段中啟用瀏覽器工具。連線就緒後,選取「Continue with browser tools」,Claude 便會在您的瀏覽器中繼續執行任務。您可以選取「Continue without browser tools」離開設定,稍後再使用 `/chrome` 完成。

100* **暫時不要**:不使用瀏覽器工具繼續執行任務。Claude Code 可能會在之後的工作階段中再次詢問。100* **Not now**:在不使用瀏覽器工具的情況下繼續執行任務。Claude Code 可能會在之後的工作階段中再次詢問。

101* **不要再詢問**:在未來的工作階段中停止顯示此提示。您仍可隨時使用 `/chrome` 設定此整合。101* **Don't ask again**:在未來的工作階段中不再顯示此提示。您仍可隨時使用 `/chrome` 設定此整合功能。

102 102 

103有兩種受管 MCP 政策會關閉此提示:103有兩項受管 MCP 政策會關閉此提示:

104 104 

105* 如果您的組織使用 [`deniedMcpServers` 受管設定](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists)封鎖 `claude-in-chrome` MCP 伺服器,Claude Code 不會顯示安裝提示。105* 如果您的組織使用 [`deniedMcpServers` 受管設定](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists)封鎖 `claude-in-chrome` MCP 伺服器,Claude Code 不會顯示安裝提示。

106* 如果您的組織部署了 [`managed-mcp.json`](/docs/zh-TW/managed-mcp#exclusive-control-with-managed-mcp-json) 檔案,但未[在受管集合之外允許 Claude in Chrome](/docs/zh-TW/managed-mcp#allow-claude-in-chrome-alongside-the-managed-set),Claude Code 不會顯示安裝提示。106* 如果您的組織部署了 [`managed-mcp.json`](/docs/zh-TW/managed-mcp#exclusive-control-with-managed-mcp-json) 檔案,但未[允許 Claude in Chrome 與受管集合並存](/docs/zh-TW/managed-mcp#allow-claude-in-chrome-alongside-the-managed-set),Claude Code 不會顯示安裝提示。

107 107 

108<h3 id="enable-chrome-by-default">108<h3 id="enable-chrome-by-default">

109 預設啟用 Chrome109 預設啟用 Chrome

110</h3>110</h3>

111 111 

112若要連線 Chrome 而不必每次都傳遞 `--chrome`,請在 CLI 工作階段中執行 `/chrome` 並選擇 **預設啟用**。在 [VS Code 擴充功能](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)中,於提示詞輸入框中輸入 `/chrome` 並開啟 **預設啟用** 開關。兩者共用同一個設定,因此在任一處開啟,都會同時在 CLI 和 VS Code 中開啟。112若要連接 Chrome 而不必每次都傳入 `--chrome`,請在 CLI 工作階段中執行 `/chrome` 並選取**預設啟用**。在 [VS Code 擴充功能](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)中,於提示詞輸入框中輸入 `/chrome` 並開啟**預設啟用**開關。兩者共用同一個設定,因此在任一處開啟,都會同時對 CLI 與 VS Code 生效。

113 113 

114開啟此設定且使用 Claude Code v2.1.287 或更新版本時,每個 VS Code 工作階段會在啟動時連線到您的瀏覽器,因此 Claude 在您輸入 `@browser` 之前就能使用瀏覽器。在較早的版本中,或關閉此設定時,VS Code 工作階段會在您輸入 `@browser` 時才連線。114在開啟此設定且使用 Claude Code v2.1.287 或更新版本時,每個 VS Code 工作階段都會在啟動時連接到您的瀏覽器,因此 Claude 在您輸入 `@browser` 之前就能使用它。在較早的版本中,或在此設定關閉時,VS Code 工作階段會在您輸入 `@browser` 時才連接。

115 115 

116當 Chrome 未執行時,Claude Code 會正常啟動。在 v2.1.211 之前,若已啟用 Chrome 整合但 Chrome 未執行,啟動過程可能會停滯。116當 Chrome 未執行時,Claude Code 會正常啟動。在 v2.1.211 之前,若已啟用 Chrome 整合但 Chrome 未執行,啟動過程可能會停滯。

117 117 

118<Note>118<Note>

119 預設啟用 Chrome 會增加上下文使用量,因為瀏覽器工具及其指示始終會被載入。如果您注意到上下文消耗增加,請關閉此設定,並僅在需要時連線:在 CLI 中使用 `--chrome`,或在 VS Code 提示詞輸入框中輸入 [`@browser`](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)。119 預設啟用 Chrome 會增加上下文使用量,因為瀏覽器工具及其指示會一直處於載入狀態。如果您發現上下文消耗增加,請關閉此設定,僅在需要時連接:在 CLI 中使用 `--chrome`,或在 VS Code 提示詞輸入框中輸入 [`@browser`](/docs/zh-TW/vs-code#automate-browser-tasks-with-chrome)。

120</Note>120</Note>

121 121 

122<h3 id="manage-site-permissions">122<h3 id="manage-site-permissions">

123 管理網站權限123 管理網站權限

124</h3>124</h3>

125 125 

126網站級權限繼承自 Chrome 擴充功能。在 Chrome 擴充功能設定中管理權限,以控制 Claude 可以瀏覽、點擊和輸入的網站。在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中,當自動模式分類器本身批准對某網站的瀏覽器呼叫時,擴充功能會針對該呼叫略過其本身的逐網站檢查,除非您的權限規則拒絕 Claude in Chrome 存取任何網站。126網站層級的權限繼承自 Chrome 擴充功能。請在 Chrome 擴充功能設定中管理權限,以控制 Claude 可以在哪些網站上瀏覽、點擊和輸入。在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中,當自動模式分類器本身核准了對某個網站的瀏覽器呼叫時,擴充功能會針對該次呼叫略過其自身的逐網站檢查,除非您的權限規則拒絕 Claude in Chrome 存取任何網站。

127 127 

128<h3 id="permission-prompts-in-vs-code-sessions">128<h3 id="permission-prompts-in-vs-code-sessions">

129 VS Code 工作階段中的權限提示129 VS Code 工作階段中的權限提示

130</h3>130</h3>

131 131 

132在 VS Code 工作階段中,當 Claude Code 在瀏覽器操作前詢問您時,提示會以卡片形式顯示在聊天面板中。當該操作的目標是您尚未允許的網站時,卡片也會提供允許該網站的選項。132在 VS Code 工作階段中,當 Claude Code 在執行瀏覽器動作前進行詢問時,權限提示會以卡片形式顯示在聊天面板中。當動作的目標是您尚未允許的網站時,該卡片也會提供允許該網站的選項。

133 133 

134在因[預設啟用](#enable-chrome-by-default)已開啟而於啟動時連線到瀏覽器的工作階段中,在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,Claude Code 都會在您尚未允許的網站上執行瀏覽器操作前詢問您。在 Auto 和 Bypass permissions 模式下,此行為會持續到您在該工作階段中輸入 `@browser` 為止。134在因為開啟了[預設啟用](#enable-chrome-by-default)而於啟動時連接到您瀏覽器的工作階段中,在手動、自動編輯、自動以及略過權限模式下,Claude Code 都會在對您尚未允許的網站執行瀏覽器動作前詢問您。在自動與略過權限模式下,此行為會持續到您在該工作階段中輸入 `@browser` 為止。

135 135 

136<h3 id="browser-tools-in-plan-mode">136<h3 id="browser-tools-in-plan-mode">

137 plan mode 中的瀏覽器工具137 plan mode 中的瀏覽器工具

138</h3>138</h3>

139 139 

140在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中,Claude 錄製 GIF、開啟新分頁或執行捷徑之前,會出現權限提示。在互動式 CLI 工作階段中,如果[可使用略過權限模式](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode),且[功能旗標擷取](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)已關閉,這些呼叫會在無提示的情況下執行。140在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中,Claude 錄製 GIF、開啟新分頁或執行捷徑之前,會出現權限提示。在互動式 CLI 工作階段中,如果[略過權限模式可用](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)且[功能旗標擷取](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)已關閉,這些呼叫會在沒有提示的情況下執行。

141 141 

142`tabs_context_mcp` 呼叫在設定 `createIfEmpty` 時也會提示,包含上述任一操作的 `browser_batch` 呼叫亦同。142設定了 `createIfEmpty` 的 `tabs_context_mcp` 呼叫也會出現提示,包含上述任一動作的 `browser_batch` 呼叫亦同。

143 143 

144<h2 id="example-workflows">144<h2 id="example-workflows">

145 範例工作流程145 範例工作流程

Details

782 782 

783| 欄位 | 必需 | 說明 |783| 欄位 | 必需 | 說明 |

784| - | - | - |784| - | - | - |

785| `fail_closed_on_error` | 否 | 預設 `false`。支出強制執行在 Postgres 中斷時失敗開放,因此推論保持運作。設定 `true` 以失敗關閉:超過上限的開發者被阻止,但如果存放區無法到達,所有人都被阻止。需要 [`admin:`](#admin) 區塊:支出強制執行只在設定 `admin` 時執行,如果您在沒有 `admin` 的情況下設定此 `true`,gateway 會拒絕啟動。 |785| `fail_closed_on_error` | 否 | 預設為 `false`。Postgres 中斷時,支出強制執行會以開放方式失敗,讓推論持續運作。設為 `true` 則改為封閉式失敗:超過上限的開發人員會被封鎖,但若儲存區無法連線,其他所有人也會被封鎖。需要 [`admin:`](#admin) 區塊:支出強制執行只在設定了 `admin` 時才會執行,若您將此項設為 `true` 卻沒有該區塊,閘道會拒絕啟動。 |

786 786 

787<h3 id="pricing">787<h3 id="pricing">

788 `pricing`788 `pricing`


856`models` 區塊是選用的 admin 策劃模型清單,在 `/v1/models` 提供,用於按上游轉譯模型 ID。對於非美國 Amazon Bedrock 區域、Amazon Bedrock 佈建輸送量 ARN 和 Microsoft Foundry 部署名稱是必需的。856`models` 區塊是選用的 admin 策劃模型清單,在 `/v1/models` 提供,用於按上游轉譯模型 ID。對於非美國 Amazon Bedrock 區域、Amazon Bedrock 佈建輸送量 ARN 和 Microsoft Foundry 部署名稱是必需的。

857 857 

858```yaml theme={null}858```yaml theme={null}

859auto_include_builtin_models: true # false: 只公開下面的清單859auto_include_builtin_models: true # false: expose only the list below

860models:860models:

861 - id: claude-opus-4-8861 - id: claude-opus-4-8

862 label: Claude Opus 4.8862 label: Claude Opus 4.8

863 # description: 在顯示它的用戶端中顯示的選用文字863 # description: optional text shown in clients that surface it

864 upstream_model:864 upstream_model:

865 anthropic: claude-opus-4-8865 anthropic: claude-opus-4-8

866 bedrock: us.anthropic.claude-opus-4-8 # 或推論設定檔 ARN866 bedrock: us.anthropic.claude-opus-4-8 # or an inference-profile ARN

867 foundry: your-opus-deployment-name867 foundry: your-opus-deployment-name

868```868```

869 869 


1018 policies:1018 policies:

1019 - match: {}1019 - match: {}

1020 cli:1020 cli:

1021 # 模型存取(也在 /v1/messages 伺服器端強制執行)1021 # Model access (also enforced server-side at /v1/messages)

1022 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]1022 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

1023 enforceAvailableModels: true # Default 在清單內解析1023 enforceAvailableModels: true # Default resolves inside the list

1024 1024 

1025 # 權限原則1025 # Permission policy

1026 permissions:1026 permissions:

1027 deny:1027 deny:

1028 - "WebFetch"1028 - "WebFetch"

1029 - "Read(./.env)"1029 - "Read(./.env)"

1030 - "Read(./secrets/**)"1030 - "Read(./secrets/**)"

1031 disableBypassPermissionsMode: disable # 阻止 --dangerously-skip-permissions1031 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions

1032 allowManagedPermissionRulesOnly: true # 忽略使用者/專案權限規則1032 allowManagedPermissionRulesOnly: true # ignore user/project permission rules

1033 1033 

1034 # 推送到 CLI 程序的環境。DISABLE_UPDATES 阻止1034 # Environment pushed into the CLI process. DISABLE_UPDATES blocks

1035 # 背景和手動更新;DISABLE_AUTOUPDATER 只停止1035 # background and manual updates; DISABLE_AUTOUPDATER stops only

1036 # 背景更新。1036 # background updates.

1037 env:1037 env:

1038 DISABLE_UPDATES: "1" # 透過您自己的發佈固定版本1038 DISABLE_UPDATES: "1" # pin versions via your own distribution

1039 1039 

1040 # 組織範圍的 hook。Hook 命令在開發者機器上執行,不是1040 # Org-wide hooks. Hook commands run on developer machines, not the

1041 # gateway,因此路徑必須存在於原則中每個用戶端 OS 上。1041 # gateway, so the path must exist on every client OS in the policy.

1042 hooks:1042 hooks:

1043 PostToolUse:1043 PostToolUse:

1044 - matcher: "Edit|Write"1044 - matcher: "Edit|Write"


1072 1072 

1073gateway 的[遙測](#telemetry)設定推送 `OTEL_EXPORTER_OTLP_ENDPOINT`,因此設定 `telemetry.forward_to` 在每個互動式用戶端上觸發對話框。對話框保護開發者的機器免受受損或敵對 gateway 的影響,而不是保護組織免受開發者的影響。1073gateway 的[遙測](#telemetry)設定推送 `OTEL_EXPORTER_OTLP_ENDPOINT`,因此設定 `telemetry.forward_to` 在每個互動式用戶端上觸發對話框。對話框保護開發者的機器免受受損或敵對 gateway 的影響,而不是保護組織免受開發者的影響。

1074 1074 

1075[非互動式執行](/docs/zh-TW/server-managed-settings#security-approval-dialogs)(例如 `claude -p`、Agent SDK 工作階段,或 Claude Desktop Code 分頁中的工作階段)無法顯示對話框。它只會在該次執行中套用推送的設定,且不會將其記錄為已核准,因此開發者的下一個互動式工作階段仍會顯示對話框。在 v2.1.207 之前,非互動式執行會將設定儲存為已核准,之後的互動式工作階段都不會再為這些設定顯示對話框。1075[非互動式執行](/docs/zh-TW/server-managed-settings#security-approval-dialogs)(例如 `claude -p`、Agent SDK 工作階段,或 Claude Desktop Code 分頁中的工作階段)無法顯示對話方塊。它只會在該次執行中套用推送的設定,且不會將其記錄為已核准,因此開發人員的下一個互動式工作階段仍會顯示對話方塊。

1076 1076 

1077如果開發者拒絕,Claude Code 會退出該工作階段,而不是應用原則。當您推送新 hook 或任何觸發對話框的 env 變數到廣泛原則時,每個匹配的開發者因此在其互動式工作階段中看到對話框。執行中的互動式工作階段在下一個每小時輪詢時顯示它,否則它在開發者的下一個互動式啟動時出現。1077如果開發者拒絕,Claude Code 會退出該工作階段,而不是應用原則。當您推送新 hook 或任何觸發對話框的 env 變數到廣泛原則時,每個匹配的開發者因此在其互動式工作階段中看到對話框。執行中的互動式工作階段在下一個每小時輪詢時顯示它,否則它在開發者的下一個互動式啟動時出現。

1078 1078 


1500```yaml theme={null}1500```yaml theme={null}

1501load_test_mode:1501load_test_mode:

1502 enabled: true1502 enabled: true

1503 reply_tokens: 750 # 大約每個罐裝回覆攜帶多少 token 的文字1503 reply_tokens: 750 # roughly how many tokens of text each canned reply carries

1504 reply_seconds: 9.5 # 流式回覆需要多長時間1504 reply_seconds: 9.5 # how long a streamed reply takes

1505```1505```

1506 1506 

1507| 欄位 | 必需 | 說明 |1507| 欄位 | 必需 | 說明 |

Details

298 298 

299雲端工作階段支援產生文字輸出的[內建命令](/docs/zh-TW/commands)。只在終端介面中執行的命令,例如 `/plugin` 或 `/resume`,無法使用。在雲端工作階段中開啟選擇器或面板的命令行為不同:299雲端工作階段支援產生文字輸出的[內建命令](/docs/zh-TW/commands)。只在終端介面中執行的命令,例如 `/plugin` 或 `/resume`,無法使用。在雲端工作階段中開啟選擇器或面板的命令行為不同:

300 300 

301* **`/model`、`/effort`、`/color` 和 `/rename`**:將值作為引數傳遞,例如 `/model sonnet`,而不是開啟終端選擇器或滑塊。引數形式需要工作階段環境中的 Claude Code v2.1.205 或更新版本,並遵循每個命令的[可用性說明](/docs/zh-TW/commands#all-commands)。301* **`/model`、`/effort`、`/color` 和 `/rename`**:將值作為引數傳遞,例如 `/model sonnet`,而不是開啟終端機選擇器或滑塊。引數形式遵循每個命令的[可用性說明](/docs/zh-TW/commands#all-commands)。

302* **`/fast`**:當快速模式在[您的帳戶上可用](/docs/zh-TW/fast-mode#requirements)時,為工作階段切換[快速模式](/docs/zh-TW/fast-mode#use-fast-mode-in-cloud-sessions)。需要工作階段環境中的 Claude Code v2.1.271 或更新版本。302* **`/fast`**:當快速模式在[您的帳戶上可用](/docs/zh-TW/fast-mode#requirements)時,為工作階段切換[快速模式](/docs/zh-TW/fast-mode#use-fast-mode-in-cloud-sessions)。需要工作階段環境中的 Claude Code v2.1.271 或更新版本。

303* **`/config`**:在您的瀏覽器上的 claude.ai/code,開啟您設定的 Claude Code 部分,而不是設定值,命令後的文字(包括 `key=value`)會被忽略。若要變更雲端工作階段的設定,請設定環境上的[環境變數](/docs/zh-TW/cloud-environments#set-environment-variables),或在具有一個儲存庫的工作階段中,將該設定鍵提交到該儲存庫的 `.claude/settings.json`。[雲端工作階段中的設定](/docs/zh-TW/settings#settings-in-cloud-sessions)列出每個工作階段讀取的內容。303* **`/config`**:在您的瀏覽器上的 claude.ai/code,開啟您設定的 Claude Code 部分,而不是設定值,命令後的文字(包括 `key=value`)會被忽略。若要變更雲端工作階段的設定,請設定環境上的[環境變數](/docs/zh-TW/cloud-environments#set-environment-variables),或在具有一個儲存庫的工作階段中,將該設定鍵提交到該儲存庫的 `.claude/settings.json`。[雲端工作階段中的設定](/docs/zh-TW/settings#settings-in-cloud-sessions)列出每個工作階段讀取的內容。

304 304 


420* **隔離的虛擬機器**:每個工作階段在隔離的 Anthropic 管理的 VM 中執行。您的組織路由到[自託管環境](/docs/zh-TW/self-hosted-environments)的工作階段改為在您自己的基礎設施上執行,其中隔離是您的部署的責任420* **隔離的虛擬機器**:每個工作階段在隔離的 Anthropic 管理的 VM 中執行。您的組織路由到[自託管環境](/docs/zh-TW/self-hosted-environments)的工作階段改為在您自己的基礎設施上執行,其中隔離是您的部署的責任

421* <span id="default-allowed-domains" />**網路存取控制**:在 Anthropic 託管的環境中,網路存取預設受限,可以禁用。請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)以了解存取層級、[預設允許的網域](/docs/zh-TW/cloud-environments#default-allowed-domains),以及不通過允許清單的流量。在自託管環境中,您在自己的網路邊界限制工作階段出口。當以禁用的網路存取執行時,Claude Code 仍然可以與 Anthropic API 通訊,這可能允許資料離開 VM。421* <span id="default-allowed-domains" />**網路存取控制**:在 Anthropic 託管的環境中,網路存取預設受限,可以禁用。請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)以了解存取層級、[預設允許的網域](/docs/zh-TW/cloud-environments#default-allowed-domains),以及不通過允許清單的流量。在自託管環境中,您在自己的網路邊界限制工作階段出口。當以禁用的網路存取執行時,Claude Code 仍然可以與 Anthropic API 通訊,這可能允許資料離開 VM。

422* **憑證保護**:在 Anthropic 託管的環境中,git 憑證和簽署金鑰保持在沙箱外,代理伺服器使用限定範圍的憑證代表工作階段進行驗證。在自託管環境中,您的部署提供 git 憑證;請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)422* **憑證保護**:在 Anthropic 託管的環境中,git 憑證和簽署金鑰保持在沙箱外,代理伺服器使用限定範圍的憑證代表工作階段進行驗證。在自託管環境中,您的部署提供 git 憑證;請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)

423* **網路機密**:在 Pro 和 Max 計畫的 Anthropic 託管環境中,您[新增到雲端環境](/docs/zh-TW/cloud-environments#add-network-secrets)的金鑰同樣保持在沙箱外,並在符合的請求離開工作階段後附加到這些請求上。自託管環境沒有網路機密,Team 和 Enterprise 計畫目前也尚未提供423* **網路機密**:在 Anthropic 託管的環境中,您[新增到雲端環境](/docs/zh-TW/cloud-environments#add-network-secrets)的金鑰同樣保持在沙箱外,並在符合的請求離開工作階段後附加到這些請求上。自託管環境沒有網路機密

424* **安全分析**:程式碼在隔離的工作階段環境內進行分析和修改,然後建立 PR424* **安全分析**:程式碼在隔離的工作階段環境內進行分析和修改,然後建立 PR

425 425 

426<h2 id="troubleshooting">426<h2 id="troubleshooting">


472| 訊息 | 含義 |472| 訊息 | 含義 |

473| - | - |473| - | - |

474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code 已設定為使用第三方提供者。訊息會以您的設定所使用的標籤指出提供者名稱,例如 `Amazon Bedrock` 或 `Google Vertex AI`。請移除該提供者的設定,例如取消設定 `CLAUDE_CODE_USE_BEDROCK`,並使用 Anthropic 帳戶登入(`claude auth login`)。 |474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code 已設定為使用第三方提供者。訊息會以您的設定所使用的標籤指出提供者名稱,例如 `Amazon Bedrock` 或 `Google Vertex AI`。請移除該提供者的設定,例如取消設定 `CLAUDE_CODE_USE_BEDROCK`,並使用 Anthropic 帳戶登入(`claude auth login`)。 |

475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | `allow_remote_sessions` 組織政策已關閉。 |475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | 您組織的 `allow_remote_sessions` 政策已關閉;請參閱[Cloud sessions are disabled by your organization's policy](/docs/zh-TW/errors#cloud-sessions-are-disabled-by-your-organizations-policy)。如果訊息改為指出此工作階段正在使用的某個憑證,請參閱[Cloud sessions use your claude.ai login](/docs/zh-TW/errors#cloud-sessions-use-your-claude-ai-login)。 |

476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code 無法取得您組織的政策,因此會拒絕傳送,而不是假設允許雲端工作階段。請檢查您的網路連線並重試。 |476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code 尚未完成載入您組織的政策,因此會拒絕傳送,而不是假設允許雲端工作階段。請檢查您的網路連線並重試。 |

477| `Cloud sessions aren't available:` 後接原因 | 載入您組織的政策失敗,訊息的其餘部分說明失敗的方式。請針對其指出的原因採取行動;請參閱[Couldn't verify your organization's policy for cloud sessions](/docs/zh-TW/errors#couldnt-verify-your-organizations-policy-for-cloud-sessions)。 |

477| `Attaching to an existing cloud session is not enabled for your account.` | 您在未使用 `-p` 的情況下執行了 `--cloud <session-id>`。請使用 `claude -p "your message" --cloud <session-id>` 傳送訊息。 |478| `Attaching to an existing cloud session is not enabled for your account.` | 您在未使用 `-p` 的情況下執行了 `--cloud <session-id>`。請使用 `claude -p "your message" --cloud <session-id>` 傳送訊息。 |

478| `Session not found: <id>` | 該 ID 或 URL 與您可存取的任何工作階段都不相符。請對照工作階段的 claude.ai/code URL 進行檢查。 |479| `Session not found: <id>` | 該 ID 或 URL 與您可存取的任何工作階段都不相符。請對照工作階段的 claude.ai/code URL 進行檢查。 |

479| `cloud session <id> is archived and cannot accept new messages` | 該工作階段已封存。請改為啟動新的工作階段。 |480| `cloud session <id> is archived and cannot accept new messages` | 該工作階段已封存。請改為啟動新的工作階段。 |

Details

1525| - | - | - |1525| - | - | - |

1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) |1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) |

1527| `commands/*.md` | 除了 `name` 和 `paths` 之外的 skill 欄位 | [Skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) |1527| `commands/*.md` | 除了 `name` 和 `paths` 之外的 skill 欄位 | [Skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) |

1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Subagent frontmatter](/docs/zh-TW/sub-agents#supported-frontmatter-fields) |1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `autoCompactWindow`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Subagent frontmatter](/docs/zh-TW/sub-agents#supported-frontmatter-fields) |

1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/zh-TW/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/zh-TW/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/zh-TW/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/zh-TW/memory#rules-frontmatter-reference) |

1531 1531 

Details

291 291 

292AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。292AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。

293 293 

294預設別名 `fable`、`opus`、`sonnet` 和 `haiku` 解析為 Claude Code 針對 AWS 上的 Claude Platform 的內建預設值,這些值可能落後於最新版本。沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,`opus` 別名解析為 Opus 5.5。在 v2.1.280 之前,它解析為 v2.1.219 的 Opus 5,在 v2.1.207 之前解析為 Opus 4.8,在此之前解析為 Opus 4.7。294預設別名 `fable`、`opus`、`sonnet` 和 `haiku` 解析為 Claude Code 針對 AWS 上的 Claude Platform 的內建預設值,這些值可能落後於最新版本。沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,`opus` 別名解析為 Opus 5.5。在 v2.1.280 之前,它解析為 Opus 5(自 v2.1.219 起),以及 Opus 4.8(自 v2.1.207 起)。

295 295 

296如果您將 Claude Code 部署到團隊,請明確固定模型 ID,以便新版本不會一次移動所有人:296如果您將 Claude Code 部署到團隊,請明確固定模型 ID,以便新版本不會一次移動所有人:

297 297 

Details

347例如:347例如:

348 348 

349```text theme={null}349```text theme={null}

350此專案將付款 API 的 p95 延遲保持在 200 毫秒以下:分析、查詢和快取修復,以及隨之而來的依賴項升級,在 payments-api 儲存庫中。350此專案將付款 API 的 p95 延遲保持在 200 毫秒以下:分析、查詢和快取修復,以及隨之而來的相依套件升級,在 payments-api 儲存庫中。

351 351 

352- 從 main 分支建立分支,每個執行緒開啟一個草稿提取請求。352- 從 main 分支建立分支,每個執行緒開啟一個草稿 pull request。

353- 在您完成工作前,執行 `make test` 和 `make lint`,並在最終訊息中貼上摘要行。353- 在您完成工作前,執行 `make test` 和 `make lint`,並在最終訊息中貼上摘要行。

354- 如果您無法到達所需的東西,例如儲存庫、祕密、API 或連接器,請在第一條訊息中確切說明遺失的內容並停止。不要替代、模擬或猜測。354- 如果您無法到達所需的東西,例如儲存庫、祕密、API 或連接器,請在第一條訊息中確切說明遺失的內容並停止。不要替代、模擬或猜測。

355- 不要在沒有在執行緒中詢問我的情況下合併、強制推送或變更 CI 設定。355- 不要在沒有在執行緒中詢問我的情況下合併、強制推送或變更 CI 設定。


414 414 

415* Skill、subagent 和命令:將它們提交到您新增到專案的儲存庫,例如 `.claude/skills/<skill-name>/SKILL.md` 中的 skill。每個雲端執行緒複製專案中的每個儲存庫,並從每個儲存庫載入 `.claude/skills/`、`.claude/agents/` 和 `.claude/commands/`,因此提交到一個儲存庫的 skill 在每個雲端執行緒中可用。雲端執行緒也載入[您為 claude.ai 帳戶啟用的 skill](/docs/zh-TW/skills#skills-in-cowork-and-cloud-sessions)。415* Skill、subagent 和命令:將它們提交到您新增到專案的儲存庫,例如 `.claude/skills/<skill-name>/SKILL.md` 中的 skill。每個雲端執行緒複製專案中的每個儲存庫,並從每個儲存庫載入 `.claude/skills/`、`.claude/agents/` 和 `.claude/commands/`,因此提交到一個儲存庫的 skill 在每個雲端執行緒中可用。雲端執行緒也載入[您為 claude.ai 帳戶啟用的 skill](/docs/zh-TW/skills#skills-in-cowork-and-cloud-sessions)。

416* 外掛程式:在**專案設定 > 外掛程式**中新增它們;它們載入到每個新雲端執行緒。儲存庫在其 `.claude/settings.json` 中宣告的外掛程式[不會在雲端執行緒中載入](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)。416* 外掛程式:在**專案設定 > 外掛程式**中新增它們;它們載入到每個新雲端執行緒。儲存庫在其 `.claude/settings.json` 中宣告的外掛程式[不會在雲端執行緒中載入](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)。

417* MCP 伺服器:雲端執行緒從您的 claude.ai 帳戶上的連接器獲取其 MCP 工具,這些是您在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 或通過**專案設定 > 環境**中的**管理連接器**連結連接一次的 MCP 伺服器。每個雲端執行緒可以使用所有它們,無需每個專案的設定。專案對話本身沒有連接器,因此將需要連接器的工作作為雲端執行緒的任務傳送。在具有一個儲存庫的專案中,雲端執行緒也從該儲存庫的 [`.mcp.json`](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup) 載入 MCP 伺服器。[連接器如何到達 Claude Code](/docs/zh-TW/mcp#how-connectors-reach-claude-code) 列出雲端工作階段的規則和關閉連接器的設定。417* MCP 伺服器:雲端執行緒從您的 claude.ai 帳戶上的連接器獲取其 MCP 工具,這些是您在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 連接一次的 MCP 伺服器。每個雲端執行緒可以使用所有它們,無需每個專案的設定。專案對話本身沒有連接器,因此將需要連接器的工作作為雲端執行緒的任務傳送。在具有一個儲存庫的專案中,雲端執行緒也從該儲存庫的 [`.mcp.json`](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup) 載入 MCP 伺服器。[連接器如何到達 Claude Code](/docs/zh-TW/mcp#how-connectors-reach-claude-code) 列出雲端工作階段的規則和關閉連接器的設定。

418* 命令列工具和套件:在環境的[設定指令碼](/docs/zh-TW/cloud-environments#setup-scripts)中安裝它們。418* 命令列工具和套件:在環境的[設定指令碼](/docs/zh-TW/cloud-environments#setup-scripts)中安裝它們。

419 419 

420要查看執行中的雲端執行緒在 claude.ai/code 有哪些連接器,請開啟執行緒並從其訊息框旁邊的 **+** 功能表中選擇**連接器**。關閉連接器會將其從該執行緒中移除,並將其儲存為您的帳戶預設值,因此新執行緒和 claude.ai 聊天在您重新開啟它之前開始時沒有它。執行緒在您傳送給它的下一條訊息後取得您新增或重新連接的連接器。420要查看執行中的雲端執行緒在 claude.ai/code 有哪些連接器,請開啟執行緒並從其訊息框旁邊的 **+** 功能表中選擇**連接器**。關閉連接器會將其從該執行緒中移除,並將其儲存為您的帳戶預設值,因此新執行緒和 claude.ai 聊天在您重新開啟它之前開始時沒有它。執行緒在您傳送給它的下一條訊息後取得您新增或重新連接的連接器。


435| Project 指示 | Memory | [常設規則](#give-a-project-standing-context) 每個新執行緒接收 |435| Project 指示 | Memory | [常設規則](#give-a-project-standing-context) 每個新執行緒接收 |

436| Project 儲存庫 | Environment | 新執行緒克隆的儲存庫 |436| Project 儲存庫 | Environment | 新執行緒克隆的儲存庫 |

437| 雲端環境 | Environment | 新執行緒執行的 [雲端環境](#choose-an-environment-for-threads) |437| 雲端環境 | Environment | 新執行緒執行的 [雲端環境](#choose-an-environment-for-threads) |

438| Connectors | Environment | 管理 claude.ai connectors 執行緒獲取的連結 |

439| Plugins | Plugins | 加載到每個新執行緒中的 plugins |438| Plugins | Plugins | 加載到每個新執行緒中的 plugins |

440| Usage | Usage | 按執行緒和模型的 [令牌使用](#usage-and-cost) |439| Usage | Usage | 按執行緒和模型的 [令牌使用](#usage-and-cost) |

441| Memory | Memory | project 的 [記憶檔案](#give-a-project-standing-context) |440| Memory | Memory | project 的 [記憶檔案](#give-a-project-standing-context) |

Details

10 雲端環境適用於 [雲端工作階段](/docs/zh-TW/claude-code-on-the-web),該功能適用於 Pro、Max 和 Team 方案,以及具有 [premium seats 或 Chat + Claude Code seats](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) 的 Enterprise 使用者。10 雲端環境適用於 [雲端工作階段](/docs/zh-TW/claude-code-on-the-web),該功能適用於 Pro、Max 和 Team 方案,以及具有 [premium seats 或 Chat + Claude Code seats](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) 的 Enterprise 使用者。

11</Note>11</Note>

12 12 

13每個 [雲端工作階段](/docs/zh-TW/claude-code-on-the-web) 都在雲端環境中執行。您可以設定環境以允許或拒絕 [網路存取](#access-levels)、[為工作階段設定環境變數](#set-environment-variables),在 Pro 和 Max 方案上儲存工作階段可使用但無法看到的 [網路機密](#add-network-secrets),以及在 Claude 開始工作前執行 [設定指令碼](#setup-scripts)。13每個 [雲端工作階段](/docs/zh-TW/claude-code-on-the-web) 都在雲端環境中執行。您可以設定環境以允許或拒絕 [網路存取](#access-levels)、[為工作階段設定環境變數](#set-environment-variables)、儲存工作階段可使用但無法看到的 [網路機密](#add-network-secrets),以及在 Claude 開始工作前執行 [設定指令碼](#setup-scripts)。

14 14 

15相同的環境適用於您啟動雲端工作階段的任何地方:[Desktop 應用程式](/docs/zh-TW/desktop)、[Claude 行動應用程式](/docs/zh-TW/mobile)、您的瀏覽器在 [claude.ai/code](https://claude.ai/code)、終端機搭配 [`claude --cloud`](/docs/zh-TW/claude-code-on-the-web#from-terminal-to-cloud)、[routines](/docs/zh-TW/routines) 和 [Claude Tag](https://claude.com/docs/claude-tag/overview)。這些使用介面中的每一個也可以路由到 [自託管環境](/docs/zh-TW/self-hosted-environments)。[可用性和限制](/docs/zh-TW/self-hosted-environments#availability-and-limitations) 涵蓋當 Claude Tag 工作階段在其中執行時 Claude 尚無法使用的內容。15相同的環境適用於您啟動雲端工作階段的任何地方:[Desktop 應用程式](/docs/zh-TW/desktop)、[Claude 行動應用程式](/docs/zh-TW/mobile)、您的瀏覽器在 [claude.ai/code](https://claude.ai/code)、終端機搭配 [`claude --cloud`](/docs/zh-TW/claude-code-on-the-web#from-terminal-to-cloud)、[routines](/docs/zh-TW/routines) 和 [Claude Tag](https://claude.com/docs/claude-tag/overview)。這些使用介面中的每一個也可以路由到 [自託管環境](/docs/zh-TW/self-hosted-environments)。[可用性和限制](/docs/zh-TW/self-hosted-environments#availability-and-limitations) 涵蓋當 Claude Tag 工作階段在其中執行時 Claude 尚無法使用的內容。

16 16 


44 設定您的環境44 設定您的環境

45</h2>45</h2>

46 46 

47您可以從環境選擇器建立、編輯和封存環境,您可以在完成 [Web 快速入門](/docs/zh-TW/web-quickstart)後於 [claude.ai/code](https://claude.ai/code) 存取環境選擇器,或從 [Desktop 應用程式](/docs/zh-TW/desktop#cloud-sessions)的提示詞輸入框中存取。您建立的環境是您帳戶的個人環境;由擁有者建立的[共用環境](#organization-shared-environments)會出現在相同的選擇器中。請參閱[已安裝的工具](#installed-tools)以了解無需任何設定即可使用的工具。47在 [claude.ai/code](https://claude.ai/code) 上開始新工作階段的畫面中,從訊息框下方的環境選擇器新增、編輯和封存環境。若要前往該畫面,請完成 [Web 入門設定](/docs/zh-TW/web-quickstart)。若為 Desktop 應用程式,請參閱[雲端工作階段](/docs/zh-TW/desktop#cloud-sessions)。您建立的環境是您帳戶的個人環境;由擁有者建立的[共用環境](#organization-shared-environments)會與它們一起出現在選擇器中。請參閱[已安裝的工具](#installed-tools)以了解無需任何設定即可使用的工具。

48 

49選擇器只會在您傳送新工作階段的第一則訊息之前出現。若要編輯您自己執行中雲端工作階段的環境,請選擇頂端工作階段標題後方的插入號,然後選擇**編輯雲端環境**。

48 50 

49<Steps>51<Steps>

50 <Step title="開啟環境選擇器">52 <Step title="開啟環境選擇器">

51 在 [claude.ai/code](https://claude.ai/code) 上,選擇顯示目前環境名稱的雲端圖示,位於訊息框上方的列中。選擇器沒有設定頁面或直接 URL。53 在新工作階段畫面上,選擇訊息框下方那一列中的第一個控制項。

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="環境選擇器在 claude.ai/code 的訊息框上方開啟。顯示環境名稱「預設」的雲端按鈕位於訊息框上方的列中。開啟的選單列出本機列(僅顯示「下載」和「Desktop」標籤)、雲端區段(其中「預設」環境被選中並顯示核取記號,滑鼠懸停時顯示設定齒輪圖示)、「新增雲端環境」選項,以及 Remote Control 區段(包含設定說明)。" width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>54 </Step>

57 55 

58 <Step title="新增或編輯環境">56 <Step title="新增或編輯環境">

59 選擇**雲端**以列出您的環境。然後選擇**新增雲端環境**,或將滑鼠懸停在現有環境上,然後選擇右側出現的設定圖示。57 * **新增環境**:選擇選單底部的**新環境**以開啟**新環境**對話框。填寫表單並選擇**新增環境**。您的新工作階段接著會使用您新增的環境。

58 * **編輯環境**:在**雲端**下找到其列。如果**雲端**是單一列,請選擇它以開啟清單。如果您的環境未列在**雲端**下,請選擇該標題下的**更多**列。將滑鼠懸停在環境的列上,然後選擇其右側出現的設定圖示以開啟其對話框。

60 59 

61 對話框包括名稱、網路存取層級、環境變數和設定指令碼。當您在 Pro 或 Max 方案上編輯現有的雲端環境時,對話框還包括[網路機密](#add-network-secrets)。60 對話框包括名稱、網路存取層級、環境變數和設定指令碼。若要儲存工作階段可使用但無法看到的金鑰,請參閱[新增網路機密](#add-network-secrets)。

62 

63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="新增雲端環境對話框。名稱欄位,預留位置為「預設」;網路存取選擇器設定為「信任」,並包含網路政策和存取層級的連結;環境變數框顯示 .env 格式的預留位置文字,並附註值對使用該環境的任何人都可見;設定指令碼框描述為 Bash 指令碼,在新工作階段啟動時執行,在 Claude Code 啟動前執行;以及「取消」和「建立環境」按鈕。" width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

65 </Frame>

66 </Step>61 </Step>

67</Steps>62</Steps>

68 63 


91 86 

92雲端工作階段在啟動時也會自行設定一些變數。對於 [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/zh-TW/claude-code-on-the-web#manage-context),工作階段設定的值會覆寫您在此新增的值,因此在此新增該鍵沒有效果。87雲端工作階段在啟動時也會自行設定一些變數。對於 [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/zh-TW/claude-code-on-the-web#manage-context),工作階段設定的值會覆寫您在此新增的值,因此在此新增該鍵沒有效果。

93 88 

94使用該環境的任何人都可以讀取這些值。在 Pro 和 Max 方案上,對於 agent 代理伺服器可以附加到請求的金鑰,請改用[網路機密](#add-network-secrets)。[永遠不會取得機密的請求](#requests-that-never-get-the-credential)列在那裡。89使用該環境的任何人都可以讀取這些值。在 Anthropic 託管的環境中,對於 agent 代理伺服器可以附加到請求的金鑰,請改用[網路機密](#add-network-secrets)。[永遠不會取得機密的請求](#requests-that-never-get-the-credential)列在那裡。

95 90 

96<span id="add-api-credentials" />91<span id="add-api-credentials" />

97 92 


101 96 

102網路機密是您儲存在雲端環境上的 API 金鑰或 token,以便 Claude 可以從環境中的任何工作階段呼叫該 API,而無需看到金鑰。Anthropic 的 agent 代理伺服器會在每個請求離開工作階段的 VM 後,將金鑰新增到您列出的主機的請求中,因此金鑰本身始終保留在 VM 之外。97網路機密是您儲存在雲端環境上的 API 金鑰或 token,以便 Claude 可以從環境中的任何工作階段呼叫該 API,而無需看到金鑰。Anthropic 的 agent 代理伺服器會在每個請求離開工作階段的 VM 後,將金鑰新增到您列出的主機的請求中,因此金鑰本身始終保留在 VM 之外。

103 98 

104網路機密在 Pro 和 Max 方案上可用。它們在 Team 或 Enterprise 方案上尚不可用,因此**網路機密**區段不會出現在這些方案的環境對話框中。99網路機密在 Pro、Max、Team 和 Enterprise 方案上可用。若要確認您是否可以自行新增,請參閱[需求](#requirements)。

105 100 

106<h4 id="requirements">101<h4 id="requirements">

107 需求102 需求


109 104 

110這些需求決定您是否可以新增機密,以及 agent 代理伺服器在新增後是否可以使用它:105這些需求決定您是否可以新增機密,以及 agent 代理伺服器在新增後是否可以使用它:

111 106 

112* **角色**:您的 claude.ai 組織中的組織管理員角色107* **角色**:在 Pro、Max 和 Team 方案上,無論您的角色為何,都可以在自己的環境上新增和刪除機密。在 Team 和 Enterprise 上,擁有者在您的 claude.ai 組織中持有組織管理員角色,管理員則沒有,這會改變您在以下情況中看到的內容:

113 * 在 Team 和 Enterprise 上,擁有者持有它,管理員沒有108 * **您在 Enterprise 上的自有環境**:擁有組織管理員角色時,您可以新增和刪除機密。若沒有該角色,**網路機密**區段會在「只有組織管理員可以新增或刪除網路機密」註記下列出機密,且沒有**新增機密**或刪除按鈕。請擁有者將機密新增到[共用環境](#organization-shared-environments),然後在那裡執行您的工作階段

114 * 在 Pro 和 Max 上,您在自己的組織中持有它109 * **共用環境**:擁有者從管理設定[新增和刪除其機密](#add-a-credential)。若沒有組織管理員角色,請擁有者新增機密,因為該環境的對話框沒有**網路機密**區段

110 * **您在 Team 上的自有環境**:若沒有組織管理員角色,**新增機密**會開啟只接受一個主機的[較簡短表單](#add-a-secret-without-the-role)

115* **環境類型**:已存在的 Anthropic 託管雲端環境。[自託管環境](/docs/zh-TW/self-hosted-environments)沒有網路機密111* **環境類型**:已存在的 Anthropic 託管雲端環境。[自託管環境](/docs/zh-TW/self-hosted-environments)沒有網路機密

116* **API 可達性**:API 接受來自網際網路的連線,因為請求來自 Anthropic 的網路112* **API 可達性**:API 接受來自網際網路的連線,因為請求來自 Anthropic 的網路

117* **加密金鑰**:如果您的組織使用客戶管理的加密金鑰,您無法儲存網路機密113* **加密金鑰**:如果您的組織使用客戶管理的加密金鑰,您無法儲存網路機密


122 118 

123您一次新增一個機密,新增後無法編輯機密。若要變更機密的主機或值,請刪除它並再次新增。119您一次新增一個機密,新增後無法編輯機密。若要變更機密的主機或值,請刪除它並再次新增。

124 120 

121若要將機密新增到[共用環境](#organization-shared-environments),請從[管理設定](https://claude.ai/admin-settings)中的**雲端環境**頁面開啟該環境進行編輯,然後從**網路機密**區段繼續步驟 1。如果您使用 Team 方案且未持有[組織管理員角色](#requirements),請在您自己的環境上執行步驟 1,然後[填寫較簡短的表單](#add-a-secret-without-the-role)。

122 

125<Steps>123<Steps>

126 <Step title="開啟環境的網路機密">124 <Step title="開啟環境的網路機密">

127 在 [claude.ai/code](https://claude.ai/code) [開啟環境進行編輯](#configure-your-environment)。在**編輯環境**對話框中,找到**網路機密**區段。您會看到環境上已有的機密,每個都顯示它適用的主機。125 在 [claude.ai/code](https://claude.ai/code) [開啟環境進行編輯](#configure-your-environment)。在**編輯雲端環境**對話框中,找到**網路機密**區段。您會看到環境上已有的機密,每個都顯示它適用的主機。

128 </Step>126 </Step>

129 127 

130 <Step title="新增機密">128 <Step title="新增機密">

131 選擇**新增機密**並填寫表單。保留預設的**憑證類型** **Bearer**,用於在請求標頭中傳輸的 API 金鑰,並填寫這些欄位:129 選擇**新增機密**並填寫表單。保留預設的**機密類型** **Bearer**,用於在請求標頭中傳輸的 API 金鑰,並填寫這些欄位:

132 130 

133 * **名稱**:機密的標籤,例如 `Internal billing API`131 * **名稱**:機密的標籤,例如 `Internal billing API`

134 * **允許的網站**:API 的主機,例如 `api.example.com`。前導 `*.` 符合每個子網域132 * **允許的網站**:API 的主機,例如 `api.example.com`。前導 `*.` 符合每個子網域

135 * **自訂標頭**:標頭的一列,該標頭攜帶金鑰。該列以 `Authorization` 作為標頭的**名稱**和 `Bearer` 作為其**前綴**開始;將金鑰本身貼上為**值**。對於採用裸值的標頭(如 `X-Api-Key`),變更名稱並清除前綴133 * **自訂標頭**:標頭的一列,該標頭攜帶金鑰。該列以 `Authorization` 作為標頭的**名稱**和 `Bearer` 作為其**前綴**開始;將金鑰本身貼上為**值**。對於採用裸值的標頭(如 `X-Api-Key`),變更名稱並清除前綴

136 134 

137 對於以其他方式進行身分驗證的 API,請選擇不同的**憑證類型**。清單與 [Claude Tag](https://claude.com/docs/claude-tag/overview)(Team 和 Enterprise 方案的 Slack 整合)為[連線](https://claude.com/docs/claude-tag/admins/add-connections)提供的清單相同。135 對於以其他方式進行身分驗證的 API,請選擇不同的**機密類型**。清單與 [Claude Tag](https://claude.com/docs/claude-tag/overview)(Team 和 Enterprise 方案的 Slack 整合)為[連線](https://claude.com/docs/claude-tag/admins/add-connections)提供的清單相同。

138 </Step>136 </Step>

139 137 

140 <Step title="儲存機密">138 <Step title="儲存機密">

141 選擇**連線**。機密連同其主機出現在清單中,無需對話框的**儲存變更**按鈕即已儲存。儲存後,您無法再次檢視該值。139 選擇**新增**。機密連同其主機出現在清單中,無需對話框的**儲存變更**按鈕即已儲存。儲存後,您無法再次檢視該值。

142 </Step>140 </Step>

143</Steps>141</Steps>

144 142 

145若要確認機密有效,請在環境中啟動工作階段並要求 Claude 呼叫 API,例如使用 `curl`。API 的回應就像金鑰在請求中一樣,金鑰不會出現在工作階段的環境變數或任何檔案中。如果清單將機密標記為**未傳送**,其下方的註記會說明原因和解決方法。兩個主機重疊但不完全相符的機密不會獲得標記,agent 代理伺服器只會傳送其中一個。143若要確認機密有效,請在環境中啟動工作階段並要求 Claude 呼叫 API,例如使用 `curl`。API 的回應就像金鑰在請求中一樣,金鑰不會出現在工作階段的環境變數或任何檔案中。如果清單將機密標記為**未傳送**,其下方的註記會說明原因和解決方法。兩個主機重疊但不完全相符的機密不會獲得標記,agent 代理伺服器只會傳送其中一個。

146 144 

145<h4 id="add-a-secret-without-the-role">

146 在 Team 方案上沒有組織管理員角色時新增機密

147</h4>

148 

149如果您使用 Team 方案且未持有[組織管理員角色](#requirements),**新增機密**表單只接受一個主機的一個機密。在您環境的[**網路機密**區段](#add-a-credential)中選擇**新增機密**,填寫這些欄位,然後選擇表單的**新增機密**按鈕:

150 

151* **主機**:取得機密的單一主機,例如 `api.example.com`。表單不接受 `*.` 萬用字元

152* **名稱**:機密的選用標籤

153* **機密類型**:**Token** 用於在請求標頭中傳輸的金鑰,或選擇**使用者名稱和密碼**。若為 token,請將金鑰貼上為**值**

154 

147<h4 id="which-requests-get-the-credential">155<h4 id="which-requests-get-the-credential">

148 哪些請求會取得機密156 哪些請求會取得機密

149</h4>157</h4>


175 封存環境183 封存環境

176</h3>184</h3>

177 185 

178若要封存您自己的環境之一,請開啟它進行編輯並選擇**封存**。擁有者從管理設定中的**雲端環境**頁面封存[共用環境](#organization-shared-environments)。您無法刪除環境,只能封存它。186若要封存您自己的環境之一,請開啟它進行編輯,選擇**封存環境**,然後確認。如果該環境已[與您的組織共用](#organization-shared-environments),則改由擁有者從[管理設定](https://claude.ai/admin-settings)中的**雲端環境**頁面封存,因此除非您本身是擁有者,否則請詢問擁有者。您無法刪除環境,只能封存它。

179 187 

180封存會影響新工作階段,而不是執行中的工作階段:188封存會影響新工作階段,而不是執行中的工作階段:

181 189 


199 207 

200擁有者在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 分別選擇組織的[預設環境](#the-default-environment)。208擁有者在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 分別選擇組織的[預設環境](#the-default-environment)。

201 209 

202每個成員在共用環境中的工作階段都會讀取其變數,因此不要在其中包含機密。[網路機密](#add-network-secrets)(為工作階段提供它們無法讀取的金鑰)在 Team 或 Enterprise 方案上尚不可用。210若要為共用環境的工作階段提供它們無法讀取的金鑰,請在**雲端環境**頁面編輯該環境時新增[網路機密](#add-network-secrets)。不要在其變數中包含機密,因為每個成員的工作階段都會讀取它們。

203 211 

204<h3 id="set-the-environment-a-claude-tag-channel-uses">212<h3 id="set-the-environment-a-claude-tag-channel-uses">

205 設定 Claude Tag 頻道使用的環境213 設定 Claude Tag 頻道使用的環境


216 224 

217每個環境設定一個網路存取層級,控制其工作階段可以進行的出站連線。預設層級 **Trusted** 允許套件登錄和其他[允許清單中的網域](#default-allowed-domains);**Custom** 採用您自己的網域清單。225每個環境設定一個網路存取層級,控制其工作階段可以進行的出站連線。預設層級 **Trusted** 允許套件登錄和其他[允許清單中的網域](#default-allowed-domains);**Custom** 採用您自己的網域清單。

218 226 

219若要變更環境的網路存取,[開啟它進行編輯](#configure-your-environment)並在對話框中使用 **Network access** 選擇器。[共用環境](#organization-shared-environments)在該處以唯讀方式開啟,因此擁有者改為從[管理設定](https://claude.ai/admin-settings)中的 **Cloud environments** 頁面變更其網路存取。開啟選擇器的雲端圖示出現在[預設環境](#the-default-environment)下列出的應用程式使用介面上,以及在 [routine 編輯器](/docs/zh-TW/routines#environments-and-network-access)中;個人環境在您的 claude.ai 帳戶設定中沒有單獨的頁面。227若要變更環境的網路存取,[開啟它進行編輯](#configure-your-environment)並在對話框中使用 **Network access** 選擇器。[共用環境](#organization-shared-environments)在該處以唯讀方式開啟,因此擁有者改為從[管理設定](https://claude.ai/admin-settings)中的 **Cloud environments** 頁面變更其網路存取。開啟選擇器的控制項出現在[預設環境](#the-default-environment)下列出的應用程式使用介面上,以及在 [routine 編輯器](/docs/zh-TW/routines#environments-and-network-access)中;個人環境在您的 claude.ai 帳戶設定中沒有單獨的頁面。

220 228 

221當您變更 Anthropic 託管環境的網路存取時,其現有工作階段在約一分鐘內遵循新設定,用於通過工作階段的[網路允許清單](#access-levels)的請求。您不需要啟動新的工作階段。229當您變更 Anthropic 託管環境的網路存取時,其現有工作階段在約一分鐘內遵循新設定,用於通過工作階段的[網路允許清單](#access-levels)的請求。您不需要啟動新的工作階段。

222 230 


274* **Git 憑證**:VM 內的 git 用戶端使用範圍憑證,代理伺服器驗證並將其交換為您的實際 GitHub token。282* **Git 憑證**:VM 內的 git 用戶端使用範圍憑證,代理伺服器驗證並將其交換為您的實際 GitHub token。

275* **API 請求**:來自內建 GitHub 工具的請求,以及來自 [`proxy-injected` 預留位置](#work-with-github-issues-and-pull-requests)下的 `gh` 的請求,使用您的真實憑證進行。283* **API 請求**:來自內建 GitHub 工具的請求,以及來自 [`proxy-injected` 預留位置](#work-with-github-issues-and-pull-requests)下的 `gh` 的請求,使用您的真實憑證進行。

276* **推送限制**:代理伺服器會拒絕分支刪除,以及推送分支以外的任何內容(例如標籤)。它不限制推送可以更新哪些分支。若要進行此限制,請在 GitHub 上使用分支保護規則或規則集。284* **推送限制**:代理伺服器會拒絕分支刪除,以及推送分支以外的任何內容(例如標籤)。它不限制推送可以更新哪些分支。若要進行此限制,請在 GitHub 上使用分支保護規則或規則集。

277* **儲存庫範圍**:代理伺服器僅為附加到工作階段的儲存庫提供 GitHub API 請求服務。針對其他儲存庫的 API 請求會收到 403,其訊息以 `GitHub access to` 開頭並包含 `is not enabled for this session`。285* **儲存庫範圍**:代理伺服器為附加到工作階段的儲存庫提供 GitHub API 請求服務。針對其他儲存庫的 API 請求會收到 403,其訊息以 `GitHub access to` 開頭並包含 `is not enabled for this session`。當儲存庫未附加時,您透過 `github.com/{owner}/{repo}/archive/` 或 `codeload.github.com` URL 擷取的原始碼封存檔也會收到相同的 403,即使是公開儲存庫也一樣。

278* **GraphQL 限制**:代理伺服器會以 403 拒絕對 GitHub GraphQL 端點的請求,其訊息以 `GitHub GraphQL is not available from Claude Code sessions` 開頭,並指出 REST 備援 `gh api repos/{owner}/{repo}/...`。使用 GraphQL 的 `gh` 子命令(例如 `gh pr` 和 `gh issue`)會收到相同的 403。限制適用於通過代理伺服器的每個請求,無論您提供的憑證如何,因此您設定的 `GH_TOKEN` 會收到相同的 403。Claude 無法通過代理伺服器到達僅存在於 GraphQL 中的 GitHub API,例如 Projects v2。286* **GraphQL 限制**:代理伺服器會以 403 拒絕對 GitHub GraphQL 端點的請求,其訊息以 `GitHub GraphQL is not available from Claude Code sessions` 開頭,並指出 REST 備援 `gh api repos/{owner}/{repo}/...`。使用 GraphQL 的 `gh` 子命令(例如 `gh pr` 和 `gh issue`)會收到相同的 403。限制適用於通過代理伺服器的每個請求,無論您提供的憑證如何,因此您設定的 `GH_TOKEN` 會收到相同的 403。Claude 無法通過代理伺服器到達僅存在於 GraphQL 中的 GitHub API,例如 Projects v2。

279 287 

280來自公開儲存庫的已提交檔案通過 `raw.githubusercontent.com` 到達,[安全代理伺服器](#security-proxy)改為處理。該網域在預設[Trusted 清單](#default-allowed-domains)中,因此除非環境的[存取層級](#access-levels)排除它,否則這些檔案保持可到達。288來自公開儲存庫的已提交檔案通過 `raw.githubusercontent.com` 到達,[安全代理伺服器](#security-proxy)改為處理。該網域在預設[Trusted 清單](#default-allowed-domains)中,因此除非環境的[存取層級](#access-levels)排除它,否則這些檔案保持可到達。


318| 僅在您的使用者設定中啟用的外掛程式 | 否 | 使用者範圍的 `enabledPlugins` 位於您機器上的 `~/.claude/settings.json` 中 |326| 僅在您的使用者設定中啟用的外掛程式 | 否 | 使用者範圍的 `enabledPlugins` 位於您機器上的 `~/.claude/settings.json` 中 |

319| 您使用 `claude mcp add` 在預設本機範圍或使用者範圍新增的 MCP 伺服器 | 否 | 這些寫入您機器上的 `~/.claude.json`,不是儲存庫。使用 `claude mcp add --scope project` 新增伺服器,它會寫入儲存庫的 [`.mcp.json`](/docs/zh-TW/mcp#project-scope),並提交該檔案。具有一個儲存庫的工作階段會載入它 |327| 您使用 `claude mcp add` 在預設本機範圍或使用者範圍新增的 MCP 伺服器 | 否 | 這些寫入您機器上的 `~/.claude.json`,不是儲存庫。使用 `claude mcp add --scope project` 新增伺服器,它會寫入儲存庫的 [`.mcp.json`](/docs/zh-TW/mcp#project-scope),並提交該檔案。具有一個儲存庫的工作階段會載入它 |

320| 您儲存庫的 `.claude/settings.json` `env` 區塊中的傳輸變數,例如 `NODE_EXTRA_CA_CERTS` 和[mTLS 用戶端憑證變數](/docs/zh-TW/network-config#mtls-authentication) | 否 | 代管環境管理工作階段的 API 連線,因此 Claude Code 會忽略這些金鑰,並在工作階段的偵錯日誌中記錄每個被忽略的金鑰 |328| 您儲存庫的 `.claude/settings.json` `env` 區塊中的傳輸變數,例如 `NODE_EXTRA_CA_CERTS` 和[mTLS 用戶端憑證變數](/docs/zh-TW/network-config#mtls-authentication) | 否 | 代管環境管理工作階段的 API 連線,因此 Claude Code 會忽略這些金鑰,並在工作階段的偵錯日誌中記錄每個被忽略的金鑰 |

321| Claude 呼叫的服務的 API 金鑰和 token | 在 Pro 和 Max 方案上,作為[網路機密](#add-network-secrets) | 您在環境上新增金鑰一次,agent 代理伺服器會將其附加到您列出的主機的請求。agent 代理伺服器[無法附加](#requests-that-never-get-the-credential)的金鑰,或 Team 或 Enterprise 方案上的任何金鑰,都保留在環境變數中 |329| Claude 呼叫的服務的 API 金鑰和 token | 在 Anthropic 代管的環境中,作為[網路機密](#add-network-secrets) | 您在環境上新增金鑰一次,agent 代理伺服器會將其附加到您列出的主機的請求。agent 代理伺服器[無法附加](#requests-that-never-get-the-credential)的金鑰保留在環境變數中 |

322| 像 AWS SSO 這樣的互動式驗證 | 否 | 不支援。SSO 需要無法在雲端工作階段中執行的瀏覽器型登入 |330| 像 AWS SSO 這樣的互動式驗證 | 否 | 不支援。SSO 需要無法在雲端工作階段中執行的瀏覽器型登入 |

323 331 

324若要在雲端工作階段中提供您自己的設定,請將其提交到儲存庫。332若要在雲端工作階段中提供您自己的設定,請將其提交到儲存庫。

325 333 

326任何使用環境的人都可以讀取其環境變數和設定指令碼。**環境變數**下的對話方塊註記會說明這一點,並警告不要在那裡放置機密。在 Pro 和 Max 方案上,改為將 agent 代理伺服器可以附加的金鑰儲存為[網路機密](#add-network-secrets)。334任何使用環境的人都可以讀取其環境變數和設定指令碼。**環境變數**下的對話方塊註記會說明這一點,並警告不要在那裡放置機密。在 Anthropic 代管的環境中,改為將 agent 代理伺服器可以附加的金鑰儲存為[網路機密](#add-network-secrets)。

327 335 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">336<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 在不提交到儲存庫的情況下新增個人偏好設定337 在不提交到儲存庫的情況下新增個人偏好設定

code-review.md +0 −2

Details

155* 您必須對儲存庫具有寫入、維護或管理員權限155* 您必須對儲存庫具有寫入、維護或管理員權限

156* PR 必須是開啟的156* PR 必須是開啟的

157 157 

158如果儲存庫屬於組織,且您在該組織中的成員身份是私密的(這是 GitHub 的預設設定),GitHub 不會將您識別為 Claude 的成員。Claude 可能仍會以 👀 回應您的評論,但除非您被直接新增到儲存庫作為協作者,否則它不會啟動審查,即使團隊或組織的基本權限給予您寫入存取權。若要修正此問題,[公開您的組織成員身份](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership)或要求儲存庫管理員將您新增到儲存庫作為協作者。

159 

160與自動觸發器不同,手動觸發器在草稿 PR 上運作,因為明確的請求表示您希望立即進行審查,無論草稿狀態如何。158與自動觸發器不同,手動觸發器在草稿 PR 上運作,因為明確的請求表示您希望立即進行審查,無論草稿狀態如何。

161 159 

162如果該 PR 上已有審查正在進行,請求將排隊等待進行中的審查完成。您可以透過 PR 上的檢查執行來監控進度。160如果該 PR 上已有審查正在進行,請求將排隊等待進行中的審查完成。您可以透過 PR 上的檢查執行來監控進度。

commands.md +6 −6

Details

67| `/branch [name]` | 在此點建立目前對話的分支,以便您可以嘗試不同的方向而不會丟失目前的對話。切換到分支並保留原始分支,您可以使用 `/resume` 返回。要運行副本作為單獨的[背景工作階段](/docs/zh-TW/agent-view)而不是切換到它,請使用 `/fork`;要將側面任務交給 [subagent](/docs/zh-TW/sub-agents) 以報告回此對話,請使用 `/subtask` |67| `/branch [name]` | 在此點建立目前對話的分支,以便您可以嘗試不同的方向而不會丟失目前的對話。切換到分支並保留原始分支,您可以使用 `/resume` 返回。要運行副本作為單獨的[背景工作階段](/docs/zh-TW/agent-view)而不是切換到它,請使用 `/fork`;要將側面任務交給 [subagent](/docs/zh-TW/sub-agents) 以報告回此對話,請使用 `/subtask` |

68| `/btw [question]` | 詢問有關目前工作階段的[側面問題](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw)而不添加到對話中。如果您運行 `/btw` 而沒有問題,Claude Code 會顯示您最近的側面問題,以便您可以瀏覽較早的答案;如果您還沒有提出問題,Claude Code 會列印使用行。在 v2.1.212 之前,`/btw` 需要一個問題 |68| `/btw [question]` | 詢問有關目前工作階段的[側面問題](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw)而不添加到對話中。如果您運行 `/btw` 而沒有問題,Claude Code 會顯示您最近的側面問題,以便您可以瀏覽較早的答案;如果您還沒有提出問題,Claude Code 會列印使用行。在 v2.1.212 之前,`/btw` 需要一個問題 |

69| `/bug [report]` | 報告錯誤或分享您的對話。您選擇要包含多少工作階段歷史記錄,並在發送任何內容之前在同意螢幕上確認。當您在第一方連線上登入 Anthropic 時,報告會發送給 Anthropic;在第三方提供者上,或沒有 Anthropic 憑證,Claude Code 會將報告寫入[`~/.claude/feedback-bundles/` 下的本地存檔](/docs/zh-TW/data-usage#telemetry-services),您可以自己轉發。在 [VS Code 擴充功能](/docs/zh-TW/vs-code#use-the-prompt-box)中,`/bug` 改為打開擴充功能自己的回饋對話框;需要 Claude Code v2.1.229 或更新版本。當您在 Claude 回應時運行它時,Claude Code 會立即打開對話框。在 v2.1.232 之前,Claude Code 會將命令排隊直到該回合完成。別名:`/share`。在 v2.1.212 之前,`/bug` 和 `/share` 是 `/feedback` 的別名 |69| `/bug [report]` | 報告錯誤或分享您的對話。您選擇要包含多少工作階段歷史記錄,並在發送任何內容之前在同意螢幕上確認。當您在第一方連線上登入 Anthropic 時,報告會發送給 Anthropic;在第三方提供者上,或沒有 Anthropic 憑證,Claude Code 會將報告寫入[`~/.claude/feedback-bundles/` 下的本地存檔](/docs/zh-TW/data-usage#telemetry-services),您可以自己轉發。在 [VS Code 擴充功能](/docs/zh-TW/vs-code#use-the-prompt-box)中,`/bug` 改為打開擴充功能自己的回饋對話框;需要 Claude Code v2.1.229 或更新版本。當您在 Claude 回應時運行它時,Claude Code 會立即打開對話框。在 v2.1.232 之前,Claude Code 會將命令排隊直到該回合完成。別名:`/share`。在 v2.1.212 之前,`/bug` 和 `/share` 是 `/feedback` 的別名 |

70| `/cd <path>` | 將此工作階段移動到新的工作目錄,保持對話。輸入部分路徑以查看匹配的目錄建議;按 `Tab` 接受一個。建議需要 Claude Code v2.1.206 或更新版本。有關 Claude Code 從新目錄立即應用的內容以及 `/cd` 與 `/add-dir` 的區別,請參閱[將工作階段移動到另一個目錄](/docs/zh-TW/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | 將此工作階段移動到新的工作目錄,保持對話。輸入部分路徑以查看匹配的目錄建議;按 `Tab` 接受一個。有關 Claude Code 從新目錄立即應用的內容以及 `/cd` 與 `/add-dir` 的區別,請參閱[將工作階段移動到另一個目錄](/docs/zh-TW/permissions#move-the-session-to-another-directory) |

71| `/chrome` | 設定 [Claude in Chrome](/docs/zh-TW/chrome) 設定 |71| `/chrome` | 設定 [Claude in Chrome](/docs/zh-TW/chrome) 設定 |

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 為您的專案語言載入 [Claude API](https://platform.claude.com/docs/en/api/overview) 和 [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) 參考資料。當您的程式碼匯入 `anthropic` 或 `@anthropic-ai/sdk` 時也會自動啟動。有關每個子命令的作用以及它需要的版本,請參閱[在 Claude API 專案上工作](/docs/zh-TW/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 為您的專案語言載入 [Claude API](https://platform.claude.com/docs/en/api/overview) 和 [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) 參考資料。當您的程式碼匯入 `anthropic` 或 `@anthropic-ai/sdk` 時也會自動啟動。有關每個子命令的作用以及它需要的版本,請參閱[在 Claude API 專案上工作](/docs/zh-TW/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 讓 Claude 通過 [Claude in Chrome](/docs/zh-TW/chrome) 在您的瀏覽器中執行任務,例如測試頁面、填充表單或讀取控制台日誌。在為工作階段啟用 Chrome 整合時可用,例如使用 `claude --chrome`,或當 Claude Code 可以提供[安裝擴充功能](/docs/zh-TW/chrome#install-the-extension-when-claude-asks)時 |73| `/claude-in-chrome [task]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 讓 Claude 通過 [Claude in Chrome](/docs/zh-TW/chrome) 在您的瀏覽器中執行任務,例如測試頁面、填充表單或讀取控制台日誌。在為工作階段啟用 Chrome 整合時可用,例如使用 `claude --chrome`,或當 Claude Code 可以提供[安裝擴充功能](/docs/zh-TW/chrome#install-the-extension-when-claude-asks)時 |

74| `/clear [name]` | 使用空上下文啟動新對話。傳遞名稱以在 `/resume` 選擇器中標記先前的對話。要在繼續相同對話的同時釋放上下文,請改用 `/compact`。使用 `/resume` 恢復先前的對話,或在同一 Claude Code 程序中,從[倒帶選單的上一個工作階段項目](/docs/zh-TW/checkpointing#rewind-past-a-cleared-conversation)恢復它。別名:`/reset`、`/new` |74| `/clear [name]` | 使用空上下文啟動新對話。傳遞名稱以在 `/resume` 選擇器中標記先前的對話。要在繼續相同對話的同時釋放上下文,請改用 `/compact`。使用 `/resume` 恢復先前的對話,或在同一 Claude Code 程序中,從[倒帶選單的上一個工作階段項目](/docs/zh-TW/checkpointing#rewind-past-a-cleared-conversation)恢復它。別名:`/reset`、`/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 檢查目前差異或您傳遞的 PR 編號、分支或路徑,以查找正確性錯誤。根據您的模型和 effort 等級,檢查也涵蓋清理機會。傳遞 `--fix` 以應用發現,`--comment` 以在 GitHub PR 或 GitLab merge request 上發佈它們,或 `ultra` 以運行深度[雲端審查](/docs/zh-TW/ultrareview)。發佈到 GitLab merge request 需要 Claude Code v2.1.257 或更新版本。在 `github.com` PR 目標上使用 `ultra` 時,傳遞 `--post` 以在啟動對話框中預先選擇[將完成的發現發佈到 PR](/docs/zh-TW/ultrareview#post-findings-to-the-pull-request);`--post` 需要 Claude Code v2.1.227 或更新版本。有關 effort 等級、目標設定以及它與 `/simplify` 的關係,請參閱[本地檢查差異](/docs/zh-TW/code-review#review-a-diff-locally)。別名:`/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 檢查目前差異或您傳遞的 PR 編號、分支或路徑,以查找正確性錯誤。根據您的模型和 effort 等級,檢查也涵蓋清理機會。傳遞 `--fix` 以應用發現,`--comment` 以在 GitHub PR 或 GitLab merge request 上發佈它們,或 `ultra` 以運行深度[雲端審查](/docs/zh-TW/ultrareview)。發佈到 GitLab merge request 需要 Claude Code v2.1.257 或更新版本。在 `github.com` PR 目標上使用 `ultra` 時,傳遞 `--post` 以在啟動對話框中預先選擇[將完成的發現發佈到 PR](/docs/zh-TW/ultrareview#post-findings-to-the-pull-request);`--post` 需要 Claude Code v2.1.227 或更新版本。有關 effort 等級、目標設定以及它與 `/simplify` 的關係,請參閱[本地檢查差異](/docs/zh-TW/code-review#review-a-diff-locally)。別名:`/review` |

76| `/color [color\|default]` | 設定目前工作階段的提示詞欄顏色。可用顏色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重置,或運行時不帶引數以選擇隨機顏色。當 [Remote Control](/docs/zh-TW/remote-control) 連接時,顏色會同步到 claude.ai/code。也可在非互動模式 (`-p`) 中使用;需要 Claude Code v2.1.205 或更新版本 |76| `/color [color\|default]` | 設定目前工作階段的提示詞欄顏色。可用顏色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重置,或運行時不帶引數以選擇隨機顏色。當 [Remote Control](/docs/zh-TW/remote-control) 連接時,顏色會同步到 claude.ai/code。也可在非互動模式 (`-p`) 中使用 |

77| `/compact [instructions]` | 通過總結到目前為止的對話來釋放上下文。可選地傳遞焦點指示以進行摘要。請參閱[壓縮如何處理規則、skill 和記憶檔案](/docs/zh-TW/context-window#what-survives-compaction) |77| `/compact [instructions]` | 通過總結到目前為止的對話來釋放上下文。可選地傳遞焦點指示以進行摘要。請參閱[壓縮如何處理規則、skill 和記憶檔案](/docs/zh-TW/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | 打開[設定](/docs/zh-TW/settings)介面以調整主題、模型、[輸出風格](/docs/zh-TW/output-styles)和其他偏好設定。傳遞一個或多個 `key=value` 對以直接設定設定而不打開介面,例如 `/config thinking=false`、`/config theme=dark` 或 `/config model=sonnet`。`key=value` 形式也適用於非互動模式 (`-p`) 和來自 Claude 行動應用程式通過 [Remote Control](/docs/zh-TW/remote-control)。`key=value` 形式無法打開需要您在面板中確認的設定,例如 [`autoContinueAtUsageLimit`](/docs/zh-TW/interactive-mode#turn-automatic-continue-off),儘管它可以關閉一個。運行 `/config --help` 以列出它接受的鍵。別名:`/settings` |78| `/config [key=value ...]` | 打開[設定](/docs/zh-TW/settings)介面以調整主題、模型、[輸出風格](/docs/zh-TW/output-styles)和其他偏好設定。傳遞一個或多個 `key=value` 對以直接設定設定而不打開介面,例如 `/config thinking=false`、`/config theme=dark` 或 `/config model=sonnet`。`key=value` 形式也適用於非互動模式 (`-p`) 和來自 Claude 行動應用程式通過 [Remote Control](/docs/zh-TW/remote-control)。`key=value` 形式無法打開需要您在面板中確認的設定,例如 [`autoContinueAtUsageLimit`](/docs/zh-TW/interactive-mode#turn-automatic-continue-off),儘管它可以關閉一個。運行 `/config --help` 以列出它接受的鍵。別名:`/settings` |

79| `/context [all]` | 將目前上下文使用情況視覺化為彩色網格。顯示上下文繁重工具、記憶膨脹和容量警告的最佳化建議。當對話超過上下文視窗時,輸出包括[警告](/docs/zh-TW/errors#context-exceeds-the-token-limit),顯示您超過限制的距離以及哪個命令釋放空間。在[全螢幕模式](/docs/zh-TW/fullscreen)中,`/context` 會摺疊每項細目以保持網格可見。傳遞 `all` 以展開它 |79| `/context [all]` | 將目前上下文使用情況視覺化為彩色網格。顯示上下文繁重工具、記憶膨脹和容量警告的最佳化建議。當對話超過上下文視窗時,輸出包括[警告](/docs/zh-TW/errors#context-exceeds-the-token-limit),顯示您超過限制的距離以及哪個命令釋放空間。在[全螢幕模式](/docs/zh-TW/fullscreen)中,`/context` 會摺疊每項細目以保持網格可見。傳遞 `all` 以展開它 |


91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | 設定 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`low` 到 `xhigh`、`max` 或 `auto`;`status` 列印它。`ultracode` 或 `ultracode on` 在目前等級為工作階段打開 [ultracode](/docs/zh-TW/workflows#let-claude-decide-with-ultracode),`ultracode off` 關閉它;[`ultracode`](/docs/zh-TW/settings-reference#ultracode) 鍵持續存在。`max` 僅限工作階段。`on` 和 `off` 引數以及保持目前等級需要 Claude Code v2.1.284 或更新版本。在 v2.1.284 之前,`/effort ultracode` 將工作階段設定為 `xhigh`,`/effort ultracode off` 失敗並出現 `Invalid argument`。在 Claude 回應時運行它,一旦您確認[快取警告](/docs/zh-TW/prompt-caching#changing-effort-level)(如果 Claude Code 顯示一個),Claude Code 會將新等級應用於該回合中的下一個請求。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊,例如在[第三方提供者](/docs/zh-TW/third-party-integrations)上。在 `-p` 中工作 |91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | 設定 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`low` 到 `xhigh`、`max` 或 `auto`;`status` 列印它。`ultracode` 或 `ultracode on` 在目前等級為工作階段打開 [ultracode](/docs/zh-TW/workflows#let-claude-decide-with-ultracode),`ultracode off` 關閉它;[`ultracode`](/docs/zh-TW/settings-reference#ultracode) 鍵持續存在。`max` 僅限工作階段。`on` 和 `off` 引數以及保持目前等級需要 Claude Code v2.1.284 或更新版本。在 v2.1.284 之前,`/effort ultracode` 將工作階段設定為 `xhigh`,`/effort ultracode off` 失敗並出現 `Invalid argument`。在 Claude 回應時運行它,一旦您確認[快取警告](/docs/zh-TW/prompt-caching#changing-effort-level)(如果 Claude Code 顯示一個),Claude Code 會將新等級應用於該回合中的下一個請求。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊,例如在[第三方提供者](/docs/zh-TW/third-party-integrations)上。在 `-p` 中工作 |

92| `/exit` | 退出 CLI。在附加的[背景工作階段](/docs/zh-TW/agent-view#attach-to-a-session)中,這會分離並且工作階段保持運行。別名:`/quit` |92| `/exit` | 退出 CLI。在附加的[背景工作階段](/docs/zh-TW/agent-view#attach-to-a-session)中,這會分離並且工作階段保持運行。別名:`/quit` |

93| `/export [filename]` | 將目前對話匯出為純文字。使用檔案名,直接寫入該檔案。沒有,打開對話框以複製到剪貼簿或保存到檔案 |93| `/export [filename]` | 將目前對話匯出為純文字。使用檔案名,直接寫入該檔案。沒有,打開對話框以複製到剪貼簿或保存到檔案 |

94| `/fast [on\|off]` | 切換[快速模式](/docs/zh-TW/fast-mode)開啟或關閉。在 Claude 回應時運行它,Claude Code 會切換快速模式而不等待該回合結束,儘管運行中的回合以其原始速度完成。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊。在使用 `-p` 的非互動模式中可用性受限;請參閱[切換快速模式](/docs/zh-TW/fast-mode#toggle-fast-mode)。需要 Claude Code v2.1.205 或更新版本 |94| `/fast [on\|off]` | 切換[快速模式](/docs/zh-TW/fast-mode)開啟或關閉。在 Claude 回應時運行它,Claude Code 會切換快速模式而不等待該回合結束,儘管運行中的回合以其原始速度完成。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊。在使用 `-p` 的非互動模式中可用性受限;請參閱[切換快速模式](/docs/zh-TW/fast-mode#toggle-fast-mode) |

95| `/feedback [report]` | 發送有關 Claude Code 的產品回饋。打開與 [`/bug`](#all-commands) 相同的對話框,具有相同的同意步驟、發送規則和回合中途行為。在具有 [Claude 草擬回饋](/docs/zh-TW/tools-reference#sendfeedback-tool-behavior)的工作階段中,不帶引數的 `/feedback` 改為打開草稿佇列,您可以在其中檢查、編輯、發送或丟棄 Claude 排隊的草稿;佇列包括在對話框中編寫新報告的選項。使用引數時,以及對於 `/bug` 始終,對話框直接打開 |95| `/feedback [report]` | 發送有關 Claude Code 的產品回饋。打開與 [`/bug`](#all-commands) 相同的對話框,具有相同的同意步驟、發送規則和回合中途行為。在具有 [Claude 草擬回饋](/docs/zh-TW/tools-reference#sendfeedback-tool-behavior)的工作階段中,不帶引數的 `/feedback` 改為打開草稿佇列,您可以在其中檢查、編輯、發送或丟棄 Claude 排隊的草稿;佇列包括在對話框中編寫新報告的選項。使用引數時,以及對於 `/bug` 始終,對話框直接打開 |

96| `/fewer-permission-prompts` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 掃描您的逐字稿以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |96| `/fewer-permission-prompts` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 掃描您的逐字稿以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |

97| `/focus` | 切換焦點檢視,僅顯示您的最後提示詞、帶有編輯差異統計的單行工具呼叫摘要和最終回應。工具呼叫摘要也計算在該回合中啟動的 subagent 數量並將完成的背景任務通知摺疊為單一計數。選擇在工作階段間持續存在;在設定中設定 [`viewMode`](/docs/zh-TW/settings-reference#viewmode) 以覆寫它。僅在[全螢幕渲染](/docs/zh-TW/fullscreen)中可用。從 [Remote Control](/docs/zh-TW/remote-control) 用戶端,運行 `/focus [on\|off]` 以僅為目前工作階段打開或關閉焦點檢視,而不變更您保存的選擇;這需要 Claude Code v2.1.281 或更新版本。[VS Code 擴充功能](/docs/zh-TW/vs-code#use-the-prompt-box)提供其自己的焦點檢視作為命令選單切換,存儲為擴充功能設定,獨立於 `viewMode` |97| `/focus` | 切換焦點檢視,僅顯示您的最後提示詞、帶有編輯差異統計的單行工具呼叫摘要和最終回應。工具呼叫摘要也計算在該回合中啟動的 subagent 數量並將完成的背景任務通知摺疊為單一計數。選擇在工作階段間持續存在;在設定中設定 [`viewMode`](/docs/zh-TW/settings-reference#viewmode) 以覆寫它。僅在[全螢幕渲染](/docs/zh-TW/fullscreen)中可用。從 [Remote Control](/docs/zh-TW/remote-control) 用戶端,運行 `/focus [on\|off]` 以僅為目前工作階段打開或關閉焦點檢視,而不變更您保存的選擇;這需要 Claude Code v2.1.281 或更新版本。[VS Code 擴充功能](/docs/zh-TW/vs-code#use-the-prompt-box)提供其自己的焦點檢視作為命令選單切換,存儲為擴充功能設定,獨立於 `viewMode` |


111| `/login` | 登入您的 Anthropic 帳戶 |111| `/login` | 登入您的 Anthropic 帳戶 |

112| `/logout` | 登出您的 Anthropic 帳戶 |112| `/logout` | 登出您的 Anthropic 帳戶 |

113| `/loop [interval] [prompt]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 在工作階段保持打開時重複運行提示詞。省略間隔,Claude [自行調整迭代之間的步調](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval)。省略提示詞,Claude 運行[內建維護提示詞](/docs/zh-TW/scheduled-tasks#run-the-built-in-maintenance-prompt)或您的 [`loop.md`](/docs/zh-TW/scheduled-tasks#customize-the-default-prompt-with-loop-md)。範例:`/loop 5m check if the deploy finished`。請參閱[按排程運行提示詞](/docs/zh-TW/scheduled-tasks)。別名:`/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 在工作階段保持打開時重複運行提示詞。省略間隔,Claude [自行調整迭代之間的步調](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval)。省略提示詞,Claude 運行[內建維護提示詞](/docs/zh-TW/scheduled-tasks#run-the-built-in-maintenance-prompt)或您的 [`loop.md`](/docs/zh-TW/scheduled-tasks#customize-the-default-prompt-with-loop-md)。範例:`/loop 5m check if the deploy finished`。請參閱[按排程運行提示詞](/docs/zh-TW/scheduled-tasks)。別名:`/proactive` |

114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | 管理 MCP 伺服器連線和 OAuth 身分驗證。運行時不帶引數以打開互動式清單,或傳遞 `reconnect`、`enable` 或 `disable` 與伺服器名稱或 `all`,以在不打開清單的情況下變更連線狀態。`reconnect all` 會[重試每個失敗或需要身分驗證的伺服器](/docs/zh-TW/mcp#retry-failed-servers-yourself)。在非互動模式 (`-p`) 中,不帶引數運行它會列印伺服器狀態的文字摘要而不是打開清單;需要 Claude Code v2.1.205 或更新版本 |114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | 管理 MCP 伺服器連線和 OAuth 身分驗證。運行時不帶引數以打開互動式清單,或傳遞 `reconnect`、`enable` 或 `disable` 與伺服器名稱或 `all`,以在不打開清單的情況下變更連線狀態。`reconnect all` 會[重試每個失敗或需要身分驗證的伺服器](/docs/zh-TW/mcp#retry-failed-servers-yourself)。在非互動模式 (`-p`) 中,不帶引數運行它會列印伺服器狀態的文字摘要而不是打開清單 |

115| `/memory` | 編輯 `CLAUDE.md` 檔案、啟用或停用[自動記憶](/docs/zh-TW/memory#auto-memory)以及檢視自動記憶項目 |115| `/memory` | 編輯 `CLAUDE.md` 檔案、啟用或停用[自動記憶](/docs/zh-TW/memory#auto-memory)以及檢視自動記憶項目 |

116| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |116| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |

117| `/model [model]` | 切換 AI 模型並將其保存為新工作階段的預設值。對於支援它的模型,使用左/右箭頭以[調整 effort 等級](/docs/zh-TW/model-config#adjust-effort-level)。沒有引數時,打開選擇器;在行上按 `s` 以僅為目前工作階段切換。請參閱[何時 Claude Code 要求您確認切換](/docs/zh-TW/prompt-caching#switching-models)。一旦您確認切換(如果 Claude Code 要求),Claude Code 會應用變更而不等待目前回應完成。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊,例如在[第三方提供者](/docs/zh-TW/third-party-integrations)上。也可在非互動模式 (`-p`) 中使用模型引數而不是選擇器,其中它僅應用於目前工作階段且不保存為您的預設值;需要 Claude Code v2.1.205 或更新版本 |117| `/model [model]` | 切換 AI 模型並將其保存為新工作階段的預設值。對於支援它的模型,使用左/右箭頭以[調整 effort 等級](/docs/zh-TW/model-config#adjust-effort-level)。沒有引數時,打開選擇器;在行上按 `s` 以僅為目前工作階段切換。請參閱[何時 Claude Code 要求您確認切換](/docs/zh-TW/prompt-caching#switching-models)。一旦您確認切換(如果 Claude Code 要求),Claude Code 會應用變更而不等待目前回應完成。在 v2.1.242 之前,Claude Code 從它從 Anthropic 擷取的功能旗標決定是在回合中途運行命令還是將其排隊直到該回合完成,並始終在不[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中排隊,例如在[第三方提供者](/docs/zh-TW/third-party-integrations)上。也可在非互動模式 (`-p`) 中使用模型引數而不是選擇器,其中它僅應用於目前工作階段且不保存為您的預設值;需要 Claude Code v2.1.205 或更新版本 |


130| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發佈說明,或選擇顯示所有版本。說明在您的逐字稿中出現而不進入 Claude 看到的對話 |130| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發佈說明,或選擇顯示所有版本。說明在您的逐字稿中出現而不進入 Claude 看到的對話 |

131| `/reload-plugins [--force]` | 重新載入所有活動[外掛](/docs/zh-TW/plugins/overview)以應用待處理變更而不重新啟動。報告每個重新載入元件的計數並標記任何載入錯誤。當重新載入會變更載入的 MCP 工具並使提示快取失效時,命令會警告並跳過,除非您傳遞 `--force`。也可在非互動模式 (`-p`)、Agent SDK 和桌面應用程式中使用,其中它僅在直接輸入到工作階段的輸入上運行且不應用外掛 MCP 伺服器變更;需要 Claude Code v2.1.260 或更新版本。請參閱[在不重新啟動的情況下應用外掛變更](/docs/zh-TW/plugins/cli-reference#reload-plugins) |131| `/reload-plugins [--force]` | 重新載入所有活動[外掛](/docs/zh-TW/plugins/overview)以應用待處理變更而不重新啟動。報告每個重新載入元件的計數並標記任何載入錯誤。當重新載入會變更載入的 MCP 工具並使提示快取失效時,命令會警告並跳過,除非您傳遞 `--force`。也可在非互動模式 (`-p`)、Agent SDK 和桌面應用程式中使用,其中它僅在直接輸入到工作階段的輸入上運行且不應用外掛 MCP 伺服器變更;需要 Claude Code v2.1.260 或更新版本。請參閱[在不重新啟動的情況下應用外掛變更](/docs/zh-TW/plugins/cli-reference#reload-plugins) |

132| `/reload-skills` | 重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄,以便在工作階段期間在磁碟上添加或變更的 skill 在不重新啟動的情況下變為可用。報告有多少 skill 可用以及添加或移除了多少 |132| `/reload-skills` | 重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄,以便在工作階段期間在磁碟上添加或變更的 skill 在不重新啟動的情況下變為可用。報告有多少 skill 可用以及添加或移除了多少 |

133| `/remote-control` | 使此工作階段可從 claude.ai 進行 [Remote Control](/docs/zh-TW/remote-control)。在登出時運行它會列印 Remote Control 需要 claude.ai 訂閱並告訴您如何登入;在 v2.1.206 之前它報告 `Unknown command: /remote-control`。別名:`/rc` |133| `/remote-control` | 使此工作階段可從 claude.ai 進行 [Remote Control](/docs/zh-TW/remote-control)。在登出時運行它會列印 Remote Control 需要 claude.ai 訂閱並告訴您如何登入。別名:`/rc` |

134| `/remote-env` | 為您從 CLI 啟動的雲端工作階段選擇預設[雲端環境](/docs/zh-TW/cloud-environments#select-an-environment-from-the-cli) |134| `/remote-env` | 為您從 CLI 啟動的雲端工作階段選擇預設[雲端環境](/docs/zh-TW/cloud-environments#select-an-environment-from-the-cli) |

135| `/rename [name]` | 重新命名目前工作階段並在提示詞欄上顯示名稱。沒有名稱時,從對話歷史記錄自動生成一個。也可在非互動模式 (`-p`) 中使用;需要 Claude Code v2.1.205 或更新版本。從每個重新命名的使用介面,包括 claude.ai 和桌面應用程式,Claude Code 會用空格替換新名稱中的控制和不可見字元,並將名稱上限設為 200 個字元。如果移除不可見字元後名稱為空,Claude Code 會拒絕它並顯示 `That name is empty once invisible characters are removed. Usage: /rename <name>`。字元替換和長度上限需要 Claude Code v2.1.221 或更新版本 |135| `/rename [name]` | 重新命名目前工作階段並在提示詞欄上顯示名稱。沒有名稱時,從對話歷史記錄自動生成一個。也可在非互動模式 (`-p`) 中使用。從每個重新命名的使用介面,包括 claude.ai 和桌面應用程式,Claude Code 會用空格替換新名稱中的控制和不可見字元,並將名稱上限設為 200 個字元。如果移除不可見字元後名稱為空,Claude Code 會拒絕它並顯示 `That name is empty once invisible characters are removed. Usage: /rename <name>`。字元替換和長度上限需要 Claude Code v2.1.221 或更新版本 |

136| `/resume [session]` | 按 ID 或名稱恢復對話,或打開工作階段選擇器。[背景工作階段](/docs/zh-TW/agent-view)在選擇器中以 `bg` 標記出現。恢復仍在運行的工作階段時,無論是從選擇器或按 ID 或名稱,都會[打開該工作階段](/docs/zh-TW/sessions#resume-a-running-background-session):您目前的對話會移到背景,此終端機會附加到運行中的工作階段。在空提示詞上按 `←` 可返回 agent view,其中也會列出您離開的對話。在 v2.1.285 之前,Claude Code 會拒絕,並告訴您使用 `claude attach` 打開該工作階段或先停止它。別名:`/continue` |136| `/resume [session]` | 按 ID 或名稱恢復對話,或打開工作階段選擇器。[背景工作階段](/docs/zh-TW/agent-view)在選擇器中以 `bg` 標記出現。恢復仍在運行的工作階段時,無論是從選擇器或按 ID 或名稱,都會[打開該工作階段](/docs/zh-TW/sessions#resume-a-running-background-session):您目前的對話會移到背景,此終端機會附加到運行中的工作階段。在空提示詞上按 `←` 可返回 agent view,其中也會列出您離開的對話。在 v2.1.285 之前,Claude Code 會拒絕,並告訴您使用 `claude attach` 打開該工作階段或先停止它。別名:`/continue` |

137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | [`/code-review`](/docs/zh-TW/code-review#review-a-diff-locally) 的別名:檢查目前差異或您傳遞的 PR 編號、分支或路徑,例如 `/review 1234`,並採用相同的 effort 等級和旗標。沒有給定等級時,檢查重複使用您最後輸入的 `low` 到 `max` 等級;有關確切規則,請參閱[本地檢查差異](/docs/zh-TW/code-review#review-a-diff-locally)。對於深度雲端檢查,使用 [`/code-review ultra`](/docs/zh-TW/ultrareview)。在 v2.1.223 之前,`/review` 是一個單獨的命令,按編號對 GitHub pull request 進行單次通過、唯讀檢查,在運行時不帶引數時列出打開的 PR 以選擇;從 v2.1.186 到 v2.1.201,它運行與 `/code-review medium` 相同的多 agent 引擎 |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | [`/code-review`](/docs/zh-TW/code-review#review-a-diff-locally) 的別名:檢查目前差異或您傳遞的 PR 編號、分支或路徑,例如 `/review 1234`,並採用相同的 effort 等級和旗標。沒有給定等級時,檢查重複使用您最後輸入的 `low` 到 `max` 等級;有關確切規則,請參閱[本地檢查差異](/docs/zh-TW/code-review#review-a-diff-locally)。對於深度雲端檢查,使用 [`/code-review ultra`](/docs/zh-TW/ultrareview)。在 v2.1.223 之前,`/review` 是一個單獨的命令,按編號對 GitHub pull request 進行單次通過、唯讀檢查,在運行時不帶引數時列出打開的 PR 以選擇;從 v2.1.186 到 v2.1.201,它運行與 `/code-review medium` 相同的多 agent 引擎 |

138| `/rewind` | 倒帶對話和/或程式碼到上一個點,或從選定的訊息進行摘要。請參閱[檢查點功能](/docs/zh-TW/checkpointing)。別名:`/checkpoint`、`/undo` |138| `/rewind` | 倒帶對話和/或程式碼到上一個點,或從選定的訊息進行摘要。請參閱[檢查點功能](/docs/zh-TW/checkpointing)。別名:`/checkpoint`、`/undo` |

Details

419 * 您可以在單個訊息中參考多個檔案(例如「@file1.js and @file2.js」)419 * 您可以在單個訊息中參考多個檔案(例如「@file1.js and @file2.js」)

420</Tip>420</Tip>

421 421 

422若要阻止 `@` 參考在您的訊息中包含檔案內容和目錄清單,請在您的 shell 或使用者設定中設定 [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/zh-TW/env-vars#variables)。Claude 隨後會收到您參考的路徑,並附帶一則說明,指示其使用檔案工具讀取這些路徑。此變數需要 Claude Code v2.1.299 或更新版本,且 Claude Code 會在專案和本機設定中忽略它。

423 

422***424***

423 425 

424<h3 id="run-claude-on-a-schedule">426<h3 id="run-claude-on-a-schedule">

Details

1602| 系統提示詞和輸出風格 | 兩者仍然適用 |1602| 系統提示詞和輸出風格 | 兩者仍然適用 |

1603| 專案根目錄 CLAUDE.md 和未限定範圍的規則 | 從磁碟重新注入 |1603| 專案根目錄 CLAUDE.md 和未限定範圍的規則 | 從磁碟重新注入 |

1604| 自動記憶 | 從磁碟重新注入 |1604| 自動記憶 | 從磁碟重新注入 |

1605| [Git 狀態快照](/docs/zh-TW/settings-reference#includegitinstructions) | Claude Code 從您的儲存庫讀取新的快照 |1605| [Git 狀態快照](/docs/zh-TW/settings-reference#includegitinstructions) | 如果工作階段開始時有快照,Claude Code 會從您的儲存庫讀取新的快照 |

1606| Claude 在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中編寫的計畫 | 從磁碟重新注入 |1606| Claude 在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中編寫的計畫 | 從磁碟重新注入 |

1607| 具有 `paths:` frontmatter 的規則 | Claude Code [視需要](/docs/zh-TW/memory#path-specific-rules)重新載入它們 |1607| 具有 `paths:` frontmatter 的規則 | Claude Code [視需要](/docs/zh-TW/memory#path-specific-rules)重新載入它們 |

1608| 子目錄中的巢狀 CLAUDE.md | Claude Code [視需要](/docs/zh-TW/memory#how-claude-md-files-load)重新載入它們 |1608| 子目錄中的巢狀 CLAUDE.md | Claude Code [視需要](/docs/zh-TW/memory#how-claude-md-files-load)重新載入它們 |


1622 當您的上下文填滿時1622 當您的上下文填滿時

1623</h2>1623</h2>

1624 1624 

1625Claude Code 會在您接近限制時自動壓縮,因此完整的上下文視窗不會結束您的會話。自動傳遞的工作方式與時間線中的 `/compact` 步驟相同。請參閱[當上下文填滿時](/docs/zh-TW/how-claude-code-works#when-context-fills-up)以了解它保留的內容。1625Claude Code 會在您接近限制時自動壓縮,因此完整的上下文視窗不會結束您的工作階段。自動傳遞的工作方式與時間線中的 `/compact` 步驟相同。請參閱[當上下文填滿時](/docs/zh-TW/how-claude-code-works#when-context-fills-up)以了解它保留的內容。若要了解 Claude Code 何時也會壓縮您閒置的對話,請參閱[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction)。

1626 1626 

1627您也可以在自動傳遞運行之前採取行動:1627您也可以在自動傳遞運行之前採取行動:

1628 1628 

Details

128* **容忍從內部叫用自身。** Claude Code 將啟動程式應用於每個嵌套的自我產生,因此獲取獨佔資源的啟動程式必須偵測它是否已持有它。128* **容忍從內部叫用自身。** Claude Code 將啟動程式應用於每個嵌套的自我產生,因此獲取獨佔資源的啟動程式必須偵測它是否已持有它。

129* **在 Claude Code 啟動前不要寫入終端。** 在 `exec` 前列印的任何內容都會在工作階段在初始化前死亡時報告為當機原因。129* **在 Claude Code 啟動前不要寫入終端。** 在 `exec` 前列印的任何內容都會在工作階段在初始化前死亡時報告為當機原因。

130* **不要依賴引數的拼寫方式。** 旗標的值可能作為獨立的引數傳入(`--flag value`),也可能與旗標連接在一起(`--flag=value`)。旗標使用哪種形式可能會在不同版本之間變更。130* **不要依賴引數的拼寫方式。** 旗標的值可能作為獨立的引數傳入(`--flag value`),也可能與旗標連接在一起(`--flag=value`)。旗標使用哪種形式可能會在不同版本之間變更。

131* **從啟動程式啟動時所在的目錄執行 `exec`。** Claude Code 會在其啟動時所在的目錄中運作,因此變更目錄的啟動程式可能會在錯誤的專案中啟動工作階段。如果啟動程式必須進入會重設工作目錄的命名空間或沙箱,請在其內部、於 `exec` 之前切換回起始目錄。

131 132 

132<h3 id="format-of-the-launcher-value">133<h3 id="format-of-the-launcher-value">

133 啟動程式值的格式134 啟動程式值的格式

Details

170| Skill 未出現在 `/skills` 中 | Skill 檔案位於 `.claude/skills/name.md` 而不是在資料夾中 | 使用包含 `SKILL.md` 的資料夾:`.claude/skills/name/SKILL.md`。 |170| Skill 未出現在 `/skills` 中 | Skill 檔案位於 `.claude/skills/name.md` 而不是在資料夾中 | 使用包含 `SKILL.md` 的資料夾:`.claude/skills/name/SKILL.md`。 |

171| Skill 出現在 `/skills` 中,但 Claude 從未叫用它 | Skill 在其 frontmatter 中有 `disable-model-invocation: true`,或其描述與您提出請求的方式不符 | 檢查 `/skills` 中的徽章:「user-only」標籤表示 Claude 不會自動觸發它。請參閱 [skill 叫用](/docs/zh-TW/skills)。 |171| Skill 出現在 `/skills` 中,但 Claude 從未叫用它 | Skill 在其 frontmatter 中有 `disable-model-invocation: true`,或其描述與您提出請求的方式不符 | 檢查 `/skills` 中的徽章:「user-only」標籤表示 Claude 不會自動觸發它。請參閱 [skill 叫用](/docs/zh-TW/skills)。 |

172| 子目錄 `CLAUDE.md` 指示似乎被忽略 | 子目錄檔案按需載入,而不是在工作階段開始時載入 | 若要載入子目錄的 `CLAUDE.md`,請要求 Claude 讀取該子目錄中的另一個檔案。請參閱 [子目錄檔案何時載入](/docs/zh-TW/memory#how-claude-md-files-load)。 |172| 子目錄 `CLAUDE.md` 指示似乎被忽略 | 子目錄檔案按需載入,而不是在工作階段開始時載入 | 若要載入子目錄的 `CLAUDE.md`,請要求 Claude 讀取該子目錄中的另一個檔案。請參閱 [子目錄檔案何時載入](/docs/zh-TW/memory#how-claude-md-files-load)。 |

173| 子代理忽略 `CLAUDE.md` 指示 | 內建的 Explore 和 Plan 代理會跳過 `CLAUDE.md`。自訂子代理的載入方式與主對話相同,除非其定義設定 [`omitClaudeMd`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) | 對於 Explore 或 Plan,在您的委派提示中重新陳述指示。對於設定 `omitClaudeMd` 的子代理,移除該欄位。對於任何其他自訂子代理,將關鍵指示放在代理檔案本文中,該本文會成為代理的系統提示。請參閱 [啟動時載入的內容](/docs/zh-TW/sub-agents#what-loads-at-startup)。 |173| Subagent 忽略 `CLAUDE.md` 指示 | 內建的 Explore 和 Plan agent 會在啟動時跳過 `CLAUDE.md`。自訂 subagent 的載入方式與主對話相同,除非其定義設定了 [`omitClaudeMd`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) | 對於 Explore 或 Plan,在您的委派提示詞中重新陳述指示。對於設定 `omitClaudeMd` 的 subagent,移除該欄位。對於任何其他自訂 subagent,將關鍵指示放在 agent 檔案本文中,該本文會成為 agent 的系統提示詞。請參閱 [啟動時載入的內容](/docs/zh-TW/sub-agents#what-loads-at-startup)。 |

174| 清理邏輯在工作階段結束時永遠不會執行 | 未設定 `SessionEnd` hook | 在 `settings.json` 中新增 `SessionEnd` hook。請參閱 [hook 事件列表](/docs/zh-TW/hooks#hook-events)。 |174| 清理邏輯在工作階段結束時永遠不會執行 | 未設定 `SessionEnd` hook | 在 `settings.json` 中新增 `SessionEnd` hook。請參閱 [hook 事件列表](/docs/zh-TW/hooks#hook-events)。 |

175| `.mcp.json` 中的 MCP 伺服器永遠不會載入 | 檔案位於 `.claude/` 下,或其伺服器位於頂層 `servers` 鍵下(如 VS Code 的 `mcp.json`),而不是 `mcpServers` | 專案 MCP 設定位於存放庫根目錄的 `.mcp.json`,而不是在 `.claude/` 內,伺服器位於 `mcpServers` 鍵下。請參閱 [MCP 設定](/docs/zh-TW/mcp)。 |175| `.mcp.json` 中的 MCP 伺服器永遠不會載入 | 檔案位於 `.claude/` 下,或其伺服器位於頂層 `servers` 鍵下(如 VS Code 的 `mcp.json`),而不是 `mcpServers` | 專案 MCP 設定位於存放庫根目錄的 `.mcp.json`,而不是在 `.claude/` 內,伺服器位於 `mcpServers` 鍵下。請參閱 [MCP 設定](/docs/zh-TW/mcp)。 |

176| 在 `settings.json` 中的 `mcpServers` 下新增的 MCP 伺服器永遠不會出現 | `settings.json` 不讀取 `mcpServers` 鍵 | 在存放庫根目錄的 `.mcp.json` 中定義專案伺服器,或執行 `claude mcp add --scope user` 以取得使用者範圍的伺服器。請參閱 [MCP 設定](/docs/zh-TW/mcp)。 |176| 在 `settings.json` 中的 `mcpServers` 下新增的 MCP 伺服器永遠不會出現 | `settings.json` 不讀取 `mcpServers` 鍵 | 在存放庫根目錄的 `.mcp.json` 中定義專案伺服器,或執行 `claude mcp add --scope user` 以取得使用者範圍的伺服器。請參閱 [MCP 設定](/docs/zh-TW/mcp)。 |

desktop.md +134 −10

Details

101| **接受編輯** | `acceptEdits` | Claude 自動接受檔案編輯和常見的檔案系統命令,例如 `mkdir`、`touch` 和 `mv`,但在執行其他終端機命令之前仍會詢問。當您信任檔案變更並想要更快速的迭代時,請使用此選項。 |101| **接受編輯** | `acceptEdits` | Claude 自動接受檔案編輯和常見的檔案系統命令,例如 `mkdir`、`touch` 和 `mv`,但在執行其他終端機命令之前仍會詢問。當您信任檔案變更並想要更快速的迭代時,請使用此選項。 |

102| **Plan** | `plan` | Claude 讀取檔案並執行命令以進行探索,然後提出計畫而不編輯您的原始程式碼。適合複雜的工作,您想先檢查方法。 |102| **Plan** | `plan` | Claude 讀取檔案並執行命令以進行探索,然後提出計畫而不編輯您的原始程式碼。適合複雜的工作,您想先檢查方法。 |

103| **自動** | `auto` | Claude 執行時不會出現例行提示;在 shell 命令和網路請求等操作執行之前,背景分類器會檢查它們是否與您的請求一致。當[自動模式可用](#auto-mode-availability)時出現;沒有單獨的設定切換。 |103| **自動** | `auto` | Claude 執行時不會出現例行提示;在 shell 命令和網路請求等操作執行之前,背景分類器會檢查它們是否與您的請求一致。當[自動模式可用](#auto-mode-availability)時出現;沒有單獨的設定切換。 |

104| **略過權限** | `bypassPermissions` | Claude 執行時不會出現權限提示,除了[任何模式都不會自動核准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)、當 Claude [在外部網站上執行操作](#browse-external-sites)時的安全分類器,或桌面操作(Claude 始終先詢問),例如[封存工作階段](#work-across-sessions)。相當於 CLI 中的 `--dangerously-skip-permissions`。在 Pro 和 Max 方案上,在您的設定 → Claude Code 中的「允許略過權限模式」下啟用它;在 Team 和 Enterprise 方案上沒有設定切換,組織政策會控制它。僅在沙箱容器或虛擬機中使用此選項。 |104| **略過權限** | `bypassPermissions` | Claude 執行時不會出現權限提示,除了[任何模式都不會自動核准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)、當 Claude [在外部網站上執行操作](#browse-external-sites)時的安全分類器,或桌面操作,例如刪除工作階段(但不包括[封存工作階段](#work-across-sessions))。相當於 CLI 中的 `--dangerously-skip-permissions`。在 Pro 和 Max 方案上,在您的設定 → Claude Code 中的「允許略過權限模式」下啟用它;在 Team 和 Enterprise 方案上沒有設定切換,組織政策會控制它。僅在沙箱容器或虛擬機中使用此選項。 |

105 105 

106Code 標籤的早期版本將這些模式標記為「詢問權限」、「自動接受編輯」和「Plan 模式」。106Code 標籤的早期版本將這些模式標記為「詢問權限」、「自動接受編輯」和「Plan 模式」。

107 107 


131 131 

132「瀏覽器」窗格也可以從您的專案中開啟靜態 HTML 檔案、PDF、影像和影片。在聊天中點擊 HTML、PDF、影像或影片路徑以在那裡開啟它。132「瀏覽器」窗格也可以從您的專案中開啟靜態 HTML 檔案、PDF、影像和影片。在聊天中點擊 HTML、PDF、影像或影片路徑以在那裡開啟它。

133 133 

134<Note>

135 在 [SSH 工作階段](#ssh-sessions)中,Claude 無法在「瀏覽器」窗格中開啟您的應用程式,因為它在那裡沒有該窗格的工具。若要自行查看應用程式,請[將其連接埠轉送到您的電腦](#reach-a-port-on-the-remote-machine)。

136</Note>

137 

134從「瀏覽器」窗格,您可以:138從「瀏覽器」窗格,您可以:

135 139 

136* 直接在「瀏覽器」窗格中與執行中的應用程式互動140* 直接在「瀏覽器」窗格中與執行中的應用程式互動


218 222 

219<Note>223<Note>

220 PR 監控需要在您的機器上安裝並驗證 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安裝 `gh`,Desktop 會在您首次嘗試建立 PR 時提示您安裝它。224 PR 監控需要在您的機器上安裝並驗證 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安裝 `gh`,Desktop 會在您首次嘗試建立 PR 時提示您安裝它。

225 

226 在 [SSH 工作階段](#ssh-sessions)中,請在點擊**建立 PR** 之前於遠端機器上設定 `git` 和 `gh`,因為 Claude 會在那裡推送分支並執行 `gh pr create`。請自行在那裡安裝 `gh`,因為 Desktop 在 SSH 工作階段中不會提示您安裝。接著在那裡確認 `git push` 可以正常運作,且 `gh auth status` 顯示您已登入。

221</Note>227</Note>

222 228 

223<h2 id="arrange-your-workspace">229<h2 id="arrange-your-workspace">


453 459 

454Claude Code 在工作階段間應用四個安全行為:460Claude Code 在工作階段間應用四個安全行為:

455 461 

456* 在存檔任何工作階段之前,Claude 會先詢問您。您會在每個權限模式中看到核准卡片,包括自動和略過權限。462* 在 Claude 存檔工作階段之前,您會收到核准卡片,但自動模式和略過權限模式除外,在這兩種模式下,Claude 可以在沒有核准卡片的情況下存檔工作階段。若要被詢問,請切換到 Manual。

457* 透過此使用介面,Claude 無法從沒有人監視的工作階段(例如排程任務執行)傳送跨工作階段訊息,也無法傳遞訊息到這類工作階段。463* 透過此使用介面,Claude 無法從沒有人監視的工作階段(例如排程任務執行)傳送跨工作階段訊息,也無法傳遞訊息到這類工作階段。

458* Claude Code 會根據接收工作階段的[入站控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)檢查來自此使用介面的每條訊息,即使接收工作階段本身沒有[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging#availability)。如果您在接收工作階段中將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設定為 `refuse`,Claude Code 會丟棄來自此使用介面的訊息。Claude Code 會向 Claude 桌面應用程式報告拒絕。在 v2.1.234 之前,Claude Code 會丟棄來自此使用介面到沒有跨工作階段傳訊的接收工作階段的每條訊息。464* Claude Code 會根據接收工作階段的[入站控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)檢查來自此使用介面的每條訊息,即使接收工作階段本身沒有[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging#availability)。如果您在接收工作階段中將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設定為 `refuse`,Claude Code 會丟棄來自此使用介面的訊息。Claude Code 會向 Claude 桌面應用程式報告拒絕。在 v2.1.234 之前,Claude Code 會丟棄來自此使用介面到沒有跨工作階段傳訊的接收工作階段的每條訊息。

459* Claude Code 引用每條傳入訊息並將其歸因於傳送它的工作階段,Claude 在對其進行操作時仍然遵循接收工作階段自己的權限設定。465* Claude Code 引用每條傳入訊息並將其歸因於傳送它的工作階段,Claude 在對其進行操作時仍然遵循接收工作階段自己的權限設定。


546 552 

547[Skills](/docs/zh-TW/skills) 擴展 Claude 可以執行的操作。Claude 在相關時自動載入它們,或者您可以直接呼叫一個:在提示框中輸入 `/` 或點擊 **+** 按鈕並選擇 **Slash commands** 以瀏覽可用的內容。這包括 [built-in commands](/docs/zh-TW/commands)、您的 [custom skills](/docs/zh-TW/skills#create-your-first-skill)、來自您程式碼庫的專案 skills,以及來自任何 [installed plugins](/docs/zh-TW/plugins/install) 的 skills。選擇一個,它會在輸入欄位中突出顯示。在其後輸入您的任務並照常傳送。553[Skills](/docs/zh-TW/skills) 擴展 Claude 可以執行的操作。Claude 在相關時自動載入它們,或者您可以直接呼叫一個:在提示框中輸入 `/` 或點擊 **+** 按鈕並選擇 **Slash commands** 以瀏覽可用的內容。這包括 [built-in commands](/docs/zh-TW/commands)、您的 [custom skills](/docs/zh-TW/skills#create-your-first-skill)、來自您程式碼庫的專案 skills,以及來自任何 [installed plugins](/docs/zh-TW/plugins/install) 的 skills。選擇一個,它會在輸入欄位中突出顯示。在其後輸入您的任務並照常傳送。

548 554 

549您可以在 Claude 正在工作時傳送命令,就像任何其他訊息一樣,會話在回合完成後會回到閒置狀態。在 v2.1.206 之前,在回合中途傳送的命令可能會導致會話顯示為執行中,而您之後傳送的訊息未被傳遞。555您可以在 Claude 正在工作時傳送命令,就像傳送任何其他訊息一樣,工作階段會在回合完成後回到閒置狀態。

550 556 

551本機會話從 `~/.claude/skills/` 載入您的個人 skills。[SSH](#ssh-sessions) 會話從遠端主機的主目錄讀取 `~/.claude/skills/`,而不是從您的機器。557本機會話從 `~/.claude/skills/` 載入您的個人 skills。[SSH](#ssh-sessions) 會話從遠端主機的主目錄讀取 `~/.claude/skills/`,而不是從您的機器。

552 558 


693 699 

694* **`true`**:Claude 自動尋找並使用空閒連接埠。適合大多數開發伺服器。700* **`true`**:Claude 自動尋找並使用空閒連接埠。適合大多數開發伺服器。

695* **`false`**:Claude 失敗並出現錯誤。當您的伺服器必須使用特定連接埠時使用此選項,例如 OAuth 回呼或 CORS 允許清單。701* **`false`**:Claude 失敗並出現錯誤。當您的伺服器必須使用特定連接埠時使用此選項,例如 OAuth 回呼或 CORS 允許清單。

696* **未設定(預設)**:Claude 詢問伺服器是否需要該確切連接埠,然後儲存您的答案。702* **未設定(預設)**:您的伺服器會取得下一個空閒連接埠,與 `true` 相同,但下述一種情況除外。在 Claude Desktop v2.37337.0 之前,Claude 會改為詢問伺服器是否需要該確切連接埠,然後將您的答案儲存在 `launch.json` 中。

697 703 

698當 Claude 選擇不同的連接埠時,它會透過 `PORT` 環境變數將指派的連接埠傳遞給您的伺服器。704如果您偏好的連接埠已在使用且未設定 `autoPort`,當下列所有條件都成立時,您的伺服器會保持停止狀態:

705 

706* 您透過 `npm`、`yarn`、`pnpm` 或 `bun` 指令碼啟動伺服器。

707* 您偏好的連接埠寫死在該指令碼中,或 Claude 無法檢查該指令碼。

708* 您未在 `runtimeArgs` 中傳遞連接埠。

709 

710在這種情況下,請釋放該連接埠、移除寫死的值,或變更 `port` 以符合指令碼。改為設定 `"autoPort": true` 僅適用於會讀取 `PORT` 的指令碼。

711 

712讓您的伺服器從 `PORT` 環境變數讀取其連接埠,該變數帶有指派的連接埠。當 Claude 將您的伺服器移至不同的連接埠時,也會改寫 `runtimeArgs` 中的 `--port` 或 `-p` 值以使其相符。

699 713 

700<h4 id="examples">714<h4 id="examples">

701 範例715 範例


785 本機會話799 本機會話

786</h3>800</h3>

787 801 

788桌面應用程式並不總是繼承您的完整 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(如 `~/.zshrc` 或 `~/.bashrc`)以提取 `PATH` 和一組固定的 Claude Code 變數,但您在那裡匯出的其他變數不會被拾取。在 Windows 上,應用程式繼承使用者和系統環境變數,但不讀取 PowerShell 設定檔。802桌面應用程式並不總是繼承您完整的 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(如 `~/.zshrc` 或 `~/.bashrc`),為 Claude Code 提供 `PATH` 和一組固定的 Claude Code 變數,但不包括您在那裡匯出的其他變數。在 Windows 上,應用程式繼承使用者和系統環境變數,但不讀取 PowerShell 設定檔。

789 803 

790若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/docs/zh-TW/env-vars)。804若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/docs/zh-TW/env-vars)。

791 805 


840 854 

841Linux 或 macOS 遠端機器需要受支援的處理器、具備 SFTP 的 SSH 伺服器、未以 `noexec` 掛載的安裝資料夾、可正常運作的 shell,以及網路存取。請在連接前,或在登入後連線失敗時,檢查每項需求:855Linux 或 macOS 遠端機器需要受支援的處理器、具備 SFTP 的 SSH 伺服器、未以 `noexec` 掛載的安裝資料夾、可正常運作的 shell,以及網路存取。請在連接前,或在登入後連線失敗時,檢查每項需求:

842 856 

843* **系統**:x86\_64 或 arm64 處理器。該機器也必須符合 Claude Code 的[系統需求](/docs/zh-TW/setup#system-requirements)。857* **系統**:x86\_64 或 arm64 處理器。該機器也必須符合 Claude Code 的[系統需求](/docs/zh-TW/setup#system-requirements)。在 Linux 上,Claude Code 需要 glibc 2.17 或更新版本,或 musl。若要查看機器使用的是哪一種,請在該機器上執行 `ldd --version`。在以 musl 為基礎的發行版(例如 Alpine Linux)上,也請安裝 [Claude Code 所需的套件](/docs/zh-TW/setup#alpine-linux-and-musl-based-distributions)。

844* **SFTP**:SSH 伺服器必須提供 SFTP 子系統,可透過其 `sshd_config` 中的 `Subsystem sftp` 行開啟。若要檢查,請在您電腦上的終端機中使用 `sftp` 連接到相同的主機和連接埠。正常運作的伺服器會顯示 `sftp>` 提示字元。858* **SFTP**:SSH 伺服器必須提供 SFTP 子系統,可透過其 `sshd_config` 中的 `Subsystem sftp` 行開啟。若要檢查,請在您電腦上的終端機中使用 `sftp` 連接到相同的主機和連接埠。正常運作的伺服器會顯示 `sftp>` 提示字元。

845* **每個連線的工作階段數**:macOS 和 Linux 上的 Desktop 會在一個 SSH 連線上開啟多個工作階段。如果伺服器的 `sshd_config` 設定了 `MaxSessions 1`,請將其調高,例如調至 OpenSSH 的預設值 10。859* **每個連線的工作階段數**:macOS 和 Linux 上的 Desktop 會在一個 SSH 連線上開啟多個工作階段。如果伺服器的 `sshd_config` 設定了 `MaxSessions 1`,請將其調高,例如調至 OpenSSH 的預設值 10。

846* **安裝資料夾**:Desktop 會在您家目錄下的 `~/.claude/remote/` 安裝輔助程式和 Claude Code。它會從該處執行它們,因此該資料夾不能位於以 `noexec` 掛載的檔案系統上。請在每位連接使用者的家目錄中預留約 1 GB 的磁碟空間。860* **安裝資料夾**:Desktop 會在您家目錄下的 `~/.claude/remote/` 安裝輔助程式和 Claude Code。它會從該處執行它們,因此該資料夾不能位於以 `noexec` 掛載的檔案系統上。請在每位連接使用者的家目錄中預留約 1 GB 的磁碟空間。關於該資料夾包含的內容,請參閱[遠端機器上的檔案和程序](#files-and-processes-on-the-remote-machine)。

847* **Shell**:遠端機器上為您帳戶設定的 shell 必須能執行透過 SSH 傳送的命令,就像 Bash、Zsh 和 `sh` 一樣861* **Shell**:遠端機器上為您帳戶設定的 shell 必須能執行透過 SSH 傳送的命令,就像 Bash、Zsh 和 `sh` 一樣

848* **網路**:Claude Code 在遠端機器上執行並從該處發出網路請求,因此該機器需要 [Claude Code 所需的網路存取](/docs/zh-TW/network-config#network-access-requirements)。如果該機器無法下載 Claude Code,Desktop 會在您的電腦上下載並上傳。Claude Code 的其他請求仍從遠端機器發出。862* **網路**:Claude Code 在遠端機器上執行並從該處發出網路請求,因此該機器需要 [Claude Code 所需的網路存取](/docs/zh-TW/network-config#network-access-requirements)。如果該機器無法下載 Claude Code,Desktop 會在您的電腦上下載並上傳。Claude Code 的其他請求仍從遠端機器發出。

849 863 


878 892 

879在 **SSH host** 欄位中輸入 `devbox`。893在 **SSH host** 欄位中輸入 `devbox`。

880 894 

895<h5 id="use-variables-from-your-shell-in-a-proxycommand">

896 在 `ProxyCommand` 中使用 shell 的變數

897</h5>

898 

899若要在 `ProxyCommand` 或 `Match exec` 命令中使用您自己的環境變數,請在 shell 啟動檔(例如 `~/.zshrc`)中匯出它,然後結束並重新開啟 Desktop。Desktop 啟動時會讀取您的登入 shell 所匯出的內容,並保留這些值直到您結束 Desktop 為止。

900 

901這需要 Claude Desktop v2.37337.0 或更新版本,以及接受 `-0` 的 `env` 命令;您可以在電腦上的終端機中執行 `env -0` 來檢查。

902 

881<h5 id="raise-the-ssh-connection-timeout">903<h5 id="raise-the-ssh-connection-timeout">

882 提高 SSH 連線逾時904 提高 SSH 連線逾時

883</h5>905</h5>


894 916 

895`ssh` 會使用它為主機找到的第一個值,因此請將該項目放在任何設定 `ConnectTimeout` 的 `Host *` 項目之上。若要確認,請在您電腦上的終端機中執行 `ssh -G devbox`。其輸出會包含 `connecttimeout 120`。變更值後,請結束並重新開啟 Desktop。917`ssh` 會使用它為主機找到的第一個值,因此請將該項目放在任何設定 `ConnectTimeout` 的 `Host *` 項目之上。若要確認,請在您電腦上的終端機中執行 `ssh -G devbox`。其輸出會包含 `connecttimeout 120`。變更值後,請結束並重新開啟 Desktop。

896 918 

919<h5 id="forwarding-settings-that-desktop-leaves-off">

920 Desktop 保持關閉的轉送設定

921</h5>

922 

923在連往遠端機器的連線上,Desktop 會讓 `ForwardAgent`、`ForwardX11`、`LocalForward`、`RemoteForward`、`DynamicForward` 和 `Tunnel` 保持關閉,即使您的 SSH 設定開啟了它們。在[終端機](#run-commands-in-the-terminal)或 `!` 命令中,您的轉送設定預期[只會有時套用](#limits-while-desktop-is-disconnected),因為 Desktop 可能會在該處啟動一個遵循這些設定的獨立 `ssh`。

924 

925* **若要連接遠端機器上的連接埠**:[自行轉送](#reach-a-port-on-the-remote-machine)

926* **若要從遠端機器使用您自己的金鑰**:在遠端機器本身設定憑證,例如用於 `git push`

927 

928若要避免 Desktop 轉送您的 SSH agent 或連接埠,請在您電腦上的終端機中執行 `ssh -G devbox`。接著以 Desktop 可能執行的方式再執行一次,帶入它印出的 `hostname` 和 `user` 值,例如 `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`。第二次的輸出可能會顯示第一次略過的 `Match` 區塊中的設定。

929 

930在兩次輸出中尋找內容不是 `no` 的 `forwardagent` 行,以及以 `localforward`、`remoteforward` 或 `dynamicforward` 開頭的行。如果找到,請從您的 SSH 設定中移除該設定。對於您的 `ProxyCommand` 透過 `ssh` 連接的主機,也請比照辦理。

931 

932<h4 id="reach-a-port-on-the-remote-machine">

933 連接遠端機器上的連接埠

934</h4>

935 

936若要開啟在遠端機器上執行的伺服器,例如連接埠 3000 上的開發伺服器,請自行轉送該連接埠。在您電腦上的終端機中,使用 `-L` 和您連接的主機(例如 `devbox`)執行 `ssh`:

937 

938```bash theme={null}

939ssh -N -L 3000:localhost:3000 devbox

940```

941 

942如果您在連線上填寫了 **SSH port** 或 **SSH key (optional)**,請加上帶有相同值的 `-p` 或 `-i`。讓該命令保持執行,並在您電腦上的瀏覽器中開啟 `http://localhost:3000`,即可連接遠端機器的連接埠 3000。如果 `ssh` 印出 `open failed: administratively prohibited`,請要求該機器的管理員允許 TCP 轉送,這由 SSH 伺服器 `sshd_config` 中的 `AllowTcpForwarding` 控制。

943 

897<h4 id="windows-remote-machines">944<h4 id="windows-remote-machines">

898 Windows 遠端機器945 Windows 遠端機器

899</h4>946</h4>


925Claude Code 以程序形式在遠端機器上執行,由 Desktop 安裝在該處的背景輔助程式管理,因此它不需要您的 SSH 連線就能持續執行。本節所述的行為需要 Claude Desktop v2.31226.0 或更新版本。972Claude Code 以程序形式在遠端機器上執行,由 Desktop 安裝在該處的背景輔助程式管理,因此它不需要您的 SSH 連線就能持續執行。本節所述的行為需要 Claude Desktop v2.31226.0 或更新版本。

926 973 

927<Warning>974<Warning>

928 如果您以 Claude 帳戶登入 Desktop,請勿指望任務能整夜執行。Desktop 只有在執行中且已連線時才會為任務更新該登入,因此在您中斷連線後,任務的登入可能會過期,任務隨之停止。您中斷連線時剩餘的時間各有不同。975 如果您以 Claude 帳戶登入 Desktop,請勿指望任務能整夜執行。Desktop 只有在執行中且已連線時才會為任務更新該登入,因此在您中斷連線後,任務的登入可能會過期,任務隨之停止。您中斷連線時剩餘的時間各有不同,可能只有幾分鐘。

929 976 

930 目前已完成的工作會保留在遠端機器上,您回來時可以傳送訊息繼續。977 目前已完成的工作會保留在遠端機器上,您回來時可以傳送訊息繼續。

931 978 


1076 1123 

1077此欄位需要 Claude Desktop v1.44121.0 或更新版本。如果您的組織限制工作階段可使用的資料夾,Desktop 會隱藏此欄位,並將 worktree 保留在專案內。1124此欄位需要 Claude Desktop v1.44121.0 或更新版本。如果您的組織限制工作階段可使用的資料夾,Desktop 會隱藏此欄位,並將 worktree 保留在專案內。

1078 1125 

1126<h4 id="files-and-processes-on-the-remote-machine">

1127 遠端機器上的檔案和程序

1128</h4>

1129 

1130Desktop 會在每位連接到 Linux 或 macOS 遠端機器之使用者的家目錄下的 `~/.claude/remote/` 安裝輔助程式和 Claude Code。輔助程式不會監聽任何網路連接埠,但 Claude Code 及其啟動的程式(例如 MCP 伺服器和開發伺服器)可能會。

1131 

1132| 資料夾 | 內容 |

1133| - | - |

1134| `~/.claude/remote/srv/` | 輔助程式,每個版本一個資料夾 |

1135| `~/.claude/remote/ccd-cli/` | Claude Code,每個版本一個檔案 |

1136| `~/.claude/remote/run/` | 輔助程式的執行階段檔案,例如其 socket 和日誌,每台連接的電腦一個資料夾 |

1137| `~/.claude/remote/plugins/` | Desktop 從使用者電腦複製的外掛 |

1138| [`~/.claude/uploads/`](/docs/zh-TW/claude-directory#clear-local-data) | 使用者附加到訊息的檔案,每個工作階段一個資料夾 |

1139 

1140若要列出某位使用者的程序,請以該使用者身分在遠端機器上執行 `pgrep -fl "$HOME/.claude/remote/"`,或將 `$HOME` 替換為該使用者的家目錄:

1141 

1142* **輔助程式**:每台連接的電腦有一個或多個 `server` 程序

1143* **Claude Code**:輔助程式為使用者的工作階段啟動的程序,每個都來自以其版本命名的檔案,例如 `2.1.295-…`

1144 

1145Desktop 透過使用者的 SSH 連線,經由 `~/.claude/remote/run/` 下輔助程式資料夾中的 Unix socket `rpc.sock` 連接輔助程式。除了 root 之外,機器上的其他使用者無法連接到該 socket,因為它的模式為 600,且其資料夾的模式為 700。

1146 

1147關於輔助程式何時會自行停止,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。

1148 

1149若要為某位使用者移除輔助程式和 Claude Code:

1150 

1151<Steps>

1152 <Step title="結束 Desktop">

1153 在該使用者用來連接的每台電腦上結束 Desktop。Desktop 會在下次連接時再次安裝這兩個程式,且它可能會自行重新連線。

1154 </Step>

1155 

1156 <Step title="結束程序">

1157 以該使用者身分登入遠端機器,對 [`pgrep`](#files-and-processes-on-the-remote-machine) 列出的每個程序 ID 執行 `kill`。

1158 </Step>

1159 

1160 <Step title="刪除資料夾">

1161 刪除 `~/.claude/remote/`。若要移除 Claude Code 本身位於 `~/.claude/` 和 `~/.claude.json` 的檔案,請參閱[移除設定檔](/docs/zh-TW/setup#remove-configuration-files)。

1162 </Step>

1163</Steps>

1164 

1165<h5 id="end-one-session’s-process">

1166 結束單一工作階段的程序

1167</h5>

1168 

1169若要結束單一工作階段的 Claude Code 程序,請在 Desktop 已連接到遠端機器時,於 Desktop 中[封存該工作階段](#work-in-parallel-with-sessions)。該程序在其任務完成後以及您結束 Desktop 後仍會持續執行。

1170 

1171在封存具有 worktree 的工作階段之前,請參閱[使用工作階段平行工作](#work-in-parallel-with-sessions)。

1172 

1173<h5 id="see-who-connected-to-the-remote-machine">

1174 查看誰連接到遠端機器

1175</h5>

1176 

1177若要查出誰連接到遠端機器,請讀取該機器上 SSH 伺服器的日誌,其中來自 Desktop 的登入看起來就像來自終端機的登入。Desktop 在 macOS 或 Linux 上時,預期每次 Desktop 連接都會有一筆項目,而不是每個工作階段一筆。

1178 

1179<h4 id="use-mcp-servers-set-up-on-the-remote-machine">

1180 使用在遠端機器上設定的 MCP 伺服器

1181</h4>

1182 

1183若要在 SSH 工作階段中使用來自 `~/.claude.json` 或專案 `.mcp.json` 的 [MCP 伺服器](/docs/zh-TW/mcp),請在遠端機器上的這些檔案中設定它。Claude Code 會在該處啟動其 stdio 伺服器,因此請在遠端機器上安裝這些伺服器所執行的命令。關於來自 `claude_desktop_config.json` 的伺服器,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。

1184 

1079<h4 id="open-an-ssh-session-from-a-link">1185<h4 id="open-an-ssh-session-from-a-link">

1080 從連結開啟 SSH 工作階段1186 從連結開啟 SSH 工作階段

1081</h4>1187</h4>


1207* **Cowork**:這些鍵都不適用於 [Cowork](https://claude.com/docs/cowork/overview) 工作階段或 Cowork 排程任務1313* **Cowork**:這些鍵都不適用於 [Cowork](https://claude.com/docs/cowork/overview) 工作階段或 Cowork 排程任務

1208* **雲端工作階段**:這些鍵都不會改變[雲端工作階段](#cloud-sessions)是否可用。若要將其關閉,請使用 [Admin console 控制項](#admin-console-controls)下的 **Cloud sessions** 設定。1314* **雲端工作階段**:這些鍵都不會改變[雲端工作階段](#cloud-sessions)是否可用。若要將其關閉,請使用 [Admin console 控制項](#admin-console-controls)下的 **Cloud sessions** 設定。

1209 1315 

1210調整此範例時,請檢查主機名稱和 Desktop 版本:1316調整此範例時,請檢查主機名稱、Desktop 版本和檔案的權限:

1211 1317 

1212* **主機名稱**:請確保 `sshHostAllowlist` 中有一個模式符合每個 `sshConfigs` 項目的主機名稱(不含 `user@`),否則開發人員將無法連接到它。有關 Desktop 如何比對主機名稱,請參閱[限制使用者可以連接的 SSH 主機](#restrict-which-ssh-hosts-users-can-connect-to)。1318* **主機名稱**:請確保 `sshHostAllowlist` 中有一個模式符合每個 `sshConfigs` 項目的主機名稱(不含 `user@`),否則開發人員將無法連接到它。有關 Desktop 如何比對主機名稱,請參閱[限制使用者可以連接的 SSH 主機](#restrict-which-ssh-hosts-users-can-connect-to)。

1213* **版本**:`disableDesktopLocalSessions` 需要 Claude Desktop v1.37937.0 或更新版本1319* **版本**:`disableDesktopLocalSessions` 需要 Claude Desktop v1.37937.0 或更新版本

1320* **檔案權限**:請確保每位開發人員在電腦上的帳戶可以讀取受管設定檔。Desktop 不會套用該帳戶無法讀取之檔案中的鍵,Claude Code 也會[在沒有這些鍵的情況下啟動](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)。

1214 1321 

1215請將這三個鍵放在同一個[受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)中,也就是您所提供的最高優先順序來源。如果您提供[伺服器管理設定](/docs/zh-TW/server-managed-settings),也請在每台電腦上最高優先順序的 MDM 政策或受管設定檔中保留這三個鍵的副本。Desktop 會在啟動時擷取伺服器管理設定,在擷取成功之前,套用的是電腦上的副本。1322請將這三個鍵放在同一個[受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)中,也就是您所提供的最高優先順序來源。如果您提供[伺服器管理設定](/docs/zh-TW/server-managed-settings),也請在每台電腦上最高優先順序的 MDM 政策或受管設定檔中保留這三個鍵的副本。Desktop 會在啟動時擷取伺服器管理設定,在擷取成功之前,套用的是電腦上的副本。

1216 1323 


1558 1665 

1559如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。1666如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。

1560 1667 

1668<h3 id="ssh-connection-fails-after-you-log-in">

1669 登入後 SSH 連線失敗

1670</h3>

1671 

1672在此表格中找到卡片的標題,或錯誤訊息結尾的代碼,然後依照最後一欄的說明操作。若要查看訊息,請在失敗卡片上選擇 **View details**。

1673 

1674| 卡片上的標題 | 代碼 | 處理方式 |

1675| - | - | - |

1676| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | 在伺服器的 `sshd_config` 中開啟 SFTP,如[遠端機器要求](#remote-machine-requirements-for-ssh-sessions)中所述 |

1677| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | 在您電腦的終端機中使用 `sftp` 連線至同一主機,以查看是什麼阻止了它,然後檢查 Desktop 訊息中指出的設定和檔案 |

1678| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | 提高伺服器 `sshd_config` 中的 `MaxSessions`,例如提高至 OpenSSH 的預設值 10 |

1679| `<host> is out of disk space` | `[ENOSPC]` 或 `[EDQUOT]` | 釋放遠端機器上您家目錄或 `/tmp` 中的空間或配額 |

1680| `This computer is out of disk space` | `[ENOSPC]` 或 `[EDQUOT]`,出現在以 `Couldn't prepare the deploy locally` 開頭的訊息中 | 釋放您電腦上的空間 |

1681| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | 等待一分鐘,然後重試。如果持續失敗,請在遠端機器上執行訊息中指出的命令,以查看 Claude Code 是否在該處有回應。 |

1682 

1683對於任何其他訊息,請檢查[遠端機器要求](#remote-machine-requirements-for-ssh-sessions)。

1684 

1561<h3 id="app-won’t-quit">1685<h3 id="app-won’t-quit">

1562 應用程式無法退出1686 應用程式無法退出

1563</h3>1687</h3>

env-vars.md +10 −4

Details

268| `CLAUDE_CODE_DISABLE_FAST_MODE` | 設定為 `1` 可停用[快速模式](/docs/zh-TW/fast-mode) |268| `CLAUDE_CODE_DISABLE_FAST_MODE` | 設定為 `1` 可停用[快速模式](/docs/zh-TW/fast-mode) |

269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | 設定為 `1` 可停用「How is Claude doing?」工作階段品質問卷。當設定了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,問卷也會停用,除非 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` 重新選擇加入。若要設定取樣率而非直接停用,請使用 [`feedbackSurveyRate`](/docs/zh-TW/settings-reference#feedbacksurveyrate) 設定。請參閱[工作階段品質問卷](/docs/zh-TW/data-usage#session-quality-surveys) |269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | 設定為 `1` 可停用「How is Claude doing?」工作階段品質問卷。當設定了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,問卷也會停用,除非 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` 重新選擇加入。若要設定取樣率而非直接停用,請使用 [`feedbackSurveyRate`](/docs/zh-TW/settings-reference#feedbacksurveyrate) 設定。請參閱[工作階段品質問卷](/docs/zh-TW/data-usage#session-quality-surveys) |

270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 設定為 `1` 可停用檔案[檢查點功能](/docs/zh-TW/checkpointing)。`/rewind` 命令將無法還原程式碼變更。覆寫 [`fileCheckpointingEnabled`](/docs/zh-TW/settings-reference#filecheckpointingenabled) 設定 |270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 設定為 `1` 可停用檔案[檢查點功能](/docs/zh-TW/checkpointing)。`/rewind` 命令將無法還原程式碼變更。覆寫 [`fileCheckpointingEnabled`](/docs/zh-TW/settings-reference#filecheckpointingenabled) 設定 |

271| `CLAUDE_CODE_DISABLE_FILE_MENTIONS` | 設為 `1` 可阻止 Claude Code 展開檔案和目錄的 [`@` 提及](/docs/zh-TW/common-workflows#reference-files-and-directories)。Claude 會改為取得所提及的路徑,並附上請它使用檔案工具讀取這些路徑的說明。在[專案和本機設定](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)中會被忽略。需要 Claude Code v2.1.299 或更新版本 |

271| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | 設定為 `1` 可從 Claude 的上下文中移除內建的提交與 PR 工作流程指令以及 git 狀態快照。在使用您自己的 git 工作流程 skill 時很有用。設定時優先於 [`includeGitInstructions`](/docs/zh-TW/settings-reference#includegitinstructions) 設定 |272| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | 設定為 `1` 可從 Claude 的上下文中移除內建的提交與 PR 工作流程指令以及 git 狀態快照。在使用您自己的 git 工作流程 skill 時很有用。設定時優先於 [`includeGitInstructions`](/docs/zh-TW/settings-reference#includegitinstructions) 設定 |

272| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | 設定為 `1` 可阻止 Claude Code 讀取以 `-c` 傳遞給 shell 的腳本(例如 `bash -c 'rm -rf ~'`)來檢查[關鍵路徑](/docs/zh-TW/permission-modes#removals-inside-nested-commands-and-inline-scripts)移除。Claude Code 仍會檢查這些腳本中的 shell 變數與位置參數目標,其他關鍵路徑檢查也會持續執行。請在啟動 Claude Code 的環境中設定,因為 Claude Code 會忽略透過設定 `env` 區塊傳遞的副本。需要 Claude Code v2.1.288 或更新版本 |273| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | 設定為 `1` 可阻止 Claude Code 讀取以 `-c` 傳遞給 shell 的腳本(例如 `bash -c 'rm -rf ~'`)來檢查[關鍵路徑](/docs/zh-TW/permission-modes#removals-inside-nested-commands-and-inline-scripts)移除。Claude Code 仍會檢查這些腳本中的 shell 變數與位置參數目標,其他關鍵路徑檢查也會持續執行。請在啟動 Claude Code 的環境中設定,因為 Claude Code 會忽略透過設定 `env` 區塊傳遞的副本。需要 Claude Code v2.1.288 或更新版本 |

273| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | 設為 `1` 可防止在 Anthropic API 上將 Opus 4 和 Opus 4.1 自動重新對應至目前的 Opus 版本。當您刻意想要固定使用較舊的模型時使用。重新對應不會在 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 上執行 |274| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | 設為 `1` 可防止在 Anthropic API 上將 Opus 4 和 Opus 4.1 自動重新對應至目前的 Opus 版本。當您刻意想要固定使用較舊的模型時使用。重新對應不會在 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 上執行 |


328| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆寫用於連線至 IDE 擴充功能的主機位址。預設情況下,Claude Code 會自動偵測正確的位址,包括 WSL 至 Windows 的路由 |329| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆寫用於連線至 IDE 擴充功能的主機位址。預設情況下,Claude Code 會自動偵測正確的位址,包括 WSL 至 Windows 的路由 |

329| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 設為 `1` 可略過 IDE 擴充功能的自動安裝。等同於將 [`autoInstallIdeExtension`](/docs/zh-TW/settings-reference#autoinstallideextension) 設為 `false` |330| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 設為 `1` 可略過 IDE 擴充功能的自動安裝。等同於將 [`autoInstallIdeExtension`](/docs/zh-TW/settings-reference#autoinstallideextension) 設為 `false` |

330| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 設為 `1` 可在連線期間略過 IDE 鎖定檔項目的驗證。當 IDE 正在執行但自動連線仍找不到它時使用 |331| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 設為 `1` 可在連線期間略過 IDE 鎖定檔項目的驗證。當 IDE 正在執行但自動連線仍找不到它時使用 |

332| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | [閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction)套用至對話時的上下文大小(以 token 為單位)(預設:`200000`)。接受正整數,其他任何值都會被忽略。低於 `100000` 的值會提高至 `100000`,即最低閾值。符合條件的對話預設會開啟閒置壓縮。若要關閉,請將 `idleCompaction` 設為 `false`。需要 Claude Code v2.1.290 或更新版本 |

331| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 在 Agent 工具拒絕再產生另一個 subagent 之前,一個工作階段中可同時執行的 [subagent](/docs/zh-TW/sub-agents#concurrent-subagent-limit) 數量(預設:20)。接受純數字的正整數;其他任何值都會被忽略,因此此變數可調整上限,但無法停用上限。需要 Claude Code v2.1.217 或更新版本 |333| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 在 Agent 工具拒絕再產生另一個 subagent 之前,一個工作階段中可同時執行的 [subagent](/docs/zh-TW/sub-agents#concurrent-subagent-limit) 數量(預設:20)。接受純數字的正整數;其他任何值都會被忽略,因此此變數可調整上限,但無法停用上限。需要 Claude Code v2.1.217 或更新版本 |

332| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | 覆寫 Claude Code 為作用中模型假設的上下文視窗大小。自 v2.1.193 起,其套用方式取決於 Claude Code 如何解析模型 ID;請參閱[為閘道或自訂模型 ID 修正視窗](/docs/zh-TW/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。當透過 `ANTHROPIC_BASE_URL` 路由至某個模型,而其上下文視窗與其名稱對應的內建大小不符時使用 |334| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | 覆寫 Claude Code 為作用中模型假設的上下文視窗大小。自 v2.1.193 起,其套用方式取決於 Claude Code 如何解析模型 ID;請參閱[為閘道或自訂模型 ID 修正視窗](/docs/zh-TW/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。當透過 `ANTHROPIC_BASE_URL` 路由至某個模型,而其上下文視窗與其名稱對應的內建大小不符時使用 |

333| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Claude Code 傳送給模型的每個 MCP 工具描述與每個 MCP 伺服器指令的最大長度(字元數)(預設:2048)。Claude Code 會[截斷較長的文字](/docs/zh-TW/mcp#for-mcp-server-authors)。接受純數字的正整數。其他任何值都會被忽略並套用預設值。需要 Claude Code v2.1.280 或更新版本 |335| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Claude Code 傳送給模型的每個 MCP 工具描述與每個 MCP 伺服器指令的最大長度(字元)。您設定的值會取代兩個[預設上限](/docs/zh-TW/mcp#for-mcp-server-authors):4096,以及 Claude 透過工具搜尋載入之工具描述的 16384。Claude Code 會截斷較長的文字。接受純數字的正整數。其他任何值都會被忽略並套用預設值。需要 Claude Code v2.1.280 或更新版本 |

334| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 設定大多數請求的最大輸出 token 數。預設值與上限因模型而異;請參閱[最大輸出 token 數](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison)。Claude Code 會將超過模型上限的值降至上限。對於 Claude Code 無法解析為已知模型的模型 ID,預設值為 32000,上限為 128000。增加此值會減少觸發[自動壓縮](/docs/zh-TW/costs#reduce-token-usage)之前可用的有效上下文視窗 |336| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 設定大多數請求的最大輸出 token 數。預設值與上限因模型而異;請參閱[最大輸出 token 數](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison)。Claude Code 會將超過模型上限的值降至上限。對於 Claude Code 無法解析為已知模型的模型 ID,預設值為 32000,上限為 128000。增加此值會減少觸發[自動壓縮](/docs/zh-TW/costs#reduce-token-usage)之前可用的有效上下文視窗 |

335| `CLAUDE_CODE_MAX_RETRIES` | 覆寫失敗 API 請求的重試次數(預設:10)。自 v2.1.186 起上限為 15;自 v2.1.199 起,`CLAUDE_CODE_RETRY_WATCHDOG` 會提高預設值並移除上限。對於需要等候較長服務中斷的無人值守工作階段,請改為設定 `CLAUDE_CODE_RETRY_WATCHDOG` |337| `CLAUDE_CODE_MAX_RETRIES` | 覆寫失敗 API 請求的重試次數(預設:10)。自 v2.1.186 起上限為 15;自 v2.1.199 起,`CLAUDE_CODE_RETRY_WATCHDOG` 會提高預設值並移除上限。對於需要等候較長服務中斷的無人值守工作階段,請改為設定 `CLAUDE_CODE_RETRY_WATCHDOG` |

336| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | 已於 v2.1.224 移除,現在不具作用。先前用於限制 Claude 在一個工作階段中可透過 Agent 工具產生的 [subagent](/docs/zh-TW/sub-agents) 總數(預設:200);超過上限的產生會以 `Subagent spawn limit reached` 失敗。[同時執行的 subagent 上限](/docs/zh-TW/sub-agents#concurrent-subagent-limit)與[深度上限](/docs/zh-TW/sub-agents#let-subagents-spawn-their-own-subagents)仍然適用 |338| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | 已於 v2.1.224 移除,現在不具作用。先前用於限制 Claude 在一個工作階段中可透過 Agent 工具產生的 [subagent](/docs/zh-TW/sub-agents) 總數(預設:200);超過上限的產生會以 `Subagent spawn limit reached` 失敗。[同時執行的 subagent 上限](/docs/zh-TW/sub-agents#concurrent-subagent-limit)與[深度上限](/docs/zh-TW/sub-agents#let-subagents-spawn-their-own-subagents)仍然適用 |


359| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 重新整理動態 OpenTelemetry 標頭的間隔(毫秒)(預設:1740000/29 分鐘)。請參閱[動態標頭](/docs/zh-TW/monitoring-usage#dynamic-headers) |361| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 重新整理動態 OpenTelemetry 標頭的間隔(毫秒)(預設:1740000/29 分鐘)。請參閱[動態標頭](/docs/zh-TW/monitoring-usage#dynamic-headers) |

360| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 匯出器在關閉時完成作業的逾時時間(毫秒)(預設:2000)。若指標在結束時遺失,請調高此值。請參閱[監控](/docs/zh-TW/monitoring-usage) |362| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 匯出器在關閉時完成作業的逾時時間(毫秒)(預設:2000)。若指標在結束時遺失,請調高此值。請參閱[監控](/docs/zh-TW/monitoring-usage) |

361| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | 當 API 以 `529` overloaded 錯誤拒絕請求時,該請求[自動重試](/docs/zh-TW/errors#tune-retry-behavior)之間指數退避的起始延遲(毫秒),取代預設的 500。在 API 容量已滿時,調高此值可將重試分散在較長的時間範圍內。請以純數字提供 500 至 32000 之間的整數毫秒數;Claude Code 會將任何其他值視為未設定。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設為 `1`,或被拒絕的請求是在[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)中傳送時,沒有作用。需要 Claude Code v2.1.292 或更新版本 |363| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | 當 API 以 `529` overloaded 錯誤拒絕請求時,該請求[自動重試](/docs/zh-TW/errors#tune-retry-behavior)之間指數退避的起始延遲(毫秒),取代預設的 500。在 API 容量已滿時,調高此值可將重試分散在較長的時間範圍內。請以純數字提供 500 至 32000 之間的整數毫秒數;Claude Code 會將任何其他值視為未設定。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設為 `1`,或被拒絕的請求是在[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)中傳送時,沒有作用。需要 Claude Code v2.1.292 或更新版本 |

364| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | 對於 API 以 `529` overloaded 錯誤拒絕的請求,其[自動重試](/docs/zh-TW/errors#tune-retry-behavior)之間指數退避的上限(毫秒),取代預設的 32000。提高此值,可讓後續重試在 API 滿載時持續拉開間隔。以純數字提供 32000 至 64000 的整數毫秒數;Claude Code 會將任何其他值視為未設定。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設定為 `1`,或遭拒的請求是在[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)中傳送時,沒有作用。需要 Claude Code v2.1.296 或更新版本 |

362| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 設為 `1` 可讓 Claude Code 在有新版本可用時,於背景執行套件管理員的升級命令。適用於 Homebrew 與 WinGet 安裝。其他套件管理員仍會顯示升級命令而不執行。請參閱[自動更新](/docs/zh-TW/setup#auto-updates) |365| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 設為 `1` 可讓 Claude Code 在有新版本可用時,於背景執行套件管理員的升級命令。適用於 Homebrew 與 WinGet 安裝。其他套件管理員仍會顯示升級命令而不執行。請參閱[自動更新](/docs/zh-TW/setup#auto-updates) |

363| `CLAUDE_CODE_PERFORCE_MODE` | 設為 `1` 以啟用可感知 Perforce 的寫入保護。設定後,若目標檔案缺少擁有者寫入位元,Edit、Write 與 NotebookEdit 會失敗並提示 `p4 edit <file>`;Perforce 會清除已同步檔案的此位元,直到 `p4 edit` 開啟它們為止。這可防止 Claude Code 繞過 Perforce 變更追蹤 |366| `CLAUDE_CODE_PERFORCE_MODE` | 設為 `1` 以啟用可感知 Perforce 的寫入保護。設定後,若目標檔案缺少擁有者寫入位元,Edit、Write 與 NotebookEdit 會失敗並提示 `p4 edit <file>`;Perforce 會清除已同步檔案的此位元,直到 `p4 edit` 開啟它們為止。這可防止 Claude Code 繞過 Perforce 變更追蹤 |

364| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆寫外掛根目錄。儘管名稱如此,此變數設定的是上層目錄,而非快取本身:市集與外掛快取位於此路徑下的子目錄中。預設為 `~/.claude/plugins` |367| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆寫外掛根目錄。儘管名稱如此,此變數設定的是上層目錄,而非快取本身:市集與外掛快取位於此路徑下的子目錄中。預設為 `~/.claude/plugins` |


380| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中自動設為目前工作階段的 ID。讀取此值可建構返回工作階段逐字稿的連結。請參閱[將輸出連結回工作階段](/docs/zh-TW/cloud-environments#link-output-back-to-the-session) |383| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中自動設為目前工作階段的 ID。讀取此值可建構返回工作階段逐字稿的連結。請參閱[將輸出連結回工作階段](/docs/zh-TW/cloud-environments#link-output-back-to-the-session) |

381| `CLAUDE_CODE_RESTRICTED` | 設為 `1` 可以受限模式啟動工作階段,等同於傳遞 [`--restricted`](/docs/zh-TW/cli-reference#cli-flags)。Claude Code 會忽略設定檔 `env` 區塊中的此變數。需要 Claude Code v2.1.248 或更新版本 |384| `CLAUDE_CODE_RESTRICTED` | 設為 `1` 可以受限模式啟動工作階段,等同於傳遞 [`--restricted`](/docs/zh-TW/cli-reference#cli-flags)。Claude Code 會忽略設定檔 `env` 區塊中的此變數。需要 Claude Code v2.1.248 或更新版本 |

382| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 設為 `1` 可在上一個工作階段於回合中途結束時自動繼續。用於 SDK 模式,讓模型無需 SDK 重新傳送提示詞即可繼續。若要關閉,請取消設定此變數或將其設為 `0`。關於 VS Code 聊天面板,請參閱[重新載入後繼續對話](/docs/zh-TW/vs-code#continue-conversations-after-a-reload) |385| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 設為 `1` 可在上一個工作階段於回合中途結束時自動繼續。用於 SDK 模式,讓模型無需 SDK 重新傳送提示詞即可繼續。若要關閉,請取消設定此變數或將其設為 `0`。關於 VS Code 聊天面板,請參閱[重新載入後繼續對話](/docs/zh-TW/vs-code#continue-conversations-after-a-reload) |

383| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 於回合中途結束的工作階段若要在繼續時自動接續,其最後一則逐字稿訊息所允許的最大存在時間(毫秒)。當最後一則訊息早於此界限時,Claude Code 會略過 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 自動繼續及其 `CLAUDE_CODE_RESUME_PROMPT` 接續訊息,工作階段會以閒置狀態開始,讓您明確地繼續。未設定或 `0` 表示沒有界限,但最後一個請求因 API 錯誤而失敗的回合,只有在該錯誤發生不到六小時時才會繼續。正值會限制每個回合,包括上述回合;負值或非數值則套用一小時的界限。長時間執行 agent 的啟動指令碼可設定此值,讓針對舊逐字稿重新啟動時不會重新執行過時的提示詞。當 Claude Code 重新啟動一個當機、且從互動式工作階段繼承對話的 [agent view](/docs/zh-TW/agent-view) 工作階段時,會自行設定一小時的界限。需要 Claude Code v2.1.211 或更新版本 |386| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 對於在回合中途結束的工作階段,若要在繼續時自動接續,其最後一則逐字稿訊息的最大存在時間(毫秒)。當最後一則訊息比此界限更舊時,Claude Code 會略過 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 自動繼續及其 `CLAUDE_CODE_RESUME_PROMPT` 接續訊息,且工作階段會以閒置狀態啟動,讓您明確地繼續。未設定或設為 `0` 表示不設界限,但某些回合只會在其最後一則訊息後六小時內繼續,例如以 API 錯誤結束的回合。正值會為每個回合設定界限,包括那些回合;負值或非數值會套用一小時的界限。長時間執行之 agent 的產生指令碼可以設定此變數,讓針對舊逐字稿的重新啟動不會重新執行過時的提示詞。當 Claude Code 重新啟動從互動式工作階段繼承對話的已當機 [agent view](/docs/zh-TW/agent-view) 工作階段時,會自行設定一小時的界限。需要 Claude Code v2.1.211 或更新版本 |

384| `CLAUDE_CODE_RESUME_PROMPT` | 覆寫當 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 接續中斷的回合而非重新傳送其提示詞時,或當您以 `-p` 繼續[延後的工具呼叫](/docs/zh-TW/hooks#defer-a-tool-call-for-later)時,Claude Code 傳送給 Claude 的接續訊息。預設為 `Continue from where you left off.`。空字串會使用預設值 |387| `CLAUDE_CODE_RESUME_PROMPT` | 覆寫當 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 接續中斷的回合而非重新傳送其提示詞時,或當您以 `-p` 繼續[延後的工具呼叫](/docs/zh-TW/hooks#defer-a-tool-call-for-later)時,Claude Code 傳送給 Claude 的接續訊息。預設為 `Continue from where you left off.`。空字串會使用預設值 |

385| `CLAUDE_CODE_RETRY_WATCHDOG` | 針對無人值守的工作階段(例如 eval harness、CI 作業或遠端 worker)設為 `1`。無限期重試 `429` 與 `529` 容量錯誤,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次嘗試後失敗。當標準速度請求收到回報支出上限或用量點數已用盡的 `429` 時,Claude Code 會立即失敗,即使是來自會依排程重設的[閘道支出上限](/docs/zh-TW/errors#spend-limit-reached)也是如此。在 v2.1.239 之前,watchdog 會無限期重試這些錯誤。關於快速模式請求,請參閱[處理速率限制](/docs/zh-TW/fast-mode#handle-rate-limits)。watchdog 在每次嘗試之間最多退避 5 分鐘,或在回應攜帶速率限制重設時間時等到限制重設為止,因此達到用量上限的工作階段會等候剩餘的時間範圍。在 v2.1.199 或更新版本中,它也會將其他暫時性錯誤(例如伺服器錯誤、逾時與中斷的連線)的預設重試次數提高至 300 次,約為三小時的退避時間,並在您明確設定 `CLAUDE_CODE_MAX_RETRIES` 時移除其 15 次的上限。需要 Claude Code v2.1.186 或更新版本 |388| `CLAUDE_CODE_RETRY_WATCHDOG` | 針對無人值守的工作階段(例如 eval harness、CI 作業或遠端 worker)設為 `1`。無限期重試 `429` 與 `529` 容量錯誤,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次嘗試後失敗。當標準速度請求收到回報支出上限或用量點數已用盡的 `429` 時,Claude Code 會立即失敗,即使是來自會依排程重設的[閘道支出上限](/docs/zh-TW/errors#spend-limit-reached)也是如此。在 v2.1.239 之前,watchdog 會無限期重試這些錯誤。關於快速模式請求,請參閱[處理速率限制](/docs/zh-TW/fast-mode#handle-rate-limits)。watchdog 在每次嘗試之間最多退避 5 分鐘,或在回應攜帶速率限制重設時間時等到限制重設為止,因此達到用量上限的工作階段會等候剩餘的時間範圍。在 v2.1.199 或更新版本中,它也會將其他暫時性錯誤(例如伺服器錯誤、逾時與中斷的連線)的預設重試次數提高至 300 次,約為三小時的退避時間,並在您明確設定 `CLAUDE_CODE_MAX_RETRIES` 時移除其 15 次的上限。需要 Claude Code v2.1.186 或更新版本 |

386| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | 設定 `CLAUDE_CODE_RETRY_WATCHDOG` 時,每個 API 請求等候 `429` 與 `529` 錯誤的最長時間(毫秒)。用完該時間後,下一個此類錯誤會結束請求。請以純數字提供正整數,例如 `1800000` 代表 30 分鐘。未設定時,等待沒有上限。需要 Claude Code v2.1.295 或更新版本 |389| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | 設定 `CLAUDE_CODE_RETRY_WATCHDOG` 時,每個 API 請求等候 `429` 與 `529` 錯誤的最長時間(毫秒)。用完該時間後,下一個此類錯誤會結束請求。請以純數字提供正整數,例如 `1800000` 代表 30 分鐘。未設定時,等待沒有上限。需要 Claude Code v2.1.295 或更新版本 |


437| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | 當 `CLAUDE_AUTO_BACKGROUND_TASKS` 設定為 `1` 時,Claude Code 在每次提醒 Claude 檢查仍在執行中的[背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)之前等待的時間。接受一個或多個以逗號分隔、以整數秒表示且介於 `1` 到 `86400` 之間的等待時間,例如 `600` 或 `600,1800,3600`。每個值都是下一次提醒前的等待時間,最後一個值會重複使用。僅接受純數字;任何其他值或寫法都視為未設定。未設定時不會有提醒。需要 Claude Code v2.1.283 或更新版本 |440| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | 當 `CLAUDE_AUTO_BACKGROUND_TASKS` 設定為 `1` 時,Claude Code 在每次提醒 Claude 檢查仍在執行中的[背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)之前等待的時間。接受一個或多個以逗號分隔、以整數秒表示且介於 `1` 到 `86400` 之間的等待時間,例如 `600` 或 `600,1800,3600`。每個值都是下一次提醒前的等待時間,最後一個值會重複使用。僅接受純數字;任何其他值或寫法都視為未設定。未設定時不會有提醒。需要 Claude Code v2.1.283 或更新版本 |

438| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | 單次[工作流程](/docs/zh-TW/workflows)執行同時執行的 agent 數量,範圍為 `1` 到 `256`。預設情況下,一次執行最多同時執行 16 個 agent,當 Claude Code 可用的 CPU 較少時會更少;排入佇列的 `agent()` 呼叫會等待空閒的位置。每個執行中 agent 的逐字稿都會保留在 Claude Code 的記憶體中,因此較高的值會增加記憶體使用量。僅接受純數字;超出範圍的值與其他寫法會保留預設值。需要 Claude Code v2.1.269 或更新版本 |441| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | 單次[工作流程](/docs/zh-TW/workflows)執行同時執行的 agent 數量,範圍為 `1` 到 `256`。預設情況下,一次執行最多同時執行 16 個 agent,當 Claude Code 可用的 CPU 較少時會更少;排入佇列的 `agent()` 呼叫會等待空閒的位置。每個執行中 agent 的逐字稿都會保留在 Claude Code 的記憶體中,因此較高的值會增加記憶體使用量。僅接受純數字;超出範圍的值與其他寫法會保留預設值。需要 Claude Code v2.1.269 或更新版本 |

439| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | [工作流程](/docs/zh-TW/workflows) agent 在送出自己的第一個請求之前,等待具有相同前綴的同層 agent 開始第一個回應的時間上限(毫秒)。當扇出啟動多個共用[提示快取前綴](/docs/zh-TW/workflows#prompt-caching-in-a-fan-out)的 agent 時,Claude Code 會將第一個以外的所有 agent 暫停最多這段時間,讓其餘 agent 讀取已快取的前綴,而不是各自在未快取的情況下處理。預設值為 `5000`。設定為 `0` 可停用等待。設定 `DISABLE_PROMPT_CACHING` 時,agent 永遠不會等待。需要 Claude Code v2.1.229 或更新版本 |442| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | [工作流程](/docs/zh-TW/workflows) agent 在送出自己的第一個請求之前,等待具有相同前綴的同層 agent 開始第一個回應的時間上限(毫秒)。當扇出啟動多個共用[提示快取前綴](/docs/zh-TW/workflows#prompt-caching-in-a-fan-out)的 agent 時,Claude Code 會將第一個以外的所有 agent 暫停最多這段時間,讓其餘 agent 讀取已快取的前綴,而不是各自在未快取的情況下處理。預設值為 `5000`。設定為 `0` 可停用等待。設定 `DISABLE_PROMPT_CACHING` 時,agent 永遠不會等待。需要 Claude Code v2.1.229 或更新版本 |

443| `CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG` | 設為 `1` 可在提示詞上方,為 [You should know mod](/docs/zh-TW/interactive-mode#you-should-know-suggestions) 在此工作階段中進行的最近三次檢查各顯示一行。可用於在沒有出現任何提示時,確認該 mod 是否正在進行檢查。需要 Claude Code v2.1.287 或更新版本 |

440| `CLAUDE_CONFIG_DIR` | 覆寫設定目錄(預設:`~/.claude`)。所有設定、工作階段歷史記錄與外掛都儲存在此路徑下。關於憑證,請參閱 [Claude Code 儲存憑證的位置](/docs/zh-TW/authentication#credential-management)。適用於並行執行多個帳戶:例如 `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`。請在您的 shell、使用者設定或受管設定中設定。在設定檔中,請寫入[絕對路徑](#in-settings-files)。在[專案與本機設定](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)中會被忽略 |444| `CLAUDE_CONFIG_DIR` | 覆寫設定目錄(預設:`~/.claude`)。所有設定、工作階段歷史記錄與外掛都儲存在此路徑下。關於憑證,請參閱 [Claude Code 儲存憑證的位置](/docs/zh-TW/authentication#credential-management)。適用於並行執行多個帳戶:例如 `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`。請在您的 shell、使用者設定或受管設定中設定。在設定檔中,請寫入[絕對路徑](#in-settings-files)。在[專案與本機設定](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)中會被忽略 |

441| `CLAUDE_DISABLE_ADOPT` | 設定為 `1`,在您按下 `←` 或使用 [`/background`](/docs/zh-TW/agent-view#from-inside-a-session) 將工作階段移至背景時,停止進行中的背景工作,而不是將其延續。Claude Code 會在移至背景前要求您確認,然後停止原本會延續的任務。需要 Claude Code v2.1.195 或更新版本 |445| `CLAUDE_DISABLE_ADOPT` | 設定為 `1`,在您按下 `←` 或使用 [`/background`](/docs/zh-TW/agent-view#from-inside-a-session) 將工作階段移至背景時,停止進行中的背景工作,而不是將其延續。Claude Code 會在移至背景前要求您確認,然後停止原本會延續的任務。需要 Claude Code v2.1.195 或更新版本 |

442| `CLAUDE_EFFORT` | 在 Bash 工具子程序與 hook 命令中自動設定為子程序啟動時生效的 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。與傳遞給 [hook](/docs/zh-TW/hooks) 的 `effort.level` 欄位相符。僅在目前模型支援 effort 參數時設定 |446| `CLAUDE_EFFORT` | 在 Bash 工具子程序與 hook 命令中自動設定為子程序啟動時生效的 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。與傳遞給 [hook](/docs/zh-TW/hooks) 的 `effort.level` 欄位相符。僅在目前模型支援 effort 參數時設定 |


452| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | 已在 v2.1.260 中移除,現在不再有任何作用。先前用於限制 [subagent](/docs/zh-TW/sub-agents) 啟動的[背景 shell 命令](/docs/zh-TW/interactive-mode#background-bash-commands)可執行的時間(毫秒),預設為 60 分鐘。請參閱[背景命令存續期規則](/docs/zh-TW/tools-reference#background-commands) |456| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | 已在 v2.1.260 中移除,現在不再有任何作用。先前用於限制 [subagent](/docs/zh-TW/sub-agents) 啟動的[背景 shell 命令](/docs/zh-TW/interactive-mode#background-bash-commands)可執行的時間(毫秒),預設為 60 分鐘。請參閱[背景命令存續期規則](/docs/zh-TW/tools-reference#background-commands) |

453| `DEBUG` | 設定為 `1` 可啟用偵錯模式,等同於以 [`--debug`](/docs/zh-TW/cli-reference#cli-flags) 啟動。偵錯日誌會寫入 `~/.claude/debug/<session-id>.txt`,或寫入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 所設定的路徑。只有真值 `1`、`true`、`yes` 與 `on` 會啟用偵錯模式,因此為其他工具設定的命名空間模式(例如 `DEBUG=express:*`)不會觸發它 |457| `DEBUG` | 設定為 `1` 可啟用偵錯模式,等同於以 [`--debug`](/docs/zh-TW/cli-reference#cli-flags) 啟動。偵錯日誌會寫入 `~/.claude/debug/<session-id>.txt`,或寫入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 所設定的路徑。只有真值 `1`、`true`、`yes` 與 `on` 會啟用偵錯模式,因此為其他工具設定的命名空間模式(例如 `DEBUG=express:*`)不會觸發它 |

454| `DISABLE_AUTOUPDATER` | 設定為 `1` 可停用自動背景更新。手動執行 `claude update` 仍可運作。使用 `DISABLE_UPDATES` 可同時封鎖兩者 |458| `DISABLE_AUTOUPDATER` | 設定為 `1` 可停用自動背景更新。手動執行 `claude update` 仍可運作。使用 `DISABLE_UPDATES` 可同時封鎖兩者 |

455| `DISABLE_AUTO_COMPACT` | 設定為 `1` 可在接近上下文限制時停用自動壓縮。手動 `/compact` 命令仍可使用。當您想明確控制壓縮發生的時機時使用。覆寫 [`autoCompactEnabled`](/docs/zh-TW/settings-reference#autocompactenabled) 設定 |459| `DISABLE_AUTO_COMPACT` | 設定為 `1` 可停用接近上下文限制時的自動壓縮,以及[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction)。手動 `/compact` 命令仍可使用。適合在您想明確控制壓縮時機時使用。覆寫 [`autoCompactEnabled`](/docs/zh-TW/settings-reference#autocompactenabled) 設定 |

456| `DISABLE_COMPACT` | 設定為 `1` 可停用所有壓縮:包括自動壓縮與手動 `/compact` 命令 |460| `DISABLE_COMPACT` | 設定為 `1` 可停用所有壓縮:包括自動壓縮與手動 `/compact` 命令 |

457| `DISABLE_COST_WARNINGS` | 設定為 `1` 可停用成本警告訊息 |461| `DISABLE_COST_WARNINGS` | 設定為 `1` 可停用成本警告訊息 |

458| `DISABLE_DOCTOR_COMMAND` | 設定為 `1` 可隱藏 [`/doctor`](/docs/zh-TW/commands#all-commands) 設定檢查 skill 及其 `/checkup` 別名。適用於使用者不應在工作階段中執行設定診斷的受管部署。不會影響 `claude doctor` 終端機命令。在 v2.1.205 之前,此變數會隱藏 `/doctor` 診斷畫面命令 |462| `DISABLE_DOCTOR_COMMAND` | 設定為 `1` 可隱藏 [`/doctor`](/docs/zh-TW/commands#all-commands) 設定檢查 skill 及其 `/checkup` 別名。適用於使用者不應在工作階段中執行設定診斷的受管部署。不會影響 `claude doctor` 終端機命令。在 v2.1.205 之前,此變數會隱藏 `/doctor` 診斷畫面命令 |


478| `ENABLE_CLAUDEAI_MCP_SERVERS` | 設定為 `false` 可讓 Claude Code 停止擷取 [claude.ai MCP 伺服器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對已登入的使用者預設為啟用。若要針對個別專案或組織停用,請改在設定中設定 [`disableClaudeAiConnectors`](/docs/zh-TW/settings-reference#disableclaudeaiconnectors) |482| `ENABLE_CLAUDEAI_MCP_SERVERS` | 設定為 `false` 可讓 Claude Code 停止擷取 [claude.ai MCP 伺服器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對已登入的使用者預設為啟用。若要針對個別專案或組織停用,請改在設定中設定 [`disableClaudeAiConnectors`](/docs/zh-TW/settings-reference#disableclaudeaiconnectors) |

479| `ENABLE_PROMPT_CACHING_1H` | 設定為 `1` 可請求 1 小時的[提示快取 TTL](/docs/zh-TW/prompt-caching#cache-lifetime),而非預設的 5 分鐘。適用於 API 金鑰、[Amazon Bedrock](/docs/zh-TW/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-TW/google-vertex-ai)、[Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 與 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 使用者。在包含用量範圍內的訂閱使用者會在[主要對話](/docs/zh-TW/prompt-caching#which-ttl-each-request-gets)上自動獲得 1 小時 TTL。使用[用量點數](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)的訂閱使用者可以設定此變數以保留 1 小時 TTL。1 小時快取寫入會以較高的費率計費。若要改為依請求類別選擇 TTL,請使用 `CLAUDE_CODE_PROMPT_CACHE_TTL` 與 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`,兩者優先於此變數 |483| `ENABLE_PROMPT_CACHING_1H` | 設定為 `1` 可請求 1 小時的[提示快取 TTL](/docs/zh-TW/prompt-caching#cache-lifetime),而非預設的 5 分鐘。適用於 API 金鑰、[Amazon Bedrock](/docs/zh-TW/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-TW/google-vertex-ai)、[Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 與 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 使用者。在包含用量範圍內的訂閱使用者會在[主要對話](/docs/zh-TW/prompt-caching#which-ttl-each-request-gets)上自動獲得 1 小時 TTL。使用[用量點數](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)的訂閱使用者可以設定此變數以保留 1 小時 TTL。1 小時快取寫入會以較高的費率計費。若要改為依請求類別選擇 TTL,請使用 `CLAUDE_CODE_PROMPT_CACHE_TTL` 與 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`,兩者優先於此變數 |

480| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。請改用 `ENABLE_PROMPT_CACHING_1H` |484| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。請改用 `ENABLE_PROMPT_CACHING_1H` |

481| `ENABLE_TOOL_SEARCH` | 控制 [MCP tool search](/docs/zh-TW/mcp#scale-with-mcp-tool-search)。未設定時,Claude Code 預設會延遲載入所有 MCP 工具。但在早於 Claude 4.5 世代的 Google Cloud's Agent Platform 模型上、在託管於 Azure 的 Microsoft Foundry 部署上,以及當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,仍會預先載入這些工具。`true` 一律延遲載入並傳送 beta 標頭,但上述相同的 Agent Platform 模型與 Microsoft Foundry 部署除外;在不支援 `tool_reference` 的代理伺服器上請求會失敗。`auto` 會在工具定義可容納於上下文的 10% 以內時預先載入。`auto:N` 可設定自訂門檻,例如 `auto:5` 代表 5%。`false` 會預先載入所有工具。設定 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` 時,您自行設定的值會被忽略。在 v2.1.221 之前,除非您將此變數設定為 `true`,否則 Claude Code 會在 Google Cloud's Agent Platform 上為所有模型停用 tool search |485| `ENABLE_TOOL_SEARCH` | 控制 [MCP 工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)。未設定時,Claude Code 預設會延後載入所有 MCP 工具,而當 `ANTHROPIC_BASE_URL` 指向非第一方主機時則改為預先載入。`true` 會讓它們在這類主機上也保持延後載入。`auto` 會在工具定義可容納於上下文的 10% 以內時預先載入。`auto:N` 可設定自訂閾值,例如 `auto:5` 表示 5%。`false` 會預先載入所有工具。關於無論此值為何都會預先載入所有工具的模型和部署,請參閱[設定工具搜尋](/docs/zh-TW/mcp#configure-tool-search) |

482| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 設定為任何非空值(例如 `1`),可在未設定備援模型時,讓 Claude Code 對每個模型在重複發生過載錯誤時停止重試。**與大多數開關變數不同,設定為 `0` 或 `false` 仍會啟用此行為**;取消設定此變數即可恢復預設的重試行為。若未設定,當您使用 API 金鑰或[第三方提供者](/docs/zh-TW/third-party-integrations)而非 Claude 訂閱進行身分驗證時,Claude Code 只會對其識別為 Opus、Fable 或 Mythos 的模型以此方式停止重試。在 Claude Code v2.1.160 或更新版本中,Claude Code 會在任何主要模型重複發生過載錯誤時切換至您設定的[備援模型鏈](/docs/zh-TW/model-config#fallback-model-chains),因此此變數不會影響切換至備援模型 |486| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 設定為任何非空值(例如 `1`),可在未設定備援模型時,讓 Claude Code 對每個模型在重複發生過載錯誤時停止重試。**與大多數開關變數不同,設定為 `0` 或 `false` 仍會啟用此行為**;取消設定此變數即可恢復預設的重試行為。若未設定,當您使用 API 金鑰或[第三方提供者](/docs/zh-TW/third-party-integrations)而非 Claude 訂閱進行身分驗證時,Claude Code 只會對其識別為 Opus、Fable 或 Mythos 的模型以此方式停止重試。在 Claude Code v2.1.160 或更新版本中,Claude Code 會在任何主要模型重複發生過載錯誤時切換至您設定的[備援模型鏈](/docs/zh-TW/model-config#fallback-model-chains),因此此變數不會影響切換至備援模型 |

483| `FORCE_AUTOUPDATE_PLUGINS` | 設定為 `1` 可強制外掛自動更新,即使主要自動更新程式已透過 `DISABLE_AUTOUPDATER` 停用 |487| `FORCE_AUTOUPDATE_PLUGINS` | 設定為 `1` 可強制外掛自動更新,即使主要自動更新程式已透過 `DISABLE_AUTOUPDATER` 停用 |

484| `FORCE_HYPERLINK` | 當您的終端機支援可點擊的 OSC 8 超連結但未被自動偵測到時,設定為 `1` 可啟用它們,設定為 `0` 則可停用。未設定時,Claude Code 僅在偵測到終端機支援時啟用超連結。Claude Code 會將此值解析為數字而非布林值,因此 `false`、`no` 或 `off` 等值會啟用超連結而非停用。即使 Claude Code 無法偵測終端機支援(例如透過 SSH),頁尾的 [PR 或合併請求徽章](/docs/zh-TW/interactive-mode#pr-review-status)仍會顯示為超連結。設定 `0` 可將徽章顯示為純文字 |488| `FORCE_HYPERLINK` | 當您的終端機支援可點擊的 OSC 8 超連結但未被自動偵測到時,設定為 `1` 可啟用它們,設定為 `0` 則可停用。未設定時,Claude Code 僅在偵測到終端機支援時啟用超連結。Claude Code 會將此值解析為數字而非布林值,因此 `false`、`no` 或 `off` 等值會啟用超連結而非停用。即使 Claude Code 無法偵測終端機支援(例如透過 SSH),頁尾的 [PR 或合併請求徽章](/docs/zh-TW/interactive-mode#pr-review-status)仍會顯示為超連結。設定 `0` 可將徽章顯示為純文字 |


593* 執行 [`claude import` 或 `/import` 命令](/docs/zh-TW/cli-reference#cli-commands)597* 執行 [`claude import` 或 `/import` 命令](/docs/zh-TW/cli-reference#cli-commands)

594* 執行 [`/skill-doctor`](/docs/zh-TW/skills#find-unused-skills),或在 `/plugin` 的 **Stats** 分頁中開啟其報告598* 執行 [`/skill-doctor`](/docs/zh-TW/skills#find-unused-skills),或在 `/plugin` 的 **Stats** 分頁中開啟其報告

595* 將您的 claude.ai 帳戶所啟用的 [skills](/docs/zh-TW/skills#where-synced-skills-load) 和[外掛](/docs/zh-TW/plugins/loading#synced-plugins)同步到您的終端機工作階段599* 將您的 claude.ai 帳戶所啟用的 [skills](/docs/zh-TW/skills#where-synced-skills-load) 和[外掛](/docs/zh-TW/plugins/loading#synced-plugins)同步到您的終端機工作階段

600* 啟用 [You should know mod](/docs/zh-TW/interactive-mode#you-should-know-suggestions)

596* 使用 [advisor 工具](/docs/zh-TW/advisor#requirements)601* 使用 [advisor 工具](/docs/zh-TW/advisor#requirements)

597* 閱讀或回覆 [artifact 上的留言](/docs/zh-TW/artifacts#collect-comments-on-an-artifact)602* 閱讀或回覆 [artifact 上的留言](/docs/zh-TW/artifacts#collect-comments-on-an-artifact)

598* 讓 Claude 讀取[其他組織的公開 artifact](/docs/zh-TW/artifacts#read-an-artifact-shared-with-you)603* 讓 Claude 讀取[其他組織的公開 artifact](/docs/zh-TW/artifacts#read-an-artifact-shared-with-you)


600* 取得 [Claude 草擬的意見回饋](/docs/zh-TW/tools-reference#sendfeedback-tool-behavior),Claude Code 是透過擷取的旗標來啟用此功能605* 取得 [Claude 草擬的意見回饋](/docs/zh-TW/tools-reference#sendfeedback-tool-behavior),Claude Code 是透過擷取的旗標來啟用此功能

601* 讓 Claude [將大量貼上內容視為貼上的文字,而非輸入的文字](/docs/zh-TW/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 預留位置背後的內容會未經標記地傳送給 Claude606* 讓 Claude [將大量貼上內容視為貼上的文字,而非輸入的文字](/docs/zh-TW/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 預留位置背後的內容會未經標記地傳送給 Claude

602* 讓 Claude Code [排除 API 會拒絕其輸入 schema 的 MCP 工具](/docs/zh-TW/mcp#tools-with-invalid-input-schemas);它仍會傳送該 schema,而包含該 schema 的請求會失敗,並出現[依位置指出該工具的 400 錯誤](/docs/zh-TW/errors#tool-input-schema-is-invalid)607* 讓 Claude Code [排除 API 會拒絕其輸入 schema 的 MCP 工具](/docs/zh-TW/mcp#tools-with-invalid-input-schemas);它仍會傳送該 schema,而包含該 schema 的請求會失敗,並出現[依位置指出該工具的 400 錯誤](/docs/zh-TW/errors#tool-input-schema-is-invalid)

608* 讓 Claude Code [在您的終端機工作階段閒置時壓縮冗長的對話](/docs/zh-TW/settings-reference#idlecompaction),時間點在一小時的提示詞快取到期前不久

603 609 

604<h3 id="first-session-after-an-install-or-upgrade">610<h3 id="first-session-after-an-install-or-upgrade">

605 安裝或升級後的第一個工作階段611 安裝或升級後的第一個工作階段

errors.md +347 −196

Details

134| `proxy refused the connection` | [網路](#the-proxy-refused-the-connection) |134| `proxy refused the connection` | [網路](#the-proxy-refused-the-connection) |

135| 在雲端工作階段中出現、帶有 `GitHub GraphQL is not available from Claude Code sessions` 的 `403` | [GitHub 代理伺服器](/docs/zh-TW/cloud-environments#github-proxy) |135| 在雲端工作階段中出現、帶有 `GitHub GraphQL is not available from Claude Code sessions` 的 `403` | [GitHub 代理伺服器](/docs/zh-TW/cloud-environments#github-proxy) |

136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [網路](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [網路](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |

137| `Failed to fetch session from Sessions API: Failed to fetch session logs` | [網路](#failed-to-fetch-session-from-sessions-api) |

137| `Couldn't reconnect to your Remote Control session` | [網路](#couldnt-reconnect-to-your-remote-control-session) |138| `Couldn't reconnect to your Remote Control session` | [網路](#couldnt-reconnect-to-your-remote-control-session) |

138| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [網路](#sessions-ended-while-this-machine-was-offline) |139| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [網路](#sessions-ended-while-this-machine-was-offline) |

139| `Couldn't share the transcript.` | [網路](#couldnt-share-the-transcript) |140| `Couldn't share the transcript.` | [網路](#couldnt-share-the-transcript) |


153| `Request too large for the API's 32MB request limit` | [請求錯誤](#request-too-large) |154| `Request too large for the API's 32MB request limit` | [請求錯誤](#request-too-large) |

154| `Image was too large` | [請求錯誤](#image-was-too-large) |155| `Image was too large` | [請求錯誤](#image-was-too-large) |

155| `Unable to resize image` | [請求錯誤](#unable-to-resize-image) |156| `Unable to resize image` | [請求錯誤](#unable-to-resize-image) |

157| `Request rejected as unprocessable by the model` | [請求錯誤](#request-rejected-as-unprocessable-by-the-model) |

156| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [請求錯誤](#pdf-errors) |158| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [請求錯誤](#pdf-errors) |

157| `Extra inputs are not permitted` | [請求錯誤](#extra-inputs-are-not-permitted) |159| `Extra inputs are not permitted` | [請求錯誤](#extra-inputs-are-not-permitted) |

158| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [請求錯誤](#tool-input-schema-is-invalid) |160| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [請求錯誤](#tool-input-schema-is-invalid) |

161| `Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128` | [請求錯誤](#mcp-tool-name-over-128-characters) |

162| `tools.N.custom.name: String should have at most 128 characters` | [請求錯誤](#mcp-tool-name-over-128-characters) |

159| `tool_use.name: String should have at most 200 characters` | [請求錯誤](#tool-use-name-over-200-characters) |163| `tool_use.name: String should have at most 200 characters` | [請求錯誤](#tool-use-name-over-200-characters) |

160| `There's an issue with the selected model` | [請求錯誤](#theres-an-issue-with-the-selected-model) |164| `There's an issue with the selected model` | [請求錯誤](#theres-an-issue-with-the-selected-model) |

161| `Model ... is not a recognized model id` | [請求錯誤](#model-is-not-a-recognized-model-id) |165| `Model ... is not a recognized model id` | [請求錯誤](#model-is-not-a-recognized-model-id) |


198| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [命令列錯誤](#conflict-between-a-system-prompt-flag-and-its-file-form) |202| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [命令列錯誤](#conflict-between-a-system-prompt-flag-and-its-file-form) |

199| `Cloud sessions cannot be created from a --restricted session` | [命令列錯誤](#cloud-sessions-cannot-be-created-from-a-restricted-session) |203| `Cloud sessions cannot be created from a --restricted session` | [命令列錯誤](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

200| `Cloud sessions are disabled by your organization's policy` | [命令列錯誤](#cloud-sessions-are-disabled-by-your-organizations-policy) |204| `Cloud sessions are disabled by your organization's policy` | [命令列錯誤](#cloud-sessions-are-disabled-by-your-organizations-policy) |

201| `Couldn't verify your organization's policy for cloud sessions` | [命令列錯誤](#cloud-sessions-are-disabled-by-your-organizations-policy) |205| 出現在指明某項憑證的政策拒絕訊息結尾的 `Cloud sessions use your claude.ai login` | [命令列錯誤](#cloud-sessions-use-your-claude-ai-login) |

206| `Couldn't verify your organization's policy for cloud sessions` | [命令列錯誤](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

207| `Cloud sessions aren't available:`,後接無法載入您組織政策的原因 | [命令列錯誤](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

202| `Cloud sessions need a claude.ai sign-in` | [無法取得組織 UUID](/docs/zh-TW/claude-code-on-the-web#unable-to-get-organization-uuid) |208| `Cloud sessions need a claude.ai sign-in` | [無法取得組織 UUID](/docs/zh-TW/claude-code-on-the-web#unable-to-get-organization-uuid) |

209| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [命令列錯誤](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

203| `Error: --json-schema is not a valid JSON Schema` | [命令列錯誤](#the-json-schema-value-is-not-a-valid-json-schema) |210| `Error: --json-schema is not a valid JSON Schema` | [命令列錯誤](#the-json-schema-value-is-not-a-valid-json-schema) |

204| `Error: Invalid --agents configuration:` | [命令列錯誤](#invalid-agents-configuration) |211| `Error: Invalid --agents configuration:` | [命令列錯誤](#invalid-agents-configuration) |

205| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [命令列錯誤](#invalid-agents-configuration) |212| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [命令列錯誤](#invalid-agents-configuration) |


259| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [命令列錯誤](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |266| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [命令列錯誤](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |

260| `/recap only runs when you ask for it yourself in this session` | [命令列錯誤](#recap-only-runs-when-you-ask-for-it-yourself) |267| `/recap only runs when you ask for it yourself in this session` | [命令列錯誤](#recap-only-runs-when-you-ask-for-it-yourself) |

261| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [外掛錯誤](#plugin-eval-is-currently-in-early-access) |268| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [外掛錯誤](#plugin-eval-is-currently-in-early-access) |

269| `cannot be evaluated where sessions load it` | [使用 evals 測試外掛](/docs/zh-TW/plugin-evals#cannot-be-evaluated-where-sessions-load-it) |

262| `Marketplace "<name>" is registered from an untrusted source` | [外掛錯誤](#marketplace-is-registered-from-an-untrusted-source) |270| `Marketplace "<name>" is registered from an untrusted source` | [外掛錯誤](#marketplace-is-registered-from-an-untrusted-source) |

263| `Claude Code refuses the marketplace name "<name>"` | [外掛錯誤](#claude-code-refuses-the-marketplace-name) |271| `Claude Code refuses the marketplace name "<name>"` | [外掛錯誤](#claude-code-refuses-the-marketplace-name) |

264| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [外掛錯誤](#claude-code-refuses-the-marketplace-name) |272| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [外掛錯誤](#claude-code-refuses-the-marketplace-name) |


358| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [全螢幕轉譯](/docs/zh-TW/fullscreen#fullscreen-renderer-didnt-finish-starting) |366| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [全螢幕轉譯](/docs/zh-TW/fullscreen#fullscreen-renderer-didnt-finish-starting) |

359| `Claude Code exited after an unrecoverable interface error (...)` | [設定警告](#exited-after-an-unrecoverable-interface-error) |367| `Claude Code exited after an unrecoverable interface error (...)` | [設定警告](#exited-after-an-unrecoverable-interface-error) |

360| `Agent descriptions are over the 15.0k-token limit` | [設定警告](#agent-descriptions-are-over-the-15000-token-limit) |368| `Agent descriptions are over the 15.0k-token limit` | [設定警告](#agent-descriptions-are-over-the-15000-token-limit) |

369| `hook needs quotes around a path with a space` | [設定警告](#hook-needs-quotes-around-a-path-with-a-space) |

361| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [設定警告](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |370| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [設定警告](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

371| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [設定警告](#skill-or-command-name-refused) |

362| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [設定警告](#workspace-has-not-been-trusted) |372| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [設定警告](#workspace-has-not-been-trusted) |

363| `is a network path, which cannot be added as a working directory` | [設定警告](#working-directory-is-a-network-path) |373| `is a network path, which cannot be added as a working directory` | [設定警告](#working-directory-is-a-network-path) |

364| `Remote managed settings failed to load (<cause>)` | [設定警告](#remote-managed-settings-failed-to-load) |374| `Remote managed settings failed to load (<cause>)` | [設定警告](#remote-managed-settings-failed-to-load) |


447| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/zh-TW/env-vars) | 未設定 | 在無人值守的工作階段(例如 CI 工作)中設定為 `1`,以無限期重試 `429` 和 `529` 容量錯誤,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次嘗試後失敗。當標準速度的請求收到報告支出限制或用量點數耗盡的 `429` 時,Claude Code 會立即失敗,即使該 `429` 來自按排程重設的 [gateway spend cap](#spend-limit-reached)。在 v2.1.239 之前,看門狗會無限期重試這些錯誤。如需快速模式請求,請參閱 [Handle rate limits](/docs/zh-TW/fast-mode#handle-rate-limits)。在 v2.1.199 或更新版本上,它也會將其他暫時性錯誤(例如伺服器錯誤、逾時和連線中斷)的預設重試次數提高至 300,大約三小時的退避,並在您明確設定 `CLAUDE_CODE_MAX_RETRIES` 時移除其上限 15。 |457| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/zh-TW/env-vars) | 未設定 | 在無人值守的工作階段(例如 CI 工作)中設定為 `1`,以無限期重試 `429` 和 `529` 容量錯誤,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次嘗試後失敗。當標準速度的請求收到報告支出限制或用量點數耗盡的 `429` 時,Claude Code 會立即失敗,即使該 `429` 來自按排程重設的 [gateway spend cap](#spend-limit-reached)。在 v2.1.239 之前,看門狗會無限期重試這些錯誤。如需快速模式請求,請參閱 [Handle rate limits](/docs/zh-TW/fast-mode#handle-rate-limits)。在 v2.1.199 或更新版本上,它也會將其他暫時性錯誤(例如伺服器錯誤、逾時和連線中斷)的預設重試次數提高至 300,大約三小時的退避,並在您明確設定 `CLAUDE_CODE_MAX_RETRIES` 時移除其上限 15。 |

448| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/zh-TW/env-vars) | 未設定 | 設定 `CLAUDE_CODE_RETRY_WATCHDOG` 時,每個 API 請求等待 `429` 和 `529` 錯誤所花費的最長時間(毫秒)。未設定時,等待時間沒有限制。需要 Claude Code v2.1.295 或更新版本。 |458| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/zh-TW/env-vars) | 未設定 | 設定 `CLAUDE_CODE_RETRY_WATCHDOG` 時,每個 API 請求等待 `429` 和 `529` 錯誤所花費的最長時間(毫秒)。未設定時,等待時間沒有限制。需要 Claude Code v2.1.295 或更新版本。 |

449| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/zh-TW/env-vars) | 500 | API 以 `529` 過載錯誤拒絕的請求,其重試之間退避的起始延遲(毫秒)。當 API 容量已滿時,可提高此值(最高 32000),以將重試分散在較長的時間範圍內。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設定為 `1`,或被拒絕的請求是以[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)發送時,此設定無效。需要 Claude Code v2.1.292 或更新版本。 |459| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/zh-TW/env-vars) | 500 | API 以 `529` 過載錯誤拒絕的請求,其重試之間退避的起始延遲(毫秒)。當 API 容量已滿時,可提高此值(最高 32000),以將重試分散在較長的時間範圍內。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設定為 `1`,或被拒絕的請求是以[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)發送時,此設定無效。需要 Claude Code v2.1.292 或更新版本。 |

460| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](/docs/zh-TW/env-vars) | 32000 | API 以 `529` 過載錯誤拒絕的請求,其重試之間退避的上限(毫秒)。當 API 容量已滿時,可提高此值(最高 64000),讓後續的重試間隔持續拉長。當 `CLAUDE_CODE_RETRY_WATCHDOG` 設定為 `1`,或被拒絕的請求是以[快速模式](/docs/zh-TW/fast-mode#handle-rate-limits)發送時,此設定無效。需要 Claude Code v2.1.296 或更新版本。 |

450| [`API_TIMEOUT_MS`](/docs/zh-TW/env-vars) | 600000 | 每個請求的逾時(毫秒)。在慢速網路或代理伺服器上請提高此值。它也會限制 Claude Code 等待回應標頭的時間上限,如 [No response from API](#no-response-from-api) 中所述。 |461| [`API_TIMEOUT_MS`](/docs/zh-TW/env-vars) | 600000 | 每個請求的逾時(毫秒)。在慢速網路或代理伺服器上請提高此值。它也會限制 Claude Code 等待回應標頭的時間上限,如 [No response from API](#no-response-from-api) 中所述。 |

451| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/zh-TW/env-vars) | 未設定 | 逾時的[非串流請求](#streaming-response-ended-before-any-complete-data-was-received)重新發送次數上限。達到上限時,請求會失敗。Claude 產生時間超過逾時的回應在每次重新發送時都會再次逾時,因此請設定較低的數字(例如 `0`)以便更快失敗。在本機工作階段中,每次非串流嘗試會在 300 秒後逾時,或當您設定正值時在 `API_TIMEOUT_MS` 後逾時。需要 Claude Code v2.1.285 或更新版本。 |462| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/zh-TW/env-vars) | 未設定 | 逾時的[非串流請求](#streaming-response-ended-before-any-complete-data-was-received)重新發送次數上限。達到上限時,請求會失敗。Claude 產生時間超過逾時的回應在每次重新發送時都會再次逾時,因此請設定較低的數字(例如 `0`)以便更快失敗。在本機工作階段中,每次非串流嘗試會在 300 秒後逾時,或當您設定正值時在 `API_TIMEOUT_MS` 後逾時。需要 Claude Code v2.1.285 或更新版本。 |

452| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-TW/env-vars) | 未設定 | 串流請求的第一個回應位元組的截止時間(毫秒)。需要 Claude Code v2.1.242 或更新版本。關於當此未設定時 Claude Code 如何選擇截止時間,請參閱 [No response from API](#no-response-from-api)。 |463| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-TW/env-vars) | 未設定 | 串流請求的第一個回應位元組的截止時間(毫秒)。需要 Claude Code v2.1.242 或更新版本。關於當此未設定時 Claude Code 如何選擇截止時間,請參閱 [No response from API](#no-response-from-api)。 |


2045這些步驟會變更您自己的環境之一。[組織共享環境](/docs/zh-TW/cloud-environments#organization-shared-environments)在選擇器中以唯讀方式開啟,因此請要求擁有者從[管理設定](https://claude.ai/admin-settings)中的**雲端環境**頁面變更其網路存取。2056這些步驟會變更您自己的環境之一。[組織共享環境](/docs/zh-TW/cloud-environments#organization-shared-environments)在選擇器中以唯讀方式開啟,因此請要求擁有者從[管理設定](https://claude.ai/admin-settings)中的**雲端環境**頁面變更其網路存取。

2046 2057 

2047* 開啟您的環境進行編輯,可從 [routine 的表單](/docs/zh-TW/routines#environments-and-network-access),或從您啟動雲端工作階段的[環境選擇器](/docs/zh-TW/cloud-environments#configure-your-environment)開啟。2058* 開啟您的環境進行編輯,可從 [routine 的表單](/docs/zh-TW/routines#environments-and-network-access),或從您啟動雲端工作階段的[環境選擇器](/docs/zh-TW/cloud-environments#configure-your-environment)開啟。

2048* 在**編輯環境**對話方塊中,將**網路存取**從**信任**變更為**自訂**,然後將被阻止的網域新增到**允許的網域**。每行輸入一個網域。勾選**也包括常見套件管理員的預設清單**以在您的自訂網域旁邊保留[預設允許清單](/docs/zh-TW/cloud-environments#default-allowed-domains)。如果您想要不受限制的存取,請改為選擇**完整**。2059* 在**編輯雲端環境**對話方塊中,將**網路存取**從**信任**變更為**自訂**,然後將被阻止的網域新增到**允許的網域**。每行輸入一個網域。勾選**也包括常見套件管理員的預設清單**以在您的自訂網域旁邊保留[預設允許清單](/docs/zh-TW/cloud-environments#default-allowed-domains)。如果您想要不受限制的存取,請改為選擇**完整**。

2049* 按一下**儲存變更**。下一次執行使用更新的允許清單。對於已開啟的雲端工作階段,請參閱[網路存取變更何時到達現有工作階段](/docs/zh-TW/cloud-environments#network-access)。2060* 按一下**儲存變更**。下一次執行使用更新的允許清單。對於已開啟的雲端工作階段,請參閱[網路存取變更何時到達現有工作階段](/docs/zh-TW/cloud-environments#network-access)。

2050 2061 

2051請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)以了解存取層級和預設允許清單。本機 CLI 工作階段不受此原則影響。2062請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)以了解存取層級和預設允許清單。本機 CLI 工作階段不受此原則影響。


2097 2108 

2098在 v2.1.236 之前,Claude Code 顯示原始 JavaScript TypeError 而不是這些訊息。2109在 v2.1.236 之前,Claude Code 顯示原始 JavaScript TypeError 而不是這些訊息。

2099 2110 

2111<h3 id="failed-to-fetch-session-from-sessions-api">

2112 Failed to fetch session from Sessions API

2113</h3>

2114 

2115此訊息表示 Claude Code 找到了[您要求拉取到終端機的雲端工作階段](/docs/zh-TW/claude-code-on-the-web#from-cloud-to-terminal),但無法從 Anthropic 的伺服器讀取其對話記錄,因此沒有開啟它:

2116 

2117```text theme={null}

2118Failed to fetch session from Sessions API: Failed to fetch session logs

2119```

2120 

2121您會在執行 `claude --teleport`、`/teleport`,或在 [`/tasks`](/docs/zh-TW/commands) 清單中選擇該工作階段後看到它。`claude --teleport <session-id>` 會列印它並以代碼 1 退出。

2122 

2123**該怎麼做:**

2124 

2125* 再次執行相同的 teleport。如果以相同方式失敗,請[回報問題](#report-an-error)

2126 

2127在 v2.1.296 之前,Claude Code 不會重試失敗的讀取,並且在讀取失敗後可能會以空白對話開啟該工作階段並回報成功,而不是列印此訊息。

2128 

2100<h3 id="couldnt-reconnect-to-your-remote-control-session">2129<h3 id="couldnt-reconnect-to-your-remote-control-session">

2101 Couldn't reconnect to your Remote Control session2130 Couldn't reconnect to your Remote Control session

2102</h3>2131</h3>


2344* 如果訊息報告尺寸或大小限制,請在附加之前將影像調整大小或重新壓縮到該限制以下。2373* 如果訊息報告尺寸或大小限制,請在附加之前將影像調整大小或重新壓縮到該限制以下。

2345* 如果訊息命名原因(例如 CMYK JPEG、動畫 WebP 或可能損壞的檔案),請以訊息建議的格式重新保存影像並再次附加。2374* 如果訊息命名原因(例如 CMYK JPEG、動畫 WebP 或可能損壞的檔案),請以訊息建議的格式重新保存影像並再次附加。

2346 2375 

2376<h3 id="request-rejected-as-unprocessable-by-the-model">

2377 Request rejected as unprocessable by the model

2378</h3>

2379 

2380API 拒絕了該請求,認為模型無法處理。此訊息來自 API 本身。

2381 

2382```text theme={null}

2383API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2384```

2385 

2386Claude Code 可以從被拒絕的請求中移除最舊的圖片和文件,然後重新傳送。在 v2.1.290 之前,Claude Code 遇到此拒絕時不會移除圖片,因此累積了數百張圖片的長時間工作階段可能每個回合都會以此錯誤失敗。

2387 

2388**處理方式:**

2389 

2390* 如果此訊息在含有圖片或文件的對話中持續出現,請自行將其移除。按兩次 Esc 回到加入它們的回合之前,或執行 `/clear` 重新開始。

2391 

2347<h3 id="pdf-errors">2392<h3 id="pdf-errors">

2348 PDF 錯誤2393 PDF 錯誤

2349</h3>2394</h3>


2413* 移除或[禁用](/docs/zh-TW/mcp#disable-a-server-without-removing-it)聲明無效 schema 的 MCP 伺服器。該錯誤僅按位置命名工具。在 v2.1.216 或更高版本上,檢查每個伺服器的日誌以查找命名輸入 schema 會被拒絕的工具的行。如果沒有日誌命名一個,請一次禁用一個伺服器。2458* 移除或[禁用](/docs/zh-TW/mcp#disable-a-server-without-removing-it)聲明無效 schema 的 MCP 伺服器。該錯誤僅按位置命名工具。在 v2.1.216 或更高版本上,檢查每個伺服器的日誌以查找命名輸入 schema 會被拒絕的工具的行。如果沒有日誌命名一個,請一次禁用一個伺服器。

2414* 如果您維護伺服器,請修復工具的 `input_schema`。schema 必須是有效的 JSON Schema,頂級屬性名稱必須是 1 到 64 個字元長,並且只使用 ASCII 字母和數字、`_`、`.` 和 `-`。請參閱[輸入 schema 無效的工具](/docs/zh-TW/mcp#tools-with-invalid-input-schemas)。2459* 如果您維護伺服器,請修復工具的 `input_schema`。schema 必須是有效的 JSON Schema,頂級屬性名稱必須是 1 到 64 個字元長,並且只使用 ASCII 字母和數字、`_`、`.` 和 `-`。請參閱[輸入 schema 無效的工具](/docs/zh-TW/mcp#tools-with-invalid-input-schemas)。

2415 2460 

2461<h3 id="mcp-tool-name-over-128-characters">

2462 MCP 工具名稱超過 128 個字元

2463</h3>

2464 

2465MCP 伺服器列出的工具完整名稱(例如 `mcp__<server>__<tool>`)超過 API 接受的 128 個字元。Claude Code [會將該工具排除在傳送給 Claude 的工具之外](/docs/zh-TW/mcp#tools-with-names-longer-than-128-characters),而該伺服器的其他工具仍可正常運作。在您從 shell 以 `claude --debug` 啟動的工作階段中,Claude Code 會將此訊息寫入位於 `~/.claude/debug/<session-id>.txt` 的偵錯日誌:

2466 

2467```text theme={null}

2468Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128

2469```

2470 

2471**該怎麼辦:**

2472 

2473* 如果您維護該伺服器,請縮短工具的名稱。

2474* 如果該伺服器位於您的 [MCP 設定](/docs/zh-TW/mcp#mcp-installation-scopes)中,請在該處為其指定較短的名稱,例如以 `db` 取代 `analytics-database`。然後更新以舊名稱參照該伺服器或其工具的項目,例如[權限規則](/docs/zh-TW/permissions#mcp)和 [hook matcher](/docs/zh-TW/hooks#match-mcp-tools)。

2475* 如果[外掛捆綁了該伺服器](/docs/zh-TW/mcp#plugin-provided-mcp-servers),工具的完整名稱也會包含外掛名稱。請要求外掛的維護者縮短伺服器或工具名稱。

2476 

2477在 v2.1.292 之前,Claude Code 仍會傳送該工具,而 API 會以 `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters` 拒絕包含它的每個請求。

2478 

2416<h3 id="tool-use-name-over-200-characters">2479<h3 id="tool-use-name-over-200-characters">

2417 tool\_use.name 超過 200 個字元2480 tool\_use.name 超過 200 個字元

2418</h3>2481</h3>


3022 3085 

3023此訊息會在您[從終端機建立雲端工作階段](/docs/zh-TW/claude-code-on-the-web#from-terminal-to-cloud)時出現,也會在您提交需要雲端工作階段的命令(例如 `/teleport`、`/remote-env` 或 `/web-setup`)時出現。在 v2.1.268 之前,提交這些命令之一會改為傳回 [`Unknown command`](#unknown-command)。3086此訊息會在您[從終端機建立雲端工作階段](/docs/zh-TW/claude-code-on-the-web#from-terminal-to-cloud)時出現,也會在您提交需要雲端工作階段的命令(例如 `/teleport`、`/remote-env` 或 `/web-setup`)時出現。在 v2.1.268 之前,提交這些命令之一會改為傳回 [`Unknown command`](#unknown-command)。

3024 3087 

3025這是伺服器端的組織政策,因此無法透過本機設定、環境變數或 CLI 旗標覆寫。3088如果訊息改為指出此工作階段正在使用的某個憑證,並以 `Cloud sessions use your claude.ai login.` 結尾,請參閱 [Cloud sessions use your claude.ai login](#cloud-sessions-use-your-claude-ai-login)。如果 Claude Code 完全無法載入您組織的政策,您會看到[另一則訊息](#couldnt-verify-your-organizations-policy-for-cloud-sessions)。

3026 

3027如果 Claude Code 尚未載入您組織的政策或無法擷取該政策,這些命令會改為回應 `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.`。

3028 3089 

3029**處理方式:**3090**處理方式:**

3030 3091 

3031* 請您組織中的 [Owner](/docs/zh-TW/server-managed-settings#access-control) 在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 的 Claude Code 管理設定中啟用雲端工作階段3092* 請您組織中的 [Owner](/docs/zh-TW/server-managed-settings#access-control) 在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 的 Claude Code 管理設定中啟用雲端工作階段

3032* 如果訊息表示無法驗證政策,請檢查您的網路連線,然後重新啟動 Claude Code 並再試一次3093 

3094<h3 id="cloud-sessions-use-your-claude-ai-login">

3095 Cloud sessions use your claude.ai login

3096</h3>

3097 

3098當[政策拒絕訊息](#cloud-sessions-are-disabled-by-your-organizations-policy)指出此工作階段正在使用的某個憑證並以這句話結尾時,表示 Claude Code 檢查的是核發該憑證之組織的雲端工作階段政策。該組織可能與您的 claude.ai 登入所屬的組織不同:

3099 

3100```text theme={null}

3101Cloud sessions are disabled by your organization's policy. This session is using ANTHROPIC_API_KEY, so Claude Code checked the policy for the organization that key belongs to. Cloud sessions use your claude.ai login.

3102```

3103 

3104最後一句話表示雲端工作階段是在您的 claude.ai 登入上執行,而不是在該憑證上執行。當您從 shell 啟動、恢復雲端工作階段或傳送訊息給雲端工作階段時(例如使用 `--cloud` 或 `--teleport`),就會出現此形式。在 v2.1.296 之前,Claude Code 在這種情況下也會輸出要求您聯絡組織管理員的形式。

3105 

3106<h3 id="couldnt-verify-your-organizations-policy-for-cloud-sessions">

3107 Couldn't verify your organization's policy for cloud sessions

3108</h3>

3109 

3110這些訊息表示 Claude Code 無法載入您組織的政策,而它會在建立、恢復[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)或傳送訊息給雲端工作階段之前檢查該政策。當政策請求尚未完成時,訊息為:

3111 

3112```text theme={null}

3113Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.

3114```

3115 

3116在工作階段中,需要雲端工作階段的命令(例如 `/teleport` 或 `/web-setup`)也會顯示此訊息。即使在您的 shell 會輸出 `Cloud sessions aren't available:` 形式的情況下也是如此,且其第二句為 `Check your network connection, then restart Claude Code and try again.`

3117 

3118一旦政策請求失敗,訊息就會說明失敗的原因。這適用於您使用 `--cloud` 或 `--teleport` 等旗標從 shell 啟動、恢復雲端工作階段或傳送訊息給雲端工作階段的情況。在無法連到 API 時,訊息為:

3119 

3120```text theme={null}

3121Cloud sessions aren't available: couldn't reach api.anthropic.com to load your organization's policy. Check your network or proxy.

3122```

3123 

3124其他失敗會使用相同的開頭並附上各自的原因,例如代理伺服器以 HTTP 403 拒絕請求、伺服器錯誤,或 API 不接受的憑證。當 API 不接受此工作階段用來取代您 claude.ai 登入的憑證(例如 `ANTHROPIC_API_KEY` 環境變數)時,訊息也可能指出該憑證並要求您取消設定它:

3125 

3126```text theme={null}

3127Cloud sessions aren't available: api.anthropic.com didn't accept this session's credentials when Claude Code asked for your organization's policy. Cloud sessions use your claude.ai login. ANTHROPIC_API_KEY is set, so this session is using API-key auth — unset it (or run in a shell without it) to use cloud sessions.

3128```

3129 

3130在 v2.1.296 之前,這些失敗也會輸出 `Couldn't verify` 訊息。

3131 

3132**處理方式:**

3133 

3134* 對於 `Couldn't verify` 訊息,請檢查網路連線後再試一次。若在工作階段中,請先重新啟動 Claude Code

3135* 對於 `Cloud sessions aren't available:` 訊息,請依其原因採取對應措施,例如檢查代理伺服器或取消設定訊息指出的憑證,然後再次執行命令

3136 

3137<h3 id="nothing-was-stashed-because-a-folder-replaced-a-tracked-file">

3138 由於資料夾取代了受追蹤的檔案,未暫存任何內容

3139</h3>

3140 

3141此訊息表示您的檢出目錄中,現在有一個資料夾位於原本由 git 追蹤的檔案或連結所在的位置。當您將[雲端工作階段](/docs/zh-TW/claude-code-on-the-web#from-cloud-to-terminal)拉取到終端機(例如使用 `claude --teleport` 或 `/teleport`)並選擇暫存(stash)選項之後,就會出現此訊息。暫存這種狀態可能會刪除資料夾內的檔案,因此 Claude Code 會拒絕暫存,並讓您的檢出目錄與索引保持不變:

3142 

3143```text wrap theme={null}

3144Error: Nothing was stashed: "f" is now a folder in place of a tracked file or link, and stashing could delete what's in it for good. Commit the change or move the folder somewhere else, then try again.

3145```

3146 

3147**處理方式:**

3148 

3149* 依照訊息所述,提交變更或將資料夾移到其他位置,然後再次執行 teleport

3033 3150 

3034<h3 id="the-json-schema-value-is-not-a-valid-json-schema">3151<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

3035 `--json-schema` 的值不是有效的 JSON Schema3152 `--json-schema` 的值不是有效的 JSON Schema


3427 3544 

3428Claude Code 對任何[注入動態脈絡](/docs/zh-TW/skills#when-an-injected-command-fails)的 skill 都會顯示相同的錯誤,而失敗的注入命令會中止該 skill 的呼叫。另有兩個同類字串會在命令執行之前就觸發:3545Claude Code 對任何[注入動態脈絡](/docs/zh-TW/skills#when-an-injected-command-fails)的 skill 都會顯示相同的錯誤,而失敗的注入命令會中止該 skill 的呼叫。另有兩個同類字串會在命令執行之前就觸發:

3429 3546 

3430* `Shell command permission check failed for pattern "..."`:該命令的權限檢查不允許它執行。[注入命令的權限檢查](/docs/zh-TW/skills#permission-checks-on-injected-commands)說明了在各權限模式下哪些結果會中止,以及如何以 `allowed-tools` 預先核准命令3547* `Shell command permission check failed for pattern "..."`:命令的權限檢查不允許它執行。[注入命令的權限檢查](/docs/zh-TW/skills#permission-checks-on-injected-commands)說明在各權限模式下哪些結果會中止,以及如何使用 `allowed-tools` 預先核准命令

3431* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``:該 skill 的 frontmatter 在沒有 bash 的機器上要求 bash。請安裝 Git for Windows,或將 frontmatter 變更為 `shell: powershell`。請參閱[注入命令的執行方式](/docs/zh-TW/skills#how-injected-commands-run)3548* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``:該 skill 的 frontmatter 要求在沒有 bash 的機器上使用 bash。請安裝 Git for Windows,或將 frontmatter 改為 `shell: powershell`。請參閱[注入命令的執行方式](/docs/zh-TW/skills#how-injected-commands-run)

3432 3549 

3433**處理方式:**3550**處理方式:**

3434 3551 


3577 3694 

3578* **您沒有傳入基底分支**:Claude Code 與儲存庫的預設分支進行比較,並建議您明確傳入基底分支,如上例所示3695* **您沒有傳入基底分支**:Claude Code 與儲存庫的預設分支進行比較,並建議您明確傳入基底分支,如上例所示

3579* **您傳入的基底分支已存在於您的複製中**:提示內容為 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3696* **您傳入的基底分支已存在於您的複製中**:提示內容為 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3580* **您傳入的基底分支不在您的 clone 中**:Claude Code 在比較前從 origin fetch 了該分支。提示為 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``;當 Claude Code 無法判斷您的 clone 是否為淺層 clone 時,它會改為建議 `git fetch --unshallow origin`。在 v2.1.221 之前,提示會對每個 fetch 而來的基底分支建議 `git fetch --unshallow origin`,而在完整的 clone 上,該命令會以 `fatal: --unshallow on a complete repository does not make sense` 失敗。3697* **您傳入的基礎分支不在您的 clone 中**:Claude Code 在比對之前先從 origin 擷取了它。提示為 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``;當 Claude Code 無法判斷您的 clone 是否為淺層 clone 時,則會改為建議 `git fetch --unshallow origin`。在 v2.1.221 之前,提示會對每個擷取的基礎分支建議 `git fetch --unshallow origin`,而在完整的 clone 上,該命令會以 `fatal: --unshallow on a complete repository does not make sense` 失敗。

3581 3698 

3582**處理方式:**3699**處理方式:**

3583 3700 


3835 Claude Code couldn't restart3952 Claude Code couldn't restart

3836</h3>3953</h3>

3837 3954 

3838Claude Code 正在重新啟動,例如在您執行 [`/tui`](/docs/zh-TW/fullscreen#enable-fullscreen-rendering) 後切換至或切換離開全螢幕渲染。它關閉了工作階段,但無法啟動新的程序,因此輸出此訊息並以狀態 1 結束:3955當此訊息表示您的對話已儲存時,代表對話已寫入磁碟,您可以從中斷處繼續。Claude Code 當時正在自行重新啟動,例如在您執行 [`/tui`](/docs/zh-TW/fullscreen#enable-fullscreen-rendering) 後切換至或切換出全螢幕渲染,但無法啟動新程序,因此以狀態 1 結束:

3839 3956 

3840```text theme={null}3957```text theme={null}

3841Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.3958Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.


3845 3962 

3846**處理方式:**3963**處理方式:**

3847 3964 

3848* 在 shell 中從相同目錄再次執行 `claude`。若訊息表示您的對話已儲存,請在新的工作階段中執行 [`/resume`](/docs/zh-TW/sessions#resume-a-session) 並選擇該對話3965* 在您的 shell 中再次執行 `claude`。如果訊息表示您的對話已儲存,請在新工作階段中執行 [`/resume`](/docs/zh-TW/sessions#resume-a-session) 並選取該對話。如果對話不在清單中,請[擴大工作階段選擇器的範圍](/docs/zh-TW/sessions#where-the-session-picker-looks)

3849* 若重新啟動持續失敗,請在 shell 中使用 [`claude --debug-file claude-debug.log`](/docs/zh-TW/cli-reference#cli-flags) 啟動 Claude Code。若從該工作階段重新啟動失敗,您啟動所在目錄中的 `claude-debug.log` 會記錄一行包含作業系統錯誤的 `Failed to relaunch:`。在您[回報問題](#report-an-error)時請附上該行3966* 若重新啟動持續失敗,請在 shell 中使用 [`claude --debug-file claude-debug.log`](/docs/zh-TW/cli-reference#cli-flags) 啟動 Claude Code。若從該工作階段重新啟動失敗,您啟動所在目錄中的 `claude-debug.log` 會記錄一行包含作業系統錯誤的 `Failed to relaunch:`。在您[回報問題](#report-an-error)時請附上該行

3850 3967 

3851<h3 id="couldnt-open-claude-desktop">3968<h3 id="couldnt-open-claude-desktop">


5332 設定警告5449 設定警告

5333</h2>5450</h2>

5334 5451 

5335Claude Code 將大多數這些訊息寫入 stderr,而不是寫入對話中,並在啟動時寫入大多數訊息。當訊息出現在其他地方(例如在偵錯日誌中或作為對話檢視中的啟動通知)或在其他時間(例如[要求時的無法辨識模型診斷行](#unrecognized-model-id-on-a-request))時,條目會說明這一點。5452Claude Code 會將這些訊息大多寫入 stderr,而非寫入對話中,且大多在啟動時寫入。若某個項目的訊息出現在其他位置(例如除錯日誌中,或在對話檢視中作為啟動通知),或出現在其他時間點(例如在請求時出現的[無法辨識模型診斷行](#unrecognized-model-id-on-a-request)),該項目會加以說明。

5336 5453 

5337<h3 id="exited-after-an-unrecoverable-interface-error">5454<h3 id="exited-after-an-unrecoverable-interface-error">

5338 Claude Code 在無法復原的介面錯誤後退出5455 Claude Code exited after an unrecoverable interface error

5339</h3>5456</h3>

5340 5457 

5341當 Claude Code 退出時會列印此訊息,因為其終端介面遇到無法復原的錯誤,在任一轉譯器中都是如此。第二句僅在[全螢幕](/docs/zh-TW/fullscreen)轉譯器啟動時發生錯誤時出現:5458當 Claude Code 的終端機介面遇到無法復原的錯誤而結束時,無論使用哪一種渲染器,Claude Code 都會印出此訊息。只有在錯誤發生於 [fullscreen](/docs/zh-TW/fullscreen) 渲染器啟動期間時,才會出現第二句:

5342 5459 

5343```text theme={null}5460```text theme={null}

5344Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).5461Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).

5345```5462```

5346 5463 

5347**該怎麼做:**5464**處理方式:**

5348 5465 

5349* 再次啟動 Claude Code。若要繼續進行對話,請在同一目錄中執行 `claude --resume`。5466* 重新啟動 Claude Code。若要接續先前的對話,請在相同目錄中執行 `claude --resume`。

5350* 如果訊息命名全螢幕轉譯器,[全螢幕轉譯](/docs/zh-TW/fullscreen#fullscreen-renderer-didnt-finish-starting)會說明下次啟動的作用,這取決於您如何開啟全螢幕,以及如何再次嘗試全螢幕或保持傳統轉譯器。5467* 若訊息提及 fullscreen 渲染器,[全螢幕渲染](/docs/zh-TW/fullscreen#fullscreen-renderer-didnt-finish-starting)說明了下次啟動時的行為(取決於您開啟全螢幕的方式),以及如何再次嘗試全螢幕或保留經典渲染器。

5351 5468 

5352在 v2.1.236 之前,Claude Code 在此類錯誤後退出而不列印訊息。5469在 v2.1.236 之前,Claude Code 遇到這類錯誤後會直接結束,不會印出任何訊息。

5353 5470 

5354<h3 id="agent-descriptions-are-over-the-15000-token-limit">5471<h3 id="agent-descriptions-are-over-the-15000-token-limit">

5355 代理程式描述超過 15.0k 令牌限制5472 Agent descriptions are over the 15.0k-token limit

5356</h3>5473</h3>

5357 5474 

5358Claude Code 在對話檢視中顯示此警告作為啟動通知,而不是在 stderr 上。您的[子代理程式](/docs/zh-TW/sub-agents)(除了內建代理程式外)的組合描述超過 15,000 個令牌,如 Claude Code 估計的那樣。每個代理程式計算其名稱加上其 `description` frontmatter。Claude Code 無論總數是否超過限制都會載入每個代理程式,因此警告不會改變載入的內容。5475Claude Code 會在對話檢視中以啟動通知的形式顯示此警告,而非寫入 stderr。您的 [subagent](/docs/zh-TW/sub-agents)(內建的除外)合計的描述內容,依 Claude Code 的估算超過 15,000 個 token。每個 agent 計入的是其名稱加上其 `description` frontmatter。無論總量是否超過上限,Claude Code 都會載入每個 agent,因此此警告不會改變載入的內容。

5359 5476 

5360```text theme={null}5477```text theme={null}

5361Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/5478Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/

5362```5479```

5363 5480 

5364**該怎麼做:**5481**處理方式:**

5365 5482 

5366* 縮短您的代理程式檔案的 `description` frontmatter,或要求 Claude 為您修剪它們。5483* 縮短您 agent 檔案中的 `description` frontmatter,或請 Claude 為您精簡。

5367* 移除您不再使用的代理程式檔案。5484* 移除您不再使用的 agent 檔案。

5485 

5486<h3 id="hook-needs-quotes-around-a-path-with-a-space">

5487 Hook needs quotes around a path with a space

5488</h3>

5489 

5490對話檢視中的此通知表示某個 hook 的腳本未執行,因為其路徑含有空格且未加上引號。該 hook 是 shell 形式的 [`asyncRewake`](/docs/zh-TW/hooks#run-hooks-in-the-background) hook。在其 `command` 中,`python3` 之類的直譯器後面接著未加引號的路徑預留位置,而解析後的路徑包含空格。

5491 

5492通知開頭為該 hook 的事件名稱,並指出腳本名稱:

5493 

5494```text theme={null}

5495Stop hook needs quotes around a path with a space (check.py)

5496```

5497 

5498**處理方式:**

5499 

5500* 在執行通知所指腳本之 hook 的 `command` 中,以雙引號包住路徑。在 JSON 檔案中,請寫成 `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`。

5368 5501 

5369<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">5502<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">

5370 技能、命令或工作流程未被載入,因為其名稱已保留5503 某個 skill、命令或工作流程因名稱為保留名稱而未載入

5371</h3>5504</h3>

5372 5505 

5373技能資料夾、frontmatter `name`、`.claude/commands/` 中的檔案或子資料夾,或[已儲存的工作流程](/docs/zh-TW/workflows#save-the-workflow-for-reuse)使用名稱 `anthropic-skills` 或以 `anthropic-skills:` 開頭的名稱。Claude Code [保留該名稱用於從 claude.ai 同步的技能](/docs/zh-TW/skills#names-reserved-for-synced-skills),不會載入該項目。5506某個 skill 資料夾、frontmatter 的 `name`、`.claude/commands/` 中的檔案或子資料夾,或某個[已儲存的工作流程](/docs/zh-TW/workflows#save-the-workflow-for-reuse)使用了 `anthropic-skills` 這個名稱,或以 `anthropic-skills:` 開頭的名稱。Claude Code [將該名稱保留給從 claude.ai 同步的 skill](/docs/zh-TW/skills#names-reserved-for-synced-skills),因此不會載入該項目。

5374 5507 

5375Claude Code 在對話檢視中顯示此警告作為啟動通知,而不是在 stderr 上:5508Claude Code 會在對話檢視中以啟動通知的形式顯示此警告,而非寫入 stderr:

5376 5509 

5377```text theme={null}5510```text theme={null}

5378Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account5511Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account

5379```5512```

5380 5513 

5381通知命名它拒絕的第一個項目要變更的內容:要重新命名的資料夾或檔案、要編輯的 `name:` 行,或要重新命名的工作流程。當拒絕了多個項目時,通知以計數結尾,例如 `· 2 more`,[偵錯日誌](/docs/zh-TW/debug-your-config)命名每一個。5514此通知會針對第一個被拒絕的項目指出需要變更的內容:要重新命名的資料夾或檔案、要編輯的 `name:` 行,或要重新命名的工作流程。當有多個項目被拒絕時,通知結尾會附上數量,例如 `· 2 more`,而[除錯日誌](/docs/zh-TW/debug-your-config)會列出每一個項目。

5382 5515 

5383**該怎麼做:**5516**處理方式:**

5384 5517 

5385* 重新命名通知命名的項目,或編輯它指向的 `name:` 行,然後重新啟動工作階段。5518* 重新命名通知所指的項目,或編輯其指向的 `name:` 行,然後重新啟動工作階段。

5386 5519 

5387在 v2.1.282 之前,Claude Code 載入了具有這些名稱的技能和命令。5520在 v2.1.282 之前,Claude Code 會載入使用這些名稱的 skill 和命令。

5521 

5522<h3 id="skill-or-command-name-refused">

5523 Skill or command name refused

5524</h3>

5525 

5526此啟動通知表示 Claude Code 拒絕了至少一個 [skill 或自訂命令](/docs/zh-TW/skills)的名稱,因此該項目未載入,或在未套用其 `name` 欄位的情況下載入:

5527 

5528```text theme={null}

55291 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5530```

5531 

5532* **未載入**:Claude Code 拒絕了 skill 或命令所使用的名稱,例如其目錄名稱,或命令檔案的名稱或子資料夾。該項目不會出現在 `/` 選單中,Claude 也無法呼叫它。其在除錯日誌中的行為 `<name> is not offered`。

5533* **忽略 `name` 欄位**:Claude Code 拒絕了某個 skill 的 frontmatter `name`。該 skill 仍會載入,但 `/` 選單不會顯示 `name` 的值,輸入該值也無法呼叫此 skill。其在除錯日誌中的行為 `<name value> is not shown for <skill>`。

5534 

5535**處理方式:**

5536 

5537* 從您的 shell 以 `claude --debug` 啟動 Claude Code,並在[除錯日誌](/docs/zh-TW/debug-your-config)中搜尋 `[names]`。通知所計入的每個名稱在那裡都有一行。該行會將部分隱藏字元以代碼形式寫出,例如以 `\u{200B}` 表示零寬度空格,讓您能看出它們的位置。

5538* 透過重新命名資料夾或檔案,或編輯 `name:` 行,移除 [skill 名稱不能包含的字元](/docs/zh-TW/skills#characters-a-skill-name-cant-hold),或縮短超過 256 個字元的名稱。接著重新啟動工作階段,除非該檔案位於 Claude Code [會監看變更](/docs/zh-TW/skills#live-change-detection)的目錄中。若是來自非您撰寫之外掛的 skill,請請外掛作者重新命名。

5388 5539 

5389<h3 id="workspace-has-not-been-trusted">5540<h3 id="workspace-has-not-been-trusted">

5390 工作區尚未受信任5541 Workspace has not been trusted

5391</h3>5542</h3>

5392 5543 

5393Claude Code 在專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中找到 `permissions.allow` 規則或 `permissions.additionalDirectories` 項目,但未應用它們,因為[來自專案設定的允許規則需要工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。計數、設定名稱和訊息中命名的檔案因您的設定而異。`deny` 和 `ask` 規則不受影響。5544Claude Code 在專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中找到 `permissions.allow` 規則或 `permissions.additionalDirectories` 項目,但未套用它們,因為[來自專案設定的允許規則需要工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。訊息中的數量、設定名稱及所列出的檔案會因您的設定而有所不同。`deny` 和 `ask` 規則不受影響。

5394 5545 

5395```text theme={null}5546```text theme={null}

5396Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.5547Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.

5397```5548```

5398 5549 

5399**該怎麼做:**5550**處理方式:**

5400 5551 

5401* 在目錄中執行 `claude` 並接受信任對話。[專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)說明該接受涵蓋哪個資料夾。5552* 在該目錄中執行 `claude` 並接受信任對話框。[專案允許規則與工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)說明了該次接受所涵蓋的資料夾。

5402* 在[非互動模式](/docs/zh-TW/headless)中使用 `-p` 不會顯示對話。使用訊息列印的確切 `projects` 金鑰在 `~/.claude.json` 中設定 `hasTrustDialogAccepted` 項目。5553* 在搭配 `-p` 的[非互動模式](/docs/zh-TW/headless)下不會顯示對話框。請使用訊息所印出的確切 `projects` 鍵,在 `~/.claude.json` 中設定 `hasTrustDialogAccepted` 項目。

5403* 如果訊息命名 `.claude/settings.local.json` 且您在 git 儲存庫外或在主目錄中啟動 Claude Code,請更新至 v2.1.200 或更新版本。版本 2.1.196 至 2.1.199 在這些工作區中將您自己的 `.claude/settings.local.json` 視為儲存庫提供的。在 v2.1.207 及更新版本上,如果您尚未信任資料夾,在 git 儲存庫外更新還不夠:確定資料夾不在儲存庫內會執行 git,Claude Code 僅在您接受信任對話後才執行該檢查,因此請使用第一步。您的主目錄和任何其他[設定主目錄](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)豁免且不等待對話。請參閱[專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。5554* 若訊息提及 `.claude/settings.local.json`,且您是在 git 儲存庫之外或在家目錄中啟動 Claude Code,請更新至 v2.1.200 或更新版本。2.1.196 至 2.1.199 版在這些工作區中會將您自己的 `.claude/settings.local.json` 視為由儲存庫提供。在 v2.1.207 及更新版本中,若您尚未信任該資料夾,僅更新並不足以解決 git 儲存庫之外的情況:判斷資料夾不在儲存庫內需要執行 git,而 Claude Code 只會在您接受信任對話框後才執行該檢查,因此請使用第一個步驟。您的家目錄及任何其他[設定主目錄](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)不受此限制,無需等待對話框。請參閱[專案允許規則與工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。

5404 5555 

5405<h3 id="working-directory-is-a-network-path">5556<h3 id="working-directory-is-a-network-path">

5406 工作目錄是網路路徑5557 工作目錄是網路路徑

5407</h3>5558</h3>

5408 5559 

5409Claude Code 不會將網路路徑新增為工作目錄。查詢網路路徑可以聯絡它命名的主機,在 Windows 上該聯絡可以將您的認證傳送給主機,因此 Claude Code 拒絕該路徑而不查詢它。當您使用此類路徑執行 `/add-dir` 時,或作為啟動時的警告時,您會看到此訊息。當它在啟動時出現時,Claude Code 啟動時不包含該目錄。5560Claude Code 不會將網路路徑加入為工作目錄。查詢網路路徑可能會連線到其所指定的主機,而在 Windows 上,該連線可能會將您的憑證傳送給該主機,因此 Claude Code 會在不查詢的情況下直接拒絕該路徑。當您以此類路徑執行 `/add-dir` 時,或在啟動時以警告形式,您會看到此訊息。若在啟動時出現,Claude Code 會在不包含該目錄的情況下啟動。

5410 5561 

5411```text theme={null}5562```text theme={null}

5412\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).5563\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).


5415Claude Code 以此方式拒絕的路徑包括:5566Claude Code 以此方式拒絕的路徑包括:

5416 5567 

5417* UNC 共用,例如 `\\server\share`5568* UNC 共用,例如 `\\server\share`

5418* 自動掛載路徑,例如 `/net/<host>`,除非您從該主機的自動掛載下的目錄啟動 Claude Code。該自動掛載下的讀取仍會經過[網路路徑檢查](/docs/zh-TW/permissions#network-paths)。5569* 自動掛載路徑,例如 `/net/<host>`,除非您是從該主機自動掛載下的目錄啟動 Claude Code。在該自動掛載下的讀取仍會經過[網路路徑檢查](/docs/zh-TW/permissions#network-paths)。

5419* 透過符號連結或連接點到達網路位置的本機路徑5570* 透過符號連結或 junction 連到網路位置的本機路徑

5420 5571 

5421對應的磁碟機代號和 `\\wsl$` 路徑不計為網路路徑。5572對應的磁碟機代號和 `\\wsl$` 路徑不算網路路徑。

5422 5573 

5423**該怎麼做:**5574**處理方式:**

5424 5575 

5425* 在 Windows 上,將共用對應到磁碟機代號,例如使用 `net use Z: \\server\share`,並在啟動時使用 `claude --add-dir Z:\` 傳遞磁碟機。5576* 在 Windows 上,將共用對應到磁碟機代號,例如使用 `net use Z: \\server\share`,並在啟動時以 `claude --add-dir Z:\` 傳入該磁碟機。

5426* 在 macOS 或 Linux 上,在本機路徑掛載共用並改為新增該路徑。5577* 在 macOS 或 Linux 上,將共用掛載到本機路徑,改為加入該路徑。

5427* 如果路徑在 `permissions.additionalDirectories` 中,請從列出它的設定檔中移除它。5578* 若該路徑位於 `permissions.additionalDirectories` 中,請從列出它的設定檔中移除。

5428 5579 

5429在 v2.1.257 之前,Claude Code 接受可到達的網路路徑作為工作目錄。5580在 v2.1.257 之前,Claude Code 會接受可連線的網路路徑作為工作目錄。

5430 5581 

5431<h3 id="remote-managed-settings-failed-to-load">5582<h3 id="remote-managed-settings-failed-to-load">

5432 遠端受管設定無法載入5583 Remote managed settings failed to load

5433</h3>5584</h3>

5434 5585 

5435您的工作階段符合[伺服器受管設定](/docs/zh-TW/server-managed-settings)的資格,但 Claude Code 無法擷取它們或無法應用伺服器傳回的內容,因此在互動工作階段中顯示此警告。5586您的工作階段符合使用[伺服器管理設定](/docs/zh-TW/server-managed-settings)的資格,但 Claude Code 無法擷取這些設定,或無法套用伺服器回傳的內容,因此會在互動式工作階段中顯示此警告。

5436 5587 

5437括號中的原因命名失敗的內容,例如 `network error`、`request timed out` 或 `authentication rejected (401)`。原因 `no setting in the server response could be applied as written` 表示伺服器已回應,但它傳回的設定都未通過[驗證](/docs/zh-TW/server-managed-settings#invalid-entries-in-delivered-settings)。在 v2.1.282 之前,此原因讀作 `server returned invalid settings`。5588括號內的原因會指出失敗的項目,例如 `network error`、`request timed out` 或 `authentication rejected (401)`。原因 `no setting in the server response could be applied as written` 表示伺服器有回應,但其回傳的設定沒有任何一項通過[驗證](/docs/zh-TW/server-managed-settings#invalid-entries-in-delivered-settings)。在 v2.1.282 之前,此原因顯示為 `server returned invalid settings`。

5438 5589 

5439行的其餘部分說明工作階段執行的策略:5590該行其餘部分會說明工作階段所依循的政策:

5440 5591 

5441* **從較早成功擷取快取的設定**:Claude Code 在該快取策略上執行工作階段,除了[隱藏的環境變數](/docs/zh-TW/server-managed-settings#fetch-and-caching-behavior),行讀取 `using cached policy`。5592* **有先前成功擷取時快取的設定**:Claude Code 會以該快取政策執行工作階段([保留的環境變數](/docs/zh-TW/server-managed-settings#fetch-and-caching-behavior)除外),該行顯示 `using cached policy`。

5442* **無快取**:Claude Code 在沒有伺服器受管設定的情況下執行工作階段,行讀取 `no remote policy applied`。5593* **沒有快取**:Claude Code 會在沒有伺服器管理設定的情況下執行工作階段,該行顯示 `no remote policy applied`。

5443 5594 

5444**該怎麼做:**5595**處理方式:**

5445 5596 

5446* 對訊息命名的原因採取行動:對於網路原因,檢查此機器是否可以到達 `api.anthropic.com`;對於驗證原因,使用 `/status` 檢查您的登入5597* 針對訊息所指的原因採取行動:若為網路原因,請確認此機器能連線到 `api.anthropic.com`;若為身分驗證原因,請以 `/status` 檢查您的登入狀態

5447* 對於 `no setting in the server response could be applied as written`,要求您的管理員更正伺服器上的設定5598* 若為 `no setting in the server response could be applied as written`,請請您的管理員修正伺服器上的設定

5448* 執行 `/status` 或 `claude doctor` 以取得完整診斷5599* 執行 `/status` 或 `claude doctor` 以取得完整診斷

5449 5600 

5450在 v2.1.248 之前,Claude Code 僅在偵錯日誌中報告設定擷取失敗。5601在 v2.1.248 之前,Claude Code 只會在除錯日誌中回報設定擷取失敗。

5451 5602 

5452<h3 id="managed-settings-were-not-approved">5603<h3 id="managed-settings-were-not-approved">

5453 受管設定未獲批准5604 Managed settings were not approved

5454</h3>5605</h3>

5455 5606 

5456您的組織的[伺服器受管設定](/docs/zh-TW/server-managed-settings)包括需要您批准的設定,且您拒絕了[安全批准對話](/docs/zh-TW/server-managed-settings#security-approval-dialogs),因此 Claude Code 退出而不應用它們:5607您組織的[伺服器管理設定](/docs/zh-TW/server-managed-settings)包含需要您核准的設定,而您拒絕了[安全性核准對話框](/docs/zh-TW/server-managed-settings#security-approval-dialogs),因此 Claude Code 會在不套用這些設定的情況下結束:

5457 5608 

5458```text theme={null}5609```text theme={null}

5459Managed settings were not approved; exiting without applying them.5610Managed settings were not approved; exiting without applying them.

5460```5611```

5461 5612 

5462**該怎麼做:**5613**處理方式:**

5463 5614 

5464* 再次啟動 Claude Code 並批准對話以在您的組織設定下繼續。拒絕的對話不會被記住,因此在下次啟動時會再次出現。5615* 重新啟動 Claude Code 並核准對話框,以在組織的設定下繼續使用。被拒絕的對話框不會被記住,因此下次啟動時會再次出現。

5465* 如果您對對話列出的設定不確定,在批准前詢問維護您的組織受管設定的人5616* 若您不確定對話框中列出的某項設定,請在核准之前詢問負責維護組織受管設定的人員

5466 5617 

5467<h3 id="managed-settings-block-the-default-model">5618<h3 id="managed-settings-block-the-default-model">

5468 受管設定阻止預設模型5619 受管設定封鎖了預設模型

5469</h3>5620</h3>

5470 5621 

5471您的組織的[受管設定](/docs/zh-TW/managed-settings)阻止預設選項解析為的模型以及它可以降級到的每個模型。將在預設選項上啟動的工作階段在啟動時退出,而不是執行被阻止的模型。您看到的訊息取決於阻止它的設定。當 [`deniedModels`](/docs/zh-TW/model-config#block-specific-models-or-versions) 清單阻止它時,訊息讀作:5622您組織的[受管設定](/docs/zh-TW/managed-settings)封鎖了 Default 選項所解析到的模型,以及它可能降級使用的每一個模型。原本會以 Default 選項啟動的工作階段會在啟動時結束,而不會執行被封鎖的模型。您看到的訊息取決於封鎖它的設定。當 [`deniedModels`](/docs/zh-TW/model-config#block-specific-models-or-versions) 清單封鎖它時,訊息如下:

5472 5623 

5473```text theme={null}5624```text theme={null}

5474Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".5625Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

5475```5626```

5476 5627 

5477當 `availableModels` 清單且 [`availableModelsMatch`](/docs/zh-TW/settings-reference#availablemodelsmatch) 設定為 `"exact"` 時省略它,訊息讀作:5628當 [`availableModelsMatch`](/docs/zh-TW/settings-reference#availablemodelsmatch) 設為 `"exact"` 的 `availableModels` 清單未包含它時,訊息如下:

5478 5629 

5479```text theme={null}5630```text theme={null}

5480Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".5631Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".

5481```5632```

5482 5633 

5483**該怎麼做:**5634**處理方式:**

5484 5635 

5485* 如果您管理設定,將您的使用者可以執行的模型新增到 `availableModels`,或縮小阻止每個後備的 `deniedModels` 項目。[阻止特定模型或版本](/docs/zh-TW/model-config#block-specific-models-or-versions)描述預設選項如何降級5636* 若您負責管理這些設定,請將使用者可以執行的模型加入 `availableModels`,或縮小封鎖每一個備援模型的 `deniedModels` 項目。[封鎖特定模型或版本](/docs/zh-TW/model-config#block-specific-models-or-versions)說明了 Default 選項的降級方式

5486* 如果您不管理它們,將訊息傳送給您的管理員。您自己的設定檔案無法擴大受管 `availableModels` 或 `deniedModels` 清單5637* 若您並未負責管理這些設定,請將訊息傳送給您的管理員。您自己的設定檔無法擴大受管的 `availableModels` 或 `deniedModels` 清單

5487 5638 

5488<h3 id="managed-settings-dont-allow-this-api-provider">5639<h3 id="managed-settings-dont-allow-this-api-provider">

5489 受管設定不允許此 API 提供者5640 受管設定不允許此 API 供應商

5490</h3>5641</h3>

5491 5642 

5492您的組織的[受管設定](/docs/zh-TW/managed-settings)設定了 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 清單,且工作階段的 API 提供者不在其上,或工作階段使用的端點不是以該項目要求的方式固定的。Claude Code 在啟動前、登入前或工作階段下次聯絡 API 時拒絕。訊息以允許的提供者開頭:5643您組織的[受管設定](/docs/zh-TW/managed-settings)設定了 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 清單,而工作階段的 API 供應商不在清單中,或工作階段使用的端點未依該項目要求的方式固定。Claude Code 會在啟動時、登入前,或在工作階段下次連線 API 時拒絕執行。訊息開頭會列出允許的供應商:

5493 5644 

5494```text theme={null}5645```text theme={null}

5495Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.5646Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

5496```5647```

5497 5648 

5498當清單為空時,訊息改為讀作:5649當清單為空時,訊息改為:

5499 5650 

5500```text theme={null}5651```text theme={null}

5501Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.5652Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.

5502```5653```

5503 5654 

5504當每個項目都無法辨識時,括號讀作 `(allowedProviders lists only unrecognized entries)` 代替。5655當每個項目都無法辨識時,括號內容改為 `(allowedProviders lists only unrecognized entries)`。

5505 5656 

5506**該怎麼做:**5657**處理方式:**

5507 5658 

5508* 遵循訊息的 `To continue:` 步驟5659* 依照訊息中 `To continue:` 的步驟操作

5509* 如果您管理設定,訊息的以 `Admins:` 開頭的行命名要新增的項目或要固定的值,[`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 項目說明哪個來源的 `env` 區塊可以固定它5660* 若您負責管理這些設定,訊息中以 `Admins:` 開頭的行會指出要加入的項目或要固定的值,而 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 項目說明了哪個來源的 `env` 區塊可以固定它

5510 5661 

5511<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">5662<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">

5512 MCP 伺服器被企業受管策略阻止5663 MCP server is blocked by enterprise managed policy

5513</h3>5664</h3>

5514 5665 

5515您在 `/mcp` 中選擇了伺服器上的**重新連線**,或在那裡重新開啟了已停用的伺服器,且[限制 MCP 伺服器](/docs/zh-TW/managed-mcp)的設定阻止該伺服器。Claude Code 拒絕連線它並顯示:5666您在 `/mcp` 中對某個伺服器選擇了 **Reconnect**,或在那裡重新開啟了已停用的伺服器,而某項[限制 MCP 伺服器](/docs/zh-TW/managed-mcp)的設定封鎖了該伺服器。Claude Code 會拒絕連線並顯示:

5516 5667 

5517```text theme={null}5668```text theme={null}

5518MCP server <name> is blocked by enterprise managed policy5669MCP server <name> is blocked by enterprise managed policy

5519```5670```

5520 5671 

5521以下任何設定都可能產生訊息:5672以下任一設定都可能產生此訊息:

5522 5673 

5523* 與伺服器相符的 [`deniedMcpServers`](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists) 項目,包括您自己的 `~/.claude/settings.json` 或專案的 `.claude/settings.json` 中的項目5674* 符合該伺服器的 [`deniedMcpServers`](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists) 項目,包括您自己的 `~/.claude/settings.json` 或專案的 `.claude/settings.json` 中的項目

5524* 伺服器不相符的 [`allowedMcpServers`](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists) 清單5675* 該伺服器不符合的 [`allowedMcpServers`](/docs/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists) 清單

5525* [`strictPluginOnlyCustomization`](/docs/zh-TW/settings-reference#strictpluginonlycustomization) 且 `mcp` 已鎖定,這會阻止在 `~/.claude.json` 和 `.mcp.json` 中設定的伺服器5676* 鎖定了 `mcp` 的 [`strictPluginOnlyCustomization`](/docs/zh-TW/settings-reference#strictpluginonlycustomization),它會封鎖在 `~/.claude.json` 和 `.mcp.json` 中設定的伺服器

5526* [`disableClaudeAiConnectors`](/docs/zh-TW/mcp#disable-claude-ai-connectors),當伺服器是 claude.ai 連接器時5677* [`disableClaudeAiConnectors`](/docs/zh-TW/mcp#disable-claude-ai-connectors),當該伺服器是 claude.ai 連接器時

5527 5678 

5528**該怎麼做:**5679**處理方式:**

5529 5680 

5530* 檢查您自己的使用者和專案設定檔案中是否有這些設定之一,並變更或移除它5681* 檢查您自己的使用者與專案設定檔中是否有上述設定,並加以變更或移除

5531* 如果您自己的設定都不能解釋該阻止,請詢問您的管理員哪個受管設定阻止了伺服器5682* 若您自己的設定都無法說明此封鎖,請詢問您的管理員是哪一項受管設定封鎖了該伺服器

5532 5683 

5533在 v2.1.257 之前,**重新連線**和在 `/mcp` 中重新啟用可以連線伺服器,該伺服器被中途工作階段策略更新阻止。5684在 v2.1.257 之前,`/mcp` 中的 **Reconnect** 和重新啟用可以連線到在工作階段中途因政策更新而被封鎖的伺服器。

5534 5685 

5535<h3 id="managed-settings-document-could-not-be-parsed">5686<h3 id="managed-settings-document-could-not-be-parsed">

5536 受管設定文件無法解析5687 Managed settings document could not be parsed

5537</h3>5688</h3>

5538 5689 

5539您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的文件存在但無法解析為 JSON 物件,因此 Claude Code 在啟動時以代碼 1 退出,而不是執行而不使用文件帶來的策略。行在訊息前命名失敗的來源:5690您的組織部署了[受管設定](/docs/zh-TW/managed-settings),而其中一份已部署的文件存在,但無法解析為 JSON 物件,因此 Claude Code 會在啟動時以代碼 1 結束,而不會在缺少該文件所含政策的情況下執行。該行會在訊息之前列出失敗的來源:

5540 5691 

5541```text theme={null}5692```text theme={null}

5542/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.5693/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.

5543```5694```

5544 5695 

5545來源是以下其中之一:5696來源為下列其中之一:

5546 5697 

5547* `managed-settings.json` 檔案的路徑或 `managed-settings.d` 下的放入檔案5698* `managed-settings.json` 檔案的路徑,或 `managed-settings.d` 下某個 drop-in 檔案的路徑

5548* macOS 受管偏好設定設定檔、`per-user managed preferences` 或 `device-level managed preferences`5699* macOS 受管偏好設定描述檔,`per-user managed preferences` 或 `device-level managed preferences`

5549* Windows 登錄值、`Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`5700* Windows 登錄值,`Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`

5550 5701 

5551[尋找 Claude Code 放棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)列出使每個來源無法解析的原因。5702[找出 Claude Code 捨棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)列出了導致各來源無法解析的原因。

5552 5703 

5553Claude Code 拒絕啟動,即使另一個管理來源提供有效策略。您在互動工作階段、`claude -p`、Agent SDK 工作階段、[背景工作階段](/docs/zh-TW/agent-view)和大多數子命令(包括 `claude doctor`)中看到此錯誤。拒絕故意失敗關閉:Claude Code 無法解析的文件中的設定無法強制執行,啟動時不應用組織的控制項會執行工作階段。5704即使另一個管理來源提供了有效的政策,Claude Code 仍會拒絕啟動。您會在互動式工作階段、`claude -p`、Agent SDK 工作階段、[背景工作階段](/docs/zh-TW/agent-view)及大多數子命令(包括 `claude doctor`)中看到此錯誤。此拒絕刻意採取失敗即封閉的方式:Claude Code 無法解析之文件中的設定無法強制執行,若仍然啟動,工作階段將在缺少組織管控的情況下執行。

5554 5705 

5555可解析文件中的架構問題不會產生此錯誤。[尋找 Claude Code 放棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)涵蓋 Claude Code 對其所做的操作。5706可解析文件中的 schema 問題不會產生此錯誤。[找出 Claude Code 捨棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)說明了 Claude Code 對此類問題的處理方式。

5556 5707 

5557當 `managed-settings.d/` 目錄存在但無法列出時,Claude Code 報告 `Managed settings drop-in directory could not be read:` 後跟基礎錯誤。[尋找 Claude Code 放棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)涵蓋讀取失敗在啟動時退出的時間。5708當 `managed-settings.d/` 目錄存在但無法列出內容時,Claude Code 會改為回報 `Managed settings drop-in directory could not be read:`,後面接著底層錯誤。[找出 Claude Code 捨棄的項目](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)說明了讀取失敗何時會導致啟動時結束。

5558 5709 

5559**該怎麼做:**5710**處理方式:**

5560 5711 

5561* 如果您管理機器,修復命名的文件使其解析為 JSON 物件,或移除檔案、設定檔或登錄值。空的 `managed-settings.json` 計為 `{}` 且不會阻止啟動。5712* 若您負責管理此機器,請修正所指的文件使其能解析為 JSON 物件,或移除該檔案、描述檔或登錄值。空的 `managed-settings.json` 會被視為 `{}`,不會阻擋啟動。

5562* 如果您不管理,請要求您的管理員修復已部署的文件。您自己的設定檔案中沒有任何內容會導致或清除此錯誤。5713* 若您並未負責管理,請請您的管理員修正已部署的文件。您自己設定檔中的任何內容都不會導致或消除此錯誤。

5563 5714 

5564<h3 id="unable-to-read-managed-policy-settings">5715<h3 id="unable-to-read-managed-policy-settings">

5565 無法讀取受管策略設定5716 Unable to read managed policy settings

5566</h3>5717</h3>

5567 5718 

5568您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的來源存在但無法讀取,原因例如 I/O 錯誤而不是作業系統拒絕讀取。沒有其他管理來源提供策略,Claude Code 在啟動時退出,而不是執行而不使用來源可能帶來的策略:5719您的組織部署了[受管設定](/docs/zh-TW/managed-settings),而其中一個已部署的來源存在但無法讀取,原因例如 I/O 錯誤,而非作業系統拒絕讀取。在沒有其他管理來源提供政策的情況下,Claude Code 會在啟動時結束,而不會在缺少該來源可能包含之政策的情況下執行:

5569 5720 

5570```text theme={null}5721```text theme={null}

5571Unable to read managed policy settings.5722Unable to read managed policy settings.


5575Detail: <source>: <reason>5726Detail: <source>: <reason>

5576```5727```

5577 5728 

5578在相同狀態下,登入流程、來自已執行工作階段的 API 要求,以及 [`claude gateway`](/docs/zh-TW/claude-apps-gateway) 伺服器被拒絕,使用命名 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 的第一行變體。5729在相同狀態下,登入流程、來自已在執行中之工作階段的 API 請求,以及 [`claude gateway`](/docs/zh-TW/claude-apps-gateway) 伺服器都會被拒絕,並顯示第一行的變體,其中會提及 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders)。

5579 5730 

5580作業系統拒絕的讀取(例如在僅限根的檔案上)不會產生此退出:[工作階段啟動時不使用該來源的策略](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)。對於無法解析的來源,Claude Code 以[命名來源的不同訊息](#managed-settings-document-could-not-be-parsed)退出。5731被作業系統拒絕的讀取(例如針對僅限 root 的檔案)不會導致此結束:[工作階段會在沒有該來源之政策的情況下啟動](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)。對於無法解析的來源,Claude Code 會以[另一則指出該來源的訊息](#managed-settings-document-could-not-be-parsed)結束。

5581 5732 

5582**該怎麼做:**5733**處理方式:**

5583 5734 

5584* 如果您管理機器,修復 `Detail:` 行命名的問題,以便已部署的來源可以讀取,或移除來源5735* 若您負責管理此機器,請修正 `Detail:` 行所指的問題,使已部署的來源能夠讀取,或移除該來源

5585* 如果您不管理,將訊息傳送給您的管理員。您自己的設定檔案中沒有任何內容會導致或清除此錯誤5736* 若您並未負責管理,請將訊息傳送給您的管理員。您自己設定檔中的任何內容都不會導致或消除此錯誤

5586 5737 

5587在 v2.1.285 之前,僅使用 claude.ai 或 Claude Console 認證登入的工作階段以此訊息退出,作業系統拒絕的讀取也產生了它。5738在 v2.1.285 之前,只有以 claude.ai 或 Claude Console 憑證登入的工作階段會以此訊息結束,而被作業系統拒絕的讀取也會產生此訊息。

5588 5739 

5589<h3 id="otelheadershelper-failed">5740<h3 id="otelheadershelper-failed">

5590 otelHeadersHelper 失敗5741 otelHeadersHelper failed

5591</h3>5742</h3>

5592 5743 

5593Claude Code 在互動工作階段中顯示此警告作為終端介面中的通知,每個工作階段一次,當 [`otelHeadersHelper`](/docs/zh-TW/settings-reference#otelheadershelper) 指令碼失敗或列印不符合[指令碼要求](/docs/zh-TW/monitoring-usage#script-requirements)的輸出時。5744當 [`otelHeadersHelper`](/docs/zh-TW/settings-reference#otelheadershelper) 腳本失敗,或印出不符合[腳本需求](/docs/zh-TW/monitoring-usage#script-requirements)的輸出時,Claude Code 會在終端機介面中以通知形式顯示此警告,每個互動式工作階段顯示一次。

5594 5745 

5595當指令碼持續失敗時,匯出失敗,您的遙測後端從工作階段接收不到任何內容。5746在腳本持續失敗期間,匯出會失敗,您的遙測後端不會從該工作階段收到任何內容。

5596 5747 

5597`See /status:` 後面的文字說明失敗的內容,例如指令碼的結束代碼後跟其錯誤輸出:5748`See /status:` 之後的文字會說明失敗的內容,例如腳本的退出碼,後面接著其錯誤輸出:

5598 5749 

5599```text theme={null}5750```text theme={null}

5600otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable5751otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable

5601```5752```

5602 5753 

5603**該怎麼做:**5754**處理方式:**

5604 5755 

5605* 執行 `/status` 以讀取失敗詳細資訊。5756* 執行 `/status` 以查看失敗詳細資訊。

5606* 修復指令碼使其在 30 秒內結束 0 並在 stdout 上列印 JSON 物件的字串標頭值。請參閱[指令碼要求](/docs/zh-TW/monitoring-usage#script-requirements)。5757* 修正腳本,使其在 30 秒內以 0 結束,並在 stdout 上印出由字串標頭值組成的 JSON 物件。請參閱[腳本需求](/docs/zh-TW/monitoring-usage#script-requirements)。

5607* 如果您的組織透過[受管設定](/docs/zh-TW/managed-settings)部署指令碼,要求維護它們的人修復它。5758* 若您的組織透過[受管設定](/docs/zh-TW/managed-settings)部署此腳本,請請負責維護的人員加以修正。

5608 5759 

5609在[非互動模式](/docs/zh-TW/headless)中使用 `-p`,相同的失敗改為在 stderr 上顯示為 `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>`。5760在搭配 `-p` 的[非互動模式](/docs/zh-TW/headless)下,相同的失敗會改以 `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>` 的形式出現在 stderr 上。

5610 5761 

5611<h3 id="headershelper-not-run">5762<h3 id="headershelper-not-run">

5612 headersHelper 未執行5763 headersHelper not run

5613</h3>5764</h3>

5614 5765 

5615Claude Code 僅使用其靜態 `headers` 連線了 MCP 伺服器,並跳過了伺服器的 [`headersHelper`](/docs/zh-TW/mcp#use-dynamic-headers-for-custom-authentication),因為協助程式是 shell 命令且資料夾沒有已儲存的信任。當您手動在 `~/.claude.json` 中設定其項目時,或在主目錄外,當您在互動工作階段中為其接受信任對話時,資料夾會獲得已儲存的信任。請參閱[在 headersHelper 執行前信任資料夾](/docs/zh-TW/mcp#trust-a-folder-before-its-headershelper-runs)以了解此檢查適用於哪些伺服器。5766Claude Code 僅以 MCP 伺服器的靜態 `headers` 連線該伺服器,並略過了該伺服器的 [`headersHelper`](/docs/zh-TW/mcp#use-dynamic-headers-for-custom-authentication),因為 helper 是 shell 命令,而該資料夾沒有已儲存的信任。當您手動在 `~/.claude.json` 中設定資料夾的項目時,或(在家目錄以外的位置)在互動式工作階段中接受該資料夾的信任對話框時,該資料夾就會取得已儲存的信任。關於此檢查適用於哪些伺服器,請參閱[在執行 headersHelper 之前信任資料夾](/docs/zh-TW/mcp#trust-a-folder-before-its-headershelper-runs)。

5616 5767 

5617Claude Code 僅在[非互動模式](/docs/zh-TW/headless)中寫入此行,每個伺服器一次。在互動工作階段中,它改為將相同的拒絕寫入偵錯日誌。5768Claude Code 只會在[非互動模式](/docs/zh-TW/headless)下寫入此行,每個伺服器一次。在互動式工作階段中,它會改將相同的拒絕寫入除錯日誌。

5618 5769 

5619```text theme={null}5770```text theme={null}

5620MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.5771MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.

5621```5772```

5622 5773 

5623訊息列印的 `projects` 金鑰是資料夾[專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)說明 Claude Code 信任的金鑰。為父資料夾接受信任對話不滿足檢查,`-p` 或 SDK 工作階段也不滿足。5774訊息所印出的 `projects` 鍵,就是[專案允許規則與工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)中所說 Claude Code 用來作為信任依據的資料夾。接受上層資料夾的信任對話框並不能滿足此檢查,`-p` 或 SDK 工作階段也無法滿足。

5624 5775 

5625**該怎麼做:**5776**處理方式:**

5626 5777 

5627* 在訊息命名的資料夾中執行 `claude`,接受信任對話,然後再次執行您的 `-p` 或 SDK 命令5778* 在訊息所指的資料夾中執行 `claude`,接受信任對話框,然後再次執行您的 `-p` 或 SDK 命令

5628* 在 `~/.claude.json` 中自己設定 `hasTrustDialogAccepted` 項目,使用訊息列印的確切 `projects` 金鑰5779* 使用訊息所印出的確切 `projects` 鍵,自行在 `~/.claude.json` 中設定 `hasTrustDialogAccepted` 項目

5629* 如果您在主目錄中啟動工作階段,請從您已信任的專案目錄工作。當您在主目錄中接受信任對話時,Claude Code 僅在目前工作階段中保持該信任。5780* 若您是在家目錄中啟動工作階段,請改在您已信任的專案目錄中工作。當您在家目錄中接受信任對話框時,Claude Code 只會在目前的工作階段中保留該信任。

5630 5781 

5631<h3 id="malformed-tool-content-rule">5782<h3 id="malformed-tool-content-rule">

5632 格式不正確的 Tool(content) 規則5783 Malformed Tool(content) rule

5633</h3>5784</h3>

5634 5785 

5635您的設定檔案中的[權限規則](/docs/zh-TW/permissions#permission-rule-syntax)沒有 `Tool` 或 `Tool(content)` 的形狀,例如因為文字跟在右括號後面或其中一個括號遺失。Claude Code 跳過規則,並在互動工作階段啟動時在無效設定對話中列出它,以及在 [`claude doctor`](/docs/zh-TW/debug-your-config#check-resolved-settings) 輸出中:5786您某個設定檔中的[權限規則](/docs/zh-TW/permissions#permission-rule-syntax)不符合 `Tool` 或 `Tool(content)` 的形式,例如右括號之後還有文字,或缺少其中一個括號。Claude Code 會略過該規則,並在互動式工作階段啟動時於無效設定對話框中列出,也會在 [`claude doctor`](/docs/zh-TW/debug-your-config#check-resolved-settings) 的輸出中列出:

5636 5787 

5637```text theme={null}5788```text theme={null}

5638Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal5789Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal

5639```5790```

5640 5791 

5641**該怎麼做:**5792**處理方式:**

5642 5793 

5643* 在訊息列出的設定檔中,重寫規則使其在其右括號處結束,例如用 `Bash(ls *)` 代替 `Bash(ls) x`5794* 在訊息所列的設定檔中,改寫該規則使其在右括號處結束,例如以 `Bash(ls *)` 取代 `Bash(ls) x`

5644* 內容中的括號保持原樣。它們是字面字元,因此像 `Edit(./Finance (2024)/**)` 這樣的規則無需跳脫即有效5795* 內容中的括號保持原樣即可。它們會被視為字面字元,因此像 `Edit(./Finance (2024)/**)` 這樣的規則無需跳脫即為有效

5645 5796 

5646在 v2.1.260 之前,Claude Code 將括號不相符的規則報告為 `Mismatched parentheses`。5797在 v2.1.260 之前,Claude Code 會將括號不成對的規則回報為 `Mismatched parentheses`。

5647 5798 

5648<h3 id="is-not-matched-by-file-permission-checks">5799<h3 id="is-not-matched-by-file-permission-checks">

5649 不符合檔案權限檢查5800 Is not matched by file permission checks

5650</h3>5801</h3>

5651 5802 

5652Claude Code 在您的[設定檔案](/docs/zh-TW/settings#where-settings-live)、[受管設定](/docs/zh-TW/managed-settings)或 `--allowedTools`、`--disallowedTools` 或 `--settings` 旗標值中找到了具有路徑的 `Write`、`NotebookEdit`、`MultiEdit` 或 `Glob`[權限規則](/docs/zh-TW/permissions#read-and-edit)。它僅針對 `Edit` 和 `Read` 規則檢查檔案權限,因此它永遠不會查詢命名其他檔案工具之一的路徑規則。它保留規則並不改變其他任何內容;警告命名規則、其在括號中的來源和要寫入的替換:5803Claude Code 在您的某個[設定檔](/docs/zh-TW/settings#where-settings-live)、[受管設定](/docs/zh-TW/managed-settings),或 `--allowedTools`、`--disallowedTools` 或 `--settings` 旗標值中,找到了帶有路徑的 `Write`、`NotebookEdit`、`MultiEdit` 或 `Glob` [權限規則](/docs/zh-TW/permissions#read-and-edit)。它只會依據 `Edit` 和 `Read` 規則檢查檔案權限,因此永遠不會參考指定其他檔案工具的路徑規則。它會保留該規則,不做其他變更;警告會列出該規則、括號中的來源,以及應改寫成的替代寫法:

5653 5804 

5654```text theme={null}5805```text theme={null}

5655Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).5806Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).

5656```5807```

5657 5808 

5658**該怎麼做:**5809**處理方式:**

5659 5810 

5660* 將 `Write(path)`、`NotebookEdit(path)` 和舊版 `MultiEdit(path)` 規則替換為 `Edit(path)`。`Edit` 規則涵蓋所有檔案編輯工具。5811* 將 `Write(path)`、`NotebookEdit(path)` 及舊版的 `MultiEdit(path)` 規則替換為 `Edit(path)`。`Edit` 規則涵蓋所有檔案編輯工具。

5661* 除了在 `--allowedTools` 中,Claude Code 接受 `Glob` 規則而不警告,將 `Glob(path)` 規則替換為 `Read(path)`。5812* 除了在 `--allowedTools` 中(Claude Code 在此接受 `Glob` 規則且不會發出警告)之外,請將 `Glob(path)` 規則替換為 `Read(path)`。

5662* 在警告在括號中命名的來源處修復規則:設定檔案路徑,或 `--allowed-tools` 和 `--disallowed-tools` 的旗標本身。不存在於磁碟上的 `claude-settings-<hash>.json` 路徑代表內聯 `--settings` 值。修復您傳遞給該旗標的 JSON。5813* 在警告括號中所指的來源修正規則:設定檔路徑,或對於 `--allowed-tools` 和 `--disallowed-tools` 則是旗標本身。磁碟上不存在的 `claude-settings-<hash>.json` 路徑代表的是內嵌的 `--settings` 值。請修正您傳給該旗標的 JSON。

5663* 將裸工具名稱規則(例如 `Write` 或 `Glob`)保留原樣。Claude Code 在[工具級別](/docs/zh-TW/permissions#match-all-uses-of-a-tool)上相符它們,不會警告它們。5814* 像 `Write` 或 `Glob` 這類僅有工具名稱的規則保持不變即可。Claude Code 會在[工具層級](/docs/zh-TW/permissions#match-all-uses-of-a-tool)比對它們,且不會對其發出警告。

5664* 如果來源讀取 `managed policy settings`,將警告轉發給維護您受管設定的人,因為您無法自己清除它。5815* 若來源顯示為 `managed policy settings`,請將警告轉給負責維護受管設定的人員,因為您無法自行消除它。

5665 5816 

5666在[背景工作階段](/docs/zh-TW/agent-view)或使用 `--output-format json` 或 `stream-json` 時,Claude Code 將警告寫入偵錯日誌而不是 stderr,因此機器讀取輸出保持乾淨。使用 `--debug` 在 `~/.claude/debug/<session-id>.txt` 處擷取它。在 v2.1.210 之前,Claude Code 接受這些規則而不警告。5817在[背景工作階段](/docs/zh-TW/agent-view)中,或使用 `--output-format json` 或 `stream-json` 時,Claude Code 會將警告寫入除錯日誌而非 stderr,以保持機器讀取的輸出乾淨。使用 `--debug` 執行即可在 `~/.claude/debug/<session-id>.txt` 中擷取它。在 v2.1.210 之前,Claude Code 會接受這些規則而不發出警告。

5667 5818 

5668<h3 id="has-a-wildcard-before-the-rest-of-the-command">5819<h3 id="has-a-wildcard-before-the-rest-of-the-command">

5669 在命令的其餘部分之前有萬用字元5820 Has a wildcard before the rest of the command

5670</h3>5821</h3>

5671 5822 

5672Claude Code 在您的[設定檔案](/docs/zh-TW/settings#where-settings-live)、[受管設定](/docs/zh-TW/managed-settings)或 `--allowedTools` 或 `--settings` 旗標值中找到了 `Bash` 允許規則,其 `*` 在決定它是哪個命令的後續單詞之前,例如 `Bash(git * main)` 或 `Bash(git -C * status *)`。`*` 符合任何文字,包括在該位置插入的選項:`Bash(git * main)` 也批准 `git -c core.fsmonitor=<script> diff main`,其中 `-c` 使 git 執行命令命名的程式。[萬用字元模式](/docs/zh-TW/permissions#wildcard-patterns)顯示相符規則。5823Claude Code 在您的某個[設定檔](/docs/zh-TW/settings#where-settings-live)、[受管設定](/docs/zh-TW/managed-settings),或 `--allowedTools` 或 `--settings` 旗標值中,找到了一條 `Bash` 允許規則,其 `*` 出現在決定命令為何的後續字詞之前,例如 `Bash(git * main)` 或 `Bash(git -C * status *)`。`*` 會比對任何文字,包括插入在該位置的選項:`Bash(git * main)` 也會核准 `git -c core.fsmonitor=<script> diff main`,其中 `-c` 會讓 git 執行命令中所指定的程式。[萬用字元模式](/docs/zh-TW/permissions#wildcard-patterns)說明了比對規則。

5673 5824 

5674警告存在是為了讓您縮小萬用字元比您預期更寬的規則。Claude Code 保留規則並不改變它相符的方式;警告命名規則及其在括號中的來源:5825此警告的目的是讓您能縮小萬用字元範圍比預期更廣的規則。Claude Code 會保留該規則,且不會改變其比對方式;警告會列出該規則及括號中的來源:

5675 5826 

5676```text theme={null}5827```text theme={null}

5677Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).5828Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).

5678```5829```

5679 5830 

5680**該怎麼做:**5831**處理方式:**

5681 5832 

5682* 將子命令前的 `*` 替換為您的確切值:用 `Bash(git checkout main)` 代替 `Bash(git * main)`。5833* 將子命令之前的 `*` 替換為您所指的確切值:以 `Bash(git checkout main)` 取代 `Bash(git * main)`。

5683* 將每個 `*` 移到子命令後:用 `Bash(git status *)` 代替 `Bash(git -C * status *)`。為您想允許的每個子命令寫一個規則。5834* 將每個 `*` 移到子命令之後:以 `Bash(git status *)` 取代 `Bash(git -C * status *)`。為每個您想允許的子命令各寫一條規則。

5684* 在警告在括號中命名的來源處修復規則:設定檔案路徑,或 `--allowed-tools` 旗標本身。不存在於磁碟上的 `claude-settings-<hash>.json` 路徑代表內聯 `--settings` 值。修復您傳遞給該旗標的 JSON。5835* 在警告括號中所指的來源修正規則:設定檔路徑,或 `--allowed-tools` 旗標本身。磁碟上不存在的 `claude-settings-<hash>.json` 路徑代表的是內嵌的 `--settings` 值。請修正您傳給該旗標的 JSON。

5685* 如果來源讀取 `managed policy settings`,將警告轉發給維護您受管設定的人,因為您無法自己清除它。5836* 若來源顯示為 `managed policy settings`,請將警告轉給負責維護受管設定的人員,因為您無法自行消除它。

5686 5837 

5687在[背景工作階段](/docs/zh-TW/agent-view)或使用 `--output-format json` 或 `stream-json` 時,Claude Code 將警告寫入偵錯日誌而不是 stderr,因此機器讀取輸出保持乾淨。使用 `--debug` 在 `~/.claude/debug/<session-id>.txt` 處擷取它。在 v2.1.246 之前,Claude Code 接受這些規則而不警告。5838在[背景工作階段](/docs/zh-TW/agent-view)中,或使用 `--output-format json` 或 `stream-json` 時,Claude Code 會將警告寫入除錯日誌而非 stderr,以保持機器讀取的輸出乾淨。使用 `--debug` 執行即可在 `~/.claude/debug/<session-id>.txt` 中擷取它。在 v2.1.246 之前,Claude Code 會接受這些規則而不發出警告。

5688 5839 

5689<h3 id="denying-bash-also-turns-off-the-powershell-tool">5840<h3 id="denying-bash-also-turns-off-the-powershell-tool">

5690 Denying Bash also turns off the PowerShell tool5841 Denying Bash also turns off the PowerShell tool

5691</h3>5842</h3>

5692 5843 

5693您移除了整個 Bash 工具,例如使用 `--disallowedTools Bash`,或在您的某個設定檔中使用單純的 `Bash` 或 `Bash(*)` [拒絕規則](/docs/zh-TW/permissions#match-all-uses-of-a-tool)。在已安裝 Git Bash 的 Windows 上,[拒絕 Bash 也會關閉 PowerShell 工具](/docs/zh-TW/tools-reference#bash-deny-rules-also-turn-off-the-powershell-tool),因此工作階段啟動時沒有任何 shell 工具。Claude Code 會在啟動時列印此警告:5844您移除了整個 Bash 工具,例如使用 `--disallowedTools Bash`,或在某個設定檔中使用僅有 `Bash` 或 `Bash(*)` 的[拒絕規則](/docs/zh-TW/permissions#match-all-uses-of-a-tool)。在安裝了 Git Bash 的 Windows 上,[拒絕 Bash 也會關閉 PowerShell 工具](/docs/zh-TW/tools-reference#bash-deny-rules-also-turn-off-the-powershell-tool),因此工作階段啟動時不會有任何 shell 工具。Claude Code 會在啟動時印出此警告:

5694 5845 

5695```text theme={null}5846```text theme={null}

5696Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.5847Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.

5697```5848```

5698 5849 

5699**該怎麼做:**5850**處理方式:**

5700 5851 

5701* 若要讓 Claude 使用 PowerShell,請在您的環境中或設定檔的 `env` 區塊中將 [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](/docs/zh-TW/env-vars) 設定為 `1`,如[啟用 PowerShell 工具](/docs/zh-TW/tools-reference#enable-the-powershell-tool)所示。之後 PowerShell 工具會保持開啟,與您的 Bash 拒絕規則並存。5852* 若要讓 Claude 使用 PowerShell,請依照[啟用 PowerShell 工具](/docs/zh-TW/tools-reference#enable-the-powershell-tool)所示,在您的環境中或設定檔的 `env` 區塊中將 [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](/docs/zh-TW/env-vars) 設為 `1`。如此一來,PowerShell 工具會與您的 Bash 拒絕規則並存並保持開啟。

5702* 若要封鎖特定命令而非整個工具,請在同一設定檔或旗標中,將單純的 `Bash` 項目替換為有範圍的規則,例如 `Bash(git push *)`。Claude 會保留 Bash 工具,而 PowerShell 工具會保持關閉,直到您也設定該變數或新增有範圍的 [`PowerShell` 權限規則](/docs/zh-TW/permissions#powershell)。5853* 若要封鎖特定命令而非整個工具,請在同一個設定檔或旗標中,將僅有 `Bash` 的項目替換為有範圍限定的規則,例如 `Bash(git push *)`。Claude 會保留 Bash 工具,而 PowerShell 工具會保持關閉,直到您也設定該變數或加入有範圍限定的 [`PowerShell` 權限規則](/docs/zh-TW/permissions#powershell)。

5703 5854 

5704在[背景工作階段](/docs/zh-TW/agent-view)中或使用 `--output-format json` 或 `stream-json` 時,Claude Code 會將警告寫入偵錯日誌而不是 stderr。使用 `--debug` 執行,即可在 `~/.claude/debug/<session-id>.txt` 擷取它。在 v2.1.287 之前,Claude Code 會以相同方式關閉 PowerShell 工具,但不列印警告。5855在[背景工作階段](/docs/zh-TW/agent-view)中,或使用 `--output-format json` 或 `stream-json` 時,Claude Code 會將警告寫入除錯日誌而非 stderr。使用 `--debug` 執行即可在 `~/.claude/debug/<session-id>.txt` 中擷取它。在 v2.1.287 之前,Claude Code 會以相同方式關閉 PowerShell 工具,但不會印出警告。

5705 5856 

5706<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">5857<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">

5707 crossSessionInbound 必須是 accept、hold、refuse 之一5858 crossSessionInbound must be one of accept, hold, refuse

5708</h3>5859</h3>

5709 5860 

5710設定檔案將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設定為 Claude Code 無法辨識的值,例如打字錯誤 `"reject"`。警告的第二句取決於哪個檔案保持該值;在使用者、專案、本機或 `--settings` 檔案中讀取:5861某個設定檔將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設為 Claude Code 無法辨識的值,例如拼錯的 `"reject"`。警告的第二句取決於哪個檔案包含該值;在使用者、專案、本機或 `--settings` 檔案中,內容如下:

5711 5862 

5712```text theme={null}5863```text theme={null}

5713"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.5864"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.

5714```5865```

5715 5866 

5716在[受管設定](/docs/zh-TW/managed-settings)中,Claude Code 將無法辨識的值視為 `refuse`(最限制的值),警告說跨工作階段訊息被拒絕,直到管理員修復它。有關保持如何與您其他設定檔案中的值結合,請參閱 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound)。5867在[受管設定](/docs/zh-TW/managed-settings)中,Claude Code 會將無法辨識的值視為最嚴格的 `refuse`,而警告會說明跨工作階段訊息在管理員修正之前都會被拒絕。關於保留行為如何與您其他設定檔中的值結合,請參閱 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound)。

5717 5868 

5718**該怎麼做:**5869**處理方式:**

5719 5870 

5720* 將金鑰設定為 `"accept"`、`"hold"` 或 `"refuse"`,或移除它5871* 將該鍵設為 `"accept"`、`"hold"` 或 `"refuse"`,或將其移除

5721* 當警告命名受管設定時,要求管理員修復該值5872* 當警告提及受管設定時,請請管理員修正該值

5722 5873 

5723在 v2.1.248 之前,Claude Code 忽略無法辨識的值而不警告。5874在 v2.1.248 之前,Claude Code 會忽略無法辨識的值而不發出警告。

5724 5875 

5725<h3 id="anthropic-foundry-resource-must-be-a-foundry-resource-name">5876<h3 id="anthropic-foundry-resource-must-be-a-foundry-resource-name">

5726 ANTHROPIC\_FOUNDRY\_RESOURCE 必須是 Foundry 資源名稱5877 ANTHROPIC\_FOUNDRY\_RESOURCE must be a Foundry resource name

5727</h3>5878</h3>

5728 5879 

5729您將 [`ANTHROPIC_FOUNDRY_RESOURCE`](/docs/zh-TW/env-vars) 設定為單純 [Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 資源名稱以外的內容,例如端點 URL 或其主機名稱。Claude Code 在傳送請求前就拒絕了該值。此訊息會出現在 Claude 回覆的位置,而不是作為啟動警告:5880您將 [`ANTHROPIC_FOUNDRY_RESOURCE`](/docs/zh-TW/env-vars) 設為非單純 [Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 資源名稱的值,例如端點 URL 或其主機名稱。Claude Code 在傳送請求之前就拒絕了該值。此訊息會出現在 Claude 回覆的位置,而非作為啟動警告:

5730 5881 

5731```text theme={null}5882```text theme={null}

5732API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.5883API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.

5733```5884```

5734 5885 

5735**該怎麼做:**5886**處理方式:**

5736 5887 

5737* 將 `ANTHROPIC_FOUNDRY_RESOURCE` 僅設定為資源名稱,然後重新啟動 Claude Code。對於端點 `https://my-resource.services.ai.azure.com/anthropic`,名稱為 `my-resource`。5888* 將 `ANTHROPIC_FOUNDRY_RESOURCE` 僅設為資源名稱,然後重新啟動 Claude Code。對於端點 `https://my-resource.services.ai.azure.com/anthropic`,名稱為 `my-resource`。

5738* 若要改為提供完整的端點 URL,請將 [`ANTHROPIC_FOUNDRY_BASE_URL`](/docs/zh-TW/env-vars) 設定為該 URL 並移除 `ANTHROPIC_FOUNDRY_RESOURCE`,然後重新啟動 Claude Code。Claude Code 只接受這兩個變數之一。5889* 若要改為提供完整的端點 URL,請將 [`ANTHROPIC_FOUNDRY_BASE_URL`](/docs/zh-TW/env-vars) 設為該 URL 並移除 `ANTHROPIC_FOUNDRY_RESOURCE`,然後重新啟動 Claude Code。Claude Code 只接受這兩個變數的其中一個。

5739 5890 

5740<h3 id="the-200k-limit-isnt-enforced">5891<h3 id="the-200k-limit-isnt-enforced">

5741 200K 限制未強制執行5892 The 200K limit isn't enforced

5742</h3>5893</h3>

5743 5894 

5744您設定了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/zh-TW/env-vars),這通常使[自動壓縮](/docs/zh-TW/model-config#default-auto-compact-thresholds)在 1M 上下文模型上保持工作階段至 200K 視窗,但沒有壓縮閾值將此工作階段限制在或低於 200K,因此對話可以超過它。5895您設定了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/zh-TW/env-vars),這通常會讓[自動壓縮](/docs/zh-TW/model-config#default-auto-compact-thresholds)將使用 1M 上下文模型的工作階段限制在 200K 視窗內,但沒有任何壓縮閾值將此工作階段限制在 200K 或以下,因此對話可能會超過該上限。

5745 5896 

5746```text theme={null}5897```text theme={null}

5747CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).5898CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).

5748```5899```

5749 5900 

5750Claude Code 為它辨識為具有原生 1M 視窗的每個模型自行強制執行 200K 限制,對於它無法辨識的模型 ID,它在它假設的視窗處壓縮。當其他設定擊敗該強制執行時出現警告:5901對於 Claude Code 辨識為具有原生 1M 視窗的每個模型,Claude Code 會自行強制執行 200K 上限;對於無法辨識的模型 ID,它會依其假設的視窗大小進行壓縮。當其他設定使該強制執行失效時,就會出現此警告:

5751 5902 

5752* 模型 ID 不是 Claude Code 辨識的,例如[LLM 閘道](/docs/zh-TW/llm-gateway)別名,且您設定了 [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/zh-TW/env-vars) 或使用 [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/zh-TW/env-vars) 將假設的視窗提高到 200K 以上。在此情況下,訊息也提供 `or update to a Claude Code version that recognizes <model>` 作為補救。5903* 模型 ID 不是 Claude Code 能辨識的,例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名,而您設定了 [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/zh-TW/env-vars),或以 [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/zh-TW/env-vars) 將假設的視窗提高到超過 200K。在此情況下,訊息還會提供 `or update to a Claude Code version that recognizes <model>` 作為補救方式。

5753* 透過 [`ANTHROPIC_BETAS`](/docs/zh-TW/env-vars) 或 [`--betas`](/docs/zh-TW/cli-reference#cli-flags) 旗標要求的 `context-1m` 測試版仍要求 API 在接受該測試版的模型上使用 1M 視窗,而沒有任何內容在 200K 處壓縮工作階段5904* 透過 [`ANTHROPIC_BETAS`](/docs/zh-TW/env-vars) 或 [`--betas`](/docs/zh-TW/cli-reference#cli-flags) 旗標請求的 `context-1m` beta,在接受該 beta 的模型上仍會向 API 要求 1M 視窗,而沒有任何機制在 200K 時壓縮工作階段

5754 5905 

5755**該怎麼做:**5906**處理方式:**

5756 5907 

5757* 設定 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](/docs/zh-TW/env-vars),或 [`autoCompactWindow`](/docs/zh-TW/settings-reference#autocompactwindow) 設定為 `200000`,以便自動壓縮在 200K 邊界處壓縮5908* 設定 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](/docs/zh-TW/env-vars),或將 [`autoCompactWindow`](/docs/zh-TW/settings-reference#autocompactwindow) 設定設為 `200000`,讓自動壓縮在 200K 邊界進行壓縮

5758* 如果訊息命名此版本無法辨識的模型 ID,執行 `claude update`。辨識 ID 為 1M 上下文模型的版本無需進一步設定即可強制執行限制。5909* 若訊息提及此版本無法辨識的模型 ID,請執行 `claude update`。能將該 ID 辨識為 1M 上下文模型的版本,無需額外設定即可強制執行該上限。

5759* 如果您想讓工作階段改為使用模型的完整視窗,取消設定 `CLAUDE_CODE_DISABLE_1M_CONTEXT`;警告僅報告 200K 限制未強制執行5910* 若您希望工作階段改為使用模型的完整視窗,請取消設定 `CLAUDE_CODE_DISABLE_1M_CONTEXT`;此警告只是回報 200K 上限未被強制執行

5760 5911 

5761在[背景工作階段](/docs/zh-TW/agent-view)或使用 `--output-format json` 或 `stream-json` 時,Claude Code 將警告寫入偵錯日誌而不是 stderr。5912在[背景工作階段](/docs/zh-TW/agent-view)中,或使用 `--output-format json` 或 `stream-json` 時,Claude Code 會將警告寫入除錯日誌而非 stderr。

5762 5913 

5763<h3 id="unrecognized-model-id-on-a-request">5914<h3 id="unrecognized-model-id-on-a-request">

5764 要求上無法辨識的模型 ID5915 請求中包含無法辨識的模型 ID

5765</h3>5916</h3>

5766 5917 

5767Claude Code 為您的 Claude Code 版本無法辨識的模型 ID 傳送了要求,並找不到將該 ID 對應到它辨識的模型的 [`modelOverrides`](/docs/zh-TW/model-config#override-model-ids-per-version) 項目。Claude Code 仍使用您設定的 ID 傳送要求,不退出或切換模型。5918Claude Code 傳送了一個請求,其模型 ID 是您的 Claude Code 版本無法辨識的,且找不到將該 ID 對應到可辨識模型的 [`modelOverrides`](/docs/zh-TW/model-config#override-model-ids-per-version) 項目。Claude Code 仍會以您所設定的 ID 傳送請求,不會結束或切換模型。

5768 5919 

5769```text theme={null}5920```text theme={null}

5770[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}5921[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}

5771```5922```

5772 5923 

5773在讀取 stderr 的指令碼或工具中,符合 `[claude-code:unrecognized_model]` 前綴。在前綴和一個空格之後,Claude Code 寫入一行 JSON 物件。Claude Code 可以在更新版本中向其新增欄位,因此忽略您不期望的任何欄位。它至少寫入這兩個:5924在讀取 stderr 的腳本或測試框架中,請比對 `[claude-code:unrecognized_model]` 前綴。在前綴和一個空格之後,Claude Code 會寫入一行 JSON 物件。Claude Code 可能會在之後的版本中新增欄位,因此請忽略任何您未預期的欄位。它至少會寫入以下兩個欄位:

5774 5925 

5775* `model`:您設定的模型字串5926* `model`:您所設定的模型字串

5776* `query_source`:使用模型的要求路徑。Claude Code 為 `-p` 執行報告 `sdk`,為子代理程式報告以 `agent:` 開頭的值。5927* `query_source`:使用該模型的請求路徑。對於 `-p` 執行,Claude Code 會回報 `sdk`;對於 subagent,則會回報以 `agent:` 開頭的值。

5777 5928 

5778Claude Code 根據您執行它的方式將行寫入兩個位置之一:5929Claude Code 會依您的執行方式,將此行寫入以下兩處之一:

5779 5930 

5780* 在[非互動模式](/docs/zh-TW/headless)中使用 `-p`,Claude Code 在每個 `--output-format` 下將其寫入 stderr,因此您可以解析 stdout 而不過濾行5931* 在搭配 `-p` 的[非互動模式](/docs/zh-TW/headless)下,無論 `--output-format` 為何,Claude Code 都會將其寫入 stderr,因此您可以直接解析 stdout 而無需過濾掉此行

5781* 在互動工作階段或[背景工作階段](/docs/zh-TW/agent-view)中,Claude Code 改為將其寫入偵錯日誌;使用 `--debug` 在 `~/.claude/debug/<session-id>.txt` 處擷取它5932* 在互動式工作階段或[背景工作階段](/docs/zh-TW/agent-view)中,Claude Code 會改將其寫入除錯日誌;使用 `--debug` 執行即可在 `~/.claude/debug/<session-id>.txt` 中擷取它

5782 5933 

5783Claude Code 每個模型字串每個程序寫入行一次。它為每個進一步的無法辨識的 ID 寫入單獨的行,例如[子代理程式](/docs/zh-TW/sub-agents#choose-a-model)或[背景功能](/docs/zh-TW/costs#background-token-usage)使用的 ID。5934Claude Code 在每個程序中,對每個模型字串只寫入一次此行。對於其他每個無法辨識的 ID,例如 [subagent](/docs/zh-TW/sub-agents#choose-a-model) 或[背景功能](/docs/zh-TW/costs#background-token-usage)所使用的 ID,它會另外寫入一行。

5784 5935 

5785Claude Code 不為它解析為它辨識的模型的提供者 ID 寫入行,例如 Amazon Bedrock `us.anthropic.claude-...` ID、Google Cloud 的 Agent Platform ID 帶有 `@` 版本後綴,以及包含 Claude 模型 ID 的 Microsoft Foundry 部署名稱。Claude Code 檢查 Amazon Bedrock[應用程式推論設定檔 ARN](/docs/zh-TW/amazon-bedrock#map-each-model-version-to-an-inference-profile) 後面的模型,而不是 ARN 本身。它為無法解析的 ARN(例如打字錯誤的 ARN)寫入無行。5936對於能解析為可辨識模型的供應商 ID,Claude Code 不會寫入此行,例如 Amazon Bedrock 的 `us.anthropic.claude-...` ID、帶有 `@` 版本後綴的 Google Cloud Agent Platform ID,以及包含 Claude 模型 ID 的 Microsoft Foundry 部署名稱。對於 Amazon Bedrock [應用程式推論設定檔 ARN](/docs/zh-TW/amazon-bedrock#map-each-model-version-to-an-inference-profile),Claude Code 會檢查其背後的模型,而非 ARN 本身。對於無法解析的 ARN(例如打錯的 ARN),它不會寫入任何行。

5786 5937 

5787**該怎麼做:**5938**處理方式:**

5788 5939 

5789* 如果您故意設定 ID,例如[LLM 閘道](/docs/zh-TW/llm-gateway)別名,將 [`modelOverrides`](/docs/zh-TW/model-config#override-model-ids-per-version) 項目新增到您的[設定檔案](/docs/zh-TW/settings#where-settings-live),以 ID 作為其值。使用 Anthropic 模型 ID 作為金鑰,而不是家族別名如 `opus`。對於範例行中的 `my-proxy-model`,新增此項目:5940* 若您是刻意設定該 ID,例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名,請在您的[設定檔](/docs/zh-TW/settings#where-settings-live)中加入一個 [`modelOverrides`](/docs/zh-TW/model-config#override-model-ids-per-version) 項目,並以該 ID 作為其值。請使用 Anthropic 模型 ID 作為鍵,而非 `opus` 之類的系列別名。對於範例行中的 `my-proxy-model`,請加入以下項目:

5790 5941 

5791 ```json theme={null}5942 ```json theme={null}

5792 {5943 {


5796 }5947 }

5797 ```5948 ```

5798 5949 

5799 Claude Code 然後將 `my-proxy-model` 視為 `claude-opus-4-6` 並停止寫入行。5950 如此一來,Claude Code 會將 `my-proxy-model` 視為 `claude-opus-4-6`,並停止寫入此行。

5800 5951 

5801* 如果 ID 命名比您的 Claude Code 版本更新的模型,執行 `claude update`5952* 若該 ID 指的是比您的 Claude Code 版本更新的模型,請執行 `claude update`

5802 5953 

5803* 如果 ID 是打字錯誤,在您可以設定模型的[位置](/docs/zh-TW/model-config#setting-your-model)或[別名變數](/docs/zh-TW/model-config#environment-variables)中修復它。如果 `query_source` 以 `agent:` 開頭,改為在您設定[子代理程式模型](/docs/zh-TW/sub-agents#choose-a-model)的位置修復它。5954* 若該 ID 是拼寫錯誤,請在包含它的[可設定模型的位置](/docs/zh-TW/model-config#setting-your-model)或[別名變數](/docs/zh-TW/model-config#environment-variables)中加以修正。若 `query_source` 以 `agent:` 開頭,請改在您設定 [subagent 模型](/docs/zh-TW/sub-agents#choose-a-model)的位置修正。

5804 5955 

5805在 v2.1.233 之前,Claude Code 為無法辨識的模型 ID 傳送要求時未寫入行。5956在 v2.1.233 之前,Claude Code 在為無法辨識的模型 ID 傳送請求時不會寫入任何行。

5806 5957 

5807<h3 id="stale-sandbox-mask-files-left-by-a-killed-session">5958<h3 id="stale-sandbox-mask-files-left-by-a-killed-session">

5808 被殺死的工作階段留下的過時沙箱遮罩檔案5959 Stale sandbox mask files left by a killed session

5809</h3>5960</h3>

5810 5961 

5811`claude doctor` 在其診斷中列印此警告,`/status` 列出相同的行。它在 Linux 和 WSL2 上出現,當[沙箱](/docs/zh-TW/sandboxing)啟用且檔案系統隔離開啟時。5962`claude doctor` 會在其診斷中印出此警告,`/status` 也會列出相同的行。當[沙箱機制](/docs/zh-TW/sandboxing)在啟用檔案系統隔離的情況下開啟時,此警告會出現在 Linux 和 WSL2 上。

5812 5963 

5813當沙箱化命令執行時,沙箱透過在那裡建立 0 位元組唯讀佔位符來保持對尚不存在的檔案的寫入拒絕,並在之後移除它。在該清理執行前被殺死的工作階段(例如透過 SIGKILL)會留下佔位符。後續工作階段在每次啟動時再次唯讀繫結它們,因此設定寫入(例如儲存「是,不要再問」)在其中一個所在的位置失敗。5964在沙箱化命令執行期間,沙箱會在尚不存在的檔案位置建立一個 0 位元組的唯讀佔位檔案,藉此對該檔案維持寫入拒絕,並在之後將其移除。若工作階段在清理執行之前被終止(例如被 SIGKILL),就會留下這些佔位檔案。之後的工作階段每次啟動時都會再次以唯讀方式綁定它們,因此在佔位檔案所在的位置進行設定寫入(例如儲存「Yes, and don't ask again」)會失敗。

5814 5965 

5815```text theme={null}5966```text theme={null}

5816- Stale sandbox mask files left by a killed session: /home/you/project/.claude/settings.local.json5967- Stale sandbox mask files left by a killed session: /home/you/project/.claude/settings.local.json

5817 Fix: Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start5968 Fix: Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start

5818```5969```

5819 5970 

5820**該怎麼做:**5971**處理方式:**

5821 5972 

5822* 退出在該專案中執行的任何其他 Claude Code 工作階段,然後使用 `rm` 刪除每個列出的檔案。警告命名最多三個檔案並計算其餘的,因此在刪除後重新執行 `claude doctor` 直到警告不再出現。另一個工作階段的沙箱仍在使用的佔位符是該工作階段寫入保護的活躍部分5973* 結束在該專案中執行的任何其他 Claude Code 工作階段,然後以 `rm` 刪除每個列出的檔案。警告最多會列出三個檔案並計算其餘數量,因此刪除後請重新執行 `claude doctor`,直到警告不再出現為止。另一個工作階段的沙箱仍在使用的佔位檔案,是該工作階段寫入保護中正在運作的一部分

5823* 如果您使用「是,不要再問」儲存的權限選擇未堅持,在刪除佔位符後再次儲存它5974* 若您以「Yes, and don't ask again」儲存的權限選擇沒有生效,請在刪除佔位檔案後再次儲存

5824 5975 

5825在 v2.1.257 之前,`claude doctor` 未標記這些檔案;較早版本在工作階段被殺死時留下相同的佔位符。5976在 v2.1.257 之前,`claude doctor` 不會標示這些檔案;較早的版本在工作階段被終止時也會留下相同的佔位檔案。

5826 5977 

5827<h2 id="responses-seem-lower-quality-than-usual">5978<h2 id="responses-seem-lower-quality-than-usual">

5828 回應品質似乎低於預期5979 回應品質似乎低於預期

Details

220</table>220</table>

221 221 

222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> 在 Google Cloud's Agent Platform 上,web search 適用於 Opus 4、Sonnet 4、Haiku 4.5 及更新的模型。<br />222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> 在 Google Cloud's Agent Platform 上,web search 適用於 Opus 4、Sonnet 4、Haiku 4.5 及更新的模型。<br />

223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> 在這些提供者上,auto mode 僅支援 Claude Sonnet 5 或更新版本、Opus 4.7 或更新版本、Haiku 5.5,以及 Fable 模型。請參閱 [Auto mode 設定](/docs/zh-TW/auto-mode-config)。如需工作階段在這些提供者上開始時的權限模式,請參閱[工作階段開始時的模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)。在 v2.1.158 到 v2.1.206 中,這些提供者上的 auto mode 也需要設定 `CLAUDE_CODE_ENABLE_AUTO_MODE=1`;v2.1.207 移除了此要求。<br />223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> 在這些提供者上,auto mode 僅支援 Claude Sonnet 5 或更新版本、Opus 4.7 或更新版本、Haiku 5.5,以及 Fable 模型。請參閱 [Auto mode 設定](/docs/zh-TW/auto-mode-config)。如需工作階段在這些提供者上開始時的權限模式,請參閱[工作階段開始時的模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)。<br />

224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> 受您與雲端提供者的協議約束。<br />224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> 受您與雲端提供者的協議約束。<br />

225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> 僅限儀表板和 API。[貢獻指標](/docs/zh-TW/analytics#enable-contribution-metrics)需要 claude.ai Team 或 Enterprise 組織。<br />225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> 僅限儀表板和 API。[貢獻指標](/docs/zh-TW/analytics#enable-contribution-metrics)需要 claude.ai Team 或 Enterprise 組織。<br />

226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> 需要 macOS 和 Linux 上的 Claude Code v2.1.224 或更新版本,包括 WSL 2 內的 Linux。在原生 Windows 上,需要 Claude Code v2.1.234 或更新版本。使用 API 金鑰驗證時,訊息傳遞僅限同一機器。在 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud's Agent Platform 和 Microsoft Foundry 上,訊息傳遞僅限同一機器,需要 Claude Code v2.1.248 或更新版本。Claude 只能從連接到 [Remote Control](/docs/zh-TW/remote-control) 的工作階段找到您的[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)和其他機器上的工作階段。若要連接,您需要 claude.ai 登入和其他 [Remote Control 要求](/docs/zh-TW/remote-control#requirements)。請參閱[在其他機器上訊息傳遞工作階段](/docs/zh-TW/cross-session-messaging#message-sessions-on-other-machines)。226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> 需要 macOS 和 Linux 上的 Claude Code v2.1.224 或更新版本,包括 WSL 2 內的 Linux。在原生 Windows 上,需要 Claude Code v2.1.234 或更新版本。使用 API 金鑰驗證時,訊息傳遞僅限同一機器。在 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud's Agent Platform 和 Microsoft Foundry 上,訊息傳遞僅限同一機器,需要 Claude Code v2.1.248 或更新版本。Claude 只能從連接到 [Remote Control](/docs/zh-TW/remote-control) 的工作階段找到您的[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)和其他機器上的工作階段。若要連接,您需要 claude.ai 登入和其他 [Remote Control 要求](/docs/zh-TW/remote-control#requirements)。請參閱[在其他機器上訊息傳遞工作階段](/docs/zh-TW/cross-session-messaging#message-sessions-on-other-machines)。

Details

312 312 

313 **什麼載入:** 新鮮、隔離的上下文,包含:313 **什麼載入:** 新鮮、隔離的上下文,包含:

314 314 

315 * 代理的自身系統提示,而不是 Claude Code 系統提示315 * agent 自身的系統提示詞,而不是 Claude Code 系統提示詞

316 * 代理 `skills:` 欄位中列出的 skills 的完整內容316 * agent `skills:` 欄位中列出的 skills 的完整內容

317 * CLAUDE.md 和 git 狀態,除了內置的 Explore 和 Plan 代理[省略兩者](/docs/zh-TW/sub-agents#what-loads-at-startup),以及定義設置 [`omitClaudeMd`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 的代理跳過使用者、專案和本地 CLAUDE.md 檔案317 * CLAUDE.md 和 git 狀態。內建的 Explore 和 Plan agent [兩者皆不載入](/docs/zh-TW/sub-agents#what-loads-at-startup),而定義中設定了 [`omitClaudeMd`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 的 agent 啟動時不包含使用者、專案和本地 CLAUDE.md 檔案。

318 * 主代理在提示中傳遞的任何上下文318 * 主 agent 在提示詞中傳遞的任何上下文

319 319 

320 對於[分支](/docs/zh-TW/sub-agents#fork-the-current-conversation),Claude Code 載入父對話到目前為止、系統提示和工具。320 對於[分支](/docs/zh-TW/sub-agents#fork-the-current-conversation),Claude Code 載入父對話到目前為止、系統提示和工具。

321 321 

Details

22 22 

23| 功能 | GHES 支持 | 備註 |23| 功能 | GHES 支持 | 備註 |

24| :- | :- | :- |24| :- | :- | :- |

25| Cloud sessions | ✅ 支持 | 擁有者連接 GHES 實例一次;開發人員像往常一樣使用 `claude --cloud` 或 [claude.ai/code](https://claude.ai/code) |25| 雲端工作階段 | ✅ 支援 | 擁有者只需連接 GHES 執行個體一次;開發人員使用 `claude --cloud` 或 [claude.ai/code](https://claude.ai/code) |

26| Code Review | ✅ 支持 | 與 github.com 相同的自動化 PR 審查 |26| Code Review | ✅ 支持 | 與 github.com 相同的自動化 PR 審查 |

27| Claude Security | ✅ 支持 | 在 Enterprise 計劃的公開測試版中提供,位於 [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ 支持 | 在 Enterprise 計劃的公開測試版中提供,位於 [claude.ai/security](https://claude.ai/security) |

28| Teleport sessions | ✅ 支持 | 使用 `--teleport` 在雲端和終端之間移動會話 |28| Teleport sessions | ✅ 支持 | 使用 `--teleport` 在雲端和終端之間移動會話 |


35 管理員設定35 管理員設定

36</h2>36</h2>

37 37 

38組織擁有者連接您的 GHES 執行個體到 Claude Code 一次。之後,您組織中的開發人員可以使用 GHES 儲存庫,無需任何額外設定。您需要在 Claude 組織中擁有擁有者或主要擁有者角色,以及在 GHES 執行個體上建立 GitHub Apps 的權限。38擁有者只需將您的 GHES 執行個體連接到 Claude Code 一次。您需要在 Claude 組織中擁有擁有者或主要擁有者角色,以及在 GHES 執行個體上建立 GitHub Apps 的權限。

39 39 

40引導式設定會產生 GitHub App 資訊清單,並將您重新導向到 GHES 執行個體以一鍵建立應用程式。如果您的環境阻止重新導向流程,可以使用[替代手動設定](#manual-setup)。40引導式設定會產生 GitHub App 資訊清單,並將您重新導向到 GHES 執行個體以一鍵建立應用程式。如果您的環境阻止重新導向流程,可以使用[替代手動設定](#manual-setup)。

41 41 


103 開發者工作流程103 開發者工作流程

104</h2>104</h2>

105 105 

106一旦擁有者連接了 GHES 執行個體,開發者端就不需要任何設定。Claude Code 會自動從您工作目錄中的 git remote 偵測您的 GHES 主機名稱。106Claude Code 會自動從您工作目錄中的 git remote 偵測您的 GHES 主機名稱。

107 107 

108從您的 GHES 執行個體複製儲存庫,方式與平常相同,將 `github.example.com` 和儲存庫路徑替換為您的 GHES 主機名稱和儲存庫:108從您的 GHES 執行個體複製儲存庫,方式與平常相同,將 `github.example.com` 和儲存庫路徑替換為您的 GHES 主機名稱和儲存庫:

109 109 


228 228 

229如果 `claude --cloud` 因克隆錯誤而失敗,請驗證 Owner 已完成您的 GHES 實例的設置,並且 GitHub App 已安裝在您正在使用的存儲庫上。與連接該實例的 Owner 確認在 Claude 設置中註冊的主機名與您的 git 遠端中的主機名匹配。229如果 `claude --cloud` 因克隆錯誤而失敗,請驗證 Owner 已完成您的 GHES 實例的設置,並且 GitHub App 已安裝在您正在使用的存儲庫上。與連接該實例的 Owner 確認在 Claude 設置中註冊的主機名與您的 git 遠端中的主機名匹配。

230 230 

231如果工作階段停止並顯示「Authentication failed while accessing the repository」,您可能尚未連接自己的 GitHub Enterprise 帳戶。請從 [claude.ai/code](https://claude.ai/code) 上的儲存庫選擇器連接帳戶,然後啟動新的工作階段。

232 

231<h3 id="marketplace-add-fails-with-a-policy-error">233<h3 id="marketplace-add-fails-with-a-policy-error">

232 市場添加因策略錯誤而失敗234 市場添加因策略錯誤而失敗

233</h3>235</h3>

Details

261* 若要針對背景工作使用 Haiku,請將 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 設定為您的專案中可用的模型 ID。261* 若要針對背景工作使用 Haiku,請將 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 設定為您的專案中可用的模型 ID。

262 262 

263<Warning>263<Warning>

264 Opus 模型的每權杖價格高於 Sonnet 模型,因此不釘選主要模型的部署在更新至 v2.1.207 或更新版本後會以 Opus 費率計費。若要將 Sonnet 4.5 保持為主要模型,請將 `ANTHROPIC_MODEL` 設定為其完整模型 ID。引導預設值為 `ANTHROPIC_DEFAULT_SONNET_MODEL` 且未設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 的部署會將其引導的 Sonnet 模型保持為預設值。264 Opus 模型的每 token 價格高於 Sonnet 模型,因此如果您不釘選主要模型,將會以 Opus 費率計費。若要使用 Sonnet 4.5 作為主要模型,請將 `ANTHROPIC_MODEL` 設定為其完整模型 ID。以 `ANTHROPIC_DEFAULT_SONNET_MODEL` 引導預設值且未設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 的部署會將其引導的 Sonnet 模型保持為預設值。

265</Warning>265</Warning>

266 266 

267在 v2.1.280 之前,Google Cloud 的 Agent Platform 上的主要模型預設為 Opus 5,`opus` 別名從 v2.1.219 解析為 Opus 5。在 v2.1.207 至 v2.1.218 上,Google Cloud 的 Agent Platform 上的主要模型預設為 Opus 4.8,`opus` 別名解析為 Opus 4.8。在 v2.1.207 之前,主要模型預設為 Sonnet 4.5,`opus` 別名解析為 Opus 4.6,背景工作一律使用主要模型。267在 v2.1.280 之前,Google Cloud 的 Agent Platform 上的主要模型預設為 Opus 5,`opus` 別名從 v2.1.219 解析為 Opus 5。在 v2.1.207 至 v2.1.218 上,Google Cloud 的 Agent Platform 上的主要模型預設為 Opus 4.8,`opus` 別名解析為 Opus 4.8。

268 268 

269若要進一步自訂模型:269若要進一步自訂模型:

270 270 

headless.md +6 −6

Details

38 使用 bare 模式更快啟動38 使用 bare 模式更快啟動

39</h3>39</h3>

40 40 

41加上 `--bare` 以跳過 hook、skill、自訂命令、[subagent](/docs/zh-TW/sub-agents)、已安裝的外掛、MCP 伺服器、自動記憶和 CLAUDE.md 的自動探索來減少啟動時間。沒有它,`claude -p` 會載入互動工作階段會載入的相同 [context](/docs/zh-TW/how-claude-code-works#the-context-window),包括在工作目錄或 `~/.claude` 中設定的任何內容。41加上 `--bare` 以跳過 hook、skill、自訂命令、[subagent](/docs/zh-TW/sub-agents)、已安裝的外掛、MCP 伺服器、自動記憶和 CLAUDE.md 的自動探索來減少啟動時間。沒有它,`claude -p` 會像互動工作階段一樣探索並載入這些項目,包括在工作目錄或 `~/.claude` 中設定的任何內容。

42 42 

43bare 模式對於 CI 和指令碼很有用,您需要在每台機器上獲得相同的結果。隊友 `~/.claude` 中的 hook 或專案 `.mcp.json` 中的 MCP 伺服器不會執行,因為 bare 模式永遠不會讀取它們。您使用 `--add-dir` 命名的目錄是部分例外:bare 模式從其 `.claude/skills/` 資料夾載入 skill,但仍然跳過其 `.claude/commands/` 和 `.claude/agents/` 資料夾。[來自其他目錄的 Skills](/docs/zh-TW/skills#skills-from-additional-directories) 涵蓋了哪些會載入和不會載入。43bare 模式對於 CI 和指令碼很有用,您需要在每台機器上獲得相同的結果。隊友 `~/.claude` 中的 hook 或專案 `.mcp.json` 中的 MCP 伺服器不會執行,因為 bare 模式永遠不會讀取它們。您使用 `--add-dir` 命名的目錄是部分例外:bare 模式從其 `.claude/skills/` 資料夾載入 skill,但仍然跳過其 `.claude/commands/` 和 `.claude/agents/` 資料夾。[來自其他目錄的 Skills](/docs/zh-TW/skills#skills-from-additional-directories) 涵蓋了哪些會載入和不會載入。

44 44 


184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

185```185```

186 186 

187如果該值不是有效的 JSON Schema,`claude` 會以 `Error: --json-schema is not a valid JSON Schema` 結束,並附上驗證器的診斷訊息。Claude Code 接受使用 `format` 關鍵字的 schema,例如 `"format": "email"`,但會將 `format` 視為註解而不強制執行。在 v2.1.205 之前,Claude Code 會靜默忽略無效的 schema 並傳回非結構化文字,且會將任何包含 `format` 的 schema 視為無效。187如果該值不是有效的 JSON Schema,`claude` 會以 `Error: --json-schema is not a valid JSON Schema` 結束,並附上驗證器的診斷訊息。Claude Code 接受使用 `format` 關鍵字的 schema,例如 `"format": "email"`,但會將 `format` 視為註解而不強制執行。

188 188 

189<Tip>189<Tip>

190 使用 [jq](https://jqlang.org/) 等工具剖析回應並擷取特定欄位:190 使用 [jq](https://jqlang.org/) 等工具剖析回應並擷取特定欄位:


281`system/init` 事件會回報工作階段中繼資料,包括模型、工具、MCP 伺服器及已載入的外掛。除非有啟動事件排在它之前,否則它是串流中的第一個事件:281`system/init` 事件會回報工作階段中繼資料,包括模型、工具、MCP 伺服器及已載入的外掛。除非有啟動事件排在它之前,否則它是串流中的第一個事件:

282 282 

283* `plugin_install` 事件,於設定 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時出現。283* `plugin_install` 事件,於設定 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時出現。

284* [`hook_started`、`hook_progress` 及 `hook_response` 事件](/docs/zh-TW/agent-sdk/typescript#sdkhookstartedmessage),於已設定的 [`SessionStart`](/docs/zh-TW/hooks#sessionstart) 或 [`Setup`](/docs/zh-TW/hooks#setup) hook 執行期間出現。這些事件會在 hook 產生時即時串流。Claude Code v2.1.169 至 v2.1.203 會在 hook 完成後一次批次傳送,但仍在 `system/init` 之前;v2.1.204 恢復了即時傳送。284* [`hook_started`、`hook_progress` 及 `hook_response` 事件](/docs/zh-TW/agent-sdk/typescript#sdkhookstartedmessage),於已設定的 [`SessionStart`](/docs/zh-TW/hooks#sessionstart) 或 [`Setup`](/docs/zh-TW/hooks#setup) hook 執行期間出現。這些事件會在 hook 產生時即時串流。

285 285 

286此事件還帶有一個選用的 `capabilities` 字串陣列,列出此 Claude Code 版本所實作的協定行為,例如 `interrupt_receipt_v1` 或 `interrupt_cancel_queued_v1`。請檢查此陣列來偵測功能,而非比對版本字串,並忽略您無法辨識的值。此欄位需要 Claude Code v2.1.205 或更新版本,較早的版本中不會出現。如需功能清單,請參閱 [`SDKSystemMessage`](/docs/zh-TW/agent-sdk/typescript#sdksystemmessage)。286此事件還帶有一個選用的 `capabilities` 字串陣列,列出此 Claude Code 版本所實作的協定行為,例如 `interrupt_receipt_v1` 或 `interrupt_cancel_queued_v1`。請檢查此陣列來偵測功能,而非比對版本字串,並忽略您無法辨識的值。如需功能清單,請參閱 [`SDKSystemMessage`](/docs/zh-TW/agent-sdk/typescript#sdksystemmessage)。

287 287 

288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">

289 在外掛或 MCP 伺服器未載入時讓 CI 失敗289 在外掛或 MCP 伺服器未載入時讓 CI 失敗


388 388 

389 * 使用者呼叫的 [skill](/docs/zh-TW/skills) 及自訂命令可以運作。在提示詞字串中加入 `/skill-name`,Claude Code 會在執行前將其展開。389 * 使用者呼叫的 [skill](/docs/zh-TW/skills) 及自訂命令可以運作。在提示詞字串中加入 `/skill-name`,Claude Code 會在執行前將其展開。

390 * 僅在終端機介面中執行的內建命令(例如 `/login`)無法使用。390 * 僅在終端機介面中執行的內建命令(例如 `/login`)無法使用。

391 * `/model`、`/effort`、`/fast`、`/color` 及 `/rename` 接受以引數形式傳入值,例如 `/model sonnet`;不帶引數的 `/mcp` 會輸出伺服器狀態的文字摘要。這些形式需要 Claude Code v2.1.205 或更新版本,並遵循各命令的[可用性說明](/docs/zh-TW/commands#all-commands)。391 * `/model`、`/effort`、`/fast`、`/color` 及 `/rename` 接受以引數形式傳入值,例如 `/model sonnet`;不帶引數的 `/mcp` 會輸出伺服器狀態的文字摘要。這些形式遵循各命令的[可用性說明](/docs/zh-TW/commands#all-commands)。

392 * 若要變更設定,請將 `key=value` 傳給 `/config`,例如 `/config thinking=false`。392 * 若要變更設定,請將 `key=value` 傳給 `/config`,例如 `/config thinking=false`。

393 * `/output-style <style>` 會切換[輸出風格](/docs/zh-TW/output-styles),單獨使用 `/output-style` 則會列出所有風格。需要 Claude Code v2.1.269 或更新版本。393 * `/output-style <style>` 會切換[輸出風格](/docs/zh-TW/output-styles),單獨使用 `/output-style` 則會列出所有風格。需要 Claude Code v2.1.269 或更新版本。

394</Note>394</Note>


407 407 

408在此腳本中,`"$1"` 代表您在命令列上傳入的第一個引數。執行 `bash review.sh 123`,shell 會將 `"$1"` 替換為 `123`,因此腳本會擷取 PR 123 的差異。Claude Code 會以 JSON 格式輸出審查結果,文字位於 `result` 欄位。408在此腳本中,`"$1"` 代表您在命令列上傳入的第一個引數。執行 `bash review.sh 123`,shell 會將 `"$1"` 替換為 `123`,因此腳本會擷取 PR 123 的差異。Claude Code 會以 JSON 格式輸出審查結果,文字位於 `result` 欄位。

409 409 

410如需更多選項,包括以 `--system-prompt` 完全取代預設提示詞,請參閱[系統提示詞旗標](/docs/zh-TW/cli-reference#system-prompt-flags)。410如需更多選項,包括以 `--system-prompt` 完全取代預設提示詞,請參閱[系統提示詞旗標](/docs/zh-TW/cli-reference#system-prompt-flags)。若您取代預設提示詞,該次執行啟動時也不會包含 [Git 狀態快照](/docs/zh-TW/settings-reference#includegitinstructions)。

411 411 

412<h3 id="continue-conversations">412<h3 id="continue-conversations">

413 繼續對話413 繼續對話

hipaa-setup.md +1 −0

Details

228| `--cloud`、`/teleport` 和 [Remote Control](/docs/zh-TW/remote-control) 遭到拒絕 | [雲端工作階段](/docs/zh-TW/claude-code-on-the-web)和 Remote Control 已關閉 |228| `--cloud`、`/teleport` 和 [Remote Control](/docs/zh-TW/remote-control) 遭到拒絕 | [雲端工作階段](/docs/zh-TW/claude-code-on-the-web)和 Remote Control 已關閉 |

229| `/feedback` 和 `/bug` 無法使用 | 意見回饋提交已關閉 |229| `/feedback` 和 `/bug` 無法使用 | 意見回饋提交已關閉 |

230| Claude 無法發佈 [artifact](/docs/zh-TW/artifacts) | Artifact 發佈已關閉 |230| Claude 無法發佈 [artifact](/docs/zh-TW/artifacts) | Artifact 發佈已關閉 |

231| MCP 工具會預先載入至上下文 | [MCP Tool Search](/docs/zh-TW/mcp#configure-tool-search) 已關閉。`ENABLE_TOOL_SEARCH` 和受管設定都無法將其重新開啟 |

231| 讀取 `ANTHROPIC_API_KEY` 的 MCP 伺服器或 hook 無法再進行身分驗證 | Claude Code 會從其啟動的程序中[移除 Anthropic 憑證](#anthropic-credentials-in-commands-hooks-and-mcp-servers) |232| 讀取 `ANTHROPIC_API_KEY` 的 MCP 伺服器或 hook 無法再進行身分驗證 | Claude Code 會從其啟動的程序中[移除 Anthropic 憑證](#anthropic-credentials-in-commands-hooks-and-mcp-servers) |

232| 以 `/login` 登入其他組織後限制仍然存在 | HIPAA 狀態會持續到 Claude Code 重新啟動為止 |233| 以 `/login` 登入其他組織後限制仍然存在 | HIPAA 狀態會持續到 Claude Code 重新啟動為止 |

233 234 

hooks.md +535 −509

Details

827 827 

828您的 hook 的退出碼會告訴 Claude Code 是否繼續執行觸發該 hook 的操作,例如工具呼叫或提示詞。完成的執行有以下三種結果之一:828您的 hook 的退出碼會告訴 Claude Code 是否繼續執行觸發該 hook 的操作,例如工具呼叫或提示詞。完成的執行有以下三種結果之一:

829 829 

830* **成功**:您的 hook 以 0 退出。Claude Code 套用您的 hook 列印的任何 [JSON 輸出](#json-output) 欄位,除非這些欄位阻止或拒絕該操作,否則操作會繼續進行。830* **成功**:您的 hook 以 0 退出。Claude Code 套用您的 hook 列印的任何 [JSON 輸出](#json-output) 欄位,除非這些欄位阻止或拒絕該操作,否則操作會繼續進行。[啟動背景程序的 hook](#hooks-that-start-a-background-process) 說明了例外情況。

831* **阻止性錯誤**:您的 hook 以 2 退出。在 [可以阻止的事件](#exit-code-2-behavior-per-event) 上,Claude Code 會停止該操作。831* **阻止性錯誤**:您的 hook 以 2 退出。在 [可以阻止的事件](#exit-code-2-behavior-per-event) 上,Claude Code 會停止該操作。

832* **非阻止性錯誤**:您的 hook 以任何其他代碼退出,或以其他方式失敗,例如無法啟動或列印無效的 JSON。操作會繼續進行,且在 `PreToolUse` 等事件上,您會在逐字稿中看到 `<hook name> hook error` 通知。如果您希望失敗的 hook 阻止操作,請設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。832* **非阻止性錯誤**:您的 hook 以任何其他代碼退出,或以其他方式失敗,例如無法啟動或列印無效的 JSON。操作會繼續進行,且在 `PreToolUse` 等事件上,您會在逐字稿中看到 `<hook name> hook error` 通知。如果您希望失敗的 hook 阻止操作,請設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

833 833 


932* 逾時的 `command`、`http` 或 `mcp_tool` hook 不阻止工具呼叫。呼叫透過正常 [權限流程](/docs/zh-TW/permissions) 繼續,因此不要指望停滯的 hook 充當閘門。要在 `command` 或 `http` hook 逾時時阻止呼叫,請設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。932* 逾時的 `command`、`http` 或 `mcp_tool` hook 不阻止工具呼叫。呼叫透過正常 [權限流程](/docs/zh-TW/permissions) 繼續,因此不要指望停滯的 hook 充當閘門。要在 `command` 或 `http` hook 逾時時阻止呼叫,請設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

933* 超過其逾時的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) [阻止工具呼叫](#pretooluse)。933* 超過其逾時的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) [阻止工具呼叫](#pretooluse)。

934 934 

935<h4 id="hooks-that-start-a-background-process">

936 啟動背景程序的 hook

937</h4>

938 

939如果您的命令 hook 在背景程序中做出決定後就退出,該程序在 Claude Code 停止讀取之後才列印的拒絕不會阻止工具呼叫。對於非 [async](#run-hooks-in-the-background) 的 hook,Claude Code 會在 hook 本身的程序退出後不久完成讀取 hook 的輸出。

940 

941請在啟動背景程序之前列印決定,並重新導向該程序的 stdout 和 stderr。如果您的指令碼列印允許決定,然後啟動背景程序而未重新導向該程序的 stdout 和 stderr,Claude Code 會阻止工具呼叫。hook 錯誤包含 `refusing to honor the suspect capture`。

942 

943此 `PreToolUse` hook 指令碼使用 `policy-check.sh` 列印決定,然後在背景上傳指標:

944 

945```bash theme={null}

946#!/bin/bash

947"$CLAUDE_PROJECT_DIR"/.claude/hooks/policy-check.sh || exit $?

948"$CLAUDE_PROJECT_DIR"/.claude/hooks/upload-metrics.sh >/dev/null 2>&1 &

949```

950 

951指令碼的其餘部分執行以下操作:

952 

953* **`|| exit $?`**:讓檢查的退出碼成為 hook 本身的退出碼,因此以 2 退出以拒絕的檢查仍會阻止。否則 hook 會以最後一行的代碼退出,也就是 0。

954* **`>/dev/null 2>&1 &`**:在背景執行 `upload-metrics.sh` 並重新導向其輸出,使其不會讓 hook 的輸出保持開啟。

955 

956要測試此指令碼,請讓 `policy-check.sh` 以 2 退出,然後觸發該 hook 所匹配的工具呼叫。工具呼叫會被阻止。

957 

935<h4 id="block-the-action-when-a-hook-fails">958<h4 id="block-the-action-when-a-hook-fails">

936 在 hook 失敗時阻止操作959 在 hook 失敗時阻止操作

937</h4>960</h4>


1245 Hook 事件1268 Hook 事件

1246</h2>1269</h2>

1247 1270 

1248每個事件都對應到 Claude Code 生命週期中可以執行 hook 的一個時間點。以下各節依照生命週期的順序排列:從工作階段設定、經過代理式迴圈,到工作階段結束。每一節都說明事件何時觸發、支援哪些 matcher、接收的 JSON 輸入,以及如何透過輸出來控制行為。1271每個事件都對應 Claude Code 生命週期中可執行 hook 的一個時間點。以下各節依照生命週期的順序排列:從工作階段設定、經過代理式迴圈,到工作階段結束。每一節說明事件何時觸發、支援哪些 matcher、接收的 JSON 輸入,以及如何透過輸出控制行為。

1249 1272 

1250<h3 id="sessionstart">1273<h3 id="sessionstart">

1251 SessionStart1274 SessionStart

1252</h3>1275</h3>

1253 1276 

1254在 Claude Code 啟動新工作階段或恢復既有工作階段時執行。適合用來載入開發上下文,例如既有的 issue 或程式碼庫的近期變更,或是設定環境變數。若是不需要指令碼的靜態上下文,請改用 [CLAUDE.md](/docs/zh-TW/memory)。1277在 Claude Code 開始新工作階段或恢復現有工作階段時執行。適合用來載入開發情境,例如現有的 issue 或程式碼庫的近期變更,或是設定環境變數。若是不需要指令碼的靜態情境,請改用 [CLAUDE.md](/docs/zh-TW/memory)。

1255 1278 

1256SessionStart 會在每個工作階段執行,因此請讓這些 hook 保持快速。僅支援 `type: "command"` 和 `type: "mcp_tool"` hook。關於 `mcp_tool` hook 何時執行,請參閱 [MCP 工具 hook 欄位](#mcp-tool-hook-fields)。1279SessionStart 會在每個工作階段執行,因此請讓這些 hook 保持快速。僅支援 `type: "command"` 和 `type: "mcp_tool"` hook。關於 `mcp_tool` hook 何時執行,請參閱 [MCP tool hook 欄位](#mcp-tool-hook-fields)。

1257 1280 

1258matcher 值對應工作階段的啟動方式:1281matcher 值對應工作階段的啟動方式:

1259 1282 


1263| `resume` | `--resume`、`--continue` 或 `/resume` |1286| `resume` | `--resume`、`--continue` 或 `/resume` |

1264| `clear` | `/clear` |1287| `clear` | `/clear` |

1265| `compact` | 自動或手動壓縮 |1288| `compact` | 自動或手動壓縮 |

1266| `fork` | 從既有工作階段分岔出的新工作階段:搭配 `--resume` 或 `--continue` 的 `--fork-session`、`/fork` 背景副本、`/branch`,或是您[移至背景](/docs/zh-TW/agent-view#from-inside-a-session)的對話 |1289| `fork` | 從現有工作階段分岔出的新工作階段:搭配 `--resume` 或 `--continue` 的 `--fork-session`、`/fork` 背景副本、`/branch`,或您[移至背景](/docs/zh-TW/agent-view#from-inside-a-session)的對話 |

1267 1290 

1268在 v2.1.214 之前,分岔的工作階段回報的 source 為 `"resume"`。1291在 v2.1.214 之前,分岔出的工作階段回報的 source 為 `"resume"`。

1269 1292 

1270當您啟動互動式工作階段、在啟動時使用 `--continue` 或 `--resume` 恢復對話,或執行 `/clear` 時,SessionStart hook 會在背景執行。您可以立即輸入,而您恢復的對話也會直接出現,無須等待 hook。Claude 的第一個回應仍會等待 hook 完成,讓其上下文能傳達給 Claude。1293當您啟動互動式工作階段、在啟動時以 `--continue` 或 `--resume` 恢復對話,或執行 `/clear` 時,SessionStart hook 會在背景執行。您可以立即開始輸入,恢復的對話也會直接顯示,無需等待 hook。Claude 的第一個回應仍會等待 hook 完成,以便其情境能傳達給 Claude。

1271 1294 

1272當您在工作階段內使用 `/resume` 切換對話時,切換動作則會等待 hook 完成。如果您在背景 hook 仍在執行時執行 `/clear` 或切換到另一個對話,它們傳回的任何內容都不會套用到該工作階段。1295當您在工作階段內以 `/resume` 切換對話時,切換會改為等待 hook 完成。若您在背景 hook 仍在執行時執行 `/clear` 或切換到另一個對話,它們回傳的任何內容都不會套用到工作階段。

1273 1296 

1274啟動時(包括恢復的工作階段)也適用同樣的等待:在 SessionStart hook 仍在執行時送出的提示詞,會等到它們完成後才傳達給 Claude。1297啟動時也有相同的等待,包括恢復的工作階段:在 SessionStart hook 仍在執行時送出的提示詞,要等到 hook 完成後才會傳達給 Claude。

1275 1298 

1276在上述任一等待期間,按下 `Esc` 可將提示詞取回輸入框而不送出。hook 會繼續執行。1299在任一種等待期間,按下 `Esc` 可將提示詞取回輸入框而不送出。hook 會繼續執行。

1277 1300 

1278<h4 id="sessionstart-input">1301<h4 id="sessionstart-input">

1279 SessionStart 輸入1302 SessionStart 輸入


1283 1306 

1284| 欄位 | 說明 |1307| 欄位 | 說明 |

1285| :- | :- |1308| :- | :- |

1286| `source` | 工作階段的啟動方式:新工作階段為 `"startup"`、恢復的工作階段為 `"resume"`、`/clear` 之後為 `"clear"`、壓縮之後為 `"compact"`,或從既有工作階段分岔出的新工作階段為 `"fork"` |1309| `source` | 工作階段的啟動方式:新工作階段為 `"startup"`、恢復的工作階段為 `"resume"`、`/clear` 之後為 `"clear"`、壓縮之後為 `"compact"`,從現有工作階段分岔出的新工作階段則為 `"fork"` |

1287| `model` | 目前使用中的模型識別碼。此欄位可能被省略,例如在 `/clear` 之後,或工作階段透過對話復原而還原時,因此讀取前請先檢查欄位是否存在 |1310| `model` | 目前使用的模型識別碼。此欄位可能被省略,例如在 `/clear` 之後,或工作階段透過對話復原還原時,因此讀取前請先檢查欄位是否存在 |

1288| `agent_type` | agent 名稱,在您以 `claude --agent <name>` 啟動 Claude Code 時出現 |1311| `agent_type` | agent 名稱,當您以 `claude --agent <name>` 啟動 Claude Code 時才會出現 |

1289| `session_title` | 工作階段的自訂標題,在已設定時出現,例如透過 `--name`、`/rename`、hook 的 `sessionTitle` 輸出,或 Agent SDK 的 `renameSession()` 設定。會輸出 `sessionTitle` 的 hook 可以先檢查此欄位,以避免覆寫既有的自訂標題 |1312| `session_title` | 工作階段的自訂標題,在已設定時出現,例如透過 `--name`、`/rename`、hook 的 `sessionTitle` 輸出,或 Agent SDK 的 `renameSession()`。輸出 `sessionTitle` 的 hook 可以先檢查此欄位,以避免覆寫既有的自訂標題 |

1290 1313 

1291您尚未命名的工作階段仍可能有[自動產生的標題](/docs/zh-TW/sessions#name-your-sessions)。該標題不是自訂標題,也不會出現在 `session_title` 中。1314您尚未命名的工作階段仍可能有[自動產生的標題](/docs/zh-TW/sessions#name-your-sessions)。該標題不是自訂標題,也不會出現在 `session_title` 中。

1292 1315 

1293當 `source` 為 `"resume"` 或 `"fork"`,且逐字稿中至少包含一則 Claude 的回應時,SessionStart hook 也會接收下列四個欄位。您的 hook 可以使用它們,在第一個請求之前回報恢復一個過時對話的成本,例如透過 [`systemMessage`](#json-output)。這些欄位需要 Claude Code v2.1.251 或更新版本。1316當 `source` 為 `"resume"` 或 `"fork"`,且逐字稿中至少包含一則 Claude 的回應時,SessionStart hook 還會接收下列四個欄位。您的 hook 可以用它們在第一個請求之前回報恢復一段閒置已久的對話所需的成本,例如透過 [`systemMessage`](#json-output)。這些欄位需要 Claude Code v2.1.251 或更新版本。

1294 1317 

1295| 欄位 | 說明 |1318| 欄位 | 說明 |

1296| :- | :- |1319| :- | :- |

1297| `seconds_since_last_response` | 自恢復之逐字稿中最後一則回應以來經過的實際秒數 |1320| `seconds_since_last_response` | 自恢復的逐字稿中最後一則回應以來經過的實際秒數 |

1298| `context_tokens` | 恢復之工作階段的第一個請求重新傳送作為提示詞的 token 數 |1321| `context_tokens` | 恢復的工作階段的第一個請求作為提示詞重新傳送的 token 數 |

1299| `prompt_cache_likely_expired` | 當最後一則回應早於工作階段的[提示快取存留時間](/docs/zh-TW/prompt-caching#cache-lifetime),或之後的壓縮取代了已快取的對話時為 `true` |1322| `prompt_cache_likely_expired` | 當最後一則回應早於工作階段的[提示快取存留期](/docs/zh-TW/prompt-caching#cache-lifetime),或之後的壓縮取代了已快取的對話時為 `true` |

1300| `estimated_cache_write_usd` | 在工作階段的模型上將 `context_tokens` 寫入提示快取的預估成本(美元),不含回應 |1323| `estimated_cache_write_usd` | 以工作階段的模型將 `context_tokens` 寫入提示快取的估計成本(美元),不含回應 |

1301 1324 

1302此範例顯示在最後一則回應 90 分鐘後恢復的工作階段的輸入:1325此範例顯示一個在最後一則回應 90 分鐘後恢復的工作階段的輸入:

1303 1326 

1304```json theme={null}1327```json theme={null}

1305{1328{


1320 SessionStart 決策控制1343 SessionStart 決策控制

1321</h4>1344</h4>

1322 1345 

1323SessionStart hook 可以為 Claude 新增上下文、提供第一則使用者訊息、設定工作階段標題、監看檔案,以及重新載入 skill。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)之外,請針對每項功能傳回對應的欄位:1346SessionStart hook 可以為 Claude 新增情境、提供第一則使用者訊息、設定工作階段標題、監看檔案,以及重新載入 skill。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,請為每一項回傳對應的欄位:

1324 1347 

1325| 欄位 | 說明 |1348| 欄位 | 說明 |

1326| :- | :- |1349| :- | :- |

1327| `additionalContext` | 在對話開始時、第一個提示詞之前加入 Claude 上下文的字串。關於文字如何傳遞以及應放入什麼內容,請參閱[為 Claude 加入上下文](#add-context-for-claude) |1350| `additionalContext` | 在對話開始時、第一個提示詞之前加入 Claude 情境的字串。關於文字如何傳遞以及應放入什麼內容,請參閱[為 Claude 新增情境](#add-context-for-claude) |

1328| `initialUserMessage` | 在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中,作為工作階段第一則使用者訊息的字串。即使您未傳入提示詞,它也會成為第一個回合。您傳入的提示詞則會作為下一個回合 |1351| `initialUserMessage` | 在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中,作為工作階段第一則使用者訊息的字串。即使您未傳入提示詞,它也會成為第一個回合。您傳入的提示詞會作為下一個回合 |

1329| `sessionTitle` | 設定工作階段標題,效果與 `/rename` 相同。當 `source` 為 `"startup"`、`"resume"` 或 `"fork"` 時適用 |1352| `sessionTitle` | 設定工作階段標題,效果與 `/rename` 相同。在 `source` 為 `"startup"`、`"resume"` 或 `"fork"` 時套用 |

1330| `watchPaths` | 在此工作階段期間要監看 [FileChanged](#filechanged) 事件的絕對路徑陣列 |1353| `watchPaths` | 在此工作階段期間要監看 [FileChanged](#filechanged) 事件的絕對路徑陣列 |

1331| `reloadSkills` | 布林值。為 `true` 時,Claude Code 會在 SessionStart hook 完成後重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄。請參閱[重新載入 hook 安裝的 skill](#reload-skills-that-a-hook-installs) |1354| `reloadSkills` | 布林值。為 `true` 時,Claude Code 會在 SessionStart hook 完成後重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄。請參閱[重新載入 hook 安裝的 skill](#reload-skills-that-a-hook-installs) |

1332 1355 

1333此輸出會新增上下文並為工作階段命名:1356此輸出會新增情境並為工作階段命名:

1334 1357 

1335```json theme={null}1358```json theme={null}

1336{1359{


1342}1365}

1343```1366```

1344 1367 

1345只新增上下文的 hook 可以直接輸出內容而不必建構 JSON,因為 Claude Code 會將 SessionStart hook 的[純文字 stdout](#exit-code-0) 加入 Claude 的上下文。1368只新增情境的 hook 可以直接印出內容而不必建構 JSON,因為 Claude Code 會將 SessionStart hook 的[純文字 stdout](#exit-code-0) 加入 Claude 的情境。

1346 1369 

1347如果您外掛的 SessionStart hook 提供 `initialUserMessage` 或 `sessionTitle`,請在工作階段開始前安裝該外掛。對於在 SessionStart hook 執行後才完成安裝的外掛,Claude Code 會忽略這兩個欄位。1370若您外掛的 SessionStart hook 提供 `initialUserMessage` 或 `sessionTitle`,請在工作階段開始前安裝該外掛。對於在 SessionStart hook 執行完畢後才完成安裝的外掛,Claude Code 會忽略這兩個欄位。

1348 1371 

1349<h4 id="reload-skills-that-a-hook-installs">1372<h4 id="reload-skills-that-a-hook-installs">

1350 重新載入 hook 安裝的 skill1373 重新載入 hook 安裝的 skill

1351</h4>1374</h4>

1352 1375 

1353若要讓 SessionStart hook 安裝的 skill 在同一個工作階段中可用,請傳回 `reloadSkills`。skill 探索通常會在 SessionStart hook 完成之前執行,因此若沒有此欄位,hook 寫入 `~/.claude/skills/` 或 `.claude/skills/` 的檔案可能在第一個提示詞執行時尚不存在。1376若要讓 SessionStart hook 安裝的 skill 在同一個工作階段中可用,請回傳 `reloadSkills`。skill 探索通常在 SessionStart hook 完成之前就會執行,因此若沒有此欄位,hook 寫入 `~/.claude/skills/` 或 `.claude/skills/` 的檔案可能在第一個提示詞執行時尚未被載入。

1354 1377 

1355此範例會同步共用的 skill 儲存庫並請求重新掃描:1378此範例會同步共用的 skill 儲存庫並要求重新掃描:

1356 1379 

1357```bash theme={null}1380```bash theme={null}

1358#!/bin/bash1381#!/bin/bash


1363echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1386echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1364```1387```

1365 1388 

1366儲存庫 URL 僅為預留位置。請替換為您自己的 skill 儲存庫。1389儲存庫 URL 僅為預留位置。請將其替換為您自己的 skill 儲存庫。

1367 1390 

1368<h4 id="persist-environment-variables">1391<h4 id="persist-environment-variables">

1369 保存環境變數1392 保存環境變數

1370</h4>1393</h4>

1371 1394 

1372SessionStart hook 可以存取 `CLAUDE_ENV_FILE` 環境變數,它提供一個檔案路徑,讓您為 Claude 在工作階段稍後執行的 shell 命令保存環境變數。1395SessionStart hook 可以存取 `CLAUDE_ENV_FILE` 環境變數,它提供一個檔案路徑,讓您可以為 Claude 在工作階段稍後執行的 shell 命令保存環境變數。

1373 1396 

1374若要設定個別環境變數,請將 `export` 陳述式寫入 `CLAUDE_ENV_FILE`。請使用附加(`>>`)以保留其他 hook 設定的變數:1397若要設定個別的環境變數,請將 `export` 陳述式寫入 `CLAUDE_ENV_FILE`。請使用附加(`>>`)以保留其他 hook 設定的變數:

1375 1398 

1376```bash theme={null}1399```bash theme={null}

1377#!/bin/bash1400#!/bin/bash


1385exit 01408exit 0

1386```1409```

1387 1410 

1388若要擷取設定命令造成的所有環境變更,請比較前後匯出的變數:1411若要擷取設定命令所造成的所有環境變更,請比較前後匯出的變數:

1389 1412 

1390```bash theme={null}1413```bash theme={null}

1391#!/bin/bash1414#!/bin/bash


1404exit 01427exit 0

1405```1428```

1406 1429 

1407每個 Bash 命令都會在命令本身之前,將該檔案的內容作為 shell 程式碼執行,因此其中的一行可以使用 Bash 會求值的任何內容,例如 `export PATH="$PATH:./node_modules/.bin"` 中的 `$PATH` 參照。1430每個 Bash 命令都會在命令本身之前將該檔案的內容作為 shell 程式碼執行,因此其中的一行可以使用 Bash 能求值的任何內容,例如 `export PATH="$PATH:./node_modules/.bin"` 中的 `$PATH` 參照。

1408 1431 

1409<a id="persisted-variables-in-powershell-commands" />1432<a id="persisted-variables-in-powershell-commands" />

1410 1433 

1411<h5 id="persisted-variables-in-powershell-commands">1434<h5 id="persisted-variables-in-powershell-commands">

1412 PowerShell 命令中的保存變數1435 PowerShell 命令中保存的變數

1413</h5>1436</h5>

1414 1437 

1415在 Claude Code v2.1.296 或更新版本中,[PowerShell](/docs/zh-TW/tools-reference#powershell-tool) 命令也會接收來自 `CLAUDE_ENV_FILE` 的變數,但 PowerShell 從不執行該檔案。Claude Code 會改為從中讀出指派內容,並將它們複製到 PowerShell 命令的環境中。只有在每一行都屬於以下其中一種時才會這麼做,範圍涵蓋此工作階段中每個 hook 寫入的內容,以及您在啟動前[將 `CLAUDE_ENV_FILE` 設為](/docs/zh-TW/env-vars)的任何腳本:1438在 Claude Code v2.1.296 或更新版本中,[PowerShell](/docs/zh-TW/tools-reference#powershell-tool) 命令也會接收 `CLAUDE_ENV_FILE` 中的變數,但 PowerShell 從不執行該檔案。Claude Code 會從中讀出賦值,並改為複製到 PowerShell 命令的環境中。只有當本工作階段中每個 hook 所寫入的內容,以及您在啟動前[將 `CLAUDE_ENV_FILE` 設為](/docs/zh-TW/env-vars)的任何指令碼中,每一行都屬於下列其中一種時,才會這麼做:

1416 1439 

1417* 空白行或 `#` 註解1440* 空白行或 `#` 註解

1418* 位於行首的單一指派,寫成 `export NAME=value`、`declare -x NAME=value` 或 `NAME=value`,且其值會被 Bash 完全依原樣使用,由以下部分任意組合而成:只使用字母、數字與 `_ @ % + = : , . / -` 字元的未加引號文字、單引號內的文字,以及其中任何 `$`、反引號或 `"` 皆以反斜線跳脫的雙引號內文字1441* 位於行首的單一賦值,寫法為 `export NAME=value`、`declare -x NAME=value` 或 `NAME=value`,且其值是 Bash 會按原樣使用的值,可由下列部分任意組合而成:僅使用字母、數字及字元 `_ @ % + = : , . / -` 的未加引號文字、單引號內的文字,以及其中任何 `$`、反引號或 `"` 都已用反斜線跳脫的雙引號內文字

1419 1442 

1420如果有任何一行屬於其他類型,例如帶有未跳脫 `$PATH` 的 `export PATH="$PATH:./node_modules/.bin"`、`source` 命令,或 `direnv export bash` 印出的 `$'...'` 字串,PowerShell 命令將不會接收任何變數,且 `claude --debug` 會記錄 `Session environment is not all plain assignments`。Bash 命令仍會接收全部變數。在 Windows 上,PowerShell 命令也不會接收值中包含 `/` 或 `\` 的變數,因為 Git Bash 與 Windows 撰寫路徑的方式不同。[沙箱化](/docs/zh-TW/sandboxing)的 PowerShell 命令不會接收任何變數。1443若有任何一行屬於其他類型,例如帶有未跳脫 `$PATH` 的 `export PATH="$PATH:./node_modules/.bin"`、`source` 命令,或 `direnv export bash` 輸出的 `$'...'` 字串,PowerShell 命令將不會接收任何變數,且 `claude --debug` 會記錄 `Session environment is not all plain assignments`。Bash 命令仍會接收所有變數。在 Windows 上,PowerShell 命令也不會接收值中包含 `/` 或 `\` 的變數,因為 Git Bash 和 Windows 的路徑寫法不同。[沙箱化](/docs/zh-TW/sandboxing)的 PowerShell 命令不會接收任何變數。

1421 1444 

1422<Note>1445<Note>

1423 `CLAUDE_ENV_FILE` 可用於 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 與 [FileChanged](#filechanged) hook。其他 hook 事件無法存取此變數,在 PowerShell 中執行的 hook 也無法存取,無論是透過 [`"shell": "powershell"`](#command-hook-fields),或是在沒有 Git Bash 的 Windows 上預設如此。1446 `CLAUDE_ENV_FILE` 可供 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hook 使用。其他 hook 事件無法存取此變數,在 PowerShell 中執行的 hook 也無法存取,無論是透過 [`"shell": "powershell"`](#command-hook-fields),還是在沒有 Git Bash 的 Windows 上預設執行。

1424</Note>1447</Note>

1425 1448 

1426<h3 id="setup">1449<h3 id="setup">

1427 Setup1450 Setup

1428</h3>1451</h3>

1429 1452 

1430僅在您以 `--init-only` 啟動 Claude Code,或在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中搭配 `--init` 或 `--maintenance` 啟動時觸發。一般啟動時不會觸發。可用於您從 CI 或指令碼明確觸發的一次性相依套件安裝或排程清理,與一般工作階段啟動分開。若是每個工作階段的初始化,請改用 [SessionStart](#sessionstart)。1453僅在您以 `--init-only` 啟動 Claude Code,或在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中搭配 `--init` 或 `--maintenance` 啟動時觸發。一般啟動時不會觸發。適合用於您從 CI 或指令碼明確觸發的一次性相依套件安裝或排程清理,與一般的工作階段啟動分開。若要進行每個工作階段的初始化,請改用 [SessionStart](#sessionstart)。

1431 1454 

1432matcher 值對應觸發 hook 的 CLI 旗標:1455matcher 值對應觸發 hook 的 CLI 旗標:

1433 1456 


1436| `init` | `claude --init-only` 或 `claude -p --init` |1459| `init` | `claude --init-only` 或 `claude -p --init` |

1437| `maintenance` | `claude -p --maintenance` |1460| `maintenance` | `claude -p --maintenance` |

1438 1461 

1439當您執行 `claude --init-only` 時,Claude Code 會執行 Setup hook 以及具有 `startup` matcher 的 `SessionStart` hook,然後在不啟動對話的情況下結束。1462當您執行 `claude --init-only` 時,Claude Code 會執行 Setup hook 以及帶有 `startup` matcher 的 `SessionStart` hook,然後在不開始對話的情況下結束。

1440 1463 

1441當您使用 `-p` 啟動或繼續對話時,也需要提供提示詞,可以作為引數或透過 stdin 管道傳入。當 `SessionStart` hook 提供了 [`initialUserMessage`](#sessionstart-decision-control),或您恢復的是具有[延後之工具呼叫](#defer-a-tool-call-for-later)的工作階段時,可以省略提示詞。1464當您以 `-p` 開始或繼續對話時,也需要提供提示詞,可作為引數或透過 stdin 管道傳入。當 `SessionStart` hook 提供 [`initialUserMessage`](#sessionstart-decision-control),或您恢復含有[延遲工具呼叫](#defer-a-tool-call-for-later)的工作階段時,可以省略提示詞。

1442 1465 

1443成功時,`--init-only` 不會在終端機輸出任何內容。若要確認 hook 已執行,請以 `claude --debug-file <path> --init-only` 啟動,將 `<path>` 替換為日誌檔案位置,並在日誌中檢查 Setup 和 SessionStart hook 的項目。1466成功時,`--init-only` 不會在終端機印出任何內容。若要確認 hook 已執行,請以 `claude --debug-file <path> --init-only` 啟動,將 `<path>` 替換為日誌檔案位置,然後檢查日誌中的 Setup 和 SessionStart hook 項目。

1444 1467 

1445由於 Setup 不會在每次啟動時觸發,需要安裝相依套件的外掛不能只依賴 Setup。實務上的做法是在首次使用時檢查相依套件,缺少時再安裝,例如以 hook 或 skill 檢測 `${CLAUDE_PLUGIN_DATA}/node_modules`,若不存在則執行 `npm install`。關於已安裝之相依套件的存放位置,請參閱[持久資料目錄](/docs/zh-TW/plugins/components#path-variables-and-persistent-data)。如果您透過市集發布外掛,可能不需要這種做法:Claude Code 在快取外掛時會[自動安裝符合條件的 Node.js 套件相依性](/docs/zh-TW/plugins/loading#node-js-package-dependencies)。1468由於 Setup 不會在每次啟動時觸發,需要安裝相依套件的外掛不能只依賴 Setup。實務上的做法是在首次使用時檢查相依套件,缺少時再安裝,例如使用一個 hook 或 skill 檢查 `${CLAUDE_PLUGIN_DATA}/node_modules`,若不存在則執行 `npm install`。關於已安裝相依套件的存放位置,請參閱[持久資料目錄](/docs/zh-TW/plugins/components#path-variables-and-persistent-data)。若您透過市集發布外掛,可能不需要此做法:Claude Code 在快取外掛時會[自動安裝符合條件的 Node.js 套件相依套件](/docs/zh-TW/plugins/loading#node-js-package-dependencies)。

1446 1469 

1447<h4 id="setup-input">1470<h4 id="setup-input">

1448 Setup 輸入1471 Setup 輸入


1464 Setup 決策控制1487 Setup 決策控制

1465</h4>1488</h4>

1466 1489 

1467Setup hook 無法阻擋;無論退出碼為何,執行都會繼續。在任何退出碼下,Claude Code 都會捨棄 Setup hook 的 [JSON 輸出欄位](#json-output),例如 `systemMessage`、`continue` 和 `hookSpecificOutput.additionalContext`。使用 `-p` 時,只有在您以 `--output-format stream-json --verbose` 啟動的情況下,Setup hook 的 stdout、stderr 和退出碼才會以 [`hook_response` 事件](/docs/zh-TW/headless#read-session-metadata)的形式出現在執行的輸出中。1490Setup hook 無法阻擋;無論退出碼為何,執行都會繼續。無論退出碼為何,Claude Code 都會捨棄 Setup hook 的 [JSON 輸出欄位](#json-output),例如 `systemMessage`、`continue` 和 `hookSpecificOutput.additionalContext`。使用 `-p` 時,只有在您以 `--output-format stream-json --verbose` 啟動的情況下,Setup hook 的 stdout、stderr 和退出碼才會以 [`hook_response` 事件](/docs/zh-TW/headless#read-session-metadata)的形式出現在執行輸出中。

1468 1491 

1469Setup hook 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會保存到工作階段中後續的 Bash 命令,與 [SessionStart hook](#persist-environment-variables) 相同。`Setup` 上只會執行 `type: "command"` hook。`Setup` 上的 `type: "mcp_tool"` hook 一律會被略過,如 [MCP 工具 hook 欄位](#mcp-tool-hook-fields)所述。1492Setup hook 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會保存到工作階段後續的 Bash 命令中,與 [SessionStart hook](#persist-environment-variables) 相同。`Setup` 上只會執行 `type: "command"` hook。`Setup` 上的 `type: "mcp_tool"` hook 一律會被略過,如 [MCP tool hook 欄位](#mcp-tool-hook-fields)中所述。

1470 1493 

1471<h3 id="instructionsloaded">1494<h3 id="instructionsloaded">

1472 InstructionsLoaded1495 InstructionsLoaded

1473</h3>1496</h3>

1474 1497 

1475在 `CLAUDE.md` 或 `.claude/rules/*.md` 檔案載入上下文時觸發。此事件會在工作階段開始時針對預先載入的檔案觸發,之後在檔案延遲載入時再次觸發,例如當 Claude 存取包含巢狀 `CLAUDE.md` 的子目錄時,或具有 `paths:` frontmatter 的條件式規則相符時。此 hook 不支援阻擋或決策控制。它以非同步方式執行,用於可觀測性用途。1498當 `CLAUDE.md` 或 `.claude/rules/*.md` 檔案被載入情境時觸發。此事件會在工作階段開始時針對預先載入的檔案觸發,並在稍後檔案延遲載入時再次觸發,例如當 Claude 存取包含巢狀 `CLAUDE.md` 的子目錄,或帶有 `paths:` frontmatter 的條件式規則相符時。此 hook 不支援阻擋或決策控制。它以非同步方式執行,用於可觀察性目的。

1476 1499 

1477當 Claude 透過 **Project instructions** 設定[直接讀取 `AGENTS.md`](/docs/zh-TW/memory#agents-md) 時,此事件不會觸發。當 `CLAUDE.md` 匯入您的 `AGENTS.md` 時會觸發,`load_reason` 與其他任何匯入的檔案一樣設為 `include`;當 `CLAUDE.md` 是指向它的符號連結時也會觸發,視為一般的 `CLAUDE.md` 載入。1500當 Claude 透過 **Project instructions** 設定[直接讀取 `AGENTS.md`](/docs/zh-TW/memory#agents-md) 時,此事件不會觸發。當 `CLAUDE.md` 匯入您的 `AGENTS.md` 時會觸發,此時 `load_reason` 與其他任何匯入的檔案一樣設為 `include`;當 `CLAUDE.md` 是指向它的符號連結時也會觸發,視為一般的 `CLAUDE.md` 載入。

1478 1501 

1479matcher 會比對 `load_reason`。例如,使用 `"matcher": "session_start"` 可僅針對工作階段開始時載入的檔案觸發,或使用 `"matcher": "path_glob_match|nested_traversal"` 僅針對延遲載入觸發。1502matcher 會比對 `load_reason`。例如,使用 `"matcher": "session_start"` 僅針對工作階段開始時載入的檔案觸發,或使用 `"matcher": "path_glob_match|nested_traversal"` 僅針對延遲載入觸發。

1480 1503 

1481<h4 id="instructionsloaded-input">1504<h4 id="instructionsloaded-input">

1482 InstructionsLoaded 輸入1505 InstructionsLoaded 輸入


1486 1509 

1487| 欄位 | 說明 |1510| 欄位 | 說明 |

1488| :- | :- |1511| :- | :- |

1489| `file_path` | 已載入之指令檔案的絕對路徑 |1512| `file_path` | 已載入的指令檔案的絕對路徑 |

1490| `memory_type` | 檔案的範圍:`"User"`、`"Project"`、`"Local"` 或 `"Managed"` |1513| `memory_type` | 檔案的範圍:`"User"`、`"Project"`、`"Local"` 或 `"Managed"` |

1491| `load_reason` | 檔案載入的原因:`"session_start"`、`"nested_traversal"`、`"path_glob_match"`、`"include"` 或 `"compact"`。`"compact"` 值會在壓縮事件後重新載入指令檔案時觸發 |1514| `load_reason` | 載入檔案的原因:`"session_start"`、`"nested_traversal"`、`"path_glob_match"`、`"include"` 或 `"compact"`。`"compact"` 值會在壓縮事件後重新載入指令檔案時觸發 |

1492| `globs` | 來自檔案 `paths:` frontmatter 的路徑 glob 模式(若有)。僅在 `path_glob_match` 載入時出現 |1515| `globs` | 檔案 `paths:` frontmatter 中的路徑 glob 模式(若有)。僅在 `path_glob_match` 載入時出現 |

1493| `trigger_file_path` | 延遲載入時,其存取觸發此次載入的檔案路徑 |1516| `trigger_file_path` | 對於延遲載入,觸發此次載入的被存取檔案的路徑 |

1494| `parent_file_path` | `include` 載入時,包含此檔案的上層指令檔案路徑 |1517| `parent_file_path` | 對於 `include` 載入,包含此檔案的上層指令檔案的路徑 |

1495 1518 

1496```json theme={null}1519```json theme={null}

1497{1520{


1509 InstructionsLoaded 決策控制1532 InstructionsLoaded 決策控制

1510</h4>1533</h4>

1511 1534 

1512InstructionsLoaded hook 沒有決策控制。它們無法阻擋或修改指令載入。Claude Code 會捨棄它們的 [JSON 輸出欄位](#json-output),例如 `systemMessage` 和 `continue`。請將此事件用於稽核日誌、合規追蹤或可觀測性。1535InstructionsLoaded hook 沒有決策控制。它們無法阻擋或修改指令載入。Claude Code 會捨棄它們的 [JSON 輸出欄位](#json-output),例如 `systemMessage` 和 `continue`。請將此事件用於稽核日誌、合規追蹤或可觀察性。

1513 1536 

1514<h3 id="userpromptsubmit">1537<h3 id="userpromptsubmit">

1515 UserPromptSubmit1538 UserPromptSubmit

1516</h3>1539</h3>

1517 1540 

1518在提交提示詞時、Claude 處理之前執行。這讓您可以1541在提示詞送出時、Claude 處理之前執行。這可讓您

1519根據提示詞/對話加入額外的上下文、驗證提示詞,或1542根據提示詞或對話新增額外情境、驗證提示詞,或

1520阻擋特定類型的提示詞。1543阻擋特定類型的提示詞。

1521 1544 

1522`UserPromptSubmit` hook 不只會在您輸入的提示詞上觸發。Claude Code 也會在下列情況執行它們:1545`UserPromptSubmit` hook 不僅會針對您輸入的提示詞觸發。Claude Code 也會在下列情況執行它們:

1523 1546 

1524* [排程任務](/docs/zh-TW/scheduled-tasks)觸發時,包括 `/loop` 的每次迭代1547* [排程任務](/docs/zh-TW/scheduled-tasks)觸發時,包括 `/loop` 的每次迭代

1525* [背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 向啟動它的工作階段回報時1548* [背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 向啟動它的工作階段回報時

1526* [另一個工作階段傳送訊息](/docs/zh-TW/cross-session-messaging)到您的主要對話時1549* [另一個工作階段傳送訊息](/docs/zh-TW/cross-session-messaging)到您的主要對話時

1527 1550 

1528`UserPromptSubmit` hook 對 `command`、`http` 和 `mcp_tool` 類型的預設逾時為 30 秒,短於大多數其他事件上這些類型的 600 秒預設值。由於此 hook 會在每個提示詞之前執行,並在完成前阻擋模型處理,卡住的 hook 會使工作階段停滯。如果您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。1551`UserPromptSubmit` hook 對於 `command`、`http` 和 `mcp_tool` 類型的預設逾時為 30 秒,短於這些類型在大多數其他事件上的 600 秒預設值。由於此 hook 在每個提示詞之前執行,並會阻擋模型處理直到完成,卡住的 hook 會使工作階段停滯。若您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。

1529 1552 

1530除了以 [`async: true`](#run-hooks-in-the-background) 執行的命令 hook 之外,達到逾時的 `UserPromptSubmit` 命令、HTTP 或 MCP 工具 hook 會被取消,其輸出(包括任何 `additionalContext`)會被捨棄。提示詞仍會在沒有該上下文的情況下傳達給 Claude。若要改為阻擋提示詞,請在命令或 HTTP hook 上設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。逐字稿會顯示一則通知,說明是哪個 hook、觸發的逾時,以及輸出已被捨棄。1553除了以 [`async: true`](#run-hooks-in-the-background) 執行的 command hook 之外,達到逾時的 `UserPromptSubmit` command、HTTP 或 MCP tool hook 會被取消,其輸出(包括任何 `additionalContext`)會被捨棄。提示詞仍會在沒有該情境的情況下傳達給 Claude。若要改為阻擋提示詞,請在 command 或 HTTP hook 上設定 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。逐字稿會顯示一則通知,指出該 hook、觸發的逾時,以及輸出已被捨棄。

1531 1554 

1532`UserPromptSubmit` 上達到逾時的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) 會阻擋該提示詞,並顯示說明該 hook 和逾時的訊息,因為該處的回呼可能作為不得在失敗時放行的政策關卡。工作階段會繼續。在 v2.1.208 之前,該事件上的回呼逾時會以執行錯誤結束該回合。1555`UserPromptSubmit` 上的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) 若達到逾時,會阻擋提示詞並顯示指出該 hook 和逾時的訊息,因為該處的回呼可能扮演不得在失敗時放行的政策閘門。工作階段會繼續。在 v2.1.208 之前,該事件上的回呼逾時會以執行錯誤結束該回合。

1533 1556 

1534<h4 id="userpromptsubmit-input">1557<h4 id="userpromptsubmit-input">

1535 UserPromptSubmit 輸入1558 UserPromptSubmit 輸入

1536</h4>1559</h4>

1537 1560 

1538除了[通用輸入欄位](#common-input-fields)之外,UserPromptSubmit hook 還會接收包含所提交文字的 `prompt` 欄位。折疊成 `[Pasted text #N]` 預留位置的貼上內容會在原位置展開後傳入。在 Claude Code [為 Claude 標記貼上文字](/docs/zh-TW/terminal-config#how-claude-treats-pasted-text)的工作階段中,展開的內容會位於 `<pasted_content id="…">` 行與 `</pasted_content id="…">` 行之間,因此如果您的 hook 會剖析提示詞,請將這些行納入考量。1561除了[通用輸入欄位](#common-input-fields)之外,UserPromptSubmit hook 還會接收包含所送出文字的 `prompt` 欄位。被收合為 `[Pasted text #N]` 預留位置的貼上內容會在原處展開後送達。在 Claude Code [為 Claude 標記貼上文字](/docs/zh-TW/terminal-config#how-claude-treats-pasted-text)的工作階段中,該展開內容位於 `<pasted_content id="…">` 行和 `</pasted_content id="…">` 行之間,因此若您的 hook 會解析提示詞,請將這些行納入考量。

1539 1562 

1540當工作階段有自訂標題時,UserPromptSubmit hook 也會接收 `session_title`,其意義與 [SessionStart 的 `session_title` 欄位](#sessionstart-input)相同。1563當工作階段有自訂標題時,UserPromptSubmit hook 也會接收 `session_title`,其意義與 [SessionStart `session_title` 欄位](#sessionstart-input)相同。

1541 1564 

1542```json theme={null}1565```json theme={null}

1543{1566{


1554 UserPromptSubmit 決策控制1577 UserPromptSubmit 決策控制

1555</h4>1578</h4>

1556 1579 

1557`UserPromptSubmit` hook 可以控制是否處理已提交的提示詞,並加入上下文。所有 [JSON 輸出欄位](#json-output)皆可使用。1580`UserPromptSubmit` hook 可以控制是否處理所送出的提示詞,並新增情境。所有 [JSON 輸出欄位](#json-output)皆可使用。

1558 1581 

1559在退出碼 0 時,有兩種方式可以將上下文加入對話:1582在退出碼為 0 時,有兩種方式可以將情境加入對話:

1560 1583 

1561* **純文字 stdout**:Claude Code 會將其[視為純文字](#exit-code-0)的 stdout 加入 Claude 的上下文1584* **純文字 stdout**:Claude Code 會將其[視為純文字](#exit-code-0)的 stdout 加入 Claude 的情境

1562* **含 `additionalContext` 的 JSON**:使用下方的 JSON 格式以獲得更多控制。`additionalContext` 欄位會作為上下文加入1585* **帶有 `additionalContext` 的 JSON**:使用下方的 JSON 格式以獲得更多控制。`additionalContext` 欄位會作為情境加入

1563 1586 

1564這兩個管道都不會產生可見的逐字稿項目。純 stdout 和 `additionalContext` 值各自會以開頭為 hook 名稱的系統提醒注入;Claude 兩者都會讀取。若要確認已傳遞,請查看[除錯日誌](#debug-hooks)。1587兩種管道都不會產生可見的逐字稿項目。純 stdout 和 `additionalContext` 值各自以 hook 名稱開頭的系統提醒形式注入;Claude 會讀取兩者。若要確認已傳遞,請查看[除錯日誌](#debug-hooks)。

1565 1588 

1566若要阻擋提示詞,請傳回 `decision` 設為 `"block"` 的 JSON 物件:1589若要阻擋提示詞,請回傳 `decision` 設為 `"block"` 的 JSON 物件:

1567 1590 

1568| 欄位 | 說明 |1591| 欄位 | 說明 |

1569| :- | :- |1592| :- | :- |

1570| `decision` | `"block"` 會在提示詞傳達給 Claude 之前將其停止。省略則允許提示詞繼續 |1593| `decision` | `"block"` 會在提示詞傳達給 Claude 之前將其停止。省略則允許提示詞繼續 |

1571| `reason` | 當 `decision` 為 `"block"` 時顯示給使用者。不會加入上下文 |1594| `reason` | 當 `decision` 為 `"block"` 時向使用者顯示。不會加入情境 |

1572| `additionalContext` | 與已提交之提示詞一同加入 Claude 上下文的字串。請參閱[為 Claude 加入上下文](#add-context-for-claude) |1595| `additionalContext` | 與所送出的提示詞一同加入 Claude 情境的字串。請參閱[為 Claude 新增情境](#add-context-for-claude) |

1573| `sessionTitle` | 設定工作階段標題。可用來依據提示詞內容自動命名工作階段 |1596| `sessionTitle` | 設定工作階段標題。可用於根據提示詞內容自動為工作階段命名 |

1574| `suppressOriginalPrompt` | 若在 hook 阻擋提示詞時為 `true`,則會將提示詞文字排除在阻擋訊息之外。請參閱[被阻擋的提示詞會留下什麼](#what-a-blocked-prompt-leaves-behind) |1597| `suppressOriginalPrompt` | 若 hook 阻擋提示詞時此值為 `true`,阻擋訊息中將不包含提示詞文字。請參閱[被阻擋的提示詞會留下什麼](#what-a-blocked-prompt-leaves-behind) |

1575 1598 

1576以退出碼 2 阻擋的 hook 與 `reason` 的處理方式相同:阻擋訊息會向使用者顯示 stderr 文字,且不會加入上下文。1599以退出碼 2 阻擋的 hook,其處理方式與 `reason` 相同:阻擋訊息會向使用者顯示 stderr 文字,且不會加入情境。

1577 1600 

1578```json theme={null}1601```json theme={null}

1579{1602{


1592 被阻擋的提示詞會留下什麼1615 被阻擋的提示詞會留下什麼

1593</h4>1616</h4>

1594 1617 

1595被阻擋的提示詞永遠不會傳達給 Claude,但其文字並不會從所有地方移除。預設情況下,顯示給使用者的阻擋訊息結尾會是 `Original prompt:` 加上所提交的文字,而 Claude Code 會將該訊息寫入磁碟上工作階段的逐字稿檔案。若要將文字排除在訊息之外,請在 `hookSpecificOutput` 中輸出含 `"suppressOriginalPrompt": true` 的 JSON。無論 hook 是以 `decision: "block"` 還是以退出碼 2 阻擋,此設定都有效。1618被阻擋的提示詞永遠不會傳達給 Claude,但其文字並不會從所有地方移除。預設情況下,向使用者顯示的阻擋訊息結尾為 `Original prompt:`,後接所送出的文字,而 Claude Code 會將該訊息寫入磁碟上的工作階段逐字稿檔案。若要在訊息中省略該文字,請在 `hookSpecificOutput` 內印出帶有 `"suppressOriginalPrompt": true` 的 JSON。無論 hook 是以 `decision: "block"` 還是以退出碼 2 阻擋,此設定皆有效。

1596 1619 

1597`suppressOriginalPrompt` 只會改變阻擋訊息。所提交的文字仍可能出現在本機檔案中,例如工作階段逐字稿和您的提示詞歷史記錄,因此阻擋 hook 並不是讓機密不寫入磁碟的方法。若要限制或移除這些檔案,請參閱[純文字儲存](/docs/zh-TW/claude-directory#plaintext-storage)和[清除本機資料](/docs/zh-TW/claude-directory#clear-local-data)。1620`suppressOriginalPrompt` 只會變更阻擋訊息。所送出的文字仍可能出現在本機檔案中,例如工作階段逐字稿和您的提示詞歷程記錄,因此阻擋 hook 並不是讓機密不落入磁碟的方法。若要限制或移除這些檔案,請參閱[純文字儲存](/docs/zh-TW/claude-directory#plaintext-storage)和[清除本機資料](/docs/zh-TW/claude-directory#clear-local-data)。

1598 1621 

1599<h3 id="userpromptexpansion">1622<h3 id="userpromptexpansion">

1600 UserPromptExpansion1623 UserPromptExpansion

1601</h3>1624</h3>

1602 1625 

1603在使用者輸入的命令展開為提示詞、傳達給 Claude 之前執行。可用來阻擋特定命令被直接呼叫、為特定 skill 注入上下文,或記錄使用者呼叫了哪些命令。例如,比對 `deploy` 的 hook 可以在核准檔案不存在時阻擋 `/deploy`,或比對審查 skill 的 hook 可以將團隊的審查清單附加為 `additionalContext`。1626在使用者輸入的命令展開為提示詞、傳達給 Claude 之前執行。可用於阻擋特定命令被直接呼叫、為特定 skill 注入情境,或記錄使用者呼叫了哪些命令。例如,比對 `deploy` 的 hook 可以在沒有核准檔案時阻擋 `/deploy`,或比對某個審查 skill 的 hook 可以將團隊的審查檢查清單作為 `additionalContext` 附加。

1604 1627 

1605此事件涵蓋了 `PreToolUse` 所沒有涵蓋的路徑:比對 `Skill` 工具的 `PreToolUse` hook 只會在 Claude 呼叫該工具時觸發,但直接輸入 `/skillname` 會略過 `PreToolUse`。`UserPromptExpansion` 會在這條直接路徑上觸發。1628此事件涵蓋了 `PreToolUse` 未涵蓋的路徑:比對 `Skill` 工具的 `PreToolUse` hook 只會在 Claude 呼叫該工具時觸發,但直接輸入 `/skillname` 會繞過 `PreToolUse`。`UserPromptExpansion` 會在該直接路徑上觸發。

1606 1629 

1607比對 `command_name`。將 matcher 留空即可在每個提示詞類型的命令上觸發。1630比對 `command_name`。將 matcher 留空可針對每個提示詞類型的命令觸發。

1608 1631 

1609<h4 id="userpromptexpansion-input">1632<h4 id="userpromptexpansion-input">

1610 UserPromptExpansion 輸入1633 UserPromptExpansion 輸入

1611</h4>1634</h4>

1612 1635 

1613除了[通用輸入欄位](#common-input-fields)之外,UserPromptExpansion hook 還會接收 `expansion_type`、`command_name`、`command_args`、`command_source` 以及原始的 `prompt` 字串。`expansion_type` 欄位對於 skill 和自訂命令為 `slash_command`,對於 MCP 伺服器提示詞則為 `mcp_prompt`。1636除了[通用輸入欄位](#common-input-fields)之外,UserPromptExpansion hook 還會接收 `expansion_type`、`command_name`、`command_args`、`command_source`,以及原始的 `prompt` 字串。`expansion_type` 欄位對於 skill 和自訂命令為 `slash_command`,對於 MCP 伺服器提示詞則為 `mcp_prompt`。

1614 1637 

1615```json theme={null}1638```json theme={null}

1616{1639{


1631 UserPromptExpansion 決策控制1654 UserPromptExpansion 決策控制

1632</h4>1655</h4>

1633 1656 

1634`UserPromptExpansion` hook 可以阻擋展開或加入上下文。所有 [JSON 輸出欄位](#json-output)皆可使用。1657`UserPromptExpansion` hook 可以阻擋展開或新增情境。所有 [JSON 輸出欄位](#json-output)皆可使用。

1635 1658 

1636| 欄位 | 說明 |1659| 欄位 | 說明 |

1637| :- | :- |1660| :- | :- |

1638| `decision` | `"block"` 會阻止命令展開。省略則允許其繼續 |1661| `decision` | `"block"` 會阻止命令展開。省略則允許其繼續 |

1639| `reason` | 當 `decision` 為 `"block"` 時顯示給使用者 |1662| `reason` | 當 `decision` 為 `"block"` 時向使用者顯示 |

1640| `additionalContext` | 與展開後之提示詞一同加入 Claude 上下文的字串。請參閱[為 Claude 加入上下文](#add-context-for-claude) |1663| `additionalContext` | 與展開後的提示詞一同加入 Claude 情境的字串。請參閱[為 Claude 新增情境](#add-context-for-claude) |

1641 1664 

1642以退出碼 2 阻擋的 hook 與 `reason` 的處理方式相同:阻擋訊息會向使用者顯示 stderr 文字。1665以退出碼 2 阻擋的 hook,其處理方式與 `reason` 相同:阻擋訊息會向使用者顯示 stderr 文字。

1643 1666 

1644```json theme={null}1667```json theme={null}

1645{1668{


1656 MessageDisplay1679 MessageDisplay

1657</h3>1680</h3>

1658 1681 

1659在助理訊息串流到畫面上時執行。Claude Code 會逐步顯示訊息:每當一批新完成的行準備好要呈現時,hook 就會以這些行執行一次,而 Claude Code 會在其位置呈現 hook 的替換文字。較長的訊息會產生多次呼叫;較短的訊息可能只產生一次。1682在助理訊息串流顯示到螢幕上時執行。Claude Code 會分段顯示訊息:每當有一批新完成的行準備好呈現時,hook 會以這些行執行一次,Claude Code 則在其位置呈現 hook 的替換文字。長訊息會產生多次呼叫;短訊息可能只產生一次。

1660 1683 

1661MessageDisplay 可用於:1684使用 MessageDisplay 來:

1662 1685 

1663* 移除 markdown 以呈現精簡的畫面1686* 移除 markdown 以呈現精簡的顯示

1664* 轉換 Agent SDK 應用程式向其使用者顯示的文字1687* 轉換 Agent SDK 應用程式向其使用者顯示的文字

1665* 從 Claude 的回應中遮蔽 API 金鑰或內部主機名稱1688* 從 Claude 的回應中遮蔽 API 金鑰或內部主機名稱

1666 1689 

1667Claude Code 會保留每一批內容直到您的 hook 傳回,因此請讓 hook 保持快速。如果 hook 失敗或逾時,Claude Code 會顯示原始文字。此事件的預設逾時為 10 秒;如果您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。1690Claude Code 會保留每一批內容直到您的 hook 回傳,因此請讓 hook 保持快速。若 hook 失敗或逾時,Claude Code 會顯示原始文字。此事件的預設逾時為 10 秒;若您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。

1668 1691 

1669MessageDisplay 僅影響顯示:替換文字只會改變畫面上呈現的內容。逐字稿以及 Claude 看到的內容會保留原始文字,因此 Claude 永遠不會看到替換內容,而詳細模式也會顯示原始文字。hook 只會接收助理訊息文字,因此工具結果和您輸入的文字會原樣呈現。1692MessageDisplay 僅影響顯示:替換文字只會變更螢幕上呈現的內容。逐字稿和 Claude 所見的內容會保留原始文字,因此 Claude 永遠看不到替換內容,詳細模式也會顯示原始文字。hook 只接收助理訊息的文字,因此工具結果和您輸入的文字會原封不動地呈現。

1670 1693 

1671MessageDisplay 不支援 matcher,並會針對每則串流文字的助理訊息觸發;沒有文字的訊息(例如僅含工具呼叫的回應)不會觸發它。1694MessageDisplay 不支援 matcher,並會針對每則串流文字的助理訊息觸發;沒有文字的訊息(例如僅包含工具呼叫的回應)不會觸發它。

1672 1695 

1673在非互動式執行中,包括 Agent SDK 查詢和 `claude -p`,MessageDisplay 會針對每則助理訊息執行一次,而不是每批行執行一次。這次單一呼叫會在訊息完成後到達,並攜帶完整的訊息文字:`index` 為 `0`、`final` 為 `true`,而 `delta` 包含整則訊息。收集每則訊息之 `delta` 文字的 hook,在兩種模式下都會收到相同的完整文字。1696在非互動式執行中,包括 Agent SDK 查詢和 `claude -p`,MessageDisplay 會對每則助理訊息執行一次,而不是每批行執行一次。這單次呼叫會在訊息完成後到達,並攜帶完整的訊息文字:`index` 為 `0`、`final` 為 `true`,`delta` 則包含整則訊息。收集每則訊息 `delta` 文字的 hook,在兩種模式下接收到的總文字相同。

1674 1697 

1675<h4 id="messagedisplay-input">1698<h4 id="messagedisplay-input">

1676 MessageDisplay 輸入1699 MessageDisplay 輸入


1681| 欄位 | 說明 |1704| 欄位 | 說明 |

1682| :- | :- |1705| :- | :- |

1683| `turn_id` | 目前回合的 UUID |1706| `turn_id` | 目前回合的 UUID |

1684| `message_id` | 正在顯示之助理訊息的 UUID。在同一則訊息的每一批中都保持不變。這不是 API 的 `msg_…` id,因此無法與逐字稿的訊息 id 對應 |1707| `message_id` | 正在顯示的助理訊息的 UUID。在同一則訊息的每一批中都相同。這不是 API 的 `msg_…` id,因此無法與逐字稿的訊息 id 對應 |

1685| `index` | 此批次在訊息中從零開始的索引 |1708| `index` | 此批次在訊息中從零開始的索引 |

1686| `final` | 在訊息的最後一批時為 `true`。每則訊息恰好有一個最終批次 |1709| `final` | 在訊息的最後一批為 `true`。每則訊息恰有一個最終批次 |

1687| `delta` | 自上一批以來新完成的行,包含結尾的換行字元。一律為完整的行,但最終批次可能在行中間結束。在互動式執行中,當訊息以換行結尾時,最終批次的 delta 為空,因此請將 `final`(而非非空的 delta)視為訊息結束的訊號。在 Agent SDK 和 `claude -p` 執行中,單一呼叫會攜帶整則訊息 |1710| `delta` | 自上一批以來新完成的行,包含結尾換行字元。一律為完整的行,但最終批次可能在行中間結束。在互動式執行中,當訊息以換行結尾時,最終批次的 delta 為空,因此請將 `final`(而非非空的 delta)視為訊息結束的訊號。在 Agent SDK 和 `claude -p` 執行中,單次呼叫會攜帶整則訊息 |

1688 1711 

1689```json theme={null}1712```json theme={null}

1690{1713{


1704 MessageDisplay 輸出1727 MessageDisplay 輸出

1705</h4>1728</h4>

1706 1729 

1707除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,MessageDisplay hook 還可以傳回 `displayContent`,以取代畫面上的 delta:1730除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,MessageDisplay hook 還可以回傳 `displayContent`,以在螢幕上取代 delta:

1708 1731 

1709| 欄位 | 說明 |1732| 欄位 | 說明 |

1710| :- | :- |1733| :- | :- |

1711| `displayContent` | 取代 delta 顯示的文字。省略則顯示原始內容 |1734| `displayContent` | 取代 delta 顯示的文字。省略則顯示原始內容 |

1712 1735 

1713MessageDisplay hook 沒有決策控制。它們無法阻擋訊息,也無法改變儲存在逐字稿中或傳送給 Claude 的內容。Claude Code 會採用其 JSON 輸出中的 `displayContent`,並捨棄 `systemMessage` 和 `continue`。1736MessageDisplay hook 沒有決策控制。它們無法阻擋訊息,也無法變更儲存在逐字稿中或傳送給 Claude 的內容。Claude Code 會依據其 JSON 輸出中的 `displayContent` 採取動作,並捨棄 `systemMessage` 和 `continue`。

1714 1737 

1715此範例會從 Claude 的回應中移除 markdown 格式,以純文字方式顯示。指令碼會從 stdin 讀取每一批內容,從 `delta` 中移除粗體標記和行內程式碼的反引號,並將結果作為 `displayContent` 傳回。1738此範例會從 Claude 的回應中移除 markdown 格式,以純文字方式顯示。指令碼會從 stdin 讀取每一批,從 `delta` 中移除粗體標記和行內程式碼反引號,並將結果作為 `displayContent` 回傳。

1716 1739 

1717<Tabs>1740<Tabs>

1718 <Tab title="macOS/Linux">1741 <Tab title="macOS/Linux">

1719 在您的設定檔中為此事件註冊命令 hook:1742 在您的設定檔中為此事件註冊一個 command hook:

1720 1743 

1721 ```json theme={null}1744 ```json theme={null}

1722 {1745 {


1745 </Tab>1768 </Tab>

1746 1769 

1747 <Tab title="Windows (PowerShell)">1770 <Tab title="Windows (PowerShell)">

1748 註冊透過 PowerShell 執行指令碼的命令 hook:1771 註冊一個透過 PowerShell 執行指令碼的 command hook:

1749 1772 

1750 ```json theme={null}1773 ```json theme={null}

1751 {1774 {


1771 }1794 }

1772 ```1795 ```

1773 1796 

1774 `-NoProfile` 旗標會略過載入您的 PowerShell 設定檔,讓 hook 快速啟動,而 `-ExecutionPolicy Bypass` 則讓 PowerShell 可以執行本機指令碼檔案。1797 `-NoProfile` 旗標會略過載入您的 PowerShell 設定檔,讓 hook 快速啟動,而 `-ExecutionPolicy Bypass` 則讓 PowerShell 能執行本機指令碼檔案。

1775 1798 

1776 將此指令碼儲存至專案中的 `.claude/hooks/plain-display.ps1`:1799 將此指令碼儲存至專案中的 `.claude/hooks/plain-display.ps1`:

1777 1800 


1788 </Tab>1811 </Tab>

1789</Tabs>1812</Tabs>

1790 1813 

1791沒有 markdown 的批次會原樣通過。如果指令碼失敗,例如因為缺少 `jq`,Claude Code 會顯示原始文字,並只在[除錯輸出](#debug-hooks)中記錄失敗,不會在工作階段中顯示。1814不含 markdown 的批次會原封不動地通過。若指令碼失敗,例如因為缺少 `jq`,Claude Code 會顯示原始文字,並只在[除錯輸出](#debug-hooks)中記錄該失敗,而不會在工作階段中顯示。

1792 1815 

1793<h3 id="pretooluse">1816<h3 id="pretooluse">

1794 PreToolUse1817 PreToolUse

1795</h3>1818</h3>

1796 1819 

1797在 Claude 建立工具參數之後、處理工具呼叫之前執行。比對除了 `EndConversation` 以外的任何工具名稱:內建工具,例如 `Bash`、`PowerShell`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`Workflow`、`WebFetch`、`WebSearch`、`AskUserQuestion` 和 `ExitPlanMode`,以及任何 [MCP 工具名稱](#match-mcp-tools)。1820在 Claude 建立工具參數之後、處理工具呼叫之前執行。比對 `EndConversation` 以外的任何工具名稱:內建工具如 `Bash`、`PowerShell`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`Workflow`、`WebFetch`、`WebSearch`、`AskUserQuestion` 和 `ExitPlanMode`,以及任何 [MCP 工具名稱](#match-mcp-tools)。

1798 1821 

1799若要在特定檔案於磁碟上變更時執行 hook(無論是由誰寫入),請使用 [FileChanged](#filechanged),而不是依名稱比對編輯檔案的工具。與 PreToolUse 不同,Claude Code 會在變更之後執行 FileChanged hook,而且它們沒有決策控制,因此無法阻擋寫入。1822若要在特定檔案於磁碟上變更時執行 hook(無論是誰寫入的),請使用 [FileChanged](#filechanged),而不要依名稱比對檔案編輯工具。與 PreToolUse 不同,Claude Code 會在變更之後執行 FileChanged hook,且它們沒有決策控制,因此無法阻擋寫入。

1800 1823 

1801<Warning>1824<Warning>

1802 PreToolUse 只在 Claude 呼叫工具時執行。您[在提示詞中以 `@` 參照](/docs/zh-TW/common-workflows#reference-files-and-directories)的檔案不經任何工具呼叫即被加入:Claude Code 在建構提示詞時插入其內容,因此不會為它們觸發任何 PreToolUse hook,包括比對 `Read` 的 hook。若要阻擋 `@` 參照特定路徑,請改用 [`Read` 拒絕規則](/docs/zh-TW/permissions#read-and-edit)。1825 PreToolUse 只在 Claude 呼叫工具時執行。預設情況下,您[在提示詞中以 `@` 參照](/docs/zh-TW/common-workflows#reference-files-and-directories)的檔案會在沒有任何工具呼叫的情況下加入。Claude Code 會在建構提示詞時插入其內容,因此不會為它們觸發任何 PreToolUse hook,包括比對 `Read` 的 hook。PreToolUse 也不會針對 [`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior) 觸發。

1826 

1827 您可以阻擋特定路徑被 `@` 參照,或關閉插入功能:

1803 1828 

1804 PreToolUse 也不會針對 [`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior) 觸發。1829 * **阻擋特定路徑**:為它們新增 [`Read` 拒絕規則](/docs/zh-TW/permissions#read-and-edit)

1830 * **關閉插入功能**:在您的 shell、使用者設定或受管設定中設定 [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/zh-TW/env-vars#variables)。Claude 接著會取得被提及的路徑,並附上一則說明,要求以其檔案工具讀取。若 Claude 這麼做,您相符的 PreToolUse hook 就會執行。此變數需要 Claude Code v2.1.299 或更新版本,且 Claude Code 會在專案設定和本機設定中忽略它。

1805</Warning>1831</Warning>

1806 1832 

1807使用 [PreToolUse 決策控制](#pretooluse-decision-control)來允許、拒絕、詢問或延後工具呼叫。1833使用 [PreToolUse 決策控制](#pretooluse-decision-control)來允許、拒絕、詢問或延遲工具呼叫。

1808 1834 

1809`PreToolUse` 上超過逾時的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) 會阻擋工具呼叫,而 Claude 會收到說明該逾時的錯誤結果。其他 hook 傳回的明確拒絕仍然優先。1835`PreToolUse` 上的 [Agent SDK 回呼 hook](/docs/zh-TW/agent-sdk/hooks) 若超過逾時,會阻擋工具呼叫,而 Claude 會收到指出逾時的錯誤結果。其他 hook 回傳的明確拒絕仍會優先。

1810 1836 

1811<h4 id="pretooluse-input">1837<h4 id="pretooluse-input">

1812 PreToolUse 輸入1838 PreToolUse 輸入


1814 1840 

1815除了[通用輸入欄位](#common-input-fields)之外,PreToolUse hook 還會接收 `tool_name`、`tool_input` 和 `tool_use_id`。1841除了[通用輸入欄位](#common-input-fields)之外,PreToolUse hook 還會接收 `tool_name`、`tool_input` 和 `tool_use_id`。

1816 1842 

1817對於 [MCP 工具](#match-mcp-tools),輸入還會攜帶 `mcp_server`,這是一個包含伺服器 `name` 以及說明伺服器定義來源之 `source` 的物件。`source` 的值包括 `plugin`、`sdk`,以及 `user` 和 `project` 等設定範圍。Agent SDK 參考文件中的 [`McpServerProvenance`](/docs/zh-TW/agent-sdk/typescript#mcpserverprovenance) 列出了所有值,並說明如何處理無法辨識的值。請依據 `source` 做出信任決策,而不是依據 `name` 或 `mcp__<server>__` 工具名稱前綴。`mcp_server` 欄位需要 Claude Code v2.1.274 或更新版本。1843對於 [MCP 工具](#match-mcp-tools),輸入還會攜帶 `mcp_server`,這是一個包含伺服器 `name` 以及說明伺服器定義來源之 `source` 的物件。`source` 的值包括 `plugin`、`sdk`,以及 `user` 和 `project` 等設定範圍。Agent SDK 參考文件中的 [`McpServerProvenance`](/docs/zh-TW/agent-sdk/typescript#mcpserverprovenance) 列出了所有值,並說明如何處理您無法辨識的值。請根據 `source` 而非 `name` 或 `mcp__<server>__` 工具名稱前綴來做信任決策。`mcp_server` 欄位需要 Claude Code v2.1.274 或更新版本。

1818 1844 

1819對於檔案工具 `Write`、`Edit` 和 `Read`,`tool_input.file_path` 一律為絕對路徑:1845對於檔案工具 `Write`、`Edit` 和 `Read`,`tool_input.file_path` 一律為絕對路徑:

1820 1846 

1821* Claude Code 會在 hook 執行前展開 `~` 和相對路徑,因此比對路徑的 hook 無法透過 `~` 或同一路徑的相對寫法繞過1847* Claude Code 會在 hook 執行前展開 `~` 和相對路徑,因此比對路徑的 hook 無法透過 `~` 或同一路徑的相對寫法被繞過

1822* 在 Windows 上,路徑會以反斜線分隔符號傳入,即使您的 hook 在 `$PWD` 看起來像 `/c/project` 的 Git Bash 下執行也是如此1848* 在 Windows 上,路徑會以反斜線分隔符號送達,即使您的 hook 在 Git Bash 下執行、`$PWD` 看起來像 `/c/project` 也是如此

1823* 以正斜線撰寫的比較(例如 `/src/` 檢查)永遠不會比對到反斜線路徑,工具呼叫會像 hook 沒有任何可阻擋的內容一樣繼續進行1849* 以正斜線撰寫的比較(例如 `/src/` 檢查)永遠不會比對到反斜線路徑,工具呼叫會如同 hook 沒有要阻擋的內容般繼續進行

1824* 比較前請先正規化分隔符號:在 Bash 中使用 `FILE_PATH="${FILE_PATH//\\//}"`,或在 Python 中使用 `file_path.replace("\\", "/")`,然後比對路徑片段(例如 `/src/`),而不是以 `^` 錨定,因為路徑是絕對路徑1850* 比較前請先正規化分隔符號:在 Bash 中使用 `FILE_PATH="${FILE_PATH//\\//}"`,或在 Python 中使用 `file_path.replace("\\", "/")`,然後比對 `/src/` 之類的路徑片段,而不要以 `^` 錨定,因為路徑是絕對路徑

1825 1851 

1826在 Windows 上的 `Write` 呼叫會傳入:1852Windows 上的 `Write` 呼叫會傳遞:

1827 1853 

1828```json theme={null}1854```json theme={null}

1829{1855{


1837}1863}

1838```1864```

1839 1865 

1840`tool_input` 的欄位取決於工具:1866`tool_input` 欄位取決於工具:

1841 1867 

1842<a id="bash" />1868<a id="bash" />

1843 1869 


1850| 欄位 | 類型 | 範例 | 說明 |1876| 欄位 | 類型 | 範例 | 說明 |

1851| :- | :- | :- | :- |1877| :- | :- | :- | :- |

1852| `command` | string | `"npm test"` | 要執行的 shell 命令 |1878| `command` | string | `"npm test"` | 要執行的 shell 命令 |

1853| `description` | string | `"Run test suite"` | 選用的命令用途說明 |1879| `description` | string | `"Run test suite"` | 選用,說明命令用途 |

1854| `timeout` | number | `120000` | 選用的逾時(毫秒)。超過[上限](/docs/zh-TW/tools-reference#bash-tool-behavior)的值會被降為上限,而不會被拒絕 |1880| `timeout` | number | `120000` | 選用,以毫秒為單位的逾時。超過[上限](/docs/zh-TW/tools-reference#bash-tool-behavior)的值會被降至上限,而不會被拒絕 |

1855| `run_in_background` | boolean | `false` | 是否在背景執行命令 |1881| `run_in_background` | boolean | `false` | 是否在背景執行命令 |

1856 1882 

1857當 Bash 命令變更 Git 儲存庫中的檔案時,Claude Code 可以記錄變更的內容。當 [`bashEditDiffEnabled`](/docs/zh-TW/settings-reference#basheditdiffenabled) 設定開啟記錄時,它會在每種權限模式下記錄變更;該設定的項目說明了哪些檔案可以設定它。否則,它只會在自動模式和 `bypassPermissions` 模式下記錄變更,而且只在 Claude Code 指示 Claude 透過 Bash 編輯檔案時記錄。將 `bashEditDiffEnabled` 設為 `false` 可關閉記錄。背景命令和唯讀命令不會攜帶差異。1883當 Bash 命令變更 Git 儲存庫中的檔案時,Claude Code 可以記錄變更內容。當 [`bashEditDiffEnabled`](/docs/zh-TW/settings-reference#basheditdiffenabled) 設定開啟記錄時,它會在每種權限模式下記錄變更;該設定的項目說明了哪些檔案可以設定它。否則,它只會在自動模式和 `bypassPermissions` 模式下記錄,且僅在 Claude Code 指示 Claude 透過 Bash 編輯檔案時才記錄。將 `bashEditDiffEnabled` 設為 `false` 可關閉記錄。背景命令和唯讀命令不會附帶差異。

1858 1884 

1859接著,您的 [PostToolUse hook](#posttooluse) 會在 `tool_response.bashEditDiff` 中接收變更的檔案。此清單涵蓋命令執行期間儲存庫下變更的內容。Git 忽略的檔案以及子模組中的檔案不會列出。需要 Claude Code v2.1.269 或更新版本。1885接著,您的 [PostToolUse hook](#posttooluse) 會在 `tool_response.bashEditDiff` 中接收變更的檔案。此清單涵蓋命令執行期間儲存庫中發生的變更。Git 忽略的檔案和子模組中的檔案不會列出。需要 Claude Code v2.1.269 或更新版本。

1860 1886 

1861<Note>1887<Note>

1862 此清單為盡力而為,目前處於公開測試版。Claude Code 可能遺漏變更、包含另一個程序同時變更的檔案,或在達到大小限制時停止。欄位結構可能會變更。請使用此清單來找出需要審查的內容,而不是用來強制執行政策。1888 此清單為盡力而為,且處於公開測試版。Claude Code 可能遺漏某項變更、納入另一個程序同時變更的檔案,或在達到大小限制時停止。欄位結構可能會變更。請使用此清單來找出需要審查的內容,而不要用來強制執行政策。

1863</Note>1889</Note>

1864 1890 

1865`changedFiles` 和 `files` 列出命令變更的內容;其餘欄位說明該清單的完整度和可靠度。1891`changedFiles` 和 `files` 列出命令變更的內容;其餘欄位說明該清單的完整程度和可靠程度。

1866 1892 

1867| 欄位 | 類型 | 範例 | 說明 |1893| 欄位 | 類型 | 範例 | 說明 |

1868| :- | :- | :- | :- |1894| :- | :- | :- | :- |

1869| `changedFiles` | array | `["/path/to/src/app.ts"]` | 命令變更之檔案的絕對路徑,最多 200 個。只要 `files` 包含差異或 `moreFiles` 大於零就會出現 |1895| `changedFiles` | array | `["/path/to/src/app.ts"]` | 命令變更的檔案絕對路徑,最多 200 個。只要 `files` 包含差異或 `moreFiles` 大於零時就會出現 |

1870| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | 最多 5 個變更檔案的差異,供顯示用。對於命令新增或移除的檔案,`created` 或 `deleted` 為 `true` |1896| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | 最多 5 個變更檔案的差異,供顯示用。對於命令新增或移除的檔案,`created` 或 `deleted` 為 `true` |

1871| `moreFiles` | number | `2` | 在 `files` 中沒有差異的變更檔案數量 |1897| `moreFiles` | number | `2` | 在 `files` 中沒有差異的變更檔案數量 |

1872| `unavailable` | boolean | `true` | 當差異不完整或無法取得時設定 |1898| `unavailable` | boolean | `true` | 當差異不完整或無法取得時設定 |

1873| `skipped` | boolean | `true` | 針對會移動工作樹的 Git 命令(例如 `git checkout` 或 `git stash`)設定,此時 Claude Code 不會取得差異 |1899| `skipped` | boolean | `true` | 針對會移動工作樹的 Git 命令設定,例如 `git checkout` 或 `git stash`,因此 Claude Code 不會取得差異 |

1874| `shared` | boolean | `true` | 當另一個 Bash 工具呼叫(例如 subagent 的呼叫)同時在同一個儲存庫中執行時設定,因此部分列出的變更可能來自該命令 |1900| `shared` | boolean | `true` | 當另一個 Bash 工具呼叫(例如 subagent 的呼叫)同時在相同儲存庫中執行時設定,因此部分列出的變更可能來自該命令 |

1875 1901 

1876<a id="powershell" />1902<a id="powershell" />

1877 1903 


1879 PowerShell1905 PowerShell

1880</h5>1906</h5>

1881 1907 

1882執行 PowerShell 命令。各平台的可用性請參閱 [PowerShell 工具](/docs/zh-TW/tools-reference#powershell-tool)。1908執行 PowerShell 命令。關於各平台的可用性,請參閱 [PowerShell 工具](/docs/zh-TW/tools-reference#powershell-tool)。

1883 1909 

1884欄位與 Bash 工具相同,命令字串位於 `command`:1910欄位與 Bash 工具相同,命令字串位於 `command`:

1885 1911 

1886| 欄位 | 類型 | 範例 | 說明 |1912| 欄位 | 類型 | 範例 | 說明 |

1887| :- | :- | :- | :- |1913| :- | :- | :- | :- |

1888| `command` | string | `"Get-ChildItem -Recurse"` | 要執行的 PowerShell 命令 |1914| `command` | string | `"Get-ChildItem -Recurse"` | 要執行的 PowerShell 命令 |

1889| `description` | string | `"List files recursively"` | 選用的命令用途說明 |1915| `description` | string | `"List files recursively"` | 選用,說明命令用途 |

1890| `timeout` | number | `120000` | 選用的逾時(毫秒) |1916| `timeout` | number | `120000` | 選用,以毫秒為單位的逾時 |

1891| `run_in_background` | boolean | `false` | 是否在背景執行命令 |1917| `run_in_background` | boolean | `false` | 是否在背景執行命令 |

1892 1918 

1893在檢查 shell 命令的 hook 中比對 `Bash|PowerShell`,以涵蓋兩種工具:1919在檢查 shell 命令的 hook 中比對 `Bash|PowerShell`,以涵蓋兩種工具:

1894 1920 

1895* 在 Windows 上,只要啟用了 PowerShell 工具,Claude 就會將 PowerShell 視為主要 shell,並透過它路由 shell 命令。1921* 在 Windows 上,只要啟用了 PowerShell 工具,Claude 就會將 PowerShell 視為主要 shell,並透過它傳送 shell 命令。

1896* 在沒有 Git Bash 的 Windows 上,該工具會自動啟用,且 Claude Code 完全不會註冊 Bash 工具。1922* 在沒有 Git Bash 的 Windows 上,該工具會自動啟用,且 Claude Code 完全不會註冊 Bash 工具。

1897* 只比對 `Bash` 的 hook 在該處永遠不會觸發。1923* 只比對 `Bash` 的 hook 在那裡永遠不會觸發。

1898 1924 

1899<h5 id="write">1925<h5 id="write">

1900 Write1926 Write


1904 1930 

1905| 欄位 | 類型 | 範例 | 說明 |1931| 欄位 | 類型 | 範例 | 說明 |

1906| :- | :- | :- | :- |1932| :- | :- | :- | :- |

1907| `file_path` | string | `"/path/to/file.txt"` | 要寫入之檔案的絕對路徑 |1933| `file_path` | string | `"/path/to/file.txt"` | 要寫入的檔案的絕對路徑 |

1908| `content` | string | `"file content"` | 要寫入檔案的內容 |1934| `content` | string | `"file content"` | 要寫入檔案的內容 |

1909 1935 

1910<h5 id="edit">1936<h5 id="edit">

1911 Edit1937 Edit

1912</h5>1938</h5>

1913 1939 

1914取代既有檔案中的字串。1940取代現有檔案中的字串。

1915 1941 

1916| 欄位 | 類型 | 範例 | 說明 |1942| 欄位 | 類型 | 範例 | 說明 |

1917| :- | :- | :- | :- |1943| :- | :- | :- | :- |

1918| `file_path` | string | `"/path/to/file.txt"` | 要編輯之檔案的絕對路徑 |1944| `file_path` | string | `"/path/to/file.txt"` | 要編輯的檔案的絕對路徑 |

1919| `old_string` | string | `"original text"` | 要尋找並取代的文字 |1945| `old_string` | string | `"original text"` | 要尋找並取代的文字 |

1920| `new_string` | string | `"replacement text"` | 取代文字 |1946| `new_string` | string | `"replacement text"` | 替換文字 |

1921| `replace_all` | boolean | `false` | 是否取代所有出現處 |1947| `replace_all` | boolean | `false` | 是否取代所有出現處 |

1922 1948 

1923<h5 id="read">1949<h5 id="read">


1928 1954 

1929| 欄位 | 類型 | 範例 | 說明 |1955| 欄位 | 類型 | 範例 | 說明 |

1930| :- | :- | :- | :- |1956| :- | :- | :- | :- |

1931| `file_path` | string | `"/path/to/file.txt"` | 要讀取之檔案的絕對路徑 |1957| `file_path` | string | `"/path/to/file.txt"` | 要讀取的檔案的絕對路徑 |

1932| `offset` | number | `10` | 選用的起始讀取行號 |1958| `offset` | number | `10` | 選用,開始讀取的行號 |

1933| `limit` | number | `50` | 選用的讀取行數 |1959| `limit` | number | `50` | 選用,要讀取的行數 |

1934 1960 

1935<h5 id="glob">1961<h5 id="glob">

1936 Glob1962 Glob


1941| 欄位 | 類型 | 範例 | 說明 |1967| 欄位 | 類型 | 範例 | 說明 |

1942| :- | :- | :- | :- |1968| :- | :- | :- | :- |

1943| `pattern` | string | `"**/*.ts"` | 用來比對檔案的 glob 模式 |1969| `pattern` | string | `"**/*.ts"` | 用來比對檔案的 glob 模式 |

1944| `path` | string | `"/path/to/dir"` | 選用的搜尋目錄。預設為目前工作目錄 |1970| `path` | string | `"/path/to/dir"` | 選用,要搜尋的目錄。預設為目前的工作目錄 |

1945 1971 

1946<h5 id="grep">1972<h5 id="grep">

1947 Grep1973 Grep

1948</h5>1974</h5>

1949 1975 

1950以正規表示式搜尋檔案內容。1976使用正規表示式搜尋檔案內容。

1951 1977 

1952| 欄位 | 類型 | 範例 | 說明 |1978| 欄位 | 類型 | 範例 | 說明 |

1953| :- | :- | :- | :- |1979| :- | :- | :- | :- |

1954| `pattern` | string | `"TODO.*fix"` | 要搜尋的正規表示式模式 |1980| `pattern` | string | `"TODO.*fix"` | 要搜尋的正規表示式模式 |

1955| `path` | string | `"/path/to/dir"` | 選用的搜尋檔案或目錄 |1981| `path` | string | `"/path/to/dir"` | 選用,要搜尋的檔案或目錄 |

1956| `glob` | string | `"*.ts"` | 選用的 glob 模式,用於篩選檔案 |1982| `glob` | string | `"*.ts"` | 選用,用於篩選檔案的 glob 模式 |

1957| `output_mode` | string | `"content"` | `"content"`、`"files_with_matches"` 或 `"count"`。預設為 `"files_with_matches"` |1983| `output_mode` | string | `"content"` | `"content"`、`"files_with_matches"` 或 `"count"`。預設為 `"files_with_matches"` |

1958| `-i` | boolean | `true` | 不區分大小寫搜尋 |1984| `-i` | boolean | `true` | 不區分大小寫的搜尋 |

1959| `multiline` | boolean | `false` | 啟用多行比對 |1985| `multiline` | boolean | `false` | 啟用多行比對 |

1960 1986 

1961<h5 id="webfetch">1987<h5 id="webfetch">


1967| 欄位 | 類型 | 範例 | 說明 |1993| 欄位 | 類型 | 範例 | 說明 |

1968| :- | :- | :- | :- |1994| :- | :- | :- | :- |

1969| `url` | string | `"https://example.com/api"` | 要擷取內容的 URL |1995| `url` | string | `"https://example.com/api"` | 要擷取內容的 URL |

1970| `prompt` | string | `"Extract the API endpoints"` | 要在擷取內容上執行的提示詞 |1996| `prompt` | string | `"Extract the API endpoints"` | 對擷取內容執行的提示詞 |

1971| `offset` | number | `100000` | 從頁面開頭略過的選用字元數。Claude 會設定此值以繼續讀取長頁面。需要 Claude Code v2.1.290 或更新版本 |1997| `offset` | number | `100000` | 選用,從頁面開頭略過的字元數。Claude 會設定此值以繼續閱讀長頁面。需要 Claude Code v2.1.290 或更新版本 |

1972 1998 

1973<h5 id="websearch">1999<h5 id="websearch">

1974 WebSearch2000 WebSearch


1986 Agent2012 Agent

1987</h5>2013</h5>

1988 2014 

1989產生 [subagent](/docs/zh-TW/sub-agents)。2015產生一個 [subagent](/docs/zh-TW/sub-agents)。

1990 2016 

1991| 欄位 | 類型 | 範例 | 說明 |2017| 欄位 | 類型 | 範例 | 說明 |

1992| :- | :- | :- | :- |2018| :- | :- | :- | :- |

1993| `prompt` | string | `"Find all API endpoints"` | agent 要執行的任務 |2019| `prompt` | string | `"Find all API endpoints"` | agent 要執行的任務 |

1994| `description` | string | `"Find API endpoints"` | 任務的簡短說明 |2020| `description` | string | `"Find API endpoints"` | 任務的簡短說明 |

1995| `subagent_type` | string | `"Explore"` | 要使用的專門 agent 類型 |2021| `subagent_type` | string | `"Explore"` | 要使用的專門 agent 類型 |

1996| `model` | string | `"sonnet"` | 選用的模型別名,用於覆寫預設值 |2022| `model` | string | `"sonnet"` | 選用,用來覆寫預設值的模型別名 |

1997 2023 

1998當前景 Agent 呼叫完成時,您的 [PostToolUse hook](#posttooluse) 會在 `tool_response` 中接收 subagent 的結果和執行遙測。讀取這些欄位以檢查該次執行;若要彙總跨 subagent 的 token 和成本,請使用篩選 `query_source` 為 `"subagent"` 的 [token 和成本計數器](/docs/zh-TW/monitoring-usage#token-counter),因為 `totalTokens` 和 `usage` 只涵蓋最後一個請求:2024當前景 Agent 呼叫完成時,您的 [PostToolUse hook](#posttooluse) 會在 `tool_response` 中接收 subagent 的結果和執行遙測。讀取這些欄位以檢視執行情況;若要彙總各 subagent 的 token 和成本,請使用以 `query_source` `"subagent"` 篩選的 [token 和成本計數器](/docs/zh-TW/monitoring-usage#token-counter),因為 `totalTokens` 和 `usage` 只涵蓋最後一個請求:

1999 2025 

2000| 欄位 | 類型 | 範例 | 說明 |2026| 欄位 | 類型 | 範例 | 說明 |

2001| :- | :- | :- | :- |2027| :- | :- | :- | :- |

2002| `status` | string | `"completed"` | 前景 subagent 為 `"completed"`,背景 subagent 為 `"async_launched"`。subagent 預設在背景執行,因此省略 `run_in_background` 的 Agent 呼叫也會產生 `"async_launched"` |2028| `status` | string | `"completed"` | 前景 subagent 為 `"completed"`,背景 subagent 為 `"async_launched"`。subagent 預設在背景執行,因此省略 `run_in_background` 的 Agent 呼叫也會產生 `"async_launched"` |

2003| `agentId` | string | `"a4d2c8f1e0b3a297"` | subagent 執行的識別碼 |2029| `agentId` | string | `"a4d2c8f1e0b3a297"` | subagent 執行的識別碼 |

2004| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | subagent 的最終文字區塊;對於透過 `SubagentHandback` 提交報告的 subagent,則以一則關於該移交的簡短說明取代 |2030| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | subagent 的最終文字區塊;對於透過 `SubagentHandback` 提交報告的 subagent,則以一則關於該交回的簡短說明代替 |

2005| `resolvedModel` | string | `"claude-sonnet-4-5"` | subagent 啟動時使用的模型,可能與請求的模型不同 |2031| `resolvedModel` | string | `"claude-sonnet-4-5"` | subagent 起始使用的模型,可能與所要求的模型不同 |

2006| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 依序使用的模型,連續重複者會合併;只在執行途中切換模型時設定。需要 Claude Code v2.1.212 或更新版本 |2032| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 依序使用的模型,連續重複者會合併;僅在執行中途切換模型時設定。需要 Claude Code v2.1.212 或更新版本 |

2007| `totalTokens` | number | `12450` | subagent 最後一個 API 請求的 token 數:輸入、輸出和快取 token 的合計。這不是整次執行的總計 |2033| `totalTokens` | number | `12450` | subagent 最後一個 API 請求的 token 數:輸入、輸出和快取 token 的總和。這不是整個執行的總計 |

2008| `totalDurationMs` | number | `48211` | subagent 執行的實際持續時間 |2034| `totalDurationMs` | number | `48211` | subagent 執行的實際經過時間 |

2009| `totalToolUseCount` | number | `7` | subagent 進行的工具呼叫次數 |2035| `totalToolUseCount` | number | `7` | subagent 進行的工具呼叫次數 |

2010| `usage` | object | `{"input_tokens": 8320, ...}` | 最後一個 API 請求依類型區分的 token 明細:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |2036| `usage` | object | `{"input_tokens": 8320, ...}` | 最後一個 API 請求的各類型 token 明細:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |

2011 2037 

2012在 Claude Code v2.1.271 或更新版本中,使用 [`SubagentHandback`](/docs/zh-TW/tools-reference) 工具(Claude Code 在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中提供)執行的 subagent,會透過該工具提交報告,而不是以文字傳回。其 `completed` 結果的 `content` 欄位此時攜帶的是關於該移交的簡短說明,而非報告本身。若要讀取報告,請讓 `PreToolUse` 或 `PostToolUse` hook 比對 `SubagentHandback`,並讀取 `tool_input.message`。2038在 Claude Code v2.1.271 或更新版本中,以 [`SubagentHandback`](/docs/zh-TW/tools-reference) 工具執行的 subagent(Claude Code 在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中提供此工具)會透過該工具提交報告,而不是以文字回傳。此時其 `completed` 結果的 `content` 欄位會攜帶一則關於該交回的簡短說明,而非報告本身。若要讀取報告,請讓 `PreToolUse` 或 `PostToolUse` hook 比對 `SubagentHandback`,並讀取 `tool_input.message`。

2013 2039 

2014對於背景 subagent,工具會在任務移至背景時傳回,因此 `tool_response` 不會攜帶用量欄位:背景啟動會立即傳回,而被 Claude Code 在執行途中移至背景的前景任務會在轉換時傳回。它包含 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。2040對於背景 subagent,工具會在任務移至背景時回傳,因此 `tool_response` 不攜帶任何用量欄位:背景啟動會立即回傳,而被 Claude Code 在執行中途移至背景的前景任務則會在該轉換時回傳。它包含 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。

2015 2041 

2016在 `completed` 回應中,`resolvedModel` 指出 subagent 啟動時使用的模型,可能與 `tool_input` 中的 `model` 值不同,例如當 `availableModels` 或其他覆寫套用時。在 `async_launched` 回應中,`resolvedModel` 指出 agent 移至背景時使用中的模型,因此在移至背景之前發生的切換會反映在其中。`modelsUsed` 以及移至背景時的 `resolvedModel` 行為需要 Claude Code v2.1.212 或更新版本。2042在 `completed` 回應中,`resolvedModel` 指的是 subagent 起始使用的模型,可能與 `tool_input` 中的 `model` 值不同,例如套用了 `availableModels` 或其他覆寫時。在 `async_launched` 回應中,`resolvedModel` 指的是 agent 移至背景時所使用的模型,因此在移至背景之前發生的切換會反映在其中。`modelsUsed` 以及移至背景時的 `resolvedModel` 行為需要 Claude Code v2.1.212 或更新版本。

2017 2043 

2018<a id="askuserquestion" />2044<a id="askuserquestion" />

2019 2045 


2021 AskUserQuestion2047 AskUserQuestion

2022</h5>2048</h5>

2023 2049 

2024向使用者提出一到四個選擇題。2050向使用者詢問一到四個多選題。

2025 2051 

2026| 欄位 | 類型 | 範例 | 說明 |2052| 欄位 | 類型 | 範例 | 說明 |

2027| :- | :- | :- | :- |2053| :- | :- | :- | :- |

2028| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | 要呈現的問題,每個問題包含 `question` 字串、簡短的 `header`、`options` 陣列,以及選用的 `multiSelect` 旗標 |2054| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | 要呈現的問題,每個問題包含 `question` 字串、簡短的 `header`、`options` 陣列,以及選用的 `multiSelect` 旗標 |

2029| `answers` | object | `{"Which framework?": "React"}` | 選用。將問題文字對應到所選選項的標籤。多選答案會以逗號連接標籤。Claude 不會設定此欄位;請透過 `updatedInput` 提供以程式化方式回答 |2055| `answers` | object | `{"Which framework?": "React"}` | 選用。將問題文字對應到所選選項的標籤。多選答案會以逗號連接標籤。Claude 不會設定此欄位;若要以程式方式回答,請透過 `updatedInput` 提供 |

2030 2056 

2031<h5 id="exitplanmode">2057<h5 id="exitplanmode">

2032 ExitPlanMode2058 ExitPlanMode

2033</h5>2059</h5>

2034 2060 

2035呈現計畫並請使用者核准,之後 Claude 才會離開 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)。Claude 會在呼叫工具之前將計畫寫入磁碟上的檔案,因此模型提供的原始 `tool_input` 通常是空的。Claude Code 會在將輸入傳給 hook 之前注入計畫內容和檔案路徑。2061呈現計畫,並在 Claude 離開 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 之前請使用者核准。Claude 會在呼叫工具之前將計畫寫入磁碟上的檔案,因此模型傳來的原始 `tool_input` 通常是空的。Claude Code 會在將輸入傳給 hook 之前注入計畫內容和檔案路徑。

2036 2062 

2037| 欄位 | 類型 | 範例 | 說明 |2063| 欄位 | 類型 | 範例 | 說明 |

2038| :- | :- | :- | :- |2064| :- | :- | :- | :- |

2039| `plan` | string | `"## Refactor auth\n1. Extract..."` | Markdown 格式的計畫內容。從磁碟上的計畫檔案注入 |2065| `plan` | string | `"## Refactor auth\n1. Extract..."` | Markdown 格式的計畫內容。從磁碟上的計畫檔案注入 |

2040| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | 計畫檔案的路徑。注入 |2066| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | 計畫檔案的路徑。注入 |

2041| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | 已棄用。Claude Code 接受此欄位但會忽略它。在 v2.1.205 之前,它攜帶 Claude 為實作計畫而請求的基於提示詞的權限 |2067| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | 已棄用。Claude Code 會接受此欄位但予以忽略。在 v2.1.205 之前,它攜帶 Claude 為實作計畫所要求的以提示詞為基礎的權限 |

2042 2068 

2043在 `PostToolUse` 中,`tool_response` 是一個物件,其 `plan` 和 `filePath` 欄位包含已核准的計畫,另外還有內部狀態旗標。請讀取 `tool_response.plan` 以取得計畫內容,而不要從磁碟重新讀取檔案。2069在 `PostToolUse` 中,`tool_response` 是一個物件,其中的 `plan` 和 `filePath` 欄位包含已核准的計畫,另外還有內部狀態旗標。請讀取 `tool_response.plan` 取得計畫內容,而不要從磁碟重新讀取檔案。

2044 2070 

2045<h4 id="pretooluse-decision-control">2071<h4 id="pretooluse-decision-control">

2046 PreToolUse 決策控制2072 PreToolUse 決策控制

2047</h4>2073</h4>

2048 2074 

2049`PreToolUse` hook 可以控制工具呼叫是否繼續。與其他使用頂層 `decision` 欄位的 hook 不同,PreToolUse 會在 `hookSpecificOutput` 物件內傳回其決策。這讓它擁有更豐富的控制:四種結果(允許、拒絕、詢問或延後),以及在執行前修改工具輸入的能力。2075`PreToolUse` hook 可以控制工具呼叫是否繼續。與其他使用頂層 `decision` 欄位的 hook 不同,PreToolUse 會在 `hookSpecificOutput` 物件內回傳其決策。這讓它擁有更豐富的控制:四種結果(允許、拒絕、詢問或延遲),以及在執行前修改工具輸入的能力。

2050 2076 

2051| 欄位 | 說明 |2077| 欄位 | 說明 |

2052| :- | :- |2078| :- | :- |

2053| `permissionDecision` | `"allow"` 會略過權限提示,但[沒有任何模式會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)、[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),以及需要[搭配 `updatedInput`](#allow-with-updatedinput) 的 `AskUserQuestion` 與 `ExitPlanMode` 除外。`"deny"` 會阻止工具呼叫。`"ask"` 會提示使用者確認。`"defer"` 會正常結束,讓工具稍後可以恢復。無論 hook 回傳什麼,[拒絕與詢問規則](/docs/zh-TW/permissions#manage-permissions)仍會被評估 |2079| `permissionDecision` | `"allow"` 會略過權限提示,但[沒有任何模式會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)、[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),以及需要[搭配 `updatedInput`](#allow-with-updatedinput) 的 `AskUserQuestion` 和 `ExitPlanMode` 除外。`"deny"` 會阻止工具呼叫。`"ask"` 會提示使用者確認。`"defer"` 會正常結束,以便稍後恢復該工具。無論 hook 回傳什麼,[拒絕和詢問規則](/docs/zh-TW/permissions#manage-permissions)仍會被評估 |

2054| `permissionDecisionReason` | 對於 `"ask"`,會在權限提示中顯示給使用者。當 Claude Code 在無人能回應該提示的 `-p` 執行中[拒絕呼叫](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)時,Claude 會改在工具結果中讀取該原因。對於 `"deny"`,會顯示給 Claude。對於 `"allow"` 和 `"defer"`,只會寫入[除錯日誌](#debug-hooks) |2080| `permissionDecisionReason` | 對於 `"ask"`,會在權限提示中向使用者顯示。當 Claude Code 在沒有人能回應該提示的 `-p` 執行中[拒絕呼叫](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)時,Claude 會改為在工具結果中讀到原因。對於 `"deny"`,會向 Claude 顯示。對於 `"allow"` 和 `"defer"`,只會寫入[除錯日誌](#debug-hooks) |

2055| `updatedInput` | 在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。Claude Code 會依據您的 hook 傳回的輸入(而非 Claude 傳送的輸入)評估權限規則以及 Bash 命令的[自動移至背景資格](/docs/zh-TW/tools-reference#foreground-commands-that-move-to-the-background)。搭配 `"allow"` 可自動核准,或搭配 `"ask"` 向使用者顯示修改後的輸入。對於 `"defer"` 會被忽略 |2081| `updatedInput` | 在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。Claude Code 會根據您 hook 回傳的輸入(而非 Claude 傳送的輸入)評估權限規則,以及 Bash 命令的[自動移至背景資格](/docs/zh-TW/tools-reference#foreground-commands-that-move-to-the-background)。與 `"allow"` 搭配可自動核准,或與 `"ask"` 搭配向使用者顯示修改後的輸入。對於 `"defer"`,會被忽略 |

2056| `additionalContext` | 與工具結果一同加入 Claude 上下文的字串。當 `permissionDecision` 為 `"defer"` 時會被忽略。請參閱[為 Claude 加入上下文](#add-context-for-claude) |2082| `additionalContext` | 與工具結果一同加入 Claude 情境的字串。當 `permissionDecision` 為 `"defer"` 時會被忽略。請參閱[為 Claude 新增情境](#add-context-for-claude) |

2057 2083 

2058當多個 PreToolUse hook 傳回不同的決策時,優先順序為 `deny` > `defer` > `ask` > `allow`。2084當多個 PreToolUse hook 回傳不同的決策時,優先順序為 `deny` > `defer` > `ask` > `allow`。

2059 2085 

2060以退出碼 2 阻擋的 hook 與 `"deny"` 的處理方式相同:Claude 會將 stderr 訊息視為拒絕原因。2086以退出碼 2 阻擋的 hook,其處理方式與 `"deny"` 相同:Claude 會將 stderr 訊息視為拒絕原因。

2061 2087 

2062當 hook 傳回 `"ask"` 時,顯示給使用者的權限提示會包含一個標示 hook 來源的標籤:來自任何設定檔或 agent frontmatter 的 hook 為 `[settings]`,外掛的 hook 為 `[plugin:<name>]`,來自 skill frontmatter 的 hook 則為 `[skill]`。這可協助使用者了解是哪個設定來源在請求確認。2088當 hook 回傳 `"ask"` 時,向使用者顯示的權限提示會包含一個標籤,指出該 hook 的來源:來自任何設定檔或 agent frontmatter 的 hook 為 `[settings]`,外掛的 hook 為 `[plugin:<name>]`,來自 skill frontmatter 的 hook 則為 `[skill]`。這有助於使用者了解是哪個設定來源在要求確認。

2063 2089 

2064hook 的 `"ask"` 也會在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中強制顯示權限提示:分類器仍可拒絕工具呼叫,但無法在不提示的情況下核准該呼叫。在 v2.1.211 之前,分類器可以在不顯示 hook 所請求之提示的情況下,核准在[沙箱](/docs/zh-TW/sandboxing)外執行的 Bash 命令;分類器仍會對該命令套用自己的安全規則,而 hook 的 `"deny"` 一律會被遵守。2090hook 的 `"ask"` 也會在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中強制顯示權限提示:分類器仍可拒絕工具呼叫,但無法在不提示的情況下核准該呼叫。在 v2.1.211 之前,分類器可以在不顯示 hook 所要求之提示的情況下,核准在[沙箱](/docs/zh-TW/sandboxing)外執行的 Bash 命令;分類器仍會對該命令套用其自身的安全規則,而 hook 的 `"deny"` 一律會被遵守。

2065 2091 

2066```json theme={null}2092```json theme={null}

2067{2093{


2078```2104```

2079 2105 

2080<Note>2106<Note>

2081 PreToolUse 先前使用頂層的 `decision` 和 `reason` 欄位,但這些欄位在此事件中已棄用。請改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。已棄用的值 `"approve"` 和 `"block"` 分別對應到 `"allow"` 和 `"deny"`。PostToolUse 和 Stop 等其他事件仍以頂層的 `decision` 和 `reason` 作為目前的格式。2107 PreToolUse 先前使用頂層的 `decision` 和 `reason` 欄位,但這些欄位在此事件中已棄用。請改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。已棄用的值 `"approve"` 和 `"block"` 分別對應到 `"allow"` 和 `"deny"`。PostToolUse 和 Stop 等其他事件則繼續以頂層 `decision` 和 `reason` 作為其目前的格式。

2082</Note>2108</Note>

2083 2109 

2084<h4 id="allow-with-updatedinput">2110<h4 id="allow-with-updatedinput">

2085 需要使用者互動的工具2111 需要使用者互動的工具

2086</h4>2112</h4>

2087 2113 

2088`AskUserQuestion` 和 `ExitPlanMode` 需要使用者互動。在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中,只有在執行具有可接收提示的[權限主機](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)(例如 Agent SDK 的 `canUseTool` 回呼)時,Claude Code 才會提供這些工具。2114`AskUserQuestion` 和 `ExitPlanMode` 需要使用者互動。在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中,只有當執行具有可接收提示的[權限主機](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)(例如 Agent SDK 的 `canUseTool` 回呼)時,Claude Code 才會提供這些工具。

2089 2115 

2090當 `PreToolUse` hook 執行下列動作時,即可滿足該需求:2116`PreToolUse` hook 在執行下列動作時即可滿足該需求:

2091 2117 

20921. 從 stdin 讀取工具的輸入21181. 從 stdin 讀取工具的輸入

20932. 透過您自己的 UI 收集答案21192. 透過您自己的 UI 收集答案

20943. 傳回 `permissionDecision: "allow"`,並搭配包含答案的 `updatedInput`,讓工具在不提示的情況下執行21203. 回傳 `permissionDecision: "allow"`,並搭配包含答案的 `updatedInput`,讓工具在不提示的情況下執行

2095 2121 

2096對這些工具而言,僅傳回 `"allow"` 是不夠的。2122對於這些工具,僅回傳 `"allow"` 是不夠的。

2097 2123 

2098對於 `AskUserQuestion`,請回傳原始的 `questions` 陣列,並加入一個 [`answers`](#askuserquestion) 物件,將每個問題的文字對應到所選答案。此輸出以 `React` 回答一個問題:2124對於 `AskUserQuestion`,請回傳原始的 `questions` 陣列,並新增一個 [`answers`](#askuserquestion) 物件,將每個問題的文字對應到所選答案。此輸出以 `React` 回答一個問題:

2099 2125 

2100```json theme={null}2126```json theme={null}

2101{2127{


2117}2143}

2118```2144```

2119 2145 

2120伺服器以 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 標記的 MCP 工具則更為嚴格:無論是否搭配 `updatedInput`,hook 都無法以 `"allow"` 略過其核准提示,因為 Claude Code 無法確認 hook 已收集到該工具所需的互動。2146伺服器以 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 標記的 MCP 工具則更為嚴格:hook 無法以 `"allow"` 略過其核准提示,無論是否搭配 `updatedInput`,因為 Claude Code 無法確認 hook 已收集到該工具所需的互動。

2121 2147 

2122<h4 id="defer-a-tool-call-for-later">2148<h4 id="defer-a-tool-call-for-later">

2123 延後工具呼叫2149 將工具呼叫延遲到稍後

2124</h4>2150</h4>

2125 2151 

2126`"defer"` 適用於以子程序方式執行 `claude -p` 並讀取其 JSON 輸出的整合,例如 Agent SDK 應用程式或建構在 Claude Code 之上的自訂 UI。它讓呼叫端程序可以在工具呼叫處暫停 Claude、透過自己的介面收集輸入,然後從中斷處恢復。Claude Code 只在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中採用此值。在互動式工作階段中,它會記錄警告並忽略 hook 結果。2152`"defer"` 適用於以子程序方式執行 `claude -p` 並讀取其 JSON 輸出的整合,例如 Agent SDK 應用程式或建構在 Claude Code 之上的自訂 UI。它讓呼叫端程序可以在工具呼叫處暫停 Claude、透過自己的介面收集輸入,然後從中斷處恢復。Claude Code 只在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中遵守此值。在互動式工作階段中,它會記錄警告並忽略 hook 結果。

2127 2153 

2128`AskUserQuestion` 工具是典型的情況:Claude 想詢問使用者某件事,但沒有終端機可以回答。`-p` 執行只有在具有[權限主機](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)(例如您以 `--permission-prompt-tool` 傳入的 MCP 工具)時才會提供 `AskUserQuestion`,因此請以權限主機啟動執行。往返流程如下:2154`AskUserQuestion` 工具是典型的情況:Claude 想詢問使用者某件事,但沒有終端機可供回答。`-p` 執行只有在具有[權限主機](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)時才會提供 `AskUserQuestion`,例如您以 `--permission-prompt-tool` 傳入的 MCP 工具,因此請以此方式啟動執行。來回流程如下:

2129 2155 

21301. Claude 呼叫 `AskUserQuestion`。`PreToolUse` hook 觸發。21561. Claude 呼叫 `AskUserQuestion`。`PreToolUse` hook 觸發。

21312. hook 傳回 `permissionDecision: "defer"`。工具不會執行。程序以 `stop_reason: "tool_deferred"` 結束,待處理的工具呼叫保留在逐字稿中。21572. hook 回傳 `permissionDecision: "defer"`。工具不會執行。程序以 `stop_reason: "tool_deferred"` 結束,待處理的工具呼叫保留在逐字稿中。

21323. 呼叫端程序從 SDK 結果中讀取 `deferred_tool_use`,在自己的 UI 中呈現問題,並等待答案。21583. 呼叫端程序從 SDK 結果讀取 `deferred_tool_use`,在自己的 UI 中呈現問題,並等待答案。

21334. 呼叫端程序以相同的權限主機執行 `claude -p --resume <session-id>`。同一個工具呼叫再次觸發 `PreToolUse`。21594. 呼叫端程序以相同的權限主機執行 `claude -p --resume <session-id>`。同一個工具呼叫再次觸發 `PreToolUse`。

21345. hook 傳回 `permissionDecision: "allow"`,並在 `updatedInput` 中附上答案。工具執行,Claude 繼續。21605. hook 回傳 `permissionDecision: "allow"`,並在 `updatedInput` 中附上答案。工具執行,Claude 繼續。

2135 2161 

2136`deferred_tool_use` 欄位攜帶工具的 `id`、`name` 和 `input`。`input` 是 Claude 為工具呼叫產生的參數,在執行前擷取:2162`deferred_tool_use` 欄位攜帶工具的 `id`、`name` 和 `input`。`input` 是 Claude 為該工具呼叫產生的參數,在執行前擷取:

2137 2163 

2138```json theme={null}2164```json theme={null}

2139{2165{


2149}2175}

2150```2176```

2151 2177 

2152沒有逾時或重試次數限制。工作階段會保留在磁碟上直到您恢復它,但受 [`cleanupPeriodDays`](/docs/zh-TW/settings-reference#cleanupperioddays) 保留清理的約束,該清理預設會在 30 天後依照[保留清理規則](/docs/zh-TW/claude-directory#cleaned-up-automatically)刪除工作階段檔案。如果在您恢復時答案尚未準備好,hook 可以再次傳回 `"defer"`,程序會以相同方式結束。呼叫端程序最終透過 hook 傳回 `"allow"` 或 `"deny"` 來決定何時結束迴圈。2178沒有逾時或重試次數限制。工作階段會保留在磁碟上直到您恢復它,但受 [`cleanupPeriodDays`](/docs/zh-TW/settings-reference#cleanupperioddays) 保留期清理的約束,該清理預設會在 30 天後依照[保留期清理規則](/docs/zh-TW/claude-directory#cleaned-up-automatically)刪除工作階段檔案。若恢復時答案尚未準備好,hook 可以再次回傳 `"defer"`,程序會以相同方式結束。呼叫端程序最終從 hook 回傳 `"allow"` 或 `"deny"`,藉此控制何時跳出迴圈。

2153 2179 

2154`"defer"` 只在 Claude 於該回合中進行單一工具呼叫時有效。如果 Claude 一次進行多個工具呼叫,`"defer"` 會被忽略並發出警告,工具則透過一般權限流程繼續進行。此限制的存在是因為恢復時只能重新執行一個工具:無法在不讓其他呼叫處於未解決狀態的情況下,延後一批呼叫中的某一個。2180`"defer"` 只在 Claude 於該回合中進行單一工具呼叫時有效。若 Claude 同時進行多個工具呼叫,`"defer"` 會被忽略並顯示警告,工具則會經由一般的權限流程繼續。此限制的原因在於恢復時只能重新執行一個工具:無法在不讓其他呼叫懸而未決的情況下,延遲一批呼叫中的其中一個。

2155 2181 

2156如果在您恢復時延後的工具已無法使用,程序會在 hook 觸發前以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 結束。當提供該工具的 MCP 伺服器未在恢復的工作階段中連線時,就會發生這種情況。`deferred_tool_use` payload 仍會包含在內,讓您可以識別是哪個工具遺失了。2182若恢復時延遲的工具已不可用,程序會在 hook 觸發前以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 結束。當提供該工具的 MCP 伺服器在恢復的工作階段中未連線時,就會發生這種情況。`deferred_tool_use` payload 仍會包含在內,讓您能辨識是哪個工具遺失了。

2157 2183 

2158<Note>2184<Note>

2159 若要在 plan mode 中恢復延後的工作階段,請將 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 與 `--resume` 一起傳入,讓 Claude Code 能呈現計畫以供核准。其他條件請參閱[以 `-p` 在 plan mode 中恢復](/docs/zh-TW/sessions#resume-in-plan-mode-with-p)。需要 Claude Code v2.1.246 或更新版本。2185 若要在 plan mode 中恢復延遲的工作階段,請將 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 與 `--resume` 一起傳入,讓 Claude Code 能呈現計畫以供核准。其他條件請參閱[以 `-p` 在 plan mode 中恢復](/docs/zh-TW/sessions#resume-in-plan-mode-with-p)。需要 Claude Code v2.1.246 或更新版本。

2160 2186 

2161 當您以 `-p` 恢復時,Claude Code 不會還原任何其他已儲存的權限模式。它會以新的 `claude -p` 執行所使用的權限模式啟動執行,因此如果延後的工作階段使用了 `--permission-mode` 或 `--dangerously-skip-permissions`,請再次傳入。當您以不含 `-p` 的 `claude --resume <session-id>` 恢復時,Claude Code 會還原已儲存的權限模式,例外情況列於[恢復時的權限模式](/docs/zh-TW/sessions#permission-mode-on-resume)。2187 當您以 `-p` 恢復時,Claude Code 不會還原任何其他已儲存的權限模式。它會以新的 `claude -p` 執行所使用的權限模式啟動,因此若延遲的工作階段使用了 `--permission-mode` 或 `--dangerously-skip-permissions`,請再次傳入。當您不使用 `-p`、以 `claude --resume <session-id>` 恢復時,Claude Code 會還原已儲存的權限模式,例外情況列於[恢復時的權限模式](/docs/zh-TW/sessions#permission-mode-on-resume)。

2162</Note>2188</Note>

2163 2189 

2164<h3 id="permissionrequest">2190<h3 id="permissionrequest">

2165 PermissionRequest2191 PermissionRequest

2166</h3>2192</h3>

2167 2193 

2168在 Claude Code 即將向您請求使用工具的權限時執行。在無法顯示提示的工作階段中,例如[非互動模式](/docs/zh-TW/headless)中的背景 subagent,Claude Code 仍會執行這些 hook,而如果沒有任何 hook 傳回決策,它會拒絕該工具呼叫。對於送達 `--permission-prompt-tool` 或 Agent SDK [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/permissions)的呼叫,hook 會與您的主機並行執行,以先做出決定者為準。2194在 Claude Code 即將向您要求使用工具的權限時執行。在無法顯示提示的工作階段中,例如[非互動模式](/docs/zh-TW/headless)中的背景 subagent,Claude Code 仍會執行這些 hook,若沒有 hook 回傳決策,它會拒絕該工具呼叫。對於傳達到 `--permission-prompt-tool` 或 Agent SDK 的 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/permissions)的呼叫,hook 會與您的主機並行執行,並以先做出決定者為準。

2169使用 [PermissionRequest 決策控制](#permissionrequest-decision-control)代表使用者允許或拒絕。2195使用 [PermissionRequest 決策控制](#permissionrequest-decision-control)代表使用者允許或拒絕。

2170 2196 

2171當您需要在 Claude 請求使用工具權限的當下取得訊號時,請使用此事件。Claude Code 只會在提示等待約六秒之後,才執行 `permission_prompt` 類型的 [Notification](#notification) hook。2197當您需要在 Claude 要求使用工具權限的當下取得訊號時,請使用此事件。Claude Code 只會在提示已等待約六秒後,才執行 `permission_prompt` 類型的 [Notification](#notification) hook。

2172 2198 

2173Claude Code 不會針對沙箱化命令的[網路請求](/docs/zh-TW/sandboxing#network-isolation)執行 PermissionRequest hook。若要取得該提示的訊號,請使用 `permission_prompt` 通知類型。2199Claude Code 不會針對沙箱化命令的[網路請求](/docs/zh-TW/sandboxing#network-isolation)執行 PermissionRequest hook。若要取得該提示的訊號,請使用 `permission_prompt` 通知類型。

2174 2200 


2178 PermissionRequest 輸入2204 PermissionRequest 輸入

2179</h4>2205</h4>

2180 2206 

2181PermissionRequest hook 與 PreToolUse hook 一樣會接收 `tool_name` 和 `tool_input` 欄位,但沒有 `tool_use_id`。對於 MCP 工具,它們也會接收 [`mcp_server`](#pretooluse-input) 物件。選用的 `permission_suggestions` 陣列包含 Claude Code 針對此請求建議的[權限更新](#permission-update-entries),例如新增允許規則或變更權限模式。2207PermissionRequest hook 會接收 `tool_name` 與 `tool_input` 欄位,與 PreToolUse hook 相同,但不含 `tool_use_id`。對於 MCP 工具,它們也會接收 [`mcp_server`](#pretooluse-input) 物件。選用的 `permission_suggestions` 陣列包含 Claude Code 針對此請求建議的[權限更新](#permission-update-entries),例如新增允許規則或變更權限模式。

2182 2208 

2183`permission_suggestions` 陣列並不是您所看到選項的確切清單,因為每個權限對話方塊都會建立自己的選項。某些對話方塊(例如檔案編輯的對話方塊)完全不讀取此陣列,而是從請求本身衍生選項。會讀取此陣列的對話方塊仍可能隱藏某個其建議仍保留在陣列中的選項,例如當 [`allowManagedPermissionRulesOnly`](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly) 隱藏儲存規則的選項時。它也可能提供沒有對應建議項目的選項,例如 [**Yes, and switch to auto mode**](/docs/zh-TW/permission-modes#switch-permission-modes),它會直接變更權限模式,而不是透過權限更新。2209`permission_suggestions` 陣列並非您所看到選項的精確清單,因為每個權限對話框會自行建構其選項。有些對話框(例如用於檔案編輯的對話框)完全不讀取此陣列,而是從請求本身推導出選項。會讀取此陣列的對話框,仍可能隱藏某個建議仍保留在陣列中的選項,例如當 [`allowManagedPermissionRulesOnly`](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly) 隱藏儲存規則的選項時。它也可能提供沒有對應建議項目的選項,例如 [**Yes, and switch to auto mode**](/docs/zh-TW/permission-modes#switch-permission-modes),此選項會直接變更權限模式,而非透過權限更新。

2184 2210 

2185PreToolUse hook 會在每次工具呼叫之前執行,無論是否需要權限。PermissionRequest hook 只在 Claude Code 即將向您請求權限時執行,或在它原本會自動拒絕無法提示的呼叫時執行。這兩個事件都不會針對 [`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior) 觸發。2211PreToolUse hook 會在每次工具呼叫之前執行,無論是否需要權限。PermissionRequest hook 只會在 Claude Code 即將向您請求權限時執行,或在它原本會自動拒絕某個無法提示的呼叫時執行。這兩個事件都不會針對 [`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior) 觸發。

2186 2212 

2187```json theme={null}2213```json theme={null}

2188{2214{


2211 PermissionRequest 決策控制2237 PermissionRequest 決策控制

2212</h4>2238</h4>

2213 2239 

2214`PermissionRequest` hook 可以允許或拒絕權限請求。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以傳回包含下列事件專屬欄位的 `decision` 物件:2240`PermissionRequest` hook 可以允許或拒絕權限請求。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以回傳包含以下事件專屬欄位的 `decision` 物件:

2215 2241 

2216| 欄位 | 說明 |2242| 欄位 | 說明 |

2217| :- | :- |2243| :- | :- |

2218| `behavior` | `"allow"` 授予權限,`"deny"` 拒絕權限。[拒絕和詢問規則](/docs/zh-TW/permissions#manage-permissions)仍會被評估,因此傳回 `"allow"` 的 hook 不會覆寫相符的拒絕規則 |2244| `behavior` | `"allow"` 授予權限,`"deny"` 拒絕權限。[拒絕與詢問規則](/docs/zh-TW/permissions#manage-permissions)仍會被評估,因此回傳 `"allow"` 的 hook 不會覆寫相符的拒絕規則 |

2219| `updatedInput` | 僅適用於 `"allow"`:在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。修改後的輸入會再次依據拒絕和詢問規則評估 |2245| `updatedInput` | 僅適用於 `"allow"`:在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。修改後的輸入會再次依據拒絕與詢問規則進行評估 |

2220| `updatedPermissions` | 僅適用於 `"allow"`:要套用的[權限更新項目](#permission-update-entries)陣列,例如新增允許規則或變更工作階段權限模式 |2246| `updatedPermissions` | 僅適用於 `"allow"`:要套用的[權限更新項目](#permission-update-entries)陣列,例如新增允許規則或變更工作階段的權限模式 |

2221| `message` | 僅適用於 `"deny"`:告訴 Claude 權限被拒絕的原因 |2247| `message` | 僅適用於 `"deny"`:告訴 Claude 權限被拒絕的原因 |

2222| `interrupt` | 僅適用於 `"deny"`:若為 `true`,則停止 Claude |2248| `interrupt` | 僅適用於 `"deny"`:若為 `true`,則停止 Claude |

2223 2249 

2224以退出碼 2 結束但沒有 `decision` 物件的 hook 不會改變權限流程,其 stderr 會被捨棄。若要授予或拒絕請求,請回傳 `decision` 物件。2250以退出碼 2 結束但未提供 `decision` 物件的 hook 不會改變權限流程,且其 stderr 會被捨棄。若要授予或拒絕請求,請回傳 `decision` 物件。

2225 2251 

2226```json theme={null}2252```json theme={null}

2227{2253{


2241 權限更新項目2267 權限更新項目

2242</h4>2268</h4>

2243 2269 

2244`updatedPermissions` 輸出欄位與 [`permission_suggestions` 輸入欄位](#permissionrequest-input)都使用相同的項目物件陣列。每個項目都有一個 `type`,用來決定其他欄位,以及一個 `destination`,用來控制變更寫入的位置。2270`updatedPermissions` 輸出欄位與 [`permission_suggestions` 輸入欄位](#permissionrequest-input)都使用相同的項目物件陣列。每個項目都有一個決定其他欄位的 `type`,以及一個控制變更寫入位置的 `destination`。

2245 2271 

2246| `type` | 欄位 | 效果 |2272| `type` | 欄位 | 效果 |

2247| :- | :- | :- |2273| :- | :- | :- |

2248| `addRules` | `rules`、`behavior`、`destination` | 新增權限規則。`rules` 是由 `{toolName, ruleContent?}` 物件組成的陣列。省略 `ruleContent` 即可比對整個工具。`behavior` 為 `"allow"`、`"deny"` 或 `"ask"` |2274| `addRules` | `rules`、`behavior`、`destination` | 新增權限規則。`rules` 是 `{toolName, ruleContent?}` 物件的陣列。省略 `ruleContent` 即可比對整個工具。`behavior` 為 `"allow"`、`"deny"` 或 `"ask"` |

2249| `replaceRules` | `rules`、`behavior`、`destination` | 以提供的 `rules` 取代 `destination` 中指定 `behavior` 的所有規則 |2275| `replaceRules` | `rules`、`behavior`、`destination` | 以提供的 `rules` 取代 `destination` 中指定 `behavior` 的所有規則 |

2250| `removeRules` | `rules`、`behavior`、`destination` | 移除指定 `behavior` 中相符的規則 |2276| `removeRules` | `rules`、`behavior`、`destination` | 移除指定 `behavior` 的相符規則 |

2251| `setMode` | `mode`、`destination` | 變更權限模式。有效的模式為 `default`、`auto`、`acceptEdits`、`dontAsk`、`bypassPermissions`、`plan`,以及作為 `default` 別名的 `manual` |2277| `setMode` | `mode`、`destination` | 變更權限模式。有效的模式為 `default`、`auto`、`acceptEdits`、`dontAsk`、`bypassPermissions`、`plan`,以及作為 `default` 別名的 `manual` |

2252| `addDirectories` | `directories`、`destination` | 新增工作目錄。`directories` 是由路徑字串組成的陣列 |2278| `addDirectories` | `directories`、`destination` | 新增工作目錄。`directories` 是路徑字串的陣列 |

2253| `removeDirectories` | `directories`、`destination` | 移除工作目錄 |2279| `removeDirectories` | `directories`、`destination` | 移除工作目錄 |

2254 2280 

2255<Note>2281<Note>

2256 只有在啟動工作階段時已可使用略過模式的情況下,帶有 `bypassPermissions` 的 `setMode` 才會生效:`--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions`,或是在[使用者設定、`--settings` 或受管設定](/docs/zh-TW/settings-reference#permissions-defaultmode)中設定 `permissions.defaultMode: "bypassPermissions"`。否則此更新不會產生任何作用。當 [`permissions.disableBypassPermissionsMode`](/docs/zh-TW/permissions#managed-settings) 停用該模式,或工作階段以[受限模式](/docs/zh-TW/cli-reference#cli-flags)啟動時,此更新同樣不會產生任何作用。2282 帶有 `bypassPermissions` 的 `setMode` 只有在您啟動工作階段時已可使用略過模式的情況下才會生效:`--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions`,或在[使用者、`--settings` 或受管設定](/docs/zh-TW/settings-reference#permissions-defaultmode)中設定 `permissions.defaultMode: "bypassPermissions"`。否則此更新不會產生任何作用。當 [`permissions.disableBypassPermissionsMode`](/docs/zh-TW/permissions#managed-settings) 停用此模式,或工作階段以[受限模式](/docs/zh-TW/cli-reference#cli-flags)啟動時,此更新同樣不會產生任何作用。

2257 2283 

2258 無論 `destination` 為何,`bypassPermissions` 都不會被保存為 `defaultMode`。2284 無論 `destination` 為何,`bypassPermissions` 都不會被保存為 `defaultMode`。

2259</Note>2285</Note>


2262 2288 

2263| `destination` | 寫入位置 |2289| `destination` | 寫入位置 |

2264| :- | :- |2290| :- | :- |

2265| `session` | 僅存在於記憶體中,工作階段結束時捨棄 |2291| `session` | 僅在記憶體中,工作階段結束時捨棄 |

2266| `localSettings` | `.claude/settings.local.json` |2292| `localSettings` | `.claude/settings.local.json` |

2267| `projectSettings` | `.claude/settings.json` |2293| `projectSettings` | `.claude/settings.json` |

2268| `userSettings` | `~/.claude/settings.json` |2294| `userSettings` | `~/.claude/settings.json` |

2269 2295 

2270hook 可以將收到的其中一個 `permission_suggestions` 原樣回傳,作為自己的 `updatedPermissions` 輸出。2296hook 可以將其接收到的其中一個 `permission_suggestions` 作為自己的 `updatedPermissions` 輸出回傳。

2271 2297 

2272<h3 id="posttooluse">2298<h3 id="posttooluse">

2273 PostToolUse2299 PostToolUse


2275 2301 

2276在工具成功完成後立即執行。2302在工具成功完成後立即執行。

2277 2303 

2278依工具名稱比對,可用值與 PreToolUse 相同。2304依工具名稱比對,值與 PreToolUse 相同。

2279 2305 

2280當工具名稱不是適合的篩選條件時,可以更廣泛地比對:2306當工具名稱不是合適的篩選條件時,可使用更廣泛的比對方式:

2281 2307 

2282* 若要在任何工具成功完成後執行 hook,請省略 `matcher` 或將其設為 `"*"`。接著您的 hook 可以自行找出變更內容,例如執行 `git status --porcelain`,它也會列出 `git diff` 遺漏的未追蹤檔案。對於失敗的工具呼叫,請在 [PostToolUseFailure](#posttoolusefailure) 下新增相同的 hook。2308* 若要在任何工具成功完成後執行 hook,請省略 `matcher` 或將其設為 `"*"`。接著您的 hook 可以自行找出變更內容,例如執行 `git status --porcelain`,它也會列出 `git diff` 遺漏的未追蹤檔案。對於失敗的工具呼叫,請在 [PostToolUseFailure](#posttoolusefailure) 下加入相同的 hook。

2283* 若要在特定檔案於磁碟上變更時執行 hook(無論是誰寫入的),請使用 [FileChanged](#filechanged)。當 `Bash` 命令或 Claude Code 之外的程序重寫同一個檔案時,Claude Code 不會執行比對 `Edit|Write` 的 `PostToolUse` hook。2309* 若要在特定檔案於磁碟上變更時執行 hook(不論是由誰寫入),請使用 [FileChanged](#filechanged)。當 `Bash` 命令或 Claude Code 以外的程序重寫同一個檔案時,Claude Code 不會執行比對 `Edit|Write` 的 `PostToolUse` hook。

2284 2310 

2285<h4 id="posttooluse-input">2311<h4 id="posttooluse-input">

2286 PostToolUse 輸入2312 PostToolUse 輸入

2287</h4>2313</h4>

2288 2314 

2289`PostToolUse` hook 會在工具已成功執行後觸發。輸入同時包含 `tool_input`(傳送給工具的引數)與 `tool_response`(工具回傳的結果)。兩者的確切 schema 取決於工具。檔案工具的 `tool_input` 路徑格式與 [PreToolUse](#pretooluse-input) 相同:一律為絕對路徑,並使用平台原生的分隔符號,因此在 Windows 上為反斜線。若為 MCP 工具,輸入中也會帶有 [`mcp_server`](#pretooluse-input) 物件。2315`PostToolUse` hook 會在工具已成功執行後觸發。輸入同時包含 `tool_input`(傳送給工具的引數)與 `tool_response`(工具回傳的結果)。兩者的確切 schema 取決於工具。檔案工具的 `tool_input` 路徑格式與 [PreToolUse](#pretooluse-input) 相同:一律為絕對路徑,並使用平台原生的分隔符號,因此在 Windows 上為反斜線。對於 MCP 工具,輸入也會攜帶 [`mcp_server`](#pretooluse-input) 物件。

2290 2316 

2291```json theme={null}2317```json theme={null}

2292{2318{


2311 2337 

2312| 欄位 | 說明 |2338| 欄位 | 說明 |

2313| :- | :- |2339| :- | :- |

2314| `duration_ms` | 選用。工具執行時間(毫秒)。不包含權限提示與 PreToolUse hook 所花費的時間 |2340| `duration_ms` | 選用。工具執行時間(毫秒)。不包含花在權限提示與 PreToolUse hook 上的時間 |

2315 2341 

2316<h4 id="posttooluse-decision-control">2342<h4 id="posttooluse-decision-control">

2317 PostToolUse 決策控制2343 PostToolUse 決策控制

2318</h4>2344</h4>

2319 2345 

2320`PostToolUse` hook 可以在工具執行後向 Claude 提供回饋。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,您的 hook 指令碼還可以回傳下列事件專屬欄位:2346`PostToolUse` hook 可以在工具執行後向 Claude 提供回饋。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以回傳以下事件專屬欄位:

2321 2347 

2322| 欄位 | 說明 |2348| 欄位 | 說明 |

2323| :- | :- |2349| :- | :- |

2324| `decision` | `"block"` 會將 `reason` 附加在工具結果旁。Claude 仍會看到原始輸出;若要取代它,請使用 `updatedToolOutput` |2350| `decision` | `"block"` 會在工具結果旁加入 `reason`。Claude 仍會看到原始輸出;若要取代輸出,請使用 `updatedToolOutput` |

2325| `reason` | 當 `decision` 為 `"block"` 時向 Claude 顯示的說明 |2351| `reason` | 當 `decision` 為 `"block"` 時向 Claude 顯示的說明 |

2326| `additionalContext` | 與工具結果一起加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |2352| `additionalContext` | 與工具結果一併加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |

2327| `classifierContext` | 針對此次呼叫結果的簡短註記,提供給[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器而非 Claude。請參閱[為自動模式分類器註記結果](#annotate-a-result-for-the-auto-mode-classifier)。需要 Claude Code v2.1.236 或更新版本 |2353| `classifierContext` | 關於此呼叫結果的簡短註記,提供給[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器而非 Claude。請參閱[為自動模式分類器註記結果](#annotate-a-result-for-the-auto-mode-classifier)。需要 Claude Code v2.1.236 或更新版本 |

2328| `updatedToolOutput` | 在工具輸出傳送給 Claude 之前,以提供的值取代該輸出。此值必須符合工具的輸出結構 |2354| `updatedToolOutput` | 在將工具輸出傳送給 Claude 之前,以提供的值取代。該值必須符合工具的輸出結構 |

2329| `updatedMCPToolOutput` | 僅取代 [MCP 工具](#match-mcp-tools)的輸出。建議改用適用於所有工具的 `updatedToolOutput` |2355| `updatedMCPToolOutput` | 僅取代 [MCP 工具](#match-mcp-tools)的輸出。建議改用適用於所有工具的 `updatedToolOutput` |

2330 2356 

2331以下範例會取代 `Bash` 呼叫的輸出。取代值符合 `Bash` 工具的輸出結構:2357以下範例取代了 `Bash` 呼叫的輸出。取代值符合 `Bash` 工具的輸出結構:

2332 2358 

2333```json theme={null}2359```json theme={null}

2334{2360{


2346```2372```

2347 2373 

2348<Warning>2374<Warning>

2349 `updatedToolOutput` 只會改變 Claude 看到的內容。hook 觸發時工具已經執行完畢,因此任何已寫入的檔案、已執行的命令或已傳送的網路請求都已經生效。OpenTelemetry 工具 span 與分析事件等遙測資料也會在 hook 執行前擷取原始輸出。若要在工具呼叫執行前阻止或修改它,請改用 [PreToolUse](#pretooluse) hook。2375 `updatedToolOutput` 只會改變 Claude 看到的內容。在 hook 觸發時工具早已執行,因此任何寫入的檔案、執行的命令或傳送的網路請求都已生效。OpenTelemetry 工具 span 與分析事件等遙測資料也會在 hook 執行前擷取原始輸出。若要在工具呼叫執行前加以阻止或修改,請改用 [PreToolUse](#pretooluse) hook。

2350 2376 

2351 取代值必須符合工具的輸出結構。內建工具回傳的是結構化物件,而非純字串。例如,`Bash` 回傳的物件包含 `stdout`、`stderr`、`interrupted` 與 `isImage` 欄位。對於內建工具,不符合工具輸出 schema 的值會被忽略,並改用原始輸出。MCP 工具的輸出則會直接傳遞,不經 schema 驗證。移除 Claude 需要的錯誤細節,可能導致它基於錯誤的假設繼續進行。2377 取代值必須符合工具的輸出結構。內建工具回傳的是結構化物件而非純字串。例如,`Bash` 回傳的物件包含 `stdout`、`stderr`、`interrupted` 與 `isImage` 欄位。對於內建工具,不符合工具輸出 schema 的值會被忽略,並改用原始輸出。MCP 工具的輸出會直接傳遞,不進行 schema 驗證。移除 Claude 所需的錯誤細節,可能導致它基於錯誤的假設繼續進行。

2352</Warning>2378</Warning>

2353 2379 

2354<h4 id="annotate-a-result-for-the-auto-mode-classifier">2380<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2355 為自動模式分類器註記結果2381 為自動模式分類器註記結果

2356</h4>2382</h4>

2357 2383 

2358回傳 `classifierContext`,即可將關於工具呼叫結果的簡短註記傳送給[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器,而非傳送給 Claude。分類器[永遠不會收到工具結果本身](/docs/zh-TW/permission-modes#how-the-classifier-evaluates-actions),因此這個欄位是在分類器審查後續動作之前,告知它某次呼叫回傳了什麼的受支援方式。此欄位需要 Claude Code v2.1.236 或更新版本。2384回傳 `classifierContext`,即可將關於工具呼叫結果的簡短註記傳送給[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器,而非傳送給 Claude。分類器[永遠不會接收工具結果本身](/docs/zh-TW/permission-modes#how-the-classifier-evaluates-actions),因此此欄位是在分類器審查後續動作之前,告知它呼叫回傳內容的受支援方式。此欄位需要 Claude Code v2.1.236 或更新版本。

2359 2385 

2360以下範例告知分類器某個查詢輸出的來源:2386以下範例告訴分類器查詢輸出的來源:

2361 2387 

2362```json theme={null}2388```json theme={null}

2363{2389{


2368}2394}

2369```2395```

2370 2396 

2371分類器對此註記的重視程度,取決於您在何處設定該 hook:2397分類器對該註記的重視程度,取決於您在何處設定 hook:

2372 2398 

2373* **在 Claude Code 中設定的 hook**:對於來自設定檔、外掛、skill 與 agent frontmatter 的 hook,分類器會將註記視為未經驗證、由應用程式提供的上下文。註記永遠不會確立使用者意圖;若註記聲稱您核准或要求了某件事,分類器會將該聲明與您在對話中的實際訊息進行核對2399* **在 Claude Code 中設定的 hook**:對於來自設定檔、外掛、skill 與 agent frontmatter 的 hook,分類器會將註記視為未經驗證、由應用程式提供的上下文。註記永遠無法確立使用者意圖;若註記聲稱您核准或要求了某件事,分類器會將該聲明與您在對話中的訊息進行比對

2374* **程序內的 Agent SDK 回呼**:當嵌入 Claude Code 的應用程式將 hook 註冊為 [TypeScript SDK 回呼](/docs/zh-TW/agent-sdk/hooks),並在即時工作階段期間回傳註記時,分類器可能會將註記中轉述的使用者陳述視為使用者意圖。這類陳述可以滿足分類器原本會接受來自您訊息的同意要求,但它永遠無法解除您自己的訊息也無法解除的封鎖。工作階段恢復後,Claude Code 會將還原的註記視為未經驗證的上下文。當兩類來源的 hook 都為同一次呼叫加上註記時,分類器會將合併後的註記視為未經驗證2400* **程序內的 Agent SDK 回呼**:當嵌入 Claude Code 的應用程式將 hook 註冊為 [TypeScript SDK 回呼](/docs/zh-TW/agent-sdk/hooks),並在即時工作階段期間回傳註記時,分類器可能會將註記中轉述的使用者陳述視為使用者意圖。此類陳述可以滿足分類器原本會接受您所傳送訊息作為依據的同意要求,但永遠無法解除您自己的訊息也無法解除的封鎖。工作階段恢復後,Claude Code 會將還原的註記視為未經驗證的上下文。當兩類 hook 都對同一個呼叫進行註記時,分類器會將合併後的註記視為未經驗證

2375 2401 

2376Claude Code 在傳遞註記時會套用下列限制:2402Claude Code 在傳遞註記時會套用以下限制:

2377 2403 

2378* **長度**:Claude Code 將單一工具呼叫的註記上限設為 2,000 個字元,超出部分會被截斷。此上限由回應該呼叫的所有 hook 共用2404* **長度**:Claude Code 將單一工具呼叫的註記上限設為 2,000 個字元,並截斷其餘部分。此上限由回應該呼叫的所有 hook 共用

2379* **僅限同步回應**:對於[在背景執行](#run-hooks-in-the-background)的 hook,Claude Code 會忽略其回應中的此欄位,因為該回應會在 Claude Code 記錄工具結果之後才抵達2405* **僅限同步回應**:Claude Code 會忽略[在背景執行](#run-hooks-in-the-background)之 hook 回應中的此欄位,因為該回應會在 Claude Code 記錄工具結果之後才抵達

2380* **分類器不記錄的呼叫**:分類器的逐字稿會省略唯讀查詢,例如檔案讀取與搜尋。附加在這類呼叫上的註記會被 Claude Code 捨棄2406* **分類器不記錄的呼叫**:分類器的逐字稿會省略唯讀查詢,例如檔案讀取與搜尋。附加在這些呼叫上的註記會被 Claude Code 捨棄

2381* **與改寫的互動**:當註記描述的是您以 `updatedToolOutput` 取代的輸出時,請在同一個 hook 回應中回傳這兩個欄位。若該改寫遭到拒絕,或被另一個 hook 的改寫取代,Claude Code 會捨棄該註記。若您回傳註記時未搭配改寫,即使另一個 hook 改寫了輸出,Claude Code 仍會傳遞該註記2407* **與重寫的互動**:當註記描述的是您以 `updatedToolOutput` 取代的輸出時,請在同一個 hook 回應中同時回傳這兩個欄位。若該重寫遭拒或被其他 hook 的重寫取代,Claude Code 會捨棄該註記。若您回傳註記時未進行重寫,即使有其他 hook 重寫了輸出,Claude Code 仍會傳遞該註記

2382 2408 

2383<Warning>2409<Warning>

2384 分類器會將您放在 `classifierContext` 中的內容視為來自託管該工作階段之應用程式的資訊,因此請勿將不受信任的工具輸出或第三方文字複製到其中。請將註記限定為關於這一次呼叫的簡短斷言,例如關於其來源的事實,或使用者對此呼叫的陳述;請勿使用此欄位傳遞無關的訊息或一連串事件。2410 分類器會將您放入 `classifierContext` 的內容視為來自承載工作階段之應用程式的資訊,因此請勿將不受信任的工具輸出或第三方文字複製到其中。請將註記限縮為關於此單一呼叫的簡短陳述,例如其來源的事實或使用者對其的陳述;請勿使用此欄位傳遞不相關的訊息或一連串事件。

2385</Warning>2411</Warning>

2386 2412 

2387<h3 id="posttoolusefailure">2413<h3 id="posttoolusefailure">

2388 PostToolUseFailure2414 PostToolUseFailure

2389</h3>2415</h3>

2390 2416 

2391在已開始執行的工具失敗時執行:工具拋出錯誤,或 MCP 工具回傳錯誤結果。可用來記錄失敗、傳送警示,或向 Claude 提供修正性回饋。2417在已開始執行的工具失敗時執行:工具擲出錯誤,或 MCP 工具回傳錯誤結果。可用於記錄失敗、傳送警示,或向 Claude 提供修正回饋。

2392 2418 

2393依工具名稱比對,可用值與 PreToolUse 相同。2419依工具名稱比對,值與 PreToolUse 相同。

2394 2420 

2395<Note>2421<Note>

2396 對於在執行前就被拒絕的工具呼叫,此事件不會觸發:未知的工具名稱、未通過 schema 或工具專屬驗證的輸入,或權限遭拒。驗證拒絕會以 `tool_use_error` 結果回傳,且發生在 hook 執行之前,因此既不會觸發 `PreToolUse`,也不會觸發 `PostToolUseFailure`。權限遭拒會觸發 `PreToolUse`,但不會觸發此事件;請參閱 [PermissionDenied](#permissiondenied)。2422 此事件不會針對執行前就被拒絕的工具呼叫觸發:未知的工具名稱、未通過 schema 或工具專屬驗證的輸入,或權限拒絕。驗證拒絕會以 `tool_use_error` 結果回傳,且發生在 hook 執行之前,因此既不會觸發 `PreToolUse`,也不會觸發 `PostToolUseFailure`。權限拒絕會觸發 `PreToolUse`,但不會觸發此事件;請參閱 [PermissionDenied](#permissiondenied)。

2397</Note>2423</Note>

2398 2424 

2399<h4 id="posttoolusefailure-input">2425<h4 id="posttoolusefailure-input">

2400 PostToolUseFailure 輸入2426 PostToolUseFailure 輸入

2401</h4>2427</h4>

2402 2428 

2403PostToolUseFailure hook 會收到與 PostToolUse 相同的 `tool_name` 與 `tool_input` 欄位,以及作為頂層欄位的錯誤資訊。若為 MCP 工具,還會收到 [`mcp_server`](#pretooluse-input) 物件。例如,失敗的 `npm test` 命令可能會傳遞:2429PostToolUseFailure hook 會接收與 PostToolUse 相同的 `tool_name` 與 `tool_input` 欄位,並以頂層欄位提供錯誤資訊。對於 MCP 工具,它們也會接收 [`mcp_server`](#pretooluse-input) 物件。例如,失敗的 `npm test` 命令可能會傳遞:

2404 2430 

2405```json theme={null}2431```json theme={null}

2406{2432{


2423 2449 

2424| 欄位 | 說明 |2450| 欄位 | 說明 |

2425| :- | :- |2451| :- | :- |

2426| `error` | 描述問題的字串。格式取決於失敗的工具 |2452| `error` | 描述發生何種錯誤的字串。格式取決於失敗的工具 |

2427| `is_interrupt` | 選用的布林值。當失敗是以中止的形式傳達給 Claude Code,而非由工具回報的錯誤時為 true。取消執行中的工具不會觸發此 hook;工具結果會改為帶有中斷訊息 |2453| `is_interrupt` | 選用的布林值。當失敗是以中止形式抵達 Claude Code,而非工具所回報的錯誤時為 true。取消正在執行的工具不會觸發此 hook;工具結果會改為攜帶中斷訊息 |

2428| `duration_ms` | 選用。工具執行時間(毫秒)。不包含權限提示與 PreToolUse hook 所花費的時間 |2454| `duration_ms` | 選用。工具執行時間(毫秒)。不包含花在權限提示與 PreToolUse hook 上的時間 |

2429 2455 

2430`error` 字串通常與 Claude 收到的失敗工具結果文字相同。其格式因工具與失敗情況而異。請讓您的 hook 依據 `tool_name`、`is_interrupt` 以及第一行的 `Exit code N` 來判斷;字串的其餘部分請視為顯示文字,而非穩定的格式。2456`error` 字串通常與 Claude 收到的失敗工具結果文字相同。其格式因工具與失敗情況而異。請讓您的 hook 以 `tool_name`、`is_interrupt` 以及 `Exit code N` 第一行為判斷依據;將字串的其餘部分視為顯示文字,而非穩定的格式。

2431 2457 

2432* 對於 Bash 與 PowerShell,已執行並結束的命令會產生第一行 `Exit code N`,接著是命令產生的所有輸出,stdout 與 stderr 交錯成一個區塊2458* 對於 Bash 與 PowerShell,已執行並結束的命令會產生第一行 `Exit code N`,接著是命令所產生的任何輸出,以單一區塊呈現,stdout 與 stderr 交錯

2433* 當 Claude Code 無法啟動 shell 程序本身時,payload 也可能只帶有一則沒有退出碼行的失敗訊息2459* 當 Claude Code 無法啟動 shell 程序本身時,payload 也可能只攜帶沒有退出碼行的單純失敗訊息

2434* Claude Code 會在 `... [N characters truncated] ...` 標記周圍對長字串進行中段截斷,並可能插入自己的行,例如 `Command timed out after 2m 0s`2460* Claude Code 會以 `... [N characters truncated] ...` 標記為中心截斷長字串的中間部分,也可能插入自己的行,例如 `Command timed out after 2m 0s`

2435 2461 

2436<h4 id="posttoolusefailure-decision-control">2462<h4 id="posttoolusefailure-decision-control">

2437 PostToolUseFailure 決策控制2463 PostToolUseFailure 決策控制

2438</h4>2464</h4>

2439 2465 

2440`PostToolUseFailure` hook 可以在工具失敗後向 Claude 提供上下文。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,您的 hook 指令碼還可以回傳下列事件專屬欄位:2466`PostToolUseFailure` hook 可以在工具失敗後向 Claude 提供上下文。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以回傳以下事件專屬欄位:

2441 2467 

2442| 欄位 | 說明 |2468| 欄位 | 說明 |

2443| :- | :- |2469| :- | :- |

2444| `additionalContext` | 與錯誤一起加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |2470| `additionalContext` | 與錯誤一併加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |

2445 2471 

2446```json theme={null}2472```json theme={null}

2447{2473{


2456 PostToolBatch2482 PostToolBatch

2457</h3>2483</h3>

2458 2484 

2459在一個批次中的每個工具呼叫都處理完畢後執行一次,時間點在 Claude Code 向模型傳送下一個請求之前。`PostToolUse` 會針對每個工具觸發一次,這表示當 Claude 進行平行工具呼叫時,它會同時觸發多次。`PostToolBatch` 則會以完整批次恰好觸發一次,因此適合用來注入取決於所執行工具集合、而非任何單一工具的上下文。此事件沒有 matcher。2485在批次中的每個工具呼叫都已完成後執行一次,於 Claude Code 向模型傳送下一個請求之前。`PostToolUse` 會針對每個工具各觸發一次,這表示當 Claude 進行平行工具呼叫時,它會同時觸發。`PostToolBatch` 則會以完整批次精確觸發一次,因此適合用來注入取決於所執行工具集合、而非任何單一工具的上下文。此事件沒有 matcher。

2460 2486 

2461<h4 id="posttoolbatch-input">2487<h4 id="posttoolbatch-input">

2462 PostToolBatch 輸入2488 PostToolBatch 輸入

2463</h4>2489</h4>

2464 2490 

2465除了[共通輸入欄位](#common-input-fields)外,PostToolBatch hook 還會收到 `tool_calls`,這是一個描述批次中每個工具呼叫的陣列:2491除了[通用輸入欄位](#common-input-fields)之外,PostToolBatch hook 還會接收 `tool_calls`,這是一個描述批次中每個工具呼叫的陣列:

2466 2492 

2467```json theme={null}2493```json theme={null}

2468{2494{


2488}2514}

2489```2515```

2490 2516 

2491`tool_response` 包含的內容與模型在對應 `tool_result` 區塊中收到的內容相同。其值為序列化字串或內容區塊陣列,與工具產生時完全一致。以 `Read` 為例,這代表帶有行號前綴的文字,而非原始檔案內容。回應可能很大,因此請只解析您需要的欄位。2517`tool_response` 包含模型在對應 `tool_result` 區塊中收到的相同內容。該值是序列化後的字串或內容區塊陣列,與工具輸出的內容完全一致。對於 `Read`,這表示是帶有行號前綴的文字,而非原始檔案內容。回應可能很大,因此請只解析您需要的欄位。

2492 2518 

2493<Note>2519<Note>

2494 `tool_response` 的結構與 `PostToolUse` 的不同。`PostToolUse` 傳遞的是工具的結構化 `Output` 物件,例如 `Write` 的 `{filePath: "...", type: "create"}`;`PostToolBatch` 傳遞的則是模型看到的序列化 `tool_result` 內容。2520 `tool_response` 的結構與 `PostToolUse` 不同。`PostToolUse` 傳遞的是工具的結構化 `Output` 物件,例如 `Write` 的 `{filePath: "...", type: "create"}`;`PostToolBatch` 傳遞的則是模型所看到的序列化 `tool_result` 內容。

2495</Note>2521</Note>

2496 2522 

2497<h4 id="posttoolbatch-decision-control">2523<h4 id="posttoolbatch-decision-control">

2498 PostToolBatch 決策控制2524 PostToolBatch 決策控制

2499</h4>2525</h4>

2500 2526 

2501`PostToolBatch` hook 可以為 Claude 注入上下文。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,您的 hook 指令碼還可以回傳下列事件專屬欄位:2527`PostToolBatch` hook 可以為 Claude 注入上下文。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以回傳以下事件專屬欄位:

2502 2528 

2503| 欄位 | 說明 |2529| 欄位 | 說明 |

2504| :- | :- |2530| :- | :- |


2513}2539}

2514```2540```

2515 2541 

2516回傳 `decision: "block"` 或 `continue: false` 會在下一次模型呼叫前停止代理式迴圈。封鎖訊息來自 JSON 的 `reason` 或 `stopReason`,或在退出碼 2 時來自 stderr。您會在逐字稿中看到它以警告形式顯示,且它會保留在對話中,因此對話繼續時 Claude 也會看到它。2542回傳 `decision: "block"` 或 `continue: false` 會在下一次模型呼叫前停止代理式迴圈。封鎖訊息來自 JSON 的 `reason` 或 `stopReason`,或在退出碼 2 時來自 stderr。您會在逐字稿中看到它以警告形式呈現,且它會保留在對話中,因此 Claude 會在對話繼續時看到它。

2517 2543 

2518<h3 id="permissiondenied">2544<h3 id="permissiondenied">

2519 PermissionDenied2545 PermissionDenied

2520</h3>2546</h3>

2521 2547 

2522在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)拒絕工具呼叫時執行,包括在沒有分類器判定的情況下拒絕,原因是[與自動模式分開的安全檢查拒絕了分類器本身的請求](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action),或分類器的回應無法解析。此 hook 只會在自動模式下觸發:當您手動拒絕權限對話方塊、`PreToolUse` hook 封鎖呼叫,或 `deny` 規則相符時,它都不會執行。可用來記錄拒絕、調整設定,或告知模型它可以重試該工具呼叫。2548在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)拒絕工具呼叫時執行,包括在沒有分類器判定的情況下拒絕,原因是[獨立於自動模式之外的安全檢查拒絕了分類器本身的請求](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action),或其回應無法解析。此 hook 只會在自動模式下觸發:當您手動拒絕權限對話框、`PreToolUse` hook 封鎖呼叫,或 `deny` 規則相符時,都不會執行。可用於記錄拒絕、調整設定,或告知模型它可以重試該工具呼叫。

2523 2549 

2524依工具名稱比對,可用值與 PreToolUse 相同。2550依工具名稱比對,值與 PreToolUse 相同。

2525 2551 

2526<h4 id="permissiondenied-input">2552<h4 id="permissiondenied-input">

2527 PermissionDenied 輸入2553 PermissionDenied 輸入

2528</h4>2554</h4>

2529 2555 

2530除了[共通輸入欄位](#common-input-fields)外,PermissionDenied hook 還會收到 `tool_name`、`tool_input`、`tool_use_id` 與 `reason`。若為 MCP 工具,還會收到 [`mcp_server`](#pretooluse-input) 物件。2556除了[通用輸入欄位](#common-input-fields)之外,PermissionDenied hook 還會接收 `tool_name`、`tool_input`、`tool_use_id` 與 `reason`。對於 MCP 工具,它們也會接收 [`mcp_server`](#pretooluse-input) 物件。

2531 2557 

2532```json theme={null}2558```json theme={null}

2533{2559{


2548 2574 

2549| 欄位 | 說明 |2575| 欄位 | 說明 |

2550| :- | :- |2576| :- | :- |

2551| `reason` | 拒絕原因。若為分類器判定,在大多數工作階段中會以方括號標示相符的規則,例如 `[Data Exfiltration]`;其他形式請參閱[檢視拒絕](/docs/zh-TW/auto-mode-config#review-denials)。若為[無判定的拒絕](#permissiondenied-decision-control),則以 `Auto mode could not evaluate this action and is blocking it for safety` 開頭。若因分類器模型無法使用而拒絕,則為固定文字 `Classifier unavailable` |2577| `reason` | 拒絕原因。對於分類器判定,在大多數工作階段中,它會以方括號標示相符的規則,例如 `[Data Exfiltration]`;其他形式請參閱[審查拒絕](/docs/zh-TW/auto-mode-config#review-denials)。對於[無判定的拒絕](#permissiondenied-decision-control),它以 `Auto mode could not evaluate this action and is blocking it for safety` 開頭。對於因分類器模型無法使用而產生的拒絕,它是固定文字 `Classifier unavailable` |

2552 2578 

2553<h4 id="permissiondenied-decision-control">2579<h4 id="permissiondenied-decision-control">

2554 PermissionDenied 決策控制2580 PermissionDenied 決策控制

2555</h4>2581</h4>

2556 2582 

2557PermissionDenied hook 可以告知模型它可以重試遭拒的工具呼叫。回傳一個將 `hookSpecificOutput.retry` 設為 `true` 的 JSON 物件:2583PermissionDenied hook 可以告知模型它可以重試被拒絕的工具呼叫。回傳一個 `hookSpecificOutput.retry` 設為 `true` 的 JSON 物件:

2558 2584 

2559```json theme={null}2585```json theme={null}

2560{2586{


2565}2591}

2566```2592```

2567 2593 

2568當 `retry` 為 `true` 時,Claude Code 會在對話中加入一則訊息,告知模型它可以重試該工具呼叫。Claude Code 本身不會撤銷該拒絕。如果您的 hook 沒有回傳 JSON,或回傳 `retry: false`,拒絕就會維持,模型會收到原始的拒絕訊息。2594當 `retry` 為 `true` 時,Claude Code 會在對話中加入一則訊息,告知模型它可以重試該工具呼叫。Claude Code 本身不會撤銷拒絕。若您的 hook 未回傳 JSON,或回傳 `retry: false`,拒絕維持有效,模型會收到原始的拒絕訊息。

2569 2595 

2570當分類器[對該動作沒有做出判定](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)時,Claude Code 會忽略 `retry: true`:分類器的回應無法解析,或與自動模式分開的安全檢查拒絕了分類器本身的請求。對於這些拒絕,Claude Code 已在拒絕訊息中告知模型應稍後重試還是繼續進行。2596當分類器[未對該動作產生判定](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)時,Claude Code 會忽略 `retry: true`:其回應無法解析,或獨立於自動模式之外的安全檢查拒絕了分類器本身的請求。對於這些拒絕,Claude Code 已在拒絕訊息中告知模型應稍後重試或繼續其他工作。

2571 2597 

2572<h3 id="notification">2598<h3 id="notification">

2573 Notification2599 Notification


2575 2601 

2576在 Claude Code 傳送通知時執行。依通知類型比對。省略 matcher 即可針對所有通知類型執行 hook。2602在 Claude Code 傳送通知時執行。依通知類型比對。省略 matcher 即可針對所有通知類型執行 hook。

2577 2603 

2578即使關閉桌面通知,您仍會收到這些 hook 事件:`preferredNotifChannel` 設定(包括 `notifications_disabled`)只會改變您收到提醒的方式,而不會影響您的 hook 是否執行。2604即使關閉了桌面通知,您仍會收到這些 hook 事件:`preferredNotifChannel` 設定(包括 `notifications_disabled`)只會改變您接收提醒的方式,而不會影響您的 hook 是否執行。

2579 2605 

2580| Matcher | 觸發時機 |2606| Matcher | 觸發時機 |

2581| :- | :- |2607| :- | :- |

2582| `permission_prompt` | Claude 需要您核准工具使用或沙箱化命令的[網路請求](/docs/zh-TW/sandboxing#network-isolation),且提示已等待約六秒 |2608| `permission_prompt` | Claude 需要您核准工具使用或沙箱化命令的[網路請求](/docs/zh-TW/sandboxing#network-isolation),且提示已等待約六秒 |

2583| `idle_prompt` | Claude 約 60 秒前已完成回應,且您之後未曾輸入 |2609| `idle_prompt` | Claude 約在 60 秒前完成回應,且您之後未曾輸入 |

2584| `auth_success` | 身分驗證完成 |2610| `auth_success` | 身分驗證完成 |

2585| `elicitation_dialog` | MCP 伺服器開啟了 elicitation 表單,且您約六秒未輸入 |2611| `elicitation_dialog` | MCP 伺服器開啟 elicitation 表單,且您約六秒未輸入 |

2586| `elicitation_url_dialog` | MCP 伺服器要求您開啟瀏覽器 URL,且您約六秒未輸入 |2612| `elicitation_url_dialog` | MCP 伺服器要求您開啟瀏覽器 URL,且您約六秒未輸入 |

2587| `elicitation_complete` | MCP 伺服器回報 [URL 模式 elicitation](#elicitation-input) 已完成 |2613| `elicitation_complete` | MCP 伺服器回報 [URL 模式 elicitation](#elicitation-input) 已完成 |

2588| `elicitation_response` | MCP elicitation 回應已傳回伺服器 |2614| `elicitation_response` | MCP elicitation 回應被傳回伺服器 |

2589| `agent_needs_input` | 在終端機中開啟 [agent view](/docs/zh-TW/agent-view) 時,背景工作階段開始等待您的輸入。當終端機工作階段向您顯示 [agent team 隊員的終端機設定問題](/docs/zh-TW/agent-teams#choose-a-display-mode),或自動模式關於[分類器請求費用](/docs/zh-TW/auto-mode-classifier-billing)的通知,且您約六秒未輸入時,也會觸發 |2615| `agent_needs_input` | 在終端機中開啟 [agent 檢視](/docs/zh-TW/agent-view)時,某個背景工作階段開始等待您的輸入。當終端機工作階段向您顯示 [agent team 隊員的終端機設定問題](/docs/zh-TW/agent-teams#choose-a-display-mode),或自動模式關於[分類器請求費用](/docs/zh-TW/auto-mode-classifier-billing)的通知,且您約六秒未輸入時,也會觸發 |

2590| `agent_completed` | 背景工作階段完成或失敗。僅在終端機中開啟 [agent view](/docs/zh-TW/agent-view) 時觸發 |2616| `agent_completed` | 背景工作階段完成或失敗。僅在終端機中開啟 [agent 檢視](/docs/zh-TW/agent-view)時觸發 |

2591| `quota_auto_resume_fired` | 在 claude.ai 用量上限暫停您的任務後,Claude Code 繼續執行該任務:於重設時,或當您在等待期間於 Claude Code 中所做的某些事情(例如新增用量點數、升級方案或切換模型)使用量再次可用時提前繼續,但有[模型設定例外](/docs/zh-TW/interactive-mode#wait-for-a-usage-limit-to-reset) |2617| `quota_auto_resume_fired` | Claude Code 在 claude.ai 用量上限暫停您的任務後繼續執行:在重設時,或在等待期間您於 Claude Code 中所做的某些動作(例如新增用量點數、升級方案或切換模型)使用量再次可用時提前繼續,但有[模型設定例外](/docs/zh-TW/interactive-mode#wait-for-a-usage-limit-to-reset) |

2592| `quota_auto_resume_stale` | claude.ai 用量上限在您的電腦休眠超過約 30 分鐘期間重設。Claude Code 會等待您按下 `Enter`,而不是直接繼續。若休眠時間較短,它會繼續並改為觸發 `quota_auto_resume_fired` |2618| `quota_auto_resume_stale` | claude.ai 用量上限在您的電腦休眠超過約 30 分鐘期間重設。Claude Code 會等待您按下 `Enter`,而非繼續執行。若休眠時間較短,它會繼續執行並改為觸發 `quota_auto_resume_fired` |

2593| `quota_auto_resume_disabled` | Claude Code 結束對 claude.ai 用量上限的等待,但未繼續您的任務:[`autoContinueAtUsageLimit`](/docs/zh-TW/settings-reference#autocontinueatusagelimit) 已關閉,或在 Claude Code 自行開始的等待期間重設時間延後超過 24 小時、繼續的任務持續觸及上限,或繼續動作在抵達模型前遭到封鎖。當您按下 `Esc` 或 `Ctrl+C`,或選擇 **Don't continue automatically** 時不會觸發 |2619| `quota_auto_resume_disabled` | Claude Code 結束對 claude.ai 用量上限的等待,且未繼續您的任務:[`autoContinueAtUsageLimit`](/docs/zh-TW/settings-reference#autocontinueatusagelimit) 已關閉,或在 Claude Code 自行開始的等待期間重設時間延後超過 24 小時、繼續的任務持續觸及上限,或繼續執行在抵達模型之前遭到封鎖。當您按下 `Esc` 或 `Ctrl+C`,或選擇 **Don't continue automatically** 時不會觸發 |

2594 2620 

2595`quota_auto_resume_fired`、`quota_auto_resume_stale` 與 `quota_auto_resume_disabled` 類型需要 Claude Code v2.1.234 或更新版本。2621`quota_auto_resume_fired`、`quota_auto_resume_stale` 與 `quota_auto_resume_disabled` 類型需要 Claude Code v2.1.234 或更新版本。

2596 2622 


2599針對隊員終端機設定問題的 `agent_needs_input` 需要 Claude Code v2.1.248 或更新版本。2625針對隊員終端機設定問題的 `agent_needs_input` 需要 Claude Code v2.1.248 或更新版本。

2600 2626 

2601<Note>2627<Note>

2602 `permission_prompt`、`idle_prompt`、`elicitation_dialog` 與 `elicitation_url_dialog` 類型與桌面通知共用相同的時機,因此在終端機工作階段中,只有當您看起來已離開終端機時才會看到它們:2628 `permission_prompt`、`idle_prompt`、`elicitation_dialog` 與 `elicitation_url_dialog` 類型與桌面通知共用相同的時機,因此在終端機工作階段中,只有當您看起來不在終端機前時才會看到它們:

2603 2629 

2604 * 預期在您約六秒未輸入後出現 `permission_prompt`。計時器在權限提示出現時開始,每次按鍵都會延後它。若要在 Claude 要求使用工具的權限時立即執行 hook,請改用 [PermissionRequest](#permissionrequest)。2630 * 當您約六秒未輸入時,預期會出現 `permission_prompt`。計時器從權限提示出現時開始,每次按鍵都會使其延後。若要在 Claude 請求使用工具的權限時立即執行 hook,請改用 [PermissionRequest](#permissionrequest)。

2605 * 預期在 Claude 完成回應約 60 秒後出現 `idle_prompt`,且僅限於您之後未曾輸入,並且沒有背景 agent(例如背景 [subagent](/docs/zh-TW/sub-agents))仍在執行時。Claude Code 在等待 claude.ai 用量上限重設期間不會傳送 `idle_prompt`。當等待自行結束時,會改為觸發其中一個 `quota_auto_resume_*` 類型。2631 * 在 Claude 完成回應約 60 秒後,預期會出現 `idle_prompt`,但前提是您之後未曾輸入,且沒有背景 agent(例如背景 [subagent](/docs/zh-TW/sub-agents))仍在執行。Claude Code 在等待 claude.ai 用量上限重設期間不會傳送 `idle_prompt`。當等待自行結束時,會改為觸發其中一個 `quota_auto_resume_*` 類型。

2606 * 預期在您約六秒未輸入後,針對 elicitation 表單出現 `elicitation_dialog`,或針對瀏覽器 URL 請求出現 `elicitation_url_dialog`。兩者與 `permission_prompt` 共用相同的六秒門檻:計時器在對話方塊出現時開始,每次按鍵都會延後它。2632 * 當您約六秒未輸入時,預期會針對 elicitation 表單出現 `elicitation_dialog`,或針對瀏覽器 URL 請求出現 `elicitation_url_dialog`。兩者與 `permission_prompt` 共用相同的六秒門檻:計時器從對話框出現時開始,每次按鍵都會使其延後。

2607 2633 

2608 在另一個對話方塊仍顯示於畫面上時抵達的權限請求或 elicitation,會維持相同的六秒門檻,並從請求抵達時開始計時。其通知可能會在該請求仍在已開啟的對話方塊後方等待時送達給您。2634 在另一個對話框顯示於畫面上時抵達的權限請求或 elicitation,仍適用相同的六秒門檻,從請求抵達時開始計時。其通知可能會在請求仍於開啟的對話框後方等待時送達您。

2609</Note>2635</Note>

2610 2636 

2611在 Claude Code 將權限請求傳送到 Agent SDK 的 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input)的工作階段中(Claude Desktop 與 VS Code 擴充功能即以此方式託管 Claude Code),Claude Code 對 `permission_prompt` 的計時方式不同:2637在 Claude Code 將權限請求傳送至 Agent SDK 的 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input)的工作階段中(也就是 Claude Desktop 與 VS Code 擴充功能承載 Claude Code 的方式),Claude Code 對 `permission_prompt` 的計時方式不同:

2612 2638 

2613* 預期在 Claude 要求權限約六秒後出現 `permission_prompt`。Claude Code 不會因為您正在輸入而延後它。2639* 預期會在 Claude 請求權限約六秒後出現 `permission_prompt`。Claude Code 不會因為您輸入而延後它。

2614* 如果您或 [PermissionRequest](#permissionrequest) hook 較早回應,Claude Code 就不會執行 `permission_prompt`。2640* 若您或 [PermissionRequest](#permissionrequest) hook 較早回應,Claude Code 不會執行 `permission_prompt`。

2615* 將 [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/zh-TW/env-vars) 設為 `1`,即可在這些工作階段中關閉 `permission_prompt`。2641* 將 [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/zh-TW/env-vars) 設為 `1`,即可在這些工作階段中關閉 `permission_prompt`。

2616 2642 

2617在 v2.1.233 之前,`permission_prompt` 不會在這些工作階段中觸發。2643在 v2.1.233 之前,`permission_prompt` 不會在這些工作階段中觸發。

2618 2644 

2619使用不同的 matcher,可依通知類型執行不同的處理程式。以下設定會在 Claude 需要權限核准時觸發權限專用的警示指令碼,並在 Claude 閒置時觸發另一個通知:2645使用不同的 matcher,即可依通知類型執行不同的處理常式。以下設定會在 Claude 需要權限核准時觸發權限專屬的警示指令碼,並在 Claude 閒置時觸發另一個通知:

2620 2646 

2621```json theme={null}2647```json theme={null}

2622{2648{


2649 Notification 輸入2675 Notification 輸入

2650</h4>2676</h4>

2651 2677 

2652除了[共通輸入欄位](#common-input-fields)外,Notification hook 還會收到帶有通知文字的 `message`、選用的 `title`,以及指出觸發類型的 `notification_type`。2678除了[通用輸入欄位](#common-input-fields)之外,Notification hook 還會接收包含通知文字的 `message`、選用的 `title`,以及指出觸發類型的 `notification_type`。

2653 2679 

2654```json theme={null}2680```json theme={null}

2655{2681{


2663}2689}

2664```2690```

2665 2691 

2666Notification hook 無法封鎖或修改通知。Claude Code 會捨棄其 `systemMessage` 與 `continue` 欄位,但仍會輸出 [`terminalSequence`](#emit-terminal-notifications),這正是桌面通知範例所依賴的。Notification hook 的用途是產生副作用,例如將通知轉送到外部服務。2692Notification hook 無法封鎖或修改通知。Claude Code 會捨棄其 `systemMessage` 與 `continue` 欄位,但仍會輸出 [`terminalSequence`](#emit-terminal-notifications),桌面通知範例正是仰賴此欄位。Notification hook 的用途是產生副作用,例如將通知轉送至外部服務。

2667 2693 

2668<h3 id="subagentstart">2694<h3 id="subagentstart">

2669 SubagentStart2695 SubagentStart

2670</h3>2696</h3>

2671 2697 

2672在 Claude 以 Agent 工具產生 subagent 時、在 Claude [恢復 subagent](/docs/zh-TW/sub-agents#resume-subagents) 時,以及每次程序內 [agent team](/docs/zh-TW/agent-teams) 隊員處理新訊息時執行。支援以 matcher 依 agent 類型名稱篩選。對於內建 agent,這是 agent 名稱,例如 `general-purpose`、`Explore` 或 `Plan`。對於[自訂 subagent](/docs/zh-TW/sub-agents),這是 agent frontmatter 中的 `name` 欄位,而非檔案名稱。2698在 Claude 使用 Agent 工具產生 subagent 時、在 Claude [恢復 subagent](/docs/zh-TW/sub-agents#resume-subagents) 時,以及每次程序內 [agent team](/docs/zh-TW/agent-teams) 隊員處理新訊息時執行。支援使用 matcher 依 agent 類型名稱篩選。對於內建 agent,這是 agent 名稱,例如 `general-purpose`、`Explore` 或 `Plan`。對於[自訂 subagent](/docs/zh-TW/sub-agents),這是 agent frontmatter 中的 `name` 欄位,而非檔案名稱。

2673 2699 

2674對於由[外掛](/docs/zh-TW/plugins/overview)提供的 subagent,agent 類型是外掛範圍的識別碼,例如 `my-plugin:reviewer`,而非單純的 frontmatter 名稱。冒號會使外掛範圍的名稱走正規表示式路徑,因此請以 `^` 與 `$` 錨定 matcher 以進行精確比對:`^my-plugin:reviewer$`。2700對於由[外掛](/docs/zh-TW/plugins/overview)提供的 subagent,agent 類型是外掛範圍的識別碼,例如 `my-plugin:reviewer`,而非單純的 frontmatter 名稱。冒號會使外掛範圍的名稱走正規表示式路徑,因此請以 `^` 與 `$` 錨定 matcher 以進行精確比對:`^my-plugin:reviewer$`。

2675 2701 


2677 SubagentStart 輸入2703 SubagentStart 輸入

2678</h4>2704</h4>

2679 2705 

2680除了[共通輸入欄位](#common-input-fields)外,SubagentStart hook 還會收到帶有 subagent 唯一識別碼的 `agent_id`,以及帶有 matcher 篩選依據之 agent 名稱的 `agent_type`。2706除了[通用輸入欄位](#common-input-fields)之外,SubagentStart hook 還會接收包含 subagent 唯一識別碼的 `agent_id`,以及包含 matcher 篩選依據之 agent 名稱的 `agent_type`。

2681 2707 

2682```json theme={null}2708```json theme={null}

2683{2709{


2690}2716}

2691```2717```

2692 2718 

2693SubagentStart hook 無法封鎖 subagent 的建立,但可以將上下文注入 subagent。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,您還可以回傳:2719SubagentStart hook 無法封鎖 subagent 的建立,但可以將上下文注入 subagent。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您還可以回傳:

2694 2720 

2695| 欄位 | 說明 |2721| 欄位 | 說明 |

2696| :- | :- |2722| :- | :- |

2697| `additionalContext` | 在 subagent 對話開始時、其第一個提示詞之前加入其上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |2723| `additionalContext` | 在 subagent 對話開始時、其第一個提示詞之前,加入 subagent 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |

2698 2724 

2699```json theme={null}2725```json theme={null}

2700{2726{


2705}2731}

2706```2732```

2707 2733 

2708當 hook 針對同一個 subagent 再次執行時,只有在 subagent 的上下文中尚未保有先前執行的副本時,Claude Code 才會注入回傳的上下文。啟動時注入的副本會保留在原處,使 subagent 的[提示快取](/docs/zh-TW/prompt-caching#subagents-and-the-cache)保持完整。在[自動壓縮](/docs/zh-TW/sub-agents#auto-compaction)捨棄該副本後,Claude Code 會再次注入下一次執行的上下文。2734當 hook 針對同一個 subagent 再次執行時,只有在 subagent 的上下文尚未保有先前執行所注入的副本時,Claude Code 才會注入回傳的上下文。啟動時注入的副本會保留在原處,使 subagent 的[提示快取](/docs/zh-TW/prompt-caching#subagents-and-the-cache)保持完整。在[自動壓縮](/docs/zh-TW/sub-agents#auto-compaction)捨棄該副本後,Claude Code 會再次注入下一次執行的上下文。

2709 2735 

2710<h3 id="subagentstop">2736<h3 id="subagentstop">

2711 SubagentStop2737 SubagentStop

2712</h3>2738</h3>

2713 2739 

2714在 Claude Code subagent 完成回應時執行。依 agent 類型比對,可用值與 SubagentStart 相同。2740在 Claude Code subagent 完成回應時執行。依 agent 類型比對,值與 SubagentStart 相同。

2715 2741 

2716<h4 id="subagentstop-input">2742<h4 id="subagentstop-input">

2717 SubagentStop 輸入2743 SubagentStop 輸入

2718</h4>2744</h4>

2719 2745 

2720除了[共通輸入欄位](#common-input-fields)外,SubagentStop hook 還會收到 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 與 `last_assistant_message`。`agent_type` 欄位是用於 matcher 篩選的值。`transcript_path` 是主工作階段的逐字稿,而 `agent_transcript_path` 則是 subagent 自己的逐字稿,儲存在巢狀的 `subagents/` 資料夾中。`last_assistant_message` 欄位包含 subagent 最終回應的文字內容,因此 hook 不需解析逐字稿檔案即可存取。2746除了[通用輸入欄位](#common-input-fields)之外,SubagentStop hook 還會接收 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 與 `last_assistant_message`。`agent_type` 欄位是用於 matcher 篩選的值。`transcript_path` 是主工作階段的逐字稿,而 `agent_transcript_path` 則是儲存在巢狀 `subagents/` 資料夾中的 subagent 自身逐字稿。`last_assistant_message` 欄位包含 subagent 最終回應的文字內容,因此 hook 無需解析逐字稿檔案即可存取。

2721 2747 

2722並非每個 SubagentStop 事件都來自 Claude 產生的 subagent。Claude Code 也會為其部分功能執行內部 agent,例如[提示詞建議](/docs/zh-TW/interactive-mode#prompt-suggestions)與 [`/btw` 旁支問題](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw),當其中之一完成時也會觸發 SubagentStop。對於這些事件,`agent_type` 是工作階段本身執行時所用的 agent 名稱,例如透過 [`--agent`](/docs/zh-TW/cli-reference#cli-flags) 或 [`agent` 設定](/docs/zh-TW/settings-reference#agent)設定的名稱;若工作階段未使用 agent,則為空字串。2748並非每個 SubagentStop 事件都來自 Claude 所產生的 subagent。Claude Code 也會為其自身的某些功能執行內部 agent,例如[提示詞建議](/docs/zh-TW/interactive-mode#prompt-suggestions)與 [`/btw` 旁支問題](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw),當其中之一完成時,SubagentStop 也會觸發。對於這些事件,`agent_type` 是工作階段本身執行時所使用的 agent 名稱,例如以 [`--agent`](/docs/zh-TW/cli-reference#cli-flags) 或 [`agent` 設定](/docs/zh-TW/settings-reference#agent)所設定者;若工作階段未使用任何 agent 執行,則為空字串。

2723 2749 

2724指名 agent 類型的 `matcher` 不會比對到空的 `agent_type`。matcher 省略、為 `""` 或 `"*"`,或是可比對空字串之正規表示式的 hook,也會針對 `agent_type` 為空的事件執行。2750指定 agent 類型的 `matcher` 不會比對空的 `agent_type`。matcher 被省略、為 `""` 或 `"*"`,或是可比對空字串之正規表示式的 hook,也會針對 `agent_type` 為空的事件執行。

2725 2751 

2726在 Claude Code v2.1.271 或更新版本中,使用 [`SubagentHandback`](/docs/zh-TW/tools-reference) 工具執行的 subagent 會在停止前透過該工具傳遞其報告。此時 `last_assistant_message` 欄位保存的是 subagent 的結尾文字(若有),而非傳遞的報告。報告是該呼叫的 `message` 輸入,比對 `SubagentHandback` 的 `PreToolUse` 或 `PostToolUse` hook 會以 `tool_input.message` 收到它。2752在 Claude Code v2.1.271 或更新版本中,使用 [`SubagentHandback`](/docs/zh-TW/tools-reference) 工具執行的 subagent 會在停止之前透過該工具傳遞其報告。此時 `last_assistant_message` 欄位保存的是 subagent 的結尾文字(若有),而非所傳遞的報告。報告是該呼叫的 `message` 輸入,比對 `SubagentHandback` 的 `PreToolUse` 或 `PostToolUse` hook 會以 `tool_input.message` 接收它。

2727 2753 

2728SubagentStop hook 也會收到 [Stop 輸入](#stop-input)中所述的 `background_tasks` 與 `session_crons` 陣列。這兩個陣列的範圍都是父工作階段,而非 subagent。2754SubagentStop hook 也會接收 [Stop 輸入](#stop-input)中所述的 `background_tasks` 與 `session_crons` 陣列。這兩個陣列的範圍都是父工作階段,而非 subagent。

2729 2755 

2730```json theme={null}2756```json theme={null}

2731{2757{


2744}2770}

2745```2771```

2746 2772 

2747SubagentStop hook 使用與 [Stop hook](#stop-decision-control) 相同的決策控制格式,包括將 `hookEventName` 設為 `"SubagentStop"` 的 `hookSpecificOutput.additionalContext`,用於讓 subagent 繼續執行的非錯誤回饋。回傳帶有 `reason` 的 `decision: "block"` 會讓 subagent 繼續執行,並將 `reason` 作為其下一個指令傳遞給 subagent。以退出碼 2 封鎖的 hook 也會以相同方式傳遞其 stderr 訊息。若要在 subagent 返回後將上下文注入父工作階段,請改在 `Agent` 工具上使用 [`PostToolUse`](#posttooluse) hook。2773SubagentStop hook 使用與 [Stop hook](#stop-decision-control) 相同的決策控制格式,包括將 `hookEventName` 設為 `"SubagentStop"` 的 `hookSpecificOutput.additionalContext`,用於提供讓 subagent 繼續執行的非錯誤回饋。回傳帶有 `reason` 的 `decision: "block"` 會讓 subagent 繼續執行,並將 `reason` 作為下一個指令傳遞給 subagent。以退出碼 2 封鎖的 hook 也會以相同方式傳遞其 stderr 訊息。若要在 subagent 回傳後將上下文注入父工作階段,請改為在 `Agent` 工具上使用 [`PostToolUse`](#posttooluse) hook。

2748 2774 

2749<h3 id="taskcreated">2775<h3 id="taskcreated">

2750 TaskCreated2776 TaskCreated

2751</h3>2777</h3>

2752 2778 

2753在透過 `TaskCreate` 工具建立任務時執行。可用來強制執行命名慣例、要求任務說明,或阻止建立特定任務。在[沒有 Task 工具的工作階段](/docs/zh-TW/tools-reference#task-tool-availability)中,此事件不會觸發。2779在透過 `TaskCreate` 工具建立任務時執行。可用於強制執行命名慣例、要求任務說明,或防止建立特定任務。在[沒有 Task 工具的工作階段](/docs/zh-TW/tools-reference#task-tool-availability)中,此事件不會觸發。

2754 2780 

2755TaskCreated hook 不支援 matcher,每次發生時都會觸發。2781TaskCreated hook 不支援 matcher,每次發生時都會觸發。

2756 2782 


2758 TaskCreated 輸入2784 TaskCreated 輸入

2759</h4>2785</h4>

2760 2786 

2761除了[共通輸入欄位](#common-input-fields)外,TaskCreated hook 還會收到 `task_id`、`task_subject`,以及選用的 `task_description`、`teammate_name` 與 `team_name`。2787除了[通用輸入欄位](#common-input-fields)之外,TaskCreated hook 還會接收 `task_id`、`task_subject`,以及選用的 `task_description`、`teammate_name` 與 `team_name`。

2762 2788 

2763```json theme={null}2789```json theme={null}

2764{2790{


2777| 欄位 | 說明 |2803| 欄位 | 說明 |

2778| :- | :- |2804| :- | :- |

2779| `task_id` | 正在建立之任務的識別碼 |2805| `task_id` | 正在建立之任務的識別碼 |

2780| `task_subject` | 任務的標題 |2806| `task_subject` | 任務標題 |

2781| `task_description` | 任務的詳細說明。可能不存在 |2807| `task_description` | 任務的詳細說明。可能不存在 |

2782| `teammate_name` | 建立任務之隊員的名稱。可能不存在 |2808| `teammate_name` | 建立任務之隊員的名稱。可能不存在 |

2783| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來的版本中移除 |2809| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來版本中移除 |

2784| `agent_id` | 在此事件中,此[共通輸入欄位](#common-input-fields)識別建立任務的 subagent 或[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |2810| `agent_id` | 在此事件中,此[通用輸入欄位](#common-input-fields)識別建立任務的 subagent 或[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |

2785 2811 

2786<h4 id="taskcreated-decision-control">2812<h4 id="taskcreated-decision-control">

2787 TaskCreated 決策控制2813 TaskCreated 決策控制

2788</h4>2814</h4>

2789 2815 

2790TaskCreated hook 可以透過退出碼 2 或 JSON 決策封鎖建立。無論採用哪種方式,Claude Code 都會刪除該任務,並將您的訊息作為工具的錯誤回傳給 Claude。Claude Code 會忽略此事件的 `continue: false`,Claude 會繼續工作。2816TaskCreated hook 可以使用退出碼 2 或 JSON 決策封鎖建立。無論哪種方式,Claude Code 都會刪除該任務,並將您的訊息作為工具錯誤回傳給 Claude。Claude Code 會忽略此事件的 `continue: false`,Claude 會繼續工作。

2791 2817 

2792* **退出碼 2**:Claude Code 會將 stderr 文字作為訊息回傳。2818* **退出碼 2**:Claude Code 會將 stderr 文字作為訊息回傳。

2793* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 會將 `reason` 作為訊息回傳。2819* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 會將 `reason` 作為訊息回傳。

2794 2820 

2795以下範例會封鎖主旨不符合規定格式的任務:2821以下範例會封鎖主旨不符合必要格式的任務:

2796 2822 

2797```bash theme={null}2823```bash theme={null}

2798#!/bin/bash2824#!/bin/bash


2811 TaskCompleted2837 TaskCompleted

2812</h3>2838</h3>

2813 2839 

2814在任務被標記為已完成時執行。這會在兩種情況下觸發:任何 agent 透過 TaskUpdate 工具明確將任務標記為已完成時,或 [agent team](/docs/zh-TW/agent-teams) 隊員在仍有進行中任務的情況下結束其回合時。可用來在任務關閉前強制執行完成條件,例如通過測試或 lint 檢查。2840在任務被標記為已完成時執行。此事件會在兩種情況下觸發:任何 agent 透過 TaskUpdate 工具明確將任務標記為已完成時,或 [agent team](/docs/zh-TW/agent-teams) 隊員在仍有進行中任務的情況下結束其回合時。可用於在任務關閉前強制執行完成條件,例如通過測試或 lint 檢查。

2815 2841 

2816TaskCompleted hook 不支援 matcher,每次發生時都會觸發。2842TaskCompleted hook 不支援 matcher,每次發生時都會觸發。

2817 2843 


2819 TaskCompleted 輸入2845 TaskCompleted 輸入

2820</h4>2846</h4>

2821 2847 

2822除了[共通輸入欄位](#common-input-fields)外,TaskCompleted hook 還會收到 `task_id`、`task_subject`,以及選用的 `task_description`、`teammate_name` 與 `team_name`。2848除了[通用輸入欄位](#common-input-fields)之外,TaskCompleted hook 還會接收 `task_id`、`task_subject`,以及選用的 `task_description`、`teammate_name` 與 `team_name`。

2823 2849 

2824```json theme={null}2850```json theme={null}

2825{2851{


2839| 欄位 | 說明 |2865| 欄位 | 說明 |

2840| :- | :- |2866| :- | :- |

2841| `task_id` | 正在完成之任務的識別碼 |2867| `task_id` | 正在完成之任務的識別碼 |

2842| `task_subject` | 任務的標題 |2868| `task_subject` | 任務標題 |

2843| `task_description` | 任務的詳細說明。可能不存在 |2869| `task_description` | 任務的詳細說明。可能不存在 |

2844| `teammate_name` | 完成任務之隊員的名稱。可能不存在 |2870| `teammate_name` | 完成任務之隊員的名稱。可能不存在 |

2845| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來的版本中移除 |2871| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來版本中移除 |

2846| `agent_id` | 在此事件中,此[共通輸入欄位](#common-input-fields)識別完成任務的 subagent 或[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |2872| `agent_id` | 在此事件中,此[通用輸入欄位](#common-input-fields)識別完成任務的 subagent 或[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |

2847 2873 

2848<h4 id="taskcompleted-decision-control">2874<h4 id="taskcompleted-decision-control">

2849 TaskCompleted 決策控制2875 TaskCompleted 決策控制


2851 2877 

2852TaskCompleted hook 支援兩種控制任務完成的方式:2878TaskCompleted hook 支援兩種控制任務完成的方式:

2853 2879 

2854* **退出碼 2**:任務不會被標記為已完成,stderr 訊息會作為回饋傳回給模型。2880* **退出碼 2**:任務不會被標記為已完成,且 stderr 訊息會作為回饋傳回給模型。

2855* **JSON `{"continue": false, "stopReason": "..."}`**:當事件是由隊員結束其回合所觸發時,會完全停止該隊員,行為與 `Stop` hook 相同。`stopReason` 會顯示給使用者。當事件是由 `TaskUpdate` 工具觸發時,Claude Code 會忽略 `continue: false`;退出碼 2 仍會封鎖完成。2881* **JSON `{"continue": false, "stopReason": "..."}`**:當事件是由隊員結束其回合所觸發時,會完全停止該隊員,與 `Stop` hook 的行為一致。`stopReason` 會顯示給使用者。當事件是由 `TaskUpdate` 工具觸發時,Claude Code 會忽略 `continue: false`;退出碼 2 仍會封鎖完成。

2856 2882 

2857以下範例會執行測試,並在測試失敗時封鎖任務完成:2883以下範例會執行測試,並在測試失敗時封鎖任務完成:

2858 2884 


2874 Stop2900 Stop

2875</h3>2901</h3>

2876 2902 

2877在主要的 Claude Code agent 完成回應時執行。如果停止是因使用者中斷所致,則不會執行。API 錯誤會改為觸發2903在主要 Claude Code agent 完成回應時執行。若停止是由使用者中斷所造成,則不會執行。API 錯誤會改為觸發

2878[StopFailure](#stopfailure)。2904[StopFailure](#stopfailure)。

2879 2905 

2880<Tip>2906<Tip>

2881 [`/goal`](/docs/zh-TW/goal) 命令是以工作階段為範圍、基於提示詞之 Stop hook 的內建捷徑。當您希望 Claude 持續朝某個條件努力,而不想撰寫 hook 設定時,請使用它。2907 [`/goal`](/docs/zh-TW/goal) 命令是工作階段範圍、以提示詞為基礎之 Stop hook 的內建捷徑。當您希望 Claude 持續朝某個條件努力,又不想撰寫 hook 設定時,請使用它。

2882</Tip>2908</Tip>

2883 2909 

2884<h4 id="stop-input">2910<h4 id="stop-input">

2885 Stop 輸入2911 Stop 輸入

2886</h4>2912</h4>

2887 2913 

2888除了[共通輸入欄位](#common-input-fields)外,Stop hook 還會收到 `stop_hook_active`、`last_assistant_message`、`background_tasks` 與 `session_crons`。當 Claude Code 已因 stop hook 而繼續執行時,`stop_hook_active` 欄位為 `true`。請檢查此值或處理逐字稿,以避免在永遠不會解決的條件上持續封鎖。2914除了[通用輸入欄位](#common-input-fields)之外,Stop hook 還會接收 `stop_hook_active`、`last_assistant_message`、`background_tasks` 與 `session_crons`。當 Claude Code 已因 stop hook 而繼續執行時,`stop_hook_active` 欄位為 `true`。請檢查此值或處理逐字稿,以避免因永遠無法解決的條件而持續封鎖。

2889 2915 

2890Claude Code 套用了 8 次連續繼續的上限:在 stop hook 連續讓回合繼續八次後,Claude Code 會覆寫下一次封鎖並結束該回合。每當 Claude 呼叫工具時,連續繼續的次數就會重設。若要提高上限,請設定 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-TW/env-vars)。2916Claude Code 套用 8 次連續繼續的上限:在 stop hook 連續讓回合繼續八次之後,Claude Code 會覆寫下一次封鎖並結束回合。每當 Claude 呼叫工具時,連續繼續的次數就會重設。若要提高上限,請設定 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-TW/env-vars)。

2891 2917 

2892`last_assistant_message` 欄位包含 Claude 最終回應的文字內容,因此 hook 不需解析逐字稿檔案即可存取。對於針對剛完成之回合採取動作的 hook(例如朗讀或通知 hook),請使用此欄位而非讀取 `transcript_path`:並非所有版本都保證逐字稿檔案在 Stop 時已包含最終訊息。2918`last_assistant_message` 欄位包含 Claude 最終回應的文字內容,因此 hook 無需解析逐字稿檔案即可存取。對於針對剛完成之回合採取動作的 hook(例如朗讀或通知 hook),請使用此欄位,而非讀取 `transcript_path`:在所有版本中,逐字稿檔案並不保證在 Stop 時已包含最終訊息。

2893 2919 

2894`background_tasks` 與 `session_crons` 陣列讓 hook 能夠區分「工作階段已結束」與「工作階段已暫停,正等待背景工作將其喚醒」。當任務登錄可存取時,兩個陣列都會存在;若沒有進行中或已排程的項目,則為空陣列。2920`background_tasks` 與 `session_crons` 陣列讓 hook 能夠區分「工作階段已完成」與「工作階段已暫停,等待背景工作將其喚醒」。當任務登錄可存取時,這兩個陣列都會存在;當沒有任何進行中或已排程的項目時,它們為空。

2895 2921 

2896`background_tasks` 中的每個項目描述一個進行中的任務,並使用下列欄位:2922`background_tasks` 中的每個項目描述一個進行中的任務,並使用以下欄位:

2897 2923 

2898| 欄位 | 說明 |2924| 欄位 | 說明 |

2899| :- | :- |2925| :- | :- |

2900| `id` | 任務識別碼 |2926| `id` | 任務識別碼 |

2901| `type` | 易讀的任務類型標籤,例如 `shell`、`subagent`、`monitor`、`workflow`、`teammate`、`cloud session` 或 `MCP task`。每個標籤識別建立該任務的 Claude Code 功能。對於無法辨識的類型,會退回使用原始的判別值 |2927| `type` | 易於理解的任務類型標籤,例如 `shell`、`subagent`、`monitor`、`workflow`、`teammate`、`cloud session` 或 `MCP task`。每個標籤識別建立該任務的 Claude Code 功能。對於無法辨識的類型,會退回使用原始的區別值 |

2902| `status` | 目前的任務狀態 |2928| `status` | 目前的任務狀態 |

2903| `description` | 自由文字說明,上限為 1000 個字元,遭截斷時字串內會帶有 `… [+N chars]` 標記 |2929| `description` | 自由文字說明,上限為 1000 個字元,截斷時會在字串內加上 `… [+N chars]` 標記 |

2904| `command` | shell 命令列,上限為 1000 個字元。僅存在於 `shell` 任務 |2930| `command` | shell 命令列,上限為 1000 個字元。僅存在於 `shell` 任務 |

2905| `agent_type` | subagent 類型名稱。僅存在於 `subagent` 任務 |2931| `agent_type` | subagent 類型名稱。僅存在於 `subagent` 任務 |

2906| `server` | MCP 伺服器名稱。僅存在於 `monitor` 與 `MCP task` 任務 |2932| `server` | MCP 伺服器名稱。僅存在於 `monitor` 與 `MCP task` 任務 |

2907| `tool` | MCP 工具名稱。僅存在於 `monitor` 與 `MCP task` 任務 |2933| `tool` | MCP 工具名稱。僅存在於 `monitor` 與 `MCP task` 任務 |

2908| `name` | 工作流程名稱。僅存在於 `workflow` 任務 |2934| `name` | 工作流程名稱。僅存在於 `workflow` 任務 |

2909 2935 

2910`session_crons` 中的每個項目描述一個以工作階段為範圍的排程喚醒,來源為 `CronCreate`、`ScheduleWakeup` 與 `/loop`:2936`session_crons` 中的每個項目描述一個工作階段範圍的排程喚醒,來源為 `CronCreate`、`ScheduleWakeup` 與 `/loop`:

2911 2937 

2912| 欄位 | 說明 |2938| 欄位 | 說明 |

2913| :- | :- |2939| :- | :- |

2914| `id` | Cron 任務識別碼 |2940| `id` | Cron 任務識別碼 |

2915| `schedule` | Cron 運算式,例如 `0 9 * * 1-5` |2941| `schedule` | Cron 運算式,例如 `0 9 * * 1-5` |

2916| `recurring` | 對於排程只編碼單一觸發時間的一次性喚醒為 `false`,對於每次比對都會再次觸發的任務為 `true` |2942| `recurring` | 對於排程僅編碼單一觸發時間的一次性喚醒為 `false`,對於每次相符時都會重新觸發的任務為 `true` |

2917| `prompt` | cron 觸發時提交的提示詞,上限為 1000 個字元,並使用相同的 `… [+N chars]` 標記 |2943| `prompt` | cron 觸發時提交的提示詞,上限為 1000 個字元,並使用相同的 `… [+N chars]` 標記 |

2918 2944 

2919以下範例顯示一個帶有一個進行中 shell 任務與一個週期性 cron 的 Stop 輸入:2945以下範例顯示一個包含一個進行中 shell 任務與一個週期性 cron 的 Stop 輸入:

2920 2946 

2921```json theme={null}2947```json theme={null}

2922{2948{


2951 Stop 決策控制2977 Stop 決策控制

2952</h4>2978</h4>

2953 2979 

2954`Stop` 與 `SubagentStop` hook 可以控制 Claude 是否繼續。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,您的 hook 指令碼還可以回傳下列事件專屬欄位:2980`Stop` 與 `SubagentStop` hook 可以控制 Claude 是否繼續。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您的 hook 指令碼還可以回傳以下事件專屬欄位:

2955 2981 

2956| 欄位 | 說明 |2982| 欄位 | 說明 |

2957| :- | :- |2983| :- | :- |

2958| `decision` | `"block"` 會阻止 Claude 停止。省略則允許 Claude 停止 |2984| `decision` | `"block"` 會阻止 Claude 停止。省略則允許 Claude 停止 |

2959| `reason` | 當 `decision` 為 `"block"` 時為必填。告訴 Claude 為何應該繼續 |2985| `reason` | 當 `decision` 為 `"block"` 時為必要欄位。告訴 Claude 為何應該繼續 |

2960| `hookSpecificOutput.additionalContext` | 給 Claude 的非錯誤回饋。對話會繼續,讓 Claude 可以據此採取動作,但與 `decision: "block"` 不同,它在逐字稿中會顯示為 hook 回饋,而非 hook 錯誤 |2986| `hookSpecificOutput.additionalContext` | 給 Claude 的非錯誤回饋。對話會繼續,讓 Claude 可據以行動,但與 `decision: "block"` 不同,它在逐字稿中會顯示為 hook 回饋,而非 hook 錯誤 |

2961 2987 

2962以退出碼 2 封鎖的 hook 會以與 `reason` 相同的方式傳遞:Claude 會收到 stderr 訊息,作為它應該繼續的原因說明。2988以退出碼 2 封鎖的 hook 與 `reason` 的路由方式相同:Claude 會將 stderr 訊息作為其應繼續的原因說明。

2963 2989 

2964```json theme={null}2990```json theme={null}

2965{2991{


2968}2994}

2969```2995```

2970 2996 

2971當 hook 依設計運作並為 Claude 提供指引時,例如「在結束前執行測試套件」,請使用 `additionalContext`。它會透過與 `decision: "block"` 相同的迴圈保護機制(即 `stop_hook_active` 輸入與 8 次連續繼續上限)讓對話繼續,但逐字稿會將其標示為 `Stop hook feedback`,且不會顯示 hook 錯誤通知:2997當 hook 依設計運作並為 Claude 提供指引時(例如「完成前請執行測試套件」),請使用 `additionalContext`。它會透過與 `decision: "block"` 相同的迴圈保護機制讓對話繼續,也就是 `stop_hook_active` 輸入與 8 次連續繼續的上限,但逐字稿會將其標記為 `Stop hook feedback`,且不會顯示 hook 錯誤通知:

2972 2998 

2973```json theme={null}2999```json theme={null}

2974{3000{


2983 StopFailure3009 StopFailure

2984</h3>3010</h3>

2985 3011 

2986當回合因 API 錯誤而結束時,取代 [Stop](#stop) 執行。除了 [`terminalSequence`](#emit-terminal-notifications) 之外,Claude Code 會忽略此 hook 的輸出與退出碼。當 Claude 因速率限制、身分驗證問題或其他 API 錯誤而無法完成回應時,可用來記錄失敗、傳送警示或採取復原動作。3012當回合因 API 錯誤而結束時,取代 [Stop](#stop) 執行。除了 [`terminalSequence`](#emit-terminal-notifications) 之外,Claude Code 會忽略此 hook 的輸出與退出碼。當 Claude 因速率限制、身分驗證問題或其他 API 錯誤而無法完成回應時,可用於記錄失敗、傳送警示或採取復原動作。

2987 3013 

2988<h4 id="stopfailure-input">3014<h4 id="stopfailure-input">

2989 StopFailure 輸入3015 StopFailure 輸入

2990</h4>3016</h4>

2991 3017 

2992除了[共通輸入欄位](#common-input-fields)外,StopFailure hook 還會收到 `error`、選用的 `error_details`,以及選用的 `last_assistant_message`。`error` 欄位識別錯誤類型,並用於 matcher 篩選。3018除了[通用輸入欄位](#common-input-fields)之外,StopFailure hook 還會接收 `error`、選用的 `error_details`,以及選用的 `last_assistant_message`。`error` 欄位識別錯誤類型,並用於 matcher 篩選。

2993 3019 

2994| 欄位 | 說明 |3020| 欄位 | 說明 |

2995| :- | :- |3021| :- | :- |

2996| `error` | 錯誤類型:`rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |3022| `error` | 錯誤類型:`rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |

2997| `error_details` | 關於錯誤的其他詳細資訊(若有) |3023| `error_details` | 關於錯誤的其他細節(若有) |

2998| `last_assistant_message` | 對話中顯示的已呈現錯誤文字。與 `Stop` 及 `SubagentStop` 中此欄位保存 Claude 的對話輸出不同,對於 `StopFailure`,它包含 API 錯誤字串本身,例如 `"API Error: Rate limit reached"` |3024| `last_assistant_message` | 對話中顯示的已呈現錯誤文字。與 `Stop` 和 `SubagentStop` 中此欄位保存 Claude 的對話輸出不同,對於 `StopFailure`,它包含 API 錯誤字串本身,例如 `"API Error: Rate limit reached"` |

2999 3025 

3000```json theme={null}3026```json theme={null}

3001{3027{


3009}3035}

3010```3036```

3011 3037 

3012StopFailure hook 沒有決策控制。它們僅用於通知與記錄日誌。3038StopFailure hook 沒有決策控制。它們僅用於通知與記錄目的。

3013 3039 

3014<h3 id="teammateidle">3040<h3 id="teammateidle">

3015 TeammateIdle3041 TeammateIdle

3016</h3>3042</h3>

3017 3043 

3018在 [agent team](/docs/zh-TW/agent-teams) 隊員結束其回合、即將進入閒置時執行。可用來在隊員停止工作前強制執行品質關卡,例如要求通過 lint 檢查或驗證輸出檔案存在。3044在 [agent team](/docs/zh-TW/agent-teams) 隊員結束其回合、即將進入閒置時執行。可用於在隊員停止工作前強制執行品質關卡,例如要求通過 lint 檢查或確認輸出檔案存在。

3019 3045 

3020TeammateIdle hook 不支援 matcher,每次發生時都會觸發。3046TeammateIdle hook 不支援 matcher,每次發生時都會觸發。

3021 3047 


3023 TeammateIdle 輸入3049 TeammateIdle 輸入

3024</h4>3050</h4>

3025 3051 

3026除了[共通輸入欄位](#common-input-fields)外,TeammateIdle hook 還會收到 `teammate_name` 與 `team_name`。3052除了[通用輸入欄位](#common-input-fields)之外,TeammateIdle hook 還會接收 `teammate_name` 與 `team_name`。

3027 3053 

3028```json theme={null}3054```json theme={null}

3029{3055{


3040| 欄位 | 說明 |3066| 欄位 | 說明 |

3041| :- | :- |3067| :- | :- |

3042| `teammate_name` | 即將進入閒置之隊員的名稱 |3068| `teammate_name` | 即將進入閒置之隊員的名稱 |

3043| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來的版本中移除 |3069| `team_name` | 已棄用。衍生自工作階段的團隊名稱;將在未來版本中移除 |

3044| `agent_id` | 在此事件中,此[共通輸入欄位](#common-input-fields)識別即將進入閒置的[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |3070| `agent_id` | 在此事件中,此[通用輸入欄位](#common-input-fields)識別即將進入閒置的[程序內隊員](/docs/zh-TW/agent-teams#choose-a-display-mode)。可能不存在。需要 Claude Code v2.1.290 或更新版本 |

3045 3071 

3046<h4 id="teammateidle-decision-control">3072<h4 id="teammateidle-decision-control">

3047 TeammateIdle 決策控制3073 TeammateIdle 決策控制


3049 3075 

3050TeammateIdle hook 支援兩種控制隊員行為的方式:3076TeammateIdle hook 支援兩種控制隊員行為的方式:

3051 3077 

3052* **退出碼 2**:隊員會收到 stderr 訊息作為回饋,並繼續工作而不進入閒置。3078* **退出碼 2**:隊員會接收 stderr 訊息作為回饋,並繼續工作而非進入閒置。

3053* **JSON `{"continue": false, "stopReason": "..."}`**:完全停止該隊員,行為與 `Stop` hook 相同。`stopReason` 會顯示給使用者。3079* **JSON `{"continue": false, "stopReason": "..."}`**:完全停止該隊員,與 `Stop` hook 的行為一致。`stopReason` 會顯示給使用者。

3054 3080 

3055以下範例會在允許隊員進入閒置前,檢查建置產物是否存在:3081以下範例會在允許隊員進入閒置之前,檢查建置產物是否存在:

3056 3082 

3057```bash theme={null}3083```bash theme={null}

3058#!/bin/bash3084#!/bin/bash


3069 ConfigChange3095 ConfigChange

3070</h3>3096</h3>

3071 3097 

3072在工作階段期間設定檔變更時執行。可用來稽核設定變更、強制執行安全政策,或封鎖對設定檔未經授權的修改。3098在工作階段期間設定檔變更時執行。可用於稽核設定變更、強制執行安全政策,或封鎖對設定檔的未經授權修改。

3073 3099 

3074當設定檔、受管政策檔或 skill 檔案變更時,Claude Code 會執行 ConfigChange hook。對於受管政策,只有在 `managed-settings.json` 或 `managed-settings.d/` 中的檔案變更時才會執行。對於[伺服器受管設定](/docs/zh-TW/server-managed-settings),以及對 macOS 受管偏好設定或 Windows 登錄政策的變更,它會直接套用而不執行這些 hook。在啟用 [`wslInheritsWindowsSettings`](/docs/zh-TW/settings-reference#wslinheritswindowssettings) 的 WSL 上,它也會在其政策輪詢時套用變更後的 Windows 端受管設定檔,而不執行這些 hook。3100當設定檔、受管政策檔案或 skill 檔案變更時,Claude Code 會執行 ConfigChange hook。對於受管政策,只有在 `managed-settings.json` 或 `managed-settings.d/` 中的檔案變更時才會執行。它會套用[伺服器受管設定](/docs/zh-TW/server-managed-settings)以及 macOS 受管偏好設定或 Windows 登錄政策的變更,但不會執行這些 hook。在啟用 [`wslInheritsWindowsSettings`](/docs/zh-TW/settings-reference#wslinheritswindowssettings) 的 WSL 上,它也會在政策輪詢時套用已變更的 Windows 端受管設定檔,而不執行這些 hook。

3075 3101 

3076matcher 會依設定來源進行篩選:3102matcher 依設定來源進行篩選:

3077 3103 

3078| Matcher | 觸發時機 |3104| Matcher | 觸發時機 |

3079| :- | :- |3105| :- | :- |


3107 ConfigChange 輸入3133 ConfigChange 輸入

3108</h4>3134</h4>

3109 3135 

3110除了[共通輸入欄位](#common-input-fields)外,ConfigChange hook 還會收到 `source`,以及選用的 `file_path`。`source` 欄位指出變更的是哪種設定類型,`file_path` 則提供被修改之特定檔案的路徑。3136除了[通用輸入欄位](#common-input-fields)之外,ConfigChange hook 還會接收 `source` 以及選用的 `file_path`。`source` 欄位指出變更的設定類型,而 `file_path` 提供被修改之特定檔案的路徑。

3111 3137 

3112```json theme={null}3138```json theme={null}

3113{3139{


3124 ConfigChange 決策控制3150 ConfigChange 決策控制

3125</h4>3151</h4>

3126 3152 

3127ConfigChange hook 可以阻止設定變更生效。使用退出碼 2 或 JSON `decision` 即可阻止變更。遭封鎖時,新的設定不會套用到執行中的工作階段。3153ConfigChange hook 可以封鎖設定變更使其不生效。使用退出碼 2 或 JSON `decision` 即可阻止變更。遭封鎖時,新設定不會套用至正在執行的工作階段。

3128 3154 

3129| 欄位 | 說明 |3155| 欄位 | 說明 |

3130| :- | :- |3156| :- | :- |


3138}3164}

3139```3165```

3140 3166 

3141`policy_settings` 的變更無法被封鎖。當電腦上的受管設定檔變更時,hook 仍會針對 `policy_settings` 來源觸發,因此您可以用它們記錄這些編輯,但任何封鎖決策都會被忽略。這可確保企業受管設定一律生效。當[伺服器受管設定](/docs/zh-TW/server-managed-settings)抵達或重新整理時,Claude Code 不會執行 `ConfigChange` hook。3167`policy_settings` 變更無法被封鎖。當機器上的受管設定檔變更時,hook 仍會針對 `policy_settings` 來源觸發,因此您可以用它們記錄這些編輯,但任何封鎖決策都會被忽略。這可確保企業受管設定一律生效。當[伺服器受管設定](/docs/zh-TW/server-managed-settings)抵達或重新整理時,Claude Code 不會執行 `ConfigChange` hook。

3142 3168 

3143Claude Code 會依據 ConfigChange hook JSON 輸出中的封鎖決策採取動作,並捨棄 `systemMessage` 與 `continue`。無論您是以 `reason` 還是以退出碼 2 時的 stderr 封鎖,遭封鎖的變更都不會向您或 Claude 顯示任何訊息。Claude Code 只會在偵錯日誌中寫入一行。3169Claude Code 會依據 ConfigChange hook JSON 輸出中的封鎖決策採取行動,並捨棄 `systemMessage` 與 `continue`。無論您是以 `reason` 封鎖,還是以退出碼 2 搭配 stderr 封鎖,被封鎖的變更都不會向您或 Claude 顯示任何訊息。Claude Code 只會在除錯日誌中寫入一行。

3144 3170 

3145<h3 id="cwdchanged">3171<h3 id="cwdchanged">

3146 CwdChanged3172 CwdChanged

3147</h3>3173</h3>

3148 3174 

3149在主對話中的 shell 命令變更工作目錄時執行,例如 Claude 執行 `cd` 命令時。可用來回應目錄變更:重新載入環境變數、啟用專案專屬的工具鏈,或自動執行設定指令碼。可與 [FileChanged](#filechanged) 搭配,用於像 [direnv](https://direnv.net/) 這類管理各目錄環境的工具。3175當主對話中的 shell 命令變更工作目錄時執行,例如 Claude 執行 `cd` 命令時。可用於對目錄變更做出反應:重新載入環境變數、啟用專案專屬的工具鏈,或自動執行設定指令碼。可與 [FileChanged](#filechanged) 搭配,用於 [direnv](https://direnv.net/) 等管理各目錄環境的工具。

3150 3176 

3151CwdChanged hook 可以存取 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。寫入該檔案的變數會延續到後續的 Bash 命令中,直到下一次 CwdChanged 事件時由 Claude Code 清除。3177CwdChanged hook 可以存取 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。寫入該檔案的變數會保留至後續的 Bash 命令中,直到下一個 CwdChanged 事件時由 Claude Code 清除。

3152 3178 

3153CwdChanged 不支援 matcher,每次發生時都會觸發。3179CwdChanged 不支援 matcher,每次發生時都會觸發。

3154 3180 


3156 CwdChanged 輸入3182 CwdChanged 輸入

3157</h4>3183</h4>

3158 3184 

3159除了[共通輸入欄位](#common-input-fields)外,CwdChanged hook 還會收到 `old_cwd` 與 `new_cwd`。3185除了[通用輸入欄位](#common-input-fields)之外,CwdChanged hook 還會接收 `old_cwd` 與 `new_cwd`。

3160 3186 

3161```json theme={null}3187```json theme={null}

3162{3188{


3173 CwdChanged 輸出3199 CwdChanged 輸出

3174</h4>3200</h4>

3175 3201 

3176除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,CwdChanged hook 還可以回傳 `watchPaths`,以動態設定 [FileChanged](#filechanged) 要監看哪些檔案路徑:3202除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,CwdChanged hook 還可以回傳 `watchPaths`,以動態設定 [FileChanged](#filechanged) 要監看的檔案路徑:

3177 3203 

3178| 欄位 | 說明 |3204| 欄位 | 說明 |

3179| :- | :- |3205| :- | :- |

3180| `watchPaths` | 絕對路徑的陣列。會取代目前的動態監看清單。來自您 `matcher` 設定的路徑一律會被監看。回傳空陣列會清除動態清單,這在進入新目錄時很常見 |3206| `watchPaths` | 絕對路徑的陣列。取代目前的動態監看清單。來自您 `matcher` 設定的路徑一律會被監看。回傳空陣列會清除動態清單,這在進入新目錄時很常見 |

3181 3207 

3182CwdChanged hook 沒有決策控制。它們無法封鎖目錄變更。3208CwdChanged hook 沒有決策控制。它們無法封鎖目錄變更。

3183 3209 

3184Claude Code 會從其 JSON 輸出中讀取 `watchPaths` 與 `systemMessage`,並捨棄 `continue`。在互動式工作階段中,它會將 `systemMessage` 顯示為簡短的終端機通知。該訊息不會傳到 SDK 訊息串流。3210Claude Code 會從其 JSON 輸出中讀取 `watchPaths` 與 `systemMessage`,並捨棄 `continue`。在互動式工作階段中,它會將 `systemMessage` 顯示為簡短的終端機通知。該訊息不會進入 SDK 訊息串流。

3185 3211 

3186<h3 id="directoryadded">3212<h3 id="directoryadded">

3187 DirectoryAdded3213 DirectoryAdded

3188</h3>3214</h3>

3189 3215 

3190在您於工作階段中途以 `/add-dir` 命令新增工作目錄後,或在 SDK 用戶端以 `register_repo_root` 控制請求新增工作目錄後執行。可用來準備新加入的儲存庫,例如安裝其相依套件。3216在您於工作階段中途使用 `/add-dir` 命令新增工作目錄後,或在 SDK 用戶端以 `register_repo_root` 控制請求新增工作目錄後執行。可用於準備新加入的儲存庫,例如安裝其相依套件。

3191 3217 

3192在下列情況中,Claude Code 不會觸發此事件:3218在以下情況下,Claude Code 不會觸發此事件:

3193 3219 

3194* 您以 `--add-dir` 啟動旗標傳入目錄;這些目錄由 [SessionStart](#sessionstart) 涵蓋3220* 您透過 `--add-dir` 啟動旗標傳入目錄;[SessionStart](#sessionstart) 涵蓋這些目錄

3195* 您在 `/permissions` 的 Workspace 分頁中新增目錄3221* 您在 `/permissions` 的 Workspace 分頁上新增目錄

3196* 您新增的目錄已經是工作目錄,或位於工作目錄內3222* 您新增的目錄已經是工作目錄或位於工作目錄之內

3197 3223 

3198Claude Code 會在重新整理沙箱與權限狀態後觸發 DirectoryAdded,因此當您的 hook 執行時,沙箱化的工具已經能看到新目錄。hook 命令本身則在沙箱之外執行。3224Claude Code 會在重新整理沙箱與權限狀態之後觸發 DirectoryAdded,因此當您的 hook 執行時,沙箱化的工具已能看到新目錄。hook 命令本身則在沙箱外執行。

3199 3225 

3200Claude Code 不會等待 hook:新增動作會立即完成,而 hook 會以 600 秒的預設逾時在背景執行。3226Claude Code 不會等待 hook:新增動作會立即完成,而 hook 會在背景以預設的 600 秒逾時執行。

3201 3227 

3202matcher 會依目錄的新增方式進行篩選:3228matcher 依目錄的新增方式進行篩選:

3203 3229 

3204| Matcher | 觸發時機 |3230| Matcher | 觸發時機 |

3205| :- | :- |3231| :- | :- |

3206| `slash_command` | 您以 `/add-dir` 新增目錄 |3232| `slash_command` | 您使用 `/add-dir` 新增目錄 |

3207| `register_repo_root` | SDK 用戶端以 `register_repo_root` 控制請求新增目錄 |3233| `register_repo_root` | SDK 用戶端以 `register_repo_root` 控制請求新增目錄 |

3208 3234 

3209<h4 id="directoryadded-input">3235<h4 id="directoryadded-input">

3210 DirectoryAdded 輸入3236 DirectoryAdded 輸入

3211</h4>3237</h4>

3212 3238 

3213除了[共通輸入欄位](#common-input-fields)外,DirectoryAdded hook 還會收到 `directory` 與 `source`。3239除了[通用輸入欄位](#common-input-fields)之外,DirectoryAdded hook 還會接收 `directory` 與 `source`。

3214 3240 

3215| 欄位 | 說明 |3241| 欄位 | 說明 |

3216| :- | :- |3242| :- | :- |


3228}3254}

3229```3255```

3230 3256 

3231DirectoryAdded hook 沒有決策控制。它們無法封鎖新增動作,因為 hook 執行時新增動作已經完成。Claude Code 會捨棄其 JSON 輸出中的 `continue` 欄位,並依來源以不同方式呈現其餘內容:3257DirectoryAdded hook 沒有決策控制。它們無法封鎖新增動作,因為在 hook 執行時新增已經完成。Claude Code 會捨棄其 JSON 輸出中的 `continue` 欄位,並依來源以不同方式呈現其餘部分:

3232 3258 

3233* `slash_command`:Claude Code 會在下一個對話回合中,將 hook 的 `systemMessage` 作為上下文傳遞給 Claude,而不是顯示給您。逐字稿中會顯示失敗 hook 的數量。完整的失敗輸出會寫入偵錯日誌3259* `slash_command`:Claude Code 會在下一個對話回合將 hook 的 `systemMessage` 作為上下文傳遞給 Claude,而不是顯示給您。失敗 hook 的數量會顯示在逐字稿中。完整的失敗輸出會寫入除錯日誌

3234* `register_repo_root`:Claude Code 只會將 `systemMessage` 輸出與失敗輸出寫入偵錯日誌3260* `register_repo_root`:Claude Code 只會將 `systemMessage` 輸出與失敗輸出寫入除錯日誌

3235 3261 

3236<h3 id="filechanged">3262<h3 id="filechanged">

3237 FileChanged3263 FileChanged

3238</h3>3264</h3>

3239 3265 

3240在受監看的檔案於磁碟上變更時執行。Claude Code 是以檔案系統監看器偵測變更,而不是檢查工具呼叫,因此無論是什麼變更了檔案,它都會執行 hook:`Edit` 或 `Write` 工具呼叫、Claude 以 `Bash` 執行的指令碼,或完全在 Claude Code 之外的程序。常見用途是在專案設定檔變更時重新載入環境變數。3266在受監看的檔案於磁碟上發生變更時執行。Claude Code 透過檔案系統監看器偵測變更,而非檢查工具呼叫,因此無論是什麼變更了該檔案,它都會執行 hook:`Edit` 或 `Write` 工具呼叫、Claude 以 `Bash` 執行的指令碼,或完全在 Claude Code 之外的程序。常見的用途是在專案設定檔變更時重新載入環境變數。

3241 3267 

3242此事件的 `matcher` 有兩個作用:3268此事件的 `matcher` 具有兩種作用:

3243 3269 

3244* **建立監看清單**:該值會以 `|` 分割,每個片段都會被註冊為工作目錄中的字面檔案名稱,因此 `".envrc|.env"` 會恰好監看這兩個檔案。正規表示式模式在此沒有用處:像 `^\.env` 這樣的值會監看一個名稱字面上為 `^\.env` 的檔案。3270* **建立監看清單**:該值會以 `|` 分割,每個片段都會被註冊為工作目錄中的字面檔名,因此 `".envrc|.env"` 會精確監看這兩個檔案。正規表示式在此沒有用處:像 `^\.env` 這樣的值會監看一個字面名稱為 `^\.env` 的檔案。

3245* **篩選要執行的 hook**:當受監看的檔案變更時,同一個值會依據標準的 [matcher 規則](#matcher-patterns),針對變更檔案的基本名稱篩選要執行哪些 hook 群組。3271* **篩選要執行的 hook**:當受監看的檔案變更時,同一個值會依據標準的 [matcher 規則](#matcher-patterns),針對變更檔案的基本名稱篩選要執行哪些 hook 群組。

3246 3272 

3247以下範例會在 `data.csv` 發生任何變更後(包括 `Bash` 命令或外部指令碼重寫該檔案)正規化其換行字元:3273此範例會在任何變更之後(包括 `Bash` 命令或外部指令碼改寫該檔案)正規化 `data.csv` 中的行尾字元:

3248 3274 

3249```json theme={null}3275```json theme={null}

3250{3276{


3264}3290}

3265```3291```

3266 3292 

3267hook 會從 stdin 上 [JSON 輸入](#filechanged-input)的 `file_path` 欄位讀取變更檔案的絕對路徑。其 `grep` 防護條件檢查的正是 `perl` 移除的內容,也就是行尾的 CR,因此正規化之後的那次執行會直接結束而不碰觸檔案。較寬鬆的防護條件會造成無限迴圈,因為即使 `perl -i` 沒有替換任何內容,它仍會重寫檔案,而 Claude Code 在每次重寫後都會再次執行 hook。請將此指令碼儲存於 `/path/to/normalize-line-endings.sh` 並設為可執行:3293此 hook 會從 stdin 上 [JSON 輸入](#filechanged-input)的 `file_path` 欄位讀取變更檔案的絕對路徑。它的 `grep` 防護條件所檢查的,正是 `perl` 所移除的內容,也就是行尾的 CR,因此正規化之後的那次執行會直接結束而不觸碰該檔案。較寬鬆的防護條件會造成無限迴圈,因為即使 `perl -i` 沒有取代任何內容也會改寫檔案,而 Claude Code 會在每次改寫後再次執行此 hook。請將此指令碼儲存於 `/path/to/normalize-line-endings.sh` 並設為可執行:

3268 3294 

3269```bash theme={null}3295```bash theme={null}

3270#!/bin/bash3296#!/bin/bash


3274fi3300fi

3275```3301```

3276 3302 

3277若要確認 hook 是否運作,請要求 Claude 以 `Bash` 命令在 `data.csv` 末尾附加一行 CRLF。Claude Code 會執行 hook,檔案最後會變成 LF 換行。3303若要確認 hook 是否正常運作,請要求 Claude 以 `Bash` 命令在 `data.csv` 附加一行 CRLF。Claude Code 會執行此 hook,檔案最終會使用 LF 行尾。

3278 3304 

3279若要監看無法事先指名的檔案,請從 hook 回傳 [`watchPaths`](#filechanged-output) 以動態更新監看清單。Claude Code 只有在有東西指名要監看的檔案時才會啟動監看器,因此請以 matcher 至少指名一個檔案的 FileChanged 群組,或以回傳 `watchPaths` 的 [SessionStart](#sessionstart-decision-control) 或 [CwdChanged](#cwdchanged) hook 來初始化清單。當受監看的檔案變更時,matcher 仍會篩選要執行哪些 hook 群組,因此請讓處理動態路徑的群組省略 matcher,這樣它會比對每個受監看的檔案,且不會在監看清單中新增任何項目。`"*"` matcher 也會比對每個檔案,但 Claude Code 會像處理其他值一樣將它註冊到監看清單中,作為一個名為 `*` 的字面檔案。3305若要監看無法事先指名的檔案,請從 hook 傳回 [`watchPaths`](#filechanged-output) 以動態更新監看清單。Claude Code 只有在有東西指名要監看的檔案時才會啟動監看器,因此請以一個 matcher 至少指名一個檔案的 FileChanged 群組,或以傳回 `watchPaths` 的 [SessionStart](#sessionstart-decision-control) 或 [CwdChanged](#cwdchanged) hook 來初始化清單。當受監看的檔案變更時,matcher 仍會篩選要執行哪些 hook 群組,因此請讓處理動態路徑的群組省略 matcher,這樣它會符合每個受監看的檔案,且不會在監看清單中新增任何項目。`"*"` matcher 同樣會符合每個檔案,但 Claude Code 會像處理其他值一樣將其註冊到監看清單中,成為一個字面名稱為 `*` 的檔案。

3280 3306 

3281FileChanged hook 可以存取 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。寫入該檔案的變數會延續到後續的 Bash 命令中,直到下一次 [CwdChanged](#cwdchanged) 事件時由 Claude Code 清除。3307FileChanged hook 可以存取 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。寫入該檔案的變數會持續套用到後續的 Bash 命令,直到下一次 [CwdChanged](#cwdchanged) 事件發生時由 Claude Code 清除為止。

3282 3308 

3283<h4 id="filechanged-input">3309<h4 id="filechanged-input">

3284 FileChanged 輸入3310 FileChanged 輸入

3285</h4>3311</h4>

3286 3312 

3287除了[共通輸入欄位](#common-input-fields)外,FileChanged hook 還會收到 `file_path` 與 `event`。3313除了[通用輸入欄位](#common-input-fields)之外,FileChanged hook 還會收到 `file_path` 與 `event`。

3288 3314 

3289| 欄位 | 說明 |3315| 欄位 | 說明 |

3290| :- | :- |3316| :- | :- |

3291| `file_path` | 變更之檔案的絕對路徑 |3317| `file_path` | 變更檔案的絕對路徑 |

3292| `event` | 發生的情況:修改檔案為 `"change"`,建立檔案為 `"add"`,刪除檔案為 `"unlink"` |3318| `event` | 發生的情況:`"change"` 表示檔案已修改,`"add"` 表示檔案已建立,`"unlink"` 表示檔案已刪除 |

3293 3319 

3294```json theme={null}3320```json theme={null}

3295{3321{


3306 FileChanged 輸出3332 FileChanged 輸出

3307</h4>3333</h4>

3308 3334 

3309除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)外,FileChanged hook 還可以回傳 `watchPaths`,以動態更新要監看哪些檔案路徑:3335除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)之外,FileChanged hook 還可以傳回 `watchPaths`,以動態更新要監看的檔案路徑:

3310 3336 

3311| 欄位 | 說明 |3337| 欄位 | 說明 |

3312| :- | :- |3338| :- | :- |

3313| `watchPaths` | 絕對路徑的陣列。會取代目前的動態監看清單。來自您 `matcher` 設定的路徑一律會被監看。當您的 hook 指令碼根據變更的檔案發現其他要監看的檔案時,請使用此欄位 |3339| `watchPaths` | 絕對路徑的陣列。會取代目前的動態監看清單。來自您 `matcher` 設定的路徑一律會被監看。當您的 hook 指令碼根據變更的檔案發現其他需要監看的檔案時,請使用此欄位 |

3314 3340 

3315FileChanged hook 沒有決策控制。它們無法阻止檔案變更發生。3341FileChanged hook 沒有決策控制。它們無法阻止檔案變更發生。

3316 3342 

3317Claude Code 會從其 JSON 輸出中讀取 `watchPaths` 與 `systemMessage`,並捨棄 `continue`。在互動式工作階段中,它會將 `systemMessage` 顯示為簡短的終端機通知。該訊息不會傳到 SDK 訊息串流。3343Claude Code 會從其 JSON 輸出讀取 `watchPaths` 與 `systemMessage`,並捨棄 `continue`。在互動式工作階段中,它會將 `systemMessage` 顯示為簡短的終端機通知。該訊息不會傳送到 SDK 訊息串流。

3318 3344 

3319<h3 id="worktreecreate">3345<h3 id="worktreecreate">

3320 WorktreeCreate3346 WorktreeCreate


3322 3348 

3323在 Claude Code 建立 worktree 時執行,例如以下情況:3349在 Claude Code 建立 worktree 時執行,例如以下情況:

3324 3350 

3325* 您使用 `claude --worktree` 啟動工作階段3351* 您以 `claude --worktree` 啟動工作階段

3326* Claude 在工作階段中建立 worktree,並使用 [`EnterWorktree`](/docs/zh-TW/tools-reference) 工具切換進入3352* Claude 在工作階段期間建立 worktree,並以 [`EnterWorktree`](/docs/zh-TW/tools-reference) 工具切換進入

3327* [subagent 使用 `isolation: "worktree"`](/docs/zh-TW/sub-agents#choose-the-subagent-scope)3353* [subagent 使用 `isolation: "worktree"`](/docs/zh-TW/sub-agents#choose-the-subagent-scope)

3328* [工作流程](/docs/zh-TW/workflows#migrate-many-files-in-parallel)在其自己的 worktree 中執行 agent3354* [工作流程](/docs/zh-TW/workflows#migrate-many-files-in-parallel)在自己的 worktree 中執行 agent

3329* Claude Code 將[背景工作階段](/docs/zh-TW/agent-view#how-file-edits-are-isolated)隔離在其自己的 worktree 中3355* Claude Code 將[背景工作階段](/docs/zh-TW/agent-view#how-file-edits-are-isolated)隔離在其自己的 worktree 中

3330* `worktree` 模式下的 [`claude remote-control`](/docs/zh-TW/remote-control#start-a-remote-control-session) 在其自己的 worktree 中啟動工作階段3356* `worktree` 模式下的 [`claude remote-control`](/docs/zh-TW/remote-control#start-a-remote-control-session) 在自己的 worktree 中啟動工作階段

3331 3357 

3332當 Claude 透過 Bash 工具執行 `git worktree add` 而非呼叫 `EnterWorktree` 時,您的 WorktreeCreate hook 不會執行。若要檢查或封鎖該命令,請新增一個使用 `Bash` matcher 的 [`PreToolUse`](#pretooluse) hook。3358當 Claude 透過 Bash 工具執行 `git worktree add`,而非呼叫 `EnterWorktree` 時,您的 WorktreeCreate hook 不會執行。若要檢查或封鎖該命令,請新增一個使用 `Bash` matcher 的 [`PreToolUse`](#pretooluse) hook。

3333 3359 

3334預設情況下,Claude Code 會使用 `git worktree` 建立隔離的工作副本。設定 WorktreeCreate hook 會取代該預設的 git 行為,讓您可以使用不同的版本控制系統,例如 SVN、Perforce 或 Mercurial。3360根據預設,Claude Code 會使用 `git worktree` 建立隔離的工作副本。設定 WorktreeCreate hook 會取代該預設的 git 行為,讓您可以使用其他版本控制系統,例如 SVN、Perforce 或 Mercurial。

3335 3361 

3336由於 hook 會完全取代預設行為,因此不會處理 [`.worktreeinclude`](/docs/zh-TW/worktrees#copy-gitignored-files-into-worktrees)。如果需要將 `.env` 等本機設定檔複製到新的 worktree 中,請在 hook 腳本內執行此操作。3362由於此 hook 會完全取代預設行為,因此不會處理 [`.worktreeinclude`](/docs/zh-TW/worktrees#copy-gitignored-files-into-worktrees)。如果您需要將 `.env` 等本機設定檔複製到新的 worktree,請在 hook 指令碼中完成。

3337 3363 

3338hook 必須回傳所建立之 worktree 目錄的路徑。Claude Code 會將此路徑用作隔離工作階段的工作目錄。關於每種 hook 類型如何回傳路徑,請參閱 [WorktreeCreate 輸出](#worktreecreate-output)。3364此 hook 必須傳回所建立之 worktree 目錄的路徑。Claude Code 會將此路徑用作隔離工作階段的工作目錄。關於各 hook 類型如何傳回路徑,請參閱 [WorktreeCreate 輸出](#worktreecreate-output)。

3339 3365 

3340Claude Code 會依據 hook 是否成功以及回傳的路徑採取行動,並捨棄 `systemMessage` 和 `continue`。3366Claude Code 會依據 hook 是否成功以及傳回的路徑採取動作,並捨棄 `systemMessage` 與 `continue`。

3341 3367 

3342此範例會建立 SVN 工作副本,並印出供 Claude Code 使用的路徑。請將儲存庫 URL 替換為您自己的 URL:3368此範例會建立 SVN 工作副本,並印出路徑供 Claude Code 使用。請將儲存庫 URL 替換為您自己的:

3343 3369 

3344```json theme={null}3370```json theme={null}

3345{3371{


3358}3384}

3359```3385```

3360 3386 

3361此 hook 會從 stdin 上的 JSON 輸入讀取 worktree 的 `name`,將全新副本 checkout 至新目錄,並印出目錄路徑。最後一行的 `echo` 就是 Claude Code 讀取為 worktree 路徑的內容。請將其他任何輸出重新導向至 stderr,以免干擾路徑。3387此 hook 會從 stdin 上的 JSON 輸入讀取 worktree 的 `name`,將全新副本簽出到新目錄,並印出該目錄路徑。最後一行的 `echo` 就是 Claude Code 讀取為 worktree 路徑的內容。請將其他任何輸出重新導向至 stderr,以免干擾該路徑。

3362 3388 

3363<h4 id="worktreecreate-input">3389<h4 id="worktreecreate-input">

3364 WorktreeCreate 輸入3390 WorktreeCreate 輸入

3365</h4>3391</h4>

3366 3392 

3367除了[通用輸入欄位](#common-input-fields)之外,WorktreeCreate hook 還會收到 `name` 欄位。這是新 worktree 的 slug 識別碼,可由使用者指定或自動產生,例如 `bold-oak-a3f2`。3393除了[通用輸入欄位](#common-input-fields)之外,WorktreeCreate hook 還會收到 `name` 欄位。這是新 worktree 的 slug 識別碼,可能由使用者指定或自動產生,例如 `bold-oak-a3f2`。

3368 3394 

3369```json theme={null}3395```json theme={null}

3370{3396{


3380 WorktreeCreate 輸出3406 WorktreeCreate 輸出

3381</h4>3407</h4>

3382 3408 

3383WorktreeCreate hook 不使用標準的允許/封鎖決策模型,而是由 hook 的成功或失敗決定結果。hook 必須回傳所建立之 worktree 目錄的路徑:3409WorktreeCreate hook 不使用標準的允許/封鎖決策模型。取而代之的是,由 hook 的成功或失敗決定結果。此 hook 必須傳回所建立之 worktree 目錄的路徑:

3384 3410 

3385* **命令 hook**(`type: "command"`):將路徑印為 stdout 的最後一個非空白行。Claude Code 在讀取該行之前會移除 ANSI 跳脫碼,因此在您的 `echo` 之前印出的 shell 啟動橫幅會被忽略。請將其他任何 hook 輸出重新導向至 stderr。3411* **命令 hook**(`type: "command"`):將路徑印為 stdout 的最後一個非空白行。Claude Code 會在讀取該行之前移除 ANSI 跳脫碼,因此在您的 `echo` 之前印出的 shell 啟動橫幅會被忽略。請將其他任何 hook 輸出重新導向至 stderr。

3386* **HTTP hook**(`type: "http"`):在回應主體中回傳 `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }`。3412* **HTTP hook**(`type: "http"`):在回應主體中傳回 `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }`。

3387 3413 

3388如果 hook 失敗或未產生路徑,worktree 建立會失敗並顯示錯誤。3414如果 hook 失敗或未產生路徑,worktree 建立會以錯誤失敗。

3389 3415 

3390Claude Code 會以 hook 執行時所在的目錄為基準解析相對路徑,並摺疊其中的任何 `.` 或 `..` 片段。如果解析後的路徑不是 Claude Code 可進入的目錄,工作階段會印出指出該路徑的錯誤,並以代碼 1 退出。3416Claude Code 會以 hook 執行時所在的目錄為基準解析相對路徑,並化簡其中的 `.` 或 `..` 片段。如果所得路徑不是 Claude Code 可以進入的目錄,工作階段會印出指名該路徑的錯誤,並以代碼 1 結束。

3391 3417 

3392Claude Code 會拒絕包含 `.` 或 `..` 片段的絕對路徑,以及任何經過儲存庫根目錄下符號連結的路徑,因為提交至儲存庫的符號連結可能會將 worktree 重新導向至儲存庫之外。錯誤訊息會指出遭拒絕的路徑元件。請回傳未經過儲存庫內符號連結的正規化路徑。在 v2.1.216 之前,worktree 建立會直接依循 hook 的路徑,而不進行此檢查。3418Claude Code 會拒絕包含 `.` 或 `..` 片段的絕對路徑,以及任何經過儲存庫根目錄之下符號連結的路徑,因為提交到儲存庫的符號連結可能會將 worktree 重新導向到儲存庫之外。錯誤會指名被拒絕的路徑元件。請傳回一個不經過儲存庫內部符號連結的正規化路徑。在 v2.1.216 之前,worktree 建立會直接沿用 hook 的路徑,而不進行此項檢查。

3393 3419 

3394<h3 id="worktreeremove">3420<h3 id="worktreeremove">

3395 WorktreeRemove3421 WorktreeRemove

3396</h3>3422</h3>

3397 3423 

3398在 Claude Code 清理由您的 [`WorktreeCreate`](#worktreecreate) hook 所建立的 worktree 時執行。此事件會在下列情況觸發:3424在 Claude Code 清理由您的 [`WorktreeCreate`](#worktreecreate) hook 所建立的 worktree 時執行。此事件會在以下情況觸發:

3399 3425 

3400* 您退出互動式 [worktree 工作階段](/docs/zh-TW/worktrees#start-claude-in-a-worktree),並在 Claude Code 提示時選擇移除 worktree3426* 您結束互動式 [worktree 工作階段](/docs/zh-TW/worktrees#start-claude-in-a-worktree),並在 Claude Code 提示時選擇移除 worktree

3401* 您退出尚未[命名](/docs/zh-TW/sessions#name-your-sessions)的互動式 worktree 工作階段,Claude Code 未發現任何已變更或未追蹤的檔案,並在不提示您的情況下移除 worktree3427* 您結束一個尚未[命名](/docs/zh-TW/sessions#name-your-sessions)的互動式 worktree 工作階段,Claude Code 沒有找到已變更或未追蹤的檔案,並在不提示您的情況下移除 worktree

3402* 您刪除在該 worktree 中執行的[背景工作階段](/docs/zh-TW/agent-view#what-deleting-a-session-removes)3428* 您刪除在該 worktree 中執行的[背景工作階段](/docs/zh-TW/agent-view#what-deleting-a-session-removes)

3403* 您在工作階段中要求 Claude 結束並移除 worktree,而 Claude 使用 [`ExitWorktree`](/docs/zh-TW/tools-reference) 工具將其移除3429* 您在工作階段期間要求 Claude 結束並移除 worktree,而 Claude 以 [`ExitWorktree`](/docs/zh-TW/tools-reference) 工具將其移除

3404* 由 [`claude remote-control`](/docs/zh-TW/remote-control#start-a-remote-control-session) 以 `worktree` 模式啟動的工作階段在未當機的情況下結束,且 Claude Code 在其 worktree 中未發現任何已變更或未追蹤的檔案,也沒有新的提交3430* 由 [`claude remote-control`](/docs/zh-TW/remote-control#start-a-remote-control-session) 以 `worktree` 模式啟動的工作階段在未當機的情況下結束,且 Claude Code 在其 worktree 中沒有找到已變更或未追蹤的檔案,也沒有新的提交

3405* 您在 `claude remote-control` 以 `worktree` 模式啟動的工作階段仍在執行時停止它,且 Claude Code 在其 worktree 中未發現任何已變更或未追蹤的檔案,也沒有新的提交3431* 您在 `claude remote-control` 以 `worktree` 模式啟動的工作階段仍在執行時停止它,且 Claude Code 在這些工作階段的 worktree 中沒有找到已變更或未追蹤的檔案,也沒有新的提交

3406 3432 

3407當 subagent 或工作流程 agent 完成時,Claude Code 會保留您的 WorktreeCreate hook 為其建立的 worktree,且不會執行您的 WorktreeRemove hook。工作完成後,請自行移除這些 worktree。3433當 subagent 或工作流程 agent 完成時,Claude Code 會保留您的 WorktreeCreate hook 為其建立的 worktree,且不會執行您的 WorktreeRemove hook。請在工作完成後自行移除這些 worktree。

3408 3434 

3409對於 `ExitWorktree` 呼叫或 `claude remote-control` 清理,Claude Code 不會在您的 hook 執行前提示您。除非呼叫傳入 [`discard_changes: true`](/docs/zh-TW/agent-sdk/typescript#exitworktree),否則 `ExitWorktree` 會拒絕移除由 hook 建立的 worktree,這使得您的 hook 成為該途徑上的最後一道檢查。3435對於 `ExitWorktree` 呼叫或 `claude remote-control` 清理,Claude Code 在您的 hook 執行前不會提示您。除非呼叫傳入 [`discard_changes: true`](/docs/zh-TW/agent-sdk/typescript#exitworktree),否則 `ExitWorktree` 會拒絕移除由 hook 建立的 worktree,這使得您的 hook 成為該途徑上的最後一道檢查。

3410 3436 

3411Claude Code 使用 git 尋找已變更或未追蹤的檔案,因此在不是 git checkout 或不在 git checkout 內的 worktree 中,即使目錄包含未提交的工作,也不會找到任何檔案。請在 WorktreeRemove hook 刪除任何內容之前檢查這類工作。3437Claude Code 使用 git 尋找已變更或未追蹤的檔案,因此在不是 git 簽出(或不位於 git 簽出內)的 worktree 中,即使目錄中含有未提交的工作,它也找不到任何檔案。請在您的 WorktreeRemove hook 刪除任何內容之前檢查這類工作。

3412 3438 

3413對於基於 git 的 worktree,Claude Code 會使用 `git worktree remove` 自動處理清理。如果您設定了 WorktreeCreate hook,請搭配 WorktreeRemove hook 來控制清理:3439對於以 git 為基礎的 worktree,Claude Code 會以 `git worktree remove` 自動處理清理。如果您設定了 WorktreeCreate hook,請搭配 WorktreeRemove hook 來控制清理:

3414 3440 

3415* **沒有 WorktreeRemove hook**:對於結束時或透過 `ExitWorktree` 進行的移除,Claude Code 會改用 git;而在 `claude remote-control` 清理時則保留 worktree:3441* **沒有 WorktreeRemove hook**:對於結束時或透過 `ExitWorktree` 進行的移除,Claude Code 會改用 git;而在 `claude remote-control` 進行清理時則會保留 worktree:

3416 * **您結束 worktree 工作階段,或 Claude 呼叫 `ExitWorktree`**:Claude Code 會以類似 `git worktree remove --force` 的方式移除 WorktreeCreate hook 回傳的路徑,因此 git 可識別的 worktree 會被移除。git 無法識別的 worktree,例如您的 hook 使用非 git 版本控制系統建立的 worktree,會保留在磁碟上。3442 * **您結束 worktree 工作階段,或 Claude 呼叫 `ExitWorktree`**:Claude Code 會以如同 `git worktree remove --force` 的方式移除您的 WorktreeCreate hook 所傳回的路徑,因此 git 能識別的 worktree 會被移除。git 無法識別的 worktree(例如您的 hook 以非 git 版本控制系統建立的 worktree)則會保留在磁碟上。

3417 * **`claude remote-control` 清理工作階段的 worktree**:worktree 會保留在磁碟上,執行 `claude remote-control` 的終端機會顯示 `worktree removal failed, kept: <path>`。3443 * **`claude remote-control` 清理工作階段的 worktree**:worktree 會保留在磁碟上,且執行 `claude remote-control` 的終端機會顯示 `worktree removal failed, kept: <path>`。

3418 * **您刪除背景工作階段**:請參閱[刪除工作階段會移除的內容](/docs/zh-TW/agent-view#what-deleting-a-session-removes)。3444 * **您刪除背景工作階段**:請參閱[刪除工作階段會移除哪些內容](/docs/zh-TW/agent-view#what-deleting-a-session-removes)。

3419* **Hook 以 0 退出**:worktree 視為已移除。Claude Code 不會從 hook 讀取任何其他內容,因此請確保您的 hook 已刪除該目錄。3445* **Hook 以 0 結束**:worktree 會被視為已移除。Claude Code 不會從 hook 讀取其他任何內容,因此請確保您的 hook 已刪除該目錄。

3420* **Hook 以非零值退出**:如果 `worktree_path` 上的目錄在之後仍然存在,移除就會失敗,且 worktree 會留在磁碟上,不會改用 git。在以非零值退出之前已刪除目錄的 hook 視為已移除。關於失敗如何回報,請參閱 [WorktreeRemove 輸入](#worktreeremove-input)。3446* **Hook 以非零值結束**:如果 `worktree_path` 處的目錄之後仍然存在,移除即告失敗,worktree 會保留在磁碟上,且不會改用 git。在以非零值結束前已刪除目錄的 hook 會被視為已移除。關於失敗如何回報,請參閱 [WorktreeRemove 輸入](#worktreeremove-input)。

3421 3447 

3422Claude Code 絕不會刪除屬於由 hook 建立之 worktree 的分支,因為它只知道您的 WorktreeCreate hook 所回傳的路徑。如果您的 WorktreeCreate hook 會建立分支,請在 WorktreeRemove hook 中刪除它。3448Claude Code 絕不會刪除屬於 hook 建立之 worktree 的分支,因為它只知道您的 WorktreeCreate hook 所傳回的路徑。如果您的 WorktreeCreate hook 會建立分支,請在您的 WorktreeRemove hook 中刪除它。

3423 3449 

3424Claude Code 會捨棄 WorktreeRemove hook 的 [JSON 輸出欄位](#json-output),例如 `systemMessage` 和 `continue`。3450Claude Code 會捨棄 WorktreeRemove hook 的 [JSON 輸出欄位](#json-output),例如 `systemMessage` 與 `continue`。

3425 3451 

3426對於背景工作階段的刪除,Claude Code 會在執行 hook 之前驗證儲存的 worktree 路徑,並拒絕本身是符號連結或經過儲存庫根目錄以下符號連結的路徑。在該途徑上,只有當您在 [agent view](/docs/zh-TW/agent-view#what-deleting-a-session-removes) 中確認刪除時,hook 才會針對仍含有檔案的 worktree 執行;對於這類 worktree,[`claude rm`](/docs/zh-TW/agent-view#manage-sessions-from-the-shell) 則會保留工作階段和 worktree。在 v2.1.216 之前,hook 會在不進行這些檢查的情況下對儲存的路徑執行。3452對於背景工作階段的刪除,Claude Code 會在執行 hook 前驗證所儲存的 worktree 路徑,並拒絕本身為符號連結或經過儲存庫根目錄之下符號連結的路徑。在該途徑上,只有當您在 [agent view](/docs/zh-TW/agent-view#what-deleting-a-session-removes) 中確認刪除時,hook 才會針對仍包含檔案的 worktree 執行;對於此類 worktree,[`claude rm`](/docs/zh-TW/agent-view#manage-sessions-from-the-shell) 則會保留工作階段與 worktree。在 v2.1.216 之前,hook 會在未經這些檢查的情況下針對所儲存的路徑執行。

3427 3453 

3428Claude Code 會將 WorktreeCreate 回傳的路徑作為 `worktree_path` 傳入 hook 輸入。此範例會讀取該路徑並移除目錄:3454Claude Code 會將 WorktreeCreate 傳回的路徑作為 hook 輸入中的 `worktree_path` 傳入。此範例會讀取該路徑並移除目錄:

3429 3455 

3430```json theme={null}3456```json theme={null}

3431{3457{


3448 WorktreeRemove 輸入3474 WorktreeRemove 輸入

3449</h4>3475</h4>

3450 3476 

3451除了[通用輸入欄位](#common-input-fields)之外,WorktreeRemove hook 還會收到 `worktree_path` 欄位,這是要移除之 worktree 的絕對路徑。3477除了[通用輸入欄位](#common-input-fields)之外,WorktreeRemove hook 還會收到 `worktree_path` 欄位,也就是要移除之 worktree 的絕對路徑。

3452 3478 

3453```json theme={null}3479```json theme={null}

3454{3480{


3460}3486}

3461```3487```

3462 3488 

3463WorktreeRemove hook 的退出碼決定結果。當 hook 以非零值退出,且 `worktree_path` 上的目錄在之後仍然存在時,移除就會失敗:3489WorktreeRemove hook 的退出碼決定結果。當 hook 以非零值結束,且 `worktree_path` 處的目錄之後仍然存在時,移除即告失敗:

3464 3490 

3465* worktree 會留在磁碟上,且 hook 的命令和 stderr 會寫入[偵錯日誌](#debug-hooks)。3491* worktree 會保留在磁碟上,hook 的命令與 stderr 會寫入[偵錯日誌](#debug-hooks)。

3466* 如果您當時正在刪除背景工作階段,該工作階段也會保留。[agent view](/docs/zh-TW/agent-view#what-deleting-a-session-removes) 中的拒絕訊息會回報 hook 的結束方式(例如 `exited 1`)、引用其 stderr 的開頭,並說明再次刪除工作階段是否仍會移除該目錄。3492* 如果您當時正在刪除背景工作階段,該工作階段也會保留。[agent view](/docs/zh-TW/agent-view#what-deleting-a-session-removes) 中的拒絕訊息會回報 hook 的結束方式(例如 `exited 1`)、引用其 stderr 的開頭,並說明再次刪除工作階段是否仍會移除該目錄。

3467* 如果 `claude remote-control` 正在清理工作階段的 worktree,執行它的終端機會顯示 `worktree removal failed, kept: <path>`。3493* 如果 `claude remote-control` 當時正在清理工作階段的 worktree,執行它的終端機會顯示 `worktree removal failed, kept: <path>`。

3468 3494 

3469<h3 id="precompact">3495<h3 id="precompact">

3470 PreCompact3496 PreCompact

3471</h3>3497</h3>

3472 3498 

3473在 Claude Code 即將執行壓縮操作之前執行。3499在 Claude Code 即將執行壓縮作業之前執行。

3474 3500 

3475matcher 值表示壓縮是手動觸發還是自動觸發:3501matcher 值表示壓縮是手動或自動觸發的:

3476 3502 

3477| Matcher | 觸發時機 |3503| Matcher | 觸發時機 |

3478| :- | :- |3504| :- | :- |

3479| `manual` | `/compact` |3505| `manual` | `/compact` |

3480| `auto` | 對話達到[自動壓縮視窗](/docs/zh-TW/model-config#set-the-auto-compact-window)時自動壓縮 |3506| `auto` | 對話達到[自動壓縮視窗](/docs/zh-TW/model-config#set-the-auto-compact-window)時的自動壓縮,以及[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction) |

3481 3507 

3482以退出碼 2 退出可封鎖壓縮。對於手動 `/compact`,stderr 訊息會顯示給使用者。您也可以回傳包含 `"decision": "block"` 的 JSON 來封鎖。3508以代碼 2 結束可封鎖壓縮。對於手動的 `/compact`,stderr 訊息會顯示給使用者。您也可以傳回包含 `"decision": "block"` 的 JSON 來封鎖。

3483 3509 

3484封鎖自動壓縮的效果取決於其觸發時機。如果壓縮是在達到上下文限制之前主動觸發,Claude Code 會略過壓縮,對話會在未壓縮的情況下繼續。如果壓縮是為了從 API 已回傳的上下文限制錯誤中復原而觸發,底層錯誤會浮現,目前的請求會失敗。3510封鎖自動壓縮會依觸發時機而產生不同效果。如果壓縮是在達到上下文上限之前主動觸發的,Claude Code 會略過它,對話會在未壓縮的情況下繼續。如果壓縮是為了從 API 已傳回的上下文上限錯誤中復原而觸發的,底層錯誤會浮現,且目前的請求會失敗。

3485 3511 

3486Claude Code 會捨棄 PreCompact hook 的 `systemMessage` 和 `continue` 欄位。3512Claude Code 會捨棄 PreCompact hook 的 `systemMessage` 與 `continue` 欄位。

3487 3513 

3488<h4 id="precompact-input">3514<h4 id="precompact-input">

3489 PreCompact 輸入3515 PreCompact 輸入

3490</h4>3516</h4>

3491 3517 

3492除了[通用輸入欄位](#common-input-fields)之外,PreCompact hook 還會收到 `trigger` 和 `custom_instructions`。對於 `manual`,`custom_instructions` 包含使用者傳入 `/compact` 的內容,若未傳入任何內容則為 `null`。對於 `auto`,`custom_instructions` 為 `null`。3518除了[通用輸入欄位](#common-input-fields)之外,PreCompact hook 還會收到 `trigger` 與 `custom_instructions`。對於 `manual`,`custom_instructions` 包含使用者傳入 `/compact` 的內容,未傳入任何內容時則為 `null`。對於 `auto`,`custom_instructions` 為 `null`。

3493 3519 

3494```json theme={null}3520```json theme={null}

3495{3521{


3506 PostCompact3532 PostCompact

3507</h3>3533</h3>

3508 3534 

3509在 Claude Code 完成壓縮操作之後執行。使用此事件來回應壓縮後的新狀態,例如記錄所產生的摘要或更新外部狀態。Claude Code 會捨棄 PostCompact hook 的 `systemMessage` 和 `continue` 欄位。3535在 Claude Code 完成壓縮作業後執行。使用此事件對新的壓縮後狀態做出反應,例如記錄產生的摘要或更新外部狀態。Claude Code 會捨棄 PostCompact hook 的 `systemMessage` 與 `continue` 欄位。

3510 3536 

3511適用與 `PreCompact` 相同的 matcher 值:3537適用與 `PreCompact` 相同的 matcher 值:

3512 3538 

3513| Matcher | 觸發時機 |3539| Matcher | 觸發時機 |

3514| :- | :- |3540| :- | :- |

3515| `manual` | `/compact` 之後 |3541| `manual` | `/compact` 之後 |

3516| `auto` | 對話達到[自動壓縮視窗](/docs/zh-TW/model-config#set-the-auto-compact-window)並自動壓縮之後 |3542| `auto` | 對話達到[自動壓縮視窗](/docs/zh-TW/model-config#set-the-auto-compact-window)時的自動壓縮之後,以及[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction)之後 |

3517 3543 

3518<h4 id="postcompact-input">3544<h4 id="postcompact-input">

3519 PostCompact 輸入3545 PostCompact 輸入

3520</h4>3546</h4>

3521 3547 

3522除了[通用輸入欄位](#common-input-fields)之外,PostCompact hook 還會收到 `trigger` 和 `compact_summary`。`compact_summary` 欄位包含壓縮操作所產生的對話摘要。3548除了[通用輸入欄位](#common-input-fields)之外,PostCompact hook 還會收到 `trigger` 與 `compact_summary`。`compact_summary` 欄位包含壓縮作業所產生的對話摘要。

3523 3549 

3524```json theme={null}3550```json theme={null}

3525{3551{


3538 PreModelSwitch3564 PreModelSwitch

3539</h3>3565</h3>

3540 3566 

3541在 Claude Code 套用您或用戶端所請求的模型切換之前執行。使用它來封鎖切換、要求確認,或在切換發生前顯示切換的成本。3567在 Claude Code 套用您或用戶端所請求的模型切換之前執行。可用來封鎖切換、要求確認,或在切換發生前顯示切換的成本。

3542 3568 

3543PreModelSwitch 需要 Claude Code v2.1.251 或更新版本。Claude Code 會針對下列請求執行它:3569PreModelSwitch 需要 Claude Code v2.1.251 或更新版本。Claude Code 會針對以下請求執行它:

3544 3570 

3545* `/model <name>` 和 `/model` 選擇器3571* `/model <name>` 與 `/model` 選擇器

3546* `Option+P` 或 `Alt+P` 模型選擇器3572* `Option+P` 或 `Alt+P` 模型選擇器

3547* `/config` 中的 Model 設定3573* `/config` 中的 Model 設定

3548* 開啟[快速模式](/docs/zh-TW/fast-mode)且此舉會變更工作階段的模型時3574* 開啟[快速模式](/docs/zh-TW/fast-mode)且因此變更工作階段的模型時

3549* 來自 [Agent SDK](/docs/zh-TW/agent-sdk/typescript#query-object) 主機或 [Remote Control](/docs/zh-TW/remote-control) 的 `set_model` 請求,或 `apply_flag_settings` 請求中的模型變更3575* 來自 [Agent SDK](/docs/zh-TW/agent-sdk/typescript#query-object) 主機或 [Remote Control](/docs/zh-TW/remote-control) 的 `set_model` 請求,或 `apply_flag_settings` 請求中的模型變更

3550 3576 

3551Claude Code 不會針對其自行進行的切換執行 PreModelSwitch hook,例如[自動模型備援](/docs/zh-TW/model-config#automatic-model-fallback)或在您恢復工作階段時還原模型。這些變更只會觸發 [PostModelSwitch](#postmodelswitch)。3577對於 Claude Code 自行進行的切換,例如[自動模型備援](/docs/zh-TW/model-config#automatic-model-fallback)或在您繼續工作階段時還原模型,Claude Code 不會執行 PreModelSwitch hook。這些變更只會觸發 [PostModelSwitch](#postmodelswitch)。

3552 3578 

3553Claude Code 會將 matcher 與工作階段所要切換之模型的標準名稱進行比對,並忽略任何 `[1m]` 後綴。別名(例如 `opus`)、帶日期的模型 ID,以及供應商專屬 ID(例如 Amazon Bedrock 模型 ID)都會比對到其解析後的同一個標準名稱,因此 `claude-opus-5` 涵蓋 Opus 5 的所有寫法。3579Claude Code 會將 matcher 與工作階段要切換到的模型之標準名稱進行比對,並忽略任何 `[1m]` 後綴。像 `opus` 這樣的別名、帶日期的模型 ID,以及供應商特定的 ID(例如 Amazon Bedrock 模型 ID)都會符合它們所解析到的同一個標準名稱,因此 `claude-opus-5` 涵蓋了 Opus 5 的所有寫法。

3554 3580 

3555當 Claude Code 無法判斷目標的標準名稱時,例如只有您的 [LLM 閘道](/docs/zh-TW/llm-gateway)才知道的自訂模型 ID,它會執行每一個 PreModelSwitch hook,無論 matcher 為何。因此,會封鎖切換的 hook 應檢查其輸入中的 `to_model`,而非僅依賴 matcher。3581當 Claude Code 無法判斷目標的標準名稱時(例如只有您的 [LLM 閘道](/docs/zh-TW/llm-gateway)知道的自訂模型 ID),它會不論 matcher 為何而執行每個 PreModelSwitch hook。因此,進行封鎖的 hook 應檢查其輸入中的 `to_model`,而非僅依賴 matcher。

3556 3582 

3557請將 matcher 寫成確切名稱、以 `|` 分隔的清單(例如 `claude-opus-4-6|claude-opus-5`),或正規表示式(例如 `.*opus.*`)。此範例使用確切名稱 matcher,並同時檢查 hook 輸入中的 `to_model`,因此它會以退出碼 2 退出來拒絕切換至 Opus 4.6,並允許任何其他目標通過:3583請將 matcher 寫成精確名稱、以 `|` 分隔的清單(例如 `claude-opus-4-6|claude-opus-5`),或正規表示式(例如 `.*opus.*`)。此範例使用精確名稱 matcher,並同時檢查 hook 輸入中的 `to_model`,因此會以代碼 2 結束來拒絕切換到 Opus 4.6,並放行其他任何目標:

3558 3584 

3559<Tabs>3585<Tabs>

3560 <Tab title="macOS/Linux">3586 <Tab title="macOS/Linux">

3561 此命令使用 `jq` 檢查 `to_model`:3587 此命令以 `jq` 檢查 `to_model`:

3562 3588 

3563 ```json theme={null}3589 ```json theme={null}

3564 {3590 {


3580 </Tab>3606 </Tab>

3581 3607 

3582 <Tab title="Windows (PowerShell)">3608 <Tab title="Windows (PowerShell)">

3583 註冊一個透過 PowerShell 執行腳本的命令 hook:3609 註冊一個透過 PowerShell 執行指令碼的命令 hook:

3584 3610 

3585 ```json theme={null}3611 ```json theme={null}

3586 {3612 {


3607 }3633 }

3608 ```3634 ```

3609 3635 

3610 將此腳本儲存至專案中的 `.claude/hooks/block-opus-46.ps1`:3636 將此指令碼儲存至專案中的 `.claude/hooks/block-opus-46.ps1`:

3611 3637 

3612 ```powershell theme={null}3638 ```powershell theme={null}

3613 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3639 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3620 </Tab>3646 </Tab>

3621</Tabs>3647</Tabs>

3622 3648 

3623若要確認 hook 是否正常運作,請在執行其他模型的工作階段中執行 `/model claude-opus-4-6`。Claude Code 會保留目前的模型,並回報 PreModelSwitch hook 已封鎖此切換,並以您的訊息作為原因。3649若要確認 hook 是否正常運作,請在執行其他模型的工作階段中執行 `/model claude-opus-4-6`。Claude Code 會保留目前的模型,並回報 PreModelSwitch hook 封鎖了切換,並以您的訊息作為原因。

3624 3650 

3625<h4 id="premodelswitch-input">3651<h4 id="premodelswitch-input">

3626 PreModelSwitch 輸入3652 PreModelSwitch 輸入

3627</h4>3653</h4>

3628 3654 

3629除了[通用輸入欄位](#common-input-fields)之外,PreModelSwitch hook 還會收到此表格中的欄位。最後五個欄位描述將對話重新傳送至新模型的成本,讓 hook 可以在切換發生前顯示該數字。3655除了[通用輸入欄位](#common-input-fields)之外,PreModelSwitch hook 還會收到此表中的欄位。最後五個欄位描述將對話重新傳送給新模型的成本,讓 hook 可以在切換發生前顯示該數字。

3630 3656 

3631| 欄位 | 類型 | 說明 |3657| 欄位 | 類型 | 說明 |

3632| :- | :- | :- |3658| :- | :- | :- |

3633| `from_model` | string | 切換前的模型 ID |3659| `from_model` | string | 切換前的模型 ID |

3634| `to_model` | string | 切換後的模型 ID。matcher 會與此模型的標準名稱進行比對 |3660| `to_model` | string | 切換後的模型 ID。matcher 會與此模型的標準名稱進行比對 |

3635| `requested_model` | string 或 `null` | 請求所指定的模型:別名(例如 `opus`)、完整模型 ID,或在請求預設模型時為 `null` |3661| `requested_model` | string 或 `null` | 請求所指名的模型:像 `opus` 這樣的別名、完整的模型 ID,或在請求預設模型時為 `null` |

3636| `source` | string | 請求的來源:`"command"` 表示 `/model <name>`、`/config` 中的 Model 設定或開啟快速模式;`"picker"` 表示模型選擇器;`"sdk"` 表示來自 Agent SDK 主機或 Remote Control 的 `set_model` 請求,或 `apply_flag_settings` 請求中的模型變更 |3662| `source` | string | 請求的來源:`"command"` 表示 `/model <name>`、`/config` 中的 Model 設定,或開啟快速模式;`"picker"` 表示模型選擇器;`"sdk"` 表示來自 Agent SDK 主機或 Remote Control 的 `set_model` 請求,或 `apply_flag_settings` 請求中的模型變更 |

3637| `context_tokens` | number | 下一個請求作為提示詞重新傳送的 token 數:主對話中最後一個回應的輸入、快取讀取、快取建立和輸出 token 的總和。在第一個回應之前為 `0` |3663| `context_tokens` | number | 下一個請求作為提示詞重新傳送的 token 數:主要對話中最後一個回應的輸入、快取讀取、快取建立與輸出 token 的總和。在第一個回應之前為 `0` |

3638| `prompt_cache_warm` | boolean | 目前模型的提示快取是否可能仍處於熱狀態,亦即切換會放棄該快取 |3664| `prompt_cache_warm` | boolean | 目前模型的提示快取是否可能仍處於溫熱狀態,也就是切換會使其失效 |

3639| `cache_ttl` | string | Claude Code 為此工作階段請求的[提示快取存留期](/docs/zh-TW/prompt-caching#cache-lifetime):`"5m"` 或 `"1h"` |3665| `cache_ttl` | string | Claude Code 為此工作階段請求的[提示快取存留期](/docs/zh-TW/prompt-caching#cache-lifetime):`"5m"` 或 `"1h"` |

3640| `estimated_cache_write_usd` | number | 以 `cache_ttl` 費率將 `context_tokens` 寫入 `to_model` 提示快取的預估成本(美元),不含下一個回應。伺服器可能不需要重新快取整個上下文,因此請將其視為預估值 |3666| `estimated_cache_write_usd` | number | 以 `cache_ttl` 費率在 `to_model` 上將 `context_tokens` 寫入提示快取的估計成本(美元),不包含下一個回應。伺服器可能不需要重新快取整個上下文,因此請將其視為估計值 |

3641| `pricing` | string | Claude Code 計算 `estimated_cache_write_usd` 的方式:`"configured"` 表示使用您組織已設定的自有費率,`"catalog"` 表示使用牌價,`"default"` 表示 `to_model` 沒有已知價格而 Claude Code 採用預設費率 |3667| `pricing` | string | Claude Code 為 `estimated_cache_write_usd` 計價的方式:`"configured"` 表示您的組織已設定自己的費率並依此計價,`"catalog"` 表示依牌價計價,`"default"` 表示 `to_model` 沒有已知價格,Claude Code 假設了預設費率 |

3642 3668 

3643此範例顯示在執行 Sonnet 5 的工作階段中執行 `/model opus` 的輸入:3669此範例顯示在執行 Sonnet 5 的工作階段中執行 `/model opus` 時的輸入:

3644 3670 

3645```json theme={null}3671```json theme={null}

3646{3672{


3666 3692 

3667`PreModelSwitch` hook 可以取消切換、要求使用者確認,或讓切換繼續進行。退出碼 2 或頂層的 `decision: "block"` 會取消切換。3693`PreModelSwitch` hook 可以取消切換、要求使用者確認,或讓切換繼續進行。退出碼 2 或頂層的 `decision: "block"` 會取消切換。

3668 3694 

3669若要進行更精細的控制,請在 `hookSpecificOutput` 物件中回傳 `permissionDecision` 和 `permissionDecisionReason`,與 [PreToolUse](#pretooluse-decision-control) 相同。`PreModelSwitch` 接受 `"allow"`、`"deny"` 和 `"ask"`。它不接受 `"defer"`、`updatedInput` 或 `additionalContext`。下表說明這兩個欄位:3695若要進行更精細的控制,請在 `hookSpecificOutput` 物件中傳回 `permissionDecision` 與 `permissionDecisionReason`,如同 [PreToolUse](#pretooluse-decision-control)。`PreModelSwitch` 接受 `"allow"`、`"deny"` 與 `"ask"`。它不接受 `"defer"`、`updatedInput` 或 `additionalContext`。下表說明這兩個欄位:

3670 3696 

3671| 欄位 | 說明 |3697| 欄位 | 說明 |

3672| :- | :- |3698| :- | :- |

3673| `permissionDecision` | `"allow"` 會繼續進行,並略過[提示快取處於熱狀態時 Claude Code 顯示的確認](/docs/zh-TW/prompt-caching#switching-models)。`"deny"` 會取消切換。`"ask"` 會提示使用者確認 |3699| `permissionDecision` | `"allow"` 會繼續進行,並略過[提示快取溫熱時 Claude Code 顯示的確認](/docs/zh-TW/prompt-caching#switching-models)。`"deny"` 會取消切換。`"ask"` 會提示使用者確認 |

3674| `permissionDecisionReason` | 對於 `"deny"`,會作為切換遭封鎖的原因顯示給使用者,或作為 `set_model` 請求的錯誤回傳。對於 `"ask"`,會顯示在確認提示中。對於 `"allow"` 則會被忽略 |3700| `permissionDecisionReason` | 對於 `"deny"`,會作為切換遭封鎖的原因顯示給使用者,或作為 `set_model` 請求的錯誤傳回。對於 `"ask"`,會顯示在確認提示中。對於 `"allow"` 則會被忽略 |

3675 3701 

3676只有互動式工作階段中的 `/model` 可以顯示 `"ask"` 提示。在其他所有使用介面上,包括使用 `-p` 旗標的非互動模式、`/config` 和 `set_model` 請求,Claude Code 都會將 `"ask"` 視為拒絕。3702只有互動式工作階段中的 `/model` 能顯示 `"ask"` 提示。在其他所有使用介面上,包括使用 `-p` 旗標的非互動模式、`/config` 以及 `set_model` 請求,Claude Code 都會將 `"ask"` 視為拒絕。

3677 3703 

3678此範例會要求使用者確認,並引用 `context_tokens` 中的 token 數:3704此範例會要求使用者確認,並引用 `context_tokens` 中的 token 數:

3679 3705 


3687}3713}

3688```3714```

3689 3715 

3690當多個 PreModelSwitch hook 回傳不同決策時,優先順序為 `deny` > `ask` > `allow`。3716當多個 PreModelSwitch hook 傳回不同的決策時,優先順序為 `deny` > `ask` > `allow`。

3691 3717 

3692無論決策為何,Claude Code 都會向使用者顯示 hook 回傳的任何 `systemMessage`,因此回報成本的 hook 可以回傳 `{"systemMessage": "..."}` 並以 0 退出。3718無論決策為何,Claude Code 都會向使用者顯示您的 hook 所傳回的任何 `systemMessage`,因此回報成本的 hook 可以傳回 `{"systemMessage": "..."}` 並以 0 結束。

3693 3719 

3694在逾時之前未回應的 PreModelSwitch hook 會封鎖切換。關於逾時在其他事件上的效果,請參閱[逾時](#timeouts)。此事件的預設逾時為 30 秒。`PreModelSwitch` 只會執行 `command`、`http` 和 `mcp_tool` hook,因此 `prompt` 和 `agent` 的預設值不適用。3720未在逾時前回應的 PreModelSwitch hook 會封鎖切換。關於逾時對其他事件的影響,請參閱[逾時](#timeouts)。此事件的預設逾時為 30 秒。`PreModelSwitch` 只執行 `command`、`http` 與 `mcp_tool` hook,因此 `prompt` 與 `agent` 的預設值不適用。

3695 3721 

3696以 0 或 2 以外的代碼退出且未印出 JSON 決策的 hook,屬於非封鎖錯誤,如[其他退出碼](#other-exit-codes)中所述。3722以 0 或 2 以外的代碼結束且未印出 JSON 決策的 hook 屬於非封鎖錯誤,如[其他退出碼](#other-exit-codes)中所述。

3697 3723 

3698<h3 id="postmodelswitch">3724<h3 id="postmodelswitch">

3699 PostModelSwitch3725 PostModelSwitch

3700</h3>3726</h3>

3701 3727 

3702在工作階段的模型變更之後執行。使用它為 Claude 提供特定模型的指引,而無需編輯每個 CLAUDE.md,例如適用於特定模型的全組織指令。3728在工作階段的模型變更後執行。可用來為 Claude 提供特定模型的指引,而無需編輯每個 CLAUDE.md,例如適用於特定模型的組織層級指令。

3703 3729 

3704PostModelSwitch 需要 Claude Code v2.1.251 或更新版本。它無法封鎖,因為模型已經變更。Claude Code 會在下列任何變更之後執行 PostModelSwitch hook:3730PostModelSwitch 需要 Claude Code v2.1.251 或更新版本。由於模型已經變更,它無法進行封鎖。Claude Code 會在以下任何變更後執行 PostModelSwitch hook:

3705 3731 

3706* 您或用戶端所請求的切換3732* 您或用戶端所請求的切換

3707* [自動模型備援](/docs/zh-TW/model-config#automatic-model-fallback),這會變更工作階段的模型3733* [自動模型備援](/docs/zh-TW/model-config#automatic-model-fallback),它會變更工作階段的模型

3708* [`opusplan`](/docs/zh-TW/model-config#opusplan-model-setting) 等設定進入或離開 plan mode3734* 像 [`opusplan`](/docs/zh-TW/model-config#opusplan-model-setting) 這樣的設定進入或離開 plan mode

3709* Claude Code 在您恢復工作階段時還原模型3735* Claude Code 在您繼續工作階段時還原模型

3710 3736 

3711當[備援模型鏈](/docs/zh-TW/model-config#fallback-model-chains)中的模型為某個回合提供服務時,Claude Code 不會執行 PostModelSwitch hook,因為該替換僅持續一個回合,且不會變更工作階段的模型。3737當[備援模型鏈](/docs/zh-TW/model-config#fallback-model-chains)中的模型負責某個回合時,Claude Code 不會執行 PostModelSwitch hook,因為該替代只持續一個回合,且不會變更工作階段的模型。

3712 3738 

3713matcher 遵循與 [PreModelSwitch](#premodelswitch) 相同的規則:Claude Code 會將其與工作階段所切換至之模型的標準名稱進行比對。3739matcher 遵循與 [PreModelSwitch](#premodelswitch) 相同的規則:Claude Code 會將其與工作階段切換到的模型之標準名稱進行比對。

3714 3740 

3715此範例會在工作階段的模型變更為任何 Opus 模型時新增指引:3741此範例會在工作階段的模型變更為任何 Opus 模型時加入指引:

3716 3742 

3717```json theme={null}3743```json theme={null}

3718{3744{


3732}3758}

3733```3759```

3734 3760 

3735若要確認 hook 是否正常運作,請在執行其他模型的工作階段中切換至 Opus 模型,例如在 Sonnet 工作階段中執行 `/model opus`,然後詢問 Claude 關於目前模型有哪些指引。3761若要確認 hook 是否正常運作,請從執行其他模型的工作階段切換到 Opus 模型,例如在 Sonnet 工作階段中執行 `/model opus`,然後詢問 Claude 它對目前模型有什麼指引。

3736 3762 

3737<h4 id="postmodelswitch-input">3763<h4 id="postmodelswitch-input">

3738 PostModelSwitch 輸入3764 PostModelSwitch 輸入

3739</h4>3765</h4>

3740 3766 

3741PostModelSwitch hook 會收到與 [PreModelSwitch](#premodelswitch-input) 相同的欄位,其中 `hook_event_name` 設為 `"PostModelSwitch"`,並多了兩個 `source` 值:`"auto"` 表示自動備援或 Claude Code 自行進行的其他變更,`"resume"` 表示在您恢復工作階段時所還原的模型。3767PostModelSwitch hook 會收到與 [PreModelSwitch](#premodelswitch-input) 相同的欄位,其中 `hook_event_name` 設為 `"PostModelSwitch"`,並多了兩個 `source` 值:`"auto"` 表示自動備援或 Claude Code 自行進行的其他變更,`"resume"` 表示您繼續工作階段時所還原的模型。

3742 3768 

3743當 `source` 為 `"auto"` 時,`requested_model` 為 `null`。當 `source` 為 `"resume"` 時,它是 Claude Code 所還原的已儲存模型設定。3769當 `source` 為 `"auto"` 時,`requested_model` 為 `null`。當 `source` 為 `"resume"` 時,它是 Claude Code 所還原的已儲存模型設定。

3744 3770 


3746 PostModelSwitch 決策控制3772 PostModelSwitch 決策控制

3747</h4>3773</h4>

3748 3774 

3749Claude Code 會在退出碼為 0 時擷取 hook 的[純文字 stdout](#exit-code-0),或擷取 JSON 輸出中的 `additionalContext`,並在切換後隨下一個請求傳遞給 Claude。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您還可以回傳:3775Claude Code 會在以 0 結束時取得您 hook 的[純文字 stdout](#exit-code-0),或取得 JSON 輸出中的 `additionalContext`,並在切換後隨下一個請求傳遞給 Claude。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)之外,您還可以傳回:

3750 3776 

3751| 欄位 | 說明 |3777| 欄位 | 說明 |

3752| :- | :- |3778| :- | :- |

3753| `additionalContext` | 隨下一個請求加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |3779| `additionalContext` | 隨下一個請求加入 Claude 上下文的字串。請參閱[為 Claude 新增上下文](#add-context-for-claude) |

3754 3780 

3755如果 hook 在您傳送下一個提示詞後五秒內尚未完成,Claude Code 會在不含該輸出的情況下傳送該請求,並改為將輸出附加至之後的請求。如果模型在下一個請求之前變更多次,Claude Code 只會傳遞最後一次切換之目標模型的輸出。3781如果在您傳送下一個提示詞後五秒內 hook 尚未完成,Claude Code 會在不含該輸出的情況下傳送該請求,並改為將其附加到再下一個請求。如果模型在下一個請求之前變更了數次,Claude Code 只會傳遞最後一次切換之目標模型的輸出。

3756 3782 

3757<h3 id="sessionend">3783<h3 id="sessionend">

3758 SessionEnd3784 SessionEnd

3759</h3>3785</h3>

3760 3786 

3761在 Claude Code 工作階段結束時執行。適用於清理工作、記錄工作階段3787在 Claude Code 工作階段結束時執行。適用於清理工作、記錄工作階段

3762統計資料或儲存工作階段狀態。支援使用 matcher 依退出原因篩選。3788統計資料或儲存工作階段狀態。支援以 matcher 依結束原因進行篩選。

3763 3789 

3764hook 輸入中的 `reason` 欄位表示工作階段結束的原因:3790hook 輸入中的 `reason` 欄位表示工作階段結束的原因:

3765 3791 

3766| 原因 | 說明 |3792| 原因 | 說明 |

3767| :- | :- |3793| :- | :- |

3768| `clear` | 使用 `/clear` 命令清除工作階段 |3794| `clear` | 以 `/clear` 命令清除工作階段 |

3769| `resume` | 透過互動式 `/resume` 切換工作階段 |3795| `resume` | 透過互動式 `/resume` 切換工作階段 |

3770| `logout` | 使用者已登出 |3796| `logout` | 使用者已登出 |

3771| `prompt_input_exit` | 使用者在提示詞輸入可見時退出 |3797| `prompt_input_exit` | 使用者在提示詞輸入可見時結束 |

3772| `other` | 其他退出原因 |3798| `other` | 其他結束原因 |

3773| `bypass_permissions_disabled` | 已於 v2.1.234 移除;Claude Code 不會傳送此值。請將其從您的 `SessionEnd` matcher 中移除 |3799| `bypass_permissions_disabled` | 已於 v2.1.234 移除;Claude Code 不會傳送此值。請將其從您的 `SessionEnd` matcher 中移除 |

3774 3800 

3775<h4 id="sessionend-input">3801<h4 id="sessionend-input">

3776 SessionEnd 輸入3802 SessionEnd 輸入

3777</h4>3803</h4>

3778 3804 

3779除了[通用輸入欄位](#common-input-fields)之外,SessionEnd hook 還會收到表示工作階段結束原因的 `reason` 欄位。所有值請參閱上方的[原因表格](#sessionend)。3805除了[通用輸入欄位](#common-input-fields)之外,SessionEnd hook 還會收到表示工作階段結束原因的 `reason` 欄位。所有值請參閱上方的[原因表](#sessionend)。

3780 3806 

3781```json theme={null}3807```json theme={null}

3782{3808{


3788}3814}

3789```3815```

3790 3816 

3791SessionEnd hook 沒有決策控制。它們無法封鎖工作階段終止,但可以執行清理工作。Claude Code 會捨棄其 [JSON 輸出欄位](#json-output),例如 `systemMessage`。3817SessionEnd hook 沒有決策控制。它們無法阻止工作階段終止,但可以執行清理工作。Claude Code 會捨棄其 [JSON 輸出欄位](#json-output),例如 `systemMessage`。

3792 3818 

3793SessionEnd hook 的預設逾時為 1.5 秒。此逾時適用於您退出、執行 `/clear` 或透過互動式 `/resume` 切換工作階段時。您可以透過兩種方式給予 hook 更多時間:3819SessionEnd hook 的預設逾時為 1.5 秒。它適用於您結束、執行 `/clear`,或以互動式 `/resume` 切換工作階段時。您可以透過兩種方式給予 hook 更多時間:

3794 3820 

3795* **個別 hook 的 `timeout`**:在該 hook 的設定中設定 `timeout`。整體預算會自動提高,以符合設定檔中最高的個別 hook `timeout`,上限為 60 秒。如果您以此方式提高預算,沒有自己 `timeout` 的 hook 仍會保留預設值。在外掛程式提供的 hook 上設定的逾時不會提高預算。3821* **個別 hook 的 `timeout`**:在該 hook 的設定中設定 `timeout`。整體預算會自動提高,以符合您設定檔中最高的個別 hook `timeout`,最多 60 秒。如果您以此方式提高預算,沒有自己 `timeout` 的 hook 仍會保留預設值。在外掛程式提供的 hook 上設定的逾時不會提高預算。

3796* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**:以毫秒為單位設定此環境變數,以明確覆寫預算。您設定的值也會成為每個沒有自己 `timeout` 之 hook 的逾時。3822* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**:以毫秒為單位設定此環境變數,以明確覆寫預算。您設定的值也會成為每個沒有自己 `timeout` 之 hook 的逾時。

3797 3823 

3798此範例將預算設為 5 秒:3824此範例將預算設為 5 秒:


3807 Elicitation3833 Elicitation

3808</h3>3834</h3>

3809 3835 

3810在 MCP 伺服器於任務進行中請求使用者輸入時執行。預設情況下,Claude Code 會顯示互動式對話方塊供使用者回應。hook 可以攔截此請求並以程式方式回應,完全略過對話方塊。3836在 MCP 伺服器於工作進行中請求使用者輸入時執行。根據預設,Claude Code 會顯示互動式對話方塊讓使用者回應。hook 可以攔截此請求並以程式方式回應,完全略過對話方塊。

3811 3837 

3812關於包含設定項目和腳本的完整 hook,請參閱[從腳本回答表單請求](#answer-a-form-request-from-a-script)。3838關於包含設定項目與指令碼的完整 hook,請參閱[從指令碼回答表單請求](#answer-a-form-request-from-a-script)。

3813 3839 

3814matcher 欄位會與 MCP 伺服器名稱進行比對。3840matcher 欄位會與 MCP 伺服器名稱進行比對。

3815 3841 


3817 Elicitation 輸入3843 Elicitation 輸入

3818</h4>3844</h4>

3819 3845 

3820除了[通用輸入欄位](#common-input-fields)之外,Elicitation hook 還會收到 `mcp_server_name`、`message`,以及選用的 `mode`、`url`、`elicitation_id` 和 `requested_schema` 欄位。3846除了[通用輸入欄位](#common-input-fields)之外,Elicitation hook 還會收到 `mcp_server_name`、`message`,以及選用的 `mode`、`url`、`elicitation_id` 與 `requested_schema` 欄位。

3821 3847 

3822對於表單模式的 elicitation(最常見的情況):3848表單模式的 elicitation,也就是最常見的情況:

3823 3849 

3824```json theme={null}3850```json theme={null}

3825{3851{


3839}3865}

3840```3866```

3841 3867 

3842對於用於瀏覽器型身分驗證的 URL 模式 elicitation:3868URL 模式的 elicitation,用於以瀏覽器為基礎的身分驗證:

3843 3869 

3844```json theme={null}3870```json theme={null}

3845{3871{


3858 Elicitation 輸出3884 Elicitation 輸出

3859</h4>3885</h4>

3860 3886 

3861Elicitation hook 可以代替使用者回答請求、拒絕或取消請求,或將其交由對話方塊處理。若要回答、拒絕或取消,請以 0 退出並印出包含 `action` 的 `hookSpecificOutput` 物件。伺服器會收到您的回答,且不會出現對話方塊。此表格的每一列顯示針對某一結果應回傳的內容,以及 MCP 伺服器所收到的內容:3887Elicitation hook 可以代替使用者回答請求、拒絕或取消請求,或將其留給對話方塊處理。若要回答、拒絕或取消,請以 0 結束並印出含有 `action` 的 `hookSpecificOutput` 物件。伺服器會收到您的答覆,且不會出現對話方塊。此表的每一列都顯示針對某個結果應傳回的內容,以及 MCP 伺服器會收到的內容:

3862 3888 

3863| 目的 | 回傳 | 伺服器收到 |3889| 目的 | 傳回 | 伺服器收到 |

3864| :- | :- | :- |3890| :- | :- | :- |

3865| 代替使用者回答 | `"action": "accept"`,並在 `content` 中提供表單欄位值 | `accept` 以及您的 `content` |3891| 代替使用者回答 | `"action": "accept"`,並在 `content` 中提供表單欄位值 | `accept` 以及您的 `content` |

3866| 拒絕請求 | `"action": "decline"` | `decline` |3892| 拒絕請求 | `"action": "decline"` | `decline` |

3867| 取消請求 | `"action": "cancel"` | `cancel` |3893| 取消請求 | `"action": "cancel"` | `cancel` |

3868| 將請求交由使用者處理 | 不輸出任何內容,並以退出碼 0 退出 | 使用者從[對話方塊](/docs/zh-TW/mcp#respond-to-mcp-elicitation-requests)提供的回答 |3894| 將請求留給使用者 | 無輸出,退出碼為 0 | 使用者在[對話方塊](/docs/zh-TW/mcp#respond-to-mcp-elicitation-requests)中的答覆 |

3869 3895 

3870此輸出會回答 [Elicitation 輸入](#elicitation-input)中所示的表單模式請求。`content` 中的鍵是該請求 `requested_schema` 中的屬性名稱:3896此輸出會回答 [Elicitation 輸入](#elicitation-input)中所示的表單模式請求。`content` 中的鍵是該請求之 `requested_schema` 中的屬性名稱:

3871 3897 

3872```json theme={null}3898```json theme={null}

3873{3899{


3892}3918}

3893```3919```

3894 3920 

3895在對話方塊中,選取 **Decline** 會傳送 `decline`,按下 `Esc` 則會傳送 `cancel`,因此請回傳您希望伺服器看到的那一個。3921在對話方塊中,選取 **Decline** 會傳送 `decline`,按下 `Esc` 則會傳送 `cancel`,因此請傳回您希望伺服器看到的那一個。

3896 3922 

3897對於 URL 模式的請求,回傳 `accept` 的 hook 會略過對話方塊,因此 URL 永遠不會開啟。3923對於 URL 模式的請求,傳回 `accept` 的 hook 會略過對話方塊,因此 URL 永遠不會開啟。

3898 3924 

3899無論您回傳哪一個 `action`,Claude Code 都會捨棄 Elicitation hook JSON 輸出中的 `reason`、`systemMessage` 和 `continue`。3925無論您傳回哪個 `action`,Claude Code 都會捨棄 Elicitation hook JSON 輸出中的 `reason`、`systemMessage` 與 `continue`。

3900 3926 

3901<h4 id="other-ways-to-decline-an-elicitation">3927<h4 id="other-ways-to-decline-an-elicitation">

3902 拒絕 elicitation 的其他方式3928 拒絕 elicitation 的其他方式

3903</h4>3929</h4>

3904 3930 

3905您的 hook 也可以透過下列方式拒絕。伺服器收到的 `decline` 與 `"action": "decline"` 相同:3931您的 hook 也可以透過以下方式拒絕。伺服器會收到與 `"action": "decline"` 相同的 `decline`:

3906 3932 

3907* **以代碼 2 退出**:Claude Code 會忽略同一個 hook 所印出的 `hookSpecificOutput`3933* **以代碼 2 結束**:Claude Code 會忽略同一個 hook 所印出的 `hookSpecificOutput`

3908* **印出頂層的 `"decision": "block"`**:此封鎖會覆寫同一輸出中的 `action`3934* **印出頂層的 `"decision": "block"`**:封鎖會覆寫同一輸出中的 `action`

3909 3935 

3910當多個 hook 比對到同一個請求時,其中一個 hook 的拒絕會覆寫另一個 hook 的 `accept` 或 `cancel`。3936當多個 hook 符合同一個請求時,其中一個的拒絕會覆寫另一個的 `accept` 或 `cancel`。

3911 3937 

3912此腳本會拒絕 URL 模式的請求,並將表單請求交由對話方塊處理:3938此指令碼會拒絕 URL 模式的請求,並將表單請求留給對話方塊處理:

3913 3939 

3914```bash theme={null}3940```bash theme={null}

3915#!/bin/bash3941#!/bin/bash


3918fi3944fi

3919```3945```

3920 3946 

3921使用者和伺服器都不會看到您的 hook 拒絕的原因,因為 Claude Code 不會顯示您的 stderr 或 `reason`。3947使用者和伺服器都看不到您的 hook 拒絕的原因,因為 Claude Code 不會顯示您的 stderr 或您的 `reason`。

3922 3948 

3923從 v2.1.105 起直到 v2.1.284 修正之前,Claude Code 會忽略 `Elicitation` 和 `ElicitationResult` hook 的頂層 `decision`。3949從 v2.1.105 起直到 v2.1.284 修正為止,Claude Code 會忽略 `Elicitation` 與 `ElicitationResult` hook 的頂層 `decision`。

3924 3950 

3925<h4 id="answer-a-form-request-from-a-script">3951<h4 id="answer-a-form-request-from-a-script">

3926 從腳本回答表單請求3952 從指令碼回答表單請求

3927</h4>3953</h4>

3928 3954 

3929此範例會代替使用者回答一個重複出現的問題。名為 `issue-tracker` 的 MCP 伺服器在表單中詢問專案代碼,而 hook 會填入 `DOCS`。當 `project_key` 是表單唯一的欄位時,腳本會接受請求。對於任何其他請求,它不會印出任何內容,因此會出現對話方塊。3955此範例會代替使用者回答一個反覆出現的問題。名為 `issue-tracker` 的 MCP 伺服器會在表單中要求專案鍵,而 hook 會填入 `DOCS`。當 `project_key` 是表單唯一的欄位時,指令碼會接受。對於其他任何請求,它不會印出任何內容,因此會出現對話方塊。

3930 3956 

3931<Tabs>3957<Tabs>

3932 <Tab title="macOS/Linux">3958 <Tab title="macOS/Linux">

3933 在設定檔中為此事件註冊命令 hook,並以伺服器名稱作為 matcher:3959 在您的設定檔中為此事件註冊命令 hook,並以伺服器名稱作為 matcher:

3934 3960 

3935 ```json theme={null}3961 ```json theme={null}

3936 {3962 {


3951 }3977 }

3952 ```3978 ```

3953 3979 

3954 將此腳本儲存至專案中的 `.claude/hooks/answer-project-key.sh`,並使用 `chmod +x` 使其可執行:3980 將此指令碼儲存至專案中的 `.claude/hooks/answer-project-key.sh`,並以 `chmod +x` 設為可執行:

3955 3981 

3956 ```bash theme={null}3982 ```bash theme={null}

3957 #!/bin/bash3983 #!/bin/bash


3965 </Tab>3991 </Tab>

3966 3992 

3967 <Tab title="Windows (PowerShell)">3993 <Tab title="Windows (PowerShell)">

3968 註冊一個透過 PowerShell 執行腳本的命令 hook,並以伺服器名稱作為 matcher:3994 註冊一個透過 PowerShell 執行指令碼的命令 hook,並以伺服器名稱作為 matcher:

3969 3995 

3970 ```json theme={null}3996 ```json theme={null}

3971 {3997 {


3992 }4018 }

3993 ```4019 ```

3994 4020 

3995 將此腳本儲存至專案中的 `.claude/hooks/answer-project-key.ps1`:4021 將此指令碼儲存至專案中的 `.claude/hooks/answer-project-key.ps1`:

3996 4022 

3997 ```powershell theme={null}4023 ```powershell theme={null}

3998 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json4024 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json


4011 </Tab>4037 </Tab>

4012</Tabs>4038</Tabs>

4013 4039 

4014若要確認 hook 是否正常運作,請使用 `claude --debug` 啟動 Claude Code,並給 Claude 一個會讓伺服器詢問專案代碼的任務。不會出現對話方塊,且[偵錯日誌](#debug-hooks)中會有一行以 `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}` 結尾。4040若要確認 hook 是否正常運作,請以 `claude --debug` 啟動 Claude Code,並給 Claude 一項會讓伺服器要求專案鍵的工作。不會出現對話方塊,且[偵錯日誌](#debug-hooks)中會有一行以 `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}` 結尾。

4015 4041 

4016<h3 id="elicitationresult">4042<h3 id="elicitationresult">

4017 ElicitationResult4043 ElicitationResult

4018</h3>4044</h3>

4019 4045 

4020在使用者回應 MCP elicitation 之後執行。hook 可以在回應傳回 MCP 伺服器之前觀察、修改或封鎖該回應。4046在使用者回應 MCP elicitation 後執行。hook 可以在回應傳回 MCP 伺服器之前觀察、修改或封鎖該回應。

4021 4047 

4022當 [Elicitation](#elicitation) hook 回答了請求時,Claude Code 會將該回答傳送至伺服器,而不執行 ElicitationResult hook。4048當 [Elicitation](#elicitation) hook 回答了請求時,Claude Code 會將該答覆傳送給伺服器,而不執行 ElicitationResult hook。

4023 4049 

4024matcher 欄位會與 MCP 伺服器名稱進行比對。4050matcher 欄位會與 MCP 伺服器名稱進行比對。

4025 4051 


4027 ElicitationResult 輸入4053 ElicitationResult 輸入

4028</h4>4054</h4>

4029 4055 

4030除了[通用輸入欄位](#common-input-fields)之外,ElicitationResult hook 還會收到 `mcp_server_name`、`action`,以及選用的 `mode`、`elicitation_id` 和 `content` 欄位。4056除了[通用輸入欄位](#common-input-fields)之外,ElicitationResult hook 還會收到 `mcp_server_name`、`action`,以及選用的 `mode`、`elicitation_id` 與 `content` 欄位。

4031 4057 

4032```json theme={null}4058```json theme={null}

4033{4059{


4046 ElicitationResult 輸出4072 ElicitationResult 輸出

4047</h4>4073</h4>

4048 4074 

4049ElicitationResult hook 可以讓使用者的回應通過、變更其值,或封鎖它。若要變更或封鎖回應,請以 0 退出並印出包含 `action` 的 `hookSpecificOutput` 物件。此表格的每一列顯示針對某一結果應回傳的內容,以及 MCP 伺服器所收到的內容:4075ElicitationResult hook 可以讓使用者的回應通過、變更其值,或封鎖它。若要變更或封鎖回應,請以 0 結束並印出含有 `action` 的 `hookSpecificOutput` 物件。此表的每一列都顯示針對某個結果應傳回的內容,以及 MCP 伺服器會收到的內容:

4050 4076 

4051| 目的 | 回傳 | 伺服器收到 |4077| 目的 | 傳回 | 伺服器收到 |

4052| :- | :- | :- |4078| :- | :- | :- |

4053| 讓回應通過 | 不輸出任何內容,並以退出碼 0 退出 | 使用者的回應,未經變更 |4079| 讓回應通過 | 無輸出,退出碼為 0 | 使用者的回應,未經變更 |

4054| 變更提交的值 | `"action": "accept"`,並在 `content` 中提供新值 | `accept` 以及您的 `content`,取代使用者的值 |4080| 變更提交的值 | `"action": "accept"`,並在 `content` 中提供新值 | `accept` 以及您的 `content`,取代使用者的值 |

4055| 封鎖回應 | `"action": "decline"` | `decline`,不含使用者的值 |4081| 封鎖回應 | `"action": "decline"` | `decline`,不含使用者的值 |

4056| 取消請求 | `"action": "cancel"` | `cancel`,以及使用者提交的值。若要保留這些值不傳送,請回傳 `"decline"` |4082| 取消請求 | `"action": "cancel"` | `cancel`,以及使用者提交的值。若要保留不送出這些值,請傳回 `"decline"` |

4057 4083 

4058此輸出會變更 [ElicitationResult 輸入](#elicitationresult-input)中所示的回應,因此在使用者提交 `alice` 之處,伺服器會收到 `alice@example.com`:4084此輸出會變更 [ElicitationResult 輸入](#elicitationresult-input)中所示的回應,使伺服器在使用者提交 `alice` 之處收到 `alice@example.com`:

4059 4085 

4060```json theme={null}4086```json theme={null}

4061{4087{


4069}4095}

4070```4096```

4071 4097 

4072您的 `content` 會取代使用者的整個 `content` 物件,因此請包含您未變更的欄位。請同時回傳 `action`,因為 Claude Code 會忽略沒有 `action` 的 `hookSpecificOutput`。4098您的 `content` 會取代使用者的整個 `content` 物件,因此請包含您未變更的欄位。請一併傳回 `action`,因為 Claude Code 會忽略沒有 `action` 的 `hookSpecificOutput`。

4073 4099 

4074ElicitationResult hook 也會在使用者拒絕或取消時執行,且您的 `action` 會取代使用者的選擇。請在傳回 `accept` 之前檢查輸入的 `action` 是否為 `accept`,否則您的 hook 會將已拒絕的請求變成已接受。此指令碼會在使用者接受時進行相同的變更,保留其他欄位,否則不印出任何內容:4100ElicitationResult hook 在使用者拒絕或取消時也會執行,而您的 `action` 會取代使用者的 `action`。在傳回 `accept` 之前,請檢查輸入的 `action` 是否為 `accept`,否則您的 hook 會將已拒絕的請求變成已接受的請求。此指令碼會在使用者接受時進行相同的變更、保留其他欄位,否則不印出任何內容:

4075 4101 

4076```bash theme={null}4102```bash theme={null}

4077#!/bin/bash4103#!/bin/bash


4093}4119}

4094```4120```

4095 4121 

4096退出碼 2 和頂層的 `"decision": "block"` 也會封鎖回應。[拒絕 elicitation 的其他方式](#other-ways-to-decline-an-elicitation)說明了當 hook 組合使用這些方式時哪一個會生效、使用者會看到什麼,以及哪些版本會忽略 `decision`。4122退出碼 2 與頂層的 `"decision": "block"` 也會封鎖回應。[拒絕 elicitation 的其他方式](#other-ways-to-decline-an-elicitation)說明了當 hook 同時使用多種方式時哪一種會生效、使用者會看到什麼,以及哪些版本會忽略 `decision`。

4097 4123 

4098無論您回傳哪一個 `action`,Claude Code 都會捨棄 ElicitationResult hook JSON 輸出中的 `reason`、`systemMessage` 和 `continue`。4124無論您傳回哪個 `action`,Claude Code 都會捨棄 ElicitationResult hook JSON 輸出中的 `reason`、`systemMessage` 與 `continue`。

4099 4125 

4100<h2 id="prompt-based-hooks">4126<h2 id="prompt-based-hooks">

4101 基於提示的 hooks4127 基於提示的 hooks


4350* **單獨輸出至 stdout**:當回應是 stdout 上唯一的文字時,它可以跨越多行,例如經過美化排版的 `jq` 輸出。跨越多行需要 Claude Code v2.1.295 或更新版本。4376* **單獨輸出至 stdout**:當回應是 stdout 上唯一的文字時,它可以跨越多行,例如經過美化排版的 `jq` 輸出。跨越多行需要 Claude Code v2.1.295 或更新版本。

4351* **單獨佔一行**:當回應本身可容納於一行時,非同步 hook 可以將其他文字列印到 stdout,例如使用 `jq -c`。4377* **單獨佔一行**:當回應本身可容納於一行時,非同步 hook 可以將其他文字列印到 stdout,例如使用 `jq -c`。

4352 4378 

4353Claude Code 驗證該 JSON 回應是否符合與同步 hooks 相同的[輸出結構](#json-output),並捨棄任何值類型錯誤的欄位,例如不是字串的 `systemMessage`,而不是傳遞它。使用 `--debug` 執行以查看命名每個捨棄欄位的警告。在 v2.1.202 之前,來自非同步 hook 的格式不正確的 JSON 輸出可能會導致工作階段崩潰,每次恢復工作階段時都會重複發生崩潰。4379Claude Code 驗證該 JSON 回應是否符合與同步 hook 相同的[輸出 schema](#json-output),並捨棄任何值類型錯誤的欄位,例如不是字串的 `systemMessage`,而不是傳遞它。使用 `--debug` 執行以查看命名每個捨棄欄位的警告。

4354 4380 

4355非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。4381非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。

4356 4382 

Details

4 4 

5# 互動模式5# 互動模式

6 6 

7> Claude Code 會話中鍵盤快捷鍵、輸入模式和互動功能的完整參考。7> Claude Code 工作階段中鍵盤快捷鍵、輸入模式和互動功能的完整參考。

8 8 

9<h2 id="keyboard-shortcuts">9<h2 id="keyboard-shortcuts">

10 快捷鍵10 快捷鍵


491 491 

492若要在整個組織中關閉提示建議,請在[受管設定](/docs/zh-TW/managed-settings)中將 `promptSuggestionEnabled` 設定為 `false`。同時在受管 [`env`](/docs/zh-TW/settings-reference#env) 金鑰下將 `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` 設定為 `false`,以便使用者無法使用自己的環境變數重新啟用它們。492若要在整個組織中關閉提示建議,請在[受管設定](/docs/zh-TW/managed-settings)中將 `promptSuggestionEnabled` 設定為 `false`。同時在受管 [`env`](/docs/zh-TW/settings-reference#env) 金鑰下將 `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` 設定為 `false`,以便使用者無法使用自己的環境變數重新啟用它們。

493 493 

494<h2 id="you-should-know-suggestions">

495 You should know 建議

496</h2>

497 

498「You should know」會找出一件您應該知道但可能遺漏的事情,例如 Claude 在未說明的情況下所做的取捨,或是可能有誤的結果。找到時,它會在提示詞輸入框上方顯示一則簡短的提醒:

499 

500```text theme={null}

501✦ Heads up · There was a change to how folder sharing starts in June, which may have bumped usage metrics artificially.

502 1: Learn more 2: Knew this already 0: Dismiss

503```

504 

505這是 Claude Code 的[內建 mod](/docs/zh-TW/plugins/mods/overview#mods-built-into-claude-code) 之一,也就是內建於 Claude Code 中、預設為關閉的外掛。需要 Claude Code v2.1.287 或更新版本。

506 

507啟用期間,當 Claude 處理較長的任務時,一個側邊 agent 會不時重新閱讀對話。側邊 agent 是發送至同一模型的獨立請求,且沒有任何工具,因此無法讀取檔案、執行命令,也無法改變 Claude 的行為。

508 

509如果您的組織可使用此 mod,當您以 claude.ai 帳戶或 Console API 金鑰直接連線至 Claude API 時,`/plugin` 會列出它。若您透過 [LLM 閘道](/docs/zh-TW/llm-gateway)或 [Claude apps 閘道](/docs/zh-TW/claude-apps-gateway)連線,或從 [`apiKeyHelper`](/docs/zh-TW/settings-reference#apikeyhelper) 取得金鑰,則不會列出。即使是直接連線,以下工作階段也不會列出它:

510 

511* [不擷取此 mod 所依賴之功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段,例如設定了 `DISABLE_TELEMETRY` 的工作階段

512* 旗標尚未送達的[安裝或升級後的第一個工作階段](/docs/zh-TW/env-vars#first-session-after-an-install-or-upgrade)

513 

514若要啟用,請在 Claude Code 提示詞中執行:

515 

516```text theme={null}

517/plugin enable cc-plugin-you-should-know@builtin

518```

519 

520在 `/plugin` 未列出此 mod 的情況下,啟用命令會回應 `Plugin "cc-plugin-you-should-know@builtin" is not installed in this project`。

521 

522<h3 id="cost-of-checks">

523 檢查的費用

524</h3>

525 

526此 mod 啟用期間,檢查是發送至您工作階段所使用之同一模型的背景請求,並會計入您方案的用量上限或 API 費用。每次檢查都會傳送 Claude 上下文中已有的內容,也就是截至目前為止的對話及其工具結果,接著是此 mod 本身的指令以及您近期提醒的文字。對話部分會以與 Claude 自身下一個請求相同的條件,從工作階段的[提示快取](/docs/zh-TW/prompt-caching)中讀取。指令(長達數千個 token)以及側邊 agent 的回覆,則在每次檢查時全額計費。

527 

528若要觀察檢查的進行,請在啟動 Claude Code 之前,於您的 shell 中設定 [`CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG=1`](/docs/zh-TW/env-vars)。

529 

530<h3 id="answer-a-note">

531 回應提醒

532</h3>

533 

534在空白的提示詞輸入框中單獨輸入選項的數字。提醒提供以下選項:

535 

536* **Learn more**:在提醒下方開啟一段簡短說明,並附有其自身的選項:

537 * **Understood**:關閉說明並將該主題標記為已知

538 * **Chat in main session**:將提醒引用到您的提示詞輸入框中,以便您加上問題並傳送給 Claude

539 * **Dismiss**:關閉說明,但不將該主題標記為已知

540* **Knew this already**:關閉提醒並將該主題標記為已知。

541* **Dismiss**:關閉提醒。

542 

543除非您使用 **Chat in main session** 傳送提醒,否則主 agent 不會看到它。

544 

545Claude Code 會將您近期的提醒以及您標記為已知的主題,保存在 `~/.claude/plugins/store/` 下一個名稱以 `cc-plugin-you-should-know` 開頭的檔案中。每次檢查(無論在此工作階段或之後的工作階段)都會將這些內容列給側邊 agent,作為不應重複的項目。當該檔案經過 [`cleanupPeriodDays`](/docs/zh-TW/settings-reference#cleanupperioddays) 都沒有任何工作階段讀取或寫入時,Claude Code 會將其刪除。若要更早清除,請在沒有工作階段執行時刪除該檔案。

546 

547<h3 id="turn-off-you-should-know">

548 關閉 You should know

549</h3>

550 

551若要關閉 You should know,請使用以下任一方式:

552 

553* 在 Claude Code 提示詞中執行 `/plugin disable cc-plugin-you-should-know@builtin`,或從 `/plugin` 的 **Installed** 分頁將其關閉

554* 在未先開啟 **Learn more** 的情況下對提醒選擇 **Dismiss** 後,在 `Dismissed.` 那一行選擇 **Turn off suggestions**,該行會在 20 秒後消失

555 

494<h2 id="emoji-shortcodes">556<h2 id="emoji-shortcodes">

495 Emoji 快捷代碼557 Emoji 快捷代碼

496</h2>558</h2>

Details

255 255 

256這對於[子代理 worktree 隔離](/docs/zh-TW/worktrees#isolate-subagents-with-worktrees)特別有用。子代理是為子任務生成的平行 Claude 實例,每個在 worktree 中執行的都會獲得輕量級簽出而不是完整樹。工作階段中的所有 worktrees 共享相同的 `sparsePaths`,因此如果一個子代理需要 `packages/api/` 而另一個需要 `packages/web/`,請列出兩者。256這對於[子代理 worktree 隔離](/docs/zh-TW/worktrees#isolate-subagents-with-worktrees)特別有用。子代理是為子任務生成的平行 Claude 實例,每個在 worktree 中執行的都會獲得輕量級簽出而不是完整樹。工作階段中的所有 worktrees 共享相同的 `sparsePaths`,因此如果一個子代理需要 `packages/api/` 而另一個需要 `packages/web/`,請列出兩者。

257 257 

258在 `sparsePaths` 中列出目錄,而不是個別檔案。根級檔案(如 `package.json`、`tsconfig.base.json` 和鎖定檔案)始終與您列出的目錄一起簽出。根級目錄不是,因此如果您想要儲存庫根目錄的 `.claude/settings.json`、`.claude/rules/` 或 `.claude/skills/` 在 worktree 內可用,請在清單中包含 `.claude`。對於專案技能、代理和命令,請參閱[worktrees 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。258在 `sparsePaths` 中列出目錄,而不是個別檔案。根級檔案(如 `package.json`、`tsconfig.base.json` 和鎖定檔案)始終與您列出的目錄一起簽出。根級目錄不是,因此如果您想要儲存庫根目錄的 `.claude/settings.json` 或 `.claude/rules/` 在 worktree 內可用,請在清單中包含 `.claude`。對於專案 skills、agents 和命令,請參閱[worktrees 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。

259 259 

260Sparse checkout 需要 git 在儲存庫的共享 `.git/config` 中啟用 `extensions.worktreeConfig`,同時存在 sparse worktree。Claude Code 在移除最後一個 worktree 後會移除該項目,但僅當 Claude Code 添加了它時。它永遠不會移除您自己設定的值。在 v2.1.207 之前,該項目在移除最後一個 worktree 後仍然存在,並且基於 go-git 的工具(例如 `tea`)無法開啟儲存庫,直到您執行 `git config --unset extensions.worktreeConfig`。260Sparse checkout 需要 git 在儲存庫的共享 `.git/config` 中啟用 `extensions.worktreeConfig`,同時存在 sparse worktree。Claude Code 在移除最後一個 worktree 後會移除該項目,但僅當 Claude Code 添加了它時。它永遠不會移除您自己設定的值。

261 261 

262若要避免在 worktrees 中複製 `node_modules` 等大型目錄,請在同一 `.claude/settings.json` 中將 `sparsePaths` 與 `symlinkDirectories` 配對:262若要避免在 worktrees 中複製 `node_modules` 等大型目錄,請在同一 `.claude/settings.json` 中將 `sparsePaths` 與 `symlinkDirectories` 配對:

263 263 

Details

518 518 

519將閘道的認證放在 `ANTHROPIC_FOUNDRY_API_KEY` 中;它作為 `x-api-key` 標頭發送到閘道。期望持有人令牌的閘道可以改用 [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/zh-TW/env-vars)。Claude Code 將該值作為 `Authorization: Bearer` 標頭發送,當兩者都設定時,它優先於 `ANTHROPIC_FOUNDRY_API_KEY`。需要 Claude Code v2.1.203 或更高版本。519將閘道的認證放在 `ANTHROPIC_FOUNDRY_API_KEY` 中;它作為 `x-api-key` 標頭發送到閘道。期望持有人令牌的閘道可以改用 [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/zh-TW/env-vars)。Claude Code 將該值作為 `Authorization: Bearer` 標頭發送,當兩者都設定時,它優先於 `ANTHROPIC_FOUNDRY_API_KEY`。需要 Claude Code v2.1.203 或更高版本。

520 520 

521對於注入自己的 `Authorization` 標頭的閘道,設定 `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` 並將兩個認證變數都保留為未設定。Claude Code 然後發送沒有 Azure 認證的請求,並保留您提供的 `Authorization` 標頭,例如通過 `ANTHROPIC_CUSTOM_HEADERS`。在 v2.1.203 之前,`CLAUDE_CODE_SKIP_FOUNDRY_AUTH` 沒有 API 金鑰使 Microsoft Foundry 客戶端無法發送請求。521對於會注入自己的 `Authorization` 標頭的閘道,請設定 `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` 並且不要設定這兩個憑證變數。Claude Code 接著會在不附加 Azure 憑證的情況下發送請求,並保留您提供的 `Authorization` 標頭,例如透過 `ANTHROPIC_CUSTOM_HEADERS` 提供的標頭。

522 522 

523<Tabs>523<Tabs>

524 <Tab title="Bash or Zsh">524 <Tab title="Bash or Zsh">

Details

168| :- | :- |168| :- | :- |

169| `x-claude-code-request-class` | 這是什麼類型的請求:`main` 用於主對話的一個回合,`subagent` 用於[子代理](/docs/zh-TW/sub-agents)的一個回合,`workflow` 用於在工作流程內執行的代理,`compaction` 用於壓縮對話的摘要請求,或 `auxiliary` 用於側面請求,例如工作階段標題、分類器和摘要。在每個請求上傳送 |169| `x-claude-code-request-class` | 這是什麼類型的請求:`main` 用於主對話的一個回合,`subagent` 用於[子代理](/docs/zh-TW/sub-agents)的一個回合,`workflow` 用於在工作流程內執行的代理,`compaction` 用於壓縮對話的摘要請求,或 `auxiliary` 用於側面請求,例如工作階段標題、分類器和摘要。在每個請求上傳送 |

170| `x-claude-code-agent-type` | 發出請求的子代理類型:內建代理類型名稱,例如 `Explore`、`Plan` 或 `general-purpose`,或 `custom` 用於使用者定義的代理,`teammate` 用於在主導者程序中執行的[代理團隊](/docs/zh-TW/agent-teams)成員,或 `fork` 用於[分支](/docs/zh-TW/sub-agents#fork-the-current-conversation)。僅在子代理自己的回合上存在;子代理的壓縮或側面請求保留代理 ID,但不攜帶類型。使用者選擇的代理名稱永遠不會被傳送 |170| `x-claude-code-agent-type` | 發出請求的子代理類型:內建代理類型名稱,例如 `Explore`、`Plan` 或 `general-purpose`,或 `custom` 用於使用者定義的代理,`teammate` 用於在主導者程序中執行的[代理團隊](/docs/zh-TW/agent-teams)成員,或 `fork` 用於[分支](/docs/zh-TW/sub-agents#fork-the-current-conversation)。僅在子代理自己的回合上存在;子代理的壓縮或側面請求保留代理 ID,但不攜帶類型。使用者選擇的代理名稱永遠不會被傳送 |

171| `x-claude-code-compaction` | 在[壓縮](/docs/zh-TW/prompt-caching#compacting-the-conversation)期間摘要對話的請求上存在。該值說明觸發了什麼:`auto` 當上下文視窗接近容量時,`manual` 用於 `/compact`,或 `reactive` 當 API 拒絕請求太長時。在所有其他請求上不存在 |171| `x-claude-code-compaction` | 在[壓縮](/docs/zh-TW/prompt-caching#compacting-the-conversation)期間摘要對話的請求上存在。該值說明觸發了什麼:`auto` 當上下文視窗接近容量時,`manual` 用於 `/compact`,或 `reactive` 當 API 拒絕請求太長時。對於[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction),該值也是 `auto`。在所有其他請求上不存在 |

172| `x-claude-code-context-compacted` | 在壓縮後的第一個主對話請求上存在一次,具有與 `x-claude-code-compaction` 相同的值。此請求之前的對話前綴不再使用,因此可以刪除以其為鍵的快取 |172| `x-claude-code-context-compacted` | 在壓縮後的第一個主對話請求上存在一次,具有與 `x-claude-code-compaction` 相同的值。此請求之前的對話前綴不再使用,因此可以刪除以其為鍵的快取 |

173| `x-claude-code-prev-tool-durations` | 此請求攜帶其結果的工具呼叫的測量執行時間,格式為 `<name>=<ms>;<name>=<ms>`,例如 `Bash=742;Read=9`。在同一對話的下一個請求之後傳送,來自主工作階段或子代理的一批工具呼叫 |173| `x-claude-code-prev-tool-durations` | 此請求攜帶其結果的工具呼叫的測量執行時間,格式為 `<name>=<ms>;<name>=<ms>`,例如 `Bash=742;Read=9`。在同一對話的下一個請求之後傳送,來自主工作階段或子代理的一批工具呼叫 |

174| `x-claude-code-prompt-id` | 隨機 UUID,識別請求所服務的使用者提示。服務一個提示的請求共享該值,包括該提示啟動的子代理的回合。未歸屬於提示的請求會省略它。使用它按提示對工作階段的請求進行分組。需要 Claude Code v2.1.283 或更新版本 |174| `x-claude-code-prompt-id` | 隨機 UUID,識別請求所服務的使用者提示。服務一個提示的請求共享該值,包括該提示啟動的子代理的回合。未歸屬於提示的請求會省略它。使用它按提示對工作階段的請求進行分組。需要 Claude Code v2.1.283 或更新版本 |


291 291 

292在 Claude Code v2.1.227 或更新版本上,您的組織可以通過[受管設定](/docs/zh-TW/managed-settings)在此變數下保持 [MCP 工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)開啟。Claude Code 在該覆蓋就位時發送的內容取決於您如何連接:292在 Claude Code v2.1.227 或更新版本上,您的組織可以通過[受管設定](/docs/zh-TW/managed-settings)在此變數下保持 [MCP 工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)開啟。Claude Code 在該覆蓋就位時發送的內容取決於您如何連接:

293 293 

294* 在直接連接上,或通過設定了 `ANTHROPIC_BASE_URL` 的 gateway,Claude Code 繼續發送工具搜尋測試版標頭、`defer_loading` 工具欄位和 `tool_reference` 區塊,並移除其餘部分294* 在未使用 HIPAA 設定的直接連接上,或通過設定了 `ANTHROPIC_BASE_URL` 的閘道,Claude Code 繼續發送工具搜尋測試版標頭、`defer_loading` 工具欄位和 `tool_reference` 區塊

295* 在雲端提供者上,或通過 [Claude 應用程式 gateway](/docs/zh-TW/claude-apps-gateway) 登入,覆蓋沒有效果295* 在雲端提供者上,或通過 [Claude 應用程式 gateway](/docs/zh-TW/claude-apps-gateway) 登入,覆蓋沒有效果

296* 在[取得 HIPAA 設定](/docs/zh-TW/hipaa-setup#check-how-developers-sign-in-and-connect)的工作階段中,覆寫沒有效果,且工具搜尋保持關閉

296 297 

297Claude Code 發送的功能集在版本中增長。有關目前的測試版標頭字串,請參閱[測試版標頭參考](https://platform.claude.com/docs/en/api/beta-headers);針對新的 Claude Code 版本測試您的 gateway,而不是固定到觀察清單。298Claude Code 發送的功能集在版本中增長。有關目前的測試版標頭字串,請參閱[測試版標頭參考](https://platform.claude.com/docs/en/api/beta-headers);針對新的 Claude Code 版本測試您的 gateway,而不是固定到觀察清單。

298 299 

mcp.md +110 −81

Details

90 90 

91在透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。91在透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。

92 92 

93具有 `url` 但沒有 `type` 的 JSON 項目是設定錯誤,因為 Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器。Claude Code 會跳過該伺服器並報告 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。在 v2.1.202 之前,Claude Code 將此誤設定報告為 `command: expected string, received undefined`。93具有 `url` 但沒有 `type` 的 JSON 項目是設定錯誤,因為 Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器。Claude Code 會跳過該伺服器並報告 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。

94 94 

95只有 SDK 主機應用程式(例如 [Agent SDK](/docs/zh-TW/agent-sdk/mcp) 應用程式或 [桌面應用程式](/docs/zh-TW/desktop))可以註冊進程內 `"type": "sdk"` 伺服器。Claude Code 會跳過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並報告 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。95只有 SDK 主機應用程式(例如 [Agent SDK](/docs/zh-TW/agent-sdk/mcp) 應用程式或 [桌面應用程式](/docs/zh-TW/desktop))可以註冊進程內 `"type": "sdk"` 伺服器。Claude Code 會跳過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並報告 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。

96 96 


128 128 

129Claude Code 在生成的伺服器環境中設定 `CLAUDE_PROJECT_DIR` 為專案根目錄,因此您的伺服器可以解析專案相對路徑,而無需依賴工作目錄。這是 hook 在其 `CLAUDE_PROJECT_DIR` 變數中接收的相同目錄。從伺服器程序內部讀取它,例如 Node 中的 `process.env.CLAUDE_PROJECT_DIR` 或 Python 中的 `os.environ["CLAUDE_PROJECT_DIR"]`。129Claude Code 在生成的伺服器環境中設定 `CLAUDE_PROJECT_DIR` 為專案根目錄,因此您的伺服器可以解析專案相對路徑,而無需依賴工作目錄。這是 hook 在其 `CLAUDE_PROJECT_DIR` 變數中接收的相同目錄。從伺服器程序內部讀取它,例如 Node 中的 `process.env.CLAUDE_PROJECT_DIR` 或 Python 中的 `os.environ["CLAUDE_PROJECT_DIR"]`。

130 130 

131`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在您於工作階段中途新增或移除工作目錄時不會變更。限制自身檔案系統存取到一組允許目錄的伺服器應改為實作 MCP `roots/list` 請求。Claude Code 使用工作階段的啟動目錄加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個 [額外工作目錄](/docs/zh-TW/permissions#working-directories)來回答 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。在 v2.1.203 之前,`roots/list` 只傳回啟動目錄,Claude Code 不會傳送 `notifications/roots/list_changed`。131`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在您於工作階段中途新增或移除工作目錄時不會變更。限制自身檔案系統存取到一組允許目錄的伺服器應改為實作 MCP `roots/list` 請求。Claude Code 使用工作階段的啟動目錄加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個 [額外工作目錄](/docs/zh-TW/permissions#working-directories)來回答 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。

132 132 

133此變數設定在伺服器的環境中,而不是在 Claude Code 自身的環境中,因此在專案範圍的 `.mcp.json` 項目或 `~/.claude.json` 中的本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 擴展參考它需要預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。133此變數設定在伺服器的環境中,而不是在 Claude Code 自身的環境中,因此在專案範圍的 `.mcp.json` 項目或 `~/.claude.json` 中的本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 擴展參考它需要預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。

134 134 


154 `--env` 接受多個 `KEY=value` 對。如果伺服器名稱直接跟在 `--env` 之後,CLI 會將名稱讀取為另一對並拒絕它,因此請在 `--env` 和伺服器名稱之間放置至少一個其他選項,例如 `--transport stdio`。154 `--env` 接受多個 `KEY=value` 對。如果伺服器名稱直接跟在 `--env` 之後,CLI 會將名稱讀取為另一對並拒絕它,因此請在 `--env` 和伺服器名稱之間放置至少一個其他選項,例如 `--transport stdio`。

155</Note>155</Note>

156 156 

157<h4 id="how-claude-code-stops-a-stdio-server">

158 Claude Code 如何停止 stdio 伺服器

159</h4>

160 

161當 Claude Code 中斷與 stdio 伺服器的連接時(例如在您的工作階段結束時),它會向伺服器程序傳送訊號,並短暫等待其退出,然後才強制停止它。如果您的伺服器在關閉時儲存狀態或移除鎖定檔案,請處理您平台的訊號,並在該時間內完成:

162 

163* **在 macOS 和 Linux 上**:Claude Code 傳送 `SIGINT`,如果程序在 100 毫秒後仍在執行,則傳送 `SIGTERM`,再過 400 毫秒後傳送 `SIGKILL`。

164* **在 Windows 上**:Claude Code 關閉伺服器的 stdin,如果程序在 300 毫秒後仍在執行,則結束伺服器的程序樹。

165 

166在 v2.1.296 之前,Windows 上的 Claude Code 會立即結束伺服器的程序樹,不會先關閉 stdin 或等待。

167 

157<h3 id="option-4-add-a-remote-websocket-server">168<h3 id="option-4-add-a-remote-websocket-server">

158 選項 4:新增遠端 WebSocket 伺服器169 選項 4:新增遠端 WebSocket 伺服器

159</h3>170</h3>


415 遠端伺服器的工作階段中途掉線426 遠端伺服器的工作階段中途掉線

416</h4>427</h4>

417 428 

418Claude Code 使用指數退避重新連接掉線的遠端伺服器:最多五次嘗試,從一秒延遲開始,每次加倍。您看到的內容取決於您如何執行 Claude Code:429Claude Code 首先會使用指數退避嘗試重新連接掉線的遠端伺服器,最多五次,從一秒延遲開始,每次加倍:

419 430 

420* **在互動式工作階段中**:`/mcp` 在 Claude Code 重新連接時將伺服器顯示為待處理。在五次失敗嘗試後,Claude Code 將伺服器標記為失敗,或在伺服器需要再次授權時標記為需要身分驗證。當它將伺服器標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。431* **在互動式工作階段中**:`/mcp` 在 Claude Code 重新連接時將伺服器顯示為待處理。在五次失敗嘗試後,Claude Code 將伺服器標記為失敗,或在伺服器需要再次授權時標記為需要身分驗證。當它將伺服器標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。

421* **在 [`claude -p`](/docs/zh-TW/headless) 執行和 [Agent SDK](/docs/zh-TW/agent-sdk/overview) 工作階段中**:Claude Code 按相同的時間表重新連接,沒有 `/mcp` 面板顯示嘗試。432* **在 [`claude -p`](/docs/zh-TW/headless) 執行和 [Agent SDK](/docs/zh-TW/agent-sdk/overview) 工作階段中**:Claude Code 進行相同的五次嘗試,沒有 `/mcp` 面板顯示這些嘗試。當 HTTP 或 SSE 伺服器的嘗試因暫時性錯誤而失敗時,它會在背景中持續重試最多約半小時,當某次重試連接成功時,伺服器及其工具會再次可用。

422 433 

423<h4 id="failed-first-connections">434<h4 id="failed-first-connections">

424 失敗的首次連接435 失敗的首次連接


479 490 

480按伺服器 `timeout` 是每個工具呼叫的硬牆鐘限制,來自伺服器的進度通知不會延長它。低於 1000 的值被忽略並落回 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)伺服器,還有第二個按請求計時器,涵蓋每個請求到伺服器的第一個回應位元組。Claude Code 將該計時器設定為三個值中最大的:60 秒、適用於伺服器的工具逾時和 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 的 28 小時預設值不進入該比較,低於 60 秒的值不會縮短計時器。Stdio 和 WebSocket 伺服器沒有按請求計時器。491按伺服器 `timeout` 是每個工具呼叫的硬牆鐘限制,來自伺服器的進度通知不會延長它。低於 1000 的值被忽略並落回 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)伺服器,還有第二個按請求計時器,涵蓋每個請求到伺服器的第一個回應位元組。Claude Code 將該計時器設定為三個值中最大的:60 秒、適用於伺服器的工具逾時和 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 的 28 小時預設值不進入該比較,低於 60 秒的值不會縮短計時器。Stdio 和 WebSocket 伺服器沒有按請求計時器。

481 492 

482至少 1000 的按伺服器 `timeout` 也充當下面描述的空閒逾時的下限:Claude Code 永遠不會因空閒而早於按伺服器 `timeout` 中止該伺服器的工具呼叫。需要 Claude Code v2.1.203 或更新版本。493至少 1000 的按伺服器 `timeout` 也充當下面描述的空閒逾時的下限:Claude Code 永遠不會因空閒而早於按伺服器 `timeout` 中止該伺服器的工具呼叫。

483 494 

484對 MCP 伺服器的工具呼叫,在空閒視窗內不傳送回應且不傳送進度通知,會因錯誤而中止,而不是等待牆鐘限制。空閒逾時適用於除 IDE 伺服器和 SDK 進程內伺服器外的每個伺服器類型。空閒視窗預設為 HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器的五分鐘,以及 stdio 伺服器的 30 分鐘。在 v2.1.203 之前,stdio 伺服器免除空閒逾時。495對 MCP 伺服器的工具呼叫,在空閒視窗內不傳送回應且不傳送進度通知,會因錯誤而中止,而不是等待牆鐘限制。空閒逾時適用於除 IDE 伺服器和 SDK 進程內伺服器外的每個伺服器類型。空閒視窗預設為 HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器的五分鐘,以及 stdio 伺服器的 30 分鐘。

485 496 

486以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 環境變數以變更空閒視窗,或設定為 `0` 以停用檢查。497以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 環境變數以變更空閒視窗,或設定為 `0` 以停用檢查。

487 498 


493 504 

494主對話中仍在執行兩分鐘後的 MCP 工具呼叫移動到背景任務,而不是阻止工作階段。Claude 立即接收任務 ID 並繼續工作,結果在呼叫解決時作為任務通知到達。自動背景化需要 Claude Code v2.1.212 或更新版本。505主對話中仍在執行兩分鐘後的 MCP 工具呼叫移動到背景任務,而不是阻止工作階段。Claude 立即接收任務 ID 並繼續工作,結果在呼叫解決時作為任務通知到達。自動背景化需要 Claude Code v2.1.212 或更新版本。

495 506 

496任務出現在 [`/tasks`](/docs/zh-TW/commands#all-commands)中,您也可以在其中停止它,它不會在退出工作階段時存活。任務的項目顯示伺服器報告的最新進度。507任務出現在 [`/tasks`](/docs/zh-TW/commands#all-commands)中,您也可以在其中停止它,它不會在退出工作階段時存活。任務的項目顯示伺服器報告的最新進度。如果您停止任務,Claude Code 會取消該呼叫並告知 Claude 不會有結果。停止並不保證伺服器會停止:它可能已經完成部分工作,或仍可能完成它。

497 508 

498按呼叫限制仍然適用於呼叫在背景中執行時:由按伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](/docs/zh-TW/env-vars)設定的牆鐘限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars)設定的空閒逾時。509按呼叫限制仍然適用於呼叫在背景中執行時:由按伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](/docs/zh-TW/env-vars)設定的牆鐘限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars)設定的空閒逾時。

499 510 


793 --header "Authorization: Bearer YOUR_GITHUB_PAT"804 --header "Authorization: Bearer YOUR_GITHUB_PAT"

794```805```

795 806 

796將 `YOUR_GITHUB_PAT` 替換為您的個人存取 token。`claude mcp add` 命令會儲存設定而不驗證認證,因此此處接受預留位置值,但 server 稍後無法連接。若要驗證連接,請執行 `/mcp` 並檢查 server 是否顯示 `connected`。具有不良認證的 server 會顯示 `failed`,失敗詳細資訊包括 server 傳回的 HTTP 狀態,例如 401。807將 `YOUR_GITHUB_PAT` 替換為您的個人存取 token。`claude mcp add` 命令會儲存設定而不驗證憑證,因此此處接受預留位置值,但伺服器稍後會無法連接。若要驗證連接,請執行 `/mcp` 並檢查該伺服器的列是否顯示核取記號。具有錯誤憑證的伺服器則會顯示 ✘,其[失敗詳細資訊](#server-status-detail)包括伺服器傳回的 HTTP 狀態,例如 401。

797 808 

798然後使用 GitHub:809然後使用 GitHub:

799 810 


820 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"831 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

821```832```

822 833 

823若要確認 server 啟動,請執行 `/mcp` 並檢查 `db` 是否顯示 `connected`。834若要確認伺服器已啟動,請執行 `/mcp` 並檢查 `db` 列是否顯示核取記號。

824 835 

825然後自然地查詢您的資料庫:836然後自然地查詢您的資料庫:

826 837 


829```840```

830 841 

831```text wrap theme={null}842```text wrap theme={null}

832顯示 orders 表的架構843顯示 orders 表的 schema

833```844```

834 845 

835```text wrap theme={null}846```text wrap theme={null}


837```848```

838 849 

839<h2 id="authenticate-with-remote-mcp-servers">850<h2 id="authenticate-with-remote-mcp-servers">

840 使用遠端 MCP 伺服器進行身份驗證851 使用遠端 MCP 伺服器進行身分驗證

841</h2>852</h2>

842 853 

843許多雲端 MCP 伺服器需要身份驗證。Claude Code 支援 OAuth 2.0 以進行安全連線。854許多雲端 MCP 伺服器需要身分驗證。Claude Code 支援 OAuth 2.0 以進行安全連線。

844 855 

845當伺服器回應 `401 Unauthorized` 或 `403 Forbidden` 時,Claude Code 會將遠端伺服器標記為需要身份驗證。Claude Code 顯示的內容取決於伺服器:856當伺服器回應 `401 Unauthorized` 或 `403 Forbidden` 時,Claude Code 會將遠端伺服器標記為需要身分驗證。Claude Code 顯示的內容取決於伺服器:

846 857 

847* 對於您尚未登入的伺服器,任一狀態碼都會在 `/mcp` 中標記它,以便您完成 OAuth 流程。858* 對於您尚未登入的伺服器,任一狀態碼都會在 `/mcp` 中標記它,以便您完成 OAuth 流程。

848* 對於 [claude.ai 連接器](#use-mcp-servers-from-claude-ai),由 claude.ai 拒絕您的工作階段令牌導致的 `401` 不會標記連接器,因為重新授權連接器無法修復您的登入。Claude Code 改為顯示 [工作階段令牌被拒絕狀態](/docs/zh-TW/errors#claude-ai-rejected-the-session-token)。859* 對於 [claude.ai 連接器](#use-mcp-servers-from-claude-ai),由 claude.ai 拒絕您的工作階段 token 導致的 `401` 不會標記連接器,因為重新授權連接器無法修復您的登入。Claude Code 改為顯示 [工作階段 token 被拒絕狀態](/docs/zh-TW/errors#claude-ai-rejected-the-session-token)。

849* 對於您在 `headers` 中或透過 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 設定 `Authorization` 標頭的伺服器,連線時的 `401` 或 `403` 不會標記伺服器,因為要修復的認證是您設定的認證。Claude Code 改為報告連線失敗。如果您從 `${VAR}` 參考設定該標頭,請檢查該變數是否是 Claude Code [讀取為空](#credential-variables-that-read-as-empty) 的變數之一。860* 對於您在 `headers` 中或透過 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 設定 `Authorization` 標頭的伺服器,連線時的 `401` 或 `403` 不會標記伺服器,因為要修復的憑證是您設定的憑證。Claude Code 改為報告連線失敗。如果您從 `${VAR}` 參考設定該標頭,請檢查該變數是否是 Claude Code [讀取為空](#credential-variables-that-read-as-empty) 的變數之一。

850* 對於 [傳遞到雲端工作階段的連接器](#how-connectors-reach-claude-code),Claude Code 不會執行登入流程,因為工作階段的代理使用您在 claude.ai 中授予的授權向連接器進行身份驗證。當那裡的連接器需要再次授權時,請在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 重新連接它,而不是從工作階段進行。861* 對於 [傳遞到雲端工作階段的連接器](#how-connectors-reach-claude-code),Claude Code 不會執行登入流程,因為工作階段的代理伺服器使用您在 claude.ai 中授予的授權向連接器進行身分驗證。當那裡的連接器需要再次授權時,請在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 重新連接它,而不是從工作階段進行。

851 862 

852當對您已登入的 OAuth 伺服器的請求返回 `401 Unauthorized` 時,Claude Code 會重新整理儲存的令牌、重新連接並重試請求一次。只有在該重試也失敗時,它才會在 `/mcp` 中標記伺服器。在 v2.1.206 之前,因暫時性原因(例如網路錯誤)失敗的令牌重新整理會將 OAuth 伺服器標記為在該工作階段的其餘時間需要身份驗證,即使其重新整理令牌仍然有效。863當對您已登入的 OAuth 伺服器的請求傳回 `401 Unauthorized` 時,Claude Code 會重新整理儲存的 token、重新連接並重試請求一次。只有在該重試也失敗時,它才會在 `/mcp` 中標記伺服器。

853 864 

854當伺服器拒絕儲存的重新整理令牌時,Claude Code 會立即顯示指向 `/mcp` 的通知。開啟 `/mcp` 並在伺服器上選擇 **Re-authenticate** 以在下一個工具呼叫失敗之前再次登入。865當伺服器拒絕儲存的重新整理 token 時,Claude Code 會立即顯示指向 `/mcp` 的通知。開啟 `/mcp` 並在伺服器上選擇 **Re-authenticate** 以在下一個工具呼叫失敗之前再次登入。

855 866 

856傳回指向其授權伺服器的 `WWW-Authenticate` 標頭的自訂伺服器會獲得與任何其他遠端伺服器相同的自動探索。867傳回指向其授權伺服器的 `WWW-Authenticate` 標頭的自訂伺服器會獲得與任何其他遠端伺服器相同的自動探索。

857 868 


859 870 

860該通知會宣佈每個伺服器一次,並在後續啟動時將其排除在計數之外,直到該伺服器已連接並再次需要登入。`/mcp` 仍會列出每個需要登入的伺服器。871該通知會宣佈每個伺服器一次,並在後續啟動時將其排除在計數之外,直到該伺服器已連接並再次需要登入。`/mcp` 仍會列出每個需要登入的伺服器。

861 872 

862在非互動模式下,沒有 `/mcp` 面板,因此 Claude Code 無法為您執行 OAuth 流程。當已設定的伺服器在啟用 [工具搜尋](#scale-with-mcp-tool-search)(預設值)的 `claude -p` 或 Agent SDK 執行期間需要身分驗證時,Claude Code 會告訴 Claude 該伺服器的工具在您授權之前無法使用。Claude 接著可以指出需要登入的伺服器。請從互動工作階段使用 `/mcp` 或 `claude mcp login <name>` 完成登入。873`claude -p` 或 Agent SDK 執行沒有 `/mcp` 面板,因此 Claude Code 無法在其中執行 OAuth 流程。若要使用需要身分驗證的伺服器,請先從互動式工作階段完成登入:在工作階段中執行 `/mcp`,或在您的 shell 中執行 `claude mcp login <name>`。當已設定的伺服器在啟用 [工具搜尋](#scale-with-mcp-tool-search) 的 `claude -p` 或 Agent SDK 執行期間需要身分驗證時,Claude Code 會告訴 Claude 該伺服器的工具在您授權之前無法使用。

863 874 

864如果您為伺服器設定了 `headers.Authorization` 且伺服器拒絕該標頭,Claude Code 會報告連線失敗,而不是回退到 OAuth。檢查令牌對 MCP 端點是否有效,或移除標頭以使用 OAuth 流程。875如果您為伺服器設定了 `headers.Authorization` 且伺服器拒絕該標頭,Claude Code 會報告連線失敗,而不是回退到 OAuth。檢查 token 對 MCP 端點是否有效,或移除標頭以使用 OAuth 流程。

865 876 

866<Steps>877<Steps>

867 <Step title="新增需要身份驗證的伺服器">878 <Step title="新增需要身分驗證的伺服器">

868 如果您已在 [MCP 快速入門](/docs/zh-TW/mcp-quickstart#connect-a-server-that-requires-sign-in) 中新增了 `sentry` 伺服器,請跳過此步驟:在相同範圍使用相同伺服器名稱再次執行 `claude mcp add` 會失敗,並顯示 `MCP server sentry already exists in local config`。否則,執行:879 如果您已在 [MCP 快速入門](/docs/zh-TW/mcp-quickstart#connect-a-server-that-requires-sign-in) 中新增了 `sentry` 伺服器,請跳過此步驟:在相同範圍使用相同伺服器名稱再次執行 `claude mcp add` 會失敗,並顯示 `MCP server sentry already exists in local config`。否則,執行:

869 880 

870 ```bash theme={null}881 ```bash theme={null}


886<Tip>897<Tip>

887 提示:898 提示:

888 899 

889 * 身份驗證令牌儲存安全且自動重新整理900 * 身分驗證 token 會安全地儲存並自動重新整理

890 * 使用 `/mcp` 功能表中的「Clear authentication」撤銷存取權901 * 使用 `/mcp` 功能表中的「Clear authentication」撤銷存取權

891 * 如果瀏覽器未自動開啟,請複製提供的 URL 並手動開啟902 * 如果瀏覽器未自動開啟,請複製提供的 URL 並手動開啟

892 * 如果瀏覽器重新導向在驗證後因連線錯誤而失敗,請將瀏覽器位址列中的完整回呼 URL 貼到 Claude Code 中出現的 URL 提示中903 * 如果瀏覽器重新導向在驗證後因連線錯誤而失敗,請將瀏覽器位址列中的完整回呼 URL 貼到 Claude Code 中出現的 URL 提示中

893 * OAuth 身份驗證適用於 HTTP 伺服器904 * OAuth 身分驗證適用於 HTTP 伺服器

894</Tip>905</Tip>

895 906 

896<h3 id="authenticate-from-the-command-line">907<h3 id="authenticate-from-the-command-line">

897 從命令列進行身份驗證908 從命令列進行身分驗證

898</h3>909</h3>

899 910 

900`claude mcp login <name>` 命令直接從您的 shell 執行已設定伺服器的 OAuth 流程,因此您不需要在工作階段內開啟 `/mcp` 面板。對於 claude.ai 連接器,請按照 [從您的 shell 再次授權連接器](/docs/zh-TW/remote-control#authorize-a-connector-again-from-your-shell) 操作。911`claude mcp login <name>` 命令直接從您的 shell 執行已設定伺服器的 OAuth 流程,因此您不需要在工作階段內開啟 `/mcp` 面板。對於 claude.ai 連接器,請按照 [從您的 shell 再次授權連接器](/docs/zh-TW/remote-control#authorize-a-connector-again-from-your-shell) 操作。


903claude mcp login sentry914claude mcp login sentry

904```915```

905 916 

906若要稍後清除儲存的認證,請執行 `claude mcp logout <name>`。917若要稍後清除儲存的憑證,請執行 `claude mcp logout <name>`。

907 918 

908`claude mcp login` 會偵測何時沒有本機瀏覽器可用(例如在 SSH 工作階段期間或在沒有顯示伺服器的 Linux 上),並列印授權 URL,而不是嘗試開啟瀏覽器。在您的本機機器上開啟 URL,然後將瀏覽器位址列中的完整重新導向 URL 貼回提示。該命令需要互動式終端進行貼上步驟,因此請使用 `ssh -t` 連接。傳遞 `--no-browser` 以強制 URL 提示,即使偵測到本機瀏覽器。919`claude mcp login` 會偵測何時沒有本機瀏覽器可用(例如在 SSH 工作階段期間或在沒有顯示伺服器的 Linux 上),並列印授權 URL,而不是嘗試開啟瀏覽器。在您的本機機器上開啟 URL,然後將瀏覽器位址列中的完整重新導向 URL 貼回提示。該命令需要互動式終端機進行貼上步驟,因此請使用 `ssh -t` 連接。傳遞 `--no-browser` 以強制 URL 提示,即使偵測到本機瀏覽器。

909 920 

910```bash theme={null}921```bash theme={null}

911claude mcp login sentry --no-browser922claude mcp login sentry --no-browser


915 使用固定的 OAuth 回呼連接埠926 使用固定的 OAuth 回呼連接埠

916</h3>927</h3>

917 928 

918某些 MCP 伺服器需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用 `--callback-port` 固定連接埠,使其符合 `http://localhost:PORT/callback` 形式的預先註冊重新導向 URI。如果在 Claude Code v2.1.229 上登入因重新導向 URI 不符而失敗,請參閱 [使用預先設定的 OAuth 認證](#use-pre-configured-oauth-credentials) 下的版本說明。929某些 MCP 伺服器需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用 `--callback-port` 固定連接埠,使其符合 `http://localhost:PORT/callback` 形式的預先註冊重新導向 URI。如果在 Claude Code v2.1.229 上登入因重新導向 URI 不符而失敗,請參閱 [使用預先設定的 OAuth 憑證](#use-pre-configured-oauth-credentials) 下的版本說明。

919 930 

920您可以單獨使用 `--callback-port`(使用動態用戶端註冊)或與 `--client-id` 一起使用(使用預先設定的認證)。931您可以單獨使用 `--callback-port`(使用動態用戶端註冊)或與 `--client-id` 一起使用(使用預先設定的憑證)。

921 932 

922```bash theme={null}933```bash theme={null}

923# 使用動態用戶端註冊的固定回呼連接埠934# Fixed callback port with dynamic client registration

924claude mcp add --transport http \935claude mcp add --transport http \

925 --callback-port 8080 \936 --callback-port 8080 \

926 my-server https://mcp.example.com/mcp937 my-server https://mcp.example.com/mcp

927```938```

928 939 

929<h3 id="use-pre-configured-oauth-credentials">940<h3 id="use-pre-configured-oauth-credentials">

930 使用預先設定的 OAuth 認證941 使用預先設定的 OAuth 憑證

931</h3>942</h3>

932 943 

933某些 MCP 伺服器不支援透過動態用戶端註冊進行自動 OAuth 設定。如果您看到類似「Incompatible auth server: does not support dynamic client registration」的錯誤,伺服器需要預先設定的認證。Claude Code 也支援使用用戶端 ID 中繼資料文件 (CIMD) 而不是動態用戶端註冊的伺服器,並自動探索這些伺服器。如果自動探索失敗,請先透過伺服器的開發人員入口網站註冊 OAuth 應用程式,然後在新增伺服器時提供認證。944某些 MCP 伺服器不支援透過動態用戶端註冊進行自動 OAuth 設定。如果您看到類似「Incompatible auth server: does not support dynamic client registration」的錯誤,伺服器需要預先設定的憑證。Claude Code 也支援使用用戶端 ID 中繼資料文件 (CIMD) 而不是動態用戶端註冊的伺服器,並自動探索這些伺服器。如果自動探索失敗,請先透過伺服器的開發人員入口網站註冊 OAuth 應用程式,然後在新增伺服器時提供憑證。

934 945 

935<Steps>946<Steps>

936 <Step title="使用伺服器註冊 OAuth 應用程式">947 <Step title="使用伺服器註冊 OAuth 應用程式">


941 在 v2.1.229 中,Claude Code 改為傳送 `http://127.0.0.1:PORT/callback`,而精確符合已註冊重新導向 URI 的伺服器會因重新導向 URI 不符而拒絕登入。Claude Code v2.1.231 恢復了 `localhost` 形式。若要在 v2.1.229 上復原,請升級 Claude Code,或暫時將 `http://127.0.0.1:PORT/callback` 形式新增到伺服器的已註冊重新導向 URI。952 在 v2.1.229 中,Claude Code 改為傳送 `http://127.0.0.1:PORT/callback`,而精確符合已註冊重新導向 URI 的伺服器會因重新導向 URI 不符而拒絕登入。Claude Code v2.1.231 恢復了 `localhost` 形式。若要在 v2.1.229 上復原,請升級 Claude Code,或暫時將 `http://127.0.0.1:PORT/callback` 形式新增到伺服器的已註冊重新導向 URI。

942 </Step>953 </Step>

943 954 

944 <Step title="使用您的認證新增伺服器">955 <Step title="使用您的憑證新增伺服器">

945 這些標籤涵蓋兩個命令:`claude mcp add` 將您的用戶端 ID 和回呼連接埠作為旗標,`claude mcp add-json` 在 `oauth` 物件中採用它們。如果您註冊了重新導向 URI,請將回呼連接埠設定為該 URI 中的連接埠。956 這些標籤涵蓋兩個命令:`claude mcp add` 將您的用戶端 ID 和回呼連接埠作為旗標,`claude mcp add-json` 在 `oauth` 物件中採用它們。如果您註冊了重新導向 URI,請將回呼連接埠設定為該 URI 中的連接埠。

946 957 

947 <Tabs>958 <Tabs>

948 <Tab title="claude mcp add">959 <Tab title="claude mcp add">

949 使用 `--client-id` 傳遞您應用程式的用戶端 ID。`--client-secret` 旗標會提示輸入帶有遮罩輸入的密碼:960 使用 `--client-id` 傳遞您應用程式的用戶端 ID。`--client-secret` 旗標會以遮罩輸入提示輸入密碼:

950 961 

951 ```bash theme={null}962 ```bash theme={null}

952 claude mcp add --transport http \963 claude mcp add --transport http \


986 </Tabs>997 </Tabs>

987 </Step>998 </Step>

988 999 

989 <Step title="在 Claude Code 中進行身份驗證">1000 <Step title="在 Claude Code 中進行身分驗證">

990 在 Claude Code 中執行 `/mcp` 並按照瀏覽器登入流程。1001 在 Claude Code 中執行 `/mcp` 並按照瀏覽器登入流程。

991 </Step>1002 </Step>

992</Steps>1003</Steps>


994<Tip>1005<Tip>

995 提示:1006 提示:

996 1007 

997 * 用戶端密碼安全地儲存在您的系統鑰匙圈 (macOS) 或認證檔案中,而不是在您的設定中1008 * 用戶端密碼安全地儲存在您的系統鑰匙圈 (macOS) 或憑證檔案中,而不是在您的設定中

998 * 您只能在新增伺服器時設定用戶端密碼。當您使用 `claude mcp login` 或從 `/mcp` 進行身份驗證時,Claude Code 會使用儲存的密碼,不會提示輸入密碼或讀取 `MCP_CLIENT_SECRET`1009 * 您只能在新增伺服器時設定用戶端密碼。當您使用 `claude mcp login` 或從 `/mcp` 進行身分驗證時,Claude Code 會使用儲存的密碼,不會提示輸入密碼或讀取 `MCP_CLIENT_SECRET`

999 * 若要稍後新增或變更密碼,請使用 `claude mcp remove <name>` 移除伺服器,然後使用 `--client-secret` 和相同的 `--scope` 再次新增它1010 * 若要稍後新增或變更密碼,請使用 `claude mcp remove <name>` 移除伺服器,然後使用 `--client-secret` 和相同的 `--scope` 再次新增它

1000 * 如果伺服器使用沒有密碼的公開 OAuth 用戶端,請僅使用 `--client-id` 而不使用 `--client-secret`1011 * 如果伺服器使用沒有密碼的公開 OAuth 用戶端,請僅使用 `--client-id` 而不使用 `--client-secret`

1001 * 這些旗標僅適用於 HTTP 和 SSE 傳輸。它們對 stdio 伺服器沒有影響1012 * 這些旗標僅適用於 HTTP 和 SSE 傳輸。它們對 stdio 伺服器沒有影響

1002 * 使用 `claude mcp get <name>` 驗證為伺服器設定了 OAuth 認證1013 * 使用 `claude mcp get <name>` 驗證為伺服器設定了 OAuth 憑證

1003</Tip>1014</Tip>

1004 1015 

1005<h3 id="override-oauth-metadata-discovery">1016<h3 id="override-oauth-metadata-discovery">

1006 覆寫 OAuth 中繼資料探索1017 覆寫 OAuth 中繼資料探索

1007</h3>1018</h3>

1008 1019 

1009指向 Claude Code 特定的 OAuth 授權伺服器中繼資料 URL 以繞過預設探索鏈。當 MCP 伺服器的標準端點出錯時,或當您想透過內部代理路由探索時,設定 `authServerMetadataUrl`。根據預設,Claude Code 首先檢查 `/.well-known/oauth-protected-resource` 的 RFC 9728 受保護資源中繼資料,然後回退到 `/.well-known/oauth-authorization-server` 的 RFC 8414 授權伺服器中繼資料。1020將 Claude Code 指向特定的 OAuth 授權伺服器中繼資料 URL 以繞過預設探索鏈。當 MCP 伺服器的標準端點出錯時,或當您想透過內部代理伺服器路由探索時,設定 `authServerMetadataUrl`。根據預設,Claude Code 首先檢查 `/.well-known/oauth-protected-resource` 的 RFC 9728 受保護資源中繼資料,然後回退到 `/.well-known/oauth-authorization-server` 的 RFC 8414 授權伺服器中繼資料。

1010 1021 

1011在 `.mcp.json` 中您伺服器設定的 `oauth` 物件中設定 `authServerMetadataUrl`:1022在 `.mcp.json` 中您伺服器設定的 `oauth` 物件中設定 `authServerMetadataUrl`:

1012 1023 


1030 限制 OAuth 範圍1041 限制 OAuth 範圍

1031</h3>1042</h3>

1032 1043 

1033設定 `oauth.scopes` 以固定 Claude Code 在授權流程期間要求的範圍。這是當上游授權伺服器公告的範圍超過您想授予的範圍時,將 MCP 伺服器限制為安全團隊批准的子集的支援方式。該值是單個空格分隔的字串,符合 RFC 6749 §3.3 中的 `scope` 參數格式。1044設定 `oauth.scopes` 以固定 Claude Code 在授權流程期間請求的範圍。這是當上游授權伺服器公告的範圍超過您想授予的範圍時,將 MCP 伺服器限制為安全團隊批准的子集的支援方式。該值是單個空格分隔的字串,符合 RFC 6749 §3.3 中的 `scope` 參數格式。

1034 1045 

1035```json theme={null}1046```json theme={null}

1036{1047{


1046}1057}

1047```1058```

1048 1059 

1049`oauth.scopes` 優先於 `authServerMetadataUrl` 和伺服器在 `/.well-known` 探索的範圍。將其保留為未設定以讓 MCP 伺服器決定要求的範圍集。1060`oauth.scopes` 優先於 `authServerMetadataUrl` 和伺服器在 `/.well-known` 探索的範圍。將其保留為未設定以讓 MCP 伺服器決定請求的範圍集。

1050 1061 

1051當未設定 `oauth.scopes` 時,Claude Code 不會請求自動探索的授權伺服器中繼資料中的完整 `scopes_supported` 目錄。從已設定的 `authServerMetadataUrl` 擷取的中繼資料仍會將其 `scopes_supported` 作為請求的範圍提供。1062當未設定 `oauth.scopes` 時,Claude Code 不會請求自動探索的授權伺服器中繼資料中的完整 `scopes_supported` 目錄。從已設定的 `authServerMetadataUrl` 擷取的中繼資料仍會將其 `scopes_supported` 作為請求的範圍提供。

1052 1063 

1053如果授權伺服器在 `scopes_supported` 中公告 `offline_access`,Claude Code 會將其附加到固定範圍,以便可以在不進行新瀏覽器登入的情況下重新整理存取令牌。1064如果授權伺服器在 `scopes_supported` 中公告 `offline_access`,Claude Code 會將其附加到固定範圍,以便可以在不進行新瀏覽器登入的情況下重新整理存取 token。

1054 1065 

1055如果伺服器稍後為工具呼叫傳回 403 `insufficient_scope`,該呼叫會失敗,並顯示 [`needs additional permissions`](/docs/zh-TW/errors#mcp-server-needs-you-to-sign-in-again) 訊息,該訊息命名伺服器要求的範圍。伺服器在 `/mcp` 中顯示為需要身份驗證。1066如果伺服器稍後為工具呼叫傳回 403 `insufficient_scope`,該呼叫會失敗,並顯示 [`needs additional permissions`](/docs/zh-TW/errors#mcp-server-needs-you-to-sign-in-again) 訊息,該訊息指出伺服器請求的範圍。伺服器在 `/mcp` 中顯示為需要身分驗證。

1056 1067 

1057如果該範圍不在您的固定 `oauth.scopes` 中,請新增它,然後執行 `/mcp` 並再次驗證伺服器。Claude Code 要求固定範圍而不是伺服器命名的範圍,因此如果您在不新增它的情況下再次驗證,您獲得的令牌仍然缺少它。1068如果該範圍不在您的固定 `oauth.scopes` 中,請新增它,然後執行 `/mcp` 並再次驗證伺服器。Claude Code 請求固定範圍而不是伺服器指出的範圍,因此如果您在不新增它的情況下再次驗證,您獲得的 token 仍然缺少它。

1058 1069 

1059<h3 id="use-dynamic-headers-for-custom-authentication">1070<h3 id="use-dynamic-headers-for-custom-authentication">

1060 使用動態標頭進行自訂身份驗證1071 使用動態標頭進行自訂身分驗證

1061</h3>1072</h3>

1062 1073 

1063如果您的 MCP 伺服器使用 OAuth 以外的身份驗證方案,例如 Kerberos、短期令牌或內部 SSO,請使用 `headersHelper` 在連線時產生請求標頭。Claude Code 執行命令並將其輸出合併到連線標頭中。1074如果您的 MCP 伺服器使用 OAuth 以外的身分驗證方案,例如 Kerberos、短期 token 或內部 SSO,請使用 `headersHelper` 在連線時產生請求標頭。Claude Code 執行命令並將其輸出合併到連線標頭中。

1064 1075 

1065```json theme={null}1076```json theme={null}

1066{1077{


1095* Claude Code 根據 [您設定伺服器的位置](#where-the-helper-runs) 選擇命令的工作目錄,因此請將指令碼作為絕對路徑提供或將其放在 `PATH` 上1106* Claude Code 根據 [您設定伺服器的位置](#where-the-helper-runs) 選擇命令的工作目錄,因此請將指令碼作為絕對路徑提供或將其放在 `PATH` 上

1096* 動態標頭會覆寫任何具有相同名稱的靜態 `headers`1107* 動態標頭會覆寫任何具有相同名稱的靜態 `headers`

1097 1108 

1098Claude Code 在每次連線時執行新的 helper,在工作階段開始和重新連接時,一旦 [專案和本機範圍伺服器的信任規則](#trust-a-folder-before-its-headershelper-runs) 允許它執行。它不會快取結果,因此您的指令碼負責任何令牌重用。1109一旦 [專案和本機範圍伺服器的信任規則](#trust-a-folder-before-its-headershelper-runs) 允許 helper 執行,Claude Code 會在每次連線時(工作階段開始和重新連接時)重新執行 helper。它不會快取結果,因此您的指令碼負責任何 token 重用。

1099 1110 

1100如果工具呼叫傳回 `401 Unauthorized` 或 `403 Forbidden`,Claude Code 會自動在相同規則下重新執行 helper、使用新標頭重新連接並重試呼叫一次。Claude Code 只有在該重試也失敗時才會在 `/mcp` 中將伺服器標記為需要身份驗證。1111如果工具呼叫傳回 `401 Unauthorized` 或 `403 Forbidden`,Claude Code 會自動在相同規則下重新執行 helper、使用新標頭重新連接並重試呼叫一次。Claude Code 只有在該重試也失敗時才會在 `/mcp` 中將伺服器標記為需要身分驗證。

1101 1112 

1102當 helper 的輸出包含 `Authorization` 標頭時,Claude Code 會使用該認證作為伺服器的身份驗證,不會回退到伺服器的 OAuth。1113當 helper 的輸出包含 `Authorization` 標頭時,Claude Code 會使用該憑證作為伺服器的身分驗證,不會為該伺服器回退到 OAuth。

1103 1114 

1104如果伺服器在連線時拒絕 helper 的認證,Claude Code 會報告連線失敗,而不是將伺服器標記為需要身份驗證。修復您的 helper 傳回的認證,然後從 `/mcp` 重新連接以重新執行 helper。1115如果伺服器在連線時拒絕 helper 的憑證,Claude Code 會報告連線失敗,而不是將伺服器標記為需要身分驗證。修復您的 helper 傳回的憑證,然後從 `/mcp` 重新連接以重新執行 helper。

1105 1116 

1106Claude Code 在執行 helper 時設定這些環境變數:1117Claude Code 在執行 helper 時設定這些環境變數:

1107 1118 


1113 1124 

1114使用這些來編寫為多個 MCP 伺服器服務的單個 helper 指令碼。1125使用這些來編寫為多個 MCP 伺服器服務的單個 helper 指令碼。

1115 1126 

1116外掛程式提供的 `headersHelper` 無法參考外掛程式的 [`${user_config.*}`](/docs/zh-TW/plugins/manifest-reference#user-configuration) 值,因為命令透過 shell 執行。Claude Code 報告伺服器設定錯誤,並顯示 [錯誤](/docs/zh-TW/errors#plugin-command-references-user-config),不會替換該值。改為將 `${user_config.KEY}` 放在伺服器的 `headers` 欄位中,該欄位不會進行 shell 解析,或讓 helper 指令碼從設定檔讀取該值。在 v2.1.207 之前,`headersHelper` 替換了 `${user_config.*}` 值。1127外掛程式提供的 `headersHelper` 無法參考外掛程式的 [`${user_config.*}`](/docs/zh-TW/plugins/manifest-reference#user-configuration) 值,因為命令透過 shell 執行。Claude Code 報告伺服器設定錯誤,並顯示 [錯誤](/docs/zh-TW/errors#plugin-command-references-user-config),不會替換該值。改為將 `${user_config.KEY}` 放在伺服器的 `headers` 欄位中,該欄位不會進行 shell 解析,或讓 helper 指令碼從設定檔讀取該值。在 v2.1.207 之前,`headersHelper` 會替換 `${user_config.*}` 值。

1117 1128 

1118<h4 id="where-the-helper-runs">1129<h4 id="where-the-helper-runs">

1119 Helper 執行的位置1130 Helper 執行的位置


1125| :- | :- |1136| :- | :- |

1126| [外掛程式](/docs/zh-TW/plugins/components#mcp-servers) | 外掛程式的根目錄 |1137| [外掛程式](/docs/zh-TW/plugins/components#mcp-servers) | 外掛程式的根目錄 |

1127| 專案 `.mcp.json` 或 [本機範圍](#local-scope) 伺服器 | 宣告伺服器的專案目錄 |1138| 專案 `.mcp.json` 或 [本機範圍](#local-scope) 伺服器 | 宣告伺服器的專案目錄 |

1128| 您專案中的代理檔案、來自 SDK 的 `mcpServers` 選項或 `setMcpServers()` 方法的伺服器,或 [`--mcp-config`](/docs/zh-TW/cli-reference) | 工作階段的 [主要工作目錄](/docs/zh-TW/permissions#working-directories) |1139| 您專案中的 agent 檔案、來自 SDK 的 `mcpServers` 選項或 `setMcpServers()` 方法的伺服器,或 [`--mcp-config`](/docs/zh-TW/cli-reference) | 工作階段的 [主要工作目錄](/docs/zh-TW/permissions#working-directories) |

1129| [使用者範圍](#user-scope)、[受管 MCP](/docs/zh-TW/managed-mcp)、[claude.ai 連接器](#use-mcp-servers-from-claude-ai),或來自您專案外的代理檔案,包括來自 `--add-dir` 目錄的檔案 | 您的設定目錄,`~/.claude`,除非您設定 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars) |1140| [使用者範圍](#user-scope)、[受管 MCP](/docs/zh-TW/managed-mcp)、[claude.ai 連接器](#use-mcp-servers-from-claude-ai),或來自您專案外的 agent 檔案,包括來自 `--add-dir` 目錄的檔案 | 您的設定目錄,`~/.claude`,除非您設定 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars) |

1130 1141 

1131在 v2.1.238 之前,Claude Code 也從您啟動它的目錄執行使用者範圍、受管和 claude.ai 連接器伺服器的 helper,以及來自您專案外的代理檔案。1142在 v2.1.238 之前,Claude Code 也從您啟動它的目錄執行使用者範圍、受管和 claude.ai 連接器伺服器的 helper,以及來自您專案外的 agent 檔案的 helper。

1132 1143 

1133<h4 id="which-variables-a-helper-can-read">1144<h4 id="which-variables-a-helper-can-read">

1134 Helper 可以讀取哪些變數1145 Helper 可以讀取哪些變數

1135</h4>1146</h4>

1136 1147 

1137存放庫或外掛程式提供的 `headersHelper` 是您未編寫的命令,因此 Claude Code 執行它時不會從您的環境中提供認證變數,例如 `ANTHROPIC_API_KEY`。您設定伺服器的位置決定是否適用:1148儲存庫或外掛程式提供的 `headersHelper` 是您未編寫的命令,因此 Claude Code 執行它時不會從您的環境中提供憑證變數,例如 `ANTHROPIC_API_KEY`。您設定伺服器的位置決定是否適用:

1138 1149 

1139* **已移除**:專案 `.mcp.json` 或外掛程式中的伺服器,以及來自您專案或 `--add-dir` 目錄的代理檔案中的內聯伺服器1150* **已移除**:專案 `.mcp.json` 或外掛程式中的伺服器,以及來自您專案或 `--add-dir` 目錄的 agent 檔案中的內聯伺服器

1140* **未移除**:[使用者](#user-scope) 或 [本機範圍](#local-scope) 的伺服器、[受管 MCP](/docs/zh-TW/managed-mcp) 中的伺服器、來自 [claude.ai 連接器](#use-mcp-servers-from-claude-ai) 的伺服器、由 SDK 或 [`--mcp-config`](/docs/zh-TW/cli-reference) 提供的伺服器,以及來自 `~/.claude/agents/`、受管設定或使用 `--agents` 傳遞的代理檔案中的內聯伺服器1151* **未移除**:[使用者](#user-scope) 或 [本機範圍](#local-scope) 的伺服器、[受管 MCP](/docs/zh-TW/managed-mcp) 中的伺服器、來自 [claude.ai 連接器](#use-mcp-servers-from-claude-ai) 的伺服器、由 SDK 或 [`--mcp-config`](/docs/zh-TW/cli-reference) 提供的伺服器,以及來自 `~/.claude/agents/`、受管設定或使用 `--agents` 傳遞的 agent 檔案中的內聯伺服器

1141 1152 

1142除了 Git 的 `GIT_CONFIG_KEY_<n>` 變數外,Claude Code 會從您的環境中移除名稱看起來像認證的每個變數,例如名稱中包含 `TOKEN`、`SECRET`、`PASSWORD`、`KEY` 或 `AUTH` 的名稱(無論大小寫),因此 `ANTHROPIC_API_KEY` 和 `MY_REGISTRY_TOKEN` 都會被移除。Claude Code 也會移除名稱不遵循該模式的固定認證變數清單,例如 `ANTHROPIC_CUSTOM_HEADERS`。1153除了 Git 的 `GIT_CONFIG_KEY_<n>` 變數外,Claude Code 會從您的環境中移除名稱看起來像憑證的每個變數,例如名稱中包含 `TOKEN`、`SECRET`、`PASSWORD`、`KEY` 或 `AUTH` 的名稱(無論大小寫),因此 `ANTHROPIC_API_KEY` 和 `MY_REGISTRY_TOKEN` 都會被移除。Claude Code 也會移除名稱不遵循該模式的固定憑證變數清單,例如 `ANTHROPIC_CUSTOM_HEADERS`。

1143 1154 

1144當這適用於您的 helper 時,讓指令碼從檔案或認證存放區讀取其認證。如果伺服器的 `url` [帶有這些變數之一的即時值](#environment-variable-expansion-in-mcp-json),例如 `MY_REGISTRY_TOKEN`,helper 接收的 `CLAUDE_CODE_MCP_SERVER_URL` 值也會將該部分替換為 `REDACTED`。1155當這適用於您的 helper 時,讓指令碼從檔案或憑證存放區讀取其憑證。如果伺服器的 `url` [帶有這些變數之一的即時值](#environment-variable-expansion-in-mcp-json),例如 `MY_REGISTRY_TOKEN`,helper 接收的 `CLAUDE_CODE_MCP_SERVER_URL` 值也會將該部分替換為 `REDACTED`。

1145 1156 

1146<h4 id="trust-a-folder-before-its-headershelper-runs">1157<h4 id="trust-a-folder-before-its-headershelper-runs">

1147 在 headersHelper 執行之前信任資料夾1158 在 headersHelper 執行之前信任資料夾

1148</h4>1159</h4>

1149 1160 

1150Claude Code 執行 `headersHelper` 作為任意 shell 命令。對於專案 `.mcp.json` 中的伺服器或 [本機範圍](#local-scope),它只在您接受宣告伺服器的專案目錄的 [信任對話](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust) 後執行 helper。在 v2.1.238 之前,`claude -p` 或 SDK 工作階段執行這些 helper 而不檢查信任,互動式工作階段在您信任父資料夾後執行它們。1161Claude Code 將 `headersHelper` 作為任意 shell 命令執行。對於專案 `.mcp.json` 中或 [本機範圍](#local-scope) 的伺服器,它只在您接受宣告伺服器的專案目錄的 [信任對話方塊](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust) 後執行 helper。在 v2.1.238 之前,`claude -p` 或 SDK 工作階段執行這些 helper 而不檢查信任,互動式工作階段在您信任父資料夾後執行它們。

1151 1162 

1152* **不計算的信任**:父資料夾的信任,以及 `claude -p` 或 SDK 工作階段為 [設定檔案中的 hook](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder) 獲得的自動信任1163* **不計算的信任**:父資料夾的信任,以及 `claude -p` 或 SDK 工作階段為 [設定檔中的 hook](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder) 獲得的自動信任

1153* **直到您信任資料夾**:Claude Code 僅使用其靜態 `headers` 連接伺服器。在 `claude -p` 或 SDK 工作階段中,它也會列印一個 [`headersHelper not run`](/docs/zh-TW/errors#headershelper-not-run) 行到 stderr,告訴您如何授予信任。1164* **直到您信任資料夾**:Claude Code 僅使用其靜態 `headers` 連接伺服器。在 `claude -p` 或 SDK 工作階段中,它也會為每個伺服器將一行 [`headersHelper not run`](/docs/zh-TW/errors#headershelper-not-run) 列印到 stderr,告訴您如何授予信任。

1154* **無對話的信任**:在 `~/.claude.json` 中設定 `projects["<path>"].hasTrustDialogAccepted` 為 `true`。`<path>` 是資料夾 [專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust) 說 Claude Code 信任的鍵。1165* **無對話方塊的信任**:在 `~/.claude.json` 中將 `projects["<path>"].hasTrustDialogAccepted` 設定為 `true`。`<path>` 是 [專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust) 所說明 Claude Code 用來作為信任鍵的資料夾。

1155 1166 

1156Claude Code 將相同規則應用於在 [代理檔案](/docs/zh-TW/sub-agents#scope-mcp-servers-to-a-subagent) 中內聯宣告的伺服器,檢查該代理檔案來自何處:您的專案(對於其 `.claude/agents/` 目錄中的檔案)或 `--add-dir` 目錄。直到您 [信任該專案或目錄本身](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder),Claude Code 不會載入伺服器,因此其 helper 也永遠不會執行。1167Claude Code 將相同規則應用於在 [agent 檔案](/docs/zh-TW/sub-agents#scope-mcp-servers-to-a-subagent) 中內聯宣告的伺服器,檢查該 agent 檔案來自何處:您的專案(對於其 `.claude/agents/` 目錄中的檔案)或 `--add-dir` 目錄。直到您 [信任該專案或目錄本身](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder),Claude Code 完全不會載入伺服器,因此其 helper 也永遠不會執行。

1157 1168 

1158<h2 id="add-mcp-servers-from-json-configuration">1169<h2 id="add-mcp-servers-from-json-configuration">

1159 從 JSON 配置新增 MCP servers1170 從 JSON 配置新增 MCP servers


1218 </Step>1229 </Step>

1219</Steps>1230</Steps>

1220 1231 

1221透過 `claude mcp` 命令新增的伺服器名稱只能包含字母、數字、連字號和底線。Claude Desktop 不會套用該限制,因此名稱包含任何其他字元(例如空格)的 Claude Desktop 伺服器無法匯入。匯入會報告它拒絕的每個名稱,並仍會匯入您選擇的其他伺服器。在 v2.1.205 之前,第一個無效名稱會停止匯入,且不會新增任何選定的伺服器。1232透過 `claude mcp` 命令新增的伺服器名稱只能包含字母、數字、連字號和底線。Claude Desktop 不會套用該限制,因此名稱包含任何其他字元(例如空格)的 Claude Desktop 伺服器無法匯入。匯入會報告它拒絕的每個名稱,並仍會匯入您選擇的其他伺服器。

1222 1233 

1223<Tip>1234<Tip>

1224 提示:1235 提示:


1343您可以將 Claude Code 本身用作 MCP 伺服器,其他應用程式可以連接到它:1354您可以將 Claude Code 本身用作 MCP 伺服器,其他應用程式可以連接到它:

1344 1355 

1345```bash theme={null}1356```bash theme={null}

1346# 啟動 Claude 作為 stdio MCP 伺服器1357# Start Claude as a stdio MCP server

1347claude mcp serve1358claude mcp serve

1348```1359```

1349 1360 

1350該命令在啟動時不會列印任何內容。stdio MCP 伺服器透過 stdin 和 stdout 進行通訊,因此沉默、被阻止的終端表示伺服器正在執行並等待用戶端連接。1361該命令在啟動時不會列印任何內容。stdio MCP 伺服器透過 stdin 和 stdout 進行通訊,因此沉默、被阻止的終端機表示伺服器正在執行並等待用戶端連接。

1351 1362 

1352您可以透過將此設定新增到 claude\_desktop\_config.json 在 Claude Desktop 中使用它:1363您可以透過將此設定新增到 claude\_desktop\_config.json 在 Claude Desktop 中使用它:

1353 1364 


1398 * 此 MCP 伺服器只向您的 MCP 用戶端公開 Claude Code 的工具,因此您自己的用戶端負責為個別工具呼叫實施使用者確認。1409 * 此 MCP 伺服器只向您的 MCP 用戶端公開 Claude Code 的工具,因此您自己的用戶端負責為個別工具呼叫實施使用者確認。

1399</Tip>1410</Tip>

1400 1411 

1412當 Bash 或 PowerShell 工具呼叫結果中的 JSON 文字包含 `backgroundOutputPath` 欄位時,表示該呼叫讓其命令[在背景](/docs/zh-TW/tools-reference#background-commands)中持續執行,例如呼叫設定了 `run_in_background: true`,或命令達到了逾時時間。此欄位提供該命令輸出檔案的路徑。命令完成時不會有任何通知傳送至您的用戶端,且命令完成時檔案也不會寫入結尾行,因此讀取該檔案會顯示目前為止已寫入的輸出。若要偵測結束,請在命令後附加一個標記,例如 `npm test; echo DONE`,並在檔案中尋找該標記。`backgroundOutputPath` 欄位需要 Claude Code v2.1.295 或更新版本。

1413 

1401<h2 id="mcp-output-limits-and-warnings">1414<h2 id="mcp-output-limits-and-warnings">

1402 MCP 輸出限制和警告1415 MCP 輸出限制和警告

1403</h2>1416</h2>


1409* **預設限制**:預設最大值為 25,000 個 token1422* **預設限制**:預設最大值為 25,000 個 token

1410* **範圍**:環境變數適用於未聲明自己限制的工具。設定 [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) 的工具會針對文字內容使用該值,無論 `MAX_MCP_OUTPUT_TOKENS` 設定為何。傳回影像資料的工具仍受 `MAX_MCP_OUTPUT_TOKENS` 限制1423* **範圍**:環境變數適用於未聲明自己限制的工具。設定 [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) 的工具會針對文字內容使用該值,無論 `MAX_MCP_OUTPUT_TOKENS` 設定為何。傳回影像資料的工具仍受 `MAX_MCP_OUTPUT_TOKENS` 限制

1411* **超過限制**:當沒有影像內容的成功結果超過 token 限制時,Claude Code 會將其儲存到檔案,並在對話中用命名檔案路徑的訊息取代它,以便 Claude 在需要內容時讀取該檔案。該檔案位於 [`~/.claude/projects/`](/docs/zh-TW/claude-directory#cleaned-up-automatically) 下的工作階段 `tool-results` 目錄中。1424* **超過限制**:當沒有影像內容的成功結果超過 token 限制時,Claude Code 會將其儲存到檔案,並在對話中用命名檔案路徑的訊息取代它,以便 Claude 在需要內容時讀取該檔案。該檔案位於 [`~/.claude/projects/`](/docs/zh-TW/claude-directory#cleaned-up-automatically) 下的工作階段 `tool-results` 目錄中。

1412* **來自 HTTP 和 SSE 伺服器的回應大小**:一旦單一 JSON 回應主體或事件串流中的單一事件在解壓縮後超過 16 MB,Claude Code 就會停止讀取來自 [HTTP](#option-1-add-a-remote-http-server) 或 [SSE](#option-2-add-a-remote-sse-server) 伺服器的回應。該回應所對應的請求會失敗。如果您負責維護該伺服器,請減少每個回應傳回的資料量以維持在限制之內,例如將結果分頁1425* **來自 HTTP 和 SSE 伺服器的回應大小**:當來自 [HTTP](#option-1-add-a-remote-http-server) 或 [SSE](#option-2-add-a-remote-sse-server) 伺服器的回應超過 16 MiB 時,Claude Code 會停止讀取該回應,且請求會失敗。此限制適用於解壓縮後的單一 JSON 回應主體或事件串流中的單一事件。如果您負責維護該伺服器,請減少每個回應傳回的資料量以維持在限制之內,例如將結果分頁

1426* **來自 WebSocket 伺服器的訊息大小**:當 [WebSocket](#option-4-add-a-remote-websocket-server) 伺服器傳送單一超過 16 MiB 的訊息時,Claude Code 會[關閉連線](#mid-session-drops-of-a-remote-server),且該伺服器上進行中的呼叫會失敗。如果您負責維護該伺服器,請減少每則訊息傳回的資料量以維持在限制之內

1413 1427 

1414Claude Code 已[移至背景任務](#automatic-backgrounding-of-long-tool-calls)的呼叫會透過任務通知回報其結果。對於在前景完成的呼叫,另有兩項限制適用:1428Claude Code 已[移至背景任務](#automatic-backgrounding-of-long-tool-calls)的呼叫會透過任務通知回報其結果。對於在前景完成的呼叫,另有兩項限制適用:

1415 1429 


1483 1497 

1484[根層級組合子處理](#tool-input-schemas-with-a-root-level-combinator)是獨立的,當旗標取得關閉或旗標從未到達時,會保持自己的行為。1498[根層級組合子處理](#tool-input-schemas-with-a-root-level-combinator)是獨立的,當旗標取得關閉或旗標從未到達時,會保持自己的行為。

1485 1499 

1500<h2 id="tools-with-names-longer-than-128-characters">

1501 名稱超過 128 個字元的工具

1502</h2>

1503 

1504如果 `/mcp` 列出了 Claude 無法呼叫的工具,請檢查該工具的完整名稱是否超過 128 個字元。在工作階段中執行 `/mcp` 並選取該工具,即可查看其完整名稱,例如 `mcp__<server>__<tool>`。當 MCP 工具的完整名稱超過 128 個字元時,Claude Code 會將其排除在傳送給 Claude 的工具之外。Claude API 會拒絕包含此類工具的請求,因此排除該工具可讓伺服器的其他工具正常運作。

1505 

1506如需指出該工具名稱的訊息,以及縮短其完整名稱的方法,請參閱 [MCP 工具名稱超過 128 個字元](/docs/zh-TW/errors#mcp-tool-name-over-128-characters)。

1507 

1486<h2 id="require-approval-for-a-specific-tool">1508<h2 id="require-approval-for-a-specific-tool">

1487 要求特定工具的核准1509 要求特定工具的核准

1488</h2>1510</h2>


1581 使用 MCP 工具搜尋進行擴展1603 使用 MCP 工具搜尋進行擴展

1582</h2>1604</h2>

1583 1605 

1584工具搜尋透過延遲工具定義直到 Claude 需要時才載入,來保持 MCP 內容使用量較低。只有工具名稱和伺服器指令在工作階段開始時載入,因此新增更多 MCP 伺服器對您的內容視窗影響最小。Claude Code 不會對每個伺服器施加固定的工具上限;實際限制是您的內容視窗預算。1606工具搜尋透過延遲工具定義直到 Claude 需要時才載入,來保持 MCP 上下文使用量較低。只有工具名稱和伺服器指令在工作階段開始時載入,因此新增更多 MCP 伺服器對您的上下文視窗影響最小。Claude Code 不會對每個伺服器施加固定的工具上限;實際限制是您的上下文視窗預算。

1585 1607 

1586<Note>1608<Note>

1587 工具搜尋在 Microsoft Foundry [部署於 Azure 的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上不受支援,該部署在伺服器端拒絕它:Claude Code 偵測到拒絕並改為對該部署預先載入 MCP 工具。[`ENABLE_TOOL_SEARCH`](#configure-tool-search) 無法覆蓋此設定,因為拒絕來自部署本身。1609 工具搜尋在 Microsoft Foundry [部署於 Azure 的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上不受支援,該部署在伺服器端拒絕它:Claude Code 偵測到拒絕並改為對該部署預先載入 MCP 工具。[`ENABLE_TOOL_SEARCH`](#configure-tool-search) 無法覆寫此設定,因為拒絕來自部署本身。

1588</Note>1610</Note>

1589 1611 

1590<span id="for-mcp-server-authors" />1612<span id="for-mcp-server-authors" />


1601* Claude 應何時搜尋您的工具1623* Claude 應何時搜尋您的工具

1602* 您的伺服器提供的關鍵功能1624* 您的伺服器提供的關鍵功能

1603 1625 

1604Claude Code 預設將每個工具描述和每個伺服器的指令截斷為 2,048 個字元。保持簡潔,並將關鍵詳細資訊放在開頭。1626Claude Code 會截斷超過下列預設限制的工具描述或伺服器指令,Claude 只會看到截斷點之前的文字:

1627 

1628* **伺服器指令,以及預先載入之工具的描述**:4,096 個字元

1629* **Claude 透過工具搜尋載入之工具的描述**:16,384 個字元

1630 

1631請保持描述和指令簡潔,並將關鍵詳細資訊放在開頭。當工具搜尋將 Claude 的查詢與工具描述比對時,只會讀取較短限制內的部分,因此也請將 Claude 會搜尋的字詞放在開頭附近。只要工具未被延遲,就會預先載入並適用較短的限制,例如當[工具搜尋關閉](#configure-tool-search)、工具[被標記為預先載入](#per-tool-alwaysload),或其伺服器[豁免延遲](#exempt-a-server-from-deferral)時。

1632 

1633在 v2.1.296 之前,較短的限制為 2,048 個字元;在 v2.1.295 之前,該限制適用於每個工具描述,包括透過工具搜尋載入的描述。

1605 1634 

1606若要變更工作階段中每個 MCP 伺服器的限制,請將 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/zh-TW/env-vars#variables) 設定為字元數。此變數需要 Claude Code v2.1.280 或更新版本。1635若要變更工作階段中每個 MCP 伺服器的限制,請將 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/zh-TW/env-vars#variables) 設定為字元數。您設定的數字會取代這兩個限制:例如 `8192` 會提高較短的限制並降低較長的限制。此變數需要 Claude Code v2.1.280 或更新版本。

1607 1636 

1608<h4 id="per-tool-alwaysload">1637<h4 id="per-tool-alwaysload">

1609 標記工具為預先載入或保持延遲1638 標記工具為預先載入或保持延遲


1632 設定工具搜尋1661 設定工具搜尋

1633</h3>1662</h3>

1634 1663 

1635工具搜尋預設為啟用:MCP 工具被延遲並按需發現。當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,Claude Code 會停用它,因為大多數代理不轉發 `tool_reference` 區塊。設定 `ENABLE_TOOL_SEARCH` 明確覆蓋該後備方案。1664工具搜尋預設為啟用:MCP 工具被延遲並按需發現。當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,Claude Code 會停用它,因為大多數代理伺服器不轉發 `tool_reference` 區塊。明確設定 `ENABLE_TOOL_SEARCH` 可覆寫該備援行為。

1636 1665 

1637設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/env-vars) 保持工具搜尋關閉。您無法透過自己設定 `ENABLE_TOOL_SEARCH` 來覆蓋它。您的組織可以透過 [managed settings](/docs/zh-TW/managed-settings) 在 Claude Code v2.1.227 或更新版本上保持工具搜尋開啟。[停用預發行功能](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 涵蓋覆蓋適用的位置以及變數移除的內容。1666設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/env-vars) 會保持工具搜尋關閉。您無法透過自己設定 `ENABLE_TOOL_SEARCH` 來覆寫它。在 Claude Code v2.1.227 或更新版本上,您的組織可以透過[受管設定](/docs/zh-TW/managed-settings)在此變數之下保持工具搜尋開啟。在[套用 HIPAA 設定](/docs/zh-TW/hipaa-setup#check-how-developers-sign-in-and-connect)的工作階段中,工具搜尋會關閉,且 `ENABLE_TOOL_SEARCH` 和受管設定都無法將其重新開啟。[停用預發行功能](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 涵蓋覆寫適用的位置以及變數移除的內容。

1638 1667 

1639工具搜尋需要支援 `tool_reference` 區塊的模型:Claude Sonnet 4.5、Claude Haiku 4.5、Claude Opus 4.5 及更新版本的模型。請參閱 [API 文件中的模型相容性](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool#model-compatibility)以取得目前清單。1668Claude Code 在 Claude Opus 4、Claude Sonnet 4、Claude Haiku 4.5 及更新的模型上使用工具搜尋,在 Google Cloud 的 Agent Platform 上則為 Opus 4.5、Sonnet 4.5、Haiku 4.5 及更新的模型。在較早的模型上,Claude Code 會預先載入所有 MCP 工具,且 `ENABLE_TOOL_SEARCH=true` 不會覆寫此行為。

1640 1669 

1641在 Google Cloud 的 Agent Platform 上,Claude Code 按模型世代決定:1670在 Google Cloud 的 Agent Platform 上,Claude Code 按模型世代決定:

1642 1671 

1643* **Claude Opus 4.5、Sonnet 4.5、Haiku 4.5 及更新版本**:工具搜尋預設為開啟,與 Anthropic API 上相同。1672* **Claude Opus 4.5、Sonnet 4.5、Haiku 4.5 及更新版本**:工具搜尋預設為開啟,與 Anthropic API 上相同。

1644* **較早的 Agent Platform 模型**:Claude Code 預先載入所有 MCP 工具,因為它們的服務堆疊拒絕所需的測試版標頭。`ENABLE_TOOL_SEARCH=true` 不會覆蓋此設定。1673* **較早的 Agent Platform 模型**:Claude Code 預先載入所有 MCP 工具,因為它們的服務堆疊拒絕所需的測試版標頭。`ENABLE_TOOL_SEARCH=true` 不會覆寫此設定。

1645 1674 

1646在 v2.1.221 之前,Claude Code 在 Google Cloud 的 Agent Platform 上對所有模型停用工具搜尋,除非您設定 `ENABLE_TOOL_SEARCH=true`。1675在 v2.1.221 之前,Claude Code 在 Google Cloud 的 Agent Platform 上對所有模型停用工具搜尋,除非您設定 `ENABLE_TOOL_SEARCH=true`。

1647 1676 


1649 1678 

1650| 值 | 行為 |1679| 值 | 行為 |

1651| :- | :- |1680| :- | :- |

1652| (未設定) | 所有 MCP 工具延遲並按需載入。在 Google Cloud 的 Agent Platform 模型早於 Claude 4.5 世代時、當 `ANTHROPIC_BASE_URL` 是非第一方主機時,或在部署於 Azure 的 Microsoft Foundry 部署上時,回退到預先載入 |1681| (未設定) | 所有 MCP 工具延遲並按需載入。在早於 Opus 4 和 Sonnet 4 的模型上、在早於 Opus 4.5、Sonnet 4.5 和 Haiku 4.5 的 Google Cloud Agent Platform 模型上、當 `ANTHROPIC_BASE_URL` 是非第一方主機時,或在部署於 Azure 的 Microsoft Foundry 部署上,改為預先載入 |

1653| `true` | 所有 MCP 工具延遲,除了在部署於 Azure 的 Microsoft Foundry 部署上,伺服器端拒絕仍強制預先載入,以及在 Google Cloud 的 Agent Platform 模型早於 Claude 4.5 世代上,Claude Code 保持預先載入工具。Claude Code 透過代理傳送測試版標頭,並在不支援 `tool_reference` 區塊的代理上要求失敗 |1682| `true` | 當 `ANTHROPIC_BASE_URL` 是非第一方主機時,MCP 工具仍保持延遲。其他(未設定時的)備援情況仍然適用。Claude Code 會透過代理伺服器傳送測試版標頭,在不支援 `tool_reference` 區塊的代理伺服器上請求會失敗 |

1654| `auto` | 閾值模式:Claude Code 預先載入它會延遲的工具,同時它們的定義總計少於內容視窗的 10%,一旦定義達到 10% 就延遲所有工具 |1683| `auto` | 閾值模式:Claude Code 預先載入它會延遲的工具,同時它們的定義總計少於上下文視窗的 10%,一旦定義達到 10% 就延遲所有工具 |

1655| `auto:N` | 具有自訂百分比的閾值模式,其中 `N` 是 0-100。例如,`auto:5` 表示 5% |1684| `auto:N` | 具有自訂百分比的閾值模式,其中 `N` 是 0-100。例如,`auto:5` 表示 5% |

1656| `false` | 所有 MCP 工具預先載入,無延遲 |1685| `false` | 所有 MCP 工具預先載入,無延遲 |

1657 1686 

1658```bash theme={null}1687```bash theme={null}

1659# 使用自訂 5% 閾值1688# Use a custom 5% threshold

1660ENABLE_TOOL_SEARCH=auto:5 claude1689ENABLE_TOOL_SEARCH=auto:5 claude

1661 1690 

1662# 完全停用工具搜尋1691# Disable tool search entirely

1663ENABLE_TOOL_SEARCH=false claude1692ENABLE_TOOL_SEARCH=false claude

1664```1693```

1665 1694 


1697 1726 

1698`alwaysLoad` 欄位在所有伺服器類型上都可用。1727`alwaysLoad` 欄位在所有伺服器類型上都可用。

1699 1728 

1700設定 `alwaysLoad: true` 也會使啟動等待伺服器的工具,上限為標準 5 秒連線逾時,因為它們必須在建立第一個提示時存在。具有有效 [`cached` 項目](#server-status-detail)的遠端伺服器從快取提供其工具而無需連線,因此它不會延遲啟動。其他伺服器預設在背景連線;設定 [`MCP_CONNECTION_NONBLOCKING=0`](/docs/zh-TW/env-vars) 也使啟動等待它們。1729設定 `alwaysLoad: true` 也會使啟動等待伺服器的工具,上限為標準 5 秒連線逾時,因為它們必須在建立第一個提示詞時存在。具有有效 [`cached` 項目](#server-status-detail)的遠端伺服器從快取提供其工具而無需連線,因此它不會延遲啟動。其他伺服器預設在背景連線;設定 [`MCP_CONNECTION_NONBLOCKING=0`](/docs/zh-TW/env-vars) 也使啟動等待它們。

1701 1730 

1702<h3 id="defer-a-servers-tools">1731<h3 id="defer-a-servers-tools">

1703 延遲伺服器的工具1732 延遲伺服器的工具

memory.md +3 −3

Details

258 258 

259Claude Code 使用任何會超過預算的未展開模式,其字面大括號不匹配任何檔案。在 v2.1.217 之前,具有許多大括號群組的 `paths` 值會在啟動時停止或當機 CLI。259Claude Code 使用任何會超過預算的未展開模式,其字面大括號不匹配任何檔案。在 v2.1.217 之前,具有許多大括號群組的 `paths` 值會在啟動時停止或當機 CLI。

260 260 

261Glob 語法將 `[` 視為括號表達式的開始,例如 `[abc]`。具有無法讀取為括號表達式的 `[` 的模式(例如 `photos [2024/**`)無效:它不匹配任何檔案,規則的其他模式保持工作。若要匹配檔案名稱中的字面 `[`,請將其逸出為 `photos \[2024/**`。在 v2.1.207 之前,一個無效模式會導致 Read 工具對規則評估的每個檔案失敗,而不是不匹配任何檔案。261Glob 語法將 `[` 視為括號表達式的開始,例如 `[abc]`。具有無法讀取為括號表達式的 `[` 的模式(例如 `photos [2024/**`)無效:它不匹配任何檔案,規則的其他模式保持工作。若要匹配檔案名稱中的字面 `[`,請將其逸出為 `photos \[2024/**`。

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 規則 frontmatter 參考264 規則 frontmatter 參考


413 413 

414* **在工作階段開始時**:您的工作目錄及其上方目錄中的每個 `AGENTS.md` 和 `.claude/AGENTS.md`。在互動式工作階段中,您會在對話中看到類似 `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` 的行414* **在工作階段開始時**:您的工作目錄及其上方目錄中的每個 `AGENTS.md` 和 `.claude/AGENTS.md`。在互動式工作階段中,您會在對話中看到類似 `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` 的行

415* **當 Claude 在子目錄中工作時**:當 Claude 使用 Read 工具在該處開啟檔案,且該子目錄本身沒有這三個 `CLAUDE.md` 檔案中的任何一個時,子目錄的 `AGENTS.md`415* **當 Claude 在子目錄中工作時**:當 Claude 使用 Read 工具在該處開啟檔案,且該子目錄本身沒有這三個 `CLAUDE.md` 檔案中的任何一個時,子目錄的 `AGENTS.md`

416* **在每個 `AGENTS.md` 內**:[`@path` 匯入](#import-additional-files)會展開,[`claudeMdExcludes`](#exclude-specific-claude-md-files) 模式適用,[跳過專案指示](/docs/zh-TW/sub-agents#what-loads-at-startup)的子代理也會跳過這些檔案416* **在每個 `AGENTS.md` 內**:[`@path` 匯入](#import-additional-files)會展開,[`claudeMdExcludes`](#exclude-specific-claude-md-files) 模式適用,而[啟動時不含專案指示](/docs/zh-TW/sub-agents#what-loads-at-startup)的 subagent 啟動時也不含這些檔案

417* **不讀取**:`AGENTS.local.md`、`AGENTS.override.md` 或 `.agents/` 目錄下的任何內容417* **不讀取**:`AGENTS.local.md`、`AGENTS.override.md` 或 `.agents/` 目錄下的任何內容

418 418 

419<Note>419<Note>


692 692 

693如果您的其中一個指令檔案超過建議長度,您會在啟動時和執行 `/status` 時看到警告。當在工作階段開始時各自在該長度內的檔案加起來超過合併限制時,您也會看到警告。每個 CLAUDE.md、規則檔案和 `@path` 匯入都計為單獨的檔案。693如果您的其中一個指令檔案超過建議長度,您會在啟動時和執行 `/status` 時看到警告。當在工作階段開始時各自在該長度內的檔案加起來超過合併限制時,您也會看到警告。每個 CLAUDE.md、規則檔案和 `@path` 匯入都計為單獨的檔案。

694 694 

695[`/doctor`](/docs/zh-TW/commands#all-commands) 檢查會為已簽入的 CLAUDE.md 提出修剪建議:它會刪除 Claude 可以從程式碼庫衍生的內容,例如目錄配置、相依性清單和架構概述,並保留與工具預設值不同的陷阱、基本原理和慣例。修剪檢查需要 Claude Code v2.1.206 或更新版本。695[`/doctor`](/docs/zh-TW/commands#all-commands) 檢查會為已簽入的 CLAUDE.md 提出修剪建議:它會刪除 Claude 可以從程式碼庫衍生的內容,例如目錄配置、相依性清單和架構概述,並保留與工具預設值不同的陷阱、基本原理和慣例。

696 696 

697<h3 id="instructions-seem-lost-after-/compact">697<h3 id="instructions-seem-lost-after-/compact">

698 指令在 `/compact` 後似乎丟失了698 指令在 `/compact` 後似乎丟失了

Details

160 使用 Bearer 權杖160 使用 Bearer 權杖

161</h4>161</h4>

162 162 

163Claude Code 在每個請求上將 `ANTHROPIC_FOUNDRY_AUTH_TOKEN` 的值作為 `Authorization: Bearer` 標頭傳送。當另一個程序(例如主應用程式或登入指令碼)已為您取得存取權杖時,請使用此選項。需要 Claude Code v2.1.203 或更新版本。163Claude Code 在每個請求上將 `ANTHROPIC_FOUNDRY_AUTH_TOKEN` 的值作為 `Authorization: Bearer` 標頭傳送。當另一個程序(例如主應用程式或登入指令碼)已為您取得存取權杖時,請使用此選項。

164 164 

165將變數設定為 Microsoft Entra ID 為您的資源簽發的 Bearer 權杖:165將變數設定為 Microsoft Entra ID 為您的資源簽發的 Bearer 權杖:

166 166 

model-config.md +3 −0

Details

867* **適用於所有模型**:在設定檔中設定 [`autoCompactWindow`](/docs/zh-TW/settings-reference#autocompactwindow),例如在 `~/.claude/settings.json` 中設定 `"autoCompactWindow": 200000`。對於某個模型,您透過 `/autocompact` 為該模型儲存的視窗會優先於同一檔案中的此設定鍵。867* **適用於所有模型**:在設定檔中設定 [`autoCompactWindow`](/docs/zh-TW/settings-reference#autocompactwindow),例如在 `~/.claude/settings.json` 中設定 `"autoCompactWindow": 200000`。對於某個模型,您透過 `/autocompact` 為該模型儲存的視窗會優先於同一檔案中的此設定鍵。

868* **適用於單次啟動**:啟動 Claude Code 時傳入 [`--autocompact`](/docs/zh-TW/cli-reference#cli-flags)。此旗標會在該次啟動中覆寫您已儲存的設定,但不會變更該設定;即使您已儲存的設定有值,`claude --autocompact auto` 仍會以調校後的視窗執行工作階段。與 `/autocompact` 不同,此旗標不會被受管設定等優先順序較高的設定範圍搶先覆寫。868* **適用於單次啟動**:啟動 Claude Code 時傳入 [`--autocompact`](/docs/zh-TW/cli-reference#cli-flags)。此旗標會在該次啟動中覆寫您已儲存的設定,但不會變更該設定;即使您已儲存的設定有值,`claude --autocompact auto` 仍會以調校後的視窗執行工作階段。與 `/autocompact` 不同,此旗標不會被受管設定等優先順序較高的設定範圍搶先覆寫。

869* **在指令碼與雲端環境中**:設定 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/zh-TW/env-vars)。設定此變數期間,它會優先於命令、旗標與設定,且 `/autocompact` 會回報此覆寫,而不會變更視窗。869* **在指令碼與雲端環境中**:設定 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/zh-TW/env-vars)。設定此變數期間,它會優先於命令、旗標與設定,且 `/autocompact` 會回報此覆寫,而不會變更視窗。

870* **適用於單一 subagent**:請參閱[為單一 subagent 設定自動壓縮視窗](/docs/zh-TW/sub-agents#subagent-auto-compact-window)。

870 871 

871命令與旗標接受 100K 至 1M token 的視窗大小,可使用下列任一形式:872命令與旗標接受 100K 至 1M token 的視窗大小,可使用下列任一形式:

872 873 


888* 以原生 1M 視窗執行的模型會在視窗填滿前進行壓縮,預設約為 967K token。這些模型包括 Fable 模型、Sonnet 5 及更新版本、Haiku 5.5,以及 Opus 4.7 及更新版本。若位於自訂 `ANTHROPIC_BASE_URL` 之後,請參閱[閘道後方的上下文視窗](#context-window-behind-a-gateway)889* 以原生 1M 視窗執行的模型會在視窗填滿前進行壓縮,預設約為 967K token。這些模型包括 Fable 模型、Sonnet 5 及更新版本、Haiku 5.5,以及 Opus 4.7 及更新版本。若位於自訂 `ANTHROPIC_BASE_URL` 之後,請參閱[閘道後方的上下文視窗](#context-window-behind-a-gateway)

889* 使用 Claude Code 無法辨識之模型 ID(例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名)的工作階段,會在 Claude Code 為該 ID 假定的上下文視窗進行壓縮;請參閱[為閘道或自訂模型 ID 修正視窗](#correct-the-window-for-a-gateway-or-custom-model-id)890* 使用 Claude Code 無法辨識之模型 ID(例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名)的工作階段,會在 Claude Code 為該 ID 假定的上下文視窗進行壓縮;請參閱[為閘道或自訂模型 ID 修正視窗](#correct-the-window-for-a-gateway-or-custom-model-id)

890 891 

892關於 Claude Code 何時也會壓縮您閒置的對話,請參閱 [`idleCompaction`](/docs/zh-TW/settings-reference#idlecompaction) 設定。

893 

891<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">894<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

892 為閘道或自訂模型 ID 修正視窗895 為閘道或自訂模型 ID 修正視窗

893</h3>896</h3>

Details

641 641 

642* `prompt.id`:將使用者提示詞與其後直到下一個提示詞之前的所有事件相關聯的 UUID。請參閱[事件關聯屬性](#event-correlation-attributes)。642* `prompt.id`:將使用者提示詞與其後直到下一個提示詞之前的所有事件相關聯的 UUID。請參閱[事件關聯屬性](#event-correlation-attributes)。

643* `workspace.host_paths`:在桌面應用程式中選取的主機工作區目錄,以字串陣列表示643* `workspace.host_paths`:在桌面應用程式中選取的主機工作區目錄,以字串陣列表示

644* `workflow.run_id`:執行識別碼,前綴為 `wf_`,出現在隸屬於 [Workflow](/docs/zh-TW/workflows) 工具執行的 agent 所發出的 API 與工具事件上。以單一 `workflow.run_id` 篩選事件,即可重建該次執行的 API 請求與工具結果。此識別碼涵蓋工作流程腳本所產生的 agent,以及這些 agent 再產生的任何 agent,例如 skill 呼叫。它與 Workflow 工具結果中回報的執行識別碼相符。在所有其他事件上皆不存在。需要 Claude Code v2.1.202 或更新版本644* `workflow.run_id`:執行識別碼,前綴為 `wf_`,出現在屬於 [Workflow](/docs/zh-TW/workflows) 工具執行的 agent 所發出的 API 與工具事件上。依單一 `workflow.run_id` 篩選事件即可重建該次執行的 API 請求與工具結果。此識別碼涵蓋工作流程腳本所產生的 agent,以及這些 agent 再產生的任何 agent,例如 skill 呼叫。它與 Workflow 工具結果中回報的執行識別碼相符。在其他所有事件上皆不存在。

645* `workflow.name`:工作流程名稱,即其腳本的 `meta.name`,與 `workflow.run_id` 一同發出。當執行的是未經修改的內建腳本時,內建工作流程名稱會原樣出現。使用者撰寫的名稱(包括內建腳本的編輯副本)會被替換為 `custom`,除非設定了 `OTEL_LOG_TOOL_DETAILS=1`。需要 Claude Code v2.1.202 或更新版本645* `workflow.name`:工作流程的名稱,即其腳本的 `meta.name`,與 `workflow.run_id` 一同發出。當執行的是未經修改的內建腳本時,內建工作流程名稱會原樣顯示。使用者撰寫的名稱(包括內建腳本的編輯副本)會被替換為 `custom`,除非設定了 `OTEL_LOG_TOOL_DETAILS=1`。

646 646 

647<h4 id="repository-attributes">647<h4 id="repository-attributes">

648 儲存庫屬性648 儲存庫屬性


1374* `pre_tokens`:壓縮前的約略 token 數量1374* `pre_tokens`:壓縮前的約略 token 數量

1375* `post_tokens`:壓縮後的約略 token 數量1375* `post_tokens`:壓縮後的約略 token 數量

1376* `error`:壓縮失敗時的錯誤訊息1376* `error`:壓縮失敗時的錯誤訊息

1377* `precompute_reuse`:僅在 `trigger` 為 `"manual"` 時設定。自動壓縮可在上下文視窗填滿前於背景準備摘要,此屬性記錄 `/compact` 是否重複使用了該預先準備的摘要。`"hit"` 表示已重複使用;`"miss_custom_instructions"`、`"miss_hook"` 與 `"miss_not_ready"` 則說明改為重新計算摘要的原因1377* `precompute_reuse`:僅在 `trigger` 為 `"manual"` 時,或針對[閒置壓縮](/docs/zh-TW/settings-reference#idlecompaction)(其 `trigger` 回報為 `"auto"`)設定。自動壓縮可在上下文視窗填滿之前於背景準備摘要,而此屬性記錄該次壓縮是否重複使用了預先準備的摘要。`"hit"` 表示已重複使用;`"miss_custom_instructions"`、`"miss_hook"` 與 `"miss_not_ready"` 則說明改為重新計算摘要的原因

1378 1378 

1379<h4 id="subagent-completed-event">1379<h4 id="subagent-completed-event">

1380 Subagent 完成事件1380 Subagent 完成事件

Details

209| :- | :- | :- | :- |209| :- | :- | :- | :- |

210| 首位元組期限 | Claude Code 傳送請求後沒有回應標頭到達 | 直接 Anthropic API 和 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws),包括透過 HTTPS 代理,但不包括當 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 透過 [gateway](/docs/zh-TW/gateways) 路由時。在 Amazon Bedrock 上選擇加入,使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`;不在 Google Cloud 的 Agent Platform 或 Microsoft Foundry 上執行 | 直接 Anthropic API 上 180 秒,其他位置 300 秒,加上每 32KB 請求本體一秒 |210| 首位元組期限 | Claude Code 傳送請求後沒有回應標頭到達 | 直接 Anthropic API 和 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws),包括透過 HTTPS 代理,但不包括當 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 透過 [gateway](/docs/zh-TW/gateways) 路由時。在 Amazon Bedrock 上選擇加入,使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`;不在 Google Cloud 的 Agent Platform 或 Microsoft Foundry 上執行 | 直接 Anthropic API 上 180 秒,其他位置 300 秒,加上每 32KB 請求本體一秒 |

211| 事件層級監視狗 | 沒有回應事件解析。在位元組層級監視狗執行於 Amazon Bedrock 以外的連線上時,到達的位元組(包括保活 ping)也會重設此監視狗,最多約五分鐘內沒有解析事件 | 每個提供者 | 300 秒 |211| 事件層級監視狗 | 沒有回應事件解析。在位元組層級監視狗執行於 Amazon Bedrock 以外的連線上時,到達的位元組(包括保活 ping)也會重設此監視狗,最多約五分鐘內沒有解析事件 | 每個提供者 | 300 秒 |

212| 位元組層級監視狗 | 網路上沒有位元組到達,包括 SSE 保活 ping | 直接 Anthropic API、[Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 和 [閘道](/docs/zh-TW/gateways) 連線,包括自訂 `ANTHROPIC_BASE_URL`。在 Amazon Bedrock `vnd.amazon.eventstream` 回應上選擇加入,使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`;不在 Google Cloud 的 Agent Platform 或 Microsoft Foundry 上執行 | 直接 Anthropic API 上 180 秒。透過自訂 `ANTHROPIC_BASE_URL` 時,若 Claude Code 已[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)則為 180 秒,若尚未擷取則為 300 秒。其他位置 300 秒 |212| 位元組層級監視狗 | 網路上沒有位元組到達,包括 SSE 保活 ping | 直接 Anthropic API、[Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 和 [閘道](/docs/zh-TW/gateways) 連線,包括自訂 `ANTHROPIC_BASE_URL`。在 Amazon Bedrock `vnd.amazon.eventstream` 回應上選擇加入,使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`;不在 Google Cloud 的 Agent Platform 或 Microsoft Foundry 上執行 | 直接 Anthropic API 上 180 秒。在 Claude Platform on AWS、Amazon Bedrock、[Claude apps 閘道](/docs/zh-TW/claude-apps-gateway) 工作階段中,以及透過自訂 `ANTHROPIC_BASE_URL` 時為 300 秒 |

213| 本體閒置逾時 | 5 分鐘內沒有位元組到達 | 提供者不是直接 Anthropic API、Claude Platform on AWS 和設定了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock,除非 [`API_FORCE_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 改變該設定 | 5 分鐘 |213| 本體閒置逾時 | 5 分鐘內沒有位元組到達 | 提供者不是直接 Anthropic API、Claude Platform on AWS 和設定了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock,除非 [`API_FORCE_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 改變該設定 | 5 分鐘 |

214 214 

215如果您設定 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`,位元組層級監視狗會在 Bedrock 上取代本體閒置逾時,而不是與其並行執行。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 隨後也會控制 Bedrock 串流在 Claude Code 將連線視為死連線之前可以保持安靜多長時間,在下列列出的限制範圍內。到達的位元組仍不會在 Bedrock 上重設事件層級監視狗。啟用偵錯記錄時,每個 Bedrock 串流隨後會記錄一條以 `wire-heartbeat: _chunkTimes absent` 開頭的偵錯訊息。215如果您設定 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`,位元組層級監視狗會在 Bedrock 上取代本體閒置逾時,而不是與其並行執行。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 隨後也會控制 Bedrock 串流在 Claude Code 將連線視為死連線之前可以保持安靜多長時間,在下列列出的限制範圍內。到達的位元組仍不會在 Bedrock 上重設事件層級監視狗。啟用偵錯記錄時,每個 Bedrock 串流隨後會記錄一條以 `wire-heartbeat: _chunkTimes absent` 開頭的偵錯訊息。

Details

239 * **[Remote Control](/docs/zh-TW/remote-control) sessions** 在您的本機機器上:Manual、接受編輯、Plan 和 Auto(適用於您自己啟動的工作階段),您無法從應用程式選擇 Bypass permissions。若要使用 Auto,工作階段必須符合自動模式的[可用性要求](#eliminate-prompts-with-auto-mode)。如需在您的電腦上執行的專案執行緒,請參閱[在您自己的電腦上執行執行緒](/docs/zh-TW/claude-projects#run-a-thread-on-your-own-computer)。239 * **[Remote Control](/docs/zh-TW/remote-control) sessions** 在您的本機機器上:Manual、接受編輯、Plan 和 Auto(適用於您自己啟動的工作階段),您無法從應用程式選擇 Bypass permissions。若要使用 Auto,工作階段必須符合自動模式的[可用性要求](#eliminate-prompts-with-auto-mode)。如需在您的電腦上執行的專案執行緒,請參閱[在您自己的電腦上執行執行緒](/docs/zh-TW/claude-projects#run-a-thread-on-your-own-computer)。

240 * 除了 Bypass permissions,下拉式選單顯示本機工作階段所在的權限模式,包括從終端機設定的模式。它在應用程式或終端機中權限模式變更時更新。240 * 除了 Bypass permissions,下拉式選單顯示本機工作階段所在的權限模式,包括從終端機設定的模式。它在應用程式或終端機中權限模式變更時更新。

241 * 由[桌面應用程式](/docs/zh-TW/desktop)或 [VS Code 擴充功能](/docs/zh-TW/vs-code)託管的工作階段在權限模式變更時向 claude.ai 報告,與在終端機中託管的工作階段相同。241 * 由[桌面應用程式](/docs/zh-TW/desktop)或 [VS Code 擴充功能](/docs/zh-TW/vs-code)託管的工作階段在權限模式變更時向 claude.ai 報告,與在終端機中託管的工作階段相同。

242 * 在 v2.1.202 之前,使用 `/remote-control` 或 `claude --remote-control` 連線的工作階段根本不報告其權限模式,因此 claude.ai 和行動應用程式可能會顯示工作階段不在的權限模式。不匹配僅影響標籤。Claude Code 從工作階段的實際權限模式產生權限提示,它們仍然在應用程式中出現以供核准。

243 242 

244 對於 Remote Control,執行工作階段的本機機器必須使用您的 claude.ai 帳戶登入;不支援 API 金鑰。您也可以在啟動該本機工作階段時設定起始權限模式:243 對於 Remote Control,執行工作階段的本機機器必須使用您的 claude.ai 帳戶登入;不支援 API 金鑰。您也可以在啟動該本機工作階段時設定起始權限模式:

245 244 


352 351 

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

354 353 

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

356 

357<h3 id="server-side-classifier-review">354<h3 id="server-side-classifier-review">

358 伺服器端分類器審查355 伺服器端分類器審查

359</h3>356</h3>


408* 啟動在沒有人工核准或沙箱的情況下執行的自主 agent 迴圈,例如使用 `--dangerously-skip-permissions` 或 `--no-sandbox` 啟動的迴圈。這包括在停用隔離和逐項操作核准的情況下執行第三方 agent 或評估工具,例如使用 `--yes-always` 啟動的執行器405* 啟動在沒有人工核准或沙箱的情況下執行的自主 agent 迴圈,例如使用 `--dangerously-skip-permissions` 或 `--no-sandbox` 啟動的迴圈。這包括在停用隔離和逐項操作核准的情況下執行第三方 agent 或評估工具,例如使用 `--yes-always` 啟動的執行器

409* 可能將頁面內容、Cookie 或憑證傳送到其他來源的 [Claude in Chrome](/docs/zh-TW/chrome) 瀏覽器操作406* 可能將頁面內容、Cookie 或憑證傳送到其他來源的 [Claude in Chrome](/docs/zh-TW/chrome) 瀏覽器操作

410* 透過萬用字元、glob 或存留時間篩選,而非特定指名的路徑,刪除 `/tmp`、`$TMPDIR` 或其他共享暫存或快取目錄中的檔案407* 透過萬用字元、glob 或存留時間篩選,而非特定指名的路徑,刪除 `/tmp`、`$TMPDIR` 或其他共享暫存或快取目錄中的檔案

411* 在傳送、上傳、發佈或寫給其他人或共享系統的內容中包含敏感細節,而您自己的訊息並未授權將這些細節提供給該收件者。當儲存庫位於信任邊界之外或為公開時(包括您組織自己的公開儲存庫),PR 和 issue 內文、提交訊息和留言都視為此類對外內容;內部檔案路徑、代號、即時 API 回應資料(例如電子郵件或帳戶識別碼)以及基礎設施識別碼都視為敏感細節。PR 或 issue 內文中來自 API 回應的即時個人資料,例如電子郵件地址、帳戶或組織識別碼或使用量指標,無論儲存庫的可見性或信任邊界為何,都需要您指明這些細節和收件者。該檢查需要 Claude Code v2.1.203 或更新版本408* 在傳送、上傳、發佈或寫給其他人或共享系統的內容中包含敏感細節,而您自己的訊息並未授權將這些細節提供給該收件者。當儲存庫位於信任邊界之外或為公開時(包括您組織自己的公開儲存庫),PR 和 issue 內文、提交訊息和留言都視為此類對外內容;內部檔案路徑、代號、即時 API 回應資料(例如電子郵件或帳戶識別碼)以及基礎設施識別碼都視為敏感細節。PR 或 issue 內文中來自 API 回應的即時個人資料,例如電子郵件地址、帳戶或組織識別碼或使用量指標,無論儲存庫的可見性或信任邊界為何,都需要您指明這些細節和收件者

412* 向 Claude Code 自己的 tmux 窗格傳送按鍵以操控其自身介面,分類器將此視為 Claude 變更自己的權限或監督409* 向 Claude Code 自己的 tmux 窗格傳送按鍵以操控其自身介面,分類器將此視為 Claude 變更自己的權限或監督

413* 註解掉、刪除或強制通過保護安全行為的測試或斷言,例如驗證、存取控制、輸入驗證或沙箱機制410* 註解掉、刪除或強制通過保護安全行為的測試或斷言,例如驗證、存取控制、輸入驗證或沙箱機制

414* 刪除或拆除 Claude 未在工作階段中建立的有狀態資源,當沒有更具體的刪除規則適用且您未指明該資源時411* 刪除或拆除 Claude 未在工作階段中建立的有狀態資源,當沒有更具體的刪除規則適用且您未指明該資源時

415* 將 API 基礎 URL、代理伺服器端點、webhook 接收器或 registry 鏡像重新指向不符合任務的第三方主機,包括在 `.env.example` 等範例檔案中412* 將 API 基礎 URL、代理伺服器端點、webhook 接收器或 registry 鏡像重新指向不符合任務的第三方主機,包括在 `.env.example` 等範例檔案中

416* 使用 `git remote set-url` 或 `git remote add` 變更推送目的地,除非您指明了新的遠端413* 使用 `git remote set-url` 或 `git remote add` 變更推送目的地,除非您指明了新的遠端

417* 將秘密或個人或受託資料推送到已知為公開的儲存庫,或將不屬於該儲存庫本身工作的機密資料推送到那裡。對個人或受託資料而言,dotfiles 儲存庫本身的主題內容是唯一的例外,而來自私人儲存庫的內容流向任何公開使用介面也會以相同方式被阻止;這兩項改進都需要 Claude Code v2.1.203 或更新版本。在 v2.1.203 之前,個人資料與機密資料歸為同一類,僅當其不屬於該儲存庫本身的工作時才會被阻止。當儲存庫的可見性未確定時,分類器不會僅憑此點而阻止;它會改為依據其他規則判斷內容414* 將秘密或個人或受託資料推送到已知為公開的儲存庫,或將不屬於該儲存庫本身工作的機密資料推送到那裡。對個人或受託資料而言,dotfiles 儲存庫本身的主題內容是唯一的例外,而來自私人儲存庫的內容流向任何公開使用介面也會以相同方式被阻止。當儲存庫的可見性未確定時,分類器不會僅憑此點而阻止;它會改為依據其他規則判斷內容

418* 對不同的儲存庫或組織開啟 pull request、使用 `gh repo fork` 進行分叉,或推送到第三方儲存庫,除非您指明了該外部目標415* 對不同的儲存庫或組織開啟 pull request、使用 `gh repo fork` 進行分叉,或推送到第三方儲存庫,除非您指明了該外部目標

419 

420其中幾個類別取決於[環境](/docs/zh-TW/auto-mode-config#define-trusted-infrastructure)項目,例如敏感遠端目標和受保護的 IaC 範圍,您可以將其縮小到具體名稱。

421 

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

423 

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

425 

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

427 

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

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

430 419 

431 直接位於變數下的 glob,如 `rm -rf "$VAR"/*`,則屬於[關鍵路徑](#critical-paths)。目標為單獨的 `*` 或以 `/*` 或 `\*` 結尾的 `Remove-Item` 永遠不會送到分類器:Claude Code 會[直接拒絕它們](#remove-item-in-powershell)。420 直接位於變數下的 glob,如 `rm -rf "$VAR"/*`,則屬於[關鍵路徑](#critical-paths)。目標為單獨的 `*` 或以 `/*` 或 `\*` 結尾的 `Remove-Item` 永遠不會送到分類器:Claude Code 會[直接拒絕它們](#remove-item-in-powershell)。

432 421 

422其中幾個類別取決於[環境](/docs/zh-TW/auto-mode-config#define-trusted-infrastructure)項目,例如敏感遠端目標和受保護的 IaC 範圍,您可以將其縮小到具體名稱。

423 

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

434 425 

435* 從雲端執行個體中繼資料端點(例如 `169.254.169.254`)請求憑證,或明確使用機器自身的服務帳戶或節點身分來驗證雲端、叢集或 registry 呼叫426* 從雲端執行個體中繼資料端點(例如 `169.254.169.254`)請求憑證,或明確使用機器自身的服務帳戶或節點身分來驗證雲端、叢集或 registry 呼叫


449* 安裝在您的鎖定檔案或清單檔中宣告的相依套件440* 安裝在您的鎖定檔案或清單檔中宣告的相依套件

450* 讀取 `.env` 並將憑證傳送到其對應的 API441* 讀取 `.env` 並將憑證傳送到其對應的 API

451* 唯讀 HTTP 請求442* 唯讀 HTTP 請求

452* 推送到您正在處理的儲存庫的任何分支,包括預設分支。名稱將其標示為部署或發佈目標的非預設分支,例如 `production` 或 `gh-pages`,不在此列:分類器會依其本身的情況判斷推送到那裡的操作。推送的內容仍會依據其他規則進行檢查,[`permissions.deny` 規則](/docs/zh-TW/permissions#manage-permissions)仍可在每個模式中[依撰寫方式](/docs/zh-TW/permissions#bash-rule-limits)阻止推送命令,遠端自身的分支保護也仍然適用。在 v2.1.211 之前,預設僅允許推送到您起始所在的分支、Claude 建立的分支,以及對預設分支的例行推送;而在 v2.1.203 之前,任何直接推送到預設分支的操作都會被阻止443* 推送到您正在處理的儲存庫的任何分支,包括預設分支。名稱將其標示為部署或發佈目標的非預設分支,例如 `production` 或 `gh-pages`,不在此列:分類器會依其本身的情況判斷推送到那裡的操作。推送的內容仍會依據其他規則進行檢查,[`permissions.deny` 規則](/docs/zh-TW/permissions#manage-permissions)仍可在每個模式中[依撰寫方式](/docs/zh-TW/permissions#bash-rule-limits)阻止推送命令,遠端自身的分支保護也仍然適用。在 v2.1.211 之前,預設僅允許推送到您起始所在的分支、Claude 建立的分支,以及對預設分支的例行推送

453* 刪除 Claude 在同一工作階段中稍早建立的特定工作444* 刪除 Claude 在同一工作階段中稍早建立的特定工作

454* 作為您任務的一部分讀取、審查或撰寫與安全相關的程式碼、設定和威脅模型445* 作為您任務的一部分讀取、審查或撰寫與安全相關的程式碼、設定和威脅模型

455* 在同一多 agent 工作階段中協同工作的 agent 之間的訊息446* 在同一多 agent 工作階段中協同工作的 agent 之間的訊息

permissions.md +8 −3

Details

384 384 

385`Edit` 規則適用於所有編輯檔案的內建工具。Claude 會盡力嘗試將 `Read` 規則應用於所有讀取檔案的內建工具(如 Grep 和 Glob)、您提示中的 `@file` 提及,以及連接的 [IDE](/docs/zh-TW/vs-code#the-built-in-ide-mcp-server) 與 Claude 共享的選擇和開啟檔案內容。385`Edit` 規則適用於所有編輯檔案的內建工具。Claude 會盡力嘗試將 `Read` 規則應用於所有讀取檔案的內建工具(如 Grep 和 Glob)、您提示中的 `@file` 提及,以及連接的 [IDE](/docs/zh-TW/vs-code#the-built-in-ide-mcp-server) 與 Claude 共享的選擇和開啟檔案內容。

386 386 

387`Read(path)` deny 規則也適用於您貼到提示詞中的圖片路徑,以及您 @ 提及的目錄:

388 

389* **圖片路徑**:當您在終端機中將圖片路徑貼上或將圖片檔案拖曳到提示詞中,且規則符合該路徑時,Claude Code 不會附加該圖片。如果貼上的內容不含其他圖片,該路徑會以文字形式保留在您的提示詞中。

390* **目錄**:[Claude 收到的清單](/docs/zh-TW/common-workflows#reference-files-and-directories)會省略規則符合的檔案和目錄名稱。

391 

392Claude Code 在 v2.1.290 及更新版本中檢查貼上的圖片路徑和目錄清單。

393 

387`Read` deny 規則也會阻止同一路徑上的 [Edit 和 Write 工具](/docs/zh-TW/errors#file-is-covered-by-a-read-deny-rule),包括在該處建立新檔案。NotebookEdit 不涵蓋,所以為任何工具都不可變更的路徑新增 `Edit` deny 規則。檢查需要 Claude Code v2.1.208 或更新版本進行編輯,以及 v2.1.228 或更新版本進行寫入。394`Read` deny 規則也會阻止同一路徑上的 [Edit 和 Write 工具](/docs/zh-TW/errors#file-is-covered-by-a-read-deny-rule),包括在該處建立新檔案。NotebookEdit 不涵蓋,所以為任何工具都不可變更的路徑新增 `Edit` deny 規則。檢查需要 Claude Code v2.1.208 或更新版本進行編輯,以及 v2.1.228 或更新版本進行寫入。

388 395 

389Claude Code 僅根據 `Edit(path)` 和 `Read(path)` 規則檢查檔案權限。如果您改為為 `Write`、`NotebookEdit`、`Glob` 或舊版 `MultiEdit` 工具編寫路徑規則,Claude Code 會接受規則但永遠不會查詢它,並在啟動時[發出警告](/docs/zh-TW/errors#is-not-matched-by-file-permission-checks),除了在 `--allowedTools` 中傳遞的 `Glob` 規則。使用 `Edit(docs/**)` 代替 `Write(docs/**)`、`NotebookEdit(docs/**)` 或 `MultiEdit(docs/**)`,以及 `Read(docs/**)` 代替 `Glob(docs/**)`。Claude Code 不會警告沒有路徑的工具名稱規則,如 `Write` 的 deny 規則;它在任何地方都符合該規則。需要 Claude Code v2.1.210 或更新版本。396Claude Code 僅根據 `Edit(path)` 和 `Read(path)` 規則檢查檔案權限。如果您改為為 `Write`、`NotebookEdit`、`Glob` 或舊版 `MultiEdit` 工具編寫路徑規則,Claude Code 會接受規則但永遠不會查詢它,並在啟動時[發出警告](/docs/zh-TW/errors#is-not-matched-by-file-permission-checks),除了在 `--allowedTools` 中傳遞的 `Glob` 規則。使用 `Edit(docs/**)` 代替 `Write(docs/**)`、`NotebookEdit(docs/**)` 或 `MultiEdit(docs/**)`,以及 `Read(docs/**)` 代替 `Glob(docs/**)`。Claude Code 不會警告沒有路徑的工具名稱規則,如 `Write` 的 deny 規則;它在任何地方都符合該規則。需要 Claude Code v2.1.210 或更新版本。


467 在 gitignore 模式中,`*` 符合單一路徑段內的內容,可以出現在模式中的任何位置,而 `**` 符合跨目錄。474 在 gitignore 模式中,`*` 符合單一路徑段內的內容,可以出現在模式中的任何位置,而 `**` 符合跨目錄。

468</Note>475</Note>

469 476 

470當您使用「是,不要再問」批准檔案路徑時,Claude Code 會逸出該路徑中的 gitignore 模式字元,如 `[`、`]` 和 `*`,所以產生的規則只符合您批准的字面路徑。您自己編寫的規則不會被逸出。在 v2.1.202 之前,Claude Code 會儲存未逸出的路徑,所以名為 `[2024-06] Reports` 的目錄產生的規則可能無法符合其自己的路徑或符合無意的同級目錄。477當您使用「是,不要再問」核准檔案路徑時,Claude Code 會逸出該路徑中的 gitignore 模式字元,如 `[`、`]` 和 `*`,所以產生的規則只符合您核准的字面路徑。您自己編寫的規則不會被逸出。

471 478 

472您不需要逸出路徑中的括號,所以 `Edit(./Finance (2024)/**)` 符合 `Finance (2024)` 資料夾。479您不需要逸出路徑中的括號,所以 `Edit(./Finance (2024)/**)` 符合 `Finance (2024)` 資料夾。

473 480 


805 設定主目錄例外只會跳過信任步驟。`~/.claude/settings.local.json` 仍然是[本機範圍](/docs/zh-TW/settings#compare-the-scope-of-each-settings-file),因此 Claude Code 只在您在主目錄本身啟動的工作階段中讀取它,而不是在每個專案中。若要在所有專案中套用權限規則,請改為將它們新增到您的使用者設定:`~/.claude/settings.json` 或設定 `CLAUDE_CONFIG_DIR` 時的 `$CLAUDE_CONFIG_DIR/settings.json`。812 設定主目錄例外只會跳過信任步驟。`~/.claude/settings.local.json` 仍然是[本機範圍](/docs/zh-TW/settings#compare-the-scope-of-each-settings-file),因此 Claude Code 只在您在主目錄本身啟動的工作階段中讀取它,而不是在每個專案中。若要在所有專案中套用權限規則,請改為將它們新增到您的使用者設定:`~/.claude/settings.json` 或設定 `CLAUDE_CONFIG_DIR` 時的 `$CLAUDE_CONFIG_DIR/settings.json`。

806</Note>813</Note>

807 814 

808在 v2.1.207 之前,Claude Code 在您接受對話框之前套用未追蹤檔案的規則。

809 

810<h3 id="what-runs-before-you-trust-a-folder">815<h3 id="what-runs-before-you-trust-a-folder">

811 您信任資料夾前執行的內容816 您信任資料夾前執行的內容

812</h3>817</h3>

plugin-evals.md +36 −5

Details

441 441 

442| 結束代碼 | 含義 |442| 結束代碼 | 含義 |

443| :- | :- |443| :- | :- |

444| 0 | 每個案例的得分都在或高於 `--threshold`,且每個案例檔案都已載入 |444| 0 | 測試套件通過:每個案例的得分都在或高於 `--threshold`,且沒有其他原因導致執行失敗 |

445| 1 | 案例得分低於閾值、案例檔案無法載入、找不到案例、無法啟動執行、外掛程式目錄不受信任且未傳遞 `--trust-plugin`,或選項無效 |445| 1 | 案例得分低於閾值、案例檔案無法載入、找不到案例、無法啟動執行,或執行[因 API 錯誤而結束](#runs-ended-on-an-api-error)。當外掛程式目錄不受信任且未傳遞 `--trust-plugin`、選項無效,或無法寫入 `--json` 結果時,也會傳回此代碼 |

446| 2 | 部分執行:達到 `--max-cost-usd` 上限,或您的認證在首次執行前或首次執行時被拒絕。`results.json` 仍會以 `partial: true` 和原因寫入 |446| 2 | 部分執行:達到 `--max-cost-usd` 上限,或您的認證在首次執行前或首次執行時被拒絕。`results.json` 仍會以 `partial: true` 和原因寫入 |

447| 130 | 已中斷。部分結果已寫入 |447| 130 | 已中斷。部分結果已寫入 |

448| 143 | 已終止,例如由 CI 逾時 |448| 143 | 已終止,例如由 CI 逾時 |


501| `cases[].name` | Case name |501| `cases[].name` | Case name |

502| `cases[].aggregates.score` | Mean with-arm run score for the case |502| `cases[].aggregates.score` | Mean with-arm run score for the case |

503| `cases[].aggregates.delta` | With-arm score minus without-arm score. Omitted when the case ran one arm or the arms aren't comparable |503| `cases[].aggregates.delta` | With-arm score minus without-arm score. Omitted when the case ran one arm or the arms aren't comparable |

504| `cases[].arms.with[].error` | `null`, or why a run ended abnormally, such as `timed out after 300s`. A run that started but ended badly is still graded on what it produced, so a non-null error doesn't imply score 0 |504| `cases[].arms.with[].error` | `null`,或執行異常結束的原因,例如 `timed out after 300s`。其中部分執行仍會依其產出進行評分,因此非 null 的錯誤不代表分數為 0。[因 API 錯誤而結束](#runs-ended-on-an-api-error)的執行會直接得分 0,不進行評分 |

505| `cases[].arms.with[].aborted` | 當 [mock](#mock-mcp-servers) 透過 `expect:`、`abort_when` 或 [agent-mock 呼叫預算](#mock-call-budget-exceeded) 停止執行時出現,包含 `server`、`tool` 和 `reason`。該執行得分為 0,且 `error` 維持 `null` |505| `cases[].arms.with[].aborted` | 當 [mock](#mock-mcp-servers) 透過 `expect:`、`abort_when` 或 [agent-mock 呼叫預算](#mock-call-budget-exceeded) 停止執行時出現,包含 `server`、`tool` 和 `reason`。該執行得分為 0,且 `error` 維持 `null` |

506| `cases[].arms.with[].skippedPaidGraders` | `true` when the cost ceiling skipped this run's judge graders, so its score isn't comparable |506| `cases[].arms.with[].skippedPaidGraders` | `true` when the cost ceiling skipped this run's judge graders, so its score isn't comparable |

507| `costUsd`, `durationSeconds`, `claudeVersion` | Estimated cost at list price including judge calls, wall-clock seconds, and the Claude Code version that ran the suite |507| `costUsd`, `durationSeconds`, `claudeVersion` | Estimated cost at list price including judge calls, wall-clock seconds, and the Claude Code version that ran the suite |


720 720 

721在 v2.1.283 之前,`claude plugin eval` 不會檢查 git 版本,在較舊的 git 上,套件執行時這些程式會保持開啟。721在 v2.1.283 之前,`claude plugin eval` 不會檢查 git 版本,在較舊的 git 上,套件執行時這些程式會保持開啟。

722 722 

723<h3 id="cannot-be-evaluated-where-sessions-load-it">

724 "cannot be evaluated where sessions load it"

725</h3>

726 

727您在 shell 中以某個外掛的名稱執行了 `claude plugin eval`,而該外掛是從您[透過本機路徑新增](/docs/zh-TW/plugins/loading#in-place-and-copied-plugins)的市集所安裝。目前沒有任何工作階段能從該市集載入此外掛,因此命令會以此訊息拒絕執行,並以代碼 1 結束。

728 

729```text theme={null}

730Error: formatter@my-marketplace cannot be evaluated where sessions load it: no session could load it now. Its marketplace is a folder whose catalog could not be read, or lists it no more. Check the marketplace with `claude plugin marketplace list`, or pass ./<dir> to evaluate a directory.

731```

732 

733`no session could load it now.` 之後的句子會指出失敗的項目。

734 

735請在 shell 中執行 `claude plugin marketplace list`,並修正訊息所指出的問題。例如,還原市集目錄,或將外掛的項目放回其目錄清單中。若要在不透過市集的情況下評估外掛的原始碼,請將其目錄作為目標傳遞,例如 `claude plugin eval ./plugins/formatter`。

736 

723<h3 id="no-eval-cases-found">737<h3 id="no-eval-cases-found">

724 "No eval cases found"738 "No eval cases found"

725</h3>739</h3>


770 執行以 1 結束,但結果看起來正常784 執行以 1 結束,但結果看起來正常

771</h3>785</h3>

772 786 

773預設的 `--threshold` 是 1.0,因此只要任何案例的分數低於滿分,命令就會以 1 結束。請設定符合您要求分數的閾值。結束代碼 1 也涵蓋無法載入的案例檔案,這會在表格上方的 stderr 中回報。787當每個案例的分數都達到或高於 `--threshold`,但命令仍以 1 結束時,stderr 上會有一行指出原因,即使在 `--json` 下也是如此。例如,某個案例檔案無法載入,或執行[因 API 錯誤而結束](#runs-ended-on-an-api-error)。其他原因請參閱[退出碼](#run-evals-in-ci)。

788 

789預設的 `--threshold` 是 1.0,因此只要任何案例的分數低於滿分,命令就會以 1 結束。請設定符合您要求分數的閾值。

774 790 

775<h3 id="json-output-path-must-end-in-json">791<h3 id="json-output-path-must-end-in-json">

776 `--json output path must end in .json`792 `--json output path must end in .json`


784 800 

785在雙 arm 執行中,該評分器依設計會被排除在分數之外,其 `scored` 欄位為 `false`。請參閱[與無外掛基準比較評分](#compare-against-a-no-plugin-baseline)。801在雙 arm 執行中,該評分器依設計會被排除在分數之外,其 `scored` 欄位為 `false`。請參閱[與無外掛基準比較評分](#compare-against-a-no-plugin-baseline)。

786 802 

803<h3 id="runs-ended-on-an-api-error">

804 "ended on an API error and scored 0 without grading"

805</h3>

806 

807此 stderr 警告表示 API 以 HTTP 錯誤回應了至少一次執行的最後一個請求,例如速率限制或方案用量上限。這類執行會得到 0 分且沒有評分器結果,而且無論分數和 `--threshold` 為何,命令都會以非零值結束。

808 

809若要修正此問題,請找出每個受影響執行的錯誤,並解決其所回報的原因,然後再次執行套件:

810 

811* **未使用 `--json` 時**:錯誤位於該執行進度行的結尾,在 `error:` 之後

812* **使用 `--json` 時**:錯誤位於 [JSON 結果](#json-result)中的 `cases[].arms.with[].error` 或 `cases[].arms.without[].error`

813 

814此計數也包含[基準](#the-no-plugin-baseline)執行。基準執行的分數從不決定案例是否通過,因此即使每個案例都通過,命令仍可能失敗。在雙 arm 執行中,受影響案例的 `W/OUT` 和 `Δ` 會顯示為 `—`。若為用量上限或速率限制,請參閱[執行中途因用量上限或速率限制錯誤而失敗](#runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through)。

815 

816在 v2.1.299 之前,這類執行會根據其已產生的內容進行評分。

817 

787<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">818<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

788 執行中途因用量上限或速率限制錯誤而失敗819 執行中途因用量上限或速率限制錯誤而失敗

789</h3>820</h3>

790 821 

791如果您的帳戶在套件執行期間達到其方案的用量上限或 API 速率限制,之後的每次執行都會以該錯誤結束,並根據其產生的內容進行評分,通常會得到 0 分。套件仍會完成,且不會被標記為 `partial`,因此結果可能看起來像是迴歸。在信任分數之前,請先檢查 `NOTES` 欄或 JSON 中的 `cases[].arms.with[].error` 是否有限制訊息,然後在限制重設後重新執行;如果需要維持在限制之內,請使用 `--runs 1` 或 `--case` 篩選器。822以用量上限或速率限制錯誤結束的執行會[不經評分直接記為 0 分](#runs-ended-on-an-api-error),且命令會以非零值結束。套件仍會完成,且不會被標記為 `partial`。請在限制重設後重新執行;如果需要維持在限制之內,請使用 `--runs 1` 或 `--case` 篩選器。

792 823 

793<h3 id="mock-call-budget-exceeded">824<h3 id="mock-call-budget-exceeded">

794 "mock call budget exceeded"825 "mock call budget exceeded"

Details

523 523 

524| 結束代碼 | 含義 |524| 結束代碼 | 含義 |

525| :- | :- |525| :- | :- |

526| `0` | 每個案例都符合閾值 |526| `0` | 套件通過:每個案例都符合閾值,且沒有其他原因導致執行失敗 |

527| `1` | 失敗的案例、載入錯誤或不受信任的 plugin 目錄 |527| `1` | 失敗的案例、載入錯誤、不受信任的 plugin 目錄、[因 API 錯誤而結束](/docs/zh-TW/plugin-evals#runs-ended-on-an-api-error) 的執行,或 [在 CI 中執行 evals](/docs/zh-TW/plugin-evals#run-evals-in-ci) 下列出的其他原因 |

528| `2` | 部分執行 |528| `2` | 部分執行 |

529| `130` | 已中斷 |529| `130` | 已中斷 |

530| `143` | 已終止 |530| `143` | 已終止 |

Details

752 752 

753外掛程式 agent 的 frontmatter 遵循這些規則:753外掛程式 agent 的 frontmatter 遵循這些規則:

754 754 

755* **支援的欄位**:`name`、`description`、`model`、`effort`、`maxTurns`、`tools`、`disallowedTools`、`skills`、`memory`、`background`、`omitClaudeMd`、`isolation`、`color` 和 `experimental` 的 `cacheTtl` 鍵。唯一有效的 `isolation` 值是 `"worktree"`。請參閱 [支援的 frontmatter 欄位](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 以了解每個欄位的作用755* **支援的欄位**:`name`、`description`、`model`、`effort`、`maxTurns`、`autoCompactWindow`、`tools`、`disallowedTools`、`skills`、`memory`、`background`、`omitClaudeMd`、`isolation`、`color` 和 `experimental` 的 `cacheTtl` 鍵。唯一有效的 `isolation` 值是 `"worktree"`。請參閱 [支援的 frontmatter 欄位](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 以了解每個欄位的作用

756* **忽略的欄位**:`permissionMode`、`hooks`、`mcpServers` 和 `initialPrompt`。agent 檔案無法自行新增 hooks 或 MCP 伺服器,因此改為將這些新增為外掛程式 [hooks](#hooks) 和 [MCP 伺服器](#mcp-servers)756* **忽略的欄位**:`permissionMode`、`hooks`、`mcpServers` 和 `initialPrompt`。agent 檔案無法自行新增 hooks 或 MCP 伺服器,因此改為將這些新增為外掛程式 [hooks](#hooks) 和 [MCP 伺服器](#mcp-servers)

757* **無法解析的 Frontmatter**:agent 仍然載入,每個欄位都被忽略。它以檔案命名,其描述讀取 `Agent from my-plugin plugin`。在您的 shell 中執行 [`claude plugin validate`](/docs/zh-TW/plugins/cli-reference#plugin-validate) 以找到這些檔案757* **無法解析的 Frontmatter**:agent 仍然載入,每個欄位都被忽略。它以檔案命名,其描述讀取 `Agent from my-plugin plugin`。在您的 shell 中執行 [`claude plugin validate`](/docs/zh-TW/plugins/cli-reference#plugin-validate) 以找到這些檔案

758 758 

Details

237 237 

238當使用者卸載最後一個約束依賴的 plugin 時,依賴不再受約束於版本範圍,並在下一次更新時恢復追蹤其 marketplace 項目。238當使用者卸載最後一個約束依賴的 plugin 時,依賴不再受約束於版本範圍,並在下一次更新時恢復追蹤其 marketplace 項目。

239 239 

240<h3 id="dependencies-when-your-plugin-loads-from-claude-ai">

241 從 claude.ai 載入外掛時的相依性

242</h3>

243 

244當使用者為其 claude.ai 帳戶開啟您的外掛時,Claude Code 會將其載入為 `<name>@synced`,[不屬於任何市集](/docs/zh-TW/plugins/loading#synced-plugins)。對於您外掛的這個副本,當使用者具備下列任一項時,Claude Code 會將指定了市集的相依性項目視為已滿足:

245 

246* **來自其市集的相依套件**:從您的項目所指定的市集安裝,並已啟用。Claude Code 會將您項目中的 `version` 範圍與已安裝副本的版本進行比對。

247* **同名的 claude.ai 外掛**:從其 claude.ai 帳戶啟用。Claude Code 會將您項目中的 `version` 範圍與該外掛的 `version` 進行比對,未宣告 `version` 的外掛會通過檢查。

248 

249如果您告知使用者從 claude.ai 開啟您的外掛,也請告知他們在該處一併開啟相依套件,或從其市集安裝該相依套件。

250 

251只有當您的外掛同樣從 claude.ai 載入時,claude.ai 外掛才會滿足該項目。

252 

240<h2 id="see-also">253<h2 id="see-also">

241 另請參閱254 另請參閱

242</h2>255</h2>

Details

252 252 

253若要阻止提示詞,請在不呼叫 `next` 的情況下傳回 `{ drop: 'the reason' }`。文字會回到使用者的提示詞輸入欄中,而使用者會看到 `Prompt dropped by a hook:` 後接您的原因,因此請以使用者為對象撰寫原因。如果您的 hook 在其 `next(e)` 呼叫已讓提示詞通過之後才傳回 `drop`,回合仍會執行,且該 hook 會[失敗](#handle-a-hook-that-fails),並顯示包含 `a drop after its next() was answered` 的訊息。253若要阻止提示詞,請在不呼叫 `next` 的情況下傳回 `{ drop: 'the reason' }`。文字會回到使用者的提示詞輸入欄中,而使用者會看到 `Prompt dropped by a hook:` 後接您的原因,因此請以使用者為對象撰寫原因。如果您的 hook 在其 `next(e)` 呼叫已讓提示詞通過之後才傳回 `drop`,回合仍會執行,且該 hook 會[失敗](#handle-a-hook-that-fails),並顯示包含 `a drop after its next() was answered` 的訊息。

254 254 

255[其他事件](/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads)涵蓋 Claude 讀取的其餘內容:`prompt.section` 用於系統提示詞的每個區段,`prompt.context` 用於隨第一則訊息送出的上下文,而 `skill.prompt` 用於 skill 的文字。來自這些 hook、且在請求之間有所變動的文字,會[使提示快取失效](/docs/zh-TW/prompt-caching)。255[其他事件](/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads)涵蓋 Claude 讀取的其餘內容:`prompt.section` 用於系統提示詞的每個區段,`prompt.context` 用於隨第一則訊息送出的上下文,而 `skill.prompt` 用於 skill 的文字。來自這些 hook、且在請求之間有所變動的文字,會[使提示快取失效](/docs/zh-TW/prompt-caching)。在 `skill.prompt` hook 中,您也可以讀取[該 skill 來自哪個外掛或檔案](/docs/zh-TW/plugins/mods/reference#skill-prompt-fields)。

256 256 

257<h3 id="follow-a-turn">257<h3 id="follow-a-turn">

258 追蹤回合258 追蹤回合

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Mods 概述5# Mods 概覽

6 6 

7> 使用 mod 為 Claude Code 新增窗格、命令和工具呼叫規則。了解 mod 的功能、如何建立或安裝 mod,以及 mod 的執行位置。7> 透過 mod 為 Claude Code 新增窗格、命令與工具呼叫規則。了解 mod 能做什麼、如何製作或安裝 mod,以及 mod 在何處執行。

8 8 

9Mod 是一個[外掛程式](/docs/zh-TW/plugins/overview),可改變 Claude Code 的外觀和行為。它由 JavaScript 或 TypeScript 事件處理程式組成:Claude Code 在事件發生時呼叫一個,例如工具呼叫、已提交的提示或介面的一部分被繪製,處理程式可以監視事件、變更事件或接管事件。使用 mod 為 Claude Code 新增您自己的功能,例如在每個請求後繪製您的內容有多滿的窗格。如需 mod 中的檔案和完整範例,請參閱[Mod 的運作方式](#how-a-mod-works)。9mod 是一種會改變 Claude Code 外觀與行為的[外掛](/docs/zh-TW/plugins/overview)。它由 JavaScript 或 TypeScript 事件處理常式組成:當事件發生時(例如工具呼叫、提交提示詞,或繪製介面的某個部分),Claude Code 會呼叫對應的處理常式,而處理常式可以監看該事件、變更它,或完全接管它。您可以使用 mod 為 Claude Code 新增自己的功能,例如一個在每次請求後以圖表呈現 context 使用量的窗格。如需了解 mod 中包含的檔案以及完整範例,請參閱 [mod 的運作方式](#how-a-mod-works)。

10 10 

11<Note>11<Note>

12 Claude Code 現有的 [hooks](/docs/zh-TW/hooks) 也在事件上執行,作為 shell 命令、HTTP 請求或您在設定檔中設定的提示。Mod 的處理程式是在 Claude Code 內執行的函式。Claude Code 呼叫兩種 hooks:在這些頁面上,「hook」表示 mod 的處理程式,而設定檔類型是「設定 hook」。12 Claude Code 既有的 [hooks](/docs/zh-TW/hooks) 也會在事件發生時執行,其形式是您在設定檔中設定的 shell 命令、HTTP 請求或提示詞。相對地,mod 的處理常式則是在 Claude Code 內部執行的函式,而非上述形式。Claude Code 將這兩種都稱為 hook:在這些頁面中,「hook」指的是 mod 的處理常式,而設定檔中的那種則稱為「設定 hook」。

13</Note>13</Note>

14 14 

15<h2 id="what-a-mod-can-do">15<h2 id="what-a-mod-can-do">


212 Mods 執行的位置212 Mods 執行的位置

213</h3>213</h3>

214 214 

215Mod 的 hook 在載入外掛程式的每種工作階段中執行。繪製的範圍較窄:只有終端機和 Desktop 應用程式顯示 mod 的窗格、帶狀區域和取代的列。此表列出您可能執行 Claude Code 的每個位置:215Mod 的 hook 在載入外掛程式的每種工作階段中執行,無論由哪個供應商提供模型,包括 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry。繪製的範圍較窄:只有終端機和 Desktop 應用程式顯示 mod 的窗格、帶狀區域和取代的列。此表列出您可能執行 Claude Code 的每個位置:

216 216 

217| 您執行 Claude Code 的位置 | Hook 執行 | Mod 繪製的內容出現 |217| 您執行 Claude Code 的位置 | Hook 執行 | Mod 繪製的內容出現 |

218| :- | :- | :- |218| :- | :- | :- |


263| `cc-plugin-plugin-authoring` | 為 Claude 提供[`plugin-authoring` skill](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)以編寫 mods。它保留 skill 且沒有 mod 程式碼。 | 除非 Anthropic 已遠端關閉已安裝的 mods | 在 `/plugin` 中停用它 |263| `cc-plugin-plugin-authoring` | 為 Claude 提供[`plugin-authoring` skill](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)以編寫 mods。它保留 skill 且沒有 mod 程式碼。 | 除非 Anthropic 已遠端關閉已安裝的 mods | 在 `/plugin` 中停用它 |

264| `cc-plugin-sec-default` | 保護您的組織管理的內容免受使用者安裝的 mods | [保護載入的位置](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default) | 您無法。管理員在受管設定中[設定順序](/docs/zh-TW/plugins/mods/admin#install-your-organizations-mods) |264| `cc-plugin-sec-default` | 保護您的組織管理的內容免受使用者安裝的 mods | [保護載入的位置](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default) | 您無法。管理員在受管設定中[設定順序](/docs/zh-TW/plugins/mods/admin#install-your-organizations-mods) |

265| `cc-plugin-telemetry` | 傳送 Claude Code 及其內建 mods 記錄的分析記錄 | 無論 Claude Code 自己的分析在哪裡開啟 | 在 `/plugin` 中停用它,或關閉分析,例如使用 [`DISABLE_TELEMETRY`](/docs/zh-TW/env-vars) |265| `cc-plugin-telemetry` | 傳送 Claude Code 及其內建 mods 記錄的分析記錄 | 無論 Claude Code 自己的分析在哪裡開啟 | 在 `/plugin` 中停用它,或關閉分析,例如使用 [`DISABLE_TELEMETRY`](/docs/zh-TW/env-vars) |

266| `cc-plugin-you-should-know` | 執行一個側邊 agent,在 Claude 處理較長的任務時監視您的背景。當它發現值得了解的東西而您可能會錯過時,它會在提示上方顯示一個備註。 | 預設停用。如果可供您的組織使用,列在 `/plugin` -> **已安裝** -> **顯示已停用**。使用 [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/zh-TW/plugins/cli-reference#plugin-in-a-session) 啟用。 | 在 `/plugin` 中停用它 |266| `cc-plugin-you-should-know` | [You should know](/docs/zh-TW/interactive-mode#you-should-know-suggestions):當側邊 agent 發現您可能錯過的內容時,會在提示上方顯示一則備註 | 保持關閉,直到您[將其開啟](/docs/zh-TW/interactive-mode#you-should-know-suggestions) | 在 `/plugin` 中停用它 |

267 267 

268停止已安裝 mods 的設定和旗標,例如 `disableAllHooks`、`--bare` 和 `--safe-mode`,不會停止內建 mods。268停止已安裝 mods 的設定和旗標,例如 `disableAllHooks`、`--bare` 和 `--safe-mode`,不會停止內建 mods。

269 269 

Details

43| `next.origin` | 觸發事件者的 `{ plugin, tier }`。Claude Code 本身為 `{ plugin: 'engine', tier: 'core' }`。mod 的 `tier` 是它在 [mod 執行順序](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)中的優先群組:`prepend`、`user`、`append` 或 `builtin`。 |43| `next.origin` | 觸發事件者的 `{ plugin, tier }`。Claude Code 本身為 `{ plugin: 'engine', tier: 'core' }`。mod 的 `tier` 是它在 [mod 執行順序](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)中的優先群組:`prepend`、`user`、`append` 或 `builtin`。 |

44| `next.budget` | hook 的時間限制(毫秒):`next.budget.ms` 為整體限制,`next.budget.remainingMs` 為目前剩餘時間 |44| `next.budget` | hook 的時間限制(毫秒):`next.budget.ms` 為整體限制,`next.budget.remainingMs` 為目前剩餘時間 |

45| `next.to(e, tier)` | 跳至較後面的層級,即 `append`、`builtin` 或 `core`。`next.to(e, 'append')` 會略過使用者安裝的 mod。只有 `prependPlugins` 或 `appendPlugins` 中的 mod 可以呼叫它。 |45| `next.to(e, tier)` | 跳至較後面的層級,即 `append`、`builtin` 或 `core`。`next.to(e, 'append')` 會略過使用者安裝的 mod。只有 `prependPlugins` 或 `appendPlugins` 中的 mod 可以呼叫它。 |

46| `next.error` | 僅限 `.catch` 處理常式中。當 hook 失敗時,`kind` 為 `throw` 或 `timeout`,`message` 為錯誤文字。當 hook 因事件來自其自身某個 mods API 呼叫內部而被略過時,`kind` 為 `re-entry`;若觸發該事件的是另一個 mod 新增至 mods API 的方法,`cause` 為 `lent`。`re-entry` 與 `cause` 需要 Claude Code v2.1.292 或更新版本。 |46| `next.error` | 僅限 `.catch` 處理常式中。當 hook 失敗時,`kind` 為 `throw` 或 `timeout`,`message` 為錯誤文字。當 hook 因事件來自該 hook 或您的 mod 在其 hook 之外的程式碼所發出的 mods API 呼叫內部而被略過時,`kind` 為 `re-entry`。`re-entry` 需要 Claude Code v2.1.292 或更新版本。 |

47| `next.error.cause` | 僅在 `kind` 為 `re-entry` 時設定。若 `tool.call` 或 [`PreToolUse`](/docs/zh-TW/hooks#pretooluse) hook 變更了事件來源的 mods API 呼叫,或 `agent.spawn` hook 變更了由該呼叫啟動的 agent,則為 `rewritten`。若觸發該事件的是另一個 mod 新增至 mods API 的方法,則為 `lent`,除非同時符合 `rewritten` 的情況。`lent` 需要 Claude Code v2.1.292 或更新版本,`rewritten` 需要 v2.1.300 或更新版本。 |

47| `next.called` | 僅限 `.catch` 處理常式中。當 hook 曾呼叫 `next` 時為 `true`。 |48| `next.called` | 僅限 `.catch` 處理常式中。當 hook 曾呼叫 `next` 時為 `true`。 |

48 49 

49<h2 id="events">50<h2 id="events">


97| [`skill.prompt`](/docs/zh-TW/plugins/mods/events#rewrite-or-add-to-a-prompt) | skill 的文字為 Claude 展開時 | `{ text }` |98| [`skill.prompt`](/docs/zh-TW/plugins/mods/events#rewrite-or-add-to-a-prompt) | skill 的文字為 Claude 展開時 | `{ text }` |

98| `attribution.text` | Claude Code 撰寫提交或 pull request 的歸屬文字時 | `{ text }` |99| `attribution.text` | Claude Code 撰寫提交或 pull request 的歸屬文字時 | `{ text }` |

99 100 

101<h4 id="skill-prompt-fields">

102 `skill.prompt` 上的來源與 frontmatter 欄位

103</h4>

104 

105在 `skill.prompt` hook 中,除了 `e.skill` 中的 skill 名稱與 `e.text` 中 Claude 讀取的文字之外,您還可以讀取這些欄位:

106 

107| 欄位 | 型別 | 內容 |

108| :- | :- | :- |

109| `e.source` | string | 提供該 skill 的來源:對於位於企業、個人或專案[位置](/docs/zh-TW/skills#where-skills-live)的 skill,分別為 `policySettings`、`userSettings` 或 `projectSettings`。其他來源則提供 `plugin`、`mcp`、`syncedSkills` 或 `built-in` 之類的詞。 |

110| `e.pluginName` | string | 對於 `e.source` 為 `plugin` 的 skill,為外掛的名稱 |

111| `e.path` | string | skill 的 `SKILL.md` 檔案的絕對路徑;若 skill 是以[命令檔案](/docs/zh-TW/skills#where-skills-live)撰寫,則為其 `.md` 檔案的絕對路徑。當 skill 在此機器上沒有檔案時(例如內建 skill)則不存在。 |

112| `e.frontmatter` | object | skill 檔案的 frontmatter,以純資料形式呈現 |

113| `e.frontmatterProblem` | string | `e.frontmatter` 缺少檔案的 frontmatter 或其中某個鍵的原因,例如 `is a list or a single value, not a table`。當 `e.frontmatter` 包含完整的 frontmatter,或 skill 沒有 frontmatter 時則不存在。 |

114 

115hook 可以將變更後的 `text` 或 `frontmatter` 傳遞給 `next`:其後的 hook 會讀取兩者,而 Claude 會讀取最終的 `text`。變更任何其他欄位的 hook 會[失敗](/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails)。

116 

117在 `skill.prompt` 上,`e.source`、`e.pluginName`、`e.path`、`e.frontmatter` 與 `e.frontmatterProblem` 需要 Claude Code v2.1.299 或更新版本。

118 

100<h3 id="commands-and-configuration">119<h3 id="commands-and-configuration">

101 命令與設定120 命令與設定

102</h3>121</h3>

Details

31* [**Skills**](/docs/zh-TW/plugins/components#skills):`SKILL.md` 指令,Claude 在相關時載入,您也可以作為命令執行31* [**Skills**](/docs/zh-TW/plugins/components#skills):`SKILL.md` 指令,Claude 在相關時載入,您也可以作為命令執行

32* [**Agents**](/docs/zh-TW/plugins/components#agents):Claude 可以委派給的子代理定義32* [**Agents**](/docs/zh-TW/plugins/components#agents):Claude 可以委派給的子代理定義

33* [**Hooks**](/docs/zh-TW/plugins/components#hooks):Claude Code 在其生命週期中的特定點執行的命令,例如每次編輯後33* [**Hooks**](/docs/zh-TW/plugins/components#hooks):Claude Code 在其生命週期中的特定點執行的命令,例如每次編輯後

34* [**A hooks module**](/docs/zh-TW/plugins/mods/overview):以 JavaScript 函式撰寫的 hooks,也可以繪製窗格並新增命令。具有此功能的 plugin 稱為 mod34* [**hook 模組**](/docs/zh-TW/plugins/mods/overview):以 JavaScript 函式撰寫的 hook,也可以繪製窗格並新增命令。具有 hook 模組的外掛稱為 mod。有些 mod [內建於 Claude Code](/docs/zh-TW/plugins/mods/overview#mods-built-into-claude-code)。

35* [**MCP servers**](/docs/zh-TW/plugins/components#mcp-servers):工具伺服器,Claude Code 在啟用 plugin 時連接到35* [**MCP servers**](/docs/zh-TW/plugins/components#mcp-servers):工具伺服器,Claude Code 在啟用 plugin 時連接到

36 36 

37此圖表顯示一個名為 `my-plugin` 的 plugin,其中包含 skill、agent、hooks 和 MCP 伺服器,以及 plugin 載入後您從每個檔案獲得的內容。37此圖表顯示一個名為 `my-plugin` 的 plugin,其中包含 skill、agent、hooks 和 MCP 伺服器,以及 plugin 載入後您從每個檔案獲得的內容。

Details

693| 訊息 | 含義 | 如何解決 |693| 訊息 | 含義 | 如何解決 |

694| :- | :- | :- |694| :- | :- | :- |

695| `Dependency "<dep>" is not installed` | 宣告的相依套件未安裝。 | 使用 `claude plugin install <dep>@<marketplace>` 在您的 shell 中安裝它,或卸載外掛程式。如果相依套件的市集尚未註冊,請新增它並在您的工作階段中執行 `/reload-plugins`,這會安裝它可以解決的遺失相依套件。 |695| `Dependency "<dep>" is not installed` | 宣告的相依套件未安裝。 | 使用 `claude plugin install <dep>@<marketplace>` 在您的 shell 中安裝它,或卸載外掛程式。如果相依套件的市集尚未註冊,請新增它並在您的工作階段中執行 `/reload-plugins`,這會安裝它可以解決的遺失相依套件。 |

696| `"<name>@synced" is loaded from your claude.ai account but meets a marketplace dependency only for other claude.ai plugins`,出現在 `is not installed` 訊息中 | 相依套件指定了市集,而同名的外掛程式是從您的 claude.ai 帳戶載入的。宣告該相依套件的外掛程式並非從 claude.ai 載入,因此 claude.ai 外掛程式無法滿足它。 | 在您的 shell 中執行 `claude plugin install <dep>@<marketplace>`,從其市集安裝相依套件。之後會改為載入市集副本,而非 claude.ai 的副本。 |

696| `Dependency "<dep>" is disabled` | 相依套件已安裝但已關閉。 | 啟用相依套件,或卸載需要它的外掛程式。 |697| `Dependency "<dep>" is disabled` | 相依套件已安裝但已關閉。 | 啟用相依套件,或卸載需要它的外掛程式。 |

697| `Requires "<dep>" <range>, installed <version>` | 已安裝的相依套件版本超出外掛程式的宣告範圍。 | 將相依套件更新到範圍內的版本,或卸載外掛程式。 |698| `Requires "<dep>" <range>, installed <version>` | 已安裝的相依套件版本超出外掛程式的宣告範圍。 | 將相依套件更新到範圍內的版本,或卸載外掛程式。 |

698| `<Plugin or Dependency> "<name>" has conflicting version requirements` | 沒有版本滿足每個釘選它的範圍。訊息列出範圍。 | 卸載或更新其中一個衝突的外掛程式,或要求上游作者擴大其約束。 |699| `<Plugin or Dependency> "<name>" has conflicting version requirements` | 沒有版本滿足每個釘選它的範圍。訊息列出範圍。 | 卸載或更新其中一個衝突的外掛程式,或要求上游作者擴大其約束。 |


700| `... has no git tag satisfying <range>` | 相依套件的儲存庫在範圍內沒有 `<name>--v*` 標籤。 | 檢查上游是否使用該約定標記版本,或放寬範圍。 |701| `... has no git tag satisfying <range>` | 相依套件的儲存庫在範圍內沒有 `<name>--v*` 標籤。 | 檢查上游是否使用該約定標記版本,或放寬範圍。 |

701| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | 相依套件在不同的市集中,預設情況下跨市集解析已關閉。 | 在相同範圍自行安裝相依套件,在您的 shell 中使用 `claude plugin install <dep>@<marketplace>` 加上您安裝外掛程式的 `--scope`,然後重試。 |702| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | 相依套件在不同的市集中,預設情況下跨市集解析已關閉。 | 在相同範圍自行安裝相依套件,在您的 shell 中使用 `claude plugin install <dep>@<marketplace>` 加上您安裝外掛程式的 `--scope`,然後重試。 |

702 703 

703若要以程式設計方式查看這些,請在您的 shell 中執行 `claude plugin list --json`。有問題的外掛程式帶有 `errors` 欄位及其訊息和 `errorDetails` 欄位,每個都有 `type`:前兩行是 `dependency-unsatisfied`,第三行是 `dependency-version-unsatisfied`。704若要以程式設計方式查看這些,請在您的 shell 中執行 `claude plugin list --json`。有問題的外掛程式帶有 `errors` 欄位及其訊息和 `errorDetails` 欄位,每個都有 `type`:前三列是 `dependency-unsatisfied`,第四列是 `dependency-version-unsatisfied`。

704 705 

705<h2 id="plugin-installed-but-not-working">706<h2 id="plugin-installed-but-not-working">

706 外掛程式已安裝但無法運作707 外掛程式已安裝但無法運作

Details

211 當您捨棄的上下文是您不再需要的內容時,壓縮對您有利。為了選擇其開銷何時發生,請在工作的自然中斷處(例如任務之間)執行 `/compact`,而不是等待自動壓縮在任務中途觸發。如果您走上了想要完全放棄的路徑,請改為使用 [`/rewind`](#rewinding-the-conversation) 回到較早的回合。倒轉會截斷回到已快取的前綴,而不是像壓縮那樣建立新的前綴。211 當您捨棄的上下文是您不再需要的內容時,壓縮對您有利。為了選擇其開銷何時發生,請在工作的自然中斷處(例如任務之間)執行 `/compact`,而不是等待自動壓縮在任務中途觸發。如果您走上了想要完全放棄的路徑,請改為使用 [`/rewind`](#rewinding-the-conversation) 回到較早的回合。倒轉會截斷回到已快取的前綴,而不是像壓縮那樣建立新的前綴。

212</Tip>212</Tip>

213 213 

214如果您在終端機工作階段中讓長對話閒置,且該對話處於[一小時 TTL](#which-ttl-each-request-gets),Claude Code 可能會在快取過期前不久將其壓縮。若要關閉閒置壓縮,請將 [`idleCompaction`](/docs/zh-TW/settings-reference#idlecompaction) 設定為 `false`,這需要 Claude Code v2.1.290 或更新版本。

215 

214<h3 id="accumulating-many-images">216<h3 id="accumulating-many-images">

215 累積許多影像217 累積許多影像

216</h3>218</h3>

Details

261 261 

262生物識別檢查透過作業系統或瀏覽器在裝置上執行,與通行金鑰登入相同的機制。Anthropic 永遠不會接收或儲存指紋、臉部資料或任何其他生物識別資訊。只有裝置的公鑰和基本中繼資料(例如顯示名稱、平台和註冊時間)會被儲存。262生物識別檢查透過作業系統或瀏覽器在裝置上執行,與通行金鑰登入相同的機制。Anthropic 永遠不會接收或儲存指紋、臉部資料或任何其他生物識別資訊。只有裝置的公鑰和基本中繼資料(例如顯示名稱、平台和註冊時間)會被儲存。

263 263 

264該設定同時適用於 Claude Code 和 [Cowork](https://claude.com/docs/cowork/overview) 中的 Remote Control。本頁面說明 Claude Code 的部分。一般 Claude 聊天、終端機中的 Claude Code 和 API 使用不受影響。264該設定適用於 Claude Code 中的 Remote Control,以及 [Cowork](https://claude.com/docs/cowork/overview) 中的 Computer access。本頁面說明 Claude Code 的部分。一般 Claude 聊天、終端機中的 Claude Code 和 API 使用不受影響。

265 265 

266<h3 id="enable-trusted-devices-for-your-organization">266<h3 id="enable-trusted-devices-for-your-organization">

267 為 Team 或 Enterprise 組織啟用受信任的裝置267 為 Team 或 Enterprise 組織啟用受信任的裝置

routines.md +28 −15

Details

52 52 

53建立表單會設定例行工作的提示詞、儲存庫、環境、連接器和觸發器。53建立表單會設定例行工作的提示詞、儲存庫、環境、連接器和觸發器。

54 54 

55例行工作以完整的 Claude Code 雲端工作階段自主執行:沒有權限模式選擇器,工作階段執行 shell 命令、使用 [skills](/docs/zh-TW/skills) 提交到複製的儲存庫,並呼叫您包含的任何連接器,所有這些都無需停止以尋求批准,除了某些 [artifact](/docs/zh-TW/artifacts) 動作。55Routine 以完整的 Claude Code 雲端工作階段自主執行:沒有權限模式選擇器,工作階段會執行 shell 命令、使用已提交到所複製儲存庫中的 [skills](/docs/zh-TW/skills),並呼叫您包含的任何連接器,除了某些 [artifact 動作](#when-a-run-publishes-an-artifact-without-asking)之外,所有這些都無需停下來等待核准。

56 56 

57例行工作可以存取的內容由您選擇的儲存庫、[環境](/docs/zh-TW/cloud-environments)的網路存取和變數,以及您包含的連接器決定。將這些範圍限制在例行工作實際需要的內容。57例行工作可以存取的內容由您選擇的儲存庫、[環境](/docs/zh-TW/cloud-environments)的網路存取和變數,以及您包含的連接器決定。將這些範圍限制在例行工作實際需要的內容。

58 58 

59當例行工作的排程或 **Run now** 啟動執行時,Claude 只有在以下所有條件都成立時,才會重新發佈現有的 artifact 而不詢問:

60 

61* 您可以編輯該 artifact,且它屬於您自己的組織

62* 該 artifact 未公開共享

63* 如果該 artifact 與特定人員或您的組織共享,其檢視者不會自動看到每個新版本

64* 發佈只包含頁面,沒有支援檔案或任何其他新增內容,且不會強制覆蓋較新的版本

65* 該頁面不包含超出頁面範圍的授權,例如 [connector calls](/docs/zh-TW/artifacts#pull-live-data-with-mcp-connectors)

66 

67在所有其他情況下,包括發佈新的 artifact,Claude 會先詢問。當例行工作的工作是保持頁面最新時,請給它一個您已經發佈的 artifact。

68 

69例行工作屬於您的個人 claude.ai 帳戶。它們不與隊友共享,並且計入您帳戶的 [usage and limits](#usage-and-limits)。例行工作透過您連接的 GitHub 身分或連接器執行的任何操作都會顯示為您:提交和拉取請求會帶有您的 GitHub 使用者,Slack 訊息、Linear 票證或其他連接器動作會使用您為這些服務連接的帳戶。59例行工作屬於您的個人 claude.ai 帳戶。它們不與隊友共享,並且計入您帳戶的 [usage and limits](#usage-and-limits)。例行工作透過您連接的 GitHub 身分或連接器執行的任何操作都會顯示為您:提交和拉取請求會帶有您的 GitHub 使用者,Slack 訊息、Linear 票證或其他連接器動作會使用您為這些服務連接的帳戶。

70 60 

71<h3 id="create-from-the-web">61<h3 id="create-from-the-web">


93 為例行工作選擇 [cloud environment](/docs/zh-TW/cloud-environments)。環境控制雲端工作階段可以存取的內容:83 為例行工作選擇 [cloud environment](/docs/zh-TW/cloud-environments)。環境控制雲端工作階段可以存取的內容:

94 84 

95 * **Network access**:設定每次執行期間可用的網際網路存取級別85 * **Network access**:設定每次執行期間可用的網際網路存取級別

96 * **Environment variables**:提供 Claude 在每次執行期間可以使用的值。這些值[對使用該環境的任何人都可見](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup),因此在 Pro 和 Max 方案上,請改將 Claude 在執行期間呼叫的 API 金鑰儲存為 [網路機密](/docs/zh-TW/cloud-environments#add-network-secrets)。該章節也列出了永遠不會取得機密的請求86 * **Environment variables**:提供 Claude 在每次執行期間可以使用的值。這些值[對使用該環境的任何人都可見](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup),因此在 Anthropic 託管的環境中,請改將 Claude 在執行期間呼叫的 API 金鑰儲存為 [網路機密](/docs/zh-TW/cloud-environments#add-network-secrets)。該章節也列出了永遠不會取得機密的請求

97 * **Setup script**:安裝例行工作需要的相依性和工具。結果是 [cached](/docs/zh-TW/cloud-environments#environment-caching),因此指令碼不會在每個工作階段上重新執行87 * **Setup script**:安裝例行工作需要的相依性和工具。結果是 [cached](/docs/zh-TW/cloud-environments#environment-caching),因此指令碼不會在每個工作階段上重新執行

98 88 

99 提供了 **Default** 環境,具有 **Trusted** 網路存取,它只允許 [default allowlist](/docs/zh-TW/cloud-environments#default-allowed-domains) 的套件登錄、雲端提供者 API、容器登錄和常見開發網域透過工作階段的網路。您新增到例行工作的連接器透過 Anthropic 的伺服器存取其服務,因此不需要更改允許清單。如果您的例行工作需要直接存取您自己的服務或該清單外的網域,請在執行前編輯環境的 [network access](/docs/zh-TW/cloud-environments#network-access)。若要使用單獨的環境,請先 [create one](/docs/zh-TW/cloud-environments#configure-your-environment)。89 提供了 **Default** 環境,具有 **Trusted** 網路存取,它只允許 [default allowlist](/docs/zh-TW/cloud-environments#default-allowed-domains) 的套件登錄、雲端提供者 API、容器登錄和常見開發網域透過工作階段的網路。您新增到例行工作的連接器透過 Anthropic 的伺服器存取其服務,因此不需要更改允許清單。如果您的例行工作需要直接存取您自己的服務或該清單外的網域,請在執行前編輯環境的 [network access](/docs/zh-TW/cloud-environments#network-access)。若要使用單獨的環境,請先 [create one](/docs/zh-TW/cloud-environments#configure-your-environment)。


182 172 

183API 觸發條件為例行工作提供專用的 HTTP 端點。使用例行工作的持有人令牌 POST 到端點會啟動新的工作階段並傳回工作階段 URL。使用此功能將 Claude Code 整合到警報系統、部署管道、內部工具或任何可以進行已驗證 HTTP 請求的地方。173API 觸發條件為例行工作提供專用的 HTTP 端點。使用例行工作的持有人令牌 POST 到端點會啟動新的工作階段並傳回工作階段 URL。使用此功能將 Claude Code 整合到警報系統、部署管道、內部工具或任何可以進行已驗證 HTTP 請求的地方。

184 174 

185API 觸發條件從網頁新增到現有例行工作。CLI 目前無法建立或撤銷令牌。175API 觸發條件從網頁新增到現有 routine。CLI 目前無法建立、重新產生或刪除 token。

186 176 

187<Steps>177<Steps>

188 <Step title="Open the routine for editing">178 <Step title="Open the routine for editing">


202 </Step>192 </Step>

203</Steps>193</Steps>

204 194 

205每個例行工作都有自己的令牌,範圍限制為僅觸發該例行工作。若要輪換或撤銷它,請返回相同的模式視窗並點擊 **Regenerate** 或 **Revoke**。195每個 routine 都有自己的 token,範圍限制為僅觸發該 routine。若要關閉 API 存取或輪換 token,請返回相同的模式視窗:

196 

197* **關閉 API 存取**:點擊 **Delete token**,即 **Regenerate** 旁邊的垃圾桶圖示

198* **輪換 token**:點擊 **Regenerate**

206 199 

207<h4 id="trigger-a-routine">200<h4 id="trigger-a-routine">

208 觸發例行工作201 觸發例行工作


379 372 

380要在例行程序表單外管理或新增 connectors,請造訪 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 或在 CLI 中使用 `/schedule update`。373要在例行程序表單外管理或新增 connectors,請造訪 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 或在 CLI 中使用 `/schedule update`。

381 374 

375<h3 id="when-a-run-publishes-an-artifact-without-asking">

376 執行在未詢問的情況下發布 artifact 時

377</h3>

378 

379當 routine 的排程或 **Run now** 啟動一次執行時,Claude 可以在未詢問的情況下發布新的 [artifact](/docs/zh-TW/artifacts)。在您[分享它](/docs/zh-TW/artifacts#share-an-artifact)之前,新的 artifact 僅對您可見。如果發布內容為頁面宣告了執行階段功能,例如[連接器呼叫](/docs/zh-TW/artifacts#pull-live-data-with-mcp-connectors)或[檔案下載](/docs/zh-TW/artifacts#offer-a-file-download),Claude 會先詢問。

380 

381在這類執行中,只有在以下所有條件皆成立時,Claude 才會在未詢問的情況下重新發布現有的 artifact:

382 

383* 您可以編輯該 artifact,且它屬於您自己的組織

384* 如果發布內容不只包含頁面(例如輔助檔案),則您是該 artifact 的擁有者

385* 該 artifact 未公開分享

386* 如果該 artifact 已與特定人員或您的組織分享,其檢視者不會自動看到每個新版本

387* 發布不會強制覆蓋較新的版本

388* 發布未為頁面宣告執行階段功能

389* 現有頁面未持有超出該頁面範圍的授權,例如[連接器呼叫](/docs/zh-TW/artifacts#pull-live-data-with-mcp-connectors)

390 

391在所有其他情況下,包括由 API 或 GitHub 觸發器啟動的執行,Claude 都會先詢問。

392 

393當 routine 的工作是讓某個頁面保持最新時,請提供一個您已發布的 artifact 給它。

394 

382<h3 id="environments-and-network-access">395<h3 id="environments-and-network-access">

383 環境和網路存取396 環境和網路存取

384</h3>397</h3>


403 </Step>416 </Step>

404 417 

405 <Step title="變更網路存取層級">418 <Step title="變更網路存取層級">

406 在 **Edit environment** 對話方塊中,將 **Network access** 變更為 **Custom**,並在 **Allowed domains** 中輸入您的網域。勾選 **Also include default list of common package managers**,即可在自訂網域之外保留[預設允許清單](/docs/zh-TW/cloud-environments#default-allowed-domains)。若需要不受限制的存取,請改為選擇 **Full**。419 在 **Edit cloud environment** 對話方塊中,將 **Network access** 變更為 **Custom**,並在 **Allowed domains** 中輸入您的網域。勾選 **Also include default list of common package managers**,即可在自訂網域之外保留[預設允許清單](/docs/zh-TW/cloud-environments#default-allowed-domains)。若需要不受限制的存取,請改為選擇 **Full**。

407 </Step>420 </Step>

408 421 

409 <Step title="儲存">422 <Step title="儲存">

Details

79 79 

80在[提供 Monitor 工具](/docs/zh-TW/tools-reference#monitor-tool)的工作階段中,當您要求動態 `/loop` 排程時,Claude 可能會直接使用它。Monitor 執行背景指令碼並串流回每個輸出行,這完全避免了輪詢,通常比在間隔上重新執行提示更具令牌效率和回應性。80在[提供 Monitor 工具](/docs/zh-TW/tools-reference#monitor-tool)的工作階段中,當您要求動態 `/loop` 排程時,Claude 可能會直接使用它。Monitor 執行背景指令碼並串流回每個輸出行,這完全避免了輪詢,通常比在間隔上重新執行提示更具令牌效率和回應性。

81 81 

82動態排程的迴圈會像任何其他任務一樣出現在您的[排程任務清單](#manage-scheduled-tasks)中,因此您可以以相同的方式列出或取消它。[抖動規則](#jitter)不適用於它,但[七天過期](#seven-day-expiry)適用。82動態排程的迴圈會像任何其他任務一樣出現在您的[排程任務清單](#manage-scheduled-tasks)中,因此您可以以相同的方式列出或取消它。清單會將其待處理的喚醒顯示為一次性任務,因此排程在 `:00` 或 `:30` 的喚醒可能會[稍微提早執行](#when-a-one-shot-task-runs-early)。[七天過期](#seven-day-expiry)同樣適用於此迴圈。

83 83 

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 


174| 工具 | 用途 |174| 工具 | 用途 |

175| :- | :- |175| :- | :- |

176| `CronCreate` | 排程新任務。接受 5 欄位 cron 表達式、要執行的提示,以及是否重複或執行一次。 |176| `CronCreate` | 排程新任務。接受 5 欄位 cron 表達式、要執行的提示,以及是否重複或執行一次。 |

177| `CronList` | 列出所有排程任務及其 ID、排程和提示。 |177| `CronList` | 列出排程任務及其 ID、排程、[下次執行時間](#jitter)和提示詞。 |

178| `CronDelete` | 按 ID 取消任務。 |178| `CronDelete` | 按 ID 取消任務。 |

179 179 

180每個排程任務都有一個 8 字元的 ID,您可以傳遞給 `CronDelete`。一個工作階段最多可以同時保存 50 個排程任務。180每個排程任務都有一個 8 字元的 ID,您可以傳遞給 `CronDelete`。一個工作階段最多可以同時保存 50 個排程任務。


193 193 

194排程任務的實際執行時間可能與其排程所指定的時間不同。如果每個工作階段的任務都完全按照排程執行,許多任務就會在同一時刻呼叫 API,因此 Claude Code 會偏移每個任務的執行時間。重複執行的任務會延後執行,但每五分鐘執行一次(寫成 `*/5 * * * *`)的任務除外。排程在整點或半點的一次性任務則會稍微提前執行。194排程任務的實際執行時間可能與其排程所指定的時間不同。如果每個工作階段的任務都完全按照排程執行,許多任務就會在同一時刻呼叫 API,因此 Claude Code 會偏移每個任務的執行時間。重複執行的任務會延後執行,但每五分鐘執行一次(寫成 `*/5 * * * *`)的任務除外。排程在整點或半點的一次性任務則會稍微提前執行。

195 195 

196若要查看任務下一次的到期時間,請閱讀終端機中 Claude 的 `CronCreate` 呼叫下方的那一列。該列會在排程之後顯示該時間,例如 `next run 10:21 AM`。若要稍後再次查看,請[要求 Claude 列出您的任務](#manage-scheduled-tasks),並在 `CronList` 呼叫下方的各列中尋找 `next run`。這些列中的下次執行時間需要 Claude Code v2.1.299 或更新版本。

197 

196<h4 id="how-late-a-recurring-task-runs">198<h4 id="how-late-a-recurring-task-runs">

197 重複執行的任務會延後多久199 重複執行的任務會延後多久

198</h4>200</h4>

Details

1001. 具有可用容量的執行器認領工作階段並持有其租約。1001. 具有可用容量的執行器認領工作階段並持有其租約。

1012. 執行器將儲存庫複製到其工作目錄並生成子 Claude Code 程序。1012. 執行器將儲存庫複製到其工作目錄並生成子 Claude Code 程序。

1023. 子程序在執行器保持輪詢時透過 HTTPS 流回事件;每次輪詢都會刷新租約並充當心跳。1023. 子程序在執行器保持輪詢時透過 HTTPS 流回事件;每次輪詢都會刷新租約並充當心跳。

1034. 如果執行器停止輪詢,其租約會在約 60 秒後失效,伺服器會在幾分鐘內將工作階段重新佇列到另一個執行器。1034. 如果執行器停止輪詢,其租約會在約 60 秒後失效。之後伺服器可能需要幾分鐘,有時甚至更久,才會將工作階段重新佇列給另一個執行器。

104 104 

105執行器為每個輪詢請求提供 10 秒。當請求超時、丟失或執行器無法解析的回應時,執行器會繼續為其活躍工作階段服務,並在一兩秒後重試,而不是等待下一個排程的輪詢。例如,用自己的頁面回答輪詢的攔截代理會產生執行器無法解析的回應。每次另一個請求以其中一種方式失敗時,執行器會將下一次重試前的間隔加倍,最多 20 秒,並在租約即將過期時縮短間隔。105執行器為每個輪詢請求提供 10 秒。當請求超時、丟失或執行器無法解析的回應時,執行器會繼續為其活躍工作階段服務,並在一兩秒後重試,而不是等待下一個排程的輪詢。例如,用自己的頁面回答輪詢的攔截代理會產生執行器無法解析的回應。每次另一個請求以其中一種方式失敗時,執行器會將下一次重試前的間隔加倍,最多 20 秒,並在租約即將過期時縮短間隔。

106 106 

Details

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | 對於屬於某個 Slack 討論串的 Claude Tag 工作階段,為該討論串的 Slack 時間戳記,例如 `1700000000.000100`。可能未設定,且可能在 `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 未設定時已設定,因此請分別檢查每個變數。 |40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | 對於屬於某個 Slack 討論串的 Claude Tag 工作階段,為該討論串的 Slack 時間戳記,例如 `1700000000.000100`。可能未設定,且可能在 `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 未設定時已設定,因此請分別檢查每個變數。 |

41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 保存目前工作階段 JWT 的每個工作階段檔案的絕對路徑,在 token 重新整理時保持最新。Shell 子程序在下載使用者新增到工作階段的附件時從中讀取其 `Authorization` 標頭。`exec` 會自動保留該變數;重建子程序環境的包裝指令碼必須帶上該變數,否則附件下載會無聲地停止運作。 |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 保存目前工作階段 JWT 的每個工作階段檔案的絕對路徑,在 token 重新整理時保持最新。Shell 子程序在下載使用者新增到工作階段的附件時從中讀取其 `Authorization` 標頭。`exec` 會自動保留該變數;重建子程序環境的包裝指令碼必須帶上該變數,否則附件下載會無聲地停止運作。 |

42| `CLAUDE_CONFIG_DIR` | 每個工作階段的 Claude 設定目錄,在工作階段開始時從執行器在啟動時擷取的執行器主機設定快照中寫入;請參閱[權限和工具核准](#permissions-and-tool-approval)。此處的寫入隔離於此工作階段。工作階段結束後,該目錄會保留在 `<base-dir>/_sessions/` 下,除非您使用 [`--remove-session-state`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器;請參閱[重複使用預先準備的簽出](/docs/zh-TW/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout)。 |42| `CLAUDE_CONFIG_DIR` | 每個工作階段的 Claude 設定目錄,在工作階段開始時從執行器在啟動時擷取的執行器主機設定快照中寫入;請參閱[權限和工具核准](#permissions-and-tool-approval)。此處的寫入隔離於此工作階段。工作階段結束後,該目錄會保留在 `<base-dir>/_sessions/` 下,除非您使用 [`--remove-session-state`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器;請參閱[重複使用預先準備的簽出](/docs/zh-TW/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout)。 |

43| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | `CLAUDE_CONFIG_DIR` 中某個檔案的路徑,該檔案保存 Anthropic 控制平面為此工作階段傳遞的 MCP 伺服器定義。如果您的包裝指令碼會重建子程序的環境,請帶上此變數。若缺少此變數,當控制平面更新所傳遞的伺服器時,子程序會關閉您的包裝指令碼以 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 新增、但不在該更新中的任何 stdio、HTTP 或 SSE 伺服器。需要 Claude Code v2.1.299 或更新版本。 |

43| `ANTHROPIC_BASE_URL` | 子程序將使用的 API 基礎 URL,由控制平面按工作階段傳遞,通常為 `https://api.anthropic.com`。不要覆寫它:工作階段的推理憑證是 Anthropic 發行的 OAuth token,其他提供者不接受。 |44| `ANTHROPIC_BASE_URL` | 子程序將使用的 API 基礎 URL,由控制平面按工作階段傳遞,通常為 `https://api.anthropic.com`。不要覆寫它:工作階段的推理憑證是 Anthropic 發行的 OAuth token,其他提供者不接受。 |

44| `CLAUDE_CODE_OAUTH_TOKEN` | 子程序用於模型推理的短期 OAuth 存取 token,限定於模型推理和檔案上傳,生命週期約為 30 分鐘。執行器在過期前重新鑄造它,並透過子程序的 stdin 傳遞輪換,因此未[保持 stdin 連接](#keep-stdin-and-file-descriptor-3-attached)的包裝指令碼只會看到初始值。不要依賴您組織的 IP 允許清單來限制此 token 的使用:請將其視為持有人憑證,如果洩露,大約 30 分鐘內仍可使用,不要將其寫入日誌、寫入磁碟或在工作階段容器外轉發它。 |45| `CLAUDE_CODE_OAUTH_TOKEN` | 子程序用於模型推理的短期 OAuth 存取 token,限定於模型推理和檔案上傳,生命週期約為 30 分鐘。執行器在過期前重新鑄造它,並透過子程序的 stdin 傳遞輪換,因此未[保持 stdin 連接](#keep-stdin-and-file-descriptor-3-attached)的包裝指令碼只會看到初始值。不要依賴您組織的 IP 允許清單來限制此 token 的使用:請將其視為持有人憑證,如果洩露,大約 30 分鐘內仍可使用,不要將其寫入日誌、寫入磁碟或在工作階段容器外轉發它。 |

45 46 


51 為可能未設定的變數提供預設值52 為可能未設定的變數提供預設值

52</h3>53</h3>

53 54 

54`CCR_SESSION_ACCOUNT_EMAIL`、`CLAUDE_RUNNER_CLIENT_PLATFORM`、`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 和 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` 都可能未設定。如果您的指令碼使用 `set -u`,Bash 在展開未設定的變數時會以 `unbound variable` 停止,因此請以預設值展開它們,例如 `${CCR_SESSION_ACCOUNT_EMAIL:-}`。55`CCR_SESSION_ACCOUNT_EMAIL`、`CLAUDE_RUNNER_CLIENT_PLATFORM`、`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 和 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` 都可能未設定。如果您的指令碼使用 `set -u`,Bash 在展開未設定的變數時會以 `unbound variable` 停止,因此請以預設值展開它們,例如 `"${CCR_SESSION_ACCOUNT_EMAIL:-}"`。

55 56 

56在 shell 展開 Slack 討論串連結的任何地方,請採取以下預防措施:57<h3 id="quote-the-arguments-and-variables-your-script-expands">

58 為指令碼展開的引數和變數加上引號

59</h3>

60 

61請為執行器傳遞給您的包裝指令碼或 [`command` hook](#command) 的每個引數和變數加上引號。有些值包含 shell 會處理的字元,因為它們保存的是 JSON、完整的句子,或是[權限規則](/docs/zh-TW/permissions#permission-rule-syntax),例如 `Bash(npm run test *)`。

57 62 

58* **為其加上引號**:連結可能包含 shell 會處理的字元,例如 `?` 和 `&`,因此請為變數加上引號,如 `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`。63* **引數**:以 `"$@"` 將它們傳遞下去

59* **不要將其值放入 `eval` 和 `sh -c` 字串中**:不要將其值代入 `eval` 或 `sh -c` 執行的字串,即使在引號內也不行。請改為讓該字串參照變數。64* **變數**:為每個變數加上引號,如 `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`。例如,Slack 討論串連結可能包含 `?` 和 `&`。

65* **`eval` 和 `sh -c` 字串**:不要將值代入 `eval` 或 `sh -c` 執行的字串,即使在引號內也不行。請改為讓該字串參照變數。

60 66 

61<h3 id="keep-stdin-and-file-descriptor-3-attached">67<h3 id="keep-stdin-and-file-descriptor-3-attached">

62 保持 stdin 和檔案描述符 3 連接68 保持 stdin 和檔案描述符 3 連接


136| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |142| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |

137| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |143| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |

138| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |144| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |

139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` 參照它。需要 Claude Code v2.1.229 或更新版本。 |145| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` 參照它。需要 Claude Code v2.1.229 或更新版本。 |

140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |146| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |

141| `GIT_CONFIG_COUNT`、`GIT_CONFIG_KEY_n`、`GIT_CONFIG_VALUE_n` | 執行器為您的 hook 所執行之 git 固定的 Git 設定。[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)說明了這些設定。需要 Claude Code v2.1.280 或更新版本。 |147| `GIT_CONFIG_COUNT`、`GIT_CONFIG_KEY_n`、`GIT_CONFIG_VALUE_n` | 執行器為您的 hook 所執行之 git 固定的 Git 設定。[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)說明了這些設定。需要 Claude Code v2.1.280 或更新版本。 |

142 148 


159 165 

160當 hook 以非零狀態結束,或以 0 結束卻未留下可用的簽出時,即視為 hook 失敗:166當 hook 以非零狀態結束,或以 0 結束卻未留下可用的簽出時,即視為 hook 失敗:

161 167 

162* **會話推送結果的儲存庫**:執行器失敗會話,在非零退出時將指令碼的 stderr 尾部呈現給使用者。168* **工作階段會推送結果的儲存庫**:執行器會使工作階段失敗,並在非零結束時將指令碼 stderr 的結尾部分呈現給使用者。請將原因以簡短的一行寫入 stderr,並放在最後輸出,然後以非零狀態結束。請勿將機密資訊輸出到 stderr,並在部署 hook 之前移除 `set -x`。

163* **工作階段只會讀取的儲存庫**,例如新增到執行中工作階段的儲存庫:執行器會記錄一行帶有失敗詳細資訊的 `[runner:warn]`,向工作階段發佈 `Skipped` 步驟,移除 hook 在簽出路徑留下的任何內容,並繼續處理其餘儲存庫。如果略過後工作階段完全沒有任何儲存庫,執行器仍會使工作階段失敗。169* **工作階段只會讀取的儲存庫**,例如新增到執行中工作階段的儲存庫:執行器會記錄一行帶有失敗詳細資訊的 `[runner:warn]`,向工作階段發佈 `Skipped` 步驟,移除 hook 在簽出路徑留下的任何內容,並繼續處理其餘儲存庫。如果略過後工作階段完全沒有任何儲存庫,執行器仍會使工作階段失敗。

164 170 

165當 hook 成功時,執行器會在工作階段結束後移除簽出路徑。171當 hook 成功時,執行器會在工作階段結束後移除簽出路徑。


180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | 會話工作樹的冒號分隔絕對路徑。零儲存庫會話為空。 |186| `CLAUDE_RUNNER_WORKSPACE_PATHS` | 會話工作樹的冒號分隔絕對路徑。零儲存庫會話為空。 |

181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | 會話的偵錯日誌的路徑,在掛鉤執行時仍在磁碟上 |187| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | 會話的偵錯日誌的路徑,在掛鉤執行時仍在磁碟上 |

182| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |188| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |

183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` 參照它。需要 Claude Code v2.1.229 或更新版本。 |189| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` 參照它。需要 Claude Code v2.1.229 或更新版本。 |

184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |190| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |

185| `GIT_CONFIG_COUNT`、`GIT_CONFIG_KEY_n`、`GIT_CONFIG_VALUE_n` | 執行器為您的 hook 所執行之 git 固定的 Git 設定。[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)說明了這些設定。需要 Claude Code v2.1.280 或更新版本。 |191| `GIT_CONFIG_COUNT`、`GIT_CONFIG_KEY_n`、`GIT_CONFIG_VALUE_n` | 執行器為您的 hook 所執行之 git 固定的 Git 設定。[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)說明了這些設定。需要 Claude Code v2.1.280 或更新版本。 |

186 192 


3293. **使用退出碼合約。** 以符合結果的狀態退出:3353. **使用退出碼合約。** 以符合結果的狀態退出:

330 336 

331 * **退出 0**:已提交。337 * **退出 0**:已提交。

332 * **退出 1**:可重試的失敗。工作階段會退避並被重新提供。338 * **退出 1,或在 `--hook-timeout` 結束時仍在執行**:可重試的失敗。工作階段會退避並被重新提供。

333 * **退出 2 或更高**:不可重試的失敗。工作階段會被阻止再次啟動,直到使用者向其傳送新訊息,或 [Owner](/docs/zh-TW/cloud-environments#organization-shared-environments) 在環境的 **Activity** 標籤中對其選擇 **Retry**。339 * **退出 2 或更高**:不可重試的失敗。工作階段會被阻止再次啟動,直到使用者向其傳送新訊息,或 [Owner](/docs/zh-TW/cloud-environments#organization-shared-environments) 在環境的 **Activity** 標籤中對其選擇 **Retry**。

334 340 

335 在非零退出時,hook 的 stderr 的尾部會作為失敗原因出現在 **Activity** 標籤中,因此將可操作的錯誤寫入 stderr,且永遠不要將祕密寫入其中。在 shell hook 中,請[保持暫時性失敗可重試](#keep-transient-failures-retryable-in-a-shell-hook)。341 在非零退出時,hook 的 stderr 的尾部會作為失敗原因出現在 **Activity** 標籤中,因此將可操作的錯誤寫入 stderr,且永遠不要將祕密寫入其中。在 shell hook 中,請[保持暫時性失敗可重試](#keep-transient-failures-retryable-in-a-shell-hook)。


341 347 

342保持排隊且在 **Activity** 標籤中沒有啟動錯誤的工作階段可能意味著 hook 是在工作階段 ID 上進行金鑰設定的。若要確認,請檢查您的平台是否有該工作階段的第一個啟動請求的工作負載,以及沒有重新請求的工作負載。如果是這樣,請改為在 `CLAUDE_RUNNER_ORDER_ID` 上進行工作負載金鑰設定。348保持排隊且在 **Activity** 標籤中沒有啟動錯誤的工作階段可能意味著 hook 是在工作階段 ID 上進行金鑰設定的。若要確認,請檢查您的平台是否有該工作階段的第一個啟動請求的工作負載,以及沒有重新請求的工作負載。如果是這樣,請改為在 `CLAUDE_RUNNER_ORDER_ID` 上進行工作負載金鑰設定。

343 349 

350<h4 id="make-on-demand-runners-exit-when-idle">

351 讓隨需啟動的執行器在閒置時退出

352</h4>

353 

354預設情況下,您的 hook 啟動的執行器不會在其工作階段的回合結束時退出,因此您提交的工作負載會持續執行。若要讓執行器退出,請讓您的 hook 傳遞以下[執行器旗標](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags):

355 

356| 旗標與範例值 | 傳遞給 | 作用 |

357| :- | :- | :- |

358| `--release-idle-session-min 30` | 您的 hook 啟動的每個執行器 | 執行器在閒置達指定分鐘數後釋放其工作階段,然後以 0 退出。工作階段會在其使用者傳送下一則訊息時恢復,但[尚未推送的工作會遺失](/docs/zh-TW/self-hosted-environments-deploy#additional-limitations)。 |

359| `--kill-session-after-min 480` | 您的 hook 啟動的每個執行器 | 將每個工作階段限制在指定分鐘數內,作為[不算閒置的工作階段](/docs/zh-TW/self-hosted-environments-deploy#some-sessions-don’t-count-as-idle)的備援機制,因此請將其設定為高於您預期最長的工作階段 |

360| `--exit-if-unused-min 60` | 待命執行器,即您的 hook 為預熱請求啟動的執行器 | 從未接手工作階段的待命執行器會在指定分鐘數後退出。如果您設定了 [`--min-idle`](/docs/zh-TW/self-hosted-environments-reference#orchestrator-cli-flags),除非該待命執行器是多餘的,否則您會獲得替代執行器,因此請使用遠高於您啟動時間的值。 |

361 

362在執行器退出時移除工作負載,例如在 Kubernetes Job 上設定 `ttlSecondsAfterFinished`,或讓 VM 的啟動指令碼在之後刪除該 VM。

363 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">364<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 在 shell hook 中保持暫時性失敗可重試365 在 shell hook 中保持暫時性失敗可重試

346</h4>366</h4>


484* 位於標準系統路徑的企業範圍[受管 MCP 檔案](/docs/zh-TW/managed-mcp):Linux runner 主機上為 `/etc/claude-code/managed-mcp.json`,macOS 主機上為 `/Library/Application Support/ClaudeCode/managed-mcp.json`。適用於僅允許載入管理員所列伺服器的鎖定機群。優先順序規則請參閱[使用 managed-mcp.json 進行獨占控制](/docs/zh-TW/managed-mcp#exclusive-control-with-managed-mcp-json)。當此檔案存在於 runner 主機上時,Claude Code 會略過 Anthropic 控制平面傳遞給工作階段的 MCP 伺服器(包括 claude.ai 連接器),並在工作階段子程序的 stderr 上以警告列出它們,runner 會以 `debug` 日誌層級記錄這些警告。在 v2.1.229 之前,這些工作階段會在啟動時以 `You cannot dynamically configure MCP servers when an enterprise MCP config is present` 結束。504* 位於標準系統路徑的企業範圍[受管 MCP 檔案](/docs/zh-TW/managed-mcp):Linux runner 主機上為 `/etc/claude-code/managed-mcp.json`,macOS 主機上為 `/Library/Application Support/ClaudeCode/managed-mcp.json`。適用於僅允許載入管理員所列伺服器的鎖定機群。優先順序規則請參閱[使用 managed-mcp.json 進行獨占控制](/docs/zh-TW/managed-mcp#exclusive-control-with-managed-mcp-json)。當此檔案存在於 runner 主機上時,Claude Code 會略過 Anthropic 控制平面傳遞給工作階段的 MCP 伺服器(包括 claude.ai 連接器),並在工作階段子程序的 stderr 上以警告列出它們,runner 會以 `debug` 日誌層級記錄這些警告。在 v2.1.229 之前,這些工作階段會在啟動時以 `You cannot dynamically configure MCP servers when an enterprise MCP config is present` 結束。

485* runner 主機上[受管設定](/docs/zh-TW/managed-settings)中的 [`managedMcpServers`](/docs/zh-TW/settings-reference#managedmcpservers) 鍵:提供 HTTP 和 SSE 伺服器而不取得獨占控制,因此來自其他來源的伺服器仍會載入。需要 Claude Code v2.1.259 或更新版本。505* runner 主機上[受管設定](/docs/zh-TW/managed-settings)中的 [`managedMcpServers`](/docs/zh-TW/settings-reference#managedmcpservers) 鍵:提供 HTTP 和 SSE 伺服器而不取得獨占控制,因此來自其他來源的伺服器仍會載入。需要 Claude Code v2.1.259 或更新版本。

486* `<repo>/.mcp.json`:專案範圍。將此檔案提交到儲存庫;其伺服器在雲端工作階段中會自動核准。在包含多個儲存庫的工作階段中,[最多只會載入一個儲存庫的檔案](#repository-settings-in-sessions-with-several-repositories)。506* `<repo>/.mcp.json`:專案範圍。將此檔案提交到儲存庫;其伺服器在雲端工作階段中會自動核准。在包含多個儲存庫的工作階段中,[最多只會載入一個儲存庫的檔案](#repository-settings-in-sessions-with-several-repositories)。

507* 來自您包裝腳本的 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 檔案:將此旗標附加在 `"$@"` 之後,例如 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --mcp-config /etc/claude/mcp.json`。若要在工作階段所傳遞的伺服器於工作階段中途更新時,讓該檔案中的伺服器持續執行,請讓您的包裝腳本將[完整環境](#wrapper-scripts)傳遞給子程序,如同 `exec` 的做法。在 v2.1.299 之前,該檔案中的 stdio、HTTP 和 SSE 伺服器會在第一次未列出它們的此類更新時關閉。

487 508 

488當您的組織啟用連接器傳遞時,Anthropic 的控制平面會透過伺服器提供的 MCP 設定,將您在 claude.ai 上設定的連接器傳遞給以互動方式建立的工作階段,並經由 `api.anthropic.com` 路由。以程式化方式建立的工作階段(例如 [CLI 派送](/docs/zh-TW/self-hosted-environments-testing#run-the-test-loop))不會接收連接器傳遞;請改為透過本節列出的任何其他來源為它們提供 MCP 伺服器。子程序的 OAuth token 不具備直接擷取連接器的範圍,因此子程序本身不會嘗試該擷取;傳遞是由伺服器驅動的。509當您的組織啟用連接器傳遞時,Anthropic 的控制平面會透過伺服器提供的 MCP 設定,將您在 claude.ai 上設定的連接器傳遞給以互動方式建立的工作階段,並經由 `api.anthropic.com` 路由。以程式化方式建立的工作階段(例如 [CLI 派送](/docs/zh-TW/self-hosted-environments-testing#run-the-test-loop))不會接收連接器傳遞;請改為透過本節列出的任何其他來源為它們提供 MCP 伺服器。子程序的 OAuth token 不具備直接擷取連接器的範圍,因此子程序本身不會嘗試該擷取;傳遞是由伺服器驅動的。

489 510 

Details

182* 傳回最小範圍 token 的 `credential.helper`182* 傳回最小範圍 token 的 `credential.helper`

183* 指向範圍狹小之金鑰的 `GIT_SSH_COMMAND`183* 指向範圍狹小之金鑰的 `GIT_SSH_COMMAND`

184 184 

185您配置的任何機制都必須無需提示即可工作,因為執行器的內置複製和提取禁用 Git、SSH 和 Git Credential Manager 否則會顯示的提示:185<span id="git-must-work-without-a-prompt" />您設定的任何機制都必須無需提示即可運作,因為執行器的內建複製和提取會停用 Git、SSH 和 Git Credential Manager 原本會顯示的提示:

186 186 

187* 執行器設定 `GIT_TERMINAL_PROMPT=0`,因此 Git 不會要求使用者名稱或密碼。187* 執行器設定 `GIT_TERMINAL_PROMPT=0`,因此 Git 不會要求使用者名稱或密碼。

188* 執行器使用 `BatchMode=yes` 執行 SSH,附加到您的 `GIT_SSH_COMMAND`(如果您設定了),因此 SSH 不會要求密碼短語或主機確認。188* 執行器使用 `BatchMode=yes` 執行 SSH,附加到您的 `GIT_SSH_COMMAND`(如果您設定了),因此 SSH 不會要求密碼短語或主機確認。


212* **僅限 github.com**:只有當工作階段的所有儲存庫都位於 github.com 時,Anthropic 才會服務該工作階段,且 Git 代理伺服器目前尚不支援 GitHub Enterprise Server。在使用 Git 代理伺服器的執行器上,含有其他 Git 主機儲存庫的工作階段[無法啟動](#when-anthropic-doesnt-serve-a-session)。212* **僅限 github.com**:只有當工作階段的所有儲存庫都位於 github.com 時,Anthropic 才會服務該工作階段,且 Git 代理伺服器目前尚不支援 GitHub Enterprise Server。在使用 Git 代理伺服器的執行器上,含有其他 Git 主機儲存庫的工作階段[無法啟動](#when-anthropic-doesnt-serve-a-session)。

213* **僅提供工作階段儲存庫的憑證**:Anthropic 只會為屬於該工作階段的儲存庫提供 Git 憑證,而不會為同一 Git 主機上的其他儲存庫提供。私有 submodule、套件管理員透過 Git 擷取的相依套件,或位於其他儲存庫中的外掛市集,都無法從 Anthropic 取得憑證。請建立工作階段的人在建立時[加入工作階段所需的每個儲存庫](/docs/zh-TW/web-quickstart#start-a-task)。213* **僅提供工作階段儲存庫的憑證**:Anthropic 只會為屬於該工作階段的儲存庫提供 Git 憑證,而不會為同一 Git 主機上的其他儲存庫提供。私有 submodule、套件管理員透過 Git 擷取的相依套件,或位於其他儲存庫中的外掛市集,都無法從 Anthropic 取得憑證。請建立工作階段的人在建立時[加入工作階段所需的每個儲存庫](/docs/zh-TW/web-quickstart#start-a-task)。

214* **僅限分支推送**:刪除分支的推送會失敗,推送到任何其他類型的 ref(例如標籤)也會失敗。關於推送可以更新哪些分支,請參閱 [GitHub 代理伺服器](/docs/zh-TW/cloud-environments#github-proxy)。214* **僅限分支推送**:刪除分支的推送會失敗,推送到任何其他類型的 ref(例如標籤)也會失敗。關於推送可以更新哪些分支,請參閱 [GitHub 代理伺服器](/docs/zh-TW/cloud-environments#github-proxy)。

215* **已連結的 GitHub 帳戶**:建立使用者工作階段的人必須已在 claude.ai 上連結 GitHub,否則該工作階段[無法啟動](#creator-has-no-github-connection)。215* **已連結的 GitHub 帳戶**:請每位以儲存庫建立使用者工作階段的人[連結 GitHub](/docs/zh-TW/web-quickstart#connect-github)。若沒有自己的連結,這些工作階段[無法啟動](#creator-has-no-github-connection)。

216* **`--capacity 1`**:Git 代理伺服器要求每個執行器程序只處理一個工作階段,因此請執行更多副本以實現平行處理。[開啟 Anthropic Git 代理伺服器](#turn-the-anthropic-git-proxy-on)列出了相關要求。216* **`--capacity 1`**:Git 代理伺服器要求每個執行器程序只處理一個工作階段,因此請執行更多副本以實現平行處理。[開啟 Anthropic Git 代理伺服器](#turn-the-anthropic-git-proxy-on)列出了相關要求。

217* **取代全域 Git 設定**:執行器會[刪除並取代其執行身分使用者的全域 Git 設定](#git-proxy-replaces-global-git-config)。請以專用使用者身分或在容器中執行它。217* **取代全域 Git 設定**:執行器會[刪除並取代其執行身分使用者的全域 Git 設定](#git-proxy-replaces-global-git-config)。請以專用使用者身分或在容器中執行它。

218* **主機推送使用主機憑證**:執行器的 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 推送,以及您的 [`post-session` hook](/docs/zh-TW/self-hosted-environments-configuration#post-session) 所做的任何推送,仍會使用執行器主機自己的 Git 憑證及其[到 `github.com` 的網路路徑](#github-com-egress-with-the-anthropic-git-proxy)。關於這些憑證,請參閱[在映像中提供 Git 設定](#ship-git-config-in-your-image)。218* **主機推送使用主機憑證**:執行器的 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 推送,以及您的 [`post-session` hook](/docs/zh-TW/self-hosted-environments-configuration#post-session) 所做的任何推送,仍會使用執行器主機自己的 Git 憑證及其[到 `github.com` 的網路路徑](#github-com-egress-with-the-anthropic-git-proxy)。請將這些憑證保存在[全域 Git 設定](#git-proxy-replaces-global-git-config)之外,並參閱[在映像中提供 Git 設定](#ship-git-config-in-your-image)以了解提供這些憑證的方式。

219* **逐一工作階段決定**:Anthropic 會針對執行器上的每個工作階段決定是否為其提供 Git 服務,未被服務的工作階段將無法啟動。[在使用 Git 代理伺服器的執行器上工作階段無法啟動時](#when-anthropic-doesnt-serve-a-session)說明了原因。219* **逐一工作階段決定**:Anthropic 會針對執行器上的每個工作階段決定是否為其提供 Git 服務,未被服務的工作階段將無法啟動。[在使用 Git 代理伺服器的執行器上工作階段無法啟動時](#when-anthropic-doesnt-serve-a-session)說明了原因。

220 220 

221<span id="git-proxy-replaces-global-git-config" />221<span id="git-proxy-replaces-global-git-config" />


356儲存庫 URL 從控制平面以 HTTPS 形式傳來,並帶有您 Git 主機的主機名稱;對於 GitHub Enterprise,這是您在 claude.ai 上為 [GitHub Enterprise 整合](/docs/zh-TW/github-enterprise-server)設定的主機名稱。兩個可重複使用的旗標會在複製之前重寫這些 URL:356儲存庫 URL 從控制平面以 HTTPS 形式傳來,並帶有您 Git 主機的主機名稱;對於 GitHub Enterprise,這是您在 claude.ai 上為 [GitHub Enterprise 整合](/docs/zh-TW/github-enterprise-server)設定的主機名稱。兩個可重複使用的旗標會在複製之前重寫這些 URL:

357 357 

358* `--git-host-rewrite <from>=<to>`:用於分割視界 DNS,其中 Anthropic 通過外部主機名到達您的 Git 主機,但執行器必須使用內部主機名358* `--git-host-rewrite <from>=<to>`:用於分割視界 DNS,其中 Anthropic 通過外部主機名到達您的 Git 主機,但執行器必須使用內部主機名

359* `--git-ssh-rewrite <host>`:用於僅接受 SSH 的 Git 主機,將 `https://<host>/owner/repo` 重寫為 `git@<host>:owner/repo`359* `--git-ssh-rewrite <host>`:用於僅接受 SSH 的 Git 主機,或僅有 SSH 金鑰的執行器主機。例如,若要透過 SSH 複製 github.com 儲存庫,請在執行器命令中加入 `--git-ssh-rewrite github.com`。執行器隨後會將 `https://github.com/owner/repo` 重寫為 `git@github.com:owner/repo`。SSH 必須[無需提示即可連線](#git-must-work-without-a-prompt)。

360 360 

361主機重寫首先執行,因此如果您需要兩者,請在 `--git-ssh-rewrite` 中列出內部主機名。為了完全控制簽出,使用 [`checkout` 生命週期鉤子](/docs/zh-TW/self-hosted-environments-configuration#checkout)。361主機重寫首先執行,因此如果您需要兩者,請在 `--git-ssh-rewrite` 中列出內部主機名。為了完全控制簽出,使用 [`checkout` 生命週期鉤子](/docs/zh-TW/self-hosted-environments-configuration#checkout)。

362 362 


578 578 

579給您的主機停止逾時至少三個部分的總和:您設定的 `n` 分鐘、釋放後寬限期,以及[關閉時序](#shutdown-timing)所述的清空。在預設設定下,釋放後寬限期為 75 秒,清空最多需要 80 秒,因此請預留 `n` 分鐘加 155 秒。每當設定 `--defer-shutdown-max-min` 時,執行器都會在啟動時列印此總和。579給您的主機停止逾時至少三個部分的總和:您設定的 `n` 分鐘、釋放後寬限期,以及[關閉時序](#shutdown-timing)所述的清空。在預設設定下,釋放後寬限期為 75 秒,清空最多需要 80 秒,因此請預留 `n` 分鐘加 155 秒。每當設定 `--defer-shutdown-max-min` 時,執行器都會在啟動時列印此總和。

580 580 

581如果停止逾時在執行器完成之前用完,主機會終止執行器。它仍然持有的工作階段不會執行 `post-session` hook。執行器不會取消註冊,控制平面會在幾分鐘內重新排隊這些工作階段。如果您無法給停止逾時該總和,請保留 `--defer-shutdown-max-min` 不設定,讓執行器改為在第一個信號時清空。581如果停止逾時在執行器完成之前用完,它仍然持有的工作階段不會執行 `post-session` hook。執行器不會取消註冊,因此控制平面可能需要幾分鐘,有時甚至更久,才會重新排隊這些工作階段。如果您無法給停止逾時該總和,請保留 `--defer-shutdown-max-min` 不設定,讓執行器改為在第一個信號時清空。

582 582 

583<h3 id="what-reaches-a-running-post-session-hook">583<h3 id="what-reaches-a-running-post-session-hook">

584 什麼到達執行中的 post-session 鉤子584 什麼到達執行中的 post-session 鉤子


720 720 

721* **執行器不出現在環境中**:確認主機可以通過 HTTPS 到達 `api.anthropic.com`,環境祕密是最新的,主機時鐘在真實時間的五分鐘內;更大的偏差導致身份驗證失敗。執行器在身份驗證失敗時記錄 `[runner:fatal]` 及拒絕原因。721* **執行器不出現在環境中**:確認主機可以通過 HTTPS 到達 `api.anthropic.com`,環境祕密是最新的,主機時鐘在真實時間的五分鐘內;更大的偏差導致身份驗證失敗。執行器在身份驗證失敗時記錄 `[runner:fatal]` 及拒絕原因。

722* **執行器在啟動時以 `cannot create or write to base directory` 退出**:執行器無法建立或寫入 `--base-dir`,預設為 `/workspace`。修復目錄的所有權或將 `--base-dir` 指向可寫路徑,如[在執行器之間保持基本目錄和容量相同](#keep-the-base-directory-and-capacity-identical-across-runners)中所述。如果執行器改為記錄 `[runner:fatal]` 說基本目錄檢查超時,目錄在掛起的 NFS 或 CSI 掛載上。檢查掛載健康而不是權限。執行器在打開 `--log-file` 之前將這兩個啟動失敗列印到 stderr,因此在終端或您的平台的容器日誌中尋找它們,而不是日誌檔案。在 v2.1.225 之前,執行器在啟動時沒有檢查基本目錄,此配置錯誤在拾取後失敗工作階段。722* **執行器在啟動時以 `cannot create or write to base directory` 退出**:執行器無法建立或寫入 `--base-dir`,預設為 `/workspace`。修復目錄的所有權或將 `--base-dir` 指向可寫路徑,如[在執行器之間保持基本目錄和容量相同](#keep-the-base-directory-and-capacity-identical-across-runners)中所述。如果執行器改為記錄 `[runner:fatal]` 說基本目錄檢查超時,目錄在掛起的 NFS 或 CSI 掛載上。檢查掛載健康而不是權限。執行器在打開 `--log-file` 之前將這兩個啟動失敗列印到 stderr,因此在終端或您的平台的容器日誌中尋找它們,而不是日誌檔案。在 v2.1.225 之前,執行器在啟動時沒有檢查基本目錄,此配置錯誤在拾取後失敗工作階段。

723* **執行器在啟動時以 `RegisterRunner failed:` 和 TLS 憑證錯誤退出**:例如,錯誤可能是 `self signed certificate in certificate chain`。執行器不信任其收到之憑證背後的憑證授權單位(CA),這種情況會發生在執行 TLS 檢查的代理伺服器後方。在執行器的環境中將 [`NODE_EXTRA_CA_CERTS`](/docs/zh-TW/network-config#custom-ca-certificates) 設定為包含代理伺服器根 CA 的 PEM 檔案。

724 

725 您不需要為工作階段再次設定它,工作階段會繼承它。Git 不會讀取它:若要透過該代理伺服器進行複製,也請設定 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)。

726* **協調器記錄帶有 TLS 憑證錯誤的 `poll failed:` 並持續重試**:協調器不信任其收到之憑證背後的 CA,這種情況會發生在執行 TLS 檢查的代理伺服器後方。在協調器的環境中將 [`NODE_EXTRA_CA_CERTS`](/docs/zh-TW/network-config#custom-ca-certificates) 設定為包含代理伺服器根 CA 的 PEM 檔案。也請為您的 `spawn-runner` hook 啟動的執行器設定它。

727 

728 例如,某一行可能以 `poll failed: self signed certificate in certificate chain — retrying in 1s` 結尾,冒號與破折號之間是 TLS 程式庫的文字。若要確認修正,請檢查協調器的 [`/healthz`](/docs/zh-TW/self-hosted-environments-reference#health-endpoint) 主體中 `connected` 是否為 `true`。

723* **工作階段保持排隊**:每個線上執行器可能被鎖定到不同的所有者。檢查每個執行器的 `claude_code_self_hosted_runner_locked_account` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)或其 `[runner:health]` 日誌行的 `locked_account` 欄位以查看誰持有它。兩者僅在執行器被發佈攜帶 `act.email` 聲明的工作階段令牌後顯示所有者的電子郵件,Claude Tag 代理的工作階段永遠不會這樣做。沒有聲明,執行器不發出 `locked_account` 系列並記錄 `locked_account=yes`,這告訴您執行器被鎖定但不知道到哪個所有者。添加副本,或等待現有執行器清空並重新啟動。如果環境使用按需執行器,改為檢查協調器;請參閱[按需執行器](/docs/zh-TW/self-hosted-environments-configuration#on-demand-runners)。729* **工作階段保持排隊**:每個線上執行器可能被鎖定到不同的所有者。檢查每個執行器的 `claude_code_self_hosted_runner_locked_account` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)或其 `[runner:health]` 日誌行的 `locked_account` 欄位以查看誰持有它。兩者僅在執行器被發佈攜帶 `act.email` 聲明的工作階段令牌後顯示所有者的電子郵件,Claude Tag 代理的工作階段永遠不會這樣做。沒有聲明,執行器不發出 `locked_account` 系列並記錄 `locked_account=yes`,這告訴您執行器被鎖定但不知道到哪個所有者。添加副本,或等待現有執行器清空並重新啟動。如果環境使用按需執行器,改為檢查協調器;請參閱[按需執行器](/docs/zh-TW/self-hosted-environments-configuration#on-demand-runners)。

724* **工作階段在拾取後立即失敗**:在 claude.ai/code 中開啟工作階段以查看錯誤。最常見的原因是執行器映像中缺少 [Git 憑證](#configure-git),以及未安裝建置工具。在以 `--use-anthropic-git-proxy` 啟動的執行器上,請參閱[當工作階段無法在使用 Git 代理伺服器的執行器上啟動時](#when-anthropic-doesnt-serve-a-session)。不可寫入的基本目錄會在啟動時停止執行器,而不是使工作階段失敗。請參閱此清單中的**執行器在啟動時以 `cannot create or write to base directory` 退出**項目。730* **工作階段在拾取後立即失敗**:在 claude.ai/code 中開啟工作階段以查看錯誤。最常見的原因是執行器映像中缺少 [Git 憑證](#configure-git),以及未安裝建置工具。在以 `--use-anthropic-git-proxy` 啟動的執行器上,請參閱[當工作階段無法在使用 Git 代理伺服器的執行器上啟動時](#when-anthropic-doesnt-serve-a-session)。不可寫入的基本目錄會在啟動時停止執行器,而不是使工作階段失敗。請參閱此清單中的**執行器在啟動時以 `cannot create or write to base directory` 退出**項目。

725* **工作階段無法在設定了 `--use-anthropic-git-proxy` 的執行器上啟動**:在執行器的日誌中尋找 `access denied by the git proxy`,或指名包含 `/git_proxy/` 的 `api.anthropic.com` 位址的 Git 錯誤。若要判斷 Anthropic 是否有服務該工作階段並修正原因,請參閱[當工作階段無法在使用 Git 代理伺服器的執行器上啟動時](#when-anthropic-doesnt-serve-a-session)。731* **工作階段無法在設定了 `--use-anthropic-git-proxy` 的執行器上啟動**:在執行器的日誌中尋找 `access denied by the git proxy`,或指名包含 `/git_proxy/` 的 `api.anthropic.com` 位址的 Git 錯誤。若要判斷 Anthropic 是否有服務該工作階段並修正原因,請參閱[當工作階段無法在使用 Git 代理伺服器的執行器上啟動時](#when-anthropic-doesnt-serve-a-session)。


741 在 v2.1.274 之前,執行器在幾次嘗試後停止重試失敗的獲取,並等待下一個排定的獲取。失敗的輪次沒有觸發獲取,因此每個輪次都以 401 失敗,直到下一個排定的獲取。747 在 v2.1.274 之前,執行器在幾次嘗試後停止重試失敗的獲取,並等待下一個排定的獲取。失敗的輪次沒有觸發獲取,因此每個輪次都以 401 失敗,直到下一個排定的獲取。

742* **Pod 在清空中途被殺死**:將 `terminationGracePeriodSeconds` 提高到至少執行器在啟動時記錄的值。請參閱[關閉時序](#shutdown-timing)。748* **Pod 在清空中途被殺死**:將 `terminationGracePeriodSeconds` 提高到至少執行器在啟動時記錄的值。請參閱[關閉時序](#shutdown-timing)。

743 749 

744日誌初始化後,執行器將其生命週期日誌(包括 `[runner:fatal]` 行)寫入 stdout,將調試輸出寫入 stderr,全部作為純文字行而不是 JSON。上面故障排除項中描述的啟動失敗在該點之前列印到 stderr。使用 `--log-file` 捕捉兩個流,這也讓 `self-hosted-runner doctor` 尾隨它們,或使用您的平台的日誌收集。750日誌初始化後,執行器將其生命週期日誌(包括 `[runner:fatal]` 行)寫入 stdout,將偵錯輸出寫入 stderr,全部作為純文字行而不是 JSON。上面疑難排解項目中描述的基本目錄失敗會在該點之前列印到 stderr。使用 `--log-file` 捕捉兩個流,這也讓 `self-hosted-runner doctor` 尾隨它們,或使用您的平台的日誌收集。

745 751 

746每個工作階段的子程序寫入單獨的調試日誌。失敗時執行器在 claude.ai/code 中的工作階段旁邊顯示日誌的尾部。除非您使用 [`--remove-session-state`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器,否則它也會在磁碟上保留失敗工作階段的日誌,並在執行器日誌中列印其路徑。752每個工作階段的子程序寫入單獨的調試日誌。失敗時執行器在 claude.ai/code 中的工作階段旁邊顯示日誌的尾部。除非您使用 [`--remove-session-state`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器,否則它也會在磁碟上保留失敗工作階段的日誌,並在執行器日誌中列印其路徑。

747 753 

Details

25claude.ai 端需要:25claude.ai 端需要:

26 26 

27* **允許自託管環境**由[擁有者](/docs/zh-TW/cloud-environments#organization-shared-environments)在[**雲端環境**管理頁面](https://claude.ai/admin-settings/cloud-environments)上開啟;在開啟之前,**新增**按鈕不會出現。如果您不持有該角色,持有該角色的人可以建立環境並將其密鑰交給您;本頁面上的執行器和終端步驟不需要 claude.ai 角色,而在步驟檢查管理 UI 中的狀態時,執行器自己的日誌行會給您相同的信號。27* **允許自託管環境**由[擁有者](/docs/zh-TW/cloud-environments#organization-shared-environments)在[**雲端環境**管理頁面](https://claude.ai/admin-settings/cloud-environments)上開啟;在開啟之前,**新增**按鈕不會出現。如果您不持有該角色,持有該角色的人可以建立環境並將其密鑰交給您;本頁面上的執行器和終端步驟不需要 claude.ai 角色,而在步驟檢查管理 UI 中的狀態時,執行器自己的日誌行會給您相同的信號。

28* 您的組織的 [GitHub 連接](/docs/zh-TW/claude-code-on-the-web#github-authentication-options),以便開發人員在啟動工作階段時可以選擇存放庫。28* 由擁有者開啟的 [GitHub 連接器](https://claude.ai/admin-settings/connectors),以及每位開發人員自己的 [GitHub 連線](/docs/zh-TW/web-quickstart#connect-github),以便他們在啟動工作階段時可以選擇 github.com 儲存庫。

29 29 

30<h3 id="host-and-network">30<h3 id="host-and-network">

31 主機和網路31 主機和網路


34執行器主機需要:34執行器主機需要:

35 35 

36* 具有到 `api.anthropic.com` 的出站 HTTPS、到 `claude.ai` 和下面安裝步驟重定向到的下載主機,以及到您的 git 主機以進行複製的 Linux 或 macOS 主機或容器;[網路需求表](/docs/zh-TW/self-hosted-environments-deploy#network-requirements)有完整清單。Windows 不支援作為執行器主機;改為在 Linux 容器中執行執行器。開發人員工作站不受影響,因為工作階段從瀏覽器中的 claude.ai 啟動。36* 具有到 `api.anthropic.com` 的出站 HTTPS、到 `claude.ai` 和下面安裝步驟重定向到的下載主機,以及到您的 git 主機以進行複製的 Linux 或 macOS 主機或容器;[網路需求表](/docs/zh-TW/self-hosted-environments-deploy#network-requirements)有完整清單。Windows 不支援作為執行器主機;改為在 Linux 容器中執行執行器。開發人員工作站不受影響,因為工作階段從瀏覽器中的 claude.ai 啟動。

37* 用於測試工作階段的儲存庫:公開儲存庫,或此主機已能透過其 HTTPS URL 複製且不會被要求提供憑證的儲存庫。37* 用於測試工作階段的儲存庫:公開儲存庫,或此主機已能透過其 HTTPS URL 複製且不會被要求提供憑證的儲存庫。僅有 SSH 金鑰是不夠的,因為執行器會複製儲存庫的 `https://` URL。若要改為透過 SSH 複製,請參閱[為私人網路重寫 git URL](/docs/zh-TW/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)。

38* 與實時同步的時鐘,例如使用 NTP。當時鐘偏差超過五分鐘時,驗證失敗;請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。38* 與實時同步的時鐘,例如使用 NTP。當時鐘偏差超過五分鐘時,驗證失敗;請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。

39 39 

40<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


105 105 

106 選擇基本目錄,將下面執行器命令中的 `<writable-dir>` 替換為執行器可以寫入或建立的絕對路徑。執行器在啟動時建立目錄,然後簽出存放庫並在其下建立每個工作階段的目錄。沒有 `--base-dir`,它使用 `/workspace`,這只在該目錄已存在且可寫或您以 root 身份啟動執行器時有效。106 選擇基本目錄,將下面執行器命令中的 `<writable-dir>` 替換為執行器可以寫入或建立的絕對路徑。執行器在啟動時建立目錄,然後簽出存放庫並在其下建立每個工作階段的目錄。沒有 `--base-dir`,它使用 `/workspace`,這只在該目錄已存在且可寫或您以 root 身份啟動執行器時有效。

107 107 

108 如果執行器無法建立或寫入路徑,它在啟動時會以命名目錄的錯誤退出,而不是註冊。請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。108 <Warning>

109 請使用專供執行器使用的目錄,而不是您的家目錄或存放您自己複製之儲存庫的目錄。執行器會將它在 `<writable-dir>/<repo-owner>/<repo>` 找到的任何內容視為自己的複製,並可能重設它以及覆寫或刪除其中的檔案。

110 </Warning>

111 

112 如果執行器無法建立或寫入基本目錄,它在啟動時會以指出該目錄的錯誤退出,而不是註冊。請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。

109 113 

110 然後使用 `--environment-secret-file` 和 `--base-dir` 啟動執行器:114 然後使用 `--environment-secret-file` 和 `--base-dir` 啟動執行器:

111 115 


113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'117 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

114 ```118 ```

115 119 

116 執行器向您的環境註冊後會記錄 `Registered: runner_id=<runner-id>`,然後開始輪詢工作。如果執行器之後退出,請自行重新啟動它。有關何時會發生這種情況,請參閱[如果執行器退出](#if-the-runner-exits)。120 執行器向您的環境註冊後會記錄 `Registered: runner_id=<runner-id>`,然後開始輪詢工作。以此命令啟動時,它會在服務完一個工作階段後按設計退出,而不是在每個回合之後退出。若要服務更多工作階段,請在它每次退出時再次啟動執行器。有關何時會發生這種情況以及執行器會記錄什麼,請參閱[如果執行器退出](#if-the-runner-exits)。

117 </Step>121 </Step>

118 122 

119 <Step title="驗證執行器出現">123 <Step title="驗證執行器出現">


121 </Step>125 </Step>

122 126 

123 <Step title="將工作階段路由到環境">127 <Step title="將工作階段路由到環境">

124 <span id="route-a-session" />在 claude.ai/code 啟動工作階段,並從環境選擇器中選擇您的環境,其中自託管環境與 Anthropic 託管的環境並排出現。對於儲存庫,請選擇[先決條件](#host-and-network)中的儲存庫:公開儲存庫,或此主機已可以複製的儲存庫。執行器使用主機已有的任何 git 憑證進行複製。128 <span id="route-a-session" />在 claude.ai/code 啟動工作階段,並從環境選擇器中選擇您的環境,其中自託管環境與 Anthropic 託管的環境並排出現。對於儲存庫,請選擇[先決條件](#host-and-network)中的儲存庫:公開儲存庫,或此主機已可以透過其 HTTPS URL 複製且不會被要求提供憑證的儲存庫。

125 129 

126 下一個可用的執行器會拾取佇列中的工作階段,並記錄 `Picked up session <session-id>` 以及其活動計數和容量,因此您可以從執行器自己的輸出確認哪個主機接收了工作階段。在 [claude.ai/code](https://claude.ai/code) 觀看工作階段工作並閱讀 Claude 的回覆。130 下一個可用的執行器會拾取佇列中的工作階段,並記錄 `Picked up session <session-id>` 以及其活動計數和容量,因此您可以從執行器自己的輸出確認哪個主機接收了工作階段。在 [claude.ai/code](https://claude.ai/code) 觀看工作階段工作並閱讀 Claude 的回覆。

127 131 

128 如果工作階段沒有開始工作,請對照您看到的情況:132 <span id="session-doesnt-start" />如果工作階段沒有開始工作,請對照您看到的情況:

129 133 

130 * **工作階段保持佇列狀態**:請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。134 * **工作階段保持佇列狀態**:請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。

131 * **工作階段因 git 錯誤而無法啟動**:錯誤會出現在工作階段和執行器的日誌中。如果其中包含 git 的 `could not read Username for`,後面接著您的 git 主機 URL,表示執行器沒有該主機的 HTTPS 憑證。請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git),其中也涵蓋了生產環境中私有儲存庫的憑證選項。135 * **工作階段因 git 錯誤而無法啟動**:如果錯誤包含 git 的 `could not read Username for`,後面接著您的 git 主機 URL,表示執行器沒有該主機的 HTTPS 憑證。

136 * **提供 HTTPS 憑證**:請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)

137 * **改用 SSH 複製**:如果執行器主機已有 SSH 金鑰,請參閱[為私有網路重寫 git URL](/docs/zh-TW/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)

132 </Step>138 </Step>

133</Steps>139</Steps>

134 140 


136 如果執行器退出142 如果執行器退出

137</h3>143</h3>

138 144 

139如果執行器在此快速入門期間退出,請使用相同的命令再次啟動它。執行器可能會自行退出:145如果執行器在此快速入門期間退出,請再次啟動它。執行器可能會自行退出:

140 146 

141* **工作階段已完成**:日誌顯示 `[runner:exit] account workload drained — exiting`。執行器在其活動工作階段完成後按設計退出。請參閱[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)。147* **已無執行中的項目**:日誌顯示 `[runner:exit] account workload drained — exiting`。執行器在不再執行任何工作階段時會[按設計退出](/docs/zh-TW/self-hosted-environments#runner-lifecycle),例如:

148 * **您封存或刪除了工作階段**:再次啟動執行器

149 * **工作階段無法啟動**:[修正原因](#session-doesnt-start),然後再次啟動執行器

142* **失去聯繫**:日誌顯示一行 `[runner:fatal]`,並帶有 `runner record gone server-side` 或 `poll auth failed`。如果執行器與 Anthropic 失去聯繫一段時間,例如因為主機進入睡眠狀態,它可能會在下次連線到 Anthropic 時退出。150* **失去聯繫**:日誌顯示一行 `[runner:fatal]`,並帶有 `runner record gone server-side` 或 `poll auth failed`。如果執行器與 Anthropic 失去聯繫一段時間,例如因為主機進入睡眠狀態,它可能會在下次連線到 Anthropic 時退出。

143 151 

144完成一個回合並不會結束您的測試工作階段。第一個回合之後,工作階段仍處於附加狀態,執行器也仍在執行,因此您可以[向工作階段傳送後續訊息](#send-a-follow-up-message-to-a-running-session),而無需先重新啟動執行器。152完成一個回合並不會結束您的測試工作階段。第一個回合之後,工作階段仍處於附加狀態,執行器也仍在執行,因此您可以[向工作階段傳送後續訊息](#send-a-follow-up-message-to-a-running-session),而無需先重新啟動執行器。

Details

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 未設定 | 在絕對 Unix 時間戳記(秒)時退休執行器,用於在已知時間終止執行器的基礎設施;[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)描述釋放序列以及如何調整邊距。2001 年之前或 5138 年之後的值被旗標拒絕,被環境變數忽略。 |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 未設定 | 在絕對 Unix 時間戳記(秒)時退休執行器,用於在已知時間終止執行器的基礎設施;[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)描述釋放序列以及如何調整邊距。2001 年之前或 5138 年之後的值被旗標拒絕,被環境變數忽略。 |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | 控制平面隨工作階段傳送的[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器規則清單中,哪些可以送達該工作階段:`all`、`no-allow` 或 `none`。請參閱[自動模式規則清單](#auto-mode-rule-lists)以了解每個值套用的內容。無效的值會使執行器在啟動時停止。需要 Claude Code v2.1.295 或更新版本。 |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | 控制平面隨工作階段傳送的[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器規則清單中,哪些可以送達該工作階段:`all`、`no-allow` 或 `none`。請參閱[自動模式規則清單](#auto-mode-rule-lists)以了解每個值套用的內容。無效的值會使執行器在啟動時停止。需要 Claude Code v2.1.295 或更新版本。 |

56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | 在工作階段結束後,在強制終止之前等待 Claude 程序乾淨退出的時間。如果子程序自己的 `SessionEnd` 掛鉤需要更多時間,請提高該值。 |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | 在工作階段結束後,在強制終止之前等待 Claude 程序乾淨退出的時間。如果子程序自己的 `SessionEnd` 掛鉤需要更多時間,請提高該值。 |

57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | 如果子程序在產生後 N 分鐘內未發出已完成初始化的信號,則釋放工作階段槽。複製在產生之前進行,因此複製時間不計入。由子程序在[活動頻道](/docs/zh-TW/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached)上的初始化信號清除,而不是普通輸出,之後 `--release-idle-session-min` 接管。`0` 停用。 |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | 如果子程序未在 N 分鐘內於[活動頻道](/docs/zh-TW/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached)上發出已完成初始化的信號,則釋放工作階段槽。這 N 分鐘從產生時(複製之後)開始計算,並在子程序完成初始化或回報其狀態之前,每發出一則 `user` 或 `assistant` 訊息時重新計算。在 v2.1.299 之前,此逾時會在工作階段的第一則此類訊息時停止適用。關於初始化信號之後的釋放,請參閱 `--release-idle-session-min`。`0` 停用。 |

58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | 開啟 | 為每個工作階段的存放庫路徑播種持久化信任,以便尊重存放庫提交的 `permissions.allow` 和 `additionalDirectories`。設定 `false` 以放棄存放庫提交的權限授予,並改為在主機設定的 `settings.json` 中配置允許規則;存放庫提交的 `sandbox.*` 設定無論如何仍然適用,這就是為什麼[存放庫設定防護](/docs/zh-TW/self-hosted-environments-deploy#harden-your-deployment)無論此旗標如何都掃描它們。 |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | 開啟 | 為每個工作階段的存放庫路徑播種持久化信任,以便尊重存放庫提交的 `permissions.allow` 和 `additionalDirectories`。設定 `false` 以放棄存放庫提交的權限授予,並改為在主機設定的 `settings.json` 中配置允許規則;存放庫提交的 `sandbox.*` 設定無論如何仍然適用,這就是為什麼[存放庫設定防護](/docs/zh-TW/self-hosted-environments-deploy#harden-your-deployment)無論此旗標如何都掃描它們。 |

59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | 關閉 | 透過 [Anthropic git proxy](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy) 複製 github.com 上的儲存庫,而不是使用客戶管理的 git 驗證。需要 `--capacity 1` 和 git 2.32 或更新版本;否則執行器拒絕啟動。取代重寫旗標。 |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | 關閉 | 透過 [Anthropic git proxy](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy) 複製 github.com 上的儲存庫,而不是使用客戶管理的 git 驗證。需要 `--capacity 1` 和 git 2.32 或更新版本;否則執行器拒絕啟動。取代重寫旗標。 |

60 60 


160 160 

161在自訂探測中使用 `last_poll_age_ms` 作為活躍信號;無限增長的值表示輪詢迴圈卡住。`last_poll_at` 和 `last_poll_age_ms` 都是 `null`,直到第一次輪詢完成。161在自訂探測中使用 `last_poll_age_ms` 作為活躍信號;無限增長的值表示輪詢迴圈卡住。`last_poll_at` 和 `last_poll_age_ms` 都是 `null`,直到第一次輪詢完成。

162 162 

163協調器在其健康連接埠上提供自己的 `/healthz`。其端點始終返回 `200`,主體攜帶報告最近輪詢是否成功的 `connected` 欄位,加上 `queue_counts` 中的每個狀態產生佇列計數。在 `connected` 上而不是狀態碼上閘讀就緒和警報。163協調器自己的 `/healthz` 位於其健康連接埠上,始終返回 `200`。主體攜帶報告最近一次輪詢是否成功的 `connected` 欄位,以及 `queue_counts` 中依狀態分類的產生佇列計數。若要了解 `connected` 為何是 `false`,請讀取頂層的 `last_error` 欄位,每次輪詢成功時都會將其重設為 `null`。請根據 `connected` 而非狀態碼來判斷就緒狀態與觸發警報。

164 164 

165當配置[SCM 連接器](#scm-connector-flags)時,協調器的 `/healthz` 主體也攜帶 `scm_connector_connected` 和一個 `scm_connector` 物件,其中包含 `connected`、`last_connected_at`、`last_error`、`reconnects` 和 `requests_forwarded`。當未設定 `--scm-connector-host` 時,兩個欄位都是 `null`。165當配置[SCM 連接器](#scm-connector-flags)時,協調器的 `/healthz` 主體也攜帶 `scm_connector_connected` 和一個 `scm_connector` 物件,其中包含 `connected`、`last_connected_at`、`last_error`、`reconnects` 和 `requests_forwarded`。當未設定 `--scm-connector-host` 時,兩個欄位都是 `null`。

166 166 

Details

692| [`gcpAuthRefresh`](#gcpauthrefresh) | 使用您自己的命令重新整理 [Google Cloud 憑證](/docs/zh-TW/google-vertex-ai#advanced-credential-configuration) | 身分驗證和提供者 | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | 使用您自己的命令重新整理 [Google Cloud 憑證](/docs/zh-TW/google-vertex-ai#advanced-credential-configuration) | 身分驗證和提供者 | Any file |

693| [`hooks`](#hooks) | 在 Claude Code 生命週期的各個時間點,將您自己的命令作為 [hook](/docs/zh-TW/hooks) 執行 | Hook 和自動化 | Any file |693| [`hooks`](#hooks) | 在 Claude Code 生命週期的各個時間點,將您自己的命令作為 [hook](/docs/zh-TW/hooks) 執行 | Hook 和自動化 | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | 限制 [HTTP hook](/docs/zh-TW/hooks) 可以放入標頭的環境變數 | Hook 和自動化 | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | 限制 [HTTP hook](/docs/zh-TW/hooks) 可以放入標頭的環境變數 | Hook 和自動化 | Any file |

695| [`idleCompaction`](#idlecompaction) | 讓 Claude Code 不在您的終端機工作階段閒置時壓縮冗長的對話 | 記憶和上下文 | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | 已棄用;請使用 `attribution` 隱藏或變更提交和 PR 歸屬 | Git 和歸屬 | Any file |696| [`includeCoAuthoredBy`](#includecoauthoredby) | 已棄用;請使用 `attribution` 隱藏或變更提交和 PR 歸屬 | Git 和歸屬 | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | 從 Claude 的上下文中移除內建的提交和 PR 指示 | Git 和歸屬 | Any file |697| [`includeGitInstructions`](#includegitinstructions) | 從 Claude 的上下文中移除內建的提交和 PR 指示 | Git 和歸屬 | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | 當 Claude 在等待您時收到[推播通知](/docs/zh-TW/remote-control#mobile-push-notifications) | 遠端、桌面和通知 | Any file |698| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | 當 Claude 在等待您時收到[推播通知](/docs/zh-TW/remote-control#mobile-push-notifications) | 遠端、桌面和通知 | Any file |


1425 * `true`: 當為您啟用動態工作流程且您的模型支援 `xhigh` 時,工作階段以 ultracode 開啟開始1426 * `true`: 當為您啟用動態工作流程且您的模型支援 `xhigh` 時,工作階段以 ultracode 開啟開始

1426 * `false`: 工作階段以 ultracode 關閉開始1427 * `false`: 工作階段以 ultracode 關閉開始

1427* **預設**: 未設定,因此 ultracode 已關閉1428* **預設**: 未設定,因此 ultracode 已關閉

1428* **每個工作階段的覆蓋**: `/effort ultracode` 在沒有此金鑰的情況下為一個工作階段開啟 ultracode,`/effort ultracode off` 在此金鑰為 `true` 時為一個工作階段關閉它。`--effort ultracode` 標誌也為一個工作階段開啟它,在 `xhigh` 努力,需要 Claude Code v2.1.203 或更新版本1429* **每個工作階段的覆寫**: `/effort ultracode` 在沒有此設定鍵的情況下為一個工作階段開啟 ultracode,`/effort ultracode off` 在此設定鍵為 `true` 時為一個工作階段關閉它。`--effort ultracode` 旗標也會為一個工作階段開啟它,並使用 `xhigh` effort

1429 1430 

1430```json settings.json theme={null}1431```json settings.json theme={null}

1431{1432{


2952}2953}

2953```2954```

2954 2955 

2955手動 `/compact` 命令在自動壓縮關閉時繼續工作。2956手動 `/compact` 命令在自動壓縮關閉時繼續工作。如果您關閉自動壓縮,[閒置壓縮](#idlecompaction)也會隨之關閉。

2956 2957 

2957<h3 id="autocompactwindow">2958<h3 id="autocompactwindow">

2958 `autoCompactWindow`2959 `autoCompactWindow`


3133 * 改變 Claude Code 如何啟動或同步的變數,例如 `CLAUDE_CODE_PROCESS_WRAPPER`、`CLAUDE_CODE_SYNC_SKILLS`、`CLAUDE_CODE_SYNC_PLUGINS`、`CLAUDE_CODE_PLUGIN_CACHE_DIR` 和 `CLAUDE_CODE_PLUGIN_SEED_DIR`。3134 * 改變 Claude Code 如何啟動或同步的變數,例如 `CLAUDE_CODE_PROCESS_WRAPPER`、`CLAUDE_CODE_SYNC_SKILLS`、`CLAUDE_CODE_SYNC_PLUGINS`、`CLAUDE_CODE_PLUGIN_CACHE_DIR` 和 `CLAUDE_CODE_PLUGIN_SEED_DIR`。

3134 * 設定未回應對話框計時器的變數:[`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`、`CLAUDE_AFK_TIMEOUT_MS` 和 `CLAUDE_AFK_COUNTDOWN_MS`](/docs/zh-TW/env-vars#variables)。3135 * 設定未回應對話框計時器的變數:[`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`、`CLAUDE_AFK_TIMEOUT_MS` 和 `CLAUDE_AFK_COUNTDOWN_MS`](/docs/zh-TW/env-vars#variables)。

3135 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/zh-TW/env-vars#variables),它會關閉附件處理。3136 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/zh-TW/env-vars#variables),它會關閉附件處理。

3137 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](/docs/zh-TW/env-vars#variables),它會阻止 Claude Code 展開檔案和目錄的 `@` 提及。

3136 3138 

3137 在 v2.1.251 之前,專案和本機設定也可以設定此清單中選擇 Claude Code 寫入其檔案位置或匯出工作階段內容的變數,除了 `HOME` 和 `XDG_CONFIG_HOME`。在 v2.1.290 之前,它們也可以設定對話框計時器變數和 `CLAUDE_CODE_DISABLE_ATTACHMENTS`。3139 在 v2.1.251 之前,專案和本機設定也可以設定此清單中選擇 Claude Code 寫入其檔案位置或匯出工作階段內容的變數,除了 `HOME` 和 `XDG_CONFIG_HOME`。在 v2.1.290 之前,它們也可以設定對話框計時器變數和 `CLAUDE_CODE_DISABLE_ATTACHMENTS`。

3138* Claude Code 的託管環境擁有的身份變數,例如 `CLAUDE_CODE_REMOTE` 和 `CLAUDE_CODE_ACCOUNT_UUID`,從每個檔案中被忽略。3140* Claude Code 的託管環境擁有的身份變數,例如 `CLAUDE_CODE_REMOTE` 和 `CLAUDE_CODE_ACCOUNT_UUID`,從每個檔案中被忽略。


3163 3165 

3164在 `-p` 執行或 Agent SDK 工作階段中,Claude Code 忽略此鍵。SDK 使用其 `enableFileCheckpointing` 選項開啟檢查點,裸 `-p` 執行需要 `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`。請參閱 [Agent SDK 中的檔案檢查點](/docs/zh-TW/agent-sdk/file-checkpointing)。3166在 `-p` 執行或 Agent SDK 工作階段中,Claude Code 忽略此鍵。SDK 使用其 `enableFileCheckpointing` 選項開啟檢查點,裸 `-p` 執行需要 `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`。請參閱 [Agent SDK 中的檔案檢查點](/docs/zh-TW/agent-sdk/file-checkpointing)。

3165 3167 

3168<h3 id="idlecompaction">

3169 `idleCompaction`

3170</h3>

3171 

3172閒置壓縮會在您已離開的長對話的提示快取到期前不久,[壓縮](/docs/zh-TW/context-window#what-survives-compaction)該對話。接著您的下一則訊息會傳送摘要,而不是整個對話。當您回來時,對話會顯示 `Compacted while idle, before the prompt cache expired`。

3173 

3174對於符合以下所有條件的對話,閒置壓縮預設為開啟:

3175 

3176* **工作階段**:您處於互動式終端機工作階段中

3177* **提示快取**:對話使用[一小時提示快取 TTL](/docs/zh-TW/prompt-caching#which-ttl-each-request-gets)

3178* **功能旗標**:Claude Code 可以[從 Anthropic 擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)

3179* **大小**:對話的上下文已達到 token 閾值,您可以從其預設值 200,000 [變更](#change-the-idle-compaction-threshold)此閾值

3180* **閒置時間**:自上次請求以來已經過約 54 分鐘,且您的電腦在那時處於喚醒狀態

3181 

3182若要關閉閒置壓縮,請將此鍵設定為 `false`。

3183 

3184* **範圍**:[`任何檔案`](#scopes)

3185* **類型**:布林值

3186 * `true`:Claude Code 壓縮符合條件的閒置對話

3187 * `false`:Claude Code 不會在您的工作階段閒置時進行壓縮

3188* **預設**:`true`

3189* **每個工作階段的覆寫**:[`DISABLE_AUTO_COMPACT`](/docs/zh-TW/env-vars) 會連同自動壓縮一起關閉閒置壓縮

3190 

3191```json settings.json theme={null}

3192{

3193 "idleCompaction": false

3194}

3195```

3196 

3197此鍵需要 Claude Code v2.1.290 或更高版本。在會忽略此鍵的較早版本上,請關閉 [`autoCompactEnabled`](#autocompactenabled) 以停止閒置壓縮。

3198 

3199<h4 id="change-the-idle-compaction-threshold">

3200 變更閒置壓縮閾值

3201</h4>

3202 

3203將 [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](/docs/zh-TW/env-vars) 設定為對話的上下文必須達到的 token 數量,之後閒置壓縮才會套用到該對話。請使用正整數。低於 `100000` 的值會提高到最低閾值 `100000`。

3204 

3205在預設值下,使用 200K 上下文視窗的對話會在達到 200,000 個 token 之前自動壓縮。此範例將閾值降低到 150,000,讓這些對話符合條件:

3206 

3207```json settings.json theme={null}

3208{

3209 "env": {

3210 "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000"

3211 }

3212}

3213```

3214 

3166<h3 id="plansdirectory">3215<h3 id="plansdirectory">

3167 `plansDirectory`3216 `plansDirectory`

3168</h3>3217</h3>


4209}4258}

4210```4259```

4211 4260 

4261若您在[非互動模式](/docs/zh-TW/headless)或 Agent SDK 中取代系統提示詞,即使此鍵為 `true`,工作階段也會在沒有快照的情況下開始:

4262 

4263* **`-p` 執行**:當您傳遞 [`--system-prompt`](/docs/zh-TW/cli-reference#system-prompt-flags) 或 `--system-prompt-file` 時,即會取代提示詞。當您執行具有自己提示詞的自訂 agent(透過 [`--agent`](/docs/zh-TW/sub-agents#invoke-subagents-explicitly) 或 [`agent`](#agent) 設定選取)時,也會取代提示詞。在 [bare 模式](/docs/zh-TW/headless#start-faster-with-bare-mode)之外,若要保留快照,請在不使用自訂 agent 的情況下執行,並使用 [`--append-system-prompt`](/docs/zh-TW/cli-reference#system-prompt-flags) 新增您的指示,而不是取代提示詞。

4264* **[Agent SDK](/docs/zh-TW/agent-sdk/modifying-system-prompts)**:您會以自訂系統提示詞或自訂主執行緒 agent 取代提示詞。若您未設定系統提示詞,SDK 會使用其最精簡的預設值,工作階段同樣會在沒有快照的情況下開始。在 [bare 模式](/docs/zh-TW/headless#start-faster-with-bare-mode)之外,若要保留快照,請使用 `claude_code` 預設集,且不使用自訂 `agent`。

4265 

4212<h3 id="prurltemplate">4266<h3 id="prurltemplate">

4213 `prUrlTemplate`4267 `prUrlTemplate`

4214</h3>4268</h3>


4966 `strictPluginOnlyCustomization.agents`5020 `strictPluginOnlyCustomization.agents`

4967</h3>5021</h3>

4968 5022 

4969鎖定 `agents` 表面。Claude Code 停止從 `~/.claude/agents/` 和 `.claude/agents/` 載入 agents,並繼續載入 plugin agents、內建 agents 和受管原則目錄中的 agents。5023鎖定 `agents` 表面。Claude Code 停止從 `~/.claude/agents/`、`.claude/agents/` 和 `--add-dir` 目錄載入 agents。它繼續載入 plugin agents、內建 agents 和受管原則目錄中的 agents。

4970 5024 

4971* **Scope**: [`Managed`](#scopes)5025* **Scope**: [`Managed`](#scopes)

4972* **Type**: [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) 陣列中的字串 `"agents"`5026* **Type**: [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) 陣列中的字串 `"agents"`


5175 5229 

5176內建 plugins 在相同鍵下儲存其選項,帶有 `@builtin` 後綴。例如,控制 Claude Code 是否讀取 `AGENTS.md` 檔案的[**專案指示**](/docs/zh-TW/memory#choose-which-instruction-files-load)設定是 `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`。在 v2.1.285 之前,該 plugin 的 ID 是 `agents-md@builtin`。較新版本會讀取任一 ID 下的項目。5230內建 plugins 在相同鍵下儲存其選項,帶有 `@builtin` 後綴。例如,控制 Claude Code 是否讀取 `AGENTS.md` 檔案的[**專案指示**](/docs/zh-TW/memory#choose-which-instruction-files-load)設定是 `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`。在 v2.1.285 之前,該 plugin 的 ID 是 `agents-md@builtin`。較新版本會讀取任一 ID 下的項目。

5177 5231 

5178Claude Code 忽略專案和本機項目,因為它將這些值替換到 plugin hook、MCP 和 LSP 配置中,複製的儲存庫不得能夠提供它們。在 v2.1.207 之前,專案和本機設定也被讀取。5232Claude Code 忽略專案和本機項目,因為它將這些值替換到 plugin hook、MCP 和 LSP 設定中,複製的儲存庫不得能夠提供它們。

5179 5233 

5180<h3 id="prependplugins">5234<h3 id="prependplugins">

5181 `prependPlugins`5235 `prependPlugins`


5680}5734}

5681```5735```

5682 5736 

5683在 git 儲存庫外,失敗的 [`WorktreeCreate` hook](/docs/zh-TW/worktrees#non-git-version-control) 會釋放區塊,以便工作階段可以就地編輯工作目錄;該釋放需要 Claude Code v2.1.203 或更新版本。5737在 git 儲存庫外,失敗的 [`WorktreeCreate` hook](/docs/zh-TW/worktrees#non-git-version-control) 會解除阻止,以便工作階段可以就地編輯工作目錄。

5684 5738 

5685<h3 id="worktree-location">5739<h3 id="worktree-location">

5686 `worktree.location`5740 `worktree.location`

setup.md +1 −1

Details

226 226 

227執行 `claude doctor` 以查看最近更新嘗試的結果。227執行 `claude doctor` 以查看最近更新嘗試的結果。

228 228 

229在 macOS 和 Linux 上,原生安裝程式會將啟動器管理為 `~/.local/bin/claude` 的符號連結,指向 `~/.local/share/claude/versions/`。如果您將該啟動器替換為自己的指令碼或符號連結,自動更新和 `claude update` 會將其保留在原位:新版本仍會安裝在 `versions/` 目錄下,而您的啟動器決定執行哪個版本。在 v2.1.207 之前,自動更新程式會在每次更新時將該路徑上的自訂啟動器替換為自己的符號連結。229在 macOS 和 Linux 上,原生安裝程式會將啟動器管理為 `~/.local/bin/claude` 的符號連結,指向 `~/.local/share/claude/versions/`。如果您將該啟動器替換為自己的指令碼或符號連結,自動更新和 `claude update` 會將其保留在原位:新版本仍會安裝在 `versions/` 目錄下,而您的啟動器決定執行哪個版本。

230 230 

231使用自訂啟動器時,Claude Code 也會將每個已安裝的版本保留在磁碟上,因為它無法判斷啟動器需要哪個版本。`claude doctor` 會報告原生安裝程式未建立的啟動器。231使用自訂啟動器時,Claude Code 也會將每個已安裝的版本保留在磁碟上,因為它無法判斷啟動器需要哪個版本。`claude doctor` 會報告原生安裝程式未建立的啟動器。

232 232 

skills.md +27 −4

Details

31若要關閉捆綁技能,請使用 [`disableBundledSkills`](/docs/zh-TW/settings-reference#disablebundledskills) 設定。31若要關閉捆綁技能,請使用 [`disableBundledSkills`](/docs/zh-TW/settings-reference#disablebundledskills) 設定。

32 32 

33<Note>33<Note>

34 在 Claude Code v2.1.205 及更新版本中,當 `disableBundledSkills` 開啟時,[`/doctor`](/docs/zh-TW/commands#all-commands) 設定檢查仍可輸入。若要隱藏它,請設定 `DISABLE_DOCTOR_COMMAND` 環境變數或 [`skillOverrides`](#override-skill-visibility-from-settings) 項目 `"doctor": "off"`。在 v2.1.205 之前,`/doctor` 是內建命令而非捆綁技能。34 當 `disableBundledSkills` 開啟時,[`/doctor`](/docs/zh-TW/commands#all-commands) 設定檢查仍可輸入。若要隱藏它,請設定 `DISABLE_DOCTOR_COMMAND` 環境變數或 [`skillOverrides`](#override-skill-visibility-from-settings) 項目 `"doctor": "off"`。

35</Note>35</Note>

36 36 

37捆綁技能與內建命令一起列在[命令參考](/docs/zh-TW/commands)中,在「用途」欄中標記為**技能**。37捆綁技能與內建命令一起列在[命令參考](/docs/zh-TW/commands)中,在「用途」欄中標記為**技能**。


69 69 

70`/verify` 也可以記錄自己的配方。當它必須在沒有記錄配方的情況下建置和驅動您的應用程式時,它會將有效的內容寫入儲存庫根目錄的 `.claude/skills/verify/SKILL.md`,或在 monorepo 中的觸及套件目錄中,以便稍後的執行和其他 agent 遵循相同的步驟。在儲存庫根目錄,記錄的 skill 會取代隨附的 `/verify`。70`/verify` 也可以記錄自己的配方。當它必須在沒有記錄配方的情況下建置和驅動您的應用程式時,它會將有效的內容寫入儲存庫根目錄的 `.claude/skills/verify/SKILL.md`,或在 monorepo 中的觸及套件目錄中,以便稍後的執行和其他 agent 遵循相同的步驟。在儲存庫根目錄,記錄的 skill 會取代隨附的 `/verify`。

71 71 

72Claude 只有在引導執行出錯時(例如失敗的命令或缺少的步驟)才會編輯記錄的檔案,因此您可以提交檔案而無需每個工作階段的差異。在 v2.1.205 之前,捆綁技能告訴 Claude 要折疊執行學到的任何內容,這導致頻繁的合併衝突。72Claude 只有在記錄的檔案引導執行出錯時(例如失敗的命令或缺少的步驟)才會編輯該檔案,因此您可以提交檔案而不會產生每個工作階段的差異。

73 73 

74<h3 id="run-your-checks-before-each-commit">74<h3 id="run-your-checks-before-each-commit">

75 在每次提交前執行檢查75 在每次提交前執行檢查


183* **符號連結資料夾**:企業、個人或專案位置中的 `<skill-name>` 項目可以是磁碟上其他位置目錄的符號連結。Claude Code 從目標讀取 `SKILL.md` 並載入技能一次,即使多個位置指向同一目標。外掛程式技能[以不同方式處理符號連結](/docs/zh-TW/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)。183* **符號連結資料夾**:企業、個人或專案位置中的 `<skill-name>` 項目可以是磁碟上其他位置目錄的符號連結。Claude Code 從目標讀取 `SKILL.md` 並載入技能一次,即使多個位置指向同一目標。外掛程式技能[以不同方式處理符號連結](/docs/zh-TW/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)。

184* **保留名稱 `synced`**:不要將技能資料夾命名為 `synced`,無論大小寫如何。Claude Code 使用 `~/.claude/skills/synced/` 來[儲存從 claude.ai 下載的技能](#where-synced-skills-load),並跳過您在企業、個人和專案位置中以該名稱編寫的技能。184* **保留名稱 `synced`**:不要將技能資料夾命名為 `synced`,無論大小寫如何。Claude Code 使用 `~/.claude/skills/synced/` 來[儲存從 claude.ai 下載的技能](#where-synced-skills-load),並跳過您在企業、個人和專案位置中以該名稱編寫的技能。

185* **保留名稱 `anthropic-skills`**:在外掛程式外,名稱為 `anthropic-skills` 或以 `anthropic-skills:` 開頭的技能資料夾或命令檔案不會載入。請參閱[為同步技能保留的名稱](#names-reserved-for-synced-skills)。185* **保留名稱 `anthropic-skills`**:在外掛程式外,名稱為 `anthropic-skills` 或以 `anthropic-skills:` 開頭的技能資料夾或命令檔案不會載入。請參閱[為同步技能保留的名稱](#names-reserved-for-synced-skills)。

186* **名稱中的字元**:在外掛外,當 skill 資料夾的名稱含有零寬度空格或 `<` 等字元時,該資料夾不會載入。請參閱[skill 名稱不能包含的字元](#characters-a-skill-name-cant-hold)。

186* **命令檔案**:`.claude/commands/` 中的 Markdown 檔案是較舊的格式,仍然有效。它支援相同的[前置資料](#frontmatter-reference),除了 `name` 和 `paths`。若要找到您輸入以叫用它的名稱,請參閱[技能如何獲得其命令名稱](#how-a-skill-gets-its-command-name)。對於新工作,建議使用技能,因為技能也支援[支援檔案](#add-supporting-files)。187* **命令檔案**:`.claude/commands/` 中的 Markdown 檔案是較舊的格式,仍然有效。它支援相同的[前置資料](#frontmatter-reference),除了 `name` 和 `paths`。若要找到您輸入以叫用它的名稱,請參閱[技能如何獲得其命令名稱](#how-a-skill-gets-its-command-name)。對於新工作,建議使用技能,因為技能也支援[支援檔案](#add-supporting-files)。

187* **技能資料夾作為外掛程式**:將 `.claude-plugin/plugin.json` 新增到技能資料夾,它會載入為[外掛程式](/docs/zh-TW/plugins/loading#plugins-shared-through-a-repository),名稱為 `<name>@skills-dir`,因此可以捆綁代理、hooks 和 MCP 伺服器。在專案的 `.claude/skills/` 中,這需要先接受工作區信任對話。188* **技能資料夾作為外掛程式**:將 `.claude-plugin/plugin.json` 新增到技能資料夾,它會載入為[外掛程式](/docs/zh-TW/plugins/loading#plugins-shared-through-a-repository),名稱為 `<name>@skills-dir`,因此可以捆綁代理、hooks 和 MCP 伺服器。在專案的 `.claude/skills/` 中,這需要先接受工作區信任對話。

188 189 


495 496 

496對於插件根 `SKILL.md`,沒有 skill 目錄可以從中獲取名稱,因此 `name` 提供整個最後一段。沒有 `name` 欄位,Claude Code 回退到插件的目錄名稱。497對於插件根 `SKILL.md`,沒有 skill 目錄可以從中獲取名稱,因此 `name` 提供整個最後一段。沒有 `name` 欄位,Claude Code 回退到插件的目錄名稱。

497 498 

499<h4 id="characters-a-skill-name-cant-hold">

500 Skill 名稱不能包含的字元

501</h4>

502 

503如果 skill 或自訂命令未出現在 `/` 選單中,或選單未顯示 skill 的 frontmatter `name`,請檢查名稱。Claude Code 會拒絕包含下列這類字元的命令名稱或 frontmatter `name`:

504 

505* 零寬空格或控制字元

506* 私人使用區或未指派的字元,例如圖示字型中的字符

507* 會改變其周圍文字方向的字元

508* 單字之間單一一般空格以外的空白,例如不換行空格、連續兩個空格,或位於開頭或結尾的空格

509* `<` 或 `>`

510 

511當 Claude Code 拒絕自訂命令或 skill 的目錄或檔案名稱時,該命令或 skill 不會載入。請重新命名該資料夾或檔案以移除這些字元。若這些字元僅出現在外掛 skill 資料夾的名稱或其 frontmatter `name` 中,skill 仍會載入:

512 

513* **外掛 `skills/` 目錄或其 manifest 的 [`skills` 路徑](/docs/zh-TW/plugins/components#skills)中的資料夾**:您不需要重新命名資料夾。這些字元會在 skill 的命令名稱中變成連字號,因此請以連字號輸入命令。

514* **Frontmatter `name`**:`/` 選單不會顯示 `name` 值,輸入它也不會調用 skill。請編輯 `name:` 行以移除這些字元。

515 

516若要找出 Claude Code 拒絕了哪個名稱,請從 shell 以 [`claude --debug`](/docs/zh-TW/cli-reference#cli-flags) 啟動它,並在[除錯日誌](/docs/zh-TW/debug-your-config)中搜尋 `[names]`。在互動式工作階段中,[啟動通知](/docs/zh-TW/errors#skill-or-command-name-refused)也會告訴您有名稱遭到拒絕。重新命名或編輯 `name:` 後,請重新啟動工作階段,除非該檔案位於 Claude Code [監看變更](#live-change-detection)的目錄中。

517 

498<h4 id="available-string-substitutions">518<h4 id="available-string-substitutions">

499 可用的字串替換519 可用的字串替換

500</h4>520</h4>


858| 具有 `context: fork` 的技能 | 來自代理類型 | SKILL.md 內容 | CLAUDE.md,根據代理的[啟動內容](/docs/zh-TW/sub-agents#what-loads-at-startup) |878| 具有 `context: fork` 的技能 | 來自代理類型 | SKILL.md 內容 | CLAUDE.md,根據代理的[啟動內容](/docs/zh-TW/sub-agents#what-loads-at-startup) |

859| 具有 `skills` 欄位的子代理 | 子代理的 markdown 主體 | Claude 的委派訊息 | 預載入的技能 + CLAUDE.md,根據子代理的[啟動內容](/docs/zh-TW/sub-agents#what-loads-at-startup) |879| 具有 `skills` 欄位的子代理 | 子代理的 markdown 主體 | Claude 的委派訊息 | 預載入的技能 + CLAUDE.md,根據子代理的[啟動內容](/docs/zh-TW/sub-agents#what-loads-at-startup) |

860 880 

861使用 `context: fork`,您在技能中編寫工作並選擇代理類型來執行它。內建的 Explore 和 Plan 代理[跳過 CLAUDE.md 和 git 狀態](/docs/zh-TW/sub-agents#what-loads-at-startup)以保持其內容較小,所以使用 `agent: Explore` 的分叉技能只會看到 SKILL.md 內容和代理自己的系統提示。對於相反的情況,您定義使用技能作為參考資料的自訂子代理,請參閱[子代理](/docs/zh-TW/sub-agents#preload-skills-into-subagents)。881使用 `context: fork` 時,您在 skill 中撰寫任務,並選擇一個 agent 類型來執行它。內建的 Explore 和 Plan agent [啟動時不含 CLAUDE.md 和 git 狀態](/docs/zh-TW/sub-agents#what-loads-at-startup),以保持其上下文精簡。請將任務所需的一切都放在您的 SKILL.md 中。使用 `agent: Explore` 的分叉 skill 啟動時只有該內容和 agent 自己的系統提示詞,不含您的任何 CLAUDE.md 檔案。

882 

883對於相反的情況,也就是您定義使用 skill 作為參考資料的自訂 subagent,請參閱 [Subagent](/docs/zh-TW/sub-agents#preload-skills-into-subagents)。

862 884 

863<h4 id="example-research-skill-using-explore-agent">885<h4 id="example-research-skill-using-explore-agent">

864 範例:使用 Explore 代理的研究技能886 範例:使用 Explore 代理的研究技能


1244如果 Claude 在預期時未使用您的 skill:1266如果 Claude 在預期時未使用您的 skill:

1245 1267 

12461. 檢查描述是否包含使用者會自然說出的關鍵字12681. 檢查描述是否包含使用者會自然說出的關鍵字

12472. 驗證 skill 是否出現在「What skills are available?」中12692. 驗證 skill 是否出現在 `What skills are available?` 中

12483. 嘗試重新表述您的請求以更密切地符合描述12703. 嘗試重新表述您的請求以更密切地符合描述

12494. 如果 skill 可由使用者叫用,請使用 `/skill-name` 直接叫用它12714. 如果 skill 可由使用者叫用,請使用 `/skill-name` 直接叫用它

12725. 如果 `/skill-name` 也無法被識別,請檢查 Claude Code 是否[拒絕了該 skill 的名稱](#characters-a-skill-name-cant-hold)

1250 1273 

1251如果 frontmatter YAML 格式不正確,Claude Code 會以空的中繼資料載入 skill 主體,因此 `/skill-name` 仍然有效,但 Claude 無法對您的 `description` 進行比對。使用 `--debug` 執行以查看解析錯誤。1274如果 frontmatter YAML 格式不正確,Claude Code 會以空的中繼資料載入 skill 主體,因此 `/skill-name` 仍然有效,但 Claude 無法對您的 `description` 進行比對。使用 `--debug` 執行以查看解析錯誤。

1252 1275 

statusline.md +2 −2

Details

1198| `description` | string | 任務的簡短說明,例如 Claude 產生 subagent 時所提供的說明 |1198| `description` | string | 任務的簡短說明,例如 Claude 產生 subagent 時所提供的說明 |

1199| `label` | string | 當 Claude Code 有任務的簡短進度摘要時為該摘要,否則與 `description` 的文字相同 |1199| `label` | string | 當 Claude Code 有任務的簡短進度摘要時為該摘要,否則與 `description` 的文字相同 |

1200| `startTime` | number | 任務開始的時間,以自 Unix epoch 以來的毫秒數表示 |1200| `startTime` | number | 任務開始的時間,以自 Unix epoch 以來的毫秒數表示 |

1201| `model` | string,選用 | 任務執行所在的已解析模型 ID。在模型解析完成前會被省略。需要 Claude Code v2.1.205 或更新版本 |1201| `model` | string,選用 | 任務執行所在的已解析模型 ID。在模型解析完成前會被省略 |

1202| `effort` | string 或 number,選用 | 在 subagent 的[定義 frontmatter](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 或個別調用上為其設定的推理 effort:`low`、`medium`、`high`、`xhigh`、`max` 或數值 token 預算。這是設定的值,當模型不支援該等級時,Claude Code 實際套用的 effort 可能會有所不同。未設定 effort 時會被省略。需要 Claude Code v2.1.213 或更新版本 |1202| `effort` | string 或 number,選用 | 在 subagent 的[定義 frontmatter](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 或個別調用上為其設定的推理 effort:`low`、`medium`、`high`、`xhigh`、`max` 或數值 token 預算。這是設定的值,當模型不支援該等級時,Claude Code 實際套用的 effort 可能會有所不同。未設定 effort 時會被省略。需要 Claude Code v2.1.213 或更新版本 |

1203| `contextWindowSize` | number,選用 | `model` 的上下文視窗(以 token 計),計算方式與主狀態列的 [`context_window.context_window_size`](#context-window-fields) 相同,因此您可以從 `tokenCount` 呈現每列的百分比。當 `model` 被省略時也會被省略。需要 Claude Code v2.1.205 或更新版本 |1203| `contextWindowSize` | number,選用 | `model` 的上下文視窗(以 token 計),計算方式與主狀態列的 [`context_window.context_window_size`](#context-window-fields) 相同,因此您可以從 `tokenCount` 呈現每列的百分比。當 `model` 被省略時也會被省略 |

1204| `tokenCount` | number | subagent 的累計 token 數,即預設列所顯示的數字 |1204| `tokenCount` | number | subagent 的累計 token 數,即預設列所顯示的數字 |

1205| `tokenSamples` | array of numbers | 最多最近 16 次的 `tokenCount` 讀數,每個重新整理刻度一筆,由舊到新排列並以目前的讀數結尾 |1205| `tokenSamples` | array of numbers | 最多最近 16 次的 `tokenCount` 讀數,每個重新整理刻度一筆,由舊到新排列並以目前的讀數結尾 |

1206| `cwd` | string | subagent 的工作目錄:當其在自己的目錄中執行時(例如隔離的 worktree)為該目錄,否則為工作階段的工作目錄 |1206| `cwd` | string | subagent 的工作目錄:當其在自己的目錄中執行時(例如隔離的 worktree)為該目錄,否則為工作階段的工作目錄 |

sub-agents.md +41 −12

Details

32 32 

33Claude Code 包括內建 subagents,Claude 在適當時會自動使用。每個都繼承父對話的權限規則;大多數以受限的工具集執行。33Claude Code 包括內建 subagents,Claude 在適當時會自動使用。每個都繼承父對話的權限規則;大多數以受限的工具集執行。

34 34 

35Explore 和 Plan 會跳過您的 CLAUDE.md 檔案和 git status 快照,以保持研究快速且經濟高效。其他所有內建和[自訂 subagent](#configure-subagents) 都會載入兩者,除非其定義設定 [`omitClaudeMd`](#supported-frontmatter-fields) 欄位以跳過使用者、專案和本機 CLAUDE.md 檔案。如需了解到達 subagent 的完整詳細資訊,請參閱[啟動時載入的內容](#what-loads-at-startup)。35Explore 和 Plan 啟動時不會載入您的 CLAUDE.md 檔案和 git status 快照,以保持研究快速且經濟高效。其他內建和[自訂 subagent](#configure-subagents) 都會載入兩者,除非您在自訂 subagent 的定義中設定 [`omitClaudeMd`](#supported-frontmatter-fields),使其啟動時不載入使用者、專案和本機 CLAUDE.md 檔案。如需了解到達 subagent 的完整詳細資訊,請參閱[啟動時載入的內容](#what-loads-at-startup)。

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Explore">38 <Tab title="Explore">


185 185 

186Claude Code 會遞迴掃描 `.claude/agents/` 和 `~/.claude/agents/`,因此您可以將定義組織到子資料夾中,例如 `agents/review/` 或 `agents/research/`。子目錄路徑不會影響子代理的識別或叫用方式,因為身份僅來自 `name` frontmatter 欄位。186Claude Code 會遞迴掃描 `.claude/agents/` 和 `~/.claude/agents/`,因此您可以將定義組織到子資料夾中,例如 `agents/review/` 或 `agents/research/`。子目錄路徑不會影響子代理的識別或叫用方式,因為身份僅來自 `name` frontmatter 欄位。

187 187 

188在整個樹中保持 `name` 值唯一:如果同一 `.claude/agents/` 目錄下的兩個檔案(包括其子資料夾)宣告相同的名稱,Claude Code 只會載入其中一個,由檔案系統讀取順序選擇,而不是文件化的優先級。在巢狀專案目錄中,最接近工作目錄的定義獲勝,如上所述。[`/doctor`](/docs/zh-TW/commands#all-commands)設定檢查會報告同一目錄中共享名稱的檔案,並建議重新命名或移除除一個以外的所有檔案。在 v2.1.205 之前,`/doctor` 開啟診斷畫面,列出重複項並顯示哪個定義處於活動狀態。188在整個樹中保持 `name` 值唯一:如果同一 `.claude/agents/` 目錄下(包括其子資料夾)的兩個檔案宣告相同的名稱,Claude Code 只會載入其中一個,由檔案系統讀取順序選擇,而不是依文件記載的優先順序。在巢狀專案目錄之間,則如上所述,最接近工作目錄的定義優先。[`/doctor`](/docs/zh-TW/commands#all-commands) 設定檢查會報告同一目錄中共享名稱的檔案,並建議重新命名或移除其餘檔案,只保留一個。

189 189 

190Plugin `agents/` 目錄也會遞迴掃描。與專案和使用者範圍不同,plugin 的 `agents/` 目錄內的子資料夾成為[範圍識別碼](#invoke-subagents-explicitly)的一部分:plugin `my-plugin` 中位於 `agents/review/security.md` 的檔案註冊為 `my-plugin:review:security`。190Plugin `agents/` 目錄也會遞迴掃描。與專案和使用者範圍不同,plugin 的 `agents/` 目錄內的子資料夾成為[範圍識別碼](#invoke-subagents-explicitly)的一部分:plugin `my-plugin` 中位於 `agents/review/security.md` 的檔案註冊為 `my-plugin:review:security`。

191 191 


234JSON 中的每個頂級鍵是代理的名稱,其值是該代理的定義。不要以 `-` 開頭的名稱。定義採用這些欄位:234JSON 中的每個頂級鍵是代理的名稱,其值是該代理的定義。不要以 `-` 開頭的名稱。定義採用這些欄位:

235 235 

236* **`prompt`**:代理的系統提示,等同於檔案型子代理中的 markdown 主體。`prompt` 可能為空。如果您使用 `--agent` 選擇一個具有空 `prompt` 且沒有 `memory` 欄位的代理作為工作階段的代理,工作階段的系統提示保持不變。空 `prompt` 需要 Claude Code v2.1.281 或更新版本。236* **`prompt`**:代理的系統提示,等同於檔案型子代理中的 markdown 主體。`prompt` 可能為空。如果您使用 `--agent` 選擇一個具有空 `prompt` 且沒有 `memory` 欄位的代理作為工作階段的代理,工作階段的系統提示保持不變。空 `prompt` 需要 Claude Code v2.1.281 或更新版本。

237* **[Frontmatter 欄位](#supported-frontmatter-fields)**:`description`、`tools`、`disallowedTools`、`model`、`permissionMode`、`mcpServers`、`hooks`、`maxTurns`、`skills`、`initialPrompt`、`memory`、`effort`、`background`、`omitClaudeMd` 和 `isolation`。237* **[Frontmatter 欄位](#supported-frontmatter-fields)**:`description`、`tools`、`disallowedTools`、`model`、`permissionMode`、`mcpServers`、`hooks`、`maxTurns`、`autoCompactWindow`、`skills`、`initialPrompt`、`memory`、`effort`、`background`、`omitClaudeMd` 和 `isolation`。

238* **忽略的欄位**:`color` 和 `experimental` 在此不被接受,被忽略而不是拒絕。238* **忽略的欄位**:`color` 和 `experimental` 在此不被接受,被忽略而不是拒絕。

239 239 

240有關 Claude Code 對無法載入的值所做的操作,以及跳過該檢查的旗標和環境變數,請參閱[`Invalid --agents configuration`](/docs/zh-TW/errors#invalid-agents-configuration)。240有關 Claude Code 對無法載入的值所做的操作,以及跳過該檢查的旗標和環境變數,請參閱[`Invalid --agents configuration`](/docs/zh-TW/errors#invalid-agents-configuration)。


285 285 

286子代理在主對話的目前工作目錄中啟動。在子代理內,`cd` 命令不會在 Bash 或 PowerShell 工具呼叫之間持續,也不會影響主對話的工作目錄。若要改為給子代理儲存庫的隔離副本,請設定 [`isolation: worktree`](#supported-frontmatter-fields)。286子代理在主對話的目前工作目錄中啟動。在子代理內,`cd` 命令不會在 Bash 或 PowerShell 工具呼叫之間持續,也不會影響主對話的工作目錄。若要改為給子代理儲存庫的隔離副本,請設定 [`isolation: worktree`](#supported-frontmatter-fields)。

287 287 

288具有 `isolation: worktree` 的子代理在其 worktree 內執行其 Bash 和 PowerShell 命令。其工作目錄解析到您的主簽出的命令(例如,因為 worktree 目錄在子代理執行時被移除)會失敗並出現錯誤。在 v2.1.203 之前,此類命令可以在主簽出中執行。288具有 `isolation: worktree` 的 subagent 會在其 worktree 內執行其 Bash 和 PowerShell 命令。若命令的工作目錄改為解析到您的主簽出(例如因為 worktree 目錄在 subagent 執行期間被移除),該命令會失敗並出現錯誤。

289 289 

290此工作目錄檢查涵蓋包含您啟動 Claude Code 的目錄的整個儲存庫。當您的工作階段在其自己的連結 [worktree](/docs/zh-TW/worktrees) 中執行時,檢查也涵蓋該 worktree 連結的主簽出。在 v2.1.210 之前,檢查僅涵蓋啟動目錄本身。其工作目錄解析到同一儲存庫中其他位置的命令(例如,當您從 monorepo 子目錄啟動 Claude Code 時的儲存庫根目錄)在那裡執行,而不是失敗。290此工作目錄檢查涵蓋包含您啟動 Claude Code 的目錄的整個儲存庫。當您的工作階段在其自己的連結 [worktree](/docs/zh-TW/worktrees) 中執行時,檢查也涵蓋該 worktree 連結的主簽出。在 v2.1.210 之前,檢查僅涵蓋啟動目錄本身。其工作目錄解析到同一儲存庫中其他位置的命令(例如,當您從 monorepo 子目錄啟動 Claude Code 時的儲存庫根目錄)在那裡執行,而不是失敗。

291 291 


306 306 

307使用 YAML [frontmatter](/docs/zh-TW/glossary#frontmatter) 在檔案頂部的 `---` 標記之間設定子代理,並在結束 `---` 之後將其系統提示寫為 Markdown。只有 `name` 和 `description` 是必需的。307使用 YAML [frontmatter](/docs/zh-TW/glossary#frontmatter) 在檔案頂部的 `---` 標記之間設定子代理,並在結束 `---` 之後將其系統提示寫為 Markdown。只有 `name` 和 `description` 是必需的。

308 308 

309多字欄位名稱使用 camelCase,例如 `maxTurns` 和 `disallowedTools`,必須與表格完全匹配:Claude Code 忽略它不識別的欄位而不報告錯誤。若要找出子代理檔案未載入的原因,請參閱[Claude Code 跳過的子代理檔案](#subagent-files-claude-code-skips)。309多字欄位名稱使用 camelCase,例如 `maxTurns` 和 `disallowedTools`,必須與表格完全相符:Claude Code 會忽略它無法識別的欄位而不報告錯誤。

310 

311* 若要找出已載入之 subagent 中拼錯的欄位,請在 shell 中執行 [`claude --debug`](/docs/zh-TW/cli-reference#cli-flags),並在位於 `~/.claude/debug/<session-id>.txt` 的除錯日誌中搜尋 `does not recognize or apply`。除錯日誌會列出 subagent 檔案中最多五個 Claude Code 無法識別的頂層欄位,並在有相近的支援欄位時提供可能想要的名稱。需要 Claude Code v2.1.296 或更新版本。

312* 若要找出 subagent 檔案未載入的原因,請參閱[Claude Code 跳過的 subagent 檔案](#subagent-files-claude-code-skips)。

310 313 

311| 欄位 | 必需 | 描述 |314| 欄位 | 必需 | 描述 |

312| :- | :- | :- |315| :- | :- | :- |


317| `model` | 否 | 要使用的[模型](#choose-a-model):`sonnet`、`opus`、`haiku`、`fable`、完整模型 ID(例如 `claude-opus-5-5`)或 `inherit`。當您省略它時,Claude Code 會在[子代理模型順序](#choose-a-model)中選擇模型 |320| `model` | 否 | 要使用的[模型](#choose-a-model):`sonnet`、`opus`、`haiku`、`fable`、完整模型 ID(例如 `claude-opus-5-5`)或 `inherit`。當您省略它時,Claude Code 會在[子代理模型順序](#choose-a-model)中選擇模型 |

318| `permissionMode` | 否 | [權限模式](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions`、`plan`,或作為 `default` 別名的 `manual`。對[外掛 subagent](#choose-the-subagent-scope) 會被忽略 |321| `permissionMode` | 否 | [權限模式](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions`、`plan`,或作為 `default` 別名的 `manual`。對[外掛 subagent](#choose-the-subagent-scope) 會被忽略 |

319| `maxTurns` | 否 | 子代理停止前的最大代理轉數。當子代理達到限制時,Claude Code 返回其輸出標記為部分,Claude 可以[恢復它](#resume-subagents)以繼續。部分標記需要 Claude Code v2.1.246 或更新版本 |322| `maxTurns` | 否 | 子代理停止前的最大代理轉數。當子代理達到限制時,Claude Code 返回其輸出標記為部分,Claude 可以[恢復它](#resume-subagents)以繼續。部分標記需要 Claude Code v2.1.246 或更新版本 |

323| `autoCompactWindow` | 否 | 將此 subagent 的[自動壓縮視窗](#subagent-auto-compact-window)降低至 `100000` 到 `1000000` 之間的 token 數。需要 Claude Code v2.1.296 或更新版本 |

320| `skills` | 否 | 在啟動時預載入子代理上下文的[技能](/docs/zh-TW/skills)。注入完整技能內容,而不僅僅是描述。子代理仍然可以透過 Skill 工具叫用未列出的專案、使用者和 plugin 技能 |324| `skills` | 否 | 在啟動時預載入子代理上下文的[技能](/docs/zh-TW/skills)。注入完整技能內容,而不僅僅是描述。子代理仍然可以透過 Skill 工具叫用未列出的專案、使用者和 plugin 技能 |

321| `mcpServers` | 否 | 此子代理可用的 [MCP 伺服器](/docs/zh-TW/mcp)。每個條目要麼是參考已設定伺服器的伺服器名稱(例如 `"slack"`),要麼是內聯定義,伺服器名稱作為鍵,完整 [MCP 伺服器設定](/docs/zh-TW/mcp#installing-mcp-servers)作為值。對於 [plugin 子代理](#choose-the-subagent-scope)被忽略 |325| `mcpServers` | 否 | 此子代理可用的 [MCP 伺服器](/docs/zh-TW/mcp)。每個條目要麼是參考已設定伺服器的伺服器名稱(例如 `"slack"`),要麼是內聯定義,伺服器名稱作為鍵,完整 [MCP 伺服器設定](/docs/zh-TW/mcp#installing-mcp-servers)作為值。對於 [plugin 子代理](#choose-the-subagent-scope)被忽略 |

322| `hooks` | 否 | [生命週期 hooks](#define-hooks-for-subagents) 範圍限於此子代理。對於 [plugin 子代理](#choose-the-subagent-scope)被忽略 |326| `hooks` | 否 | [生命週期 hooks](#define-hooks-for-subagents) 範圍限於此子代理。對於 [plugin 子代理](#choose-the-subagent-scope)被忽略 |

323| `memory` | 否 | [持久記憶範圍](#enable-persistent-memory):`user`、`project` 或 `local`。啟用跨工作階段學習 |327| `memory` | 否 | [持久記憶範圍](#enable-persistent-memory):`user`、`project` 或 `local`。啟用跨工作階段學習 |

324| `background` | 否 | 設定為 `true` 以保持此子代理在背景中,即使 Claude 要求在前景中執行它。其中[分叉模式](#turn-fork-mode-on-or-off)開啟時,Claude Code 已經在[背景中](#run-subagents-in-foreground-or-background)執行 Claude 生成的子代理 |328| `background` | 否 | 設定為 `true` 以保持此子代理在背景中,即使 Claude 要求在前景中執行它。其中[分叉模式](#turn-fork-mode-on-or-off)開啟時,Claude Code 已經在[背景中](#run-subagents-in-foreground-or-background)執行 Claude 生成的子代理 |

325| `omitClaudeMd` | 否 | 設定為 `true` 以啟動此子代理而不使用使用者、專案和本機 CLAUDE.md 檔案;[受管原則檔案](/docs/zh-TW/memory#how-claude-md-files-load)仍然載入,除了[受管子代理](#choose-the-subagent-scope)。將其用於從[委派提示](#what-loads-at-startup)獲取所需一切的子代理。當代理透過 `--agent` 或 `agent` 設定作為主工作階段代理執行時被忽略。需要 Claude Code v2.1.271 或更新版本 |329| `omitClaudeMd` | 否 | 設為 `true` 可讓此 subagent 啟動時,其[初始上下文](#what-loads-at-startup)中不含使用者、專案和本機 CLAUDE.md 檔案;[受管原則檔案](/docs/zh-TW/memory#how-claude-md-files-load)仍會載入,但[受管 subagent](#choose-the-subagent-scope) 除外。適用於從委派提示詞取得所需一切的 subagent。當 agent 透過 `--agent` 或 `agent` 設定作為主工作階段 agent 執行時會被忽略。需要 Claude Code v2.1.271 或更新版本 |

326| `effort` | 否 | 此 subagent 執行時的 effort 等級。會覆寫工作階段的 effort 等級,但不會覆寫 [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-TW/env-vars#variables) 環境變數。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用等級取決於模型。請參閱[選擇 effort 等級](#choose-an-effort-level) |330| `effort` | 否 | 此 subagent 執行時的 effort 等級。會覆寫工作階段的 effort 等級,但不會覆寫 [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-TW/env-vars#variables) 環境變數。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用等級取決於模型。請參閱[選擇 effort 等級](#choose-an-effort-level) |

327| `isolation` | 否 | 設定為 `worktree` 以在臨時 [git worktree](/docs/zh-TW/worktrees) 中執行子代理,給它儲存庫的隔離副本,預設從您的[預設分支](/docs/zh-TW/worktrees#choose-the-base-branch)分支,而不是父工作階段的 `HEAD`。如果子代理不進行任何變更,worktree 會自動清理 |331| `isolation` | 否 | 設定為 `worktree` 以在臨時 [git worktree](/docs/zh-TW/worktrees) 中執行子代理,給它儲存庫的隔離副本,預設從您的[預設分支](/docs/zh-TW/worktrees#choose-the-base-branch)分支,而不是父工作階段的 `HEAD`。如果子代理不進行任何變更,worktree 會自動清理 |

328| `color` | 否 | 子代理在任務列表和文字記錄中的顯示顏色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |332| `color` | 否 | 子代理在任務列表和文字記錄中的顯示顏色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |


461* `WaitForMcpServers`465* `WaitForMcpServers`

462* `Workflow`466* `Workflow`

463 467 

464第二個篩選器適用於在背景中執行的子代理。除了 `Agent` 和 `ExitPlanMode`,它們遵循第一個篩選器的條件,無論子代理在哪裡執行,背景子代理保持每個 MCP 工具,但只有這些內建工具:`Read`、`Grep`、`Glob`、`LSP`、`Bash`、`PowerShell`、`Edit`、`Write`、`NotebookEdit`、`WebFetch`、`WebSearch`、`TodoWrite`、`Skill`、`ToolSearch`、`EnterWorktree`、`ExitWorktree`、`Monitor`、`TaskStop`、`SendMessage` 和 `Artifact`,加上[`SubagentHandback`](/docs/zh-TW/tools-reference)用於透過它報告的子代理。Claude Code 從背景子代理移除每個其他內建工具,無論繼承或在 `tools` 欄位中列出,因此相同定義可以在前景和背景中解析為不同的工具。移除報告沒有錯誤,除非它使 `tools` 列表[解析為無](/docs/zh-TW/errors#agent-would-be-spawned-with-zero-tools)。468第二個篩選器適用於在背景中執行的子代理。`Agent` 和 `ExitPlanMode` 無論子代理在哪裡執行都遵循第一個篩選器的條件。除這兩個工具外,背景子代理保留每個 MCP 工具,但內建工具只保留這些:`Read`、`Grep`、`Glob`、`LSP`、`Bash`、`PowerShell`、`Edit`、`Write`、`NotebookEdit`、`WebFetch`、`WebSearch`、`TodoWrite`、`Skill`、`ToolSearch`、`EnterWorktree`、`ExitWorktree`、`Monitor`、`TaskStop`、`SendMessage` 和 `Artifact`,加上[`SubagentHandback`](/docs/zh-TW/tools-reference)用於透過它報告的子代理。Claude Code 從背景子代理移除每個其他內建工具,無論繼承或在 `tools` 欄位中列出,因此相同定義可以在前景和背景中解析為不同的工具。移除不會報告錯誤,除非它使 `tools` 列表[解析為無](/docs/zh-TW/errors#agent-would-be-spawned-with-zero-tools)。

465 469 

466在 v2.1.280 之前,背景子代理無法使用 `LSP`。470在 v2.1.280 之前,背景子代理無法使用 `LSP`。

467 471 


914claude --agent code-reviewer918claude --agent code-reviewer

915```919```

916 920 

917除非 agent 的 [提示詞為空](#choose-the-subagent-scope),否則自訂 subagent 的系統提示詞會完全取代預設的 Claude Code 系統提示詞,就像 [`--system-prompt`](/docs/zh-TW/cli-reference) 一樣。`CLAUDE.md` 檔案和專案記憶仍然透過正常訊息流載入,即使 agent 的定義設定了 [`omitClaudeMd`](#supported-frontmatter-fields)。921除非 agent 的 [提示詞為空](#choose-the-subagent-scope),否則自訂 subagent 的系統提示詞會完全取代預設的 Claude Code 系統提示詞,就像 [`--system-prompt`](/docs/zh-TW/cli-reference) 一樣。`CLAUDE.md` 檔案和專案記憶仍然透過正常訊息流載入,即使 agent 的定義設定了 [`omitClaudeMd`](#supported-frontmatter-fields)。如果您以具有自己提示詞的自訂 agent 身分使用 `-p` 執行工作階段,它也會在沒有 [git 狀態快照](/docs/zh-TW/settings-reference#includegitinstructions) 的情況下啟動。

918 922 

919agent 名稱在啟動標題中顯示為 `@<name>`,以便您可以確認它已啟用。923agent 名稱在啟動標題中顯示為 `@<name>`,以便您可以確認它已啟用。

920 924 


1150* **CLAUDE.md 檔案**:主要對話載入的 [CLAUDE.md 層級](/docs/zh-TW/memory#how-claude-md-files-load) 的每個級別,包括 `~/.claude/CLAUDE.md`、專案規則、`CLAUDE.local.md`、受管理的政策檔案和任何作為專案指令載入的 [`AGENTS.md` 檔案](/docs/zh-TW/memory#agents-md)。內建的 Explore 和 Plan agents 跳過這個。定義中設定 [`omitClaudeMd`](#supported-frontmatter-fields) 的 subagent 只載入受管理的政策檔案,或當定義來自 [受管設定](#choose-the-subagent-scope) 時完全不載入。1154* **CLAUDE.md 檔案**:主要對話載入的 [CLAUDE.md 層級](/docs/zh-TW/memory#how-claude-md-files-load) 的每個級別,包括 `~/.claude/CLAUDE.md`、專案規則、`CLAUDE.local.md`、受管理的政策檔案和任何作為專案指令載入的 [`AGENTS.md` 檔案](/docs/zh-TW/memory#agents-md)。內建的 Explore 和 Plan agents 跳過這個。定義中設定 [`omitClaudeMd`](#supported-frontmatter-fields) 的 subagent 只載入受管理的政策檔案,或當定義來自 [受管設定](#choose-the-subagent-scope) 時完全不載入。

1151* **Git 狀態**:Claude Code 在 subagent 啟動時從您的儲存庫讀取的快照。對於在該儲存庫的 [自己的 worktree](/docs/zh-TW/worktrees#isolate-subagents-with-worktrees) 中執行的 subagent,快照會顯示該 worktree 的分支、狀態和最近的提交。在 Git 儲存庫之外或快照被關閉時不存在;請參閱 [`includeGitInstructions`](/docs/zh-TW/settings-reference#includegitinstructions)。Explore 和 Plan 無論如何都跳過它。1155* **Git 狀態**:Claude Code 在 subagent 啟動時從您的儲存庫讀取的快照。對於在該儲存庫的 [自己的 worktree](/docs/zh-TW/worktrees#isolate-subagents-with-worktrees) 中執行的 subagent,快照會顯示該 worktree 的分支、狀態和最近的提交。在 Git 儲存庫之外或快照被關閉時不存在;請參閱 [`includeGitInstructions`](/docs/zh-TW/settings-reference#includegitinstructions)。Explore 和 Plan 無論如何都跳過它。

1152* **預載入的 skills**:agent 的 [`skills` 欄位](#preload-skills-into-subagents) 中命名的任何 skill 的完整內容。內建 agents 不預載入 skills。1156* **預載入的 skills**:agent 的 [`skills` 欄位](#preload-skills-into-subagents) 中命名的任何 skill 的完整內容。內建 agents 不預載入 skills。

1153* **同級名單**:一則 [系統提醒](/docs/zh-TW/glossary#system-reminder),列出 `main` 和工作階段中的每個其他具名 agent,每個都是 [`SendMessage`](#resume-subagents) 的有效 `to` 值。需要 Claude Code v2.1.206 或更新版本。名單僅在 subagent 的工具包括 `SendMessage` 且至少有一個其他 agent 有名稱時出現,無論是 Claude 在產生時為它命名,還是它作為 [agent team](/docs/zh-TW/agent-teams) 隊員執行。它是在 subagent 啟動時拍攝的快照,所以稍後命名的 agents 不會出現。1157* **同級名單**:一則 [系統提醒](/docs/zh-TW/glossary#system-reminder),列出 `main` 和工作階段中的每個其他具名 agent,每個都是 [`SendMessage`](#resume-subagents) 的有效 `to` 值。名單僅在 subagent 的工具包括 `SendMessage` 且至少有一個其他 agent 有名稱時出現,無論是 Claude 在產生時為它命名,還是它作為 [agent team](/docs/zh-TW/agent-teams) 隊員執行。它是在 subagent 啟動時拍攝的快照,所以稍後命名的 agents 不會出現。

1154 1158 

1155若要啟動您自己的 subagents 而不載入使用者、專案和本地 CLAUDE.md 檔案,請在其 frontmatter 或 `--agents` JSON 中設定 [`omitClaudeMd: true`](#supported-frontmatter-fields)。1159若要啟動您自己的 subagents 而不載入使用者、專案和本地 CLAUDE.md 檔案,請在其 frontmatter 或 `--agents` JSON 中設定 [`omitClaudeMd: true`](#supported-frontmatter-fields)。對於 Explore、Plan 和設定了 `omitClaudeMd` 的 subagents,當 subagent 處理某個子目錄中的檔案時,該子目錄的 `CLAUDE.md` 和相符的 [路徑範圍規則](/docs/zh-TW/memory#path-specific-rules) 仍會 [載入](/docs/zh-TW/memory#how-claude-md-files-load)。

1156 1160 

1157主要對話在讀取這些 subagents 的結果時仍然擁有您的完整 CLAUDE.md,所以大多數規則不需要傳達到 subagent 本身。如果某條規則必須傳達,例如「忽略 `vendor/` 目錄」,請在您委派時給 Claude 的提示詞中重新陳述它。1161主要對話在讀取這些 subagents 的結果時仍然擁有您的完整 CLAUDE.md,所以大多數規則不需要傳達到 subagent 本身。如果某條規則必須傳達,例如「忽略 `vendor/` 目錄」,請在您委派時給 Claude 的提示詞中重新陳述它。

1158 1162 


1196 1200 

1197當 [該 subagent 的列仍在 subagent 面板中](#run-subagents-in-foreground-or-background) 時,在其逐字稿中輸入以自己恢復它。之後,來自 Claude 的訊息可以再次自動恢復它。1201當 [該 subagent 的列仍在 subagent 面板中](#run-subagents-in-foreground-or-background) 時,在其逐字稿中輸入以自己恢復它。之後,來自 Claude 的訊息可以再次自動恢復它。

1198 1202 

1199恢復會在相同 ID 下啟動 agent 的新執行,所以已經失敗或完成的 subagent 在任務列表和 Agent SDK 的任務事件中再次顯示為執行中。在 v2.1.205 之前,它在恢復的執行工作時保持顯示其較早的失敗或完成狀態。1203恢復會在相同 ID 下啟動 agent 的新執行,所以已經失敗或完成的 subagent 在任務列表和 Agent SDK 的任務事件中再次顯示為執行中。

1200 1204 

1201`SendMessage` 會檢查名稱是否仍然指向它在對話中較早時到達的同一 agent。如果較新的 agent 已取得該名稱,例如重新產生的背景 agent 重複使用了它,Claude Code 會拒絕發送,而不是將其傳遞給錯誤的 agent,錯誤會報告該名稱現在到達的 agent,以便 Claude 可以重新指定目標。若要在較早的 agent 仍在執行時到達它,Claude 會透過產生該 agent 時收到的 agent ID 來定址它。檢查的範圍是目前對話,並在 `/clear` 時重置。1205`SendMessage` 會檢查名稱是否仍然指向它在對話中較早時到達的同一 agent。如果較新的 agent 已取得該名稱,例如重新產生的背景 agent 重複使用了它,Claude Code 會拒絕發送,而不是將其傳遞給錯誤的 agent,錯誤會報告該名稱現在到達的 agent,以便 Claude 可以重新指定目標。若要在較早的 agent 仍在執行時到達它,Claude 會透過產生該 agent 時收到的 agent ID 來定址它。檢查的範圍是目前對話,並在 `/clear` 時重置。

1202 1206 


1214 自動壓縮1218 自動壓縮

1215</h4>1219</h4>

1216 1220 

1217Subagents 支援使用與主要對話相同的邏輯進行自動壓縮。壓縮在相同條件下觸發,`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 也適用於 subagents。請參閱 [環境變數](/docs/zh-TW/env-vars) 以了解覆寫何時生效。1221Subagents 支援自動壓縮。壓縮會在 subagent 自己的上下文視窗填滿時觸發,`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 也適用於 subagents。請參閱 [環境變數](/docs/zh-TW/env-vars) 以了解覆寫何時生效。

1218 1222 

1219壓縮事件記錄在 subagent 逐字稿檔案中:1223壓縮事件記錄在 subagent 逐字稿檔案中:

1220 1224 


1231 1235 

1232`preTokens` 值顯示壓縮發生前使用了多少個 tokens。1236`preTokens` 值顯示壓縮發生前使用了多少個 tokens。

1233 1237 

1238<a id="subagent-auto-compact-window" />

1239 

1240<h5 id="set-the-auto-compact-window-for-one-subagent">

1241 為單一 subagent 設定自動壓縮視窗

1242</h5>

1243 

1244若要讓某個 subagent 比原本更早壓縮,請在其 [frontmatter](#supported-frontmatter-fields) 中將 `autoCompactWindow` 設定為介於 `100000` 到 `1000000` 之間的 token 數。如果您將 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/zh-TW/env-vars#variables) 設定為正整數,subagent 會改用該變數的視窗,此欄位不會生效。需要 Claude Code v2.1.296 或更新版本。

1245 

1246以下 frontmatter 為讀取長日誌檔案的 subagent 將 `autoCompactWindow` 設定為 200,000 個 tokens:

1247 

1248```yaml theme={null}

1249---

1250name: log-reader

1251description: Reads long log files and reports the errors it finds

1252autoCompactWindow: 200000

1253---

1254```

1255 

1256請將值寫成純整數,例如 `200000`,因為在 frontmatter 中 Claude Code 會將 `200k` 讀取為 200,這超出了允許的範圍。subagent 仍會載入,並像該欄位不存在一樣進行壓縮。若要檢查 Claude Code 是否忽略了您的值,請在 shell 中執行 `claude --debug`,並在 [偵錯日誌](#supported-frontmatter-fields) 中搜尋 `invalid autoCompactWindow`。

1257 

1258如果值在範圍內但您仍未看到任何變化,請檢查以下原因:

1259 

1260* **該值未低於 subagent 原本會繼承的 [自動壓縮視窗](/docs/zh-TW/model-config#context-window-and-auto-compaction)**:若要更早壓縮,請設定低於該視窗的值。

1261* **您使用 `--agent` 或 `agent` 設定以此 subagent 的身分執行整個工作階段**:此欄位在該情況下不會生效。若要設定工作階段的視窗,請參閱 [設定自動壓縮視窗](/docs/zh-TW/model-config#set-the-auto-compact-window)。

1262 

1234<h2 id="fork-the-current-conversation">1263<h2 id="fork-the-current-conversation">

1235 Fork 目前的對話1264 Fork 目前的對話

1236</h2>1265</h2>

Details

44| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |44| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |

45| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出[例行程序](/docs/zh-TW/routines)。支援 `/schedule` 命令。[`RemoteTrigger` 輸入參考](/docs/zh-TW/agent-sdk/typescript#remotetrigger)記錄每個動作和移除工具的組織政策。例行程序位於 claude.ai 上並需要 Pro、Max、Team 或 Enterprise 方案,因此此工具無法從 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |45| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出[例行程序](/docs/zh-TW/routines)。支援 `/schedule` 命令。[`RemoteTrigger` 輸入參考](/docs/zh-TW/agent-sdk/typescript#remotetrigger)記錄每個動作和移除工具的組織政策。例行程序位於 claude.ai 上並需要 Pro、Max、Team 或 Enterprise 方案,因此此工具無法從 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |

46| `ReportFindings` | 將程式碼審查發現報告為結構化清單,每個發現都有檔案、摘要和失敗情景,以便 Claude Code 可以呈現它們而不是將其列印為文字。當有效的程式碼審查指示要求時,Claude 會呼叫它。發現也可以帶有選用的 `category` slug,例如 `correctness` 或 `test-coverage`,顯示在呈現清單中的檔案位置旁邊 | 否 |46| `ReportFindings` | 將程式碼審查發現報告為結構化清單,每個發現都有檔案、摘要和失敗情景,以便 Claude Code 可以呈現它們而不是將其列印為文字。當有效的程式碼審查指示要求時,Claude 會呼叫它。發現也可以帶有選用的 `category` slug,例如 `correctness` 或 `test-coverage`,顯示在呈現清單中的檔案位置旁邊 | 否 |

47| `ScheduleWakeup` | 重新排程[自我調整 `/loop`](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代結束時呼叫此項以選擇下一次執行的時間,介於一分鐘到一小時之間;您不直接呼叫它。若要改為結束迴圈,Claude 使用 `stop: true` 呼叫它,這會取消待處理的喚醒。`stop` 欄位需要 Claude Code v2.1.202 或更新版本。待處理的喚醒出現在[停止 hook 輸入](/docs/zh-TW/hooks#stop-input)中的 `session_crons` 中 | 否 |47| `ScheduleWakeup` | 重新排程[自我調整 `/loop`](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 的下一次迭代。Claude 在每次迭代結束時呼叫此工具以選擇下一次執行的時間,介於一分鐘到一小時之間;您不直接呼叫它。若要改為結束迴圈,Claude 使用 `stop: true` 呼叫它,這會取消待處理的喚醒。待處理的喚醒出現在 [Stop hook 輸入](/docs/zh-TW/hooks#stop-input)中的 `session_crons` 中 | 否 |

48| `SendFeedback` | 起草關於 Claude Code 的回饋報告,涵蓋產品問題或 Claude 在工作階段中的自身行為,並在您的機器上排隊供您審查。Claude Code 在您選擇傳送草稿之前不會傳送任何內容。請參閱 [SendFeedback 工具行為](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更新版本 | 否 |48| `SendFeedback` | 起草關於 Claude Code 的回饋報告,涵蓋產品問題或 Claude 在工作階段中的自身行為,並在您的機器上排隊供您審查。Claude Code 在您選擇傳送草稿之前不會傳送任何內容。請參閱 [SendFeedback 工具行為](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更新版本 | 否 |

49| `SendMessage` | 傳送訊息給另一個代理:[代理團隊](/docs/zh-TW/agent-teams)隊友、[它按代理 ID 或名稱復原的子代理](/docs/zh-TW/sub-agents#resume-subagents),或 您的其他 Claude Code 工作階段之一,在此機器上或超越它。傳訊其他工作階段需要 Claude Code v2.1.224 或更新版本。[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging)涵蓋 Claude 可以到達的工作階段、[訊息到達時的樣子](/docs/zh-TW/cross-session-messaging#what-a-message-looks-like)以及 [Claude 如何在另一個工作階段閒置時收到通知](/docs/zh-TW/cross-session-messaging#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可選的 `summary` 輸入,通常 5-10 個字,Claude Code 顯示為單行預覽。當 Claude 在[純文字訊息](/docs/zh-TW/cross-session-messaging#limitations)上省略它時,Claude Code 使用訊息的第一行作為摘要。Claude Code 使用省略號截斷超過 200 個字元的摘要 | 否 |49| `SendMessage` | 傳送訊息給另一個代理:[代理團隊](/docs/zh-TW/agent-teams)隊友、[它按代理 ID 或名稱復原的子代理](/docs/zh-TW/sub-agents#resume-subagents),或 您的其他 Claude Code 工作階段之一,在此機器上或超越它。傳訊其他工作階段需要 Claude Code v2.1.224 或更新版本。[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging)涵蓋 Claude 可以到達的工作階段、[訊息到達時的樣子](/docs/zh-TW/cross-session-messaging#what-a-message-looks-like)以及 [Claude 如何在另一個工作階段閒置時收到通知](/docs/zh-TW/cross-session-messaging#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可選的 `summary` 輸入,通常 5-10 個字,Claude Code 顯示為單行預覽。當 Claude 在[純文字訊息](/docs/zh-TW/cross-session-messaging#limitations)上省略它時,Claude Code 使用訊息的第一行作為摘要。Claude Code 使用省略號截斷超過 200 個字元的摘要 | 否 |

50| `SendUserFile` | 從工作階段傳送檔案給您,帶有選用的說明文字,以便生成的報告、圖表、螢幕擷取畫面或建置產物到達您的裝置,而不是僅在逐字稿中提及。選用的 `display` 輸入控制呈現方式:`render` 在用戶端中內嵌開啟檔案,`attach` 僅顯示下載卡,未設定時由用戶端根據檔案型別決定。當 [Remote Control](/docs/zh-TW/remote-control) 用戶端連接或在[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中時可用。傳遞透過 Anthropic 託管的基礎設施執行,因此該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |50| `SendUserFile` | 從工作階段傳送檔案給您,帶有選用的說明文字,以便生成的報告、圖表、螢幕擷取畫面或建置產物到達您的裝置,而不是僅在逐字稿中提及。選用的 `display` 輸入控制呈現方式:`render` 在用戶端中內嵌開啟檔案,`attach` 僅顯示下載卡,未設定時由用戶端根據檔案型別決定。當 [Remote Control](/docs/zh-TW/remote-control) 用戶端連接或在[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中時可用。傳遞透過 Anthropic 託管的基礎設施執行,因此該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |


54| `TaskCreate` | 在任務清單中建立新任務。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |54| `TaskCreate` | 在任務清單中建立新任務。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |

55| `TaskGet` | 檢索特定任務的完整詳細資訊。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |55| `TaskGet` | 檢索特定任務的完整詳細資訊。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |

56| `TaskList` | 列出所有任務及其目前狀態。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |56| `TaskList` | 列出所有任務及其目前狀態。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |

57| `TaskOutput` | 檢索來自背景任務的輸出。已棄用,改為在任務的輸出檔案路徑上使用 `Read`。當沒有任務符合 ID 時,錯誤會列出執行中的背景代理(按 ID 和說明)。在 v2.1.203 之前,錯誤僅命名遺失的 ID | 否 |57| `TaskOutput` | 已在 v2.1.277 中移除。先前用於檢索背景任務的輸出;Claude 現在改用 `Read` 讀取背景任務的[輸出檔案](/docs/zh-TW/interactive-mode#how-backgrounding-works) | 否 |

58| `TaskStop` | 按 ID 停止執行中的背景任務。它也接受 [agent team 隊友](/docs/zh-TW/agent-teams)或按 agent ID 或名稱指定的具名背景 agent。當沒有任務符合 ID 時,錯誤會列出執行中的背景 agent(按 ID 和說明),包括另一個 agent 生成的 agent。在 v2.1.203 之前,錯誤列出執行中的隊友和具名 agent,但不列出另一個 agent 生成的背景 agent,因此無法從主對話中識別或停止它們 | 否 |58| `TaskStop` | 按 ID 停止執行中的背景任務。它也接受 [agent team 隊友](/docs/zh-TW/agent-teams)或按 agent ID 或名稱指定的具名背景 agent。當沒有任務符合 ID 時,錯誤會列出執行中的背景 agent(按 ID 和說明),包括另一個 agent 生成的 agent | 否 |

59| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |59| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務。預設情況下僅在[任務工具可用性](#task-tool-availability)下列出的模型上提供,在其他模型上當您選擇加入時提供 | 否 |

60| `TodoWrite` | 管理工作階段任務檢查清單。預設情況下禁用,改為使用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以在[具有任務追蹤工具的工作階段](#task-tool-availability)中重新啟用它 | 否 |60| `TodoWrite` | 管理工作階段任務檢查清單。預設情況下禁用,改為使用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以在[具有任務追蹤工具的工作階段](#task-tool-availability)中重新啟用它 | 否 |

61| `ToolSearch` | 當[工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)啟用時,搜尋並載入延遲工具 | 否 |61| `ToolSearch` | 當[工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)啟用時,搜尋並載入延遲工具 | 否 |

ultrareview.md +2 −2

Details

149 追蹤執行中的審查149 追蹤執行中的審查

150</h2>150</h2>

151 151 

152審查通常需要 5 到 10 分鐘。審查作為背景任務執行,因此您可以繼續在工作階段中工作或啟動其他命令。如果您選擇[將發現結果發佈到 pull request](#post-findings-to-the-pull-request),請保持工作階段開啟,直到審查完成;如果工作階段先結束,Claude Code 將不會發佈任何內容。152審查通常需要 15 到 25 分鐘。審查作為背景任務執行,因此您可以繼續在工作階段中工作或啟動其他命令。如果您選擇[將發現結果發佈到 pull request](#post-findings-to-the-pull-request),請保持工作階段開啟,直到審查完成;如果工作階段先結束,Claude Code 將不會發佈任何內容。

153 153 

154使用 `/tasks` 查看執行中和已完成的審查、開啟審查的詳細檢視,或停止進行中的審查。如果您停止審查,Claude Code 會封存雲端工作階段,且不會返回部分發現。154使用 `/tasks` 查看執行中和已完成的審查、開啟審查的詳細檢視,或停止進行中的審查。如果您停止審查,Claude Code 會封存雲端工作階段,且不會返回部分發現。

155 155 


216| 目標 | 您的工作差異、拉取請求、分支或路徑 | 您的工作差異或拉取請求 |216| 目標 | 您的工作差異、拉取請求、分支或路徑 | 您的工作差異或拉取請求 |

217| 執行位置 | 在您的工作階段中本地執行 | 在雲端沙箱中遠端執行 |217| 執行位置 | 在您的工作階段中本地執行 | 在雲端沙箱中遠端執行 |

218| 深度 | 隨著努力引數調整 | 具有獨立驗證的多代理程式艦隊 |218| 深度 | 隨著努力引數調整 | 具有獨立驗證的多代理程式艦隊 |

219| 持續時間 | 幾秒到幾分鐘 | 大約 5 到 10 分鐘 |219| 持續時間 | 幾秒到幾分鐘 | 大約 15 到 25 分鐘 |

220| 成本 | 計入正常使用量 | 免費執行次數,然後大約 $5 至 $25 每次審查作為使用額度 |220| 成本 | 計入正常使用量 | 免費執行次數,然後大約 $5 至 $25 每次審查作為使用額度 |

221| 最適合 | 迭代時的快速反饋 | 合併前對實質性變更的信心 |221| 最適合 | 迭代時的快速反饋 | 合併前對實質性變更的信心 |

222 222 

Details

146 146 

147<Steps>147<Steps>

148 <Step title="選擇儲存庫和分支">148 <Step title="選擇儲存庫和分支">

149 從 [claude.ai/code](https://claude.ai/code) 或 Claude 行動應用程式中的 Code 標籤,點擊輸入框下方的儲存庫選擇器,並為 Claude 選擇要在其中工作的儲存庫。每個儲存庫都顯示一個分支選擇器。將其更改為從功能分支而不是預設分支啟動 Claude。您可以新增多個儲存庫以在一個工作階段中跨它們工作。149 從 [claude.ai/code](https://claude.ai/code) 或 Claude 行動應用程式中的 Code 標籤,點擊輸入框下方的儲存庫選擇器,並為 Claude 選擇要在其中工作的儲存庫。您可以新增多個儲存庫以在一個工作階段中跨它們工作。

150 

151 在 claude.ai/code 中,若要從功能分支而不是預設分支啟動 Claude,請在儲存庫選擇器後方的控制項中更改分支。

150 </Step>152 </Step>

151 153 

152 <Step title="選擇權限模式">154 <Step title="選擇權限模式">

workflows.md +4 −4

Details

99| :- | :- |99| :- | :- |

100| `↑` / `↓` | 選擇階段或代理 |100| `↑` / `↓` | 選擇階段或代理 |

101| `Enter` 或 `→` | 深入選定的階段,然後進入代理的詳細資訊。在詳細資訊中,`Enter` 展開或摺疊它 |101| `Enter` 或 `→` | 深入選定的階段,然後進入代理的詳細資訊。在詳細資訊中,`Enter` 展開或摺疊它 |

102| `Esc` 或 `←` | 返回一個級別。在 v2.1.203 至 v2.1.205 中,`←` 未步出階段或代理;在這些版本上使用 `Esc` |102| `Esc` 或 `←` | 返回一個級別 |

103| `j` / `k` | 當代理詳細資訊溢出時在其中捲動 |103| `j` / `k` | 當代理詳細資訊溢出時在其中捲動 |

104| `f` | 按狀態篩選選定階段中的代理清單。再次按以循環 |104| `f` | 按狀態篩選選定階段中的代理清單。再次按以循環 |

105| `p` | 暫停或恢復執行 |105| `p` | 暫停或恢復執行 |


167/effort ultracode167/effort ultracode

168```168```

169 169 

170若要在已啟用 ultracode 的情況下啟動工作階段,請使用 `claude --effort ultracode` 啟動,這也會將努力程度設定為 `xhigh`。需要 Claude Code v2.1.203 或更新版本。170若要在已啟用 ultracode 的情況下啟動工作階段,請使用 `claude --effort ultracode` 啟動,這也會將 effort 等級設定為 `xhigh`。

171 171 

172若要從 `/effort` 滑塊啟用它,請按 `Tab` 翻轉 **Ultracode** 切換,然後按 `Enter` 套用。[調整努力程度](/docs/zh-TW/model-config#adjust-effort-level)列出了啟用 ultracode 的路由。172若要從 `/effort` 滑塊啟用它,請按 `Tab` 翻轉 **Ultracode** 切換,然後按 `Enter` 套用。[調整努力程度](/docs/zh-TW/model-config#adjust-effort-level)列出了啟用 ultracode 的路由。

173 173 


175 175 

176啟用 ultracode 已經讓您選擇加入大型執行,因此在啟用時這些檢查不適用:176啟用 ultracode 已經讓您選擇加入大型執行,因此在啟用時這些檢查不適用:

177 177 

178* [「大型工作流程」警告](#cost)不會出現在工作流程執行上178* [`Large workflow` 警告](#cost)不會出現在工作流程執行上

179* 工作階段的[並行子代理程式限制](/docs/zh-TW/sub-agents#concurrent-subagent-limit)不會對 Claude 使用代理程式工具產生的子代理程式強制執行179* 工作階段的[並行子代理程式限制](/docs/zh-TW/sub-agents#concurrent-subagent-limit)不會對 Claude 使用代理程式工具產生的子代理程式強制執行

180* 在自動權限模式中,您不會被要求[批准第一個工作流程啟動](#approve-the-plan-before-it-runs)180* 在自動權限模式中,您不會被要求[批准第一個工作流程啟動](#approve-the-plan-before-it-runs)

181 181 


527 設定大小指南527 設定大小指南

528</h3>528</h3>

529 529 

530大小指南告訴 Claude 在編寫動態工作流程時應該針對多少個代理。Claude Code 將指南作為建議而不是上限發送給 Claude,因此呼叫不同規模的提示仍會覆蓋它。需要 Claude Code v2.1.202 或更新版本。530大小指南告訴 Claude 在編寫動態工作流程時應該針對多少個 agent。Claude Code 將指南作為建議而不是上限發送給 Claude,因此要求不同規模的提示詞仍會覆寫它。

531 531 

532每個值對應一個代理計數:532每個值對應一個代理計數:

533 533