SpyBara
Go Premium

Documentation 2026-10-09 23:02 UTC to 2026-10-10 22:01 UTC

69 files changed +1,188 −375. View all changes and history on the product overview
2026
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

187 187 

188Claude 根據任務決定呼叫哪些工具,但您控制這些呼叫是否允許執行。您可以自動批准特定工具、完全阻止其他工具,或要求對所有工具進行批准。三個選項一起工作以確定運行的內容:188Claude 根據任務決定呼叫哪些工具,但您控制這些呼叫是否允許執行。您可以自動批准特定工具、完全阻止其他工具,或要求對所有工具進行批准。三個選項一起工作以確定運行的內容:

189 189 

190* **`allowed_tools` / `allowedTools`** 自動批准列出的工具。具有 `["Read", "Glob", "Grep"]` 在其允許工具清單中的唯讀代理程式會執行這些工具而不提示。未列出的工具仍然可用,對它們的呼叫需要批准會根據權限模式和 `canUseTool` 進行處理。190* **`allowed_tools` / `allowedTools`** 自動核准列出的工具。允許工具清單中包含 `["Read", "Glob", "Grep"]` 的唯讀 agent 會執行這些工具而不提示,但從[網路路徑](/docs/zh-TW/permissions#network-paths)進行的讀取除外。未列出的工具仍然可用,對它們的呼叫若需要核准,會交由權限模式和 `canUseTool` 處理。

191* **`disallowed_tools` / `disallowedTools`** 阻止列出的工具,無論其他設定如何。請參閱 [權限](/docs/zh-TW/agent-sdk/permissions) 以了解在工具執行前檢查規則的順序。191* **`disallowed_tools` / `disallowedTools`** 阻止列出的工具,無論其他設定如何。請參閱 [權限](/docs/zh-TW/agent-sdk/permissions) 以了解在工具執行前檢查規則的順序。

192* **`permission_mode` / `permissionMode`** 控制您想要多少人工監督。SDK 根據固定順序評估活動模式以及您的允許和拒絕規則,詳見[權限如何被評估](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated)。請參閱[權限模式](#permission-mode)以了解可用的模式。192* **`permission_mode` / `permissionMode`** 控制您想要多少人工監督。SDK 根據固定順序評估活動模式以及您的允許和拒絕規則,詳見[權限如何被評估](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated)。請參閱[權限模式](#permission-mode)以了解可用的模式。

193 193 


263| `"default"` | 需要批准且不受允許規則涵蓋的工具呼叫會觸發您的 `canUseTool` 回呼;沒有回呼意味著拒絕 | 具有自訂批准回呼的互動式應用程式 |263| `"default"` | 需要批准且不受允許規則涵蓋的工具呼叫會觸發您的 `canUseTool` 回呼;沒有回呼意味著拒絕 | 具有自訂批准回呼的互動式應用程式 |

264| `"acceptEdits"` | 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循預設規則 | 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時 |264| `"acceptEdits"` | 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循預設規則 | 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時 |

265| `"plan"` | Claude 探索並規劃而不編輯您的原始檔案;檔案編輯永遠不會自動批准,並透過您的 `canUseTool` 回呼提示 | 您想要 Claude 提出變更而不執行它們,例如在程式碼審查期間或當您需要在進行變更前批准它們時 |265| `"plan"` | Claude 探索並規劃而不編輯您的原始檔案;檔案編輯永遠不會自動批准,並透過您的 `canUseTool` 回呼提示 | 您想要 Claude 提出變更而不執行它們,例如在程式碼審查期間或當您需要在進行變更前批准它們時 |

266| `"dontAsk"` | 永不提示。由 [權限規則](/docs/zh-TW/settings-reference#permission-settings) 預先批准的工具執行,以及在 `default` 模式中不需要批准的呼叫(例如在您的工作目錄內的檔案讀取);所有其他會提示的呼叫都被拒絕。`AskUserQuestion`、連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 和標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使您已允許它們也會被拒絕 | 您想要為無頭代理程式提供固定、明確的工具表面,並偏好硬拒絕而不是無聲依賴 `canUseTool` 不存在 |266| `"dontAsk"` | 永不提示。由 [權限規則](/docs/zh-TW/settings-reference#permission-settings) 預先核准的工具會執行,在 `default` 模式中不需要核准的呼叫(例如在您的工作目錄內的檔案讀取)也會執行;所有其他會提示的呼叫都被拒絕。`AskUserQuestion`、[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,以及 [從網路路徑讀取](/docs/zh-TW/permissions#network-paths) 即使您已允許它們也會被拒絕 | 您想要為無頭 agent 提供固定、明確的工具範圍,並偏好硬拒絕而不是無聲依賴 `canUseTool` 不存在 |

267| `"auto"` | 使用模型分類器來審查殼層命令和網路請求等操作,允許或阻止它審查的每一個。請參閱 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性和決策順序 | 仍然想要工具使用安全防護的自主代理程式 |267| `"auto"` | 使用模型分類器來審查殼層命令和網路請求等操作,允許或阻止它審查的每一個。請參閱 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性和決策順序 | 仍然想要工具使用安全防護的自主代理程式 |

268| `"bypassPermissions"` | 執行所有允許的工具而不詢問,除了由明確的 [`ask` 規則](/docs/zh-TW/settings-reference#permission-settings) 符合的工具、連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 和需要使用者互動的工具。[跨工作階段訊息安全防護](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 仍然適用。請參閱 [權限如何被評估](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated) 以了解優先順序順序。在 TypeScript SDK 中,也需要在 `options` 中設定 `allowDangerouslySkipPermissions: true`。在 Unix 上以 root 身份執行時無法使用。僅在隔離環境中使用,其中代理程式的操作無法影響您關心的系統 | CI、容器或其他隔離環境 |268| `"bypassPermissions"` | 執行所有允許的工具而不詢問,除了由明確的 [`ask` 規則](/docs/zh-TW/settings-reference#permission-settings) 符合的工具、連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 和需要使用者互動的工具。[跨工作階段訊息安全防護](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 仍然適用。請參閱 [權限如何被評估](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated) 以了解優先順序順序。在 TypeScript SDK 中,也需要在 `options` 中設定 `allowDangerouslySkipPermissions: true`。在 Unix 上以 root 身份執行時無法使用。僅在隔離環境中使用,其中代理程式的操作無法影響您關心的系統 | CI、容器或其他隔離環境 |

269 269 

Details

424 自動批准特定工具424 自動批准特定工具

425</h3>425</h3>

426 426 

427預設情況下,代理可能在使用某些工具前提示權限。此範例通過返回 `permissionDecision: 'allow'` 自動批准唯讀檔案系統工具(Read、Glob、Grep),讓它們無需使用者確認即可執行,同時讓所有其他工具受到正常權限檢查:427預設情況下,agent 可能在使用某些工具前提示權限。此範例透過返回 `permissionDecision: 'allow'` 自動批准唯讀檔案系統工具(Read、Glob、Grep),讓它們無需使用者確認即可執行(從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取除外),同時讓所有其他工具受到正常權限檢查:

428 428 

429<CodeGroup>429<CodeGroup>

430 ```python Python theme={null}430 ```python Python theme={null}


707 707 

708 708 

709 def _send_slack_notification(message):709 def _send_slack_notification(message):

710 """同步幫助程式,通過傳入 webhook 將訊息傳送到 Slack。"""710 """同步幫助程式,透過傳入 webhook 將訊息傳送到 Slack。"""

711 data = json.dumps({"text": f"Agent status: {message}"}).encode()711 data = json.dumps({"text": f"Agent status: {message}"}).encode()

712 req = urllib.request.Request(712 req = urllib.request.Request(

713 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",713 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",


720 720 

721 async def notification_handler(input_data, tool_use_id, context):721 async def notification_handler(input_data, tool_use_id, context):

722 try:722 try:

723 # 在執行緒中執行阻止 HTTP 呼叫以避免阻止事件迴圈723 # 在執行緒中執行阻塞式 HTTP 呼叫以避免阻塞事件迴圈

724 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))724 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

725 except Exception as e:725 except Exception as e:

726 print(f"Failed to send notification: {e}")726 print(f"Failed to send notification: {e}")

727 727 

728 # 返回空物件。通知 hooks 不修改代理行為728 # 返回空物件。Notification hook 不修改 agent 行為

729 return {}729 return {}

730 730 

731 731 

732 async def main():732 async def main():

733 options = ClaudeAgentOptions(733 options = ClaudeAgentOptions(

734 hooks={734 hooks={

735 # 為通知事件註冊 hook(不需要匹配器)735 # 為 Notification 事件註冊 hook(不需要 matcher)

736 "Notification": [HookMatcher(hooks=[notification_handler])],736 "Notification": [HookMatcher(hooks=[notification_handler])],

737 },737 },

738 )738 )

Details

43 <Step title="允許規則">43 <Step title="允許規則">

44 檢查 `allow` 規則(來自 `allowed_tools` 和 settings.json)。如果規則匹配,工具會被批准。工具自行批准的呼叫也會在此步驟解決,無需規則:例如在您的工作目錄內的檔案讀取或 [唯讀 Bash 命令](/docs/zh-TW/permissions#read-only-commands)。44 檢查 `allow` 規則(來自 `allowed_tools` 和 settings.json)。如果規則匹配,工具會被批准。工具自行批准的呼叫也會在此步驟解決,無需規則:例如在您的工作目錄內的檔案讀取或 [唯讀 Bash 命令](/docs/zh-TW/permissions#read-only-commands)。

45 45 

46 針對 [關鍵路徑](/docs/zh-TW/permission-modes#critical-paths) 的 `rm` 和 `rmdir` 移除永遠不會被 allow 規則批准。它們是否隨後到達您的回呼取決於權限模式:例如在 `auto` 模式的 Agent SDK 工作階段中,Claude Code 預設會拒絕它們而不呼叫它。[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths) 模式表列出了每個模式對它們的處理方式。46 針對 [關鍵路徑](/docs/zh-TW/permission-modes#critical-paths) 的 `rm` 和 `rmdir` 移除永遠不會被 allow 規則核准。它們是否隨後到達您的回呼取決於權限模式:例如在 `auto` 模式的 Agent SDK 工作階段中,Claude Code 預設會拒絕它們而不呼叫它。[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths) 模式表列出了每個模式對它們的處理方式。

47 

48 Allow 規則不會核准從 [網路路徑](/docs/zh-TW/permissions#network-paths) 進行的讀取。

47 </Step>49 </Step>

48 50 

49 <Step title="canUseTool 回呼">51 <Step title="canUseTool 回呼">


60如果您在 TypeScript SDK 期望評估順序在諮詢回呼之前自動批准呼叫的設定中傳遞 `canUseTool` 回呼,SDK 會在構造查詢時發出一次 Node.js 程序警告。警告的代碼是 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`。兩個設定會觸發它:62如果您在 TypeScript SDK 期望評估順序在諮詢回呼之前自動批准呼叫的設定中傳遞 `canUseTool` 回呼,SDK 會在構造查詢時發出一次 Node.js 程序警告。警告的代碼是 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`。兩個設定會觸發它:

61 63 

62* `permissionMode: 'bypassPermissions'`,它自動批准到達權限模式步驟的每個呼叫,除了 [任何模式都不自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)64* `permissionMode: 'bypassPermissions'`,它自動批准到達權限模式步驟的每個呼叫,除了 [任何模式都不自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)

63* 每個裸 `allowedTools` 條目,例如 `"Read"`,它在諮詢回呼之前自動批准整個工具,除了 [任何模式都不自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)65* 每個裸 `allowedTools` 條目,例如 `"Read"`,它在諮詢回呼之前自動核准整個工具,除了 [任何模式都不自動核准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves) 和 [從網路路徑進行的讀取](/docs/zh-TW/permissions#network-paths)

64 66 

65具有指定符的條目(如 `Bash(ls *)`)和 `acceptEdits` 模式不會觸發它,來自設定檔的 allow 規則對檢查不可見。67具有指定符的條目(如 `Bash(ls *)`)和 `acceptEdits` 模式不會觸發它,來自設定檔的 allow 規則對檢查不可見。

66 68 


79 81 

80| 選項 | 效果 |82| 選項 | 效果 |

81| :- | :- |83| :- | :- |

82| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動批准。此處未列出的其他工具仍然存在,對它們進行的需要批准的呼叫會進入權限模式和 `canUseTool`。 |84| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動核准,但[從網路路徑讀取](/docs/zh-TW/permissions#network-paths)除外。此處未列出的其他工具仍然存在,對它們進行的需要核准的呼叫會進入權限模式和 `canUseTool`。 |

83| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |85| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |

84| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` [如所寫](/docs/zh-TW/permissions#bash-rule-limits)的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫(包括 `/bin/rm`)會進入權限模式。 |86| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` [如所寫](/docs/zh-TW/permissions#bash-rule-limits)的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫(包括 `/bin/rm`)會進入權限模式。 |

85| `disallowed_tools=["*"]` | 每個工具定義都會從請求中移除。拒絕規則支援工具名稱萬用字元:`"*"` 符合每個工具,`"mcp__*"` 符合所有伺服器上的每個 MCP 工具。 |87| `disallowed_tools=["*"]` | 每個工具定義都會從請求中移除。拒絕規則支援工具名稱萬用字元:`"*"` 符合每個工具,`"mcp__*"` 符合所有伺服器上的每個 MCP 工具。 |


95 97 

96 允許規則永遠不會自動批准 `AskUserQuestion`、標記為 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、連接器工具[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools),或 `rm` 和 `rmdir` 移除針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的移除。在 `dontAsk` 模式中,Claude Code 會拒絕這些呼叫而不呼叫回呼。在其他模式中,前三個會到達回呼。根據[權限模式](/docs/zh-TW/permission-modes#critical-paths),關鍵路徑移除會到達回呼,或 Claude Code 會拒絕它而不呼叫它,就像預設情況下對 Agent SDK 工作階段在 `auto` 模式中所做的那樣。98 允許規則永遠不會自動批准 `AskUserQuestion`、標記為 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、連接器工具[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools),或 `rm` 和 `rmdir` 移除針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的移除。在 `dontAsk` 模式中,Claude Code 會拒絕這些呼叫而不呼叫回呼。在其他模式中,前三個會到達回呼。根據[權限模式](/docs/zh-TW/permission-modes#critical-paths),關鍵路徑移除會到達回呼,或 Claude Code 會拒絕它而不呼叫它,就像預設情況下對 Agent SDK 工作階段在 `auto` 模式中所做的那樣。

97 99 

98 涵蓋範圍取決於項目的形式:像 `Read` 或 `mcp__github__get_issue` 這樣的裸名稱會自動批准對該工具的每個呼叫,除了上述例外情況,而像 `Bash(npm test *)` 這樣的限定規則只會自動批准符合的呼叫,其他需要批准的 `Bash` 呼叫仍會進入回呼。對於必須在每個工具呼叫上執行的檢查,請使用 [`PreToolUse` hook](/docs/zh-TW/agent-sdk/hooks):hook 在每個其他步驟之前執行,hook 拒絕即使在 `bypassPermissions` 模式中也適用。100 涵蓋範圍取決於項目的形式:像 `Read` 或 `mcp__github__get_issue` 這樣的裸名稱會自動核准對該工具的每個呼叫,除了上述例外情況和[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),而像 `Bash(npm test *)` 這樣的限定規則只會自動核准符合的呼叫,其他需要核准的 `Bash` 呼叫仍會進入回呼。對於必須在每個工具呼叫上執行的檢查,請使用 [`PreToolUse` hook](/docs/zh-TW/agent-sdk/hooks):hook 在每個其他步驟之前執行,hook 拒絕即使在 `bypassPermissions` 模式中也適用。

99</Warning>101</Warning>

100 102 

101對於鎖定的代理,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對:103對於鎖定的代理,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對:


107};109};

108```110```

109 111 

110列出的工具會被批准,除了[任何模式都不自動批准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves),以及每個其他會提示的呼叫都會被拒絕。在 `default` 模式中不需要批准的呼叫會執行,無論您是否列出它們,例如[唯讀 Bash 命令](/docs/zh-TW/permissions#read-only-commands)、不在執行前詢問的工具(如 `Agent`),以及工作目錄內的檔案讀取。要將工具完全置於 Claude 的範圍之外,請將其裸名稱新增到 `disallowedTools`。112列出的工具會被核准,但[任何模式都不自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)和[從網路路徑讀取](/docs/zh-TW/permissions#network-paths)除外,而其他每個原本會提示的呼叫則會被拒絕。在 `default` 模式中不需要核准的呼叫無論您是否列出都會執行,例如[唯讀 Bash 命令](/docs/zh-TW/permissions#read-only-commands)、不在執行前詢問的工具(如 `Agent`),以及工作目錄內的檔案讀取。要將工具從請求中完全移除,請將其裸名稱新增到 `disallowedTools`。

111 113 

112<Warning>114<Warning>

113 **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 預先批准您列出的工具。其他未列出的工具不符合任何允許規則,會進入權限模式,其中 `bypassPermissions` 會批准它們。將 `allowed_tools=["Read"]` 與 `permission_mode="bypassPermissions"` 一起設定仍會批准每個工具,包括 `Bash`、`Write` 和 `Edit`。如果您需要 `bypassPermissions` 但想要阻止特定工具,請使用 `disallowed_tools`。115 **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 預先批准您列出的工具。其他未列出的工具不符合任何允許規則,會進入權限模式,其中 `bypassPermissions` 會批准它們。將 `allowed_tools=["Read"]` 與 `permission_mode="bypassPermissions"` 一起設定仍會批准每個工具,包括 `Bash`、`Write` 和 `Edit`。如果您需要 `bypassPermissions` 但想要阻止特定工具,請使用 `disallowed_tools`。


139| 模式 | 說明 | 工具行為 |141| 模式 | 說明 | 工具行為 |

140| :- | :- | :- |142| :- | :- | :- |

141| `default` | 標準權限行為 | 無模式型自動核准;需要核准且不符合任何允許規則的呼叫會觸發您的 `canUseTool` 回呼 |143| `default` | 標準權限行為 | 無模式型自動核准;需要核准且不符合任何允許規則的呼叫會觸發您的 `canUseTool` 回呼 |

142| `dontAsk` | 拒絕而非提示 | 任何原本會提示的呼叫都會被拒絕。由 `allowed_tools` 或規則核准的呼叫會執行,在 `default` 模式中不需要核准的呼叫也會執行;您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具和需要使用者互動的工具會被拒絕,即使您已預先核准它們,針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的 `rm` 和 `rmdir` 移除也會被拒絕。`canUseTool` 永遠不會被呼叫 |144| `dontAsk` | 拒絕而非提示 | 任何原本會提示的呼叫都會被拒絕。由 `allowed_tools` 或規則核准的呼叫會執行,在 `default` 模式中不需要核准的呼叫也會執行;您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具和需要使用者互動的工具會被拒絕,即使您已預先核准它們,[從網路路徑讀取](/docs/zh-TW/permissions#network-paths)以及針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的 `rm` 和 `rmdir` 移除也會被拒絕。`canUseTool` 永遠不會被呼叫 |

143| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和[檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被核准 |145| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和[檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被核准 |

144| `bypassPermissions` | 略過權限檢查 | 工具執行時不會出現權限提示,除了[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。請謹慎使用 |146| `bypassPermissions` | 略過權限檢查 | 工具執行時不會出現權限提示,除了[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。請謹慎使用 |

145| `plan` | 規劃模式 | Claude 在不編輯您的原始檔案的情況下探索和規劃;檔案編輯永遠不會自動被核准,並透過您的 `canUseTool` 回呼提示 |147| `plan` | 規劃模式 | Claude 在不編輯您的原始檔案的情況下探索和規劃;檔案編輯永遠不會自動被核准,並透過您的 `canUseTool` 回呼提示 |


286 不要詢問模式(`dontAsk`)288 不要詢問模式(`dontAsk`)

287</h4>289</h4>

288 290 

289將任何權限提示轉換為拒絕,而不呼叫 `canUseTool`。由 `allowed_tools`、`settings.json` 允許規則或鉤子預先核准的工具會正常執行,在 `default` 模式中不需要核准的呼叫也會執行,例如在您的工作目錄內的檔案讀取和對 `Agent` 的呼叫。您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具,以及針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的 `rm` 和 `rmdir` 移除即使符合允許規則也會被拒絕。`PreToolUse` 鉤子允許也不會清除關鍵路徑移除。291將任何權限提示轉換為拒絕,而不呼叫 `canUseTool`。由 `allowed_tools`、`settings.json` 允許規則或 hook 預先核准的工具會正常執行,在 `default` 模式中不需要核准的呼叫也會執行,例如在您的工作目錄內的檔案讀取和對 `Agent` 的呼叫。您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具、[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),以及針對[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)的 `rm` 和 `rmdir` 移除即使符合允許規則也會被拒絕。`PreToolUse` hook 允許也不會清除關鍵路徑移除或從網路路徑讀取。

290 292 

291**使用時機:** 您想要為無頭代理提供固定、明確的工具表面,並偏好硬拒絕而非無聲依賴 `canUseTool` 不存在。293**使用時機:** 您想要為無頭代理提供固定、明確的工具表面,並偏好硬拒絕而非無聲依賴 `canUseTool` 不存在。

292 294 

Details

518 print(session.summary)518 print(session.summary)

519```519```

520 520 

521<h3 id="fork_session">

522 `fork_session()`

523</h3>

524 

525將工作階段的逐字稿複製到新的工作階段中,讓您可以將對話導向另一個方向,同時原始工作階段保持不變。若要從對話中較早的時間點分支,請傳遞 `up_to_message_id`。同步。

526 

527```python theme={null}

528def fork_session(

529 session_id: str,

530 directory: str | None = None,

531 up_to_message_id: str | None = None,

532 title: str | None = None,

533) -> ForkSessionResult

534```

535 

536<h4 id="parameters-9">

537 參數

538</h4>

539 

540| 參數 | 類型 | 預設 | 描述 |

541| :- | :- | :- | :- |

542| `session_id` | `str` | 必需 | 要分叉的工作階段的 UUID |

543| `directory` | `str \| None` | `None` | 專案目錄路徑。省略時,搜尋所有專案目錄 |

544| `up_to_message_id` | `str \| None` | `None` | 複製逐字稿直到具有此 UUID 的消息為止(包含該消息),例如來自 [`get_session_messages()`](#get_session_messages) 的 `uuid`。省略時,複製整份逐字稿 |

545| `title` | `str \| None` | `None` | 分叉的標題。省略時,SDK 會從原始工作階段衍生標題,並在其後加上 `(fork)` |

546 

547返回一個 `ForkSessionResult`,其 `session_id` 為新工作階段的 UUID。將其作為 [`resume`](#claudeagentoptions) 傳遞以繼續該分叉。分叉不包含原始工作階段的[檔案檢查點](/docs/zh-TW/agent-sdk/file-checkpointing),因此無法將其倒回到分叉之前擷取的檢查點。

548 

549`fork_session()` 會引發:

550 

551* `ValueError`:`session_id` 或 `up_to_message_id` 不是有效的 UUID

552* `ValueError`:工作階段沒有任何消息,或 `up_to_message_id` 與逐字稿中的任何消息都不相符

553* `FileNotFoundError`:找不到工作階段

554 

555<h4 id="example-8">

556 範例

557</h4>

558 

559以新標題分叉最近的工作階段,然後繼續該分叉。原始工作階段保留其自身的歷史記錄。

560 

561```python theme={null}

562from claude_agent_sdk import fork_session, list_sessions

563 

564sessions = list_sessions(directory="/path/to/project", limit=1)

565if sessions:

566 forked = fork_session(sessions[0].session_id, title="Try the OAuth approach")

567 print(forked.session_id) # pass as ClaudeAgentOptions(resume=...) to continue the fork

568```

569 

521<h2 id="classes">570<h2 id="classes">

522 類別571 類別

523</h2>572</h2>


919| 屬性 | 類型 | 預設值 | 說明 |968| 屬性 | 類型 | 預設值 | 說明 |

920| :- | :- | :- | :- |969| :- | :- | :- | :- |

921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | 工具設定。使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的預設工具 |970| `tools` | `list[str] \| ToolsPreset \| None` | `None` | 工具設定。使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的預設工具 |

922| `allowed_tools` | `list[str]` | `[]` | 無需提示即可自動核准的工具。這不會限制 Claude 只使用這些工具。如果您在此處命名其中一個[任務追蹤工具](/docs/zh-TW/agent-sdk/todo-tracking#model-availability),Claude Code 也會為工作階段選擇加入。其他未列出的工具會進入 `permission_mode` 和 `can_use_tool`。使用 `disallowed_tools` 來封鎖工具。請參閱[權限](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |971| `allowed_tools` | `list[str]` | `[]` | 無需提示即可自動核准的工具,但從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取的操作除外。這不會限制 Claude 只使用這些工具。如果您在此處命名其中一個[任務追蹤工具](/docs/zh-TW/agent-sdk/todo-tracking#model-availability),Claude Code 也會為工作階段選擇加入。其他未列出的工具會進入 `permission_mode` 和 `can_use_tool`。使用 `disallowed_tools` 來封鎖工具。請參閱[權限](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | 系統提示詞設定。傳遞字串以取得自訂提示詞、`{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的系統提示詞(含選用的 `"append"`)、`{"type": "custom", "prompt": "..."}` 以取得也可以設定 `"snapshot"` 的自訂提示詞,或 `{"type": "file", "path": "..."}` 以從磁碟載入大型提示詞。請參閱 [`SystemPromptPreset`](#systempromptpreset)、[`SystemPromptCustom`](#systempromptcustom) 和 [`SystemPromptFile`](#systempromptfile) |972| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | 系統提示詞設定。傳遞字串以取得自訂提示詞、`{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的系統提示詞(含選用的 `"append"`)、`{"type": "custom", "prompt": "..."}` 以取得也可以設定 `"snapshot"` 的自訂提示詞,或 `{"type": "file", "path": "..."}` 以從磁碟載入大型提示詞。請參閱 [`SystemPromptPreset`](#systempromptpreset)、[`SystemPromptCustom`](#systempromptcustom) 和 [`SystemPromptFile`](#systempromptfile) |

924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP 伺服器設定或設定檔的路徑 |973| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP 伺服器設定或設定檔的路徑 |

925| `strict_mcp_config` | `bool` | `False` | 當為 `True` 時,僅使用在 `mcp_servers` 中傳遞的伺服器,並忽略專案 `.mcp.json`、使用者設定、外掛提供的 MCP 伺服器和 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對應至 CLI `--strict-mcp-config` 旗標 |974| `strict_mcp_config` | `bool` | `False` | 當為 `True` 時,僅使用在 `mcp_servers` 中傳遞的伺服器,並忽略專案 `.mcp.json`、使用者設定、外掛提供的 MCP 伺服器和 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對應至 CLI `--strict-mcp-config` 旗標 |


1849* `terminal_reason`:查詢迴圈結束的原因,例如 `"completed"`、`"max_turns"`、`"api_error"`、`"aborted_streaming"` 或 `"aborted_tools"`。`"aborted_streaming"` 或 `"aborted_tools"` 的值表示轉在完成前被中止。常見原因是 [`interrupt()`](#claudesdkclient) 和權限回呼返回 [`PermissionResultDeny`](#permissionresultdeny) 且 `interrupt=True`。在早於該欄位的 CLI 版本上為 `None`,在本地命令(例如 `/voice` 或 `/usage`)的結果上為 `None`,這些命令繞過查詢迴圈,或在 session 致命失敗時發出的合成錯誤結果上為 `None`。鏡像 TypeScript SDK 的 [`SDKResultMessage.terminal_reason`](/docs/zh-TW/agent-sdk/typescript#sdkresultmessage),其列出完整的值集。1898* `terminal_reason`:查詢迴圈結束的原因,例如 `"completed"`、`"max_turns"`、`"api_error"`、`"aborted_streaming"` 或 `"aborted_tools"`。`"aborted_streaming"` 或 `"aborted_tools"` 的值表示轉在完成前被中止。常見原因是 [`interrupt()`](#claudesdkclient) 和權限回呼返回 [`PermissionResultDeny`](#permissionresultdeny) 且 `interrupt=True`。在早於該欄位的 CLI 版本上為 `None`,在本地命令(例如 `/voice` 或 `/usage`)的結果上為 `None`,這些命令繞過查詢迴圈,或在 session 致命失敗時發出的合成錯誤結果上為 `None`。鏡像 TypeScript SDK 的 [`SDKResultMessage.terminal_reason`](/docs/zh-TW/agent-sdk/typescript#sdkresultmessage),其列出完整的值集。

1850* `origin`:觸發此轉的使用者消息的來源。在[串流輸入模式](/docs/zh-TW/agent-sdk/streaming-vs-single-mode)中,檢查此項以區分您自己提示的結果(其中 `origin` 為 `None` 或 `{"kind": "human"}`)與注入轉(例如背景任務通知)的結果。需要 Python Agent SDK 0.2.137 或更新版本。1899* `origin`:觸發此轉的使用者消息的來源。在[串流輸入模式](/docs/zh-TW/agent-sdk/streaming-vs-single-mode)中,檢查此項以區分您自己提示的結果(其中 `origin` 為 `None` 或 `{"kind": "human"}`)與注入轉(例如背景任務通知)的結果。需要 Python Agent SDK 0.2.137 或更新版本。

1851 1900 

1901當數個背景任務在相近的時間內完成時,Claude Code 可以在一個回合中回應它們的通知,而不是每個通知各用一個回合。您仍會依序為每個通知收到一個 `ResultMessage`,每個都帶有 `kind` 為 `"task-notification"` 的 `origin`。除最後一個之外,其餘的 `num_turns` 皆設為 `0` 且 `result` 為空,而最後一個則承載回應所有通知的回合。

1902 

1852`usage` 字典僅涵蓋主代理迴圈,並排除子代理和其他嵌套或輔助模型呼叫。在[串流輸入模式](/docs/zh-TW/agent-sdk/streaming-vs-single-mode)中,值是按轉的。優先使用 `model_usage` 進行令牌和成本計算。`usage` 字典在出現時包含以下鍵:1903`usage` 字典僅涵蓋主代理迴圈,並排除子代理和其他嵌套或輔助模型呼叫。在[串流輸入模式](/docs/zh-TW/agent-sdk/streaming-vs-single-mode)中,值是按轉的。優先使用 `model_usage` 進行令牌和成本計算。`usage` 字典在出現時包含以下鍵:

1853 1904 

1854| 鍵 | 類型 | 描述 |1905| 鍵 | 類型 | 描述 |

Details

358* [`renameSession()`](/docs/zh-TW/agent-sdk/typescript#renamesession)358* [`renameSession()`](/docs/zh-TW/agent-sdk/typescript#renamesession)

359* [`tagSession()`](/docs/zh-TW/agent-sdk/typescript#tagsession)359* [`tagSession()`](/docs/zh-TW/agent-sdk/typescript#tagsession)

360* [`deleteSession()`](/docs/zh-TW/agent-sdk/typescript)360* [`deleteSession()`](/docs/zh-TW/agent-sdk/typescript)

361* [`forkSession()`](/docs/zh-TW/agent-sdk/typescript)361* [`forkSession()`](/docs/zh-TW/agent-sdk/typescript#forksession)

362* [`listSubagents()`](/docs/zh-TW/agent-sdk/typescript)362* [`listSubagents()`](/docs/zh-TW/agent-sdk/typescript)

363* [`getSubagentMessages()`](/docs/zh-TW/agent-sdk/typescript)363* [`getSubagentMessages()`](/docs/zh-TW/agent-sdk/typescript)

364 364 

Details

293 293 

294 您可以從任何工作目錄恢復:294 您可以從任何工作目錄恢復:

295 295 

296 * **跨目錄查詢**:Claude Code 搜尋超出目前專案目錄以找到 ID;請參閱[恢復 session](/docs/zh-TW/sessions#resume-a-session) 以了解確切的查詢順序以及如何處理重複副本。296 * **跨目錄查詢**:Claude Code 會搜尋目前專案目錄以外的位置以找到 ID;請參閱[恢復工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks)以了解確切的查詢順序以及如何處理重複副本。

297 * **僅限同一機器**:session 文件仍需要存在於目前機器上。297 * **僅限同一機器**:session 文件仍需要存在於目前機器上。

298 298 

299 在 v2.1.223 之前,查詢的範圍限於目前專案目錄及其 git worktrees;捆綁較舊 CLI 的 SDK 版本仍然以這種方式運作。299 在 v2.1.223 之前,查詢的範圍限於目前專案目錄及其 git worktrees;捆綁較舊 CLI 的 SDK 版本仍然以這種方式運作。


423 423 

424* **移動 session 文件。** 從第一次執行中保持 `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl`,並在呼叫 `resume` 之前將其還原到新主機上 `~/.claude/projects/` 下的任何目錄內。424* **移動 session 文件。** 從第一次執行中保持 `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl`,並在呼叫 `resume` 之前將其還原到新主機上 `~/.claude/projects/` 下的任何目錄內。

425 425 

426 Claude Code 會搜尋超出目前專案目錄的範圍來尋找 ID;請參閱[恢復 session](/docs/zh-TW/sessions#resume-a-session) 以了解確切的查詢順序以及如何處理重複副本。在 v2.1.223 之前,查詢範圍限於目前專案目錄及其 git worktrees;捆綁較舊 CLI 的 SDK 版本仍然以這種方式運作。426 Claude Code 會搜尋超出目前專案目錄的範圍來尋找 ID;請參閱[恢復工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks)以了解確切的查詢順序以及如何處理重複副本。在 v2.1.223 之前,查詢範圍限於目前專案目錄及其 git worktree;捆綁較舊 CLI 的 SDK 版本仍然以這種方式運作。

427 427 

428* **不依賴 session 恢復。** 捕獲您需要的結果(分析輸出、決定、文件差異)作為應用程式狀態,並將其傳遞到新 session 的提示中。這通常比運送記錄文件更穩健。428* **不依賴 session 恢復。** 捕獲您需要的結果(分析輸出、決定、文件差異)作為應用程式狀態,並將其傳遞到新 session 的提示中。這通常比運送記錄文件更穩健。

429 429 

Details

124 124 

125未啟用部分訊息時,您會接收除 `StreamEvent` 外的所有訊息類型。常見類型包括 `SystemMessage`(工作階段初始化)、`AssistantMessage`(完整內容區塊)、`ResultMessage`(最終結果)和一個緊湊邊界訊息,指示何時壓縮了對話歷史記錄(TypeScript 中為 `SDKCompactBoundaryMessage`;Python 中為具有子類型 `"compact_boundary"` 的 `SystemMessage`)。125未啟用部分訊息時,您會接收除 `StreamEvent` 外的所有訊息類型。常見類型包括 `SystemMessage`(工作階段初始化)、`AssistantMessage`(完整內容區塊)、`ResultMessage`(最終結果)和一個緊湊邊界訊息,指示何時壓縮了對話歷史記錄(TypeScript 中為 `SDKCompactBoundaryMessage`;Python 中為具有子類型 `"compact_boundary"` 的 `SystemMessage`)。

126 126 

127<h3 id="handle-a-stream-that’s-cut-off">

128 處理被中斷的串流

129</h3>

130 

131如果串流在訊息中途被中斷,例如您中斷了回合或連線中斷時,您仍會在回合結束前收到該訊息的 `message_stop`。被中斷的文字或思考區塊也會收到其 `content_block_stop`。被中斷的工具呼叫則不會,因此如果 `message_stop` 到達時某個工具呼叫的區塊仍處於開啟狀態,請將該呼叫的輸入視為不完整。

132 

133在 Claude Code v2.1.290 之前,被中斷的串流可能會在沒有 `message_stop` 的情況下結束回合,因此您根據串流事件呈現的回覆可能會一直顯示為進行中。TypeScript Agent SDK 從 v0.3.290 起內建 Claude Code v2.1.290 或更新版本,Python Agent SDK 則從 v0.2.164 起內建。如果回合結束後回覆仍一直顯示為進行中,請更新 SDK。

134 

127<h2 id="stream-tool-calls">135<h2 id="stream-tool-calls">

128 串流工具呼叫136 串流工具呼叫

129</h2>137</h2>

Details

464| `tag` | `string \| null` | 必填 | 標籤字串,或傳入 `null` 以清除 |464| `tag` | `string \| null` | 必填 | 標籤字串,或傳入 `null` 以清除 |

465| `options.dir` | `string` | `undefined` | 專案目錄路徑。省略時,搜尋所有專案目錄 |465| `options.dir` | `string` | `undefined` | 專案目錄路徑。省略時,搜尋所有專案目錄 |

466 466 

467<h3 id="forksession">

468 `forkSession()`

469</h3>

470 

471將工作階段的逐字稿複製到新的工作階段,讓您可以將對話導向另一個方向,同時保持原始工作階段不變。若要從對話中較早的某個時間點建立分支,請傳入 `upToMessageId`。

472 

473```typescript theme={null}

474function forkSession(

475 sessionId: string,

476 options?: ForkSessionOptions

477): Promise<ForkSessionResult>;

478```

479 

480<h4 id="parameters-10">

481 參數

482</h4>

483 

484| 參數 | 型別 | 預設值 | 說明 |

485| :- | :- | :- | :- |

486| `sessionId` | `string` | 必填 | 要分叉的工作階段 UUID |

487| `options.dir` | `string` | `undefined` | 專案目錄路徑。省略時,搜尋所有專案目錄 |

488| `options.upToMessageId` | `string` | `undefined` | 複製逐字稿直到(並包含)具有此 `uuid` 的訊息:可以是來自 [`getSessionMessages()`](#getsessionmessages) 的值,或是您在串流傳送的 [`SDKUserMessage`](#sdkusermessage) 上設定的 `uuid`。省略時,複製整份逐字稿 |

489| `options.title` | `string` | `undefined` | 分叉的標題。省略時,SDK 會從原始工作階段推導出標題,並在其後加上 `(fork)` |

490 

491傳回 `{ sessionId }`,即新工作階段的 UUID。將其作為 [`resume`](#options) 傳入即可繼續該分叉。分叉不包含原始工作階段的[檔案檢查點](/docs/zh-TW/agent-sdk/file-checkpointing),因此您無法將其倒回至分叉之前擷取的檢查點。

492 

493`forkSession()` 在以下情況會擲出例外:

494 

495* `sessionId` 不是 UUID

496* 找不到該工作階段,或該工作階段沒有任何訊息

497* `upToMessageId` 與逐字稿中的任何訊息都不相符

498 

467<h3 id="resolvesettings">499<h3 id="resolvesettings">

468 `resolveSettings()`500 `resolveSettings()`

469</h3>501</h3>


486): Promise<ResolvedSettings>;518): Promise<ResolvedSettings>;

487```519```

488 520 

489<h4 id="parameters-10">521<h4 id="parameters-11">

490 參數522 參數

491</h4>523</h4>

492 524 


547| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 以程式方式定義 subagent |579| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 以程式方式定義 subagent |

548| `agentProgressSummaries` | `boolean` | `false` | 為 `true` 時,為 subagent 產生單行進度摘要,並透過 `summary` 欄位在 [`task_progress`](#sdktaskprogressmessage) 事件中轉發。適用於前景和背景 subagent |580| `agentProgressSummaries` | `boolean` | `false` | 為 `true` 時,為 subagent 產生單行進度摘要,並透過 `summary` 欄位在 [`task_progress`](#sdktaskprogressmessage) 事件中轉發。適用於前景和背景 subagent |

549| `allowDangerouslySkipPermissions` | `boolean` | `false` | 啟用略過權限。使用 `permissionMode: 'bypassPermissions'` 時必須設定,無論是在啟動時或之後透過 `setPermissionMode()` 設定。關於它如何與 `permissionMode: 'plan'` 互動,請參閱 [plan mode](/docs/zh-TW/agent-sdk/permissions#plan-mode-plan) |581| `allowDangerouslySkipPermissions` | `boolean` | `false` | 啟用略過權限。使用 `permissionMode: 'bypassPermissions'` 時必須設定,無論是在啟動時或之後透過 `setPermissionMode()` 設定。關於它如何與 `permissionMode: 'plan'` 互動,請參閱 [plan mode](/docs/zh-TW/agent-sdk/permissions#plan-mode-plan) |

550| `allowedTools` | `string[]` | `[]` | 無需提示即自動核准的工具。這不會將 Claude 限制為只能使用這些工具。如果您在此處指定其中一個[任務追蹤工具](/docs/zh-TW/agent-sdk/todo-tracking#model-availability),Claude Code 也會為工作階段啟用該功能。其他未列出的工具會交由 `permissionMode` 和 `canUseTool` 處理。使用 `disallowedTools` 封鎖工具。請參閱[權限](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |582| `allowedTools` | `string[]` | `[]` | 無需提示即可自動核准的工具,但從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取除外。這不會將 Claude 限制為只能使用這些工具。如果您在此指定其中一個[任務追蹤工具](/docs/zh-TW/agent-sdk/todo-tracking#model-availability),Claude Code 也會讓該工作階段選擇加入。其他未列出的工具則交由 `permissionMode` 和 `canUseTool` 處理。使用 `disallowedTools` 來封鎖工具。請參閱[權限](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

551| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 啟用 beta 功能 |583| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 啟用 beta 功能 |

552| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | 自訂權限函式,僅在[權限流程](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated)落到提示時才會呼叫。對於由 `allowedTools`、允許規則或 `permissionMode` 自動核准的呼叫,不會呼叫此函式。允許規則不會預先核准[沒有任何模式會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。詳情請參閱 [`CanUseTool`](#canusetool) |584| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | 自訂權限函式,僅在[權限流程](/docs/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated)落到提示時才會呼叫。對於由 `allowedTools`、允許規則或 `permissionMode` 自動核准的呼叫,不會呼叫此函式。允許規則不會預先核准[沒有任何模式會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。詳情請參閱 [`CanUseTool`](#canusetool) |

553| `continue` | `boolean` | `false` | 繼續最近的對話 |585| `continue` | `boolean` | `false` | 繼續最近的對話 |


1588 1620 

1589請依 `agent_id` 將 subagent 的訊息與其任務事件配對,而不是將訊息的 `parent_tool_use_id` 與任務事件的 `tool_use_id` 配對。當工具呼叫恢復 subagent 時,任務事件會帶有該呼叫的 `tool_use_id`,而訊息則保留最初啟動該 subagent 之工具呼叫的 `parent_tool_use_id`,因此兩者將不再相符。1621請依 `agent_id` 將 subagent 的訊息與其任務事件配對,而不是將訊息的 `parent_tool_use_id` 與任務事件的 `tool_use_id` 配對。當工具呼叫恢復 subagent 時,任務事件會帶有該呼叫的 `tool_use_id`,而訊息則保留最初啟動該 subagent 之工具呼叫的 `parent_tool_use_id`,因此兩者將不再相符。

1590 1622 

1591Claude Code 會在回合的第一個助手訊息上設定 `user_message_uuid` 和 `user_message_uuids`,條件請見 [`user_message_uuid`](#user_message_uuid)。當 Claude Code 重新執行被重新啟動中斷的回合時,重新執行中攜帶這些欄位的助手訊息也會攜帶 [`resume_reason`](#resume_reason)。1623Claude Code 會在符合 [`user_message_uuid`](#user_message_uuid) 所述條件時,於該回合的第一則助理訊息上設定 `user_message_uuid` 和 `user_message_uuids`。當該回合是接續因重新啟動而中斷的回合時,帶有這些欄位的助理訊息也會帶有 [`resume_reason`](#resume_reason)。

1592 1624 

1593`timestamp` 是訊息內容在產生它的程序上完成生成的 ISO 8601 時間。該值來自該機器的時鐘,因此僅用於顯示,不要依其排序訊息。一個 API 回合可以產生多個共用同一 `message.id` 的助手訊息,每個都有自己的 `timestamp`。當欄位不存在時,請改用您收到訊息的時間。1625`timestamp` 是訊息內容在產生它的程序上完成生成的 ISO 8601 時間。該值來自該機器的時鐘,因此僅用於顯示,不要依其排序訊息。一個 API 回合可以產生多個共用同一 `message.id` 的助手訊息,每個都有自己的 `timestamp`。當欄位不存在時,請改用您收到訊息的時間。

1594 1626 


1631 1663 

1632設定 `inline_pastes` 以告訴 Claude Code `message.content` 中哪些部分是使用者貼上而非輸入的,每次貼上對應一個字串。提示詞文字會保留在使用者放置的位置。Claude Code 可能會就地將每個列出的貼上內容包在 `<pasted_content>` 標籤中,讓 Claude 能區分貼上的素材與使用者自己的文字。只有提示詞最後一個文字區塊中的貼上內容會被包裝。需要 TypeScript Agent SDK v0.3.280 或更新版本。1664設定 `inline_pastes` 以告訴 Claude Code `message.content` 中哪些部分是使用者貼上而非輸入的,每次貼上對應一個字串。提示詞文字會保留在使用者放置的位置。Claude Code 可能會就地將每個列出的貼上內容包在 `<pasted_content>` 標籤中,讓 Claude 能區分貼上的素材與使用者自己的文字。只有提示詞最後一個文字區塊中的貼上內容會被包裝。需要 TypeScript Agent SDK v0.3.280 或更新版本。

1633 1665 

1666每個貼上欄位都有大小限制:

1667 

1668* `pasted_content`:若項目加上其中的內容區塊總數超過 1,000,Claude Code 會忽略整個欄位。

1669* `inline_pastes`:Claude Code 使用前 100 個非空白項目,並忽略其餘項目。

1670 

1634設定 `shouldQuery`、`client_composed` 或 `priority`,以變更 Claude Code 處理您所傳送訊息的方式:1671設定 `shouldQuery`、`client_composed` 或 `priority`,以變更 Claude Code 處理您所傳送訊息的方式:

1635 1672 

1636* `shouldQuery`:設定為 `false` 以將訊息附加到逐字稿,而不觸發助手回合。訊息會被保留,並合併到下一個會觸發回合的使用者訊息中。使用此方式注入上下文,例如您在頻外執行之命令的輸出,而不必為此花費一次模型呼叫。1673* `shouldQuery`:設定為 `false` 以將訊息附加到逐字稿,而不觸發助手回合。訊息會被保留,並合併到下一個會觸發回合的使用者訊息中。使用此方式注入上下文,例如您在頻外執行之命令的輸出,而不必為此花費一次模型呼叫。


1661* Claude Code 為了傳遞 `'now'` 訊息而移至背景的 WebFetch 或 WebSearch 呼叫:帶有該呼叫之 `tool_result` 的使用者訊息,其 `tool_use_result` 設為 `{ detachedToolCall: true }`。該呼叫仍在執行中,Claude 會在其完成後接收結果。該 `tool_use_id` 之後不會再有第二個 `tool_result`,因此若您的應用程式為每個工具呼叫繪製一列,請在此訊息到達時將該列標示為已移至背景。需要 Claude Code v2.1.287 或更新版本。1698* Claude Code 為了傳遞 `'now'` 訊息而移至背景的 WebFetch 或 WebSearch 呼叫:帶有該呼叫之 `tool_result` 的使用者訊息,其 `tool_use_result` 設為 `{ detachedToolCall: true }`。該呼叫仍在執行中,Claude 會在其完成後接收結果。該 `tool_use_id` 之後不會再有第二個 `tool_result`,因此若您的應用程式為每個工具呼叫繪製一列,請在此訊息到達時將該列標示為已移至背景。需要 Claude Code v2.1.287 或更新版本。

1662* 結果包含 `resource_link` 區塊的 MCP 工具:`tool_use_result` 是一個物件,含有由 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 項目組成的 `resourceLinks` 陣列。Claude 會在 `tool_result` 區塊中以一行文字接收每個連結,因此請讀取 `resourceLinks` 來呈現伺服器回傳的檔案,而非剖析該文字。當結果沒有連結時,以及在來自 subagent 的結果上,Claude Code 會省略 `resourceLinks`;每個結果最多保留 50 個連結,且當陣列的序列化 JSON 達到 64 KiB 時便停止新增連結。`resourceLinks` 需要 Agent SDK v0.3.257 或更新版本。1699* 結果包含 `resource_link` 區塊的 MCP 工具:`tool_use_result` 是一個物件,含有由 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 項目組成的 `resourceLinks` 陣列。Claude 會在 `tool_result` 區塊中以一行文字接收每個連結,因此請讀取 `resourceLinks` 來呈現伺服器回傳的檔案,而非剖析該文字。當結果沒有連結時,以及在來自 subagent 的結果上,Claude Code 會省略 `resourceLinks`;每個結果最多保留 50 個連結,且當陣列的序列化 JSON 達到 64 KiB 時便停止新增連結。`resourceLinks` 需要 Agent SDK v0.3.257 或更新版本。

1663* 回傳 [`structuredContent`](#calltoolresult) 的 MCP 工具:`tool_use_result` 是一個物件,其 `structuredContent` 成員包含伺服器傳送的內容,`content` 成員則包含 [`McpOutput`](#mcpoutput) 值。來自 subagent 的結果不帶有 `structuredContent`。1700* 回傳 [`structuredContent`](#calltoolresult) 的 MCP 工具:`tool_use_result` 是一個物件,其 `structuredContent` 成員包含伺服器傳送的內容,`content` 成員則包含 [`McpOutput`](#mcpoutput) 值。來自 subagent 的結果不帶有 `structuredContent`。

1664* `structuredContent` 序列化後超過 1,048,576 個字元 JSON 的 MCP 工具:Claude Code 會從 `tool_use_result` 中移除 `structuredContent`,並改設 `structuredContentOmitted: true`,讓您的應用程式能區分被捨棄的物件與未傳送任何物件的工具。其他成員(例如 `content` 與 `resourceLinks`)會保留,Claude 接收的內容也不會改變。來自[程序內 SDK 伺服器](/docs/zh-TW/agent-sdk/custom-tools)的工具,以及其 `tools/list` 項目宣告了 [MCP Apps `_meta.ui` 資源](#mcpserverstatus)的工具不受此限,會完整傳遞物件。Claude Code v2.1.287 或更新版本會套用此上限。1701* `structuredContent` 序列化後超過 1,048,576 個字元 JSON 的 MCP 工具:Claude Code 會在 `tool_use_result` 中省略 `structuredContent`,並以 `structuredContentOmitted: true` 取代,讓您的應用程式能區分被捨棄的物件與未傳送物件的工具。其他成員(例如 `content` 和 `resourceLinks`)會保留,Claude 收到的內容也不變。Claude Code v2.1.287 或更新版本會套用此上限。有兩類工具不同:

1702 * 來自[程序內 SDK 伺服器](/docs/zh-TW/agent-sdk/custom-tools)的工具不受此限,會完整傳遞物件。

1703 * `tools/list` 項目宣告了 [MCP Apps `ui://` 資源](#mcpserverstatus)的工具,在 Claude Code v2.1.295 或更新版本上的上限為 8,388,608 個字元,而 v2.1.295 之前的版本則不對其設限。

1665 1704 

1666<h3 id="sdkusermessagereplay">1705<h3 id="sdkusermessagereplay">

1667 `SDKUserMessageReplay`1706 `SDKUserMessageReplay`


1775* `ttft_stream_ms`:直到第一個 `message_start` 串流事件(即回應串流開啟時)的時間(毫秒)。低於 `ttft_ms`;兩者之間的差距是串流第一個訊息所花費的時間。僅在成功分支上存在。1814* `ttft_stream_ms`:直到第一個 `message_start` 串流事件(即回應串流開啟時)的時間(毫秒)。低於 `ttft_ms`;兩者之間的差距是串流第一個訊息所花費的時間。僅在成功分支上存在。

1776* `user_message_uuid`:此回合所回答的、您傳送之訊息的 `uuid`。請參閱 [`user_message_uuid`](#user_message_uuid) 以了解哪些結果會攜帶它。1815* `user_message_uuid`:此回合所回答的、您傳送之訊息的 `uuid`。請參閱 [`user_message_uuid`](#user_message_uuid) 以了解哪些結果會攜帶它。

1777* `user_message_uuids`:Claude Code 在此回合中回答的、您傳送之每則訊息的 `uuid`。請參閱 [`user_message_uuids`](#user_message_uuids)。1816* `user_message_uuids`:Claude Code 在此回合中回答的、您傳送之每則訊息的 `uuid`。請參閱 [`user_message_uuids`](#user_message_uuids)。

1778* `resume_reason`:Claude Code 在重新啟動中斷此回合後重新執行它的原因。存在於兩個分支。請參閱 [`resume_reason`](#resume_reason)。1817* `resume_reason`:此回合為何接續因重新啟動而中斷的回合。出現在兩個分支上。請參閱 [`resume_reason`](#resume_reason)。

1779* `local_command`:回合所分派之命令的名稱,出現在由命令完成、未進入 agent 迴圈之回合的成功結果上,例如 `/compact`。名稱會轉為小寫字母和底線,因此 `/reload-plugins` 回報為 `reload_plugins`。由 MCP 伺服器提供的命令以及內建的 `/mcp` 回報為 `mcp`。您自行定義的命令回報為 `custom`。引數永遠不會包含在內。在每個進入 agent 迴圈的回合上,以及在未執行任何命令的傳送上,此欄位不存在。需要 Agent SDK v0.3.268 或更新版本。1818* `local_command`:回合所分派之命令的名稱,出現在由命令完成、未進入 agent 迴圈之回合的成功結果上,例如 `/compact`。名稱會轉為小寫字母和底線,因此 `/reload-plugins` 回報為 `reload_plugins`。由 MCP 伺服器提供的命令以及內建的 `/mcp` 回報為 `mcp`。您自行定義的命令回報為 `custom`。引數永遠不會包含在內。在每個進入 agent 迴圈的回合上,以及在未執行任何命令的傳送上,此欄位不存在。需要 Agent SDK v0.3.268 或更新版本。

1780* `request_sent_wall_ms`:Claude Code 分派 API 請求時的紀元毫秒,用於與伺服器端時間戳記進行對照。僅與 [`user_message_uuid`](#user_message_uuid) 一起存在,出現在 `is_error` 為 false、且其回合傳送了 API 請求的成功結果上。1819* `request_sent_wall_ms`:Claude Code 分派 API 請求時的紀元毫秒,用於與伺服器端時間戳記進行對照。僅與 [`user_message_uuid`](#user_message_uuid) 一起存在,出現在 `is_error` 為 false、且其回合傳送了 API 請求的成功結果上。

1781* `first_content_frame_ms`:直到第一個 `content_block_start` 或 `content_block_delta` 串流事件的時間(毫秒),思考區塊也計為內容。僅在成功分支上、`is_error` 為 false 時存在。需要 Agent SDK v0.3.260 或更新版本。1820* `first_content_frame_ms`:直到第一個 `content_block_start` 或 `content_block_delta` 串流事件的時間(毫秒),思考區塊也計為內容。僅在成功分支上、`is_error` 為 false 時存在。需要 Agent SDK v0.3.260 或更新版本。


1825 1864 

1826* **您傳送的一般訊息**,即不帶 `isSynthetic: true` 的訊息:回合在整個執行過程中都回答該訊息。當您在短時間內傳送多則訊息時,Claude Code 可以將它們合併為一個回合,此時該欄位僅攜帶最後一則訊息的 `uuid`。若要將回覆與任何一則被合併的訊息對應,請使用 [`user_message_uuids`](#user_message_uuids)。1865* **您傳送的一般訊息**,即不帶 `isSynthetic: true` 的訊息:回合在整個執行過程中都回答該訊息。當您在短時間內傳送多則訊息時,Claude Code 可以將它們合併為一個回合,此時該欄位僅攜帶最後一則訊息的 `uuid`。若要將回覆與任何一則被合併的訊息對應,請使用 [`user_message_uuids`](#user_message_uuids)。

1827* **您以 `isSynthetic: true` 傳送的訊息**:回合一開始回答該訊息。如果 Claude Code 在工具呼叫之間接收到您的一般訊息,回合從那時起改為回答所接收的訊息。回傳合成訊息的 `uuid` 需要 Agent SDK v0.3.265 或更新版本;較早的版本在合成回合上不會回傳任何內容。1866* **您以 `isSynthetic: true` 傳送的訊息**:回合一開始回答該訊息。如果 Claude Code 在工具呼叫之間接收到您的一般訊息,回合從那時起改為回答所接收的訊息。回傳合成訊息的 `uuid` 需要 Agent SDK v0.3.265 或更新版本;較早的版本在合成回合上不會回傳任何內容。

1828* **Claude Code 在 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars) 下為重新執行中斷回合而產生的提示詞**:當中斷回合的最後一個提示詞是您傳送的一般訊息時,無論它是開啟該回合,還是 Claude Code 在回合期間接收到的,重新執行一開始都會回答該訊息。[`resume_reason`](#resume_reason) 可用來區分重新執行的框架與中斷嘗試的框架。當最後一個提示詞不是您的一般訊息時,重新執行一開始不回答您的任何訊息。如果 Claude Code 在工具呼叫之間接收到您的一般訊息,回合從那時起改為回答所接收的訊息。回傳中斷回合的提示詞需要 Agent SDK v0.3.268 或更新版本。1867* **Claude Code 在 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars) 下為接續中斷回合而產生的提示詞**:當中斷回合的最後一個提示詞是您傳送的一般訊息時(無論它是開啟了該回合,或是 Claude Code 在回合中接收的),接續的回合一開始回答該訊息。[`resume_reason`](#resume_reason) 可區分接續回合的框架與中斷嘗試的框架。當最後一個提示詞不是您的一般訊息時,接續的回合一開始不回答您的任何訊息。若 Claude Code 在工具呼叫之間接收了您的一般訊息,回合從那時起便回答所接收的訊息。回傳中斷回合的提示詞需要 Agent SDK v0.3.268 或更新版本。

1829* **Claude Code 自行產生的任何其他提示詞**:回合一開始不回答您的任何訊息,其框架不攜帶任何回傳值。如果 Claude Code 在工具呼叫之間接收到您的一般訊息,回合從那時起回答該訊息。接收時的回傳需要 Agent SDK v0.3.265 或更新版本;較早的版本在這些回合上不會回傳任何內容。1868* **Claude Code 自行產生的任何其他提示詞**:回合一開始不回答您的任何訊息,其框架不攜帶任何回傳值。如果 Claude Code 在工具呼叫之間接收到您的一般訊息,回合從那時起回答該訊息。接收時的回傳需要 Agent SDK v0.3.265 或更新版本;較早的版本在這些回合上不會回傳任何內容。

1830 1869 

1831Claude Code 會在三種框架上回傳所回答訊息的 `uuid`:1870Claude Code 會在三種框架上回傳所回答訊息的 `uuid`:


1857 `resume_reason`1896 `resume_reason`

1858</h4>1897</h4>

1859 1898 

1860Claude Code 在重新啟動後重新執行此回合的原因。Claude Code 會在它依 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars) 重新執行的回合上設定此欄位,讓您能區分重新執行的回覆和結果與中斷嘗試的回覆和結果。需要 Agent SDK v0.3.268 或更新版本。1899此回合為何接續因重新啟動而中斷的回合。Claude Code 會在 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars) 下接續中斷回合的回合上設定此欄位,讓您能區分接續回合的回覆和結果與中斷嘗試的回覆和結果。需要 Agent SDK v0.3.268 或更新版本。

1861 1900 

1862Claude Code 會在兩種框架上設定此欄位:1901Claude Code 會在兩種框架上設定此欄位:

1863 1902 

1864* **重新執行的結果**:在成功和錯誤分支上皆然,無論結果是否攜帶 `user_message_uuid`。1903* **接續回合的結果**:成功和錯誤分支皆然,無論結果是否帶有 `user_message_uuid`。

1865* **重新執行的回覆框架**:即攜帶 [`user_message_uuid`](#user_message_uuid) 的那些框架。1904* **接續回合的回覆框架**:帶有 [`user_message_uuid`](#user_message_uuid) 的那些框架。

1866 1905 

1867其值是一個簡短的小寫 token,指名回合被重新執行的原因,例如 `interrupted_turn`。1906其值是一個簡短的小寫 token,例如 `interrupted_turn`。

1868 1907 

1869<h4 id="queued_turn_count">1908<h4 id="queued_turn_count">

1870 `queued_turn_count`1909 `queued_turn_count`


2029};2068};

2030```2069```

2031 2070 

2032Claude Code 會在回合的第一個非 ping 串流事件上設定 `user_message_uuid` 和 `user_message_uuids`,並在回合所回答的訊息變更時再次設定,條件請見 [`user_message_uuid`](#user_message_uuid)。當 Claude Code 重新執行被重新啟動中斷的回合時,重新執行中攜帶這些欄位的串流事件也會攜帶 [`resume_reason`](#resume_reason)。2071Claude Code 會在符合 [`user_message_uuid`](#user_message_uuid) 所述條件時,於回合中第一個非 ping 的串流事件上設定 `user_message_uuid` 和 `user_message_uuids`,並在回合所回答的訊息改變時再次設定。當該回合是接續因重新啟動而中斷的回合時,帶有這些欄位的串流事件也會帶有 [`resume_reason`](#resume_reason)。

2033 2072 

2034<h3 id="sdkcompactboundarymessage">2073<h3 id="sdkcompactboundarymessage">

2035 `SDKCompactBoundaryMessage`2074 `SDKCompactBoundaryMessage`


3559| - | - | - |3598| - | - | - |

3560| `script` | `string` | 內嵌工作流程指令碼。必須以 `export const meta = { name, description }` 作為字面值開始,後面跟著使用 `agent()`、`parallel()`、`pipeline()` 和 `phase()` 的指令碼主體。`meta` 中的選擇性 `phases` 陣列在進度檢視中將 agent 分組到具名階段下 |3599| `script` | `string` | 內嵌工作流程指令碼。必須以 `export const meta = { name, description }` 作為字面值開始,後面跟著使用 `agent()`、`parallel()`、`pipeline()` 和 `phase()` 的指令碼主體。`meta` 中的選擇性 `phases` 陣列在進度檢視中將 agent 分組到具名階段下 |

3561| `name` | `string` | 內建工作流程的名稱或儲存在 `.claude/workflows/` 中的工作流程名稱。解析為指令碼 |3600| `name` | `string` | 內建工作流程的名稱或儲存在 `.claude/workflows/` 中的工作流程名稱。解析為指令碼 |

3562| `scriptPath` | `string` | 磁碟上工作流程指令碼檔案的路徑。優先於 `script` 和 `name`。Claude Code 保留每次呼叫的指令碼並在結果中傳回路徑,因此您可以編輯該檔案並使用相同的 `scriptPath` 重新呼叫以進行迭代 |3601| `scriptPath` | `string` | 磁碟上工作流程指令碼檔案的路徑,例如先前執行所傳回的 `scriptPath`。優先於 `script` 和 `name`。當工作階段的工具不包含 `Read` 時,Claude Code 會以錯誤拒絕 `scriptPath` |

3563| `args` | `unknown` | 輸入值,作為全域 `args` 公開給指令碼,用於參數化的具名工作流程,例如研究問題或檔案路徑清單。將陣列和物件作為實際 JSON 值傳遞,而不是 JSON 編碼的字串 |3602| `args` | `unknown` | 輸入值,作為全域 `args` 公開給指令碼,用於參數化的具名工作流程,例如研究問題或檔案路徑清單。將陣列和物件作為實際 JSON 值傳遞,而不是 JSON 編碼的字串 |

3564| `resumeFromRunId` | `string` | 先前 `Workflow` 呼叫的執行 ID 以繼續。具有未變更輸入的已完成 `agent()` 呼叫通常傳回快取結果;其餘的執行即時。[暫停後繼續](/docs/zh-TW/workflows#resume-after-a-pause)涵蓋哪些已完成的呼叫會重新執行。僅限同一工作階段 |3603| `resumeFromRunId` | `string` | 先前 `Workflow` 呼叫的執行 ID 以繼續。具有未變更輸入的已完成 `agent()` 呼叫通常傳回快取結果;其餘的執行即時。[暫停後繼續](/docs/zh-TW/workflows#resume-after-a-pause)涵蓋哪些已完成的呼叫會重新執行。僅限同一工作階段 |

3565| `title` | `string` | 被忽略;指令碼的 `meta` 區塊設定標題 |3604| `title` | `string` | 被忽略;指令碼的 `meta` 區塊設定標題 |

agent-view.md +18 −14

Details

152| 形狀 | 意義 |152| 形狀 | 意義 |

153| :- | :- |153| :- | :- |

154| `✻` 或動畫 `✽` | 工作階段程序正在執行,或工作階段需要您的輸入 |154| `✻` 或動畫 `✽` | 工作階段程序正在執行,或工作階段需要您的輸入 |

155| `∙` | 程序已結束。您仍然可以查看該列,當您回覆或附加時,Claude 會從中斷的地方重新啟動 |155| `∙` | 程序已結束。您仍然可以查看該列,當您回覆或附加時,Claude 會從其已儲存的對話重新啟動它 |

156| `✢` | 在迭代之間休眠的 [`/loop`](/docs/zh-TW/scheduled-tasks) 工作階段。該列顯示其執行次數和倒數計時 |156| `✢` | 在迭代之間休眠的 [`/loop`](/docs/zh-TW/scheduled-tasks) 工作階段。該列顯示其執行次數和倒數計時 |

157 157 

158可能出現在列右邊緣的 `#N` 或 `!N` 標籤是指向工作階段的 [pull request 或 merge request](#pull-request-status) 的連結,不是狀態圖示的一部分。158可能出現在列右邊緣的 `#N` 或 `!N` 標籤是指向工作階段的 [pull request 或 merge request](#pull-request-status) 的連結,不是狀態圖示的一部分。


256 256 

257無論您的 `tui` 設定為何,附加的工作階段一律以 [全螢幕模式](/docs/zh-TW/fullscreen) 呈現,因為背景工作階段沒有可附加內容的終端機捲動緩衝區。使用 `PgUp`、`PgDn` 或滑鼠滾輪捲動,並按 `Ctrl+O` 進入逐字稿模式。您終端機的原生捲動和 tmux 複製模式只會顯示目前的檢視區,與執行任何全螢幕應用程式時相同。257無論您的 `tui` 設定為何,附加的工作階段一律以 [全螢幕模式](/docs/zh-TW/fullscreen) 呈現,因為背景工作階段沒有可附加內容的終端機捲動緩衝區。使用 `PgUp`、`PgDn` 或滑鼠滾輪捲動,並按 `Ctrl+O` 進入逐字稿模式。您終端機的原生捲動和 tmux 複製模式只會顯示目前的檢視區,與執行任何全螢幕應用程式時相同。

258 258 

259附加的工作階段不會 [向您的終端機回報其狀態](/docs/zh-TW/terminal-config#see-session-status-in-your-terminal)。

260 

259在空白提示詞輸入上按 `←`,或執行 `/exit`,即可分離並返回 agent 檢視,無論您是從 agent 檢視開啟工作階段,還是從 shell 使用 `claude attach <id>` 開啟。261在空白提示詞輸入上按 `←`,或執行 `/exit`,即可分離並返回 agent 檢視,無論您是從 agent 檢視開啟工作階段,還是從 shell 使用 `claude attach <id>` 開啟。

260 262 

261當 [`/btw` 覆蓋層](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw) 開啟時,`←` 也會分離。需要 Claude Code v2.1.257 或更新版本。仍在回答中的旁支問題會在您離開期間繼續執行。下次您附加時,覆蓋層會重新開啟並顯示該問題或其答案。263當 [`/btw` 覆蓋層](/docs/zh-TW/interactive-mode#side-questions-with-%2Fbtw) 開啟時,`←` 也會分離。需要 Claude Code v2.1.257 或更新版本。仍在回答中的旁支問題會在您離開期間繼續執行。下次您附加時,覆蓋層會重新開啟並顯示該問題或其答案。


264 266 

265`Ctrl+Z` 也會分離,但會回到您開始的地方:若您是從 agent 檢視附加,則回到 agent 檢視;若您執行的是 `claude attach`,則回到您的 shell。當對話框取得焦點且不回應 `←` 時,請使用 `Ctrl+Z`。267`Ctrl+Z` 也會分離,但會回到您開始的地方:若您是從 agent 檢視附加,則回到 agent 檢視;若您執行的是 `claude attach`,則回到您的 shell。當對話框取得焦點且不回應 `←` 時,請使用 `Ctrl+Z`。

266 268 

267附加時,`Ctrl+C` 保留其標準的中斷行為:它會取消執行中的回應或 `!` shell 命令,而不是分離。在空白提示詞輸入上按兩次 `Ctrl+C` 會分離,與任何工作階段中相同。269附加時,`Ctrl+C` 保留其標準的中斷行為:它會取消執行中的回應或 `!` shell 命令,而不是分離。在空白提示詞輸入上按兩次 `Ctrl+C` 會分離。

268 270 

269分離永遠不會停止背景工作階段:`←`、`Ctrl+Z`、`/exit`,以及按兩次 `Ctrl+C` 或兩次 `Ctrl+D`,都會讓它繼續執行。若要從工作階段內部結束它,請執行 `/stop`。271分離永遠不會停止背景工作階段:`←`、`Ctrl+Z`、`/exit`,以及按兩次 `Ctrl+C` 或兩次 `Ctrl+D`,都會讓它繼續執行。如果您在 `/loop` 等待下一次迭代時分離,迴圈會繼續執行,且該次迭代會在您不在場的情況下依排程開始。若要在分離前停止迴圈,請參閱 [停止迴圈](/docs/zh-TW/scheduled-tasks#stop-a-loop)。若要從工作階段內部結束它,請執行 `/stop`。

270 272 

271<h4 id="switch-sessions-without-leaving-the-terminal">273<h4 id="switch-sessions-without-leaving-the-terminal">

272 在不離開終端機的情況下切換工作階段274 在不離開終端機的情況下切換工作階段


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

294 296 

295* **前景 subagent 仍在執行**:Claude Code 會持續等待,讓 Claude 啟動的 [前景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 的工作得以轉移,並顯示 `Still backgrounding after the current tool`。再按一次 `←` 即可不等待直接移至背景,這會讓這些 subagent 從頭重新開始。297* **前景 subagent 仍在執行**:Claude Code 會持續等待,讓 Claude 啟動的 [前景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 的工作得以轉移,並顯示 `Still backgrounding after the current tool`。再按一次 `←` 即可不等待直接移至背景,這會讓這些 subagent 從頭重新開始。

296* **權限提示或問題正在等待您的回答**:當權限提示或 Claude 提出的問題正在等待時,Claude Code 會持續等待並顯示 `Still backgrounding after the current tool — a question is waiting for your answer.`298* **權限提示或問題正在等待您的回答**:當權限提示或 Claude 提出的問題正在等待時,Claude Code 會持續等待並顯示 `Still backgrounding after the current tool — a question is waiting for your answer.` 如果您的回答讓回合得以繼續,例如在權限提示上選擇 **Yes**,Claude Code 會在目前工具完成時將工作階段移至背景。

297* **您在提示詞輸入中輸入文字**:Claude Code 會取消切換,因為未發送的文字會留在您終端機的輸入框中,不會移至背景工作階段。它會顯示 `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`299* **您在提示詞輸入中輸入文字**:Claude Code 會取消切換,因為未發送的文字會留在您終端機的輸入框中,不會移至背景工作階段。它會顯示 `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`

300* **您停止了回合**:Claude Code 會取消切換並顯示 `Backgrounding cancelled — the turn was stopped.` 例如,當您 [使用 `Esc` 中斷 Claude](/docs/zh-TW/interactive-mode#general-controls)、在主對話的權限提示上 [不附註解](/docs/zh-TW/permissions#add-a-comment-when-you-answer-a-permission-prompt) 選擇 **No**,或在主對話中對 Claude 提出的問題按 `Esc` 時,回合就會停止。再按一次 `←` 即可將工作階段移至背景。

298* **佇列中的訊息無法移動**:您 [在 Claude 工作時加入佇列](/docs/zh-TW/interactive-mode#queue-messages-while-claude-works) 的訊息會隨對話移至背景工作階段。當其中某則訊息無法移動時,工作階段會留在前景,而 Claude Code 會顯示如 `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.` 的通知。301* **佇列中的訊息無法移動**:您 [在 Claude 工作時加入佇列](/docs/zh-TW/interactive-mode#queue-messages-while-claude-works) 的訊息會隨對話移至背景工作階段。當其中某則訊息無法移動時,工作階段會留在前景,而 Claude Code 會顯示如 `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.` 的通知。

299 302 

300即使對話尚無任何訊息,按 `←` 也會建立該工作階段的列,因此 `→` 仍可返回該工作階段。303即使對話尚無任何訊息,按 `←` 也會建立該工作階段的列,因此 `→` 仍可返回該工作階段。


513* `--fallback-model`516* `--fallback-model`

514* `--allow-dangerously-skip-permissions`517* `--allow-dangerously-skip-permissions`

515 518 

516您在工作階段期間使用 [`/add-dir`](/docs/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) 新增的目錄也會一併帶入。帶入 `--allow-dangerously-skip-permissions` 會讓 `bypassPermissions` 在已移到背景的工作階段中保持可用,但不會授予任何新的權限:該模式仍需要[權限模式、模型與 effort](#permission-mode-model-and-effort) 中所述的一次性互動式接受。519您在工作階段期間使用 [`/add-dir`](/docs/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) 新增的目錄也會一併帶入。帶入 `--allow-dangerously-skip-permissions` 會讓 `bypassPermissions` 在已移到背景的工作階段中保持可用,但不會授予任何新的權限:該模式仍需要您已有[接受略過免責聲明](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)的記錄。

517 520 

518<span id="from-your-shell" />521<span id="from-your-shell" />

519 522 


767 770 

768目前生效的預設值會顯示在分派輸入框下方的頁尾中。771目前生效的預設值會顯示在分派輸入框下方的頁尾中。

769 772 

770在您透過互動方式執行一次 `claude --dangerously-skip-permissions` 接受略過免責聲明之前,Claude Code 會拒絕 `claude --bg --permission-mode bypassPermissions`,因為該模式會讓您未監看的工作階段無需核准即可執行動作。將 `--dangerously-skip-permissions` 或 `--permission-mode bypassPermissions` 傳遞給 `claude agents` 時,若您先前未接受過,會顯示相同的免責聲明,接受後會將 `bypassPermissions` 套用到您從此檢視啟動的工作階段。傳遞 `--allow-dangerously-skip-permissions` 也會顯示相同的免責聲明,接受後會讓 `bypassPermissions` 出現在這些工作階段的 `Shift+Tab` 循環中,但不會以該模式啟動它們。773以 `bypassPermissions` 模式啟動的背景工作階段,需要您已有[接受略過免責聲明](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)的記錄,因為該模式會讓您未監看的工作階段無需核准即可執行動作。將 `--dangerously-skip-permissions` 或 `--permission-mode bypassPermissions` 傳遞給 `claude agents` 時,若您先前未接受過,會顯示相同的免責聲明,接受後會將 `bypassPermissions` 套用到您從此檢視啟動的工作階段。傳遞 `--allow-dangerously-skip-permissions` 也會顯示相同的免責聲明,接受後會讓 `bypassPermissions` 出現在這些工作階段的 `Shift+Tab` 循環中,但不會以該模式啟動它們。

771 774 

772<h4 id="what-persists-across-restarts">775<h4 id="what-persists-across-restarts">

773 重新啟動後會保留的內容776 重新啟動後會保留的內容

774</h4>777</h4>

775 778 

776您為背景工作階段選擇的權限模式、模型和 effort,以及[它帶入的設定旗標](#what-carries-over-when-you-background),在 supervisor 之後[停止並重新啟動](#the-supervisor-process)其程序時都會保留。您使用 `claude --bg --dangerously-skip-permissions` 或 `claude --bg --permission-mode bypassPermissions` 啟動的工作階段,在該次重新啟動後仍維持 `bypassPermissions`。您在工作階段中途使用 `/model` 或 `/effort` 變更的模型或 effort 也會保留。779您為背景工作階段選擇的權限模式、模型和 effort,以及[它帶入的設定旗標](#what-carries-over-when-you-background),在 supervisor 之後[停止並重新啟動](#the-supervisor-process)其程序時都會保留。您在工作階段中途使用 `/model` 或 `/effort` 變更的模型或 effort 也會保留。

777 780 

778如果工作階段的 effort 是取自您的設定,而不是來自 `--effort` 或 `/effort`,Claude Code 每次為該工作階段啟動程序時都會重新讀取您的設定。在您編輯 `settings.json` 中已儲存的 effort 後,變更會套用到您使用 `←` 或 `/bg` 移到背景的工作階段,以及它們之後的重新啟動。已儲存的 effort 是指 [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel) 鍵或 [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings) 項目。781如果工作階段的 effort 是取自您的設定,而不是來自 `--effort` 或 `/effort`,Claude Code 每次為該工作階段啟動程序時都會重新讀取您的設定。在您編輯 `settings.json` 中已儲存的 effort 後,變更會套用到您使用 `←` 或 `/bg` 移到背景的工作階段,以及它們之後的重新啟動。已儲存的 effort 是指 [`effortLevel`](/docs/zh-TW/settings-reference#effortlevel) 鍵或 [`modelSettings`](/docs/zh-TW/settings-reference#modelsettings) 項目。

779 782 


822| `claude attach <id\|name>` | 在此終端機中附加到工作階段 |825| `claude attach <id\|name>` | 在此終端機中附加到工作階段 |

823| `claude logs <id\|name>` | 列印工作階段的最近輸出 |826| `claude logs <id\|name>` | 列印工作階段的最近輸出 |

824| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |827| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |

825| `claude respawn <id>` | 重新啟動工作階段(執行中或已停止),例如用於採用更新的 Claude Code 二進位檔案。重新啟動的工作階段會繼續其已儲存的對話;當磁碟上沒有對話時,它會再次執行其原始提示詞作為新對話 |828| `claude respawn <id>` | 重新啟動工作階段(執行中或已停止),例如用於採用更新的 Claude Code 二進位檔案。具有已儲存對話的工作階段會繼續該對話 |

826| `claude respawn --all` | 重新啟動每個執行中的工作階段,例如一次將所有工作階段移至更新的 Claude Code 二進位檔案 |829| `claude respawn --all` | 重新啟動每個執行中的工作階段,例如一次將所有工作階段移至更新的 Claude Code 二進位檔案 |

827| `claude rm <id>` | 從清單中移除工作階段,以及 Claude 為其建立的 worktree(當安全刪除時);請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。對話逐字稿會保留在您的本機上,並可透過 `claude --resume` 繼續使用 |830| `claude rm <id>` | 從清單中移除工作階段,以及 Claude 為其建立的 worktree(當安全刪除時);請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。對話逐字稿會保留在您的本機上,並可透過 `claude --resume` 繼續使用 |

828| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | 刪除因未推送提交而拒絕刪除的工作階段,捨棄 worktree 及其分支和提交。傳遞拒絕列印的確切值;請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。需要 v2.1.260 或更新版本 |831| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | 刪除因未推送提交而拒絕刪除的工作階段,捨棄 worktree 及其分支和提交。傳遞拒絕列印的確切值;請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。需要 v2.1.260 或更新版本 |

829| `claude rm <id> --force-remove-worktree <worktree-id>` | 刪除因 git 或 `WorktreeRemove` hook 無法移除其 worktree 而拒絕刪除的工作階段,無論如何刪除 worktree 目錄並在儲存庫中保留其分支。傳遞拒絕列印的確切值;請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。需要 v2.1.268 或更新版本 |832| `claude rm <id> --force-remove-worktree <worktree-id>` | 刪除因 git 或 `WorktreeRemove` hook 無法移除其 worktree 而拒絕刪除的工作階段,無論如何刪除 worktree 目錄並在儲存庫中保留其分支。傳遞拒絕列印的確切值;請參閱 [刪除工作階段會移除什麼](#what-deleting-a-session-removes)。需要 v2.1.268 或更新版本 |

830| `claude daemon status` | 列印 [supervisor](#the-supervisor-process) 的狀態、版本、socket 目錄和 worker 計數 |833| `claude daemon status` | 列印 [supervisor](#the-supervisor-process) 的狀態、版本、socket 目錄和 worker 計數 |

831| `claude daemon logs` | 追蹤 supervisor 的日誌檔案 [`~/.claude/daemon.log`](#where-state-is-stored),在新行出現時列印出來,直到您按下 `Ctrl+C` |834| `claude daemon logs` | 追蹤 supervisor 的日誌檔案 [`~/.claude/daemon.log`](#where-state-is-stored),在新行出現時列印出來,直到您按下 `Ctrl+C` |

832| `claude daemon stop --any` | 停止 supervisor 程序及其託管的背景工作階段。傳遞 `--keep-workers` 以保持背景工作階段執行中,以便下一個 supervisor 可以重新連接到它們。下一個 `claude agents` 或 `claude --bg` 會啟動全新的 supervisor |835| `claude daemon stop --any` | 停止 supervisor 程序及其託管的背景工作階段。傳遞 `--keep-workers` 以保持背景工作階段執行中,以便[下一個 supervisor](#the-supervisor-process) 可以重新連接到它們。下一個 `claude agents` 或 `claude --bg` 會啟動全新的 supervisor |

833 836 

834`claude attach` 和 `claude logs` 可以使用工作階段名稱的一部分來取代 ID,例如 `claude logs "auth refactor"`。傳遞名稱需要 Claude Code v2.1.290 或更新版本。837`claude attach` 和 `claude logs` 可以使用工作階段名稱的一部分來取代 ID,例如 `claude logs "auth refactor"`。`claude attach` 僅在工作階段的程序執行中時才能依名稱開啟工作階段,因此若要重新啟動已停止的工作階段,請改為傳遞 ID。傳遞名稱需要 Claude Code v2.1.290 或更新版本。

835 838 

836<h3 id="list-sessions-as-json">839<h3 id="list-sessions-as-json">

837 將工作階段列為 JSON840 將工作階段列為 JSON


889* **已完成或等待您的下一條訊息,且未連接約一小時**:監督程序停止程序以釋放資源。透過提出問題結束其回合的工作階段計為等待您的下一條訊息。對話保存在磁碟上,下次您連接或回覆時,工作階段從中斷的地方恢復。使用 `Ctrl+T` 釘選工作階段以保持其程序執行。892* **已完成或等待您的下一條訊息,且未連接約一小時**:監督程序停止程序以釋放資源。透過提出問題結束其回合的工作階段計為等待您的下一條訊息。對話保存在磁碟上,下次您連接或回覆時,工作階段從中斷的地方恢復。使用 `Ctrl+T` 釘選工作階段以保持其程序執行。

890* **在監督程序執行時意外退出**:監督程序重新啟動程序。結束您自己使用 `←` 或 `/background` 背景化的工作階段(例如使用 `kill`)會將其標記為已停止而不是重新啟動。對於以關閉結束的工作階段,請參閱[工作階段在關閉後顯示為失敗或已停止](#sessions-show-as-failed-after-shutdown)。893* **在監督程序執行時意外退出**:監督程序重新啟動程序。結束您自己使用 `←` 或 `/background` 背景化的工作階段(例如使用 `kill`)會將其標記為已停止而不是重新啟動。對於以關閉結束的工作階段,請參閱[工作階段在關閉後顯示為失敗或已停止](#sessions-show-as-failed-after-shutdown)。

891* **自動更新後**:監督程序重新啟動自身到新版本,並在背景中移動閒置工作階段。正在工作、等待您或已連接的工作階段不會被中斷。894* **自動更新後**:監督程序重新啟動自身到新版本,並在背景中移動閒置工作階段。正在工作、等待您或已連接的工作階段不會被中斷。

895* **監督程序本身停止**,例如因為其程序從 Claude Code 外部被結束:在 macOS 和 Linux 上,每個工作階段的程序會等待約一分鐘,讓新的監督程序重新連接到它,若沒有則停止。請在這一分鐘內於 shell 中執行 `claude agents`,以啟動新的監督程序並保持您的工作階段執行。如果一分鐘先過去,工作階段會停止,但其保存的對話仍保留在磁碟上:連接或回覆工作階段,它便會從保存的對話重新啟動,如[工作階段在關閉後顯示為失敗或已停止](#sessions-show-as-failed-after-shutdown)中所述。

892 896 

893當工作階段的程序停止或重新啟動時,Claude 在其中啟動的背景 shell 命令、動態工作流程和背景 subagent 會轉移到其下一個程序;執行中的監視器和 subagent 啟動的 shell 命令會隨程序停止。刪除工作階段會停止它轉移的所有內容。要讓所有內容隨程序停止而不是轉移,請將 [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/zh-TW/env-vars#variables) 設定為 `1`。897當工作階段的程序停止或重新啟動時,Claude 在其中啟動的背景 shell 命令、動態工作流程和背景 subagent 會轉移到其下一個程序;執行中的監視器和 subagent 啟動的 shell 命令會隨程序停止。刪除工作階段會停止它轉移的所有內容。要讓所有內容隨程序停止而不是轉移,請將 [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/zh-TW/env-vars#variables) 設定為 `1`。

894 898 


911 915 

912要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。916要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。

913 917 

914該命令也會在執行中的監督程序版本與您叫用的 `claude` 版本不同時發出警告,這會在監督程序尚未重新啟動到新版本的更新後發生。警告會顯示兩個版本,並告訴您執行 `claude daemon stop --any` 以採用新版本。當 Claude Code 安裝為作業系統服務時,建議的命令是 `claude daemon stop`,不帶該旗標。918該命令也會在執行中的監督程序版本與您叫用的 `claude` 版本不同時發出警告,這會在監督程序尚未重新啟動到新版本的更新後發生。警告會顯示兩個版本,並告訴您執行 `claude daemon stop --any` 以採用新版本。

915 919 

916工作階段在該版本不匹配時保持完整:較舊的 Claude Code 版本更新工作階段的 `state.json` 時會保留它不識別的欄位,並保持工作階段列出。`roster.json` 中的工作階段列表遵循相同規則,因此由較新版本啟動的工作階段保持可達,並在監督程序重新啟動後繼續接受輸入。920工作階段在該版本不匹配時保持完整:較舊的 Claude Code 版本更新工作階段的 `state.json` 時會保留它不識別的欄位,並保持工作階段列出。`roster.json` 中的工作階段列表遵循相同規則,因此由較新版本啟動的工作階段保持可達,並在監督程序重新啟動後繼續接受輸入。

917 921 


963 967 

964關閉或重新啟動您的機器會停止執行中的背景工作階段。等待您輸入的工作階段在您回來時會保留在 `Needs input` 下。對於任何其他執行中的工作階段,agent view 顯示的內容取決於它上次取得進度的時間有多久:968關閉或重新啟動您的機器會停止執行中的背景工作階段。等待您輸入的工作階段在您回來時會保留在 `Needs input` 下。對於任何其他執行中的工作階段,agent view 顯示的內容取決於它上次取得進度的時間有多久:

965 969 

966* 在 48 小時內,工作階段顯示為失敗。附加或回覆它,它會從中斷的地方重新啟動。970* 在 48 小時內,工作階段顯示為失敗。附加或回覆它,它會從其已儲存的對話重新啟動。若要繼續被中斷的工作,請傳送回覆要求它繼續。

967* 超過 48 小時,例如機器關閉數天後,工作階段顯示為停止,並顯示 `ended while the background service was off`。在該列上按 `Enter`,頁尾會顯示 `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` 在同一列上再次按 `Enter` 以恢復其已儲存的對話。回覆或 `claude attach <id>` 會在沒有該頁尾提示的情況下恢復它。971* 超過 48 小時,例如機器關閉數天後,工作階段顯示為停止,並顯示 `ended while the background service was off`。在該列上按 `Enter`,頁尾會顯示 `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` 在同一列上再次按 `Enter` 以恢復其已儲存的對話。回覆或 `claude attach <id>` 會在沒有該頁尾提示的情況下恢復它。

968 972 

969當[逐字稿清理](/docs/zh-TW/settings-reference#cleanupperioddays)已移除停止工作階段的已儲存對話時,Claude Code 會拒絕開啟該列:訊息會說明沒有可恢復的內容。`claude rm <id>` 會刪除該列(上述[保留的情況](#what-deleting-a-session-removes)除外),而 `claude respawn <id>` 會再次執行其原始提示詞。請參閱[此工作階段的已儲存對話已不在磁碟上](/docs/zh-TW/errors#this-sessions-saved-conversation-is-no-longer-on-disk)。973當[逐字稿清理](/docs/zh-TW/settings-reference#cleanupperioddays)已移除停止工作階段的已儲存對話時,Claude Code 會拒絕開啟該列:訊息會說明沒有可恢復的內容。`claude rm <id>` 會刪除該列(上述[保留的情況](#what-deleting-a-session-removes)除外),而 `claude respawn <id>` 會再次執行其原始提示詞。請參閱[此工作階段的已儲存對話已不在磁碟上](/docs/zh-TW/errors#this-sessions-saved-conversation-is-no-longer-on-disk)。


1022claude daemon stop --any --keep-workers1026claude daemon stop --any --keep-workers

1023```1027```

1024 1028 

1025新的監督程序會重新連接到執行中的工作階段。如果沒有 `--keep-workers`,該命令也會結束背景工作階段。`--any` 旗標確認您想要停止按需啟動的監督程序,而不是作為已安裝服務啟動的監督程序,前者為預設情況。1029接著在 shell 中執行 `claude agents` 以啟動新的監督程序。如果您在停止後[約一分鐘](#the-supervisor-process)內執行,它會重新連接到仍在執行中的工作階段,其工作會不中斷地繼續。如果您花費更長時間,在 macOS 和 Linux 上,這些工作階段屆時已自行停止,附加或回覆其中一個會從其已儲存的對話重新啟動它。如果沒有 `--keep-workers`,該命令也會結束背景工作階段。`--any` 旗標可讓該命令停止由 Claude Code 按需啟動的監督程序。

1026 1030 

1027啟動但無法接受連接的監督程序會自行退出並釋放其鎖定,因此下一個 `claude agents` 會啟動新的監督程序,無需此手動停止。上述步驟適用於執行中的監督程序停滯的情況。1031啟動但無法接受連接的監督程序會自行退出並釋放其鎖定,因此下一個 `claude agents` 會啟動新的監督程序,無需此手動停止。上述步驟適用於執行中的監督程序停滯的情況。

1028 1032 


1040claude daemon stop --any --keep-workers1044claude daemon stop --any --keep-workers

1041```1045```

1042 1046 

1043下一個 `claude agents` 或 `claude --bg` 會啟動新的監督程序,該程序會讀取您的已儲存憑證。如果您使用環境變數(例如 `ANTHROPIC_API_KEY`)而不是 `/login` 進行身分驗證,請從已設定該變數的 shell 執行下一個命令。1047在[約一分鐘](#the-supervisor-process)內,於 shell 中執行 `claude agents` 或 `claude --bg` 以啟動新的監督程序,該程序會讀取您的已儲存憑證。如果您使用環境變數(例如 `ANTHROPIC_API_KEY`)而不是 `/login` 進行身分驗證,請從已設定該變數的 shell 執行下一個命令。

1044 1048 

1045請參閱[錯誤參考](/docs/zh-TW/errors#could-not-resolve-authentication-method)以取得完整的原因和修復清單。1049請參閱[錯誤參考](/docs/zh-TW/errors#could-not-resolve-authentication-method)以取得完整的原因和修復清單。

1046 1050 

analytics.md +1 −1

Details

67* **「需要 GitHub 應用程式」**:安裝 GitHub 應用程式以檢視貢獻指標67* **「需要 GitHub 應用程式」**:安裝 GitHub 應用程式以檢視貢獻指標

68* **「資料處理進行中」**:幾天後再檢查,如果資料未出現,請確認 GitHub 應用程式已安裝68* **「資料處理進行中」**:幾天後再檢查,如果資料未出現,請確認 GitHub 應用程式已安裝

69 69 

70貢獻指標支援 GitHub Cloud 和 GitHub Enterprise Server。70貢獻指標涵蓋託管於 github.com 上的儲存庫。對於 [GitHub Enterprise Server](/docs/zh-TW/github-enterprise-server) 上的儲存庫,分析儀表板僅顯示使用情況指標。

71 71 

72<h3 id="review-summary-metrics">72<h3 id="review-summary-metrics">

73 檢視摘要指標73 檢視摘要指標

Details

96 <Step title="新增使用者">96 <Step title="新增使用者">

97 您可以透過以下任一方法新增使用者:97 您可以透過以下任一方法新增使用者:

98 98 

99 * 從 Console 內大量邀請使用者:Settings -> Members -> Invite99 * 從 Console 的 Members 頁面 [platform.claude.com/settings/members](https://platform.claude.com/settings/members) 大量邀請使用者:點選 **Invite**

100 * [設定 SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)100 * [設定 SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

101 </Step>101 </Step>

102 102 


113 * 接受 Console 邀請113 * 接受 Console 邀請

114 * [檢查系統要求](/docs/zh-TW/setup#system-requirements)114 * [檢查系統要求](/docs/zh-TW/setup#system-requirements)

115 * [安裝 Claude Code](/docs/zh-TW/setup#install-claude-code)115 * [安裝 Claude Code](/docs/zh-TW/setup#install-claude-code)

116 * 使用 Console 帳戶認證登入116 * 使用 Console 帳戶憑證登入

117 </Step>117 </Step>

118</Steps>118</Steps>

119 119 

Details

1> ## Documentation Index

2> 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.

4 

5# 自動模式分類器請求費用

6 

7> 解決 Claude Code 通知說此工作階段不符合自動模式免費分類器請求資格的問題:它的含義、為什麼會出現,以及該怎麼辦。

8 

9在 [auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 中,分類器會在 shell 命令和網路請求等動作執行前檢查它們。在 [伺服器端檢查開啟](/docs/zh-TW/permission-modes#server-side-classifier-review) 的地方,伺服器會將這些檢查作為工作階段自身模型請求的一部分執行,不收費。此通知表示伺服器的檢查無法到達您的工作階段,因此 Claude Code 改為進行自己的分類器請求,在您的帳戶上這些請求會計入您的權杖使用量:

10 

11```text theme={null}

12We're changing auto mode to no longer charge for classifier requests in Claude Code. However, this session isn't eligible.

13```

14 

15在提示處,Claude Code 會暫停它要以這種方式檢查的第一個動作,直到您回答。沒有任何問題:auto mode 會繼續運作,其分類器請求會像以前一樣被計費。最常見的原因是 Claude Code 和 API 之間有 LLM 閘道或代理,當 Claude Code 能夠識別一個時,通知會命名它。按下 **Enter** 繼續,或參閱 [使工作階段符合資格](#make-the-session-eligible) 以防止它在新工作階段中出現。

16 

17<h2 id="respond-to-the-notice">

18 回應通知

19</h2>

20 

21通知會保留該動作,直到您回答為止:

22 

23* **Enter** 繼續:保留的動作和工作階段的其餘部分使用 Claude Code 自己的分類器請求,按照之前的方式計費為代幣使用量,且該通知在該工作階段中不會再出現。當通知命名了閘道時,確認它會防止它在此機器上的 24 小時內再次出現。當它沒有時,通知會在下次工作階段回退時返回。

24* **Esc** 或 **Ctrl+C** 取消:保留的動作不會執行,目前的回合停止,工作階段仍處於自動模式。沒有任何內容被記住,所以通知會在下一個檢查的動作之前再次出現。

25 

26若要停止使用自動模式,請在您回答後使用 `Shift+Tab` 切換權限模式。

27 

28在無法等待答案的地方,Claude Code 會報告相同的文字,工作階段會繼續以自動模式執行,除非此機器上過去 24 小時內的閘道確認已將其關閉。在[非互動模式](/docs/zh-TW/headless)中使用 `-p` 時,它會將文字列印到 stderr,在 `stream-json` 輸出中,它會發出 `system` 警告訊息,Agent SDK 應用程式可以從訊息流中讀取。

29 

30<h2 id="make-the-session-eligible">

31 使工作階段符合資格

32</h2>

33 

34如果閘道是原因,請要求您公司的管理員或您的閘道提供者讓請求和回覆保持不變地通過。這表示轉發請求標頭和本文欄位時保持原樣,包括閘道不識別的欄位,例如 `safeguards` 請求欄位,以及返回回應和串流事件時不刪除金鑰,例如 `safeguard_results` 欄位或重寫工具使用 ID,如[閘道相容性指南](/docs/zh-TW/llm-gateway-protocol#feature-pass-through)所述。以這種方式通過流量的閘道可繼續與此功能和未來功能搭配運作。新工作階段隨後會再次使用伺服器的檢查。

35 

36如果您已經知道您的閘道無法提供伺服器的檢查,請在啟動工作階段之前,在您的 shell 或 [`env` 設定金鑰](/docs/zh-TW/settings-reference#env)中將 `CLAUDE_CODE_AUTO_MODE_SERVER` 設定為 `0`,以告訴 Claude Code 不要在該處要求檢查:

37 

38```bash theme={null}

39export CLAUDE_CODE_AUTO_MODE_SERVER=0

40```

41 

42分類器請求隨後始終是 Claude Code 自己的,以相同方式計費,通知不會出現。在直接連線到 Anthropic API 時,該變數需要 Claude Code v2.1.281 或更新版本。在 `CLAUDE_CODE_AUTO_MODE_SERVER` 未設定的情況下設定 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` 也會關閉伺服器的檢查,除了[停用發行前功能](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities)所述的情況。

43 

44`CLAUDE_CODE_AUTO_MODE_SERVER` 是暫時設定,可能會在更新版本中移除。

45 

46<h2 id="why-the-notice-appears">

47 為什麼會出現通知

48</h2>

49 

50[伺服器端 classifier 審查](/docs/zh-TW/permission-modes#server-side-classifier-review)列出哪些工作階段向伺服器請求 classifier 檢查。Pro、Max 和 Team 方案永遠不會顯示通知。當它出現時,通常的原因是:

51 

52* **路徑中有 LLM 閘道或代理**:一個會刪除或重寫請求標頭、丟棄它不認識的請求欄位,或編輯回應的閘道。伺服器隨後永遠不會收到檢查請求,或 Claude Code 永遠不會收到結果。當您的設定或回應識別出閘道時,通知會將其命名。

53* **伺服器端檢查尚未到達您的平台、區域或認證**:平台或區域是否執行檢查取決於該平台的推出。如果您看到通知且路徑中沒有閘道或代理,並且它持續出現,這是可能的原因。若要確認,請聯絡支援或您公司的管理員,或使用 `/feedback` 報告。

54 

55若要檢查處於自動模式的工作階段,請在 Claude Code 提示符處執行 `/status`:其 **Auto mode server** 列在伺服器的檢查決定工作階段的動作時讀取 `Enabled`,在工作階段已回退時讀取 `Disabled`。

56 

57當閘道截斷回應或將結果重寫成 Claude Code 無法讀取的形式時,您會收到沒有判決的拒絕,而不是此通知;請參閱[伺服器端 classifier 審查](/docs/zh-TW/permission-modes#server-side-classifier-review)。

58 

59<h2 id="related-resources">

60 相關資源

61</h2>

62 

63* [Auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode):什麼是 auto mode 以及它預設會阻止什麼

64* [Server-side classifier review](/docs/zh-TW/permission-modes#server-side-classifier-review):哪些工作階段要求伺服器檢查動作,以及每個工作階段所需的 Claude Code 版本

65* [Gateway compatibility guide](/docs/zh-TW/llm-gateway-protocol#feature-pass-through):當閘道移除標頭或主體欄位時會發生什麼

66* [The server returned no safety verdict](/docs/zh-TW/errors#the-server-returned-no-safety-verdict):當伺服器對某個動作未提供判決時您看到的拒絕

67* [Manage costs effectively](/docs/zh-TW/costs):追蹤權杖使用量並降低 Claude Code 成本

Details

383 383 

384螢幕上另外兩個報告拒絕的位置會省略命令或 URL:輸入框附近的通知(例如 `bash denied by auto mode · [Data Exfiltration] · /permissions`)會提供工具和原因,而 **Recently denied** 標籤會按 Claude 為其撰寫的描述列出 shell 命令。若要以程式設計方式擷取這些拒絕的確切輸入,請新增 [`PermissionDenied` hook](/docs/zh-TW/hooks#permissiondenied),它會將其作為 `tool_input` 接收。384螢幕上另外兩個報告拒絕的位置會省略命令或 URL:輸入框附近的通知(例如 `bash denied by auto mode · [Data Exfiltration] · /permissions`)會提供工具和原因,而 **Recently denied** 標籤會按 Claude 為其撰寫的描述列出 shell 命令。若要以程式設計方式擷取這些拒絕的確切輸入,請新增 [`PermissionDenied` hook](/docs/zh-TW/hooks#permissiondenied),它會將其作為 `tool_input` 接收。

385 385 

386呼叫下方的文字會告訴您是否有任何需要修復的內容。報告分類器本身問題的文字,例如 `is temporarily unavailable` 的模型或分類器錯誤,表示 Claude Code 在沒有分類器最終判決的情況下阻止了呼叫;請參閱[自動模式無法判定動作的安全性](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)以了解該怎麼做。否則,讀取 `Denied by auto mode classifier` 的行加上原因(例如 `[Production Deploy]` 或 `Blocked by classifier`)表示分類器判定呼叫不安全,因此請從呼叫嘗試到達或執行的內容中選擇修復:386呼叫下方的文字會告訴您是否有任何需要修復的內容。暗色的 `Not run · auto mode's check had no usable answer` 列,或報告分類器本身問題的文字(例如 `Auto mode could not evaluate this action`),表示 Claude Code 在沒有分類器判決的情況下阻止了呼叫。若為 `Not run` 列,請按 `Ctrl+O` 閱讀完整訊息,然後參閱[自動模式無法判定動作的安全性](/docs/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)或[伺服器未傳回安全判決](/docs/zh-TW/errors#the-server-returned-no-safety-verdict)以了解該怎麼做。

387 

388否則,顯示 `Denied by auto mode classifier` 的行加上原因(例如 `[Production Deploy]` 或 `Blocked by classifier`)表示分類器判定呼叫不安全,因此請從呼叫嘗試到達或執行的內容中選擇修復:

387 389 

388* 一個 Claude 在整個任務中需要的目的地,例如套件登錄、內部網域或儲存庫主機:將其新增至 `autoMode.environment`。390* 一個 Claude 在整個任務中需要的目的地,例如套件登錄、內部網域或儲存庫主機:將其新增至 `autoMode.environment`。

389* 一個您想要從現在開始無需檢視即可執行的命令:新增 `allow` 規則。391* 一個您想要從現在開始無需檢視即可執行的命令:新增 `allow` 規則。

Details

114 訊息在回合中途傳送未進行檢查點114 訊息在回合中途傳送未進行檢查點

115</h3>115</h3>

116 116 

117當您[在 Claude 工作時排隊的訊息](/docs/zh-TW/interactive-mode#queue-messages-while-claude-works)在執行中的回合內到達 Claude 時,它會加入該回合而不是開始新的回合。訊息會出現在對話中,但 Claude Code 不會為其建立檢查點。Claude Code 作為新回合的一部分傳送的排隊訊息會照常獲得檢查點,包括當多個排隊訊息[共享該回合](/docs/zh-TW/interactive-mode#when-claude-code-sends-what-you-queued)時。117在回溯功能表中,您[在 Claude 仍在工作時輸入的訊息](/docs/zh-TW/interactive-mode#queue-messages-while-claude-works)可能會被標記為**不復原程式碼**。Claude 在其回合結束前讀取了該訊息。[檢查點是為開始回合的提示詞建立的](#how-checkpoints-work),因此此訊息沒有自己的檢查點。Claude 讀取該訊息後所做的編輯會計入開始該回合的提示詞。

118 118 

119若要撤銷 Claude 在此類訊息之後所做的編輯,請回溯到開始該回合的提示詞。這會回溯整個回合,包括 Claude 在您的訊息到達之前所做的工作。119您不需要對訊息本身做任何處理。若要撤銷工作階段中該部分的檔案變更,請選擇開始該回合的提示詞,然後選擇**復原程式碼**或**復原程式碼和對話**。這會還原 Claude 在整個回合中的檔案編輯,包括您的訊息到達之前所做的編輯。選擇被標記的訊息仍會提供**復原對話**,這會將對話回溯到該訊息,並保持您的檔案原樣。

120 120 

121<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

122 符號連結和硬連結路徑未復原122 符號連結和硬連結路徑未復原

123</h3>123</h3>

124 124 

125Checkpointing 不會回溯符號連結或硬連結檔案。當您從 `/rewind` 功能表中選擇**復原程式碼**或**復原程式碼和對話**時,Claude Code 會跳過任何是符號連結或硬連結的追蹤路徑,並顯示 `已復原程式碼,但跳過 N 個檔案`警告。跳過的檔案保持其目前內容。若要撤銷會話對其中一個檔案的變更,請要求 Claude 反轉編輯或自己編輯檔案。dotfile 管理器符號連結到您的專案中的設定檔以及 pnpm 硬連結到位置的檔案都屬於此類別。125檢查點功能不會回溯符號連結或硬連結檔案。當您從 `/rewind` 功能表中選擇**復原程式碼**或**復原程式碼和對話**時,Claude Code 會跳過任何是符號連結或硬連結的追蹤路徑,並顯示 `Restored the code, but skipped N files` 警告。跳過的檔案保持其目前內容。若要撤銷工作階段對其中一個檔案的變更,請要求 Claude 反轉編輯或自己編輯檔案。dotfile 管理器符號連結到您的專案中的設定檔以及 pnpm 硬連結到位置的檔案都屬於此類別。

126 126 

127若要查看復原跳過的路徑,請在復原前使用 `/debug` 開啟偵錯記錄:`~/.claude/debug/<session-id>.txt` 中的偵錯記錄會列出每個跳過的路徑。如需每個跳過原因和復原步驟,請參閱[錯誤參考中的 skipped-files 項目](/docs/zh-TW/errors#restored-the-code-but-skipped-files)。127若要查看復原跳過的路徑,請在復原前使用 `/debug` 開啟偵錯記錄:`~/.claude/debug/<session-id>.txt` 中的偵錯記錄會列出每個跳過的路徑。如需每個跳過原因和復原步驟,請參閱[錯誤參考中的 skipped-files 項目](/docs/zh-TW/errors#restored-the-code-but-skipped-files)。

128 128 

chrome.md +3 −4

Details

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* **您輸入了 `@browser`**:擴充功能會批准 Claude Code 原本會詢問您的每個瀏覽器操作。134在因[預設啟用](#enable-chrome-by-default)已開啟而於啟動時連線到瀏覽器的工作階段中,在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,Claude Code 都會在您尚未允許的網站上執行瀏覽器操作前詢問您。在 Auto 和 Bypass permissions 模式下,此行為會持續到您在該工作階段中輸入 `@browser` 為止。

135* **由[預設啟用](#enable-chrome-by-default)設定在啟動時連線**:在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,Claude Code 都會在您尚未允許的網站上執行瀏覽器操作前詢問您,直到您在該工作階段中輸入 `@browser` 為止。

136 135 

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

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

139</h3>138</h3>

140 139 

141在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中,Claude 錄製 GIF、開啟新分頁或執行捷徑之前,會出現權限提示,但在您輸入了 [`@browser`](#permission-prompts-in-vs-code-sessions) 的 VS Code 工作階段中除外。在互動式 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)已關閉,這些呼叫會在無提示的情況下執行。

142 141 

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

144 143 

Details

261 連接開發人員261 連接開發人員

262</h2>262</h2>

263 263 

264開發人員從自己的筆記型電腦使用一次瀏覽器登入進行連接,使用他們的公司工作帳戶。他們不需要 claude.ai 帳戶、API 金鑰或訂閱,因為對模型的請求透過使用組織上游憑證的閘道進行。連接由您透過 MDM 推送的[用戶端側受管設定](/docs/zh-TW/claude-apps-gateway-config#client-side-managed-settings)驅動,因此開發人員端沒有手動設定;本節涵蓋管理員設定的內容。264開發人員從自己的筆記型電腦使用一次瀏覽器登入進行連接,使用他們的公司工作帳戶。他們不需要 claude.ai 帳戶、API 金鑰或訂閱,因為對模型的請求透過使用組織上游憑證的閘道進行。連接由您透過 MDM 推送的[用戶端側受管設定](/docs/zh-TW/claude-apps-gateway-config#client-side-managed-settings)驅動,本節涵蓋管理員設定的內容。

265 265 

266CLI 在首次連接時對閘道的 TLS 葉憑證進行指紋識別,並按主機名固定它。它在登入期間、無聲工作階段重新整理期間和受管設定擷取期間再次檢查該固定,而推論請求使用標準 TLS 驗證而不使用固定。透過 HTTPS 代理伺服器路由的請求會跳過固定檢查,因此將閘道主機新增至 `NO_PROXY` 以保持它們直接連線。266CLI 在首次連接時對閘道的 TLS 葉憑證進行指紋識別,並按主機名固定它。它在登入期間、無聲工作階段重新整理期間和受管設定擷取期間再次檢查該固定,而推論請求使用標準 TLS 驗證而不使用固定。透過 HTTPS 代理伺服器路由的請求會跳過固定檢查,因此將閘道主機新增至 `NO_PROXY` 以保持它們直接連線。

267 267 


285 設定閘道 URL285 設定閘道 URL

286</h3>286</h3>

287 287 

288三個設定鍵放入您透過 MDM 或直接在磁碟上部署的各 OS [受管設定檔](/docs/zh-TW/managed-settings#delivery-mechanisms)。`forceLoginMethod` 和 `forceLoginGatewayUrl` 在**雲端閘道**畫面上直接開啟 `/login`,URL 已填入,而 `parentSettingsBehavior: "merge"` 讓 Claude Desktop 將閘道的出口允許清單傳遞給它啟動的 Claude Code 工作階段,詳見[將原則傳遞給 Claude Desktop 工作階段](#deliver-policy-to-claude-desktop-sessions):288三個設定鍵放入您透過 MDM 或直接在磁碟上部署的各 OS [受管設定檔](/docs/zh-TW/managed-settings#delivery-mechanisms)。對於沒有受管設定的機器,請改為參閱[在使用者設定中設定閘道 URL](#set-the-gateway-url-in-user-settings)。`forceLoginMethod` 和 `forceLoginGatewayUrl` 在**雲端閘道**畫面上直接開啟 `/login`,URL 已填入,而 `parentSettingsBehavior: "merge"` 讓 Claude Desktop 將閘道的出口允許清單傳遞給它啟動的 Claude Code 工作階段,詳見[將原則傳遞給 Claude Desktop 工作階段](#deliver-policy-to-claude-desktop-sessions):

289 289 

290```json theme={null}290```json theme={null}

291{291{


297 297 

298開發人員按 Enter 進行連接。[首次連接 TLS 指紋提示](#connect-developers)仍然出現。一旦檔案在機器上,未完成閘道登入的開發人員會看到[管理員原則要求雲端閘道登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in)下所述的其中一則訊息。透過環境變數(例如 `CLAUDE_CODE_USE_BEDROCK`)選擇雲端提供商的開發人員不需要閘道登入。298開發人員按 Enter 進行連接。[首次連接 TLS 指紋提示](#connect-developers)仍然出現。一旦檔案在機器上,未完成閘道登入的開發人員會看到[管理員原則要求雲端閘道登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in)下所述的其中一則訊息。透過環境變數(例如 `CLAUDE_CODE_USE_BEDROCK`)選擇雲端提供商的開發人員不需要閘道登入。

299 299 

300開發人員無法手動設定此項。登入選擇器中沒有閘道選項,`forceLoginGatewayUrl` 在開發人員自己的設定檔中被忽略。單獨使用 `forceLoginMethod` 而沒有 URL,會讓開發人員停留在「聯絡您的 IT 管理員」訊息處。登入設定鍵應該在您推送到機器的檔案中,而不是在閘道的 `managed.policies[].cli` 區塊中,該區塊僅到達已連接的用戶端。300登入選擇器中沒有閘道選項,而在受管設定中單獨使用 `forceLoginMethod` 而沒有 URL,會讓開發人員停留在「聯絡您的 IT 管理員」訊息處。登入設定鍵應該在您推送到機器的檔案中,而不是在閘道的 `managed.policies[].cli` 區塊中,該區塊僅到達已連接的用戶端。

301 

302<h4 id="set-the-gateway-url-in-user-settings">

303 在使用者設定中設定閘道 URL

304</h4>

305 

306在沒有受管設定的機器上,請讓每位開發人員將 `forceLoginMethod` 和 `forceLoginGatewayUrl` 新增至其自己的使用者設定檔 `~/.claude/settings.json`。這需要開發人員機器上的 Claude Code v2.1.295 或更新版本。此範例指定位於 `claude-gateway.internal.example.com` 的閘道:

307 

308```json theme={null}

309{

310 "forceLoginMethod": "gateway",

311 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

312}

313```

314 

315當開發人員在 Claude Code 提示字元執行 `/login` 時,**雲端閘道**畫面會以該位址開啟,開發人員按 Enter 進行連接。[首次連接 TLS 指紋提示](#connect-developers)仍然出現。以此方式設定的設定鍵適用下列限制:

316 

317* **僅限使用者設定**:Claude Code 從 `~/.claude/settings.json` 讀取這兩個設定鍵,而不是從專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 讀取。

318* **受管設定會將其關閉**:一旦管理員的設定透過受管設定檔、macOS plist 或 Windows HKLM 原則,或[原則 helper](/docs/zh-TW/settings-reference#policyhelper) 到達機器,Claude Code 會忽略使用者設定中指定的閘道。

301 319 

302<h3 id="allow-a-gateway-on-public-address-space-you-own">320<h3 id="allow-a-gateway-on-public-address-space-you-own">

303 允許您擁有的公開位址空間上的閘道321 允許您擁有的公開位址空間上的閘道

Details

979 * **混用鍵**:同時含有 `code` 與 `cli`(或其較早的寫法 `settings`)的檔案會使閘道在啟動時停止。請在一次編輯中將所有區塊放在同一個鍵下。979 * **混用鍵**:同時含有 `code` 與 `cli`(或其較早的寫法 `settings`)的檔案會使閘道在啟動時停止。請在一次編輯中將所有區塊放在同一個鍵下。

980</Warning>980</Warning>

981 981 

982原則的 Claude Code 設定(例如拒絕讀取 `.env` 檔案的規則)放在 `cli` 或 `code` 鍵下的區塊中。兩個鍵接受相同的內容。鍵決定設定在何處執行:982政策的 Claude Code 設定(例如拒絕讀取 `.env` 檔案的規則)放在 `cli` 或 `code` 鍵之下的區塊中。`code` 是建議使用的鍵,`cli` 是舊版鍵。兩個鍵接受相同的內容。鍵決定設定在哪裡執行:

983 983 

984* **`cli`**:終端機、VS Code 與 JetBrains 擴充功能,以及 Agent SDK。使用 `cli` 時,Claude Desktop 的 Code 分頁會取得[衍生設定](#claude-desktop-overlay),因此像 `Read(./.env)` 這類有範圍的規則在那裡不會阻止使用者。984* **`cli`**:終端機、VS Code 與 JetBrains 擴充功能,以及 Agent SDK。使用 `cli` 時,Claude Desktop 的 Code 分頁會取得[衍生設定](#claude-desktop-overlay),因此像 `Read(./.env)` 這類有範圍的規則在那裡不會阻止使用者。

985* **`code`**:相同的位置,並且也可以涵蓋 Claude Desktop 的 Code 分頁。985* **`code`**:相同的位置,並且也可以涵蓋 Claude Desktop 的 Code 分頁。

986 986 

987要選擇的是這些設定是否也應涵蓋 Code 分頁。若不需要,則不必變更任何東西。使用 `cli` 的檔案會照常運作,而閘道若在帶有 [`desktop`](#claude-desktop-overlay) 鍵的原則中發現 `cli`,會在啟動時發出警告但仍會啟動。若要涵蓋 Code 分頁,請改用建議的鍵 `code`。987使用 `cli` 的檔案會照舊運作;若閘道在具有 [`desktop`](#claude-desktop-overlay) 鍵的政策中發現 `cli`,會在啟動時發出警告並照常啟動。請切換為 `code`,讓設定也能涵蓋 Code 分頁。

988 988 

989切換之前,請先閱讀[在 Code 分頁中套用 `code` 設定](#apply-code-settings-in-the-code-tab)。原則需要 `desktop` 鍵,且使用者的電腦需要先完成設定,設定才會在那裡生效,而且 Claude Desktop 中的網路搜尋會被關閉。989切換之前,請先閱讀[在 Code 分頁中套用 `code` 設定](#apply-code-settings-in-the-code-tab)。原則需要 `desktop` 鍵,且使用者的電腦需要先完成設定,設定才會在那裡生效,而且 Claude Desktop 中的網路搜尋會被關閉。

990 990 


1689 用戶端受管設定1689 用戶端受管設定

1690</h2>1690</h2>

1691 1691 

1692上面的所有內容設定閘道伺服器。將開發人員機器指向它在每個裝置上單獨設定,透過 Claude Code 的[受管設定](/docs/zh-TW/managed-settings)。閘道無法自己推送登入鍵,因為它們是告訴用戶端閘道在哪裡的內容。1692以上所有內容都是在設定閘道伺服器。您需要在每部裝置上,透過 Claude Code 的[受管設定](/docs/zh-TW/managed-settings)另外將開發人員的電腦指向閘道。閘道本身無法推送登入金鑰,因為正是這些金鑰告訴用戶端閘道的位置。

1693 1693 

1694對於 CLI,在每個 OS 的 `managed-settings.json` 中設定這些鍵。這兩個登入鍵將每個開發人員的 `/login` 路由到您的閘道:1694對於 CLI,請在各作業系統的 `managed-settings.json` 中設定這些金鑰。兩個登入金鑰會將每位開發人員的 `/login` 導向您的閘道:

1695 1695 

1696```json theme={null}1696```json theme={null}

1697{1697{


1701}1701}

1702```1702```

1703 1703 

1704`parentSettingsBehavior: "merge"` 保持 Claude Desktop 將出站允許清單傳遞到其嵌入式 Claude Code 工作階段的功能;[將原則傳遞到 Claude Desktop 工作階段](/docs/zh-TW/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions)說明了機制以及選擇加入必須位於何處。1704`parentSettingsBehavior: "merge"` 可讓 Claude Desktop 持續將輸出允許清單傳遞給其內嵌的 Claude Code 工作階段;[將原則傳遞至 Claude Desktop 工作階段](/docs/zh-TW/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions)說明了其運作機制,以及選擇加入設定必須放在何處。

1705 1705 

1706若要防止開發人員使用雲端提供者變數或自己的 `ANTHROPIC_BASE_URL` 繞過閘道,請將 `"allowedProviders": ["gateway"]` 新增到同一檔案。Claude Code 隨後會拒絕機器上未設定為 Cloud 閘道的每個工作階段,並且僅在閘道是 `forceLoginGatewayUrl` 命名的閘道或檔案的 `env` 區塊設定為 `ANTHROPIC_BASE_URL` 的 URL 的閘道時才允許。`claude gateway` 拒絕在設定清單的機器上執行,因此請將鍵保留在閘道主機之外。請參閱設定參考中的 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 項目。需要 Claude Code v2.1.285 或更新版本。1706若要防止開發人員使用雲端供應商變數或自行設定的 `ANTHROPIC_BASE_URL` 繞過閘道,請在同一個檔案中加入 `"allowedProviders": ["gateway"]`。Claude Code 隨後會拒絕該電腦上所有未設定為 Cloud 閘道的工作階段,且僅接受 `forceLoginGatewayUrl` 所指定的閘道,或是其 URL 由該檔案的 `env` 區塊設定為 `ANTHROPIC_BASE_URL` 的閘道。`claude gateway` 會拒絕在設定了此清單的電腦上執行,因此請勿在閘道主機上設定此金鑰。請參閱設定參考中的 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 項目。需要 Claude Code v2.1.285 或更新版本。

1707 1707 

1708將 `managed-settings.json` 檔案部署到每個裝置,通常透過您的 MDM 平台。檔案路徑因平台而異。請參閱[每個機制儲存原則的位置](/docs/zh-TW/managed-settings#where-each-mechanism-stores-the-policy)。1708將 `managed-settings.json` 檔案部署到每部裝置,通常是透過您的 MDM 平台。檔案路徑因平台而異。請參閱[各機制儲存原則的位置](/docs/zh-TW/managed-settings#where-each-mechanism-stores-the-policy)。

1709 1709 

1710根據預設,Windows 上的登錄原則或 macOS 上的受管偏好設定 plist 會取代 `managed-settings.json` 檔案,而不是與其合併,除了[上面的例外鍵和跨來源檢查](#precedence-with-other-managed-sources)。此程式碼片段中的所有三個鍵都遵循最高優先順序來源規則,因此透過群組原則或設定檔傳遞原則的機隊必須改為在該機制中放置全部三個。1710根據預設,Windows 上的登錄原則或 macOS 上的受管偏好設定 plist 會取代 `managed-settings.json` 檔案,而非與其合併,但[上述的例外金鑰與跨來源檢查](#precedence-with-other-managed-sources)除外。此程式碼片段中的三個金鑰都遵循最高優先順序來源規則,因此透過群組原則或設定描述檔傳遞原則的裝置群,必須改為在該機制中設定這三個金鑰。

1711 1711 

1712對於 Claude Desktop,在 Claude Desktop 自己的[受管設定](https://claude.com/docs/third-party/claude-desktop/configuration)中設定 `bootstrapUrl` 鍵為 `<listen.public_url>/user/bootstrap`。登入流程和每個群組原則在原則透過 `desktop` 鍵在伺服器端選擇加入後,與 CLI 的相符;沒有選擇加入,`/user/bootstrap` 會傳回 404。請參閱[Claude Desktop 覆蓋層](#claude-desktop-overlay)以了解伺服器端部分。1712對於 Claude Desktop,請在 Claude Desktop 本身的[受管設定](https://claude.com/docs/third-party/claude-desktop/configuration)中,將 `bootstrapUrl` 金鑰設為 `<listen.public_url>/user/bootstrap`。一旦原則在伺服器端以 `desktop` 金鑰選擇加入,登入流程與各群組原則便會與 CLI 的一致;若未選擇加入,`/user/bootstrap` 會傳回 404。伺服器端的部分請參閱 [Claude Desktop 覆蓋設定](#claude-desktop-overlay)。

1713 1713 

1714Claude Code 僅從機器上的受管來源尊重 [`forceLoginGatewayUrl`](/docs/zh-TW/settings-reference#forcelogingatewayurl)、[`gatewayInternalNetworks`](/docs/zh-TW/settings-reference#gatewayinternalnetworks) 和 [`forceLoginMethod`](/docs/zh-TW/settings-reference#forceloginmethod) 的 `"gateway"` 值:`managed-settings.json`、macOS plist 或 Windows HKLM 登錄,或原則協助程式。在開發人員自己的 `~/.claude/settings.json` 中設定它們無法設定閘道登入,在閘道承載中設定它們也無法。1714Claude Code 會採用來自電腦上受管來源的 [`forceLoginGatewayUrl`](/docs/zh-TW/settings-reference#forcelogingatewayurl)、[`gatewayInternalNetworks`](/docs/zh-TW/settings-reference#gatewayinternalnetworks),以及 [`forceLoginMethod`](/docs/zh-TW/settings-reference#forceloginmethod) 的 `"gateway"` 值:這些受管來源包括 `managed-settings.json`、macOS plist 或 Windows HKLM 登錄,或原則輔助程式。在閘道 payload 中設定這些金鑰並不會設定閘道登入。若要使用開發人員自己的 `~/.claude/settings.json`,請參閱[在使用者設定中設定閘道 URL](/docs/zh-TW/claude-apps-gateway#set-the-gateway-url-in-user-settings)。

1715 1715 

1716保留 `forceLoginMethod` 和 `forceLoginOrgUUID` 不在承載中。Claude Code 仍然從承載中讀取兩個鍵以進行其啟動認證檢查,因此在機器上保留 Anthropic 發行認證的開發人員在登入後仍會獲得[管理員原則需要 Cloud 閘道登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in)下所述的啟動退出。1716請勿將 `forceLoginMethod` 與 `forceLoginOrgUUID` 放入 payload 中。Claude Code 在啟動時的憑證檢查仍會從 payload 讀取這兩個金鑰,因此若開發人員在電腦上保留了 Anthropic 核發的憑證,即使登入後,仍會遇到 [Administrator policy requires a Cloud gateway sign-in](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in) 中所述的啟動時結束情形。

1717 1717 

1718<h2 id="related">1718<h2 id="related">

1719 相關1719 相關

Details

135 將閘道 URL 推送到開發人員機器135 將閘道 URL 推送到開發人員機器

136</h3>136</h3>

137 137 

138一旦閘道開始提供服務,透過受管設定、MDM 或直接寫入各個 OS `managed-settings.json` 將 `forceLoginMethod`、`forceLoginGatewayUrl` 和 `parentSettingsBehavior: "merge"` 推送到每個開發人員的機器。沒有這個,`/login` 顯示標準帳戶選擇器,沒有閘道選項。138一旦閘道開始提供服務,透過受管設定,經由 MDM 或直接寫入各個 OS 的 `managed-settings.json`,將 `forceLoginMethod`、`forceLoginGatewayUrl` 和 `parentSettingsBehavior: "merge"` 推送到每個開發人員的機器。

139 139 

140一旦您部署金鑰,Claude Code 就會停止在機器上使用剩餘的 API 金鑰或 claude.ai 登入,因此請將推送與您的登入指示一起規劃。[管理員原則需要 Cloud 閘道登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in)描述開發人員看到的訊息。140一旦您部署金鑰,Claude Code 就會停止在機器上使用剩餘的 API 金鑰或 claude.ai 登入,因此請將推送與您的登入指示一起規劃。[管理員原則需要 Cloud 閘道登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in)描述開發人員看到的訊息。

141 141 

Details

277 277 

278當執行緒的模型支援時,執行緒在 [auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 中執行,因此大多數工具呼叫執行而不詢問您。當執行緒需要您的批准時,提示在該執行緒內,執行緒等待直到您在那裡回答。在 project 對話中告訴 Claude 繼續不會到達它。278當執行緒的模型支援時,執行緒在 [auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 中執行,因此大多數工具呼叫執行而不詢問您。當執行緒需要您的批准時,提示在該執行緒內,執行緒等待直到您在那裡回答。在 project 對話中告訴 Claude 繼續不會到達它。

279 279 

280每個批准涵蓋該提示,或如果您選擇更廣泛的選項,則涵蓋該執行緒的其餘部分。要讓每個執行緒執行某些命令而不詢問,或阻止某些,請將 [permission rules](/docs/zh-TW/permissions) 添加到儲存庫的 `.claude/settings.json`。執行緒僅在有一個儲存庫的 project 中應用它們;請參閱 [執行緒從您的儲存庫中選擇什麼](#what-threads-pick-up-from-your-repositories)。在有多個儲存庫的 project 中,沒有儲存庫的權限規則到達雲端執行緒,因此您依賴 auto mode 和您在每個執行緒內給出的批准。280每次核准涵蓋該權限提示,或者如果您選擇更廣泛的選項,則涵蓋該執行緒的其餘部分。

281 

282要讓每個執行緒執行某些命令而不詢問,或封鎖某些命令,請將[權限規則](/docs/zh-TW/permissions)新增到儲存庫的 `.claude/settings.json`。請確認您 project 中的雲端執行緒會套用它們:

283 

284* **一個儲存庫**:雲端執行緒會套用這些規則。請參閱[執行緒從您的儲存庫中取得什麼](#what-threads-pick-up-from-your-repositories)。

285* **多個儲存庫,Anthropic 託管的環境**:沒有任何儲存庫的權限規則會傳達到雲端執行緒,因此您依賴自動模式以及您在每個執行緒內給予的核准。

286* **多個儲存庫,自行託管的環境**:請參閱[哪個儲存庫的設定會套用](/docs/zh-TW/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories)。

281 287 

282<h3 id="run-a-thread-on-your-own-computer">288<h3 id="run-a-thread-on-your-own-computer">

283 在您自己的電腦上執行執行緒289 在您自己的電腦上執行執行緒


381 執行緒從您的儲存庫中取得什麼387 執行緒從您的儲存庫中取得什麼

382</h3>388</h3>

383 389 

384每個雲端執行緒複製專案中的每個儲存庫,並從所有儲存庫載入 `CLAUDE.md` 和技能。權限規則、hooks 和 `env` 僅來自執行緒啟動所在目錄中的 `.claude/settings.json`:當專案有一個時在儲存庫內,當它有多個時在複製上方,其中沒有儲存庫的檔案被讀取用於它們。390每個雲端執行緒複製專案中的每個儲存庫,並從所有儲存庫載入 `CLAUDE.md` 和 skill。權限規則、hook 和 `env` 僅來自執行緒啟動所在目錄中的 `.claude/settings.json`。

385 391 

386| 在每個儲存庫中 | 一個儲存庫 | 多個儲存庫 |392| 在每個儲存庫中 | 一個儲存庫 | 多個儲存庫 |

387| :- | :- | :- |393| :- | :- | :- |

388| `CLAUDE.md` | 在執行緒啟動時載入 | 在執行緒啟動時從每個儲存庫載入 |394| `CLAUDE.md` | 在執行緒啟動時載入 | 在執行緒啟動時從每個儲存庫載入 |

389| `.claude/` 下的技能、代理和命令 | 已載入 | 從每個儲存庫載入 |395| `.claude/` 下的技能、代理和命令 | 已載入 | 從每個儲存庫載入 |

390| 在 `.claude/settings.json` 中啟用的外掛程式 | 未載入。改為在**專案設定 > 外掛程式**中新增外掛程式 | 未載入。改為在**專案設定 > 外掛程式**中新增外掛程式 |396| 在 `.claude/settings.json` 中啟用的外掛程式 | 未載入。改為在**專案設定 > 外掛程式**中新增外掛程式 | 未載入。改為在**專案設定 > 外掛程式**中新增外掛程式 |

391| 在 `.claude/settings.json` 中定義的權限規則、hooks 和 `env` | 套用到執行緒,除了[沒有雲端工作階段遵守](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)的 `env` 鍵 | 不套用 |397| 在 `.claude/settings.json` 中定義的權限規則、hook 和 `env` | 套用到執行緒,除了[沒有雲端工作階段遵守](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)的 `env` 鍵 | 在 Anthropic 託管的環境中不套用。對於自行託管的環境,請參閱[套用哪個儲存庫的設定](/docs/zh-TW/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

392 398 

393在具有多個儲存庫的專案中,每個複製都附加到執行緒作為[其他目錄](/docs/zh-TW/memory#load-from-additional-directories),啟用了 `CLAUDE.md` 載入,這就是為什麼每個儲存庫的 `CLAUDE.md` 和技能在啟動時載入,儘管執行緒在它們上方啟動。在這樣的專案中,將常設規則放在專案指示中,並通過[雲端環境](#choose-an-environment-for-threads)為執行緒提供環境變數。399在具有多個儲存庫的專案中,將常設規則放在專案指示中,並通過[雲端環境](#choose-an-environment-for-threads)為執行緒提供環境變數。

394 400 

395<h3 id="choose-an-environment-for-threads">401<h3 id="choose-an-environment-for-threads">

396 為執行緒選擇環境402 為執行緒選擇環境


406 412 

407雲端執行緒沒有僅在您的機器上安裝的技能、MCP 伺服器、外掛程式和工具。通過[遠端控制](/docs/zh-TW/remote-control)在您的機器上執行的執行緒使用那裡安裝的內容。要使這些中的每一個對雲端執行緒可用:413雲端執行緒沒有僅在您的機器上安裝的技能、MCP 伺服器、外掛程式和工具。通過[遠端控制](/docs/zh-TW/remote-control)在您的機器上執行的執行緒使用那裡安裝的內容。要使這些中的每一個對雲端執行緒可用:

408 414 

409* 技能、子代理和命令:將它們提交到您新增到專案的儲存庫,例如 `.claude/skills/<skill-name>/SKILL.md` 中的技能。每個雲端執行緒複製專案中的每個儲存庫,並從每個儲存庫載入 `.claude/skills/`、`.claude/agents/` 和 `.claude/commands/`,因此提交到一個儲存庫的技能在每個雲端執行緒中可用。雲端執行緒也載入您為 claude.ai 帳戶啟用的技能。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)。

410* 外掛程式:在**專案設定 > 外掛程式**中新增它們;它們載入到每個新雲端執行緒。儲存庫在其 `.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)。

411* 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) 列出雲端工作階段的規則和關閉連接器的設定。

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

Details

28| `claude auth logout` | 登出您的 Anthropic 帳戶 | `claude auth logout` |28| `claude auth logout` | 登出您的 Anthropic 帳戶 | `claude auth logout` |

29| `claude auth status` | 以 JSON 格式顯示身分驗證狀態。使用 `--text` 以人類可讀的格式輸出。如果已登入則以代碼 0 退出,如果未登入則以代碼 1 退出。JSON 包含一個 `configDirectory` 欄位,命名 CLI 使用的 [設定目錄](/docs/zh-TW/claude-directory)。該欄位需要 Claude Code v2.1.268 或更新版本。JSON 的 `authMethod` 欄位為 `none`、`claude.ai`、`oauth_token`、`api_key`、`api_key_helper` 或 `third_party` 其中之一 | `claude auth status` |29| `claude auth status` | 以 JSON 格式顯示身分驗證狀態。使用 `--text` 以人類可讀的格式輸出。如果已登入則以代碼 0 退出,如果未登入則以代碼 1 退出。JSON 包含一個 `configDirectory` 欄位,命名 CLI 使用的 [設定目錄](/docs/zh-TW/claude-directory)。該欄位需要 Claude Code v2.1.268 或更新版本。JSON 的 `authMethod` 欄位為 `none`、`claude.ai`、`oauth_token`、`api_key`、`api_key_helper` 或 `third_party` 其中之一 | `claude auth status` |

30| `claude agents` | 開啟 [agent 檢視](/docs/zh-TW/agent-view) 以監控和分派平行背景工作階段。使用 `--cwd <path>` 僅顯示在該目錄下啟動的工作階段,或使用 `--json` 將作用中工作階段列印為 JSON 陣列以供指令碼使用(`--json --all` 也包括已完成的背景工作階段)。傳遞 `--permission-mode`、`--model`、`--effort` 或 `--agent` 以設定 [分派工作階段的預設值](/docs/zh-TW/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如同頂層 `claude` 命令。開啟 agent 檢視需要互動式終端機 | `claude agents --json` |30| `claude agents` | 開啟 [agent 檢視](/docs/zh-TW/agent-view) 以監控和分派平行背景工作階段。使用 `--cwd <path>` 僅顯示在該目錄下啟動的工作階段,或使用 `--json` 將作用中工作階段列印為 JSON 陣列以供指令碼使用(`--json --all` 也包括已完成的背景工作階段)。傳遞 `--permission-mode`、`--model`、`--effort` 或 `--agent` 以設定 [分派工作階段的預設值](/docs/zh-TW/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如同頂層 `claude` 命令。開啟 agent 檢視需要互動式終端機 | `claude agents --json` |

31| `claude attach <id\|name>` | 在此終端機中附加到 [背景工作階段](/docs/zh-TW/agent-view#manage-sessions-from-the-shell)。以工作階段名稱的一部分取代 ID 傳遞,需要 Claude Code v2.1.290 或更新版本 | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | 在此終端機中附加到 [背景工作階段](/docs/zh-TW/agent-view#manage-sessions-from-the-shell)。以執行中工作階段名稱的一部分取代 ID 傳遞,需要 Claude Code v2.1.290 或更新版本 | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | 以 JSON 格式列印內建 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器規則。使用 `claude auto-mode config` 查看應用了設定的有效設定。使用 `--label <prefix>` 僅列印標籤以該前綴開頭的規則,不區分大小寫。需要 Claude Code v2.1.208 或更新版本 | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | 以 JSON 格式列印內建 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器規則。使用 `claude auto-mode config` 查看應用了設定的有效設定。使用 `--label <prefix>` 僅列印標籤以該前綴開頭的規則,不區分大小寫。需要 Claude Code v2.1.208 或更新版本 | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | 透過從使用者設定檔案中移除 `autoMode` 部分來還原預設 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 設定。在寫入前提示確認;傳遞 `-y`/`--yes` 以跳過提示。來自 [受管設定](/docs/zh-TW/server-managed-settings) 或 `--settings` 旗標的規則仍然適用。需要 Claude Code v2.1.212 或更新版本。請參閱 [檢查預設值和您的有效設定](/docs/zh-TW/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | 透過從使用者設定檔案中移除 `autoMode` 部分來還原預設 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 設定。在寫入前提示確認;傳遞 `-y`/`--yes` 以跳過提示。來自 [受管設定](/docs/zh-TW/server-managed-settings) 或 `--settings` 旗標的規則仍然適用。需要 Claude Code v2.1.212 或更新版本。請參閱 [檢查預設值和您的有效設定](/docs/zh-TW/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | 追蹤背景工作階段 [監督程序](/docs/zh-TW/agent-view#the-supervisor-process) 的日誌檔案 `~/.claude/daemon.log`,在新行出現時將其列印出來,直到您按下 `Ctrl+C` | `claude daemon logs` |34| `claude daemon logs` | 追蹤背景工作階段 [監督程序](/docs/zh-TW/agent-view#the-supervisor-process) 的日誌檔案 `~/.claude/daemon.log`,在新行出現時將其列印出來,直到您按下 `Ctrl+C` | `claude daemon logs` |


68| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |68| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |

69| `--agents` | 透過 JSON 動態定義自訂子代理程式。接受 [CLI 定義的子代理程式列出的欄位](/docs/zh-TW/sub-agents#choose-the-subagent-scope)。使用 `--print`,值可以改為是保存物件的 JSON 檔案的路徑;檔案形式需要 Claude Code v2.1.281 或更新版本。Claude Code 在啟動時驗證值並在無效值時結束;請參閱 [`Invalid --agents configuration`](/docs/zh-TW/errors#invalid-agents-configuration) 以取得訊息以及跳過驗證的旗標和環境變數。驗證需要 Claude Code v2.1.242 或更新版本 | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |69| `--agents` | 透過 JSON 動態定義自訂子代理程式。接受 [CLI 定義的子代理程式列出的欄位](/docs/zh-TW/sub-agents#choose-the-subagent-scope)。使用 `--print`,值可以改為是保存物件的 JSON 檔案的路徑;檔案形式需要 Claude Code v2.1.281 或更新版本。Claude Code 在啟動時驗證值並在無效值時結束;請參閱 [`Invalid --agents configuration`](/docs/zh-TW/errors#invalid-agents-configuration) 以取得訊息以及跳過驗證的旗標和環境變數。驗證需要 Claude Code v2.1.242 或更新版本 | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

70| `--allow-dangerously-skip-permissions` | 將 `bypassPermissions` 新增至 `Shift+Tab` 模式循環而不以它開始。讓您以不同的模式(例如 `plan`)開始,稍後切換至 `bypassPermissions`。請參閱[權限模式](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |70| `--allow-dangerously-skip-permissions` | 將 `bypassPermissions` 新增至 `Shift+Tab` 模式循環而不以它開始。讓您以不同的模式(例如 `plan`)開始,稍後切換至 `bypassPermissions`。請參閱[權限模式](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

71| `--allowedTools`, `--allowed-tools` | 無需提示權限即可執行的工具。請參閱[權限規則語法](/docs/zh-TW/settings-reference#permission-rule-syntax)以進行模式比對。若要限制可用的工具,請改用 `--tools`。如果您在此命名[任務追蹤工具](/docs/zh-TW/tools-reference#task-tool-availability)之一,Claude Code 也會選擇加入工作階段 | `"Bash(git log *)" "Bash(git diff *)" "Read"` |71| `--allowedTools`, `--allowed-tools` | 無需提示權限即可執行的工具,但從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取除外。請參閱[權限規則語法](/docs/zh-TW/settings-reference#permission-rule-syntax)以進行模式比對。若要限制可用的工具,請改用 `--tools`。如果您在此指定[任務追蹤工具](/docs/zh-TW/tools-reference#task-tool-availability)之一,Claude Code 也會讓工作階段選擇加入 | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

72| `--append-subagent-system-prompt` | 將自訂文字附加到每個[子代理程式](/docs/zh-TW/sub-agents)的系統提示末尾,包括巢狀子代理程式,除了[分叉的子代理程式](/docs/zh-TW/sub-agents#fork-the-current-conversation),它會重複使用對話自己的提示。僅在非互動模式下使用 `-p` 時適用。需要 Claude Code v2.1.205 或更新版本 | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |72| `--append-subagent-system-prompt` | 將自訂文字附加到每個[子代理程式](/docs/zh-TW/sub-agents)的系統提示末尾,包括巢狀子代理程式,除了[分叉的子代理程式](/docs/zh-TW/sub-agents#fork-the-current-conversation),它會重複使用對話自己的提示。僅在非互動模式下使用 `-p` 時適用。需要 Claude Code v2.1.205 或更新版本 | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |

73| `--append-subagent-system-prompt-file` | 從檔案載入文字並將其附加到[子代理程式](/docs/zh-TW/sub-agents)系統提示。作為 `--append-subagent-system-prompt` 的替代方案,用於命令列上過長的文字。這兩個旗標無法結合。僅在非互動模式下使用 `-p` 時適用。需要 Claude Code v2.1.261 或更新版本 | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |73| `--append-subagent-system-prompt-file` | 從檔案載入文字並將其附加到[子代理程式](/docs/zh-TW/sub-agents)系統提示。作為 `--append-subagent-system-prompt` 的替代方案,用於命令列上過長的文字。這兩個旗標無法結合。僅在非互動模式下使用 `-p` 時適用。需要 Claude Code v2.1.261 或更新版本 | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |

74| `--append-system-prompt` | 將自訂文字附加到預設系統提示的末尾 | `claude --append-system-prompt "Always use TypeScript"` |74| `--append-system-prompt` | 將自訂文字附加到預設系統提示的末尾 | `claude --append-system-prompt "Always use TypeScript"` |


81| `--channels` | (研究預覽)Claude 應在此工作階段中監聽其[頻道](/docs/zh-TW/channels)通知的 MCP 伺服器。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要透過 claude.ai 或 Console API 金鑰進行 Anthropic 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |81| `--channels` | (研究預覽)Claude 應在此工作階段中監聽其[頻道](/docs/zh-TW/channels)通知的 MCP 伺服器。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要透過 claude.ai 或 Console API 金鑰進行 Anthropic 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |

82| `--chrome` | 為網路自動化和測試啟用 [Chrome 瀏覽器整合](/docs/zh-TW/chrome) | `claude --chrome` |82| `--chrome` | 為網路自動化和測試啟用 [Chrome 瀏覽器整合](/docs/zh-TW/chrome) | `claude --chrome` |

83| `--cloud` | 使用任務說明,建立新的[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)。使用工作階段 ID(`session_...` 或 `cse_...`)或 claude.ai/code URL,改為使用 `-p` 將訊息排入該現有工作階段。請參閱[傳送後續訊息](/docs/zh-TW/claude-code-on-the-web#send-follow-ups-from-the-cli)。 | `claude --cloud "Fix the login bug"` |83| `--cloud` | 使用任務說明,建立新的[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)。使用工作階段 ID(`session_...` 或 `cse_...`)或 claude.ai/code URL,改為使用 `-p` 將訊息排入該現有工作階段。請參閱[傳送後續訊息](/docs/zh-TW/claude-code-on-the-web#send-follow-ups-from-the-cli)。 | `claude --cloud "Fix the login bug"` |

84| `--continue`, `-c` | 載入目前目錄中最近的對話,包括[已完成的背景工作階段](/docs/zh-TW/sessions#resume-a-session);開啟已完成的背景工作階段需要 Claude Code v2.1.257 或更新版本。跳過使用 `claude -p` 或 Agent SDK 建立的工作階段,以及第一個提示為 `/loop` 的工作階段。`claude -p --continue` 包括 `-p`、SDK 和 `/loop` 工作階段。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |84| `--continue`, `-c` | 載入目前目錄中最近的對話,包括[已完成的背景工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks);開啟已完成的背景工作階段需要 Claude Code v2.1.257 或更新版本。跳過使用 `claude -p` 或 Agent SDK 建立的工作階段,以及第一個提示詞為 `/loop` 的工作階段。`claude -p --continue` 包括 `-p`、SDK 和 `/loop` 工作階段。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |

85| `--dangerously-load-development-channels` | 啟用不在核准允許清單上的[頻道](/docs/zh-TW/channels-reference#test-during-the-research-preview),用於本機開發。接受 `plugin:<name>@<marketplace>` 和 `server:<name>` 項目。會提示確認,因此它在互動工作階段中生效。使用 `-p` 時,Claude Code 會忽略此旗標 | `claude --dangerously-load-development-channels server:webhook` |85| `--dangerously-load-development-channels` | 啟用不在核准允許清單上的[頻道](/docs/zh-TW/channels-reference#test-during-the-research-preview),用於本機開發。接受 `plugin:<name>@<marketplace>` 和 `server:<name>` 項目。會提示確認,因此它在互動工作階段中生效。使用 `-p` 時,Claude Code 會忽略此旗標 | `claude --dangerously-load-development-channels server:webhook` |

86| `--dangerously-skip-permissions` | 跳過權限提示。等同於 `--permission-mode bypassPermissions`。請參閱[權限模式](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)以了解此操作跳過和不跳過的內容。對於使用 `--bg` 啟動的工作階段,當主管重新啟動工作階段時,模式[會保留](/docs/zh-TW/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |86| `--dangerously-skip-permissions` | 跳過權限提示。等同於 `--permission-mode bypassPermissions`。請參閱[權限模式](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)以了解此操作跳過和不跳過的內容。對於使用 `--bg` 啟動的工作階段,當主管重新啟動工作階段時,模式[會保留](/docs/zh-TW/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

87| `--debug` | 啟用偵錯模式,可選類別篩選,例如 `--debug='mcp,startup'` 或 `--debug='!1p'`。篩選僅在 `=` 形式中繫結;以空格分隔的篩選啟用偵錯模式而不進行篩選 | `claude --debug='mcp,startup'` |87| `--debug` | 啟用偵錯模式,可選類別篩選,例如 `--debug='mcp,startup'` 或 `--debug='!1p'`。篩選僅在 `=` 形式中繫結;以空格分隔的篩選啟用偵錯模式而不進行篩選 | `claude --debug='mcp,startup'` |


108| `--maintenance` | 在工作階段之前使用 `maintenance` 匹配器執行[設定 hooks](/docs/zh-TW/hooks#setup)(僅列印模式) | `claude -p --maintenance "query"` |108| `--maintenance` | 在工作階段之前使用 `maintenance` 匹配器執行[設定 hooks](/docs/zh-TW/hooks#setup)(僅列印模式) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | 一旦 API 呼叫的估計支出達到此金額即停止執行(僅列印模式)。Claude Code 會依據其[用戶端成本估算](/docs/zh-TW/agent-sdk/cost-tracking#estimates-not-billing)檢查上限,這可能與您的帳單不同。來自 [subagent](/docs/zh-TW/sub-agents) 的支出計入上限。支出可能會超過上限,因此請[保留餘裕](/docs/zh-TW/agent-sdk/agent-loop#budget-headroom)。當您使用 `--continue` 或 `--resume` 返回對話時,[從較早的執行還原](/docs/zh-TW/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)的總計不計入上限。一旦支出達到上限,產生另一個 subagent 會失敗並出現 `Budget limit reached`,且 Claude Code 會停止仍在執行的背景 subagent;上限強制行為需要 Claude Code v2.1.217 或更新版本 | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | 一旦 API 呼叫的估計支出達到此金額即停止執行(僅列印模式)。Claude Code 會依據其[用戶端成本估算](/docs/zh-TW/agent-sdk/cost-tracking#estimates-not-billing)檢查上限,這可能與您的帳單不同。來自 [subagent](/docs/zh-TW/sub-agents) 的支出計入上限。支出可能會超過上限,因此請[保留餘裕](/docs/zh-TW/agent-sdk/agent-loop#budget-headroom)。當您使用 `--continue` 或 `--resume` 返回對話時,[從較早的執行還原](/docs/zh-TW/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)的總計不計入上限。一旦支出達到上限,產生另一個 subagent 會失敗並出現 `Budget limit reached`,且 Claude Code 會停止仍在執行的背景 subagent;上限強制行為需要 Claude Code v2.1.217 或更新版本 | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | 限制代理程式轉數(僅列印模式)。達到限制時結束並出現錯誤。預設無限制。使用 `--input-format stream-json` 時,當限制結束轉時,仍在佇列中的訊息會保持佇列並以自己的限制啟動新轉 | `claude -p --max-turns 3 "query"` |110| `--max-turns` | 限制代理程式轉數(僅列印模式)。達到限制時結束並出現錯誤。預設無限制。使用 `--input-format stream-json` 時,當限制結束轉時,仍在佇列中的訊息會保持佇列並以自己的限制啟動新轉 | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | 從 JSON 檔案或字串載入 MCP 伺服器(以空格分隔)。當您使用 `-p` 傳遞此旗標時,Claude Code 會等待仍在擱置的伺服器連線,直到 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時(預設 30 秒);具有[快取工具清單](/docs/zh-TW/mcp#managing-your-servers)的伺服器會跳過等待並在首次使用時連線。等待需要 Claude Code v2.1.221 或更新版本 | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | 從 JSON 檔案或字串載入 MCP 伺服器(以空格分隔)。當您使用 `-p` 傳遞此旗標時,Claude Code 會在執行第一個回合之前等待仍在擱置的伺服器連線,直到 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時(預設 30 秒);具有[快取工具清單](/docs/zh-TW/mcp#managing-your-servers)的伺服器會跳過等待並在首次使用時連線。在[自託管環境](/docs/zh-TW/self-hosted-environments-configuration#connection-timing)中,則改為套用較短的等待時間。等待需要 Claude Code v2.1.221 或更新版本 | `claude --mcp-config ./mcp.json` |

112| `--model` | 使用[模型別名](/docs/zh-TW/model-config#model-aliases)(例如 `sonnet`、`opus`、`haiku` 或 `fable`)或模型的完整名稱為目前工作階段設定模型。覆蓋 [`model`](/docs/zh-TW/settings-reference#model) 設定和 [`ANTHROPIC_MODEL`](/docs/zh-TW/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | 使用[模型別名](/docs/zh-TW/model-config#model-aliases)(例如 `sonnet`、`opus`、`haiku` 或 `fable`)或模型的完整名稱為目前工作階段設定模型。覆蓋 [`model`](/docs/zh-TW/settings-reference#model) 設定和 [`ANTHROPIC_MODEL`](/docs/zh-TW/model-config#environment-variables) | `claude --model claude-sonnet-5` |

113| `--name`, `-n` | 為工作階段設定顯示名稱,顯示在 `/resume` 和終端機標題中。您可以使用 `claude --resume <name>` 恢復命名的工作階段。在互動工作階段中,如果此機器上的另一個即時工作階段已使用該名稱,Claude Code 會改為套用[它的變體](/docs/zh-TW/sessions#name-your-sessions)。<br /><br />[`/rename`](/docs/zh-TW/commands)在工作階段中期變更名稱,也會在提示列上顯示它 | `claude -n "my-feature-work"` |113| `--name`, `-n` | 為工作階段設定顯示名稱,顯示在 `/resume` 和終端機標題中。您可以使用 `claude --resume <name>` 恢復命名的工作階段。<br /><br />[`/rename`](/docs/zh-TW/commands) 會在工作階段中途變更名稱,也會在提示列上顯示它 | `claude -n "my-feature-work"` |

114| `--no-chrome` | 為此工作階段停用 [Chrome 瀏覽器整合](/docs/zh-TW/chrome) | `claude --no-chrome` |114| `--no-chrome` | 為此工作階段停用 [Chrome 瀏覽器整合](/docs/zh-TW/chrome) | `claude --no-chrome` |

115| `--no-session-persistence` | 停用工作階段持續性,使工作階段不會儲存到磁碟且無法恢復。僅列印模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/zh-TW/env-vars) 環境變數在任何模式中執行相同操作 | `claude -p --no-session-persistence "query"` |115| `--no-session-persistence` | 停用工作階段持續性,使工作階段不會儲存到磁碟且無法恢復。僅列印模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/zh-TW/env-vars) 環境變數在任何模式中執行相同操作 | `claude -p --no-session-persistence "query"` |

116| `--output-format` | 指定列印模式的輸出格式(選項:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |116| `--output-format` | 指定列印模式的輸出格式(選項:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |

Details

314| 在您儲存庫的 `.claude/settings.json` 中宣告的外掛程式和市集 | 否 | 雲端工作階段不會安裝儲存庫在 [`enabledPlugins`](/docs/zh-TW/settings-reference#enabledplugins) 下開啟的外掛程式,包括來自它在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 下列出的市集的外掛程式 |314| 在您儲存庫的 `.claude/settings.json` 中宣告的外掛程式和市集 | 否 | 雲端工作階段不會安裝儲存庫在 [`enabledPlugins`](/docs/zh-TW/settings-reference#enabledplugins) 下開啟的外掛程式,包括來自它在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 下列出的市集的外掛程式 |

315| 您的組織的[伺服器管理的設定](/docs/zh-TW/server-managed-settings) | 是,除了在 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段中 | 在工作階段開始時從 Anthropic 的伺服器擷取。請參閱[使用介面涵蓋範圍](/docs/zh-TW/model-config#surface-coverage)以了解 `availableModels` 如何在雲端工作階段中強制執行。透過 MDM 或受管設定檔部署到您的裝置的設定不適用,因為工作階段在 Anthropic 管理的 VM 上執行;在[自我代管環境](/docs/zh-TW/self-hosted-environments)中,工作階段也會根據[Claude Code 如何結合受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取執行器映像中的受管設定檔 |315| 您的組織的[伺服器管理的設定](/docs/zh-TW/server-managed-settings) | 是,除了在 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段中 | 在工作階段開始時從 Anthropic 的伺服器擷取。請參閱[使用介面涵蓋範圍](/docs/zh-TW/model-config#surface-coverage)以了解 `availableModels` 如何在雲端工作階段中強制執行。透過 MDM 或受管設定檔部署到您的裝置的設定不適用,因為工作階段在 Anthropic 管理的 VM 上執行;在[自我代管環境](/docs/zh-TW/self-hosted-environments)中,工作階段也會根據[Claude Code 如何結合受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取執行器映像中的受管設定檔 |

316| 您的使用者 `~/.claude/CLAUDE.md` | 否 | 位於您的機器上,不在儲存庫中。請參閱[在不提交到儲存庫的情況下新增個人偏好設定](#add-personal-preferences-without-committing-to-the-repo) |316| 您的使用者 `~/.claude/CLAUDE.md` | 否 | 位於您的機器上,不在儲存庫中。請參閱[在不提交到儲存庫的情況下新增個人偏好設定](#add-personal-preferences-without-committing-to-the-repo) |

317| 您的使用者 `~/.claude/skills/`、`~/.claude/agents/`、`~/.claude/commands/` | 否 | 位於您的機器上,不在儲存庫中。改為將它們提交到儲存庫的 `.claude/` 目錄。雲端工作階段會自動載入您在 claude.ai 上啟用的 skill |317| 您的使用者 `~/.claude/skills/`、`~/.claude/agents/`、`~/.claude/commands/` | 否 | 位於您的機器上,不在儲存庫中。改為將它們提交到儲存庫的 `.claude/` 目錄。雲端工作階段會自動載入[您在 claude.ai 上啟用的 skill](/docs/zh-TW/skills#skills-in-cowork-and-cloud-sessions) |

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

319| 您使用 `claude mcp add` 在預設本機範圍或使用者範圍新增的 MCP 伺服器 | 否 | 這些寫入您機器上的 `~/.claude.json`,不是儲存庫。使用 `claude mcp add --scope project` 新增伺服器,它會寫入儲存庫的 [`.mcp.json`](/docs/zh-TW/mcp#project-scope),並提交該檔案。具有一個儲存庫的工作階段會載入它 |319| 您使用 `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 會忽略這些金鑰,並在工作階段的偵錯日誌中記錄每個被忽略的金鑰 |320| 您儲存庫的 `.claude/settings.json` `env` 區塊中的傳輸變數,例如 `NODE_EXTRA_CA_CERTS` 和[mTLS 用戶端憑證變數](/docs/zh-TW/network-config#mtls-authentication) | 否 | 代管環境管理工作階段的 API 連線,因此 Claude Code 會忽略這些金鑰,並在工作階段的偵錯日誌中記錄每個被忽略的金鑰 |

code-review.md +4 −4

Details

271| 部分 | 它顯示什麼 |271| 部分 | 它顯示什麼 |

272| :- | :- |272| :- | :- |

273| PRs reviewed | 在選定時間範圍內審查的 pull request 的每日計數 |273| PRs reviewed | 在選定時間範圍內審查的 pull request 的每日計數 |

274| Cost weekly | Code Review 的每週支出 |274| Code Review cost | 本月至今的 Code Review 支出 |

275| Feedback | 因開發人員解決問題而自動解決的審查評論計數 |275| Feedback | 因開發人員解決問題而自動解決的審查評論計數 |

276| Repository breakdown | 每個存儲庫審查的 PR 計數和解決的評論 |276| Repository breakdown | 每個儲存庫審查的 PR 計數、解決的評論數和審查執行次數,並附有估計成本和每個 PR 的檢視 |

277 277 

278儀表板成本數字是用於監控活動的估計。如需發票準確的支出,請參閱您的 Anthropic 帳單。278Code Review cost 卡片僅在選取目前月份時顯示金額。分析中的成本數字可能與您的發票不同。Repository breakdown 的成本以牌價估算,未計入任何折扣或額度,且僅涵蓋 Claude 在 pull request 上發布的審查。如需發票準確的支出,請參閱您的 Anthropic 帳單。

279 279 

280<h2 id="pricing">280<h2 id="pricing">

281 定價281 定價


293 293 

294無論您的組織是否使用 Amazon Bedrock 或 Google Cloud 的 Agent Platform 來處理其他 Claude Code 功能,成本都會出現在您的 Anthropic 帳單上。若要為 Code Review 設定每月支出上限,請前往 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 並為 Claude Code Review 服務設定限制。294無論您的組織是否使用 Amazon Bedrock 或 Google Cloud 的 Agent Platform 來處理其他 Claude Code 功能,成本都會出現在您的 Anthropic 帳單上。若要為 Code Review 設定每月支出上限,請前往 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 並為 Claude Code Review 服務設定限制。

295 295 

296透過[分析](#view-usage)中的每週成本圖表或管理員設定中的每個儲存庫平均成本欄位監控支出。296若要監控支出,請使用[分析儀表板](#view-usage)。

297 297 

298<h2 id="troubleshooting">298<h2 id="troubleshooting">

299 故障排除299 故障排除

commands.md +2 −2

Details

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` 以展開它 |

80| `/copy [N]` | 將最後的助手回應複製到剪貼簿。傳遞數字 `N` 以複製第 N 個最新回應:`/copy 2` 複製倒數第二個。當存在程式碼區塊時,顯示互動式選擇器以選擇個別區塊或完整回應。在選擇器中按 `w` 以將選擇寫入檔案而不是剪貼簿,這在 SSH 上很有用 |80| `/copy [N]` | 將最後的助手回應複製到剪貼簿。傳遞數字 `N` 以複製第 N 個最新回應:`/copy 2` 複製倒數第二個。當存在程式碼區塊或引用區塊時,顯示互動式選擇器以選擇個別區塊或完整回應。在選擇器中按 `w` 以將選擇寫入檔案而不是剪貼簿,這在 SSH 上很有用 |

81| `/cost` | `/usage` 的別名 |81| `/cost` | `/usage` 的別名 |

82| `/dataviz [request]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 圖表、圖形和儀表板的設計指導。Claude 為資料選擇圖表形式,按角色分配顏色,使用隨附的指令碼驗證調色板以確保色盲安全和對比度,並應用標記、互動和可存取性規則。使用您用自己的調色板替換的品牌中立佔位符調色板 |82| `/dataviz [request]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 圖表、圖形和儀表板的設計指導。Claude 為資料選擇圖表形式,按角色分配顏色,使用隨附的指令碼驗證調色板以確保色盲安全和對比度,並應用標記、互動和可存取性規則。使用您用自己的調色板替換的品牌中立佔位符調色板 |

83| `/debug [description]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 為目前工作階段啟用偵錯日誌記錄並通過讀取工作階段偵錯日誌來排除故障。除非您使用 `claude --debug` 啟動,否則偵錯日誌記錄預設為關閉,因此在工作階段中期運行 `/debug` 會從該點開始捕獲日誌。可選地描述問題以集中分析 |83| `/debug [description]` | **[Skill](/docs/zh-TW/skills#bundled-skills)。** 為目前工作階段啟用偵錯日誌記錄並通過讀取工作階段偵錯日誌來排除故障。除非您使用 `claude --debug` 啟動,否則偵錯日誌記錄預設為關閉,因此在工作階段中期運行 `/debug` 會從該點開始捕獲日誌。可選地描述問題以集中分析 |


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 訂閱並告訴您如何登入;在 v2.1.206 之前它報告 `Unknown command: /remote-control`。別名:`/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 或更新版本。如果此機器上的另一個活動工作階段已使用您傳遞的名稱,Claude Code 會改為應用[它的變體](/docs/zh-TW/sessions#name-your-sessions) |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 或更新版本 |

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

8 8 

9某些組織要求工作站上的每個程序都透過強制性啟動程式啟動。啟動程式會應用沙箱、網路控制或認證注入,這些是公司安全態勢所依賴的,而不透過它啟動的二進位檔案是違反政策的。9某些組織要求工作站上的每個程序都透過強制性啟動程式啟動。啟動程式會應用沙箱、網路控制或認證注入,這些是公司安全態勢所依賴的,而不透過它啟動的二進位檔案是違反政策的。

10 10 

11`CLAUDE_CODE_PROCESS_WRAPPER` 透過您的啟動程式啟動 Claude Code 從其自身二進位檔案啟動的每個程序:背景服務、它在[代理檢視](/docs/zh-TW/agent-view)中託管的每個工作階段,以及 Claude Code 在更新後的重新啟動。將其設定為您的啟動程式的絕對路徑,Claude Code 會執行啟動程式,並將 Claude Code 命令作為其引數。11`CLAUDE_CODE_PROCESS_WRAPPER` 透過您的啟動程式啟動 Claude Code 從其自身二進位檔案啟動的每個程序:[背景服務](/docs/zh-TW/agent-view#the-supervisor-process)、它在 [agent 檢視](/docs/zh-TW/agent-view)中託管的每個工作階段,以及 Claude Code 在更新後的重新啟動。將其設定為您的啟動程式的絕對路徑,Claude Code 會執行啟動程式,並將 Claude Code 命令作為其引數。

12 12 

13在您的 `PATH` 上包裝 `claude` 命令的啟動程式無法到達這些程序,因為它們從二進位檔案的直接路徑啟動,不會查詢 `claude`。13在您的 `PATH` 上包裝 `claude` 命令的啟動程式無法到達這些程序,因為它們從二進位檔案的直接路徑啟動,不會查詢 `claude`。

14 14 


39 39 

40以下程序不會透過啟動器啟動:40以下程序不會透過啟動器啟動:

41 41 

42* 一個[已安裝的背景服務](/docs/zh-TW/agent-view#the-supervisor-process),其單位是在設定啟動器之前編寫的:`launchd` 或 `systemd` 從其單位檔案啟動該程序。`/status` 和 `claude daemon status` 在執行中的服務和設定的啟動器不相符時發出警告,一旦服務在其設定中使用該變數重新啟動,服務產生的工作階段仍會透過啟動器啟動。

43* 您自己在終端中啟動的工作階段,其執行方式取決於您的調用方式。若要涵蓋這些工作階段,請在 `PATH` 上較早的目錄中放置一個名為 `claude` 的指令碼,該指令碼使用真實二進位檔案執行您的啟動器;不要取代受管理的符號連結。背景服務及其工作階段啟動時不進行 `PATH` 查詢,所以這兩個啟動器在那裡不會堆疊。42* 您自己在終端中啟動的工作階段,其執行方式取決於您的調用方式。若要涵蓋這些工作階段,請在 `PATH` 上較早的目錄中放置一個名為 `claude` 的指令碼,該指令碼使用真實二進位檔案執行您的啟動器;不要取代受管理的符號連結。背景服務及其工作階段啟動時不進行 `PATH` 查詢,所以這兩個啟動器在那裡不會堆疊。

44* `claude-cli://` 深層連結的第一個程序,作業系統的協定處理程式直接啟動。該工作階段之後在背景中啟動的所有內容都會透過啟動器執行。若要完全關閉此路徑,請使用 `disableDeepLinkRegistration` 設定[防止處理程式註冊](/docs/zh-TW/deep-links#registration-and-supported-platforms)。43* `claude-cli://` 深層連結的第一個程序,作業系統的協定處理程式直接啟動。該工作階段之後在背景中啟動的所有內容都會透過啟動器執行。若要完全關閉此路徑,請使用 `disableDeepLinkRegistration` 設定[防止處理程式註冊](/docs/zh-TW/deep-links#registration-and-supported-platforms)。

45* `--worktree` 結合 `--tmux` 執行的重新啟動:終端多工器啟動該窗格,而不是 Claude Code 的二進位檔案。44* `--worktree` 結合 `--tmux` 執行的重新啟動:終端多工器啟動該窗格,而不是 Claude Code 的二進位檔案。


104 </Step>103 </Step>

105 104 

106 <Step title="重新啟動背景服務和您的工作階段">105 <Step title="重新啟動背景服務和您的工作階段">

107 執行中的背景服務和任何開啟的 `claude` 工作階段在啟動時讀取變數一次,因此它們會繼續啟動未包裝的程序,直到重新啟動。執行 `claude daemon stop --any` 以停止按需服務;下一個需要它的命令(例如 `claude agents`)會啟動一個包裝的命令。[已安裝的服務](/docs/zh-TW/agent-view#the-supervisor-process)採用 `claude daemon stop` 而不需要 `--any`。然後重新啟動您開啟的 `claude` 工作階段。106 執行中的背景服務和任何開啟的 `claude` 工作階段在啟動時讀取變數一次,因此它們會繼續啟動未包裝的程序,直到重新啟動。執行 `claude daemon stop --any` 以停止按需服務。下一個需要它的命令(例如 `claude agents`)會啟動一個包裝的服務。然後重新啟動您開啟的 `claude` 工作階段。

108 107 

109 在您無法手動重新啟動的機器上,設定推送後啟動的第一個工作階段會自動淘汰遺留的未包裝按需服務。沒有新工作階段啟動的機器會保留其未包裝的服務,直到啟動一個,而已安裝的服務始終需要此步驟中的重新啟動。108 在您無法手動重新啟動的機器上,設定推送後啟動的第一個工作階段會自動淘汰遺留的未包裝按需服務。沒有新工作階段啟動的機器會保留其未包裝的背景服務,直到有工作階段啟動為止。

110 </Step>109 </Step>

111 110 

112 <Step title="驗證">111 <Step title="驗證">

Details

34若要自己提示,告訴 Claude 您希望另一個工作階段知道或做什麼。此範例是您輸入的提示,不是 Claude 傳送的訊息:34若要自己提示,告訴 Claude 您希望另一個工作階段知道或做什麼。此範例是您輸入的提示,不是 Claude 傳送的訊息:

35 35 

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

37詢問在我的另一個終端機中執行的工作階段遷移是否完成37Ask the session running in my other terminal whether the migration finished

38```38```

39 39 

40Claude 自己寫實際訊息,因此您的提示可以將內容留給 Claude。此提示要求摘要而不指定其措辭,Claude 傳送的內容會有所不同:40Claude 自己寫實際訊息,因此您的提示可以將內容留給 Claude。此提示要求摘要而不指定其措辭,Claude 傳送的內容會有所不同:

41 41 

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

43向處理付款 API 的工作階段解釋我們剛剛做了什麼43Explain what we just did to the session working on the payments API

44```44```

45 45 

46若要自己命名目標,在您的提示中提及工作階段:輸入 `@` 後跟工作階段名稱的前幾個字母,然後從預先輸入中選擇工作階段,與您[@-提及子代理](/docs/zh-TW/sub-agents#invoke-subagents-explicitly)的方式相同。需要 Claude Code v2.1.232 或更新版本。Claude Code 插入提及,例如 `@api-worker`,並告訴 Claude 它命名的工作階段,因此 Claude 可以訊息傳送至該工作階段而無需先列出您的工作階段。此提示使用提及命名目標:46若要自己命名目標,在您的提示中提及工作階段:輸入 `@` 後跟工作階段名稱的前幾個字母,然後從預先輸入中選擇工作階段,與您[@-提及子代理](/docs/zh-TW/sub-agents#invoke-subagents-explicitly)的方式相同。需要 Claude Code v2.1.232 或更新版本。Claude Code 插入提及,例如 `@api-worker`,並告訴 Claude 它命名的工作階段,因此 Claude 可以訊息傳送至該工作階段而無需先列出您的工作階段。此提示使用提及命名目標:

47 47 

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

49讓 @api-worker 知道架構遷移已完成49Let @api-worker know the schema migration finished

50```50```

51 51 

52預先輸入列出您在此機器上的其他即時工作階段。兩種情況需要超過名稱的前幾個字母:52預先輸入列出您在此機器上的其他即時工作階段。兩種情況需要超過名稱的前幾個字母:


96告訴 Claude 您在等待什麼。此提示要求來自遷移工作階段的通知:96告訴 Claude 您在等待什麼。此提示要求來自遷移工作階段的通知:

97 97 

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

99告訴我遷移工作階段何時完成它正在進行的工作99Tell me when the migration session finishes what it's working on

100```100```

101 101 

102Claude 使用 `SendMessage` 工具的 `notify_when_idle` 輸入訂閱,要麼附加到它正在傳送的訊息,要麼自己訂閱。自己訂閱時,Claude Code 訂閱而不在監視工作階段中啟動回合或花費代幣,如果該工作階段已經閒置,則立即傳送通知。附加到訊息時,Claude Code 先傳遞訊息,稍後傳送通知。102Claude 使用 `SendMessage` 工具的 `notify_when_idle` 輸入訂閱,要麼附加到它正在傳送的訊息,要麼自己訂閱。自己訂閱時,Claude Code 訂閱而不在監視工作階段中啟動回合或花費代幣,如果該工作階段已經閒置,則立即傳送通知。附加到訊息時,Claude Code 先傳遞訊息,稍後傳送通知。


142 142 

143工作階段回應您使用 [`/rename`](/docs/zh-TW/commands) 命令或 [`--name`](/docs/zh-TW/cli-reference#cli-flags) 旗標設定的名稱。當您不設定一個時,Claude Code 自己命名工作階段。對於互動式工作階段,這是[執行工作階段列表](/docs/zh-TW/sessions#name-your-sessions)中顯示的名稱。143工作階段回應您使用 [`/rename`](/docs/zh-TW/commands) 命令或 [`--name`](/docs/zh-TW/cli-reference#cli-flags) 旗標設定的名稱。當您不設定一個時,Claude Code 自己命名工作階段。對於互動式工作階段,這是[執行工作階段列表](/docs/zh-TW/sessions#name-your-sessions)中顯示的名稱。

144 144 

145當您重新命名工作階段或啟動或恢復互動式工作階段時,使用此機器上另一個即時工作階段已經使用的名稱,Claude Code 將名稱留給已經擁有它的工作階段,並[將您的重新命名為變體](/docs/zh-TW/sessions#name-your-sessions)。工作階段可以共享名稱,例如當其中一個執行較早版本的 Claude Code 或共享名稱是 Claude Code 生成的名稱時。除非此工作階段連接到遠端控制,Claude Code 在 `/list-agents` 輸出中顯示每個本地工作階段的工作目錄,因此當它們在不同目錄中執行時,您可以區分同名工作階段。Claude 根據有多少個即時工作階段回應名稱,以兩種方式之一定址訊息:145除非此工作階段連接到 Remote Control,Claude Code 在 `/list-agents` 輸出中顯示每個本機工作階段的工作目錄,因此當同名工作階段在不同目錄中執行時,您可以區分它們。Claude 根據有多少個即時工作階段回應名稱,以兩種方式之一定址訊息:

146 146 

147* **一個工作階段回應名稱**:Claude Code 僅在名稱上傳遞訊息。147* **一個工作階段回應名稱**:Claude Code 僅在名稱上傳遞訊息。

148* **多個工作階段共享名稱,或 Claude Code 無法檢查您的工作階段執行的所有地方**:Claude 為其列表的每一行添加短識別符,並在地址中使用識別符。148* **多個工作階段共享名稱,或 Claude Code 無法檢查您的工作階段執行的所有地方**:Claude 為其列表的每一行添加短識別符,並在地址中使用識別符。

desktop.md +30 −4

Details

400 400 

401若要同時檢視兩個工作階段,請在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl**,然後點擊側邊欄中的工作階段。工作階段會在您已開啟的工作階段旁邊的第二個窗格中開啟。當分割處於活動狀態時,點擊另一個側邊欄工作階段會取代具有焦點的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 以關閉焦點窗格並返回單一工作階段。401若要同時檢視兩個工作階段,請在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl**,然後點擊側邊欄中的工作階段。工作階段會在您已開啟的工作階段旁邊的第二個窗格中開啟。當分割處於活動狀態時,點擊另一個側邊欄工作階段會取代具有焦點的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 以關閉焦點窗格並返回單一工作階段。

402 402 

403Worktrees 預設儲存在 `<project-root>/.claude/worktrees/` 中。您可以在「設定」→「Claude Code」下的「Worktree location」中將其變更為自訂目錄。您也可以設定一個分支前綴,該前綴會被加在每個 worktree 分支名稱前面,這對於保持 Claude 建立的分支井然有序很有用。若要在完成後移除 worktree,請將滑鼠懸停在側邊欄中的工作階段上,然後點擊存檔圖示。若要在 pull request 合併或關閉後自動存檔工作階段,請在「設定」→「Claude Code」中開啟 **Auto-archive after PR merge or close**。自動存檔僅適用於已完成執行的本機工作階段。403Worktrees 預設儲存在 `<project-root>/.claude/worktrees/` 中。您可以將其變更為自訂目錄:

404 404 

405若要在新 worktrees 中包含 gitignored 檔案(如 `.env`),請在您的專案根目錄中建立 [`.worktreeinclude` 檔案](/docs/zh-TW/worktrees#copy-gitignored-files-into-worktrees)。405* **本機工作階段**:在 **Settings > Claude Code** 中設定 **Worktree location**

406* **SSH 工作階段**:在 [SSH 連線](#choose-where-ssh-session-worktrees-go)上設定 **Worktree folder**

407 

408您也可以在 **Settings > Claude Code** 中設定 **Branch prefix**。Desktop 會將其加在每個 worktree 分支名稱前面,這對於保持 Claude 建立的分支井然有序很有用。

409 

410若要在完成後移除 worktree,請將滑鼠懸停在側邊欄中的工作階段上,然後點擊存檔圖示。若要在 pull request 合併或關閉後自動存檔工作階段,請在 **Settings > Claude Code** 中開啟 **Auto-archive after PR merge or close**。自動存檔僅適用於已完成執行的本機工作階段。

411 

412若要在新 worktrees 中包含 gitignored 檔案(如 `.env`),請在您的專案根目錄中建立 [`.worktreeinclude` 檔案](/docs/zh-TW/worktrees#copy-gitignored-files-into-worktrees)。請參閱 [worktree 與主要簽出共用的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout),了解 worktree 工作階段從何處讀取專案設定、hook 和 skill。

406 413 

407<Note>414<Note>

408 工作階段隔離需要 [Git](https://git-scm.com/downloads)。大多數 Mac 預設包含 Git。在終端機中執行 `git --version` 進行檢查;如果它列印版本號,表示已安裝 Git。如果您遇到 Git 錯誤,請在 [Cowork 標籤](https://claude.com/product/cowork) 中詢問 Claude 以幫助排除您的設定問題。415 工作階段隔離需要 [Git](https://git-scm.com/downloads)。大多數 Mac 預設包含 Git。在終端機中執行 `git --version` 進行檢查;如果它列印版本號,表示已安裝 Git。如果您遇到 Git 錯誤,請在 [Cowork 標籤](https://claude.com/product/cowork) 中詢問 Claude 以幫助排除您的設定問題。


811* **SSH host**:`user@hostname` 或在 `~/.ssh/config` 中定義的主機818* **SSH host**:`user@hostname` 或在 `~/.ssh/config` 中定義的主機

812* **SSH port**:如果留空則預設為 22,或使用您的 SSH 設定中的連接埠819* **SSH port**:如果留空則預設為 22,或使用您的 SSH 設定中的連接埠

813* **SSH key (optional)**:您的私鑰的路徑,例如 `~/.ssh/id_ed25519`。留空以使用您的 SSH 設定或 SSH agent。820* **SSH key (optional)**:您的私鑰的路徑,例如 `~/.ssh/id_ed25519`。留空以使用您的 SSH 設定或 SSH agent。

821* **Worktree folder**:遠端機器上的資料夾,例如 `~/worktrees`,新工作階段會在此建立其 worktree。留空以使用[遠端機器的預設值](#choose-where-ssh-session-worktrees-go)。

814 822 

815新增後,連線會出現在環境下拉式選單的 **SSH** 下方。選擇它以在該機器上啟動工作階段。Claude 在遠端機器上執行,可存取其檔案和工具。823新增後,連線會出現在環境下拉式選單的 **SSH** 下方。選擇它以在該機器上啟動工作階段。Claude 在遠端機器上執行,可存取其檔案和工具。

816 824 

817遠端機器必須執行 Linux 或 macOS。桌面應用程式會在您第一次連接時自動在遠端機器上安裝 Claude Code。連接後,SSH 會話支援權限模式、連接器、plugins 和 MCP servers。825遠端機器必須執行 Linux 或 macOS。桌面應用程式會在您第一次連接時自動在遠端機器上安裝 Claude Code。連接後,SSH 會話支援權限模式、連接器、plugins 和 MCP servers。

818 826 

827<h4 id="choose-where-ssh-session-worktrees-go">

828 選擇 SSH 工作階段 worktree 的位置

829</h4>

830 

831除非您的組織限制工作階段可使用的資料夾,否則新的 SSH 工作階段會在以下項目中第一個已設定的位置建立其 [worktree](#work-in-parallel-with-sessions):

832 

8331. SSH 連線上的 **Worktree folder**

8342. 遠端機器上 `~/.claude/settings.json` 中的 [`worktree.location`](/docs/zh-TW/settings-reference#worktree-location)

8353. `<project-root>/.claude/worktrees/`,即預設值

836 

837每個專案會在您設定的資料夾中擁有自己的子資料夾,因此若設定為 `~/worktrees`,worktree 的路徑為 `~/worktrees/<project>-<id>/<worktree-name>`。如果您設定的資料夾位於專案內,Desktop 會對該專案忽略它並使用預設值。

838 

839若要在您先前新增的連線或您組織管理的連線上設定 **Worktree folder**,請在環境下拉式選單中將滑鼠懸停在該連線上,然後點擊齒輪圖示。

840 

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

842 

819<h4 id="open-an-ssh-session-from-a-link">843<h4 id="open-an-ssh-session-from-a-link">

820 從連結開啟 SSH 工作階段844 從連結開啟 SSH 工作階段

821</h4>845</h4>


869 為您的團隊預先配置 SSH 連線893 為您的團隊預先配置 SSH 連線

870</h4>894</h4>

871 895 

872管理員可以透過在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshConfigs`,將 SSH 連線分發給團隊成員。以這種方式定義的連線會自動出現在每個使用者的環境下拉式選單中,並顯示為受管,因此使用者可以選擇它們,但無法在應用程式中編輯或刪除它們。896管理員可以透過在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshConfigs`,將 SSH 連線分發給團隊成員。以這種方式定義的連線會自動出現在每個使用者的環境下拉式選單中,並顯示為受管。使用者可以選擇它們,並為它們[設定自己的 **Worktree folder**](#choose-where-ssh-session-worktrees-go),但無法在應用程式中編輯其他任何內容或刪除它們。

873 897 

874以下範例預先配置了一個單一連線:898以下範例預先配置了一個單一連線:

875 899 


935 管理員主控台[資料和隱私設定](https://claude.ai/admin-settings/data-privacy-controls)中**監控**下的 Cowork OpenTelemetry 表單僅適用於 Cowork 工作階段。在此機器上的 Cowork 工作階段中,桌面應用程式會將該收集器作為 `OTEL_*` 環境變數傳遞給 Claude Code,因此即使該工作階段中的 Claude Code [永遠不會擷取管理員主控台設定](#managed-settings),表單仍會生效。959 管理員主控台[資料和隱私設定](https://claude.ai/admin-settings/data-privacy-controls)中**監控**下的 Cowork OpenTelemetry 表單僅適用於 Cowork 工作階段。在此機器上的 Cowork 工作階段中,桌面應用程式會將該收集器作為 `OTEL_*` 環境變數傳遞給 Claude Code,因此即使該工作階段中的 Claude Code [永遠不會擷取管理員主控台設定](#managed-settings),表單仍會生效。

936 960 

937 若要從 Code 分頁工作階段匯出遙測,請在 Claude Code 受管設定的 `env` 區塊中設定 `CLAUDE_CODE_ENABLE_TELEMETRY` 和 `OTEL_*` 變數,如[監控的管理員設定](/docs/zh-TW/monitoring-usage#administrator-configuration)所示。本機、雲端和 SSH 工作階段各自[從不同來源讀取受管設定](#managed-settings)。有關雲端工作階段可以連線的主機,請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)。有關 Code 分頁工作階段回報的 `service.name`,請參閱[服務資訊](/docs/zh-TW/monitoring-usage#service-information)。961 若要從 Code 分頁工作階段匯出遙測,請在 Claude Code 受管設定的 `env` 區塊中設定 `CLAUDE_CODE_ENABLE_TELEMETRY` 和 `OTEL_*` 變數,如[監控的管理員設定](/docs/zh-TW/monitoring-usage#administrator-configuration)所示。本機、雲端和 SSH 工作階段各自[從不同來源讀取受管設定](#managed-settings)。有關雲端工作階段可以連線的主機,請參閱[網路存取](/docs/zh-TW/cloud-environments#network-access)。有關 Code 分頁工作階段回報的 `service.name`,請參閱[服務資訊](/docs/zh-TW/monitoring-usage#service-information)。

962 

963 若要了解 SSH 工作階段是在哪台遠端機器上執行,請參閱[將遙測歸屬於 Desktop SSH 工作階段](/docs/zh-TW/monitoring-usage#attribute-telemetry-to-desktop-ssh-sessions)。

938</Note>964</Note>

939 965 

940<h3 id="managed-settings">966<h3 id="managed-settings">


951| `browserExternalPageTools` | 設定為 `"disabled"` 以防止 Claude 使用工具來讀取或操作[瀏覽器窗格](#browse-external-sites)中的外部頁面。使用者仍然可以自行瀏覽外部網站,本機開發伺服器預覽不受影響。 |977| `browserExternalPageTools` | 設定為 `"disabled"` 以防止 Claude 使用工具來讀取或操作[瀏覽器窗格](#browse-external-sites)中的外部頁面。使用者仍然可以自行瀏覽外部網站,本機開發伺服器預覽不受影響。 |

952| `disableMobileSimulatorTools` | 設定為 `true` 以封鎖 Claude 在 [iOS Simulator 窗格](/docs/zh-TW/desktop-ios-simulator#turn-off-simulator-access)中控制和擷取裝置的工具。該窗格仍可供使用者自行點擊使用;只有 Claude 的存取被移除。該值必須是 JSON 布林值 `true`;字串 `"true"` 會被忽略。 |978| `disableMobileSimulatorTools` | 設定為 `true` 以封鎖 Claude 在 [iOS Simulator 窗格](/docs/zh-TW/desktop-ios-simulator#turn-off-simulator-access)中控制和擷取裝置的工具。該窗格仍可供使用者自行點擊使用;只有 Claude 的存取被移除。該值必須是 JSON 布林值 `true`;字串 `"true"` 會被忽略。 |

953| `disableBrowserExternalNavigation` | 設定為 `true` 以完全關閉[瀏覽器窗格](#browse-external-sites)中的外部瀏覽。使用者和 Claude 都無法瀏覽外部網站,localhost 開發伺服器預覽不受影響。該值必須是 JSON 布林值 `true`;字串 `"true"` 會被忽略。 |979| `disableBrowserExternalNavigation` | 設定為 `true` 以完全關閉[瀏覽器窗格](#browse-external-sites)中的外部瀏覽。使用者和 Claude 都無法瀏覽外部網站,localhost 開發伺服器預覽不受影響。該值必須是 JSON 布林值 `true`;字串 `"true"` 會被忽略。 |

954| `sshConfigs` | 預先設定顯示在環境下拉式選單中的 [SSH 連線](#pre-configure-ssh-connections-for-your-team)。使用者無法編輯或刪除受管連線。 |980| `sshConfigs` | 預先設定顯示在環境下拉式選單中的 [SSH 連線](#pre-configure-ssh-connections-for-your-team)。使用者無法刪除受管連線,除了自己的 **Worktree folder** 之外也無法編輯任何內容。 |

955| `sshHostAllowlist` | 將 [SSH 工作階段](#restrict-which-ssh-hosts-users-can-connect-to)限制在已解析主機名稱符合這些模式之一的主機。僅從受管設定讀取。 |981| `sshHostAllowlist` | 將 [SSH 工作階段](#restrict-which-ssh-hosts-users-can-connect-to)限制在已解析主機名稱符合這些模式之一的主機。僅從受管設定讀取。 |

956| `disableDesktopLocalSessions` | 設定為 `true` 以關閉[在裝置上執行的 Code 工作階段](#local-sessions-on-managed-devices),僅保留連線到其他主機的 SSH 工作階段和雲端工作階段。該值必須是 JSON 布林值 `true`。僅從受管設定讀取。需要 Claude Desktop v1.37937.0 或更新版本。 |982| `disableDesktopLocalSessions` | 設定為 `true` 以關閉[在裝置上執行的 Code 工作階段](#local-sessions-on-managed-devices),僅保留連線到其他主機的 SSH 工作階段和雲端工作階段。該值必須是 JSON 布林值 `true`。僅從受管設定讀取。需要 Claude Desktop v1.37937.0 或更新版本。 |

957| `disableSshSavedPasswords` | 設定為 `true` 以停止 Desktop 提供記住 SSH 密碼的選項,並停止使用或顯示先前已儲存的密碼。開啟此設定不會刪除這些密碼。僅從受管設定讀取。需要 Claude Desktop v1.49585.0 或更新版本。 |983| `disableSshSavedPasswords` | 設定為 `true` 以停止 Desktop 提供記住 SSH 密碼的選項,並停止使用或顯示先前已儲存的密碼。開啟此設定不會刪除這些密碼。僅從受管設定讀取。需要 Claude Desktop v1.49585.0 或更新版本。 |

env-vars.md +5 −5

Details

210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 可略過 SDK 建立的 MCP 伺服器工具名稱上的 `mcp__<server>__` 前綴。工具會使用其原始名稱。僅限 SDK 使用 |210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 可略過 SDK 建立的 MCP 伺服器工具名稱上的 `mcp__<server>__` 前綴。工具會使用其原始名稱。僅限 SDK 使用 |

211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | subagent 的停滯逾時,單位為毫秒。在 Claude Code v2.1.286 或更新版本中也涵蓋[工作流程 agent](/docs/zh-TW/workflows#when-an-agent-stalls-and-restarts)。預設 `600000`(10 分鐘);若您在串流監視機制開啟時調高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,預設值也會隨之提高,如[處理緩慢或停滯的 API 回應](/docs/zh-TW/agent-sdk/typescript#handle-slow-or-stalled-api-responses)所述 |211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | subagent 的停滯逾時,單位為毫秒。在 Claude Code v2.1.286 或更新版本中也涵蓋[工作流程 agent](/docs/zh-TW/workflows#when-an-agent-stalls-and-restarts)。預設 `600000`(10 分鐘);若您在串流監視機制開啟時調高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,預設值也會隨之提高,如[處理緩慢或停滯的 API 回應](/docs/zh-TW/agent-sdk/typescript#handle-slow-or-stalled-api-responses)所述 |

212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 設定自動壓縮視窗中觸發自動壓縮的百分比(1-100)。使用較低的值(例如 `50`)可提早壓縮;此變數無法提高閾值,因此高於預設百分比的值會被忽略。它僅適用於[在模型上下文限制之前壓縮](/docs/zh-TW/model-config#context-window-and-auto-compaction)的工作階段。同時適用於主要對話與 subagent |212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 設定自動壓縮視窗中觸發自動壓縮的百分比(1-100)。使用較低的值(例如 `50`)可提早壓縮;此變數無法提高閾值,因此高於預設百分比的值會被忽略。它僅適用於[在模型上下文限制之前壓縮](/docs/zh-TW/model-config#context-window-and-auto-compaction)的工作階段。同時適用於主要對話與 subagent |

213| `CLAUDE_AUTO_BACKGROUND_TASKS` | 設定為 `1` 可強制啟用長時間執行 agent 任務的自動背景化。啟用後,subagent 在執行約兩分鐘後會移至背景。在 Claude Code v2.1.212 或更新版本中,也會在非互動模式下啟用[長時間 MCP 工具呼叫的自動背景化](/docs/zh-TW/mcp#automatic-backgrounding-of-long-tool-calls) |213| `CLAUDE_AUTO_BACKGROUND_TASKS` | 設為 `1` 可強制啟用長時間執行的 agent 任務自動移至背景。啟用後,[subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 在執行約兩分鐘後會移至背景。如果 Claude 在 subagent 之後排入了工具呼叫(例如檔案編輯),subagent 會在該呼叫開始前於前景完成。在 Claude Code v2.1.212 或更新版本上,也會在非互動模式中啟用[長時間 MCP 工具呼叫的自動背景化](/docs/zh-TW/mcp#automatic-backgrounding-of-long-tool-calls) |

214| `CLAUDE_AX_PREPARK_MS` | 在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中,Claude Code 寫入新的或變更的行之前等待的毫秒數。預設 `0`,因此 Claude Code 不會等待。在 v2.1.287 之前,預設值為 `50`。Claude Code 將等待時間上限設為 `5000`。需要 Claude Code v2.1.233 或更新版本 |214| `CLAUDE_AX_PREPARK_MS` | 在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中,Claude Code 寫入新的或變更的行之前等待的毫秒數。預設 `0`,因此 Claude Code 不會等待。在 v2.1.287 之前,預設值為 `50`。Claude Code 將等待時間上限設為 `5000`。需要 Claude Code v2.1.233 或更新版本 |

215| `CLAUDE_AX_SCREEN_READER` | 設定為 `1` 可呈現適合螢幕閱讀器的輸出:不含裝飾性邊框或動畫的平面文字。設定為 `0` 可強制關閉螢幕閱讀器模式,即使 [`axScreenReader`](/docs/zh-TW/settings-reference#axscreenreader) 為 `true`。[`--ax-screen-reader`](/docs/zh-TW/cli-reference#cli-flags) 旗標優先。需要 Claude Code v2.1.181 或更新版本 |215| `CLAUDE_AX_SCREEN_READER` | 設定為 `1` 可呈現適合螢幕閱讀器的輸出:不含裝飾性邊框或動畫的平面文字。設定為 `0` 可強制關閉螢幕閱讀器模式,即使 [`axScreenReader`](/docs/zh-TW/settings-reference#axscreenreader) 為 `true`。[`--ax-screen-reader`](/docs/zh-TW/cli-reference#cli-flags) 旗標優先。需要 Claude Code v2.1.181 或更新版本 |

216| `CLAUDE_AX_STARTUP_QUIET_MS` | 在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中,Claude Code 在啟動確認行之後延遲第一次介面呈現的毫秒數,讓您的螢幕閱讀器能在新輸出打斷之前完整唸出該行。預設 `3000`。設定 `0` 可立即呈現。Claude Code 將延遲上限設為 `600000`(10 分鐘)。您的第一次按鍵會提早結束延遲。需要 Claude Code v2.1.217 或更新版本 |216| `CLAUDE_AX_STARTUP_QUIET_MS` | 在[螢幕閱讀器模式](/docs/zh-TW/accessibility)中,Claude Code 在啟動確認行之後延遲第一次介面呈現的毫秒數,讓您的螢幕閱讀器能在新輸出打斷之前完整唸出該行。預設 `3000`。設定 `0` 可立即呈現。Claude Code 將延遲上限設為 `600000`(10 分鐘)。您的第一次按鍵會提早結束延遲。需要 Claude Code v2.1.217 或更新版本 |


285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | 設定為 `1` 可關閉[安全分類器標記請求時的自動模型切換](/docs/zh-TW/model-config#automatic-model-fallback),也就是 [`switchModelsOnFlag`](/docs/zh-TW/settings-reference#switchmodelsonflag) 設定所控制的行為 |285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | 設定為 `1` 可關閉[安全分類器標記請求時的自動模型切換](/docs/zh-TW/model-config#automatic-model-fallback),也就是 [`switchModelsOnFlag`](/docs/zh-TW/settings-reference#switchmodelsonflag) 設定所控制的行為 |

286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | 設定為 `1` 可阻止 Claude Code 傳送結構化輸出的 `output_config.format` 欄位與其搭配的 `anthropic-beta` 值,適用於上游會拒絕這些內容的 [LLM 閘道](/docs/zh-TW/llm-gateway-protocol#feature-pass-through)。這會讓 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 所關閉的其他預先發行功能保持開啟。需要 Claude Code v2.1.288 或更新版本 |286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | 設定為 `1` 可阻止 Claude Code 傳送結構化輸出的 `output_config.format` 欄位與其搭配的 `anthropic-beta` 值,適用於上游會拒絕這些內容的 [LLM 閘道](/docs/zh-TW/llm-gateway-protocol#feature-pass-through)。這會讓 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 所關閉的其他預先發行功能保持開啟。需要 Claude Code v2.1.288 或更新版本 |

287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | 設定為 `1` 可關閉針對遞迴 `rm` 的[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)檢查,該檢查適用於目標完全是命令替換輸出的情況,例如 `rm -rf "$(pwd)"`。其他關鍵路徑檢查會持續執行。請在啟動 Claude Code 的環境中設定,因為 Claude Code 會忽略透過設定 `env` 區塊傳遞的副本。需要 Claude Code v2.1.281 或更新版本 |287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | 設定為 `1` 可關閉針對遞迴 `rm` 的[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)檢查,該檢查適用於目標完全是命令替換輸出的情況,例如 `rm -rf "$(pwd)"`。其他關鍵路徑檢查會持續執行。請在啟動 Claude Code 的環境中設定,因為 Claude Code 會忽略透過設定 `env` 區塊傳遞的副本。需要 Claude Code v2.1.281 或更新版本 |

288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設定為 `1` 可停用根據對話上下文自動更新終端機標題。這也會略過[產生工作階段標題](/docs/zh-TW/sessions#name-your-sessions)的背景小型/快速模型請求 |288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設為 `1` 可停用根據對話上下文自動更新終端機標題。這也會略過[產生工作階段標題](/docs/zh-TW/sessions#name-your-sessions)的背景小型/快速模型請求,並關閉[向終端機回報狀態](/docs/zh-TW/terminal-config#see-session-status-in-your-terminal) |

289| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 可從 API 請求中完全省略 `thinking` 參數。這是針對拒絕此參數的代理伺服器與閘道的相容性選項。在預設會思考的模型上,省略此參數代表模型仍可能思考。若要在 Anthropic API 上明確停用[延伸思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),請改用 `MAX_THINKING_TOKENS=0`。兩個變數都無法在 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型上關閉思考,這些模型無法關閉思考。在[第三方提供者](/docs/zh-TW/third-party-integrations)上,`MAX_THINKING_TOKENS=0` 同樣會省略此參數,因此兩個變數在那裡的行為相同 |289| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 可從 API 請求中完全省略 `thinking` 參數。這是針對拒絕此參數的代理伺服器與閘道的相容性選項。在預設會思考的模型上,省略此參數代表模型仍可能思考。若要在 Anthropic API 上明確停用[延伸思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),請改用 `MAX_THINKING_TOKENS=0`。兩個變數都無法在 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型上關閉思考,這些模型無法關閉思考。在[第三方提供者](/docs/zh-TW/third-party-integrations)上,`MAX_THINKING_TOKENS=0` 同樣會省略此參數,因此兩個變數在那裡的行為相同 |

290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | 設定為 `1` 可在 Claude Code 無法辨識模型 ID(例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名)時略過主動[自動壓縮](/docs/zh-TW/costs#reduce-token-usage)。若未設定此變數,Claude Code 會在其為該 ID 假設的上下文視窗處進行壓縮。`CLAUDE_CODE_MAX_CONTEXT_TOKENS` 可改為修正假設的視窗;關於各變數的適用時機,請參閱[修正閘道或自訂模型 ID 的視窗](/docs/zh-TW/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。需要 Claude Code v2.1.223 或更新版本 |290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | 設定為 `1` 可在 Claude Code 無法辨識模型 ID(例如 [LLM 閘道](/docs/zh-TW/llm-gateway)別名)時略過主動[自動壓縮](/docs/zh-TW/costs#reduce-token-usage)。若未設定此變數,Claude Code 會在其為該 ID 假設的上下文視窗處進行壓縮。`CLAUDE_CODE_MAX_CONTEXT_TOKENS` 可改為修正假設的視窗;關於各變數的適用時機,請參閱[修正閘道或自訂模型 ID 的視窗](/docs/zh-TW/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。需要 Claude Code v2.1.223 或更新版本 |

291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 設定為 `1` 可在[全螢幕呈現](/docs/zh-TW/fullscreen)中停用虛擬捲動,並呈現逐字稿中的每則訊息。若在全螢幕模式中捲動時,應顯示訊息的地方出現空白區域,請使用此設定 |291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 設定為 `1` 可在[全螢幕呈現](/docs/zh-TW/fullscreen)中停用虛擬捲動,並呈現逐字稿中的每則訊息。若在全螢幕模式中捲動時,應顯示訊息的地方出現空白區域,請使用此設定 |


309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查詢迴圈進入閒置後、自動結束前要等待的時間(毫秒)。適用於使用 SDK 模式的自動化工作流程與指令碼 |309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查詢迴圈進入閒置後、自動結束前要等待的時間(毫秒)。適用於使用 SDK 模式的自動化工作流程與指令碼 |

310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 設為 `1` 以啟用 [agent team](/docs/zh-TW/agent-teams)。agent team 為實驗性功能,預設為停用 |310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 設為 `1` 以啟用 [agent team](/docs/zh-TW/agent-teams)。agent team 為實驗性功能,預設為停用 |

311| `CLAUDE_CODE_EXTRA_BODY` | 要合併至每個 API 請求主體最上層的 JSON 物件。適用於傳遞 Claude Code 未直接公開的供應商專屬參數。在 shell 中匯出的值也會套用至您以 `claude agents` 或 `--bg` 分派的[背景工作階段](/docs/zh-TW/agent-view)。在 v2.1.206 之前,背景工作階段會忽略 shell 匯出的值,並使用背景監督程序所繼承的副本 |311| `CLAUDE_CODE_EXTRA_BODY` | 要合併至每個 API 請求主體最上層的 JSON 物件。適用於傳遞 Claude Code 未直接公開的供應商專屬參數。在 shell 中匯出的值也會套用至您以 `claude agents` 或 `--bg` 分派的[背景工作階段](/docs/zh-TW/agent-view)。在 v2.1.206 之前,背景工作階段會忽略 shell 匯出的值,並使用背景監督程序所繼承的副本 |

312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆寫檔案讀取的預設 token 上限。在需要完整讀取較大檔案時很有用 |312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆寫[檔案讀取](/docs/zh-TW/tools-reference#large-files)的預設 token 上限,即 25,000 個 token。適用於需要完整讀取較大檔案時。當上下文視窗仍有空間時,Claude 使用 `allow_large` 參數進行的讀取可以超過此上限 |

313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 設為 `1` 可強制保存逐字稿、提示詞歷史與 `claude agents` 註冊,即使這個 `claude` 是從另一個 Claude Code 工作階段內部啟動的。當繼承的 `CLAUDE_CODE_CHILD_SESSION` 值(例如來自 `screen` 工作階段,或最初由 Claude Code 的 Bash 工具啟動的背景啟動器)導致真正的最上層工作階段被誤判為巢狀工作階段時使用。自 v2.1.178 起,Claude Code 會自動偵測 tmux 的情況並忽略繼承的標記,因此 tmux 不再需要此變數。在 v2.1.169 及更早版本中也有效;在 v2.1.170 與 v2.1.171 中沒有作用,因為其所覆寫的巢狀工作階段偵測在這些版本中已被移除 |313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 設為 `1` 可強制保存逐字稿、提示詞歷史與 `claude agents` 註冊,即使這個 `claude` 是從另一個 Claude Code 工作階段內部啟動的。當繼承的 `CLAUDE_CODE_CHILD_SESSION` 值(例如來自 `screen` 工作階段,或最初由 Claude Code 的 Bash 工具啟動的背景啟動器)導致真正的最上層工作階段被誤判為巢狀工作階段時使用。自 v2.1.178 起,Claude Code 會自動偵測 tmux 的情況並忽略繼承的標記,因此 tmux 不再需要此變數。在 v2.1.169 及更早版本中也有效;在 v2.1.170 與 v2.1.171 中沒有作用,因為其所覆寫的巢狀工作階段偵測在這些版本中已被移除 |

314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 設為 `1` 可在終端機支援但未被自動偵測到時(例如透過 SSH 且未轉送 `TERM_PROGRAM`),強制將 Claude 回應中的 `~~text~~` 呈現為刪除線。若未設定,未被偵測到的終端機會顯示字面上的 `~~` 標記,而不會將文字呈現為刪除線。需要 Claude Code v2.1.186 或更新版本 |314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 設為 `1` 可在終端機支援但未被自動偵測到時(例如透過 SSH 且未轉送 `TERM_PROGRAM`),強制將 Claude 回應中的 `~~text~~` 呈現為刪除線。若未設定,未被偵測到的終端機會顯示字面上的 `~~` 標記,而不會將文字呈現為刪除線。需要 Claude Code v2.1.186 或更新版本 |

315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設為 `1` 可在終端機支援但未被自動偵測到時,強制啟用 DEC private mode 2026 [同步輸出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。適用於實作 BSU/ESU 但不回應功能探測的模擬器,例如 Emacs `eat`。在 tmux 下沒有作用。不同於會切換至[全螢幕呈現](/docs/zh-TW/fullscreen)的 `CLAUDE_CODE_NO_FLICKER`,此變數不會變更呈現器 |315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設為 `1` 可在終端機支援但未被自動偵測到時,強制啟用 DEC private mode 2026 [同步輸出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。適用於實作 BSU/ESU 但不回應功能探測的模擬器,例如 Emacs `eat`。在 tmux 下沒有作用。不同於會切換至[全螢幕呈現](/docs/zh-TW/fullscreen)的 `CLAUDE_CODE_NO_FLICKER`,此變數不會變更呈現器 |


340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-TW/tools-reference#session-search-limit) 呼叫次數的上限(預設:200)。當 Claude 達到上限時,後續的 WebSearch 呼叫會傳回一則通知,告訴它以已收集的資訊繼續。接受沒有上限的正整數。其他任何值都會被忽略並套用預設值,因此此上限可以提高但無法關閉。需要 Claude Code v2.1.212 或更新版本 |340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-TW/tools-reference#session-search-limit) 呼叫次數的上限(預設:200)。當 Claude 達到上限時,後續的 WebSearch 呼叫會傳回一則通知,告訴它以已收集的資訊繼續。接受沒有上限的正整數。其他任何值都會被忽略並套用預設值,因此此上限可以提高但無法關閉。需要 Claude Code v2.1.212 或更新版本 |

341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 設為 `1` 可讓 stdio MCP 伺服器僅以安全的基準環境加上該伺服器設定的 `env` 啟動,而不是繼承您的 shell 環境 |341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 設為 `1` 可讓 stdio MCP 伺服器僅以安全的基準環境加上該伺服器設定的 `env` 啟動,而不是繼承您的 shell 環境 |

342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在執行的 MCP 工具呼叫[移至背景任務](/docs/zh-TW/mcp#automatic-backgrounding-of-long-tool-calls)之前經過的時間(毫秒)(預設:120000,即 2 分鐘)。設為 `0` 可關閉自動背景執行。需要 Claude Code v2.1.212 或更新版本 |342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在執行的 MCP 工具呼叫[移至背景任務](/docs/zh-TW/mcp#automatic-backgrounding-of-long-tool-calls)之前經過的時間(毫秒)(預設:120000,即 2 分鐘)。設為 `0` 可關閉自動背景執行。需要 Claude Code v2.1.212 或更新版本 |

343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非互動](/docs/zh-TW/headless)工作階段的第一個回合等待仍在連線中的 MCP 伺服器的時間(毫秒),取代預設的[第一回合等待](/docs/zh-TW/agent-sdk/mcp#connection-timing)。設定後,等待會涵蓋所有擱置中的伺服器。設為 `0` 可略過等待。無論此值為何,[`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 伺服器都會保留其自己的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更新版本 |343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非互動](/docs/zh-TW/headless)工作階段的第一個回合等待仍在連線中之 MCP 伺服器的時間(毫秒),取代預設的[第一回合等待](/docs/zh-TW/agent-sdk/mcp#connection-timing)。設定後,等待會涵蓋所有待處理的伺服器;在[自行託管環境](/docs/zh-TW/self-hosted-environments-configuration#connection-timing)中,只會變更等待持續的時間。設為 `0` 可略過等待。無論此值為何,[`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 伺服器都會保留自己的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更新版本 |

344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | MCP 工具呼叫的閒置逾時(毫秒)。當 stdio、HTTP、SSE、WebSocket 或 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai) MCP 伺服器在這段時間內沒有傳送任何回應或進度通知時,工具呼叫會以錯誤中止,而不會等待整體的 `MCP_TOOL_TIMEOUT`。覆寫各傳輸方式的預設值:網路伺服器為 300000(5 分鐘),stdio 伺服器為 1800000(30 分鐘)。設為 `0` 可停用閒置檢查。低於 1000 的值會提高為一秒,且此值的上限為有效的 `MCP_TOOL_TIMEOUT`。`.mcp.json` 中至少為 1000 的個別伺服器 `timeout` 會將該伺服器的閒置時間窗提高至至少為 `timeout` 值。不適用於 IDE 伺服器或 SDK 同程序伺服器。需要 Claude Code v2.1.187 或更新版本。在 v2.1.203 之前,stdio 伺服器不受閒置逾時限制 |344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | MCP 工具呼叫的閒置逾時(毫秒)。當 stdio、HTTP、SSE、WebSocket 或 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai) MCP 伺服器在這段時間內沒有傳送任何回應或進度通知時,工具呼叫會以錯誤中止,而不會等待整體的 `MCP_TOOL_TIMEOUT`。覆寫各傳輸方式的預設值:網路伺服器為 300000(5 分鐘),stdio 伺服器為 1800000(30 分鐘)。設為 `0` 可停用閒置檢查。低於 1000 的值會提高為一秒,且此值的上限為有效的 `MCP_TOOL_TIMEOUT`。`.mcp.json` 中至少為 1000 的個別伺服器 `timeout` 會將該伺服器的閒置時間窗提高至至少為 `timeout` 值。不適用於 IDE 伺服器或 SDK 同程序伺服器。需要 Claude Code v2.1.187 或更新版本。在 v2.1.203 之前,stdio 伺服器不受閒置逾時限制 |

345| `CLAUDE_CODE_MESSAGING_SOCKET` | 由 Claude Code 設定,而非由您設定:在繫結[收件匣 socket](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket) 的工作階段中,Claude Code 會在繫結 socket 時將該 socket 的路徑匯出給 hook 與 Bash 命令。在以開啟訊息功能啟動的工作階段中,Claude Code 會在任何 hook 執行之前繫結 socket。機器上的其他工作階段會將訊息傳遞至此路徑。每個工作階段會匯出自己的 socket,而非從父工作階段繼承的 socket,且抵達該 socket 的訊息會經過工作階段的[傳入控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)。設定的 `env` 區塊無法設定此變數。需要 Claude Code v2.1.224 或更新版本 |345| `CLAUDE_CODE_MESSAGING_SOCKET` | 由 Claude Code 設定,而非由您設定:在繫結[收件匣 socket](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket) 的工作階段中,Claude Code 會在繫結 socket 時將該 socket 的路徑匯出給 hook 與 Bash 命令。在以開啟訊息功能啟動的工作階段中,Claude Code 會在任何 hook 執行之前繫結 socket。機器上的其他工作階段會將訊息傳遞至此路徑。每個工作階段會匯出自己的 socket,而非從父工作階段繼承的 socket,且抵達該 socket 的訊息會經過工作階段的[傳入控制](/docs/zh-TW/cross-session-messaging#control-inbound-messages)。設定的 `env` 區塊無法設定此變數。需要 Claude Code v2.1.224 或更新版本 |

346| `CLAUDE_CODE_MESSAGING_TOKEN` | 由 Claude Code 設定,而非由您設定:在繫結[收件匣 socket](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket) 的工作階段中,Claude Code 會將此工作階段專屬的 token 與 `CLAUDE_CODE_MESSAGING_SOCKET` 一起匯出給 hook 與 Bash 命令。張貼至 socket 的指令碼可傳送 `{"type":"auth","token":"<token>"}` 作為第一行,以證明其屬於該工作階段。在原生 Windows 上,Claude Code 要求此行,並會關閉任何未以有效此行開頭的連線。[own-child 規則](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket)說明 Claude Code 何時會參考此 token。每個工作階段會匯出自己的 token,絕不會是從父工作階段繼承的 token。設定的 `env` 區塊無法設定此變數。需要 Claude Code v2.1.228 或更新版本 |346| `CLAUDE_CODE_MESSAGING_TOKEN` | 由 Claude Code 設定,而非由您設定:在繫結[收件匣 socket](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket) 的工作階段中,Claude Code 會將此工作階段專屬的 token 與 `CLAUDE_CODE_MESSAGING_SOCKET` 一起匯出給 hook 與 Bash 命令。張貼至 socket 的指令碼可傳送 `{"type":"auth","token":"<token>"}` 作為第一行,以證明其屬於該工作階段。在原生 Windows 上,Claude Code 要求此行,並會關閉任何未以有效此行開頭的連線。[own-child 規則](/docs/zh-TW/cross-session-messaging#the-sessions-inbox-socket)說明 Claude Code 何時會參考此 token。每個工作階段會匯出自己的 token,絕不會是從父工作階段繼承的 token。設定的 `env` 區塊無法設定此變數。需要 Claude Code v2.1.228 或更新版本 |


443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 可強制啟用位元組層級串流閒置監視器,設定為 `0` 可強制停用。`0` 也會在執行[首位元組期限](/docs/zh-TW/network-config#streaming-idle-watchdogs)的連線上關閉該期限。未設定時,此監視器預設會針對直接 Anthropic API 與 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 連線,以及透過 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 連到的[閘道](/docs/zh-TW/gateways)連線上的串流回應啟用;在 v2.1.222 之前,它不會在這些閘道連線上執行,因此即使 keep-alive ping 持續抵達,事件層級監視器仍可能在那裡回報停滯。關於逾時以及各計時器如何交互作用,請參閱[串流閒置監視器](/docs/zh-TW/network-config#streaming-idle-watchdogs) |443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 可強制啟用位元組層級串流閒置監視器,設定為 `0` 可強制停用。`0` 也會在執行[首位元組期限](/docs/zh-TW/network-config#streaming-idle-watchdogs)的連線上關閉該期限。未設定時,此監視器預設會針對直接 Anthropic API 與 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 連線,以及透過 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 連到的[閘道](/docs/zh-TW/gateways)連線上的串流回應啟用;在 v2.1.222 之前,它不會在這些閘道連線上執行,因此即使 keep-alive ping 持續抵達,事件層級監視器仍可能在那裡回報停滯。關於逾時以及各計時器如何交互作用,請參閱[串流閒置監視器](/docs/zh-TW/network-config#streaming-idle-watchdogs) |

444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 可在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元組層級串流閒置監視器,這也會在 Bedrock 串流請求上啟用[首位元組期限](/docs/zh-TW/network-config#streaming-idle-watchdogs)。預設為關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定逾時 |444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 可在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元組層級串流閒置監視器,這也會在 Bedrock 串流請求上啟用[首位元組期限](/docs/zh-TW/network-config#streaming-idle-watchdogs)。預設為關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定逾時 |

445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `0` 可強制停用事件層級串流閒置監視器,設定為 `1` 可強制啟用。未設定時,此監視器預設對所有提供者開啟。在 v2.1.196 之前,未設定時的預設值在直接 Anthropic API 上由伺服器控制,在其他提供者上則為關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定逾時;關於與此監視器一同執行的其他停滯計時器,請參閱[串流閒置監視器](/docs/zh-TW/network-config#streaming-idle-watchdogs) |445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `0` 可強制停用事件層級串流閒置監視器,設定為 `1` 可強制啟用。未設定時,此監視器預設對所有提供者開啟。在 v2.1.196 之前,未設定時的預設值在直接 Anthropic API 上由伺服器控制,在其他提供者上則為關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定逾時;關於與此監視器一同執行的其他停滯計時器,請參閱[串流閒置監視器](/docs/zh-TW/network-config#streaming-idle-watchdogs) |

446| `CLAUDE_ENV_FILE` | shell 指令碼的路徑,Claude Code 會在同一個 shell 程序中於每個 Bash 命令之前執行其內容,因此檔案中的 export 對該命令可見。可用於在命令之間保留 virtualenv 或 conda 的啟用狀態。也會由 [SessionStart](/docs/zh-TW/hooks#persist-environment-variables)、[Setup](/docs/zh-TW/hooks#setup)、[CwdChanged](/docs/zh-TW/hooks#cwdchanged) 與 [FileChanged](/docs/zh-TW/hooks#filechanged) hook 動態填入 |446| `CLAUDE_ENV_FILE` | shell 指令碼的路徑,Claude Code 會在每個 Bash 命令之前於同一 shell 程序中執行其內容,因此檔案中的 export 對該命令可見。用於在命令之間保留 virtualenv 或 conda 的啟用狀態。在 v2.1.296 或更新版本中,PowerShell 命令也會收到其變數,條件請參閱 [PowerShell 命令中的保留變數](/docs/zh-TW/hooks#persisted-variables-in-powershell-commands)。也會由 [SessionStart](/docs/zh-TW/hooks#persist-environment-variables)、[Setup](/docs/zh-TW/hooks#setup)、[CwdChanged](/docs/zh-TW/hooks#cwdchanged) 與 [FileChanged](/docs/zh-TW/hooks#filechanged) hook 動態填入 |

447| `CLAUDE_JOB_DIR` | 由 Claude Code 在每個[背景工作階段](/docs/zh-TW/agent-view)中設定為該工作階段的 `~/.claude/jobs/<id>` 目錄。工作階段執行的 shell 命令會繼承此變數。請將暫存檔寫入 [`$CLAUDE_JOB_DIR/tmp`](/docs/zh-TW/agent-view#where-state-is-stored)。Claude 在該處的 `Write` 與 `Edit` 呼叫不會要求權限,且該目錄會在工作階段刪除時移除 |447| `CLAUDE_JOB_DIR` | 由 Claude Code 在每個[背景工作階段](/docs/zh-TW/agent-view)中設定為該工作階段的 `~/.claude/jobs/<id>` 目錄。工作階段執行的 shell 命令會繼承此變數。請將暫存檔寫入 [`$CLAUDE_JOB_DIR/tmp`](/docs/zh-TW/agent-view#where-state-is-stored)。Claude 在該處的 `Write` 與 `Edit` 呼叫不會要求權限,且該目錄會在工作階段刪除時移除 |

448| `CLAUDE_PID` | Claude Code 會在其產生的子程序(Bash 與 PowerShell 工具命令以及 hook 命令)中將此變數設定為自己的程序 ID。在 Linux 上,Bash 工具的 shell 整合會使用它來拒絕會符合 Claude Code 程序本身的 `pkill` 模式;請參閱[錯誤參考](/docs/zh-TW/errors#pkill-pattern-matches-the-claude-code-process)。可從您自己的指令碼中讀取它,以刻意識別上層 Claude Code 程序或向其傳送訊號。需要 Claude Code v2.1.214 或更新版本 |448| `CLAUDE_PID` | Claude Code 會在其產生的子程序(Bash 與 PowerShell 工具命令以及 hook 命令)中將此變數設定為自己的程序 ID。在 Linux 上,Bash 工具的 shell 整合會使用它來拒絕會符合 Claude Code 程序本身的 `pkill` 模式;請參閱[錯誤參考](/docs/zh-TW/errors#pkill-pattern-matches-the-claude-code-process)。可從您自己的指令碼中讀取它,以刻意識別上層 Claude Code 程序或向其傳送訊號。需要 Claude Code v2.1.214 或更新版本 |

449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 未提供明確名稱時,自動產生的 [Remote Control](/docs/zh-TW/remote-control) 工作階段名稱的前綴。預設為您電腦的主機名稱,產生如 `myhost-graceful-unicorn` 的名稱。`--remote-control-session-name-prefix` CLI 旗標會針對單次呼叫設定相同的值 |449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 未提供明確名稱時,自動產生的 [Remote Control](/docs/zh-TW/remote-control) 工作階段名稱的前綴。預設為您電腦的主機名稱,產生如 `myhost-graceful-unicorn` 的名稱。`--remote-control-session-name-prefix` CLI 旗標會針對單次呼叫設定相同的值 |

errors.md +100 −37

Details

37| `Connection lost while your computer was asleep` | [自動重試](#automatic-retries) |37| `Connection lost while your computer was asleep` | [自動重試](#automatic-retries) |

38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `Auto mode could not evaluate this action and is blocking it for safety` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |39| `Auto mode could not evaluate this action and is blocking it for safety` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Not run · auto mode's check had no usable answer` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Auto mode classifier transcript exceeded context window` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |41| `Auto mode classifier transcript exceeded context window` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |

41| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [伺服器錯誤](#auto-mode-cannot-determine-the-safety-of-an-action) |

42| `The server-side auto mode classifier gave no verdict` | [伺服器錯誤](#the-server-returned-no-safety-verdict) |43| `The server-side auto mode classifier gave no verdict` | [伺服器錯誤](#the-server-returned-no-safety-verdict) |


247| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [命令列錯誤](#windows-reported-an-error-ebadf) |248| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [命令列錯誤](#windows-reported-an-error-ebadf) |

248| `Cannot switch renderers in this session` | [命令列錯誤](#cannot-switch-renderers-in-this-session) |249| `Cannot switch renderers in this session` | [命令列錯誤](#cannot-switch-renderers-in-this-session) |

249| `Cannot switch renderers while work is running in the background` | [命令列錯誤](#cannot-switch-renderers-in-this-session) |250| `Cannot switch renderers while work is running in the background` | [命令列錯誤](#cannot-switch-renderers-in-this-session) |

251| `Claude Code couldn't restart` | [命令列錯誤](#claude-code-couldnt-restart) |

250| `Couldn't open Claude Desktop` | [命令列錯誤](#couldnt-open-claude-desktop) |252| `Couldn't open Claude Desktop` | [命令列錯誤](#couldnt-open-claude-desktop) |

251| `Failed to open Claude Desktop. Please try opening it manually.` | [命令列錯誤](#couldnt-open-claude-desktop) |253| `Failed to open Claude Desktop. Please try opening it manually.` | [命令列錯誤](#couldnt-open-claude-desktop) |

252| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [命令列錯誤](#terminal-setup-left-your-zed-keymap-unchanged) |254| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [命令列錯誤](#terminal-setup-left-your-zed-keymap-unchanged) |


262| `Marketplace "<name>" is already added from a different source` | [外掛錯誤](#marketplace-is-already-added-from-a-different-source) |264| `Marketplace "<name>" is already added from a different source` | [外掛錯誤](#marketplace-is-already-added-from-a-different-source) |

263| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [外掛錯誤](#marketplace-name-is-another-spelling-of-a-reserved-name) |265| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [外掛錯誤](#marketplace-name-is-another-spelling-of-a-reserved-name) |

264| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |266| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |

267| `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#claude-code-reserves-this-name) |

265| `Marketplace "<name>" is added but ignored` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#marketplace-is-added-but-ignored) |268| `Marketplace "<name>" is added but ignored` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#marketplace-is-added-but-ignored) |

266| `Marketplace "<name>" is registered but was refused (see the debug log)` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#marketplace-is-added-but-ignored) |269| `Marketplace "<name>" is registered but was refused (see the debug log)` | [外掛疑難排解](/docs/zh-TW/plugins/troubleshooting#marketplace-is-added-but-ignored) |

267| `references ${user_config.*} in a shell-form command` | [外掛錯誤](#plugin-command-references-user-config) |270| `references ${user_config.*} in a shell-form command` | [外掛錯誤](#plugin-command-references-user-config) |


308| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |311| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |

309| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |312| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |

310| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |313| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [工具錯誤](#disk-quota-or-temp-filesystem-is-full) |

314| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [工具錯誤](#file-is-not-valid-utf-8) |

311| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [工具錯誤](#the-source-file-is-not-valid-utf-8-text) |315| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [工具錯誤](#the-source-file-is-not-valid-utf-8-text) |

312| `the source file has the replacement character U+FFFD` | [工具錯誤](#the-source-file-is-not-valid-utf-8-text) |316| `the source file has the replacement character U+FFFD` | [工具錯誤](#the-source-file-is-not-valid-utf-8-text) |

313| `Not published: that file is on a network share` | [工具錯誤](#not-published-that-file-is-on-a-network-share) |317| `Not published: that file is on a network share` | [工具錯誤](#not-published-that-file-is-on-a-network-share) |


334| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [背景工作階段錯誤](#session-isnt-responding) |338| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [背景工作階段錯誤](#session-isnt-responding) |

335| `Session <id> was stopped while the respawn was in flight` | [背景工作階段錯誤](#session-was-stopped-while-the-respawn-was-in-flight) |339| `Session <id> was stopped while the respawn was in flight` | [背景工作階段錯誤](#session-was-stopped-while-the-respawn-was-in-flight) |

336| `This session was running agent '<name>', which is no longer available` | [背景工作階段錯誤](#session-agent-no-longer-available) |340| `This session was running agent '<name>', which is no longer available` | [背景工作階段錯誤](#session-agent-no-longer-available) |

341| `This session restarted <time> after its next /loop wakeup was due, so that wakeup will not fire` | [背景工作階段錯誤](#restarted-after-its-next-loop-wakeup-was-due) |

337| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [背景工作階段錯誤](#claude_code_process_wrapper-launcher-errors) |342| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [背景工作階段錯誤](#claude_code_process_wrapper-launcher-errors) |

338| `EUNKNOWN: unknown error, uv_spawn` | [背景工作階段錯誤](#eunknown-when-starting-a-background-session) |343| `EUNKNOWN: unknown error, uv_spawn` | [背景工作階段錯誤](#eunknown-when-starting-a-background-session) |

339| `EACCES: permission denied, posix_spawn` | [背景工作階段錯誤](#eacces-when-starting-a-background-session) |344| `EACCES: permission denied, posix_spawn` | [背景工作階段錯誤](#eacces-when-starting-a-background-session) |


439| :- | :- | :- |444| :- | :- | :- |

440| [`CLAUDE_CODE_MAX_RETRIES`](/docs/zh-TW/env-vars) | 10 | 重試嘗試次數。從 v2.1.186 開始上限為 15;從 v2.1.199 開始 `CLAUDE_CODE_RETRY_WATCHDOG` 會提高預設值並移除上限。降低它以在指令碼中更快地顯示故障。 |445| [`CLAUDE_CODE_MAX_RETRIES`](/docs/zh-TW/env-vars) | 10 | 重試嘗試次數。從 v2.1.186 開始上限為 15;從 v2.1.199 開始 `CLAUDE_CODE_RETRY_WATCHDOG` 會提高預設值並移除上限。降低它以在指令碼中更快地顯示故障。 |

441| [`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。 |446| [`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。 |

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

442| [`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 或更新版本。 |448| [`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 或更新版本。 |

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

444| [`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 或更新版本。 |450| [`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 或更新版本。 |


596<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.602<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

597```603```

598 604 

605在互動式工作階段中,工具呼叫下方會出現一列淡色的 `Not run · auto mode's check had no usable answer`,而不是此訊息。按 `Ctrl+O` 可在[逐字稿檢視器](/docs/zh-TW/interactive-mode#transcript-viewer)中閱讀該訊息。[伺服器未傳回安全判決](#the-server-returned-no-safety-verdict)下的拒絕也會顯示相同的列。在 v2.1.296 之前,訊息會以紅色錯誤的形式顯示在呼叫下方。

606 

599當 Claude Code 可以判斷故障類別時,它會在 `temporarily unavailable` 後面的括號中指明該類別,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。類別為 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重複,請檢查您的連線;請參閱[無法連線到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,訊息從不指明類別,讀作 `Wait briefly and then try this action again`。607當 Claude Code 可以判斷故障類別時,它會在 `temporarily unavailable` 後面的括號中指明該類別,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。類別為 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重複,請檢查您的連線;請參閱[無法連線到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,訊息從不指明類別,讀作 `Wait briefly and then try this action again`。

600 608 

601當沒有類別符合時,訊息出現時括號中沒有類別;多個故障會產生該形式。在 [Amazon Bedrock](/docs/zh-TW/amazon-bedrock) 上,包括 [Mantle 端點](/docs/zh-TW/amazon-bedrock#use-the-mantle-endpoint),當您的 AWS 帳戶無法叫用訊息中指明的模型時,它也會出現,該故障在每次重試時重複,直到您的帳戶被授予存取該模型的權限。609當沒有類別符合時,訊息出現時括號中沒有類別;多個故障會產生該形式。在 [Amazon Bedrock](/docs/zh-TW/amazon-bedrock) 上,包括 [Mantle 端點](/docs/zh-TW/amazon-bedrock#use-the-mantle-endpoint),當您的 AWS 帳戶無法叫用訊息中指明的模型時,它也會出現,該故障在每次重試時重複,直到您的帳戶被授予存取該模型的權限。


1900 1908 

1901當[受管設定檔、MDM 原則或原則協助程式](/docs/zh-TW/managed-settings)將 [`forceLoginMethod`](/docs/zh-TW/settings-reference#forceloginmethod) 設定為 `"gateway"`,或設定 [`forceLoginGatewayUrl`](/docs/zh-TW/settings-reference#forcelogingatewayurl) 而不設定 `forceLoginMethod` 時,Claude Code 會跳過此檢查。使用任一設定,Claude Code 會在 **Cloud gateway** 畫面上開啟登入步驟,而不是 Anthropic 登入方法。當機器上存在受管設定來源但無法讀取時,Claude Code 也會跳過檢查,因為該來源可能保有閘道設定。在 v2.1.247 之前,Claude Code 在此設定下也執行檢查,當 Anthropic 的端點無法到達時以此錯誤退出。1909當[受管設定檔、MDM 原則或原則協助程式](/docs/zh-TW/managed-settings)將 [`forceLoginMethod`](/docs/zh-TW/settings-reference#forceloginmethod) 設定為 `"gateway"`,或設定 [`forceLoginGatewayUrl`](/docs/zh-TW/settings-reference#forcelogingatewayurl) 而不設定 `forceLoginMethod` 時,Claude Code 會跳過此檢查。使用任一設定,Claude Code 會在 **Cloud gateway** 畫面上開啟登入步驟,而不是 Anthropic 登入方法。當機器上存在受管設定來源但無法讀取時,Claude Code 也會跳過檢查,因為該來源可能保有閘道設定。在 v2.1.247 之前,Claude Code 在此設定下也執行檢查,當 Anthropic 的端點無法到達時以此錯誤退出。

1902 1910 

1911在沒有受管設定的機器上,當您自己的 `~/.claude/settings.json` 以 `forceLoginMethod` 和 `forceLoginGatewayUrl` [指定閘道](/docs/zh-TW/claude-apps-gateway#set-the-gateway-url-in-user-settings)時,Claude Code 也會跳過此檢查。在 v2.1.295 之前,Claude Code 在這種情況下會執行檢查。

1912 

1903**該怎麼做:**1913**該怎麼做:**

1904 1914 

1905* 如果訊息命名代理伺服器變數,檢查其值是否指向正確的代理伺服器,並要求您的網路團隊允許透過它到訊息中主機的 HTTPS 連線。請參閱[網路設定](/docs/zh-TW/network-config)。1915* 如果訊息命名代理伺服器變數,檢查其值是否指向正確的代理伺服器,並要求您的網路團隊允許透過它到訊息中主機的 HTTPS 連線。請參閱[網路設定](/docs/zh-TW/network-config)。


3412 3422 

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

3414 3424 

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

3416* ``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)3426* ``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)

3417 3427 

3418**處理方式:**3428**處理方式:**

3419 3429 


3562 3572 

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

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

3565* **您傳入的基底分支不在您的複製中**: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 無法判斷您的複製是否為淺層複製時,它會改為建議 `git fetch --unshallow origin`。在 v2.1.221 之前,提示會對每個被擷取的基底分支都建議 `git fetch --unshallow origin`,而在完整的複製上,該命令會以 `fatal: --unshallow on a complete repository does not make sense` 失敗。3575* **您傳入的基底分支不在您的 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` 失敗。

3566 3576 

3567**處理方式:**3577**處理方式:**

3568 3578 


3756No conversation found with session ID: <session-id>3766No conversation found with session ID: <session-id>

3757```3767```

3758 3768 

3759Claude Code 在顯示訊息後會以代碼 1 結束。Claude Code 會[先搜尋目前的專案,然後搜尋這台機器上的所有其他專案](/docs/zh-TW/sessions#resume-a-session)來尋找該 ID。在 v2.1.223 之前,查詢只會搜尋目前的專案目錄及其 git worktree,因此請從該工作階段最後工作的目錄繼續。3769Claude Code 顯示訊息後會以代碼 1 結束。Claude Code 會[先搜尋目前的專案,再搜尋這台機器上的所有其他專案](/docs/zh-TW/sessions#where-the-session-picker-looks)來尋找該 ID。在 v2.1.223 之前,查找只會涵蓋目前的專案目錄及其 git worktree,因此請從該工作階段最後工作的目錄進行恢復。

3760 3770 

3761常見原因:3771常見原因:

3762 3772 


3816 3826 

3817* 在未帶有這些限制而啟動的工作階段中,執行 `/tui fullscreen`,或執行 `/tui default` 切換回來。Claude Code 會在該處儲存 [`tui` 設定](/docs/zh-TW/settings-reference#tui)3827* 在未帶有這些限制而啟動的工作階段中,執行 `/tui fullscreen`,或執行 `/tui default` 切換回來。Claude Code 會在該處儲存 [`tui` 設定](/docs/zh-TW/settings-reference#tui)

3818 3828 

3829<h3 id="claude-code-couldnt-restart">

3830 Claude Code couldn't restart

3831</h3>

3832 

3833Claude Code 正在重新啟動,例如在您執行 [`/tui`](/docs/zh-TW/fullscreen#enable-fullscreen-rendering) 後切換至或切換離開全螢幕渲染。它關閉了工作階段,但無法啟動新的程序,因此輸出此訊息並以狀態 1 結束:

3834 

3835```text theme={null}

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

3837```

3838 

3839當重新啟動時沒有可重新開啟的對話,例如因為 `/tui` 是您在新工作階段中的第一個輸入,訊息內容為 `Claude Code couldn't restart. Start Claude Code again.`

3840 

3841**處理方式:**

3842 

3843* 在 shell 中從相同目錄再次執行 `claude`。若訊息表示您的對話已儲存,請在新的工作階段中執行 [`/resume`](/docs/zh-TW/sessions#resume-a-session) 並選擇該對話

3844* 若重新啟動持續失敗,請在 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)時請附上該行

3845 

3819<h3 id="couldnt-open-claude-desktop">3846<h3 id="couldnt-open-claude-desktop">

3820 無法開啟 Claude Desktop3847 無法開啟 Claude Desktop

3821</h3>3848</h3>


4593* 或者,將 [`CLAUDE_CODE_TMPDIR`](/docs/zh-TW/env-vars) 設為位於有空間之檔案系統上的目錄,然後重新啟動 Claude Code4620* 或者,將 [`CLAUDE_CODE_TMPDIR`](/docs/zh-TW/env-vars) 設為位於有空間之檔案系統上的目錄,然後重新啟動 Claude Code

4594* 接著讓 Claude 再次執行該命令。它先前印出的輸出已遺失,而不是被截斷4621* 接著讓 Claude 再次執行該命令。它先前印出的輸出已遺失,而不是被截斷

4595 4622 

4623<h3 id="file-is-not-valid-utf-8">

4624 File is not valid UTF-8

4625</h3>

4626 

4627Claude 對一個位元組無法解碼為 UTF-8 的檔案使用了 Edit 或 NotebookEdit 工具,而 Claude Code 拒絕了該變更。沒有寫入任何內容,因此檔案維持原狀。這些工具會將整個檔案以 UTF-8 存回,這會把它們無法解碼的每個位元組都變成替代字元 `U+FFFD`。訊息會出現在工具結果中:

4628 

4629```text wrap theme={null}

4630File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.

4631```

4632 

4633原本應為 UTF-8 的檔案,只要包含即使一個無效的位元組序列,也會出現此訊息,因為檢查涵蓋的是檔案的整體位元組。

4634 

4635**處理方式:**

4636 

4637* 若要保留檔案目前的編碼,請讓 Claude 依照訊息的指示,使用以該編碼讀取和寫入檔案的 shell 命令進行變更

4638* 若要繼續使用 Edit 工具編輯該檔案,請將其轉換為 UTF-8,或修正原本應為 UTF-8 之檔案中的無效位元組,然後要求 Claude 再次進行編輯

4639 

4640在 v2.1.296 之前,Edit 和 NotebookEdit 會套用這類編輯,並將無法解碼的每個位元組儲存為 `U+FFFD`。若您使用的是這些版本,請更新 Claude Code。

4641 

4596<h3 id="the-source-file-is-not-valid-utf-8-text">4642<h3 id="the-source-file-is-not-valid-utf-8-text">

4597 The source file is not valid UTF-8 text4643 The source file is not valid UTF-8 text

4598</h3>4644</h3>


4752 命令被 worktree 隔離檢查阻止4798 命令被 worktree 隔離檢查阻止

4753</h3>4799</h3>

4754 4800 

4755Claude 在[在 worktree 中隔離的工作階段](/docs/zh-TW/worktrees#how-claude-code-enforces-isolation)中執行了 Bash 或 Monitor 命令,Claude Code 因以下兩個原因之一拒絕了它:4801Claude 在[在 worktree 中隔離的工作階段](/docs/zh-TW/worktrees#how-claude-code-enforces-isolation)中執行了 Bash、[PowerShell](/docs/zh-TW/tools-reference#powershell-tool) 或 [Monitor](/docs/zh-TW/tools-reference#monitor-tool) 命令,Claude Code 因以下原因之一拒絕了它:

4756 4802 

4757* 命令將 git 指向主簽出。4803* 命令將在主簽出或另一個 worktree 中執行。訊息會說明其工作目錄 `resolved to the shared checkout` 或 `is in a different worktree`。

4758* Claude Code 無法從命令文字驗證命令執行的任何 git 保持在 worktree 內。從未提及 git 的命令仍然可能因此原因被拒絕,因為展開變數間接參照(例如 `${!name}`)或執行 Bash 函數替換(例如 `${ command; }`)會產生在執行時本身可能是命令的值。4804* Bash 或 Monitor 命令將 git 指向主簽出。

4805* Claude Code 無法從 Bash 或 Monitor 命令的文字驗證命令執行的任何 git 保持在 worktree 內。從未提及 git 的命令仍然可能因此原因被拒絕,因為展開變數間接參照(例如 `${!name}`)或執行 Bash 函數替換(例如 `${ command; }`)會產生在執行時本身可能是命令的值。

4759 4806 

4760訊息的中間命名無法驗證的內容:4807訊息會顯示 `is isolated in the worktree <path>, but this command`,後接原因,例如 Claude Code 無法驗證其文字的命令:

4761 4808 

4762```text wrap theme={null}4809```text wrap theme={null}

4763This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.4810This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


4765 4812 

4766**該怎麼做:**4813**該怎麼做:**

4767 4814 

4768* 通常什麼都不做:Claude 讀取訊息並按其最後一句要求的方式重寫命令4815* **Git 指向主簽出,或無法驗證的命令文字**:什麼都不做。Claude 讀取訊息並按其最後一句要求的方式重寫命令。如果您要求的命令因其文字中的展開而持續被拒絕,請按字面拼寫標記的值,並從 worktree 內將 git 作為獨立的純命令執行

4769* 如果您要求的命令持續被拒絕,按字面拼寫標記的值:用其值替換間接參照或替換,並從 worktree 內將 git 作為獨立的純命令執行

4770* 要刻意作用於主簽出,請在工作階段外的終端機中自己執行命令4816* 要刻意作用於主簽出,請在工作階段外的終端機中自己執行命令

4771 4817 

4772<h3 id="this-session-has-no-saved-transcript">4818<h3 id="this-session-has-no-saved-transcript">


4946* 或使用 `--agent <name>` 繼續,指定確實存在的 agent,以改為作為該 agent 執行工作階段4992* 或使用 `--agent <name>` 繼續,指定確實存在的 agent,以改為作為該 agent 執行工作階段

4947* 如果 agent 是專案範圍的,而您尚未信任工作階段的原始目錄,請在那裡執行 Claude Code 一次,接受信任對話框,然後再次繼續4993* 如果 agent 是專案範圍的,而您尚未信任工作階段的原始目錄,請在那裡執行 Claude Code 一次,接受信任對話框,然後再次繼續

4948 4994 

4995<h3 id="restarted-after-its-next-loop-wakeup-was-due">

4996 This session restarted after its next /loop wakeup was due

4997</h3>

4998 

4999[背景工作階段](/docs/zh-TW/agent-view)中的[自行調節步調的 `/loop`](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 已停止。工作階段的程序在迴圈等待下一次喚醒時結束,而該次喚醒在工作階段的[下一個程序](/docs/zh-TW/agent-view#the-supervisor-process)啟動之前就已到期。錯過的喚醒不會延遲觸發。通知會說明工作階段重新啟動時該次喚醒已逾期多久:

5000 

5001```text theme={null}

5002This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.

5003```

5004 

5005在 v2.1.295 之前,迴圈在此情況下會停止而不顯示通知。

5006 

5007**該怎麼做:**

5008 

5009* 若要繼續迴圈,請[回覆該工作階段](/docs/zh-TW/agent-view#peek-and-reply)並如此說明,例如 `keep the loop running`。Claude 會連同您的回覆一起讀取通知,並可以排程下一次喚醒

5010* 如果您已不需要該迴圈,則什麼都不用做。它已經停止

5011 

4949<h3 id="claude_code_process_wrapper-launcher-errors">5012<h3 id="claude_code_process_wrapper-launcher-errors">

4950 CLAUDE\_CODE\_PROCESS\_WRAPPER 啟動器錯誤5013 CLAUDE\_CODE\_PROCESS\_WRAPPER 啟動器錯誤

4951</h3>5014</h3>


5269當 Claude Code 退出時會列印此訊息,因為其終端介面遇到無法復原的錯誤,在任一轉譯器中都是如此。第二句僅在[全螢幕](/docs/zh-TW/fullscreen)轉譯器啟動時發生錯誤時出現:5332當 Claude Code 退出時會列印此訊息,因為其終端介面遇到無法復原的錯誤,在任一轉譯器中都是如此。第二句僅在[全螢幕](/docs/zh-TW/fullscreen)轉譯器啟動時發生錯誤時出現:

5270 5333 

5271```text theme={null}5334```text theme={null}

5272Claude Code 在無法復原的介面錯誤 (<error>) 後退出。它在全螢幕轉譯器啟動時發生,因此下次啟動將使用傳統轉譯器(CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 隨時強制執行)。5335Claude 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).

5273```5336```

5274 5337 

5275**該怎麼做:**5338**該怎麼做:**


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

5287 5350 

5288```text theme={null}5351```text theme={null}

5289代理程式描述超過 15.0k 令牌限制(~16.2k 令牌)· 要求 Claude 修剪 .claude/agents/ 中的代理程式描述5352Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/

5290```5353```

5291 5354 

5292**該怎麼做:**5355**該怎麼做:**


5303Claude Code 在對話檢視中顯示此警告作為啟動通知,而不是在 stderr 上:5366Claude Code 在對話檢視中顯示此警告作為啟動通知,而不是在 stderr 上:

5304 5367 

5305```text theme={null}5368```text theme={null}

5306未載入:重新命名 .claude/skills/anthropic-skills,然後重新啟動 — 其名稱使用 "anthropic-skills",這是為從您的 claude.ai 帳戶同步的技能保留的名稱5369Not 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

5307```5370```

5308 5371 

5309通知命名它拒絕的第一個項目要變更的內容:要重新命名的資料夾或檔案、要編輯的 `name:` 行,或要重新命名的工作流程。當拒絕了多個項目時,通知以計數結尾,例如 `· 2 more`,[偵錯日誌](/docs/zh-TW/debug-your-config)命名每一個。5372通知命名它拒絕的第一個項目要變更的內容:要重新命名的資料夾或檔案、要編輯的 `name:` 行,或要重新命名的工作流程。當拒絕了多個項目時,通知以計數結尾,例如 `· 2 more`,[偵錯日誌](/docs/zh-TW/debug-your-config)命名每一個。


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

5322 5385 

5323```text theme={null}5386```text theme={null}

5324忽略來自 .claude/settings.local.json 的 2 個 permissions.allow 項目:此工作區尚未受信任。在此處以互動方式執行 Claude Code 一次並接受信任對話,或在 /Users/you/.claude.json 中設定 projects["/Users/you/project"].hasTrustDialogAccepted: true。5387Ignoring 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.

5325```5388```

5326 5389 

5327**該怎麼做:**5390**該怎麼做:**


5337Claude Code 不會將網路路徑新增為工作目錄。查詢網路路徑可以聯絡它命名的主機,在 Windows 上該聯絡可以將您的認證傳送給主機,因此 Claude Code 拒絕該路徑而不查詢它。當您使用此類路徑執行 `/add-dir` 時,或作為啟動時的警告時,您會看到此訊息。當它在啟動時出現時,Claude Code 啟動時不包含該目錄。5400Claude Code 不會將網路路徑新增為工作目錄。查詢網路路徑可以聯絡它命名的主機,在 Windows 上該聯絡可以將您的認證傳送給主機,因此 Claude Code 拒絕該路徑而不查詢它。當您使用此類路徑執行 `/add-dir` 時,或作為啟動時的警告時,您會看到此訊息。當它在啟動時出現時,Claude Code 啟動時不包含該目錄。

5338 5401 

5339```text theme={null}5402```text theme={null}

5340\\server\share 是網路路徑,無法新增為工作目錄。在 Windows 上,將共用對應到磁碟機代號,並在啟動時使用 --add-dir 傳遞它(在工作階段中新增的磁碟機代號尚未帶有遠端讀取信任)。5403\\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).

5341```5404```

5342 5405 

5343Claude Code 以此方式拒絕的路徑包括:5406Claude Code 以此方式拒絕的路徑包括:

5344 5407 

5345* UNC 共用,例如 `\\server\share`5408* UNC 共用,例如 `\\server\share`

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

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

5348 5411 

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


5384您的組織的[伺服器受管設定](/docs/zh-TW/server-managed-settings)包括需要您批准的設定,且您拒絕了[安全批准對話](/docs/zh-TW/server-managed-settings#security-approval-dialogs),因此 Claude Code 退出而不應用它們:5447您的組織的[伺服器受管設定](/docs/zh-TW/server-managed-settings)包括需要您批准的設定,且您拒絕了[安全批准對話](/docs/zh-TW/server-managed-settings#security-approval-dialogs),因此 Claude Code 退出而不應用它們:

5385 5448 

5386```text theme={null}5449```text theme={null}

5387受管設定未獲批准;退出而不應用它們。5450Managed settings were not approved; exiting without applying them.

5388```5451```

5389 5452 

5390**該怎麼做:**5453**該怎麼做:**


5399您的組織的[受管設定](/docs/zh-TW/managed-settings)阻止預設選項解析為的模型以及它可以降級到的每個模型。將在預設選項上啟動的工作階段在啟動時退出,而不是執行被阻止的模型。您看到的訊息取決於阻止它的設定。當 [`deniedModels`](/docs/zh-TW/model-config#block-specific-models-or-versions) 清單阻止它時,訊息讀作:5462您的組織的[受管設定](/docs/zh-TW/managed-settings)阻止預設選項解析為的模型以及它可以降級到的每個模型。將在預設選項上啟動的工作階段在啟動時退出,而不是執行被阻止的模型。您看到的訊息取決於阻止它的設定。當 [`deniedModels`](/docs/zh-TW/model-config#block-specific-models-or-versions) 清單阻止它時,訊息讀作:

5400 5463 

5401```text theme={null}5464```text theme={null}

5402Claude Code 無法啟動:您的組織的受管設定在 "deniedModels" 中阻止預設模型 (claude-opus-5-5),且它們允許的模型都無法用作預設模型。要求您的管理員更新 "deniedModels" 或 "availableModels"。5465Claude 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".

5403```5466```

5404 5467 

5405當 `availableModels` 清單且 [`availableModelsMatch`](/docs/zh-TW/settings-reference#availablemodelsmatch) 設定為 `"exact"` 時省略它,訊息讀作:5468當 `availableModels` 清單且 [`availableModelsMatch`](/docs/zh-TW/settings-reference#availablemodelsmatch) 設定為 `"exact"` 時省略它,訊息讀作:

5406 5469 

5407```text theme={null}5470```text theme={null}

5408Claude Code 無法啟動:您的組織僅允許 "availableModels" 中列出的模型,且它們都無法用作預設模型 (claude-opus-5-5 未列出)。要求您的管理員更新 "availableModels"。5471Claude 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".

5409```5472```

5410 5473 

5411**該怎麼做:**5474**該怎麼做:**


5420您的組織的[受管設定](/docs/zh-TW/managed-settings)設定了 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 清單,且工作階段的 API 提供者不在其上,或工作階段使用的端點不是以該項目要求的方式固定的。Claude Code 在啟動前、登入前或工作階段下次聯絡 API 時拒絕。訊息以允許的提供者開頭:5483您的組織的[受管設定](/docs/zh-TW/managed-settings)設定了 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 清單,且工作階段的 API 提供者不在其上,或工作階段使用的端點不是以該項目要求的方式固定的。Claude Code 在啟動前、登入前或工作階段下次聯絡 API 時拒絕。訊息以允許的提供者開頭:

5421 5484 

5422```text theme={null}5485```text theme={null}

5423您的組織的受管設定允許 Claude Code 使用:Anthropic API、Amazon Bedrock。5486Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

5424```5487```

5425 5488 

5426當清單為空時,訊息改為讀作:5489當清單為空時,訊息改為讀作:

5427 5490 

5428```text theme={null}5491```text theme={null}

5429您的組織的受管設定允許 Claude Code 使用沒有 API 提供者(allowedProviders 是空清單),因此它無法在此機器上啟動。5492Your 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.

5430```5493```

5431 5494 

5432當每個項目都無法辨識時,括號讀作 `(allowedProviders lists only unrecognized entries)` 代替。5495當每個項目都無法辨識時,括號讀作 `(allowedProviders lists only unrecognized entries)` 代替。


5443您在 `/mcp` 中選擇了伺服器上的**重新連線**,或在那裡重新開啟了已停用的伺服器,且[限制 MCP 伺服器](/docs/zh-TW/managed-mcp)的設定阻止該伺服器。Claude Code 拒絕連線它並顯示:5506您在 `/mcp` 中選擇了伺服器上的**重新連線**,或在那裡重新開啟了已停用的伺服器,且[限制 MCP 伺服器](/docs/zh-TW/managed-mcp)的設定阻止該伺服器。Claude Code 拒絕連線它並顯示:

5444 5507 

5445```text theme={null}5508```text theme={null}

5446MCP 伺服器 <name> 被企業受管策略阻止5509MCP server <name> is blocked by enterprise managed policy

5447```5510```

5448 5511 

5449以下任何設定都可能產生訊息:5512以下任何設定都可能產生訊息:


5467您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的文件存在但無法解析為 JSON 物件,因此 Claude Code 在啟動時以代碼 1 退出,而不是執行而不使用文件帶來的策略。行在訊息前命名失敗的來源:5530您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的文件存在但無法解析為 JSON 物件,因此 Claude Code 在啟動時以代碼 1 退出,而不是執行而不使用文件帶來的策略。行在訊息前命名失敗的來源:

5468 5531 

5469```text theme={null}5532```text theme={null}

5470/Library/Application Support/ClaudeCode/managed-settings.json:受管設定文件無法解析為 JSON 物件;其設定都不生效。修復或移除它。5533/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.

5471```5534```

5472 5535 

5473來源是以下其中之一:5536來源是以下其中之一:


5496您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的來源存在但無法讀取,原因例如 I/O 錯誤而不是作業系統拒絕讀取。沒有其他管理來源提供策略,Claude Code 在啟動時退出,而不是執行而不使用來源可能帶來的策略:5559您的組織部署[受管設定](/docs/zh-TW/managed-settings),且其中一個已部署的來源存在但無法讀取,原因例如 I/O 錯誤而不是作業系統拒絕讀取。沒有其他管理來源提供策略,Claude Code 在啟動時退出,而不是執行而不使用來源可能帶來的策略:

5497 5560 

5498```text theme={null}5561```text theme={null}

5499無法讀取受管策略設定。5562Unable to read managed policy settings.

5500此機器可能需要組織登入強制執行,但策略檔案無法載入。5563This machine may require organization login enforcement, but the policy file failed to load.

5501聯絡您的管理員。5564Contact your administrator.

5502 5565 

5503詳細資訊:<source>: <reason>5566Detail: <source>: <reason>

5504```5567```

5505 5568 

5506在相同狀態下,登入流程、來自已執行工作階段的 API 要求,以及 [`claude gateway`](/docs/zh-TW/claude-apps-gateway) 伺服器被拒絕,使用命名 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 的第一行變體。5569在相同狀態下,登入流程、來自已執行工作階段的 API 要求,以及 [`claude gateway`](/docs/zh-TW/claude-apps-gateway) 伺服器被拒絕,使用命名 [`allowedProviders`](/docs/zh-TW/settings-reference#allowedproviders) 的第一行變體。


5525`See /status:` 後面的文字說明失敗的內容,例如指令碼的結束代碼後跟其錯誤輸出:5588`See /status:` 後面的文字說明失敗的內容,例如指令碼的結束代碼後跟其錯誤輸出:

5526 5589 

5527```text theme={null}5590```text theme={null}

5528otelHeadersHelper 失敗;遙測未被匯出。請參閱 /status:exited 1: token service unreachable5591otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable

5529```5592```

5530 5593 

5531**該怎麼做:**5594**該怎麼做:**


5545Claude Code 僅在[非互動模式](/docs/zh-TW/headless)中寫入此行,每個伺服器一次。在互動工作階段中,它改為將相同的拒絕寫入偵錯日誌。5608Claude Code 僅在[非互動模式](/docs/zh-TW/headless)中寫入此行,每個伺服器一次。在互動工作階段中,它改為將相同的拒絕寫入偵錯日誌。

5546 5609 

5547```text theme={null}5610```text theme={null}

5548MCP 伺服器 'internal-api':headersHelper 未執行 — 此工作區沒有持久化信任;在此處以互動方式接受信任對話一次,或在 /Users/you/.claude.json 中設定 projects["/Users/you/project"].hasTrustDialogAccepted。5611MCP 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.

5549```5612```

5550 5613 

5551訊息列印的 `projects` 金鑰是資料夾[專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)說明 Claude Code 信任的金鑰。為父資料夾接受信任對話不滿足檢查,`-p` 或 SDK 工作階段也不滿足。5614訊息列印的 `projects` 金鑰是資料夾[專案允許規則和工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)說明 Claude Code 信任的金鑰。為父資料夾接受信任對話不滿足檢查,`-p` 或 SDK 工作階段也不滿足。


5563您的設定檔案中的[權限規則](/docs/zh-TW/permissions#permission-rule-syntax)沒有 `Tool` 或 `Tool(content)` 的形狀,例如因為文字跟在右括號後面或其中一個括號遺失。Claude Code 跳過規則,並在互動工作階段啟動時在無效設定對話中列出它,以及在 [`claude doctor`](/docs/zh-TW/debug-your-config#check-resolved-settings) 輸出中:5626您的設定檔案中的[權限規則](/docs/zh-TW/permissions#permission-rule-syntax)沒有 `Tool` 或 `Tool(content)` 的形狀,例如因為文字跟在右括號後面或其中一個括號遺失。Claude Code 跳過規則,並在互動工作階段啟動時在無效設定對話中列出它,以及在 [`claude doctor`](/docs/zh-TW/debug-your-config#check-resolved-settings) 輸出中:

5564 5627 

5565```text theme={null}5628```text theme={null}

5566無效權限規則 "Bash(ls) x" 已跳過:格式不正確的 Tool(content) 規則。規則採用 Tool 或 Tool(content) 的形式,必須在右括號 ")" 處結束;括號內的內容是字面意思5629Invalid 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

5567```5630```

5568 5631 

5569**該怎麼做:**5632**該怎麼做:**

5570 5633 

5571* 在訊息列出的設定檔中,重寫規則使其在其右括號處結束,例如用 `Bash(ls *)` 代替 `Bash(ls) x`5634* 在訊息列出的設定檔中,重寫規則使其在其右括號處結束,例如用 `Bash(ls *)` 代替 `Bash(ls) x`

5572* 將括號內的內容保留原樣。它們是字面意思,因此規則如 `Edit(./Finance (2024)/*)` 無需逃逸即有效5635* 內容中的括號保持原樣。它們是字面字元,因此像 `Edit(./Finance (2024)/**)` 這樣的規則無需跳脫即有效

5573 5636 

5574在 v2.1.260 之前,Claude Code 將括號不相符的規則報告為 `Mismatched parentheses`。5637在 v2.1.260 之前,Claude Code 將括號不相符的規則報告為 `Mismatched parentheses`。

5575 5638 


5580Claude 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` 規則檢查檔案權限,因此它永遠不會查詢命名其他檔案工具之一的路徑規則。它保留規則並不改變其他任何內容;警告命名規則、其在括號中的來源和要寫入的替換:5643Claude 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` 規則檢查檔案權限,因此它永遠不會查詢命名其他檔案工具之一的路徑規則。它保留規則並不改變其他任何內容;警告命名規則、其在括號中的來源和要寫入的替換:

5581 5644 

5582```text theme={null}5645```text theme={null}

5583權限拒絕規則 (.claude/settings.json):Write(docs/**) 不符合檔案權限檢查 — 僅 Edit(path) 規則。改用 Edit(docs/**)(Edit 規則涵蓋所有檔案編輯工具)。5646Permission 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).

5584```5647```

5585 5648 

5586**該怎麼做:**5649**該怎麼做:**


5602警告存在是為了讓您縮小萬用字元比您預期更寬的規則。Claude Code 保留規則並不改變它相符的方式;警告命名規則及其在括號中的來源:5665警告存在是為了讓您縮小萬用字元比您預期更寬的規則。Claude Code 保留規則並不改變它相符的方式;警告命名規則及其在括號中的來源:

5603 5666 

5604```text theme={null}5667```text theme={null}

5605權限允許規則 (.claude/settings.json):Bash(git -C * status *) 在命令的其餘部分之前有萬用字元,因此它也符合在該位置插入的任何選項並批准它們而不提示。對於 git,選項如 -c 和 --exec-path 可以執行任意命令。將該 * 替換為您的確切值,或僅在子命令後使用 *(例如 Bash(git status *))。5668Permission 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 *)).

5606```5669```

5607 5670 

5608**該怎麼做:**5671**該怎麼做:**


5638設定檔案將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設定為 Claude Code 無法辨識的值,例如打字錯誤 `"reject"`。警告的第二句取決於哪個檔案保持該值;在使用者、專案、本機或 `--settings` 檔案中讀取:5701設定檔案將 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound) 設定為 Claude Code 無法辨識的值,例如打字錯誤 `"reject"`。警告的第二句取決於哪個檔案保持該值;在使用者、專案、本機或 `--settings` 檔案中讀取:

5639 5702 

5640```text theme={null}5703```text theme={null}

5641"crossSessionInbound" 必須是 "accept"、"hold"、"refuse" 之一;收到 "reject"。此值被忽略;當它存在時,跨工作階段訊息被保持以供您批准,而不是被傳遞。將其設定為上述值之一。5704"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.

5642```5705```

5643 5706 

5644在[受管設定](/docs/zh-TW/managed-settings)中,Claude Code 將無法辨識的值視為 `refuse`(最限制的值),警告說跨工作階段訊息被拒絕,直到管理員修復它。有關保持如何與您其他設定檔案中的值結合,請參閱 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound)。5707在[受管設定](/docs/zh-TW/managed-settings)中,Claude Code 將無法辨識的值視為 `refuse`(最限制的值),警告說跨工作階段訊息被拒絕,直到管理員修復它。有關保持如何與您其他設定檔案中的值結合,請參閱 [`crossSessionInbound`](/docs/zh-TW/settings-reference#crosssessioninbound)。


5672您設定了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/zh-TW/env-vars),這通常使[自動壓縮](/docs/zh-TW/model-config#default-auto-compact-thresholds)在 1M 上下文模型上保持工作階段至 200K 視窗,但沒有壓縮閾值將此工作階段限制在或低於 200K,因此對話可以超過它。5735您設定了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/zh-TW/env-vars),這通常使[自動壓縮](/docs/zh-TW/model-config#default-auto-compact-thresholds)在 1M 上下文模型上保持工作階段至 200K 視窗,但沒有壓縮閾值將此工作階段限制在或低於 200K,因此對話可以超過它。

5673 5736 

5674```text theme={null}5737```text theme={null}

5675CLAUDE_CODE_DISABLE_1M_CONTEXT 已設定,但 <model> 的 200K 限制未強制執行,因此此工作階段可以超過它。若要強制執行,設定 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000(或 autoCompactWindow 設定)。5738CLAUDE_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).

5676```5739```

5677 5740 

5678Claude Code 為它辨識為具有原生 1M 視窗的每個模型自行強制執行 200K 限制,對於它無法辨識的模型 ID,它在它假設的視窗處壓縮。當其他設定擊敗該強制執行時出現警告:5741Claude Code 為它辨識為具有原生 1M 視窗的每個模型自行強制執行 200K 限制,對於它無法辨識的模型 ID,它在它假設的視窗處壓縮。當其他設定擊敗該強制執行時出現警告:


5741當沙箱化命令執行時,沙箱透過在那裡建立 0 位元組唯讀佔位符來保持對尚不存在的檔案的寫入拒絕,並在之後移除它。在該清理執行前被殺死的工作階段(例如透過 SIGKILL)會留下佔位符。後續工作階段在每次啟動時再次唯讀繫結它們,因此設定寫入(例如儲存「是,不要再問」)在其中一個所在的位置失敗。5804當沙箱化命令執行時,沙箱透過在那裡建立 0 位元組唯讀佔位符來保持對尚不存在的檔案的寫入拒絕,並在之後移除它。在該清理執行前被殺死的工作階段(例如透過 SIGKILL)會留下佔位符。後續工作階段在每次啟動時再次唯讀繫結它們,因此設定寫入(例如儲存「是,不要再問」)在其中一個所在的位置失敗。

5742 5805 

5743```text theme={null}5806```text theme={null}

5744- 被殺死的工作階段留下的過時沙箱遮罩檔案:/home/you/project/.claude/settings.local.json5807- Stale sandbox mask files left by a killed session: /home/you/project/.claude/settings.local.json

5745 修復:在該專案中沒有其他 Claude Code 工作階段執行時,使用 `rm <path>` 移除每個 — 0 位元組唯讀檔案(其中設定檔案所在)使「是,不要再問」無法儲存,沙箱在每次啟動時再次唯讀繫結它5808 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

5746```5809```

5747 5810 

5748**該怎麼做:**5811**該怎麼做:**

Details

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` 在雲端和終端之間移動會話 |

29| Plugin marketplaces | ✅ 支持 | 認證要求因介面而異。請參閱 [GHES 上的 Plugin marketplaces](#plugin-marketplaces-on-ghes) |29| Plugin marketplaces | ✅ 支持 | 認證要求因介面而異。請參閱 [GHES 上的 Plugin marketplaces](#plugin-marketplaces-on-ghes) |

30| Contribution metrics | ✅ 支持 | 通過 webhooks 傳遞到 [analytics dashboard](/docs/zh-TW/analytics) |30| Contribution metrics | ❌ 不支援 | 需要託管在 github.com 上的儲存庫。[分析儀表板](/docs/zh-TW/analytics)仍會顯示 GHES 儲存庫中工作的使用量指標 |

31| GitHub Actions | ✅ 支持 | 需要手動工作流設置;`/install-github-app` 僅適用於 github.com |31| GitHub Actions | ✅ 支持 | 需要手動工作流設置;`/install-github-app` 僅適用於 github.com |

32| GitHub MCP server | ❌ 不支持 | GitHub MCP server 不適用於 GHES 實例 |32| GitHub MCP server | ❌ 不支持 | GitHub MCP server 不適用於 GHES 實例 |

33 33 


56 從 GHES 執行個體上的 GitHub App 頁面,在您希望 Claude 存取的儲存庫或組織上安裝應用程式。您可以先從子集開始,稍後再新增更多。56 從 GHES 執行個體上的 GitHub App 頁面,在您希望 Claude 存取的儲存庫或組織上安裝應用程式。您可以先從子集開始,稍後再新增更多。

57 </Step>57 </Step>

58 58 

59 <Step title="啟用功能">59 <Step title="啟用 Code Review">

60 前往 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 並為您的 GHES 儲存庫啟用 [Code Review](/docs/zh-TW/code-review#set-up-code-review) 和[貢獻指標](/docs/zh-TW/analytics#enable-contribution-metrics),使用與 github.com 相同的設定。60 前往 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 並為您的 GHES 儲存庫啟用 [Code Review](/docs/zh-TW/code-review#set-up-code-review),使用與 github.com 相同的設定。

61 </Step>61 </Step>

62</Steps>62</Steps>

63 63 


65 GitHub App 權限65 GitHub App 權限

66</h3>66</h3>

67 67 

68資訊清單使用下列權限和 webhook 事件設定 GitHub App,這些權限和事件共同涵蓋雲端工作階段、Code Review、Claude Security、外掛市集和貢獻指標:68資訊清單使用下列權限和 webhook 事件設定 GitHub App,這些權限和事件共同涵蓋雲端工作階段、Code Review、Claude Security 和外掛市集:

69 69 

70| 權限 | 存取 | 用途 |70| 權限 | 存取 | 用途 |

71| :- | :- | :- |71| :- | :- | :- |


270* [在雲端使用 Claude Code](/docs/zh-TW/claude-code-on-the-web):在雲基礎設施上運行 Claude Code 會話270* [在雲端使用 Claude Code](/docs/zh-TW/claude-code-on-the-web):在雲基礎設施上運行 Claude Code 會話

271* [Code Review](/docs/zh-TW/code-review):自動化 PR 審查271* [Code Review](/docs/zh-TW/code-review):自動化 PR 審查

272* [Plugin marketplaces](/docs/zh-TW/plugins/host-marketplace):構建和分發插件目錄272* [Plugin marketplaces](/docs/zh-TW/plugins/host-marketplace):構建和分發插件目錄

273* [Analytics](/docs/zh-TW/analytics):跟踪使用情況和貢獻指標273* [Analytics](/docs/zh-TW/analytics):追蹤整個組織的 Claude Code 使用情況

274* [Managed settings](/docs/zh-TW/settings):組織範圍的策略配置274* [Managed settings](/docs/zh-TW/settings):組織範圍的策略配置

275* [Network configuration](/docs/zh-TW/network-config):防火牆和 IP 白名單要求275* [Network configuration](/docs/zh-TW/network-config):防火牆和 IP 白名單要求

headless.md +7 −5

Details

89* **[Monitor](/docs/zh-TW/tools-reference#monitor-tool) 監視**:執行會等待直到監視逾時或 10 分鐘上限結束等待,以先發生者為準。在等待期間,Claude 會持續回應監視報告的內容。預設情況下,監視在 Claude 啟動後五分鐘逾時。89* **[Monitor](/docs/zh-TW/tools-reference#monitor-tool) 監視**:執行會等待直到監視逾時或 10 分鐘上限結束等待,以先發生者為準。在等待期間,Claude 會持續回應監視報告的內容。預設情況下,監視在 Claude 啟動後五分鐘逾時。

90* **待處理的喚醒**:在以文字傳遞提示詞(而非使用 `--input-format stream-json`)的執行中,當 Claude 已排定 [自訂節奏的 `/loop` 喚醒](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 時,執行會等待每次喚醒觸發並執行其迭代,直到 [迴圈結束](/docs/zh-TW/scheduled-tasks#stop-a-loop),即使超過 10 分鐘上限也是如此。90* **待處理的喚醒**:在以文字傳遞提示詞(而非使用 `--input-format stream-json`)的執行中,當 Claude 已排定 [自訂節奏的 `/loop` 喚醒](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 時,執行會等待每次喚醒觸發並執行其迭代,直到 [迴圈結束](/docs/zh-TW/scheduled-tasks#stop-a-loop),即使超過 10 分鐘上限也是如此。

91 91 

92當 stderr 是終端機且執行已等待五秒時,Claude Code 會向 stderr 列印一行以 `Waiting for background work to finish` 開頭並指出該工作的訊息。使用 [`json` 或 `stream-json` 輸出](#get-structured-output) 時,只有在 stdout 不是終端機時才會列印該行,因此您的指令碼讀取的 JSON 永遠不會包含它。

93 

92如果執行達到其 [`--max-budget-usd`](/docs/zh-TW/cli-reference#cli-flags) 上限,Claude Code 會停止剩餘的背景工作,而不是繼續等待。94如果執行達到其 [`--max-budget-usd`](/docs/zh-TW/cli-reference#cli-flags) 上限,Claude Code 會停止剩餘的背景工作,而不是繼續等待。

93 95 

94當背景工作啟動另一個回合時,使用預設的 `text` 輸出時,執行會列印每個回合的結果;使用 `json` 輸出時,則列印最後一個回合的結果。在 v2.1.295 之前,使用 `text` 輸出時,執行也只會列印最後一個回合的結果。96當背景工作啟動另一個回合時,使用預設的 `text` 輸出時,執行會列印每個回合的結果;使用 `json` 輸出時,則列印最後一個回合的結果。在 v2.1.295 之前,使用 `text` 輸出時,執行也只會列印最後一個回合的結果。


296 298 

297當 `--plugin-dir` 目錄或封存檔本身載入失敗時,其 `plugin_errors` 項目會以 `path` 包含解析後的絕對路徑。可用它來判斷多個 `--plugin-dir` 值中是哪一個失敗。`path` 欄位需要 Claude Code v2.1.283 或更新版本。299當 `--plugin-dir` 目錄或封存檔本身載入失敗時,其 `plugin_errors` 項目會以 `path` 包含解析後的絕對路徑。可用它來判斷多個 `--plugin-dir` 值中是哪一個失敗。`path` 欄位需要 Claude Code v2.1.283 或更新版本。

298 300 

299以相同方式使用 MCP 伺服器欄位。當您搭配 `-p` 傳入 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 時,Claude Code 會在執行第一個回合前等待仍在擱置中的伺服器,最長等待 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時時間,預設為 30 秒。具有[快取工具清單](/docs/zh-TW/agent-sdk/mcp#connection-timing)的遠端伺服器會略過等待,在 `system/init` 中顯示 `pending`,並在第一次工具呼叫時連線。此等待需要 Claude Code v2.1.221 或更新版本。301以相同方式使用 MCP 伺服器欄位。當您搭配 `-p` 傳入 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 時,Claude Code 會在執行第一個回合前等待仍在擱置中的伺服器,最長等待 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時時間,預設為 30 秒。具有[快取工具清單](/docs/zh-TW/agent-sdk/mcp#connection-timing)的遠端伺服器會略過等待,在 `system/init` 中顯示 `pending`,並在第一次工具呼叫時連線。在[自架環境](/docs/zh-TW/self-hosted-environments-configuration#connection-timing)中,則會改為套用較短的等待時間。此等待需要 Claude Code v2.1.221 或更新版本。

300 302 

301Claude Code 會在啟動時驗證每個 `--mcp-config` 項目,並略過驗證失敗的項目,例如沒有 `type` 的 `url` 項目。執行會繼續並正常結束,因此請檢查這些欄位,以偵測從未載入的伺服器:303Claude Code 會在啟動時驗證每個 `--mcp-config` 項目,並略過驗證失敗的項目,例如沒有 `type` 的 `url` 項目。執行會繼續並正常結束,因此請檢查這些欄位,以偵測從未載入的伺服器:

302 304 


327 自動核准工具329 自動核准工具

328</h3>330</h3>

329 331 

330使用 `--allowedTools` 讓 Claude 無需提示即可使用特定工具。列出 `Read` 及 `Edit` 可讓 Claude 在不請求權限的情況下讀取及編輯檔案。列出 `Bash` 對 shell 命令也有相同效果,但以[自動模式](/docs/zh-TW/permission-modes#how-auto-mode-evaluates-actions)啟動的執行除外;在此情況下,Claude Code 會將單獨的 `Bash` 項目視為過於寬泛的允許規則而捨棄,改由自動模式評估每個命令。此範例列出這三個工具,執行測試套件並修正失敗:332使用 `--allowedTools` 讓 Claude 無需提示即可使用特定工具。列出 `Read` 及 `Edit` 可讓 Claude 在不請求權限的情況下讀取及編輯檔案,但從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取除外。列出 `Bash` 對 shell 命令也有相同效果,但以[自動模式](/docs/zh-TW/permission-modes#how-auto-mode-evaluates-actions)啟動的執行除外;在此情況下,Claude Code 會將單獨的 `Bash` 項目視為過於寬泛的允許規則而捨棄,改由自動模式評估每個命令。此範例列出這三個工具,執行測試套件並修正失敗:

331 333 

332```bash theme={null}334```bash theme={null}

333claude -p "Run the test suite and fix any failures" \335claude -p "Run the test suite and fix any failures" \


337若要為整個工作階段設定基準,而非列出個別工具,請傳入[權限模式](/docs/zh-TW/permission-modes)。沒有任何設定指定權限模式的執行會採用[內建的起始權限模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in),而它可能是 `auto`,因此請傳入您想要的模式:339若要為整個工作階段設定基準,而非列出個別工具,請傳入[權限模式](/docs/zh-TW/permission-modes)。沒有任何設定指定權限模式的執行會採用[內建的起始權限模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in),而它可能是 `auto`,因此請傳入您想要的模式:

338 340 

339* **`auto`**:傳入 `--permission-mode auto`,由分類器代替您審查大多數動作341* **`auto`**:傳入 `--permission-mode auto`,由分類器代替您審查大多數動作

340* **`dontAsk`**:Claude Code 會拒絕所有原本會提示的呼叫,這對於受嚴格限制的 CI 執行很有用。在手動模式下無需核准的動作仍會執行,例如讀取工作目錄中的檔案及[唯讀命令集](/docs/zh-TW/permissions#read-only-commands),您的 `--allowedTools` 項目或 `permissions.allow` 規則涵蓋的動作也同樣會執行。`AskUserQuestion`、[您的組織設為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具,以及標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,即使有允許規則相符仍會被拒絕342* **`dontAsk`**:Claude Code 會拒絕所有原本會提示的呼叫,這對於受嚴格限制的 CI 執行很有用。在手動模式下無需核准的動作仍會執行,例如讀取工作目錄中的檔案及[唯讀命令集](/docs/zh-TW/permissions#read-only-commands),您的 `--allowedTools` 項目或 `permissions.allow` 規則涵蓋的動作也同樣會執行。`AskUserQuestion`、[您的組織設為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,以及[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),即使有允許規則相符仍會被拒絕

341* **`acceptEdits`**:Claude 無需提示即可寫入檔案,且 Claude Code 會自動核准常見的檔案系統命令,例如 `mkdir`、`touch`、`mv` 及 `cp`。[任何模式都不會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)仍然適用。除唯讀命令集外,其他 shell 命令及網路請求仍需要 `--allowedTools` 項目或 `permissions.allow` 規則。如需完整清單,請參閱 [`acceptEdits` 自動核准的項目](/docs/zh-TW/permission-modes#auto-approve-file-edits-with-acceptedits-mode)343* **`acceptEdits`**:Claude 無需提示即可寫入檔案,且 Claude Code 會自動核准常見的檔案系統命令,例如 `mkdir`、`touch`、`mv` 及 `cp`。[任何模式都不會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)仍然適用。除唯讀命令集外,其他 shell 命令及網路請求仍需要 `--allowedTools` 項目或 `permissions.allow` 規則。如需完整清單,請參閱 [`acceptEdits` 自動核准的項目](/docs/zh-TW/permission-modes#auto-approve-file-edits-with-acceptedits-mode)

342 344 

343此範例以 `acceptEdits` 作為基準套用 lint 修正:345此範例以 `acceptEdits` 作為基準套用 lint 修正:


411 繼續對話413 繼續對話

412</h3>414</h3>

413 415 

414使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 繼續特定對話。在 Claude Code v2.1.257 或更新版本中,當您傳入 `--continue` 時,Claude Code 會開啟已經完成的[背景工作階段](/docs/zh-TW/sessions#resume-a-session),但不會開啟仍在執行中的背景工作階段。此範例會執行一次審查,然後傳送後續提示詞:416使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 繼續特定對話。在 Claude Code v2.1.257 或更新版本中,當您傳入 `--continue` 時,Claude Code 會開啟已經完成的[背景工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks),但不會開啟仍在執行中的背景工作階段。此範例會執行一次審查,然後傳送後續提示詞:

415 417 

416```bash theme={null}418```bash theme={null}

417# First request419# First request


429claude -p "Continue that review" --resume "$session_id"431claude -p "Continue that review" --resume "$session_id"

430```432```

431 433 

432您可以從不同的目錄執行這兩個命令:Claude Code 會在此機器上的任何專案中[依 ID 尋找工作階段](/docs/zh-TW/sessions#resume-a-session)。在 v2.1.223 之前,Claude Code 只會在目前的專案目錄及其 git worktree 中尋找該 ID,因此您必須從同一個目錄執行這兩個命令。434您可以從不同的目錄執行這兩個命令:Claude Code 會在此機器上的任何專案中[依 ID 尋找工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks)。

433 435 

434您也可以不傳入工作階段 ID,改為將工作階段 `.jsonl` [逐字稿檔案](/docs/zh-TW/sessions#where-transcripts-are-stored)的絕對路徑傳給 `--resume`,Claude Code 會繼續該檔案中儲存的對話。436您也可以不傳入工作階段 ID,改為將工作階段 `.jsonl` [逐字稿檔案](/docs/zh-TW/sessions#where-transcripts-are-stored)的絕對路徑傳給 `--resume`,Claude Code 會繼續該檔案中儲存的對話。

435 437 

hooks.md +40 −13

Details

425 425 

426所有符合的 hook 會平行執行。若您在多個設定檔中定義相同的處理常式,它只會執行一次。外掛或 skill 中的相同處理常式副本則會分開執行。426所有符合的 hook 會平行執行。若您在多個設定檔中定義相同的處理常式,它只會執行一次。外掛或 skill 中的相同處理常式副本則會分開執行。

427 427 

428處理常式會在目前目錄中以 Claude Code 的環境執行。若目前目錄已不存在,例如在工作階段中途被另一個 shell 刪除的 worktree 或暫存目錄,Claude Code 會從下列目錄中第一個仍存在者執行命令 hook:工作階段啟動時的目錄、專案根目錄、您的家目錄,或系統暫存目錄。Claude Code 會在[偵錯日誌](#debug-hooks)中記錄一則指出備援目錄的警告。428處理常式會在目前目錄中以 Claude Code 的環境執行。若目前目錄已不存在,例如在工作階段中途被另一個 shell 刪除的 worktree 或暫存目錄,Claude Code 會從下列目錄中第一個仍存在者執行命令 hook:工作階段啟動時的目錄、專案根目錄、您的家目錄,或系統暫存目錄。Claude Code 會在[偵錯日誌](#debug-hooks)中記錄一則指出備援目錄的警告。若是您從桌面應用程式啟動的 worktree 工作階段,請參閱 [worktree 與主要 checkout 共用的項目](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。

429 429 

430`$CLAUDE_CODE_REMOTE` 環境變數在遠端 Web 環境中為 `"true"`,在本機 CLI 中則未設定。Claude Code v2.1.199 及更新版本會在本機工作階段具有作用中的 Remote Control 連線時,將 [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/zh-TW/env-vars) 設為 [Remote Control](/docs/zh-TW/remote-control) 工作階段 ID。430`$CLAUDE_CODE_REMOTE` 環境變數在遠端 Web 環境中為 `"true"`,在本機 CLI 中則未設定。Claude Code v2.1.199 及更新版本會在本機工作階段具有作用中的 Remote Control 連線時,將 [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/zh-TW/env-vars) 設為 [Remote Control](/docs/zh-TW/remote-control) 工作階段 ID。

431 431 


645 645 

646 * **`${CLAUDE_PROJECT_DIR}` 保持不變**:它仍指向工作階段啟動時的專案根目錄,因此像 `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` 這樣的命令仍會在主要 checkout 中執行指令碼。646 * **`${CLAUDE_PROJECT_DIR}` 保持不變**:它仍指向工作階段啟動時的專案根目錄,因此像 `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` 這樣的命令仍會在主要 checkout 中執行指令碼。

647 * **`cwd` 跟隨 Claude**:Claude 進入 worktree 後,hook [輸入 JSON](#common-input-fields) 中的 `cwd` 欄位為 worktree 根目錄;Claude 執行 `cd` 後則為新的目錄。當 hook 需要知道 Claude 正在哪個目錄中工作時,請讀取此欄位。647 * **`cwd` 跟隨 Claude**:Claude 進入 worktree 後,hook [輸入 JSON](#common-input-fields) 中的 `cwd` 欄位為 worktree 根目錄;Claude 執行 `cd` 後則為新的目錄。當 hook 需要知道 Claude 正在哪個目錄中工作時,請讀取此欄位。

648 

649 若是您從桌面應用程式啟動的 worktree 工作階段,請參閱 [worktree 與主要 checkout 共用的項目](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout),了解 `${CLAUDE_PROJECT_DIR}` 指向何處。

648</Note>650</Note>

649 651 

650任何參照路徑預留位置的 hook,建議使用 [exec 形式](#exec-form-and-shell-form)。在 shell 形式中,請以雙引號包住每個預留位置。652任何參照路徑預留位置的 hook,建議使用 [exec 形式](#exec-form-and-shell-form)。在 shell 形式中,請以雙引號包住每個預留位置。


782| `effort` | 物件,其 `level` 欄位保存執行 hook 時生效的 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。如果您設定的等級是活躍模型不支援的,`level` 會報告 Claude Code 實際執行的等級;[調整 effort 等級](/docs/zh-TW/model-config#adjust-effort-level) 說明它如何選擇該等級。該物件與 [狀態列](/docs/zh-TW/statusline#available-data) `effort` 欄位相符。存在於在工具使用上下文中觸發的事件,例如 `PreToolUse`、`PostToolUse`、`Stop` 和 `SubagentStop`,當目前模型支援 effort 參數時。該等級也可作為 `$CLAUDE_EFFORT` 環境變數提供給 hook 命令和 Bash 工具。 |784| `effort` | 物件,其 `level` 欄位保存執行 hook 時生效的 [effort 等級](/docs/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。如果您設定的等級是活躍模型不支援的,`level` 會報告 Claude Code 實際執行的等級;[調整 effort 等級](/docs/zh-TW/model-config#adjust-effort-level) 說明它如何選擇該等級。該物件與 [狀態列](/docs/zh-TW/statusline#available-data) `effort` 欄位相符。存在於在工具使用上下文中觸發的事件,例如 `PreToolUse`、`PostToolUse`、`Stop` 和 `SubagentStop`,當目前模型支援 effort 參數時。該等級也可作為 `$CLAUDE_EFFORT` 環境變數提供給 hook 命令和 Bash 工具。 |

783| `hook_event_name` | 觸發的事件名稱 |785| `hook_event_name` | 觸發的事件名稱 |

784 786 

785使用 `--agent` 執行或在 subagent 內執行時,包括兩個額外欄位:787`agent_id` 和 `agent_type` 會告訴您的指令碼 hook 是在哪個 agent 中觸發的,例如 subagent、[同一程序內的隊友](/docs/zh-TW/agent-teams#choose-a-display-mode),或您透過 `--agent` 選擇的 agent:

786 788 

787| 欄位 | 描述 |789| 欄位 | 描述 |

788| :- | :- |790| :- | :- |

789| `agent_id` | Subagent 的唯一識別碼。僅當 hook 在 subagent 呼叫內觸發時出現。使用此項來區分 subagent hook 呼叫與主執行緒呼叫。 |791| `agent_id` | hook 觸發所在的 subagent 或同一程序內隊友的唯一識別碼。 |

790| `agent_type` | Agent 名稱(例如 `"Explore"` 或 `"security-reviewer"`)。當工作階段使用 `--agent` 或 hook 在 subagent 內觸發時出現。對於 subagent,subagent 的類型優先於工作階段的 `--agent` 值。請參閱 [SubagentStart](#subagentstart) 以了解自訂和外掛 subagent 報告的值,以及如何針對外掛範圍名稱編寫 matcher。 |792| `agent_type` | Agent 名稱(例如 `"Explore"` 或 `"security-reviewer"`)。當工作階段使用 `--agent` 或 hook 在 subagent 內觸發時出現。對於 subagent,subagent 的類型優先於工作階段的 `--agent` 值。請參閱 [SubagentStart](#subagentstart) 以了解自訂和外掛 subagent 報告的值,以及如何針對外掛範圍名稱編寫 matcher。 |

791 793 

792只有 [`SessionStart`](#sessionstart) hook 可以接收 `model` 欄位,且 Claude Code 不一定包含它。[`PreModelSwitch`](#premodelswitch) 和 [`PostModelSwitch`](#postmodelswitch) hook 改為接收 `from_model` 和 `to_model`,因此使用 PostModelSwitch hook 來追蹤模型在工作階段期間的變化。794只有 [`SessionStart`](#sessionstart) hook 可以接收 `model` 欄位,且 Claude Code 不一定包含它。[`PreModelSwitch`](#premodelswitch) 和 [`PostModelSwitch`](#postmodelswitch) hook 改為接收 `from_model` 和 `to_model`,因此使用 PostModelSwitch hook 來追蹤模型在工作階段期間的變化。


855 857 

856對於大多數事件,Claude Code 將 stdout 寫入偵錯日誌,不在逐字稿中顯示。例外是 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch`,其中 Claude Code 將純文字 stdout 新增為 Claude 可以看到並據以行動的上下文。858對於大多數事件,Claude Code 將 stdout 寫入偵錯日誌,不在逐字稿中顯示。例外是 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch`,其中 Claude Code 將純文字 stdout 新增為 Claude 可以看到並據以行動的上下文。

857 859 

858Claude Code 是否將您的 stdout 讀取為 [JSON 輸出](#json-output) 或純文字取決於它如何開始和結束,忽略周圍的空白:860對於非 [async](#how-async-hooks-execute) 的 hook,當整個輸出是單一 JSON 物件且周圍只有空白時,Claude Code 會將您的 stdout 解析為 [JSON 輸出](#json-output),否則視為純文字或解析失敗:

859 861 

860* **以 `{` 開始並以 `}` 結束**:Claude Code 將其解析為 JSON。當輸出是兩行或更多行,每行本身都解析為 JSON,且沒有任何一行是設定欄位的 [JSON 輸出](#json-output) 物件時,Claude Code 將整個輸出視為純文字。當其中一行確實設定欄位時,整個輸出是解析失敗。862* **單一 JSON 物件,位於一行或多行**:解析為 JSON 輸出。

861* **以 `{` 開始但不以 `}` 結束**:Claude Code 將其視為純文字。863* **不以 `{` 開頭的輸出,或以 `{` 開頭但不以 `}` 結尾的輸出**:純文字。依此規則,JSON 陣列和帶引號的 JSON 字串都是純文字。

862* **以其他任何內容開始**:Claude Code 將其視為純文字,即使它是 JSON 陣列或帶引號的 JSON 字串也是如此。864* **兩行或更多行,每行本身都可解析為 JSON,且第一行以 `{` 開頭、最後一行以 `}` 結尾**:若沒有任何一行是設定欄位的 JSON 輸出物件,則為純文字;若有,則為解析失敗。

865* **其他任何以 `{` 開頭並以 `}` 結尾但不是有效 JSON 的內容**:解析失敗。

863 866 

864當 Claude Code 嘗試將您的 stdout 解析為 JSON 但無法解析,或已解析的物件未通過 [schema 驗證](#json-output) 時,該次執行為 [非阻止性錯誤](#exit-code-output)。`<hook name> hook error` 通知帶有解析或驗證訊息。在將純文字 stdout 新增為上下文的事件上,Claude Code 不會新增其無法解析的 stdout。867當 Claude Code 嘗試將您的 stdout 解析為 JSON 但無法解析,或已解析的物件未通過 [schema 驗證](#json-output) 時,該次執行為 [非阻止性錯誤](#exit-code-output)。`<hook name> hook error` 通知帶有解析或驗證訊息。在將純文字 stdout 新增為上下文的事件上,Claude Code 不會新增其無法解析的 stdout。

865 868 


1050 為每個 hook 選擇一種方法:要麼單獨使用退出碼進行信號傳遞,要麼退出 0 並列印 JSON 進行結構化控制。如果您混合它們,退出 2 保持其 [阻止效果](#exit-code-2-behavior-per-event),Claude Code 仍然讀取 JSON 欄位,但 [Exit code 2](#exit-code-2) 下記錄的一個 elicitation 例外除外。1053 為每個 hook 選擇一種方法:要麼單獨使用退出碼進行信號傳遞,要麼退出 0 並列印 JSON 進行結構化控制。如果您混合它們,退出 2 保持其 [阻止效果](#exit-code-2-behavior-per-event),Claude Code 仍然讀取 JSON 欄位,但 [Exit code 2](#exit-code-2) 下記錄的一個 elicitation 例外除外。

1051</Note>1054</Note>

1052 1055 

1053您的 hook 的 stdout 必須僅包含 JSON 物件。如果您的 shell 設定檔在啟動時列印文字,它可能會干擾 JSON 解析。請參閱疑難排解指南中的 [Hook JSON 無效](/docs/zh-TW/hooks-guide#hook-json-has-no-effect)。1056僅將 JSON 物件列印到 stdout。對於非 [async](#how-async-hooks-execute) 的 hook,stdout 中的其他文字(例如您的 shell 設定檔在啟動時 echo 的一行)會使 Claude Code 無法將該物件讀取為 JSON,[Hook JSON 無效](/docs/zh-TW/hooks-guide#hook-json-has-no-effect) 說明如何找出並消除該文字。

1054 1057 

1055Hook 的 `additionalContext`、`systemMessage` 和 `initialUserMessage` 字串,以及其純 stdout,上限為 10,000 個字元:1058Hook 的 `additionalContext`、`systemMessage` 和 `initialUserMessage` 字串,以及其純 stdout,上限為 10,000 個字元:

1056 1059 


1142 1145 

1143當多個 hook 為同一事件返回 `additionalContext` 時,Claude 接收所有值。1146當多個 hook 為同一事件返回 `additionalContext` 時,Claude 接收所有值。

1144 1147 

1148如果您的字串包含 `<system-reminder>` 或 `</system-reminder>` 標籤,Claude 收到的字串中該標籤的 `<` 會被替換為 `&lt;`。

1149 

1145如果值超過 10,000 個字元,Claude Code 會將文字寫入工作階段目錄中的檔案,並改為將檔案路徑與最多前 2,000 個字元的預覽傳遞給 Claude。Claude 可以讀取檔案,但 Claude Code 不要求它這樣做。1150如果值超過 10,000 個字元,Claude Code 會將文字寫入工作階段目錄中的檔案,並改為將檔案路徑與最多前 2,000 個字元的預覽傳遞給 Claude。Claude 可以讀取檔案,但 Claude Code 不要求它這樣做。

1146 1151 

1147使用 `additionalContext` 來提供 Claude 應該知道的有關您環境目前狀態或剛剛執行的操作的資訊:1152使用 `additionalContext` 來提供 Claude 應該知道的有關您環境目前狀態或剛剛執行的操作的資訊:


1364 保存環境變數1369 保存環境變數

1365</h4>1370</h4>

1366 1371 

1367SessionStart hook 可以存取 `CLAUDE_ENV_FILE` 環境變數,它提供一個檔案路徑,讓您可以為後續的 Bash 命令保存環境變數。1372SessionStart hook 可以存取 `CLAUDE_ENV_FILE` 環境變數,它提供一個檔案路徑,讓您為 Claude 在工作階段稍後執行的 shell 命令保存環境變數。

1368 1373 

1369若要設定個別環境變數,請將 `export` 陳述式寫入 `CLAUDE_ENV_FILE`。請使用附加(`>>`)以保留其他 hook 設定的變數:1374若要設定個別環境變數,請將 `export` 陳述式寫入 `CLAUDE_ENV_FILE`。請使用附加(`>>`)以保留其他 hook 設定的變數:

1370 1375 


1399exit 01404exit 0

1400```1405```

1401 1406 

1407每個 Bash 命令都會在命令本身之前,將該檔案的內容作為 shell 程式碼執行,因此其中的一行可以使用 Bash 會求值的任何內容,例如 `export PATH="$PATH:./node_modules/.bin"` 中的 `$PATH` 參照。

1408 

1409<a id="persisted-variables-in-powershell-commands" />

1410 

1411<h5 id="persisted-variables-in-powershell-commands">

1412 PowerShell 命令中的保存變數

1413</h5>

1414 

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)的任何腳本:

1416 

1417* 空白行或 `#` 註解

1418* 位於行首的單一指派,寫成 `export NAME=value`、`declare -x NAME=value` 或 `NAME=value`,且其值會被 Bash 完全依原樣使用,由以下部分任意組合而成:只使用字母、數字與 `_ @ % + = : , . / -` 字元的未加引號文字、單引號內的文字,以及其中任何 `$`、反引號或 `"` 皆以反斜線跳脫的雙引號內文字

1419 

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 命令不會接收任何變數。

1421 

1402<Note>1422<Note>

1403 `CLAUDE_ENV_FILE` 可用於 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hook。其他 hook 類型無法存取此變數。1423 `CLAUDE_ENV_FILE` 可用於 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 與 [FileChanged](#filechanged) hook。其他 hook 事件無法存取此變數,在 PowerShell 中執行的 hook 也無法存取,無論是透過 [`"shell": "powershell"`](#command-hook-fields),或是在沒有 Git Bash 的 Windows 上預設如此。

1404</Note>1424</Note>

1405 1425 

1406<h3 id="setup">1426<h3 id="setup">


2030 2050 

2031| 欄位 | 說明 |2051| 欄位 | 說明 |

2032| :- | :- |2052| :- | :- |

2033| `permissionDecision` | `"allow"` 會略過權限提示,但[沒有任何模式會自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)以及 `AskUserQuestion` 和 `ExitPlanMode` 除外,後兩者需要[搭配 `updatedInput`](#allow-with-updatedinput)。`"deny"` 會阻止工具呼叫。`"ask"` 會提示使用者確認。`"defer"` 會正常結束,以便稍後恢復該工具。無論 hook 傳回什麼,[拒絕和詢問規則](/docs/zh-TW/permissions#manage-permissions)仍會被評估 |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)仍會被評估 |

2034| `permissionDecisionReason` | 對於 `"ask"`,會在權限提示中顯示給使用者。當 Claude Code 在無人能回應該提示的 `-p` 執行中[拒絕呼叫](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)時,Claude 會改在工具結果中讀取該原因。對於 `"deny"`,會顯示給 Claude。對於 `"allow"` 和 `"defer"`,只會寫入[除錯日誌](#debug-hooks) |2054| `permissionDecisionReason` | 對於 `"ask"`,會在權限提示中顯示給使用者。當 Claude Code 在無人能回應該提示的 `-p` 執行中[拒絕呼叫](/docs/zh-TW/headless#turn-off-permission-prompts-in-unattended-runs)時,Claude 會改在工具結果中讀取該原因。對於 `"deny"`,會顯示給 Claude。對於 `"allow"` 和 `"defer"`,只會寫入[除錯日誌](#debug-hooks) |

2035| `updatedInput` | 在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。Claude Code 會依據您的 hook 傳回的輸入(而非 Claude 傳送的輸入)評估權限規則以及 Bash 命令的[自動移至背景資格](/docs/zh-TW/tools-reference#foreground-commands-that-move-to-the-background)。搭配 `"allow"` 可自動核准,或搭配 `"ask"` 向使用者顯示修改後的輸入。對於 `"defer"` 會被忽略 |2055| `updatedInput` | 在執行前修改工具的輸入參數。會取代整個輸入物件,因此請將未變更的欄位與修改過的欄位一併包含。Claude Code 會依據您的 hook 傳回的輸入(而非 Claude 傳送的輸入)評估權限規則以及 Bash 命令的[自動移至背景資格](/docs/zh-TW/tools-reference#foreground-commands-that-move-to-the-background)。搭配 `"allow"` 可自動核准,或搭配 `"ask"` 向使用者顯示修改後的輸入。對於 `"defer"` 會被忽略 |

2036| `additionalContext` | 與工具結果一同加入 Claude 上下文的字串。當 `permissionDecision` 為 `"defer"` 時會被忽略。請參閱[為 Claude 加入上下文](#add-context-for-claude) |2056| `additionalContext` | 與工具結果一同加入 Claude 上下文的字串。當 `permissionDecision` 為 `"defer"` 時會被忽略。請參閱[為 Claude 加入上下文](#add-context-for-claude) |


2136如果在您恢復時延後的工具已無法使用,程序會在 hook 觸發前以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 結束。當提供該工具的 MCP 伺服器未在恢復的工作階段中連線時,就會發生這種情況。`deferred_tool_use` payload 仍會包含在內,讓您可以識別是哪個工具遺失了。2156如果在您恢復時延後的工具已無法使用,程序會在 hook 觸發前以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 結束。當提供該工具的 MCP 伺服器未在恢復的工作階段中連線時,就會發生這種情況。`deferred_tool_use` payload 仍會包含在內,讓您可以識別是哪個工具遺失了。

2137 2157 

2138<Note>2158<Note>

2139 若要在 plan mode 中恢復延後的工作階段,請將 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 與 `--resume` 一起傳入,讓 Claude Code 可以呈現計畫以供核准。如果您傳入某些其他啟動旗標,恢復的執行不會返回 plan mode;請參閱[以 `-p` 在 plan mode 中恢復](/docs/zh-TW/sessions#resume-in-plan-mode-with-p)。需要 Claude Code v2.1.246 或更新版本。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 或更新版本。

2140 2160 

2141 當您以 `-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)。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)。

2142</Note>2162</Note>


4029 4049 

4030您的 `content` 會取代使用者的整個 `content` 物件,因此請包含您未變更的欄位。請同時回傳 `action`,因為 Claude Code 會忽略沒有 `action` 的 `hookSpecificOutput`。4050您的 `content` 會取代使用者的整個 `content` 物件,因此請包含您未變更的欄位。請同時回傳 `action`,因為 Claude Code 會忽略沒有 `action` 的 `hookSpecificOutput`。

4031 4051 

4032ElicitationResult hook 也會在使用者拒絕或取消時執行,且您的 `action` 會取代使用者的 `action`。請在回傳 `accept` 之前檢查輸入的 `action` 是否為 `accept`,否則您的 hook 會將已拒絕的請求變成已接受的請求。此腳本會在使用者接受時進行相同的變更,保留其他欄位,否則不印出任何內容:4052ElicitationResult hook 也會在使用者拒絕或取消時執行,且您的 `action` 會取代使用者的選擇。請在傳回 `accept` 之前檢查輸入的 `action` 是否為 `accept`,否則您的 hook 會將已拒絕的請求變成已接受。此指令碼會在使用者接受時進行相同的變更,保留其他欄位,否則不印出任何內容:

4033 4053 

4034```bash theme={null}4054```bash theme={null}

4035#!/bin/bash4055#!/bin/bash


4303 4323 

4304背景程序退出後,Claude Code 會在下一個對話輪次將 hook 的 JSON 回應中的 `additionalContext` 和 `systemMessage` 欄位傳遞給 Claude。與同步 hook 的 `systemMessage` 不同,這兩個欄位都不會顯示給你。4324背景程序退出後,Claude Code 會在下一個對話輪次將 hook 的 JSON 回應中的 `additionalContext` 和 `systemMessage` 欄位傳遞給 Claude。與同步 hook 的 `systemMessage` 不同,這兩個欄位都不會顯示給你。

4305 4325 

4326將 JSON 回應單獨輸出至 stdout,或單獨列印在其自己的一行上:

4327 

4328* **單獨輸出至 stdout**:當回應是 stdout 上唯一的文字時,它可以跨越多行,例如經過美化排版的 `jq` 輸出。跨越多行需要 Claude Code v2.1.295 或更新版本。

4329* **單獨佔一行**:當回應本身可容納於一行時,非同步 hook 可以將其他文字列印到 stdout,例如使用 `jq -c`。

4330 

4306Claude Code 驗證該 JSON 回應是否符合與同步 hooks 相同的[輸出結構](#json-output),並捨棄任何值類型錯誤的欄位,例如不是字串的 `systemMessage`,而不是傳遞它。使用 `--debug` 執行以查看命名每個捨棄欄位的警告。在 v2.1.202 之前,來自非同步 hook 的格式不正確的 JSON 輸出可能會導致工作階段崩潰,每次恢復工作階段時都會重複發生崩潰。4331Claude Code 驗證該 JSON 回應是否符合與同步 hooks 相同的[輸出結構](#json-output),並捨棄任何值類型錯誤的欄位,例如不是字串的 `systemMessage`,而不是傳遞它。使用 `--debug` 執行以查看命名每個捨棄欄位的警告。在 v2.1.202 之前,來自非同步 hook 的格式不正確的 JSON 輸出可能會導致工作階段崩潰,每次恢復工作階段時都會重複發生崩潰。

4307 4332 

4308非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。4333非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。


44562026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"44812026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"

4457```4482```

4458 4483 

4484若要找出執行緩慢的 hook,請在日誌中搜尋以持續時間結尾的 `Hooks:` 行。在 Claude Code v2.1.296 或更新版本中,工具事件、`UserPromptSubmit`、`SessionStart`、`Stop` 及其他數個事件上的每個命令 hook 在完成時都會留下這樣一行,無論其輸出了什麼。該行會列出事件名稱,並以冒號連接 hook 所匹配的工具名稱或其他值,接著是以方括號括住的 hook 命令、其來源外掛(如有)、執行的結束方式以及所花費的時間,例如 `Hooks: PostToolUse:Write [.claude/hooks/log-write.sh] finished with status 0 (31ms)`。執行也可能以 `timed out after <N>ms`、`cancelled`、`moved to the background` 或 `failed to start` 結束。在某些事件上,例如 `Notification`、`SessionEnd` 和 `PreCompact`,命令 hook 會改為留下不含持續時間的 `completed with status` 行。

4485 

4459有關更細粒度的 hook 匹配詳細資訊,設定 `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` 以查看額外的日誌行,例如 hook 匹配器計數和查詢匹配。4486有關更細粒度的 hook 匹配詳細資訊,設定 `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` 以查看額外的日誌行,例如 hook 匹配器計數和查詢匹配。

4460 4487 

4461有關故障排除常見問題,如 hooks 不觸發、Stop hooks 持續阻擋或配置錯誤,請參閱指南中的 [限制和故障排除](/docs/zh-TW/hooks-guide#limitations-and-troubleshooting)。有關涵蓋 `/context`、`/doctor` 和設定優先順序的更廣泛診斷逐步解說,請參閱 [偵錯您的設定](/docs/zh-TW/debug-your-config)。4488有關故障排除常見問題,如 hooks 不觸發、Stop hooks 持續阻擋或配置錯誤,請參閱指南中的 [限制和故障排除](/docs/zh-TW/hooks-guide#limitations-and-troubleshooting)。有關涵蓋 `/context`、`/doctor` 和設定優先順序的更廣泛診斷逐步解說,請參閱 [偵錯您的設定](/docs/zh-TW/debug-your-config)。

hooks-guide.md +18 −10

Details

664 664 

665在 `PreToolUse` 上,Claude Code 按如下方式處理每個 `permissionDecision` 值:665在 `PreToolUse` 上,Claude Code 按如下方式處理每個 `permissionDecision` 值:

666 666 

667* `"allow"`:跳過互動式權限提示。拒絕和詢問規則(包括企業管理的拒絕清單)仍然適用,標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具的提示以及您的組織在該設定到達 Claude Code 的會話中設定為 `ask` 的連接器工具 [](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 也是如此667* `"allow"`:跳過互動式權限提示。拒絕和詢問規則(包括企業管理的拒絕清單)仍然適用;從 [網路路徑](/docs/zh-TW/permissions#network-paths) 讀取時的提示、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具的提示,以及在該設定會傳達到 Claude Code 的工作階段中,[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具的提示也同樣適用

668* `"deny"`:取消工具呼叫並將原因傳送給 Claude668* `"deny"`:取消工具呼叫並將原因傳送給 Claude

669* `"ask"`:向使用者正常顯示權限提示669* `"ask"`:向使用者正常顯示權限提示

670 670 


1015 1015 

1016`PreToolUse` hooks 在任何權限模式檢查之前觸發,在每個[權限模式](/docs/zh-TW/permission-modes)中,包括 `dontAsk`。傳回 `permissionDecision: "deny"` 的 hook 會阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions`。這讓您強制執行使用者無法透過變更其權限模式來繞過的原則。1016`PreToolUse` hooks 在任何權限模式檢查之前觸發,在每個[權限模式](/docs/zh-TW/permission-modes)中,包括 `dontAsk`。傳回 `permissionDecision: "deny"` 的 hook 會阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions`。這讓您強制執行使用者無法透過變更其權限模式來繞過的原則。

1017 1017 

1018反面不成立:傳回 `"allow"` 的 hook 不會繞過來自設定的拒絕規則,它也無法抑制標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具的提示或[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具在該設定到達 Claude Code 的工作階段中的提示。設定檔案和外掛程式 `hooks/hooks.json` 中的 Hooks 可以加強限制,但不能放寬超過權限規則允許的限制。1018反面不成立:傳回 `"allow"` 的 hook 不會繞過來自設定的拒絕規則,它也無法抑制從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取時的提示、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具的提示,或[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具在該設定到達 Claude Code 的工作階段中的提示。設定檔和外掛 `hooks/hooks.json` 中的 hook 可以加強限制,但不能放寬超過權限規則允許的限制。

1019 1019 

1020您安裝的 [mod](/docs/zh-TW/plugins/mods/overview) 如果處理 `tool.check`,可以批准您的 `PreToolUse` hook 阻止的呼叫,除非該 hook 在受管設定中。[使用 hook 擴展權限](/docs/zh-TW/permissions#extend-permissions-with-hooks)列出哪些規則優先於 mod。1020您安裝的 [mod](/docs/zh-TW/plugins/mods/overview) 如果處理 `tool.check`,可以批准您的 `PreToolUse` hook 阻止的呼叫,除非該 hook 在受管設定中。[使用 hook 擴展權限](/docs/zh-TW/permissions#extend-permissions-with-hooks)列出哪些規則優先於 mod。

1021 1021 


1038* 您的指令意外以非零代碼退出。透過管道傳輸範例 JSON 來手動測試它:1038* 您的指令意外以非零代碼退出。透過管道傳輸範例 JSON 來手動測試它:

1039 ```bash theme={null}1039 ```bash theme={null}

1040 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh1040 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

1041 echo $? # 檢查退出代碼1041 echo $? # Check the exit code

1042 ```1042 ```

1043* 如果您看到「command not found」,使用絕對路徑或 `${CLAUDE_PROJECT_DIR}` 來參考指令。為了完全避免 shell 引用,添加 `"args": []` 以切換到 [exec 形式](/docs/zh-TW/hooks#exec-form-and-shell-form),它直接生成指令而不使用 shell1043* 如果您看到「command not found」,使用絕對路徑或 `${CLAUDE_PROJECT_DIR}` 來參考指令。為了完全避免 shell 引用,添加 `"args": []` 以切換到 [exec 形式](/docs/zh-TW/hooks#exec-form-and-shell-form),它直接生成指令而不使用 shell

1044* 如果您看到「jq: command not found」,安裝 `jq` 或使用 Python/Node.js 進行 JSON 解析1044* 如果您看到「jq: command not found」,安裝 `jq` 或使用 Python/Node.js 進行 JSON 解析


1070#!/bin/bash1070#!/bin/bash

1071INPUT=$(cat)1071INPUT=$(cat)

1072if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then1072if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

1073 exit 0 # 允許 Claude 停止1073 exit 0 # Allow Claude to stop

1074fi1074fi

1075# ... 您的 hook 邏輯的其餘部分1075# ... rest of your hook logic

1076```1076```

1077 1077 

1078如果您的 hook 合理地需要超過八次迭代才能收斂,使用 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-TW/env-vars) 提高上限。1078如果您的 hook 合理地需要超過八次迭代才能收斂,使用 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-TW/env-vars) 提高上限。


1083 1083 

1084您的 hook 列印有效的 JSON,但決策沒有生效,文字記錄中也沒有出現錯誤。檢查哪個原因適用:1084您的 hook 列印有效的 JSON,但決策沒有生效,文字記錄中也沒有出現錯誤。檢查哪個原因適用:

1085 1085 

1086* **JSON 前的額外輸出**:其他東西首先寫入 stdout,通常是您 shell 設定檔中的無條件 `echo`,所以輸出不再以 `{` 開頭,Claude Code 不會將其解析為 JSON。原因和修復方案如下所示。1086* **JSON 前的額外輸出**:其他東西首先寫入 stdout,通常是您 shell 設定檔中的無條件 `echo`,所以輸出不再以 `{` 開頭。請參閱[JSON 前的 shell 設定檔輸出](#shell-profile-output-before-the-json)。

1087* **欄位位置錯誤**:將每個欄位的位置與 [JSON 輸出](/docs/zh-TW/hooks#json-output)格式進行比較。例如,`permissionDecision` 應該在 `hookSpecificOutput` 內,而不是在頂層。1087* **欄位位置錯誤**:將每個欄位的位置與 [JSON 輸出](/docs/zh-TW/hooks#json-output)格式進行比較。例如,`permissionDecision` 應該在 `hookSpecificOutput` 內,而不是在頂層。請參閱[位於錯誤層級的欄位](#fields-at-the-wrong-level)。

1088 1088 

1089當 Claude Code 執行 shell 形式的命令 hook(沒有 `args` 的)時,它在 macOS 和 Linux 上生成 `sh -c`,在 Windows 上生成 Git Bash,或在預設未安裝 Git Bash 時生成 PowerShell。此 shell 是非互動式的,但 Git Bash 和某些配置(例如 `BASH_ENV` 指向 `~/.bashrc`)仍然會來源您的設定檔。如果該設定檔包含無條件的 `echo` 陳述式,輸出會被前置到您的 hook 的 JSON:1089<h4 id="shell-profile-output-before-the-json">

1090 JSON 前的 shell 設定檔輸出

1091</h4>

1092 

1093Hook 在非互動式 shell 中執行,但 Git Bash 和某些設定(例如 `BASH_ENV` 指向 `~/.bashrc`)仍然會載入您的設定檔,而設定檔列印的任何內容都會在您 hook 的 JSON 之前到達 stdout:

1090 1094 

1091```text theme={null}1095```text theme={null}

1092Shell ready on arm641096Shell ready on arm64

1093{"decision": "block", "reason": "Not allowed"}1097{"decision": "block", "reason": "Not allowed"}

1094```1098```

1095 1099 

1096組合的輸出不再以 `{` 開頭,所以 Claude Code 將所有 stdout 視為純文字並忽略 JSON。在退出 0 時,文字記錄中不會報告任何內容;解析嘗試只在[除錯日誌](/docs/zh-TW/hooks#debug-hooks)中記錄。要修復此問題,在您的 shell 設定檔中包裝 echo 陳述式,使其只在互動式 shell 中執行:1100除非該 hook 是[非同步](/docs/zh-TW/hooks#how-async-hooks-execute)的,否則 Claude Code 會將不以 `{` 開頭的輸出讀取為純文字,因此您的 JSON 會被忽略。由於 hook 以 0 退出,逐字稿中也不會顯示任何錯誤。要檢查是否為此原因,請使用 `claude --debug` 啟動 Claude Code,觸發 hook,然後在[除錯日誌](/docs/zh-TW/hooks#debug-hooks)中搜尋 `Hook output does not start with {`。要修復此問題,請在您的設定檔中包裝 `echo` 陳述式,使其只在互動式 shell 中執行:

1097 1101 

1098```bash theme={null}1102```bash theme={null}

1099# 在 ~/.zshrc 或 ~/.bashrc 中1103# 在 ~/.zshrc 或 ~/.bashrc 中


1104 1108 

1105`$-` 變數包含 shell 旗標,`i` 表示互動式。Hooks 在非互動式 shell 中執行,因此 echo 被跳過。1109`$-` 變數包含 shell 旗標,`i` 表示互動式。Hooks 在非互動式 shell 中執行,因此 echo 被跳過。

1106 1110 

1111<h4 id="fields-at-the-wrong-level">

1112 位於錯誤層級的欄位

1113</h4>

1114 

1107當您的 hook 在頂層而不是在 `hookSpecificOutput` 內傳回 `permissionDecision` 或 `additionalContext` 時,JSON 仍然會解析,Claude Code 會忽略放置錯誤的欄位而不報告錯誤。要查看它忽略了哪些欄位,使用 `claude --debug` 啟動 Claude Code 並在[除錯日誌](/docs/zh-TW/hooks#debug-hooks)中搜尋 `Hook JSON output had unrecognized keys`。1115當您的 hook 在頂層而不是在 `hookSpecificOutput` 內傳回 `permissionDecision` 或 `additionalContext` 時,JSON 仍然會解析,Claude Code 會忽略放置錯誤的欄位而不報告錯誤。要查看它忽略了哪些欄位,使用 `claude --debug` 啟動 Claude Code 並在[除錯日誌](/docs/zh-TW/hooks#debug-hooks)中搜尋 `Hook JSON output had unrecognized keys`。

1108 1116 

1109<h3 id="check-what-a-hook-did">1117<h3 id="check-what-a-hook-did">


1119 1127 

1120若要查詢特定退出碼和 stdout 所對應的結果,包括每個事件的例外,請參閱參考文件中的[退出碼輸出](/docs/zh-TW/hooks#exit-code-output)。1128若要查詢特定退出碼和 stdout 所對應的結果,包括每個事件的例外,請參閱參考文件中的[退出碼輸出](/docs/zh-TW/hooks#exit-code-output)。

1121 1129 

1122如需完整的執行詳細資訊,包括 hook 退出碼、stdout 和 stderr,請閱讀除錯日誌。使用 `claude --debug-file /tmp/claude.log` 啟動 Claude Code 以寫入已知路徑,然後在另一個終端機中執行 `tail -f /tmp/claude.log`。如果您啟動時沒有該旗標,請在工作階段中執行 `/debug` 以啟用日誌並找到日誌路徑。1130如需完整的執行詳細資訊,包括 hook 退出碼、stdout 和 stderr,請閱讀[除錯日誌](/docs/zh-TW/hooks#debug-hooks)。使用 `claude --debug-file /tmp/claude.log` 啟動 Claude Code 以寫入已知路徑,然後在另一個終端機中執行 `tail -f /tmp/claude.log`。如果您啟動時沒有該旗標,請在工作階段中執行 `/debug` 以啟用日誌並找到日誌路徑。

1123 1131 

1124<h2 id="learn-more">1132<h2 id="learn-more">

1125 深入瞭解1133 深入瞭解

Details

22 22 

23| 快捷鍵 | 說明 | 內容 |23| 快捷鍵 | 說明 | 內容 |

24| :- | :- | :- |24| :- | :- | :- |

25| `Ctrl+C` | 中斷或清除輸入 | 中斷執行中的操作。如果沒有任何操作執行中,第一次按下會清除提示輸入,第二次按下會退出 Claude Code |25| `Ctrl+C` | 中斷或清除輸入 | 中斷執行中的操作。如果沒有任何操作執行中,第一次按下會清除提示詞輸入,第二次按下會退出 Claude Code。在提示詞仍為空時按 `Up` 可取回已清除的草稿,此功能需要 Claude Code v2.1.288 或更新版本 |

26| `Ctrl+X Ctrl+K` | 停止此工作階段中所有執行中的[背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background),並在此工作階段剩餘期間關閉 [artifact 自動回覆](/docs/zh-TW/artifacts#let-claude-reply-to-comments-on-its-own)。在 3 秒內按兩次以確認。即使背景 subagent 的權限提示正開啟,您也可以按下此鍵 | Subagent 控制 |26| `Ctrl+X Ctrl+K` | 停止此工作階段中所有執行中的[背景 subagent](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background),並在此工作階段剩餘期間關閉 [artifact 自動回覆](/docs/zh-TW/artifacts#let-claude-reply-to-comments-on-its-own)。在 3 秒內按兩次以確認。即使背景 subagent 的權限提示正開啟,您也可以按下此鍵 | Subagent 控制 |

27| `Ctrl+D` | 退出 Claude Code 工作階段 | 第一次按下會顯示確認提示,第二次在 800ms 內按下會退出。當提示有文字時,`Ctrl+D` 會刪除游標後的字元 |27| `Ctrl+D` | 退出 Claude Code 工作階段 | 第一次按下會顯示確認提示,第二次在 800ms 內按下會退出。當提示有文字時,`Ctrl+D` 會刪除游標後的字元 |

28| `Ctrl+G` 或 `Ctrl+X Ctrl+E` | 在預設文字編輯器中開啟 | 在您的預設文字編輯器中編輯您的提示或自訂回應。`Ctrl+X Ctrl+E` 是 readline 原生繫結。在 `/config` 中開啟**在外部編輯器中顯示最後回應**以在您的提示上方將 Claude 的先前回覆作為 `#` 註解內容前置;Claude Code 會在您儲存時移除註解區塊 |28| `Ctrl+G` 或 `Ctrl+X Ctrl+E` | 在預設文字編輯器中開啟 | 在您的預設文字編輯器中編輯您的提示或自訂回應。`Ctrl+X Ctrl+E` 是 readline 原生繫結。在 `/config` 中開啟**在外部編輯器中顯示最後回應**以在您的提示上方將 Claude 的先前回覆作為 `#` 註解內容前置;Claude Code 會在您儲存時移除註解區塊 |


442 442 

443Claude Code 只有在輸入框為空且您沒有其他排隊項目時才會取回排隊的 shell 命令,並在執行時將輸入框切換到 shell 模式。否則它會將它們保留在佇列中,以其 `!` 前綴列出,並在回合結束後執行它們。443Claude Code 只有在輸入框為空且您沒有其他排隊項目時才會取回排隊的 shell 命令,並在執行時將輸入框切換到 shell 模式。否則它會將它們保留在佇列中,以其 `!` 前綴列出,並在回合結束後執行它們。

444 444 

445如果您在 `←` [等待將工作階段移至背景](/docs/zh-TW/agent-view#switch-sessions-without-leaving-the-terminal)時取回排隊的文字,該文字會保留在輸入框中,且 Claude Code 會取消切換。如果您在工作階段移動的那一刻取回文字,該文字會隨前景畫面一起消失:它並未被傳送。您取回的每則訊息都會在 [命令歷史記錄](#command-history)中儲存為獨立的項目。若要復原其中一則,請重新開啟該工作階段,並在沒有任何排隊項目的空白提示詞上按 `Up`。

446 

445<h2 id="prompt-suggestions">447<h2 id="prompt-suggestions">

446 提示建議448 提示建議

447</h2>449</h2>

Details

299 299 

300[Slack 中的 Claude Code](/docs/zh-TW/slack) 和[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)不屬於閘道部署的一部分。在雲端工作階段的環境設定中設定的閘道變數不會套用。如果您的流量必須保留在閘道上,請不要為這些使用者啟用這些使用介面。300[Slack 中的 Claude Code](/docs/zh-TW/slack) 和[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)不屬於閘道部署的一部分。在雲端工作階段的環境設定中設定的閘道變數不會套用。如果您的流量必須保留在閘道上,請不要為這些使用者啟用這些使用介面。

301 301 

302[遠端控制](/docs/zh-TW/remote-control)和[語音聽寫](/docs/zh-TW/voice-dictation)都依賴於 claude.ai 身份:遠端控制將實時會話與您的帳戶配對,語音聽寫到達 claude.ai 轉錄端點。當 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 處於活動狀態時,它們不可用。遠端控制在 `ANTHROPIC_BASE_URL` 指向非 Anthropic 主機時也被禁用,因此僅使用 claude.ai 登入本身是不夠的。在 v2.1.196 之前,非 Anthropic 基礎 URL 沒有阻止遠端控制。302[Remote Control](/docs/zh-TW/remote-control) 和[語音聽寫](/docs/zh-TW/voice-dictation)都依賴於 claude.ai 身分:Remote Control 用於將即時工作階段與您的帳戶配對,語音聽寫用於到達 claude.ai 轉錄端點。當 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 處於活動狀態時,它們無法使用。Remote Control 在 `ANTHROPIC_BASE_URL` 指向非 Anthropic 主機時也會被停用,因此僅使用 claude.ai 登入本身是不夠的。

303 303 

304若要還原任一功能,請使用 claude.ai 登入並取消設定該功能檢查的閘道變數。`claude doctor` 的遠端控制部分命名目前阻止遠端控制的內容。304若要還原任一功能,請使用 claude.ai 登入並取消設定該功能檢查的閘道變數。`claude doctor` 的遠端控制部分命名目前阻止遠端控制的內容。

305 305 

mcp.md +3 −3

Details

283 專案伺服器核准和工作區信任283 專案伺服器核准和工作區信任

284</h4>284</h4>

285 285 

286從 v2.1.196 開始,`claude mcp list` 和 `claude mcp get` 只從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准,直到您透過執行 `claude` 並接受工作區信任對話來信任工作區。複製的儲存庫無法核准自身的伺服器:提交到專案的 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在不受信任的資料夾中被忽略,伺服器保持在 `⏸ Pending approval` 而不是被連接和健康檢查。286`claude mcp list` 和 `claude mcp get` 只從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准,直到您透過在工作區中執行 `claude` 並接受工作區信任對話來信任工作區。複製的儲存庫無法核准自身的伺服器:提交到專案的 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在不受信任的資料夾中被忽略,伺服器保持在 `⏸ Pending approval` 而不是被連接和健康檢查。

287 287 

288這些來源的核准在不受信任的資料夾中仍然適用:288這些來源的核准在不受信任的資料夾中仍然適用:

289 289 


859 859 

860該通知會宣佈每個伺服器一次,並在後續啟動時將其排除在計數之外,直到該伺服器已連接並再次需要登入。`/mcp` 仍會列出每個需要登入的伺服器。860該通知會宣佈每個伺服器一次,並在後續啟動時將其排除在計數之外,直到該伺服器已連接並再次需要登入。`/mcp` 仍會列出每個需要登入的伺服器。

861 861 

862在非互動模式下,沒有 `/mcp` 面板,因此 Claude Code 無法為您執行 OAuth 流程。從 v2.1.196 開始,當已設定的伺服器在啟用 [工具搜尋](#scale-with-mcp-tool-search)(預設值)的 `claude -p` 或 Agent SDK 執行期間需要身份驗證時,Claude Code 會告訴 Claude 該伺服器的工具不可用,直到您授權它。Claude 可以命名需要登入的伺服器,而不是回應為好像伺服器未設定。從具有 `/mcp` 或 `claude mcp login <name>` 的互動工作階段完成登入。862在非互動模式下,沒有 `/mcp` 面板,因此 Claude Code 無法為您執行 OAuth 流程。當已設定的伺服器在啟用 [工具搜尋](#scale-with-mcp-tool-search)(預設值)的 `claude -p` 或 Agent SDK 執行期間需要身分驗證時,Claude Code 會告訴 Claude 該伺服器的工具在您授權之前無法使用。Claude 接著可以指出需要登入的伺服器。請從互動工作階段使用 `/mcp` 或 `claude mcp login <name>` 完成登入。

863 863 

864如果您為伺服器設定了 `headers.Authorization` 且伺服器拒絕該標頭,Claude Code 會報告連線失敗,而不是回退到 OAuth。檢查令牌對 MCP 端點是否有效,或移除標頭以使用 OAuth 流程。864如果您為伺服器設定了 `headers.Authorization` 且伺服器拒絕該標頭,Claude Code 會報告連線失敗,而不是回退到 OAuth。檢查令牌對 MCP 端點是否有效,或移除標頭以使用 OAuth 流程。

865 865 


1048 1048 

1049`oauth.scopes` 優先於 `authServerMetadataUrl` 和伺服器在 `/.well-known` 探索的範圍。將其保留為未設定以讓 MCP 伺服器決定要求的範圍集。1049`oauth.scopes` 優先於 `authServerMetadataUrl` 和伺服器在 `/.well-known` 探索的範圍。將其保留為未設定以讓 MCP 伺服器決定要求的範圍集。

1050 1050 

1051從 v2.1.196 開始,當未設定 `oauth.scopes` 時,Claude Code 會要求伺服器的 `WWW-Authenticate` 標頭或其受保護資源中繼資料提供的範圍,並在兩者都未提供時不傳送 `scope` 參數。它不再要求自動探索的授權伺服器中繼資料中的完整 `scopes_supported` 目錄。要求該目錄導致公告僅限管理員或範本範圍的身份提供者以 `invalid_scope` 錯誤拒絕授權請求。從已設定的 `authServerMetadataUrl` 擷取的中繼資料仍會將其 `scopes_supported` 作為要求的範圍提供。1051當未設定 `oauth.scopes` 時,Claude Code 不會請求自動探索的授權伺服器中繼資料中的完整 `scopes_supported` 目錄。從已設定的 `authServerMetadataUrl` 擷取的中繼資料仍會將其 `scopes_supported` 作為請求的範圍提供。

1052 1052 

1053如果授權伺服器在 `scopes_supported` 中公告 `offline_access`,Claude Code 會將其附加到固定範圍,以便可以在不進行新瀏覽器登入的情況下重新整理存取令牌。1053如果授權伺服器在 `scopes_supported` 中公告 `offline_access`,Claude Code 會將其附加到固定範圍,以便可以在不進行新瀏覽器登入的情況下重新整理存取令牌。

1054 1054 

Details

470 將值包裝在引號中不會逃脫空格。例如,`org.name="My Company"` 會導致文字值 `"My Company"`(包括引號),而不是 `My Company`。470 將值包裝在引號中不會逃脫空格。例如,`org.name="My Company"` 會導致文字值 `"My Company"`(包括引號),而不是 `My Company`。

471</Warning>471</Warning>

472 472 

473<h3 id="attribute-telemetry-to-desktop-ssh-sessions">

474 將遙測歸因至 Desktop SSH 工作階段

475</h3>

476 

477若要查看 [Desktop SSH 工作階段](/docs/zh-TW/desktop#ssh-sessions)在哪台遠端機器上執行,請在自訂屬性中為每台機器命名。指標和事件不會指明工作階段執行所在的機器。

478 

479在每台遠端機器上,將 [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) 新增至開啟遙測的 `env` 區塊,該區塊位於[工作階段讀取的受管設定檔](/docs/zh-TW/desktop#managed-settings)中。在每台機器的檔案中直接寫出名稱。Claude Code 不會展開該值,因此 `host.name=$(hostname)` 會以這些字元原樣到達。

480 

481以下範例將機器命名為 `build-7`:

482 

483```json theme={null}

484{

485 "env": {

486 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

487 "OTEL_METRICS_EXPORTER": "otlp",

488 "OTEL_LOGS_EXPORTER": "otlp",

489 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

490 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

491 "OTEL_RESOURCE_ATTRIBUTES": "host.name=build-7"

492 }

493}

494```

495 

496當沒有其他項目設定此變數時,`host.name` 會出現在資源區塊中,無論是在 Desktop SSH 工作階段中,或是在該機器上的 CLI 中。關於自訂屬性還會出現在哪些地方,請參閱[多團隊組織支援](#multi-team-organization-support)。

497 

498如果名稱沒有到達,請檢查是否為以下原因之一:

499 

500* **您在執行 Desktop 的電腦上設定了它**:Desktop 不會將您在該處設定的值傳遞給 SSH 工作階段

501* **您在登入檔案中匯出了它**:只有登入 shell 會讀取 `/etc/profile` 之類的檔案。您在該處 `export` 的值會傳達到從登入 shell 啟動的 Claude Code。它不會傳達到 Desktop SSH 工作階段,因為 Desktop 不會透過登入 shell 啟動 Claude Code。

502* **值中含有空格**:此時 Claude Code 不會將任何鍵複製到事件或資料點上,也不會回報錯誤。[移除值中的空格](#multi-team-organization-support)。

503* **其他項目已設定此變數**:在桌面應用程式啟動的工作階段中,啟動環境中已設定的變數[優先於設定檔](/docs/zh-TW/settings-reference#how-env-values-interact-with-your-shell)。[除錯日誌](/docs/zh-TW/debug-your-config)會列出每個被忽略的變數。當第三方 Desktop 部署在其提供的環境中[指定 OTLP 端點](#how-managed-settings-lock-the-otlp-destination)時,該環境會攜帶 Desktop 自己的 `OTEL_RESOURCE_ATTRIBUTES`。

504 

473<h3 id="example-configurations">505<h3 id="example-configurations">

474 範例設定506 範例設定

475</h3>507</h3>


1746 1778 

1747所有指標和事件都使用以下資源屬性匯出:1779所有指標和事件都使用以下資源屬性匯出:

1748 1780 

1749* `service.name`:終端機工作階段為 `claude-code`,從 [Claude Desktop 應用程式](/docs/zh-TW/desktop)中的 Code 標籤啟動的工作階段為 `claude-code-desktop`1781* `service.name`:終端機工作階段為 `claude-code`,從 [Claude Desktop 應用程式](/docs/zh-TW/desktop)中的 Code 標籤啟動的本機工作階段為 `claude-code-desktop`

1750* `service.version`:目前的 Claude Code 版本,或 Code 標籤工作階段的 Desktop 應用程式版本1782* `service.version`:目前的 Claude Code 版本,或本機 Code 標籤工作階段的 Desktop 應用程式版本

1751* `os.type`:作業系統類型(例如,`linux`、`darwin`、`windows`)1783* `os.type`:作業系統類型(例如,`linux`、`darwin`、`windows`)

1752* `os.version`:作業系統版本字串1784* `os.version`:作業系統版本字串

1753* `host.arch`:主機架構(例如,`amd64`、`arm64`)1785* `host.arch`:主機架構(例如,`amd64`、`arm64`)

1754* `wsl.version`:WSL 版本號(僅在 Windows Subsystem for Linux 上執行時出現)1786* `wsl.version`:WSL 版本號(僅在 Windows Subsystem for Linux 上執行時出現)

1755* 計量器名稱:`com.anthropic.claude_code`1787* 計量器名稱:`com.anthropic.claude_code`

1756 1788 

1757如果您的收集器管道或儀表板在 `service.name = claude-code` 上進行篩選,請將 `claude-code-desktop` 新增至篩選條件,以同時擷取來自 Code 標籤工作階段的遙測資料。1789如果您的收集器管道或儀表板在 `service.name = claude-code` 上進行篩選,請將 `claude-code-desktop` 新增至篩選條件,以同時擷取來自本機 Code 標籤工作階段的遙測資料。

1758 1790 

1759<h2 id="roi-measurement-resources">1791<h2 id="roi-measurement-resources">

1760 ROI 測量資源1792 ROI 測量資源

Details

174* **Additional CA cert(s)**:顯示 `NODE_EXTRA_CA_CERTS` 路徑而不檢查檔案是否已載入,因此請在偵錯日誌中確認此項。174* **Additional CA cert(s)**:顯示 `NODE_EXTRA_CA_CERTS` 路徑而不檢查檔案是否已載入,因此請在偵錯日誌中確認此項。

175 175 

176<h2 id="apply-network-settings-to-background-agents">176<h2 id="apply-network-settings-to-background-agents">

177 將網路設定套用至背景代理程式177 將網路設定套用至背景 agent

178</h2>178</h2>

179 179 

180[背景代理程式](/docs/zh-TW/agent-view)不會在分派它們的終端機內執行。每個使用者的監督程序會依需求啟動、超越您的 shell,並裝載每個 `claude agents`、`--bg` 和 `/background` 工作階段。請參閱[背景工作階段如何被裝載](/docs/zh-TW/agent-view#how-background-sessions-are-hosted)。這改變了此頁面上的設定如何到達這些工作階段的方式。180[背景 agent](/docs/zh-TW/agent-view) 並不會在派送它們的終端機內執行。每位使用者各有一個監督程序,會在需要時啟動、存續時間比您的 shell 更久,並承載所有 `claude agents`、`--bg` 與 `/background` 工作階段。請參閱[背景工作階段的承載方式](/docs/zh-TW/agent-view#how-background-sessions-are-hosted)。這會改變本頁的設定傳遞至這些工作階段的方式。

181 181 

182<h3 id="set-network-variables-in-settings-not-the-shell">182<h3 id="set-network-variables-in-settings-not-the-shell">

183 在設定中設定網路變數,而不是在 shell 中183 在設定中設定網路變數,而非在 shell 中

184</h3>184</h3>

185 185 

186監督程序是由每個終端機共享的單一程序。它繼承啟動它的第一個 shell 的環境,而作業系統安裝的監督程序根本不接收任何 shell 環境。如果您只在 shell 中匯出代理程式、CA 路徑或 mTLS 變數,當該 shell 碰巧冷啟動監督程序時,它會到達背景代理程式,而當不同的 shell 執行時,則會無聲地失敗。186監督程序是所有終端機共用的單一程序。它會繼承最先啟動它的 shell 的環境。如果您只在 shell 中匯出代理伺服器、CA 路徑或 mTLS 變數,那麼當恰好是該 shell 冷啟動監督程序時,這些變數才會傳遞至背景 agent;若是由其他 shell 啟動,這些變數便不會傳遞過去,且不會有任何提示。

187 187 

188改為將相同的變數放在 `~/.claude/settings.json` 的 `env` 區塊中或[受管設定](/docs/zh-TW/settings)中。此頁面上的每個變數都可以在那裡設定,而設定是唯一到達每台機器上每個背景工作階段的設定。188請改為將相同的變數放入 `~/.claude/settings.json` 或[受管設定](/docs/zh-TW/settings)的 `env` 區塊中。本頁的每個變數都可以在該處設定,而設定是唯一能傳遞至每台機器上每個背景工作階段的設定方式。

189 189 

190<h3 id="configure-a-corporate-launcher-as-a-setting">190<h3 id="configure-a-corporate-launcher-as-a-setting">

191 將公司啟動程式設定為設定191 將企業啟動器設定為設定項目

192</h3>192</h3>

193 193 

194某些組織要求每個 Claude Code 程序都透過套用沙箱化、網路控制或認證注入的公司啟動程式啟動。監督程序及其工作程序從固定路徑啟動 Claude Code,而不是在 `PATH` 上查詢 `claude`,因此每個背景代理程式都會略過您在 `PATH` 上較早放置的包裝程式。194部分組織要求每個 Claude Code 程序都必須透過企業啟動器啟動,以套用沙箱機制、網路控制或憑證注入。監督程序及其 worker 會從固定路徑啟動 Claude Code,而非在 `PATH` 上查找 `claude`,因此每個背景 agent 都會略過您放在 `PATH` 前段的包裝程式。

195 195 

196設定 [`processWrapper`](/docs/zh-TW/settings-reference#processwrapper) 設定以在監督程序、其工作程序和[啟動程式涵蓋的內容](/docs/zh-TW/corporate-launcher#what-the-launcher-covers)下列出的其他背景程序前加上您的啟動程式。當兩者都設定時,等效的 [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/zh-TW/env-vars) 環境變數優先,它受相同規則約束:透過受管設定或 `~/.claude/settings.json` 傳遞它,而不是 shell 匯出。[在公司啟動程式後面執行 Claude Code](/docs/zh-TW/corporate-launcher) 涵蓋啟動程式必須滿足的合約、它執行和不執行的內容,以及如何推出它。196請設定 [`processWrapper`](/docs/zh-TW/settings-reference#processwrapper) 設定項目,以您的啟動器作為監督程序、其 worker,以及[啟動器涵蓋的範圍](/docs/zh-TW/corporate-launcher#what-the-launcher-covers)中所列其他背景程序的前綴。兩者皆有設定時,對應的 [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/zh-TW/env-vars) 環境變數優先,且同樣適用相同規則:請透過受管設定或 `~/.claude/settings.json` 提供,而非使用 shell 匯出。[在企業啟動器後方執行 Claude Code](/docs/zh-TW/corporate-launcher) 說明了啟動器必須遵守的約定、它能與不能觸及的範圍,以及如何推行部署。

197 197 

198<Note>198<Note>

199 已執行的監督程序會保留它啟動時的啟動設定。部署啟動程式設定後,執行 [`claude daemon stop --any`](/docs/zh-TW/agent-view#the-supervisor-process),以便下一個 `claude agents` 或 `--bg` 啟動尊重它的監督程序。已安裝的服務採用 `claude daemon stop` 而不需要 `--any`。199 已在執行中的監督程序會保留其啟動時的啟動設定。部署啟動器設定後,請執行 [`claude daemon stop --any`](/docs/zh-TW/agent-view#the-supervisor-process),讓下一次的 `claude agents` 或 `--bg` 啟動一個會遵循該設定的監督程序。

200</Note>200</Note>

201 201 

202<h2 id="streaming-idle-watchdogs">202<h2 id="streaming-idle-watchdogs">

Details

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | 讀取、檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等) | 迭代您正在審查的程式碼 |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | 讀取、檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等) | 迭代您正在審查的程式碼 |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | 讀取,加上當[自動模式](#eliminate-prompts-with-auto-mode)可用時分類器批准的命令 | 在變更程式碼前探索程式碼庫 |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | 讀取,加上當[自動模式](#eliminate-prompts-with-auto-mode)可用時分類器批准的命令 | 在變更程式碼前探索程式碼庫 |

24| [`auto`](#eliminate-prompts-with-auto-mode) | 所有操作,具有背景安全檢查 | 長期任務、減少提示疲勞 |24| [`auto`](#eliminate-prompts-with-auto-mode) | 所有操作,具有背景安全檢查 | 長期任務、減少提示疲勞 |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | 讀取和預先批准的工具;任何會提示的操作都被拒絕 | 鎖定的 CI 和指令碼 |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | 工作目錄內的檔案讀取和預先核准的工具;任何會提示的操作都被拒絕 | 鎖定的 CI 和指令碼 |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | 所有操作 | 僅限隔離的容器和虛擬機器 |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | 所有操作 | 僅限隔離的容器和虛擬機器 |

27 27 

28審查每個操作的模式在 CLI 中、`claude --help` 中、VS Code 和 JetBrains 擴充功能中以及桌面應用程式中名為 **Manual**。其設定值為 `default`,這是 hook 和 SDK 整合使用的值。CLI 接受 `manual` 作為別名,無論您在何處輸入該值,例如 `claude --permission-mode manual` 或 `"defaultMode": "manual"`。28審查每個操作的模式在 CLI 中、`claude --help` 中、VS Code 和 JetBrains 擴充功能中以及桌面應用程式中名為 **Manual**。其設定值為 `default`,這是 hook 和 SDK 整合使用的值。CLI 接受 `manual` 作為別名,無論您在何處輸入該值,例如 `claude --permission-mode manual` 或 `"defaultMode": "manual"`。


466 工作目錄外的第一次讀取466 工作目錄外的第一次讀取

467</h3>467</h3>

468 468 

469當 [`permissions.blockReadsOutsideWorkingDirectories`](/docs/zh-TW/settings-reference#permissions-blockreadsoutsideworkingdirectories) 關閉時,檔案讀取在自動模式中無需提示即可執行,包括在[工作目錄](/docs/zh-TW/permissions#working-directories)外的讀取。Claude 第一次對工作目錄外的路徑使用 Read、Grep 或 Glob 工具時,Claude Code 會詢問是否允許該讀取。469當 [`permissions.blockReadsOutsideWorkingDirectories`](/docs/zh-TW/settings-reference#permissions-blockreadsoutsideworkingdirectories) 關閉時,除了[從網路路徑讀取](/docs/zh-TW/permissions#network-paths)以外的檔案讀取在自動模式中無需提示即可執行,包括在[工作目錄](/docs/zh-TW/permissions#working-directories)外的讀取。Claude 第一次對工作目錄外的路徑使用 Read、Grep 或 Glob 工具時,Claude Code 會詢問是否允許該讀取。

470 470 

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

472 472 


530 每個操作都會經過固定的決策順序。第一個相符的步驟優先:530 每個操作都會經過固定的決策順序。第一個相符的步驟優先:

531 531 

532 1. 符合您的[允許、詢問或拒絕規則](/docs/zh-TW/permissions#manage-permissions)的操作會立即決定,但有以下例外:532 1. 符合您的[允許、詢問或拒絕規則](/docs/zh-TW/permissions#manage-permissions)的操作會立即決定,但有以下例外:

533 * 寫入[受保護路徑](#protected-paths)的操作即使符合允許規則,也會送交分類器533 * 寫入[受保護路徑](#protected-paths)的操作即使符合允許規則,也會送交分類器。當受保護路徑是符號連結的設定檔所指向的檔案時,該寫入可能會改為提示您,如[受保護路徑](#protected-paths)清單所述

534 * 沒有任何允許規則能核准針對[關鍵路徑](#critical-paths)的 `rm` 和 `rmdir` 移除操作534 * 沒有任何允許規則能核准針對[關鍵路徑](#critical-paths)的 `rm` 和 `rmdir` 移除操作

535 * 標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使符合允許規則也會直接提示您,而在[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具上,若該設定已送達 Claude Code 的工作階段,也是如此535 * 標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使符合允許規則也會直接提示您,而在[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具上,若該設定已送達 Claude Code 的工作階段,也是如此

536 * 攜帶[每個命令允許的網域](/docs/zh-TW/sandboxing#per-command-allowed-domains-in-auto-mode)的 shell 命令即使符合允許規則,也會送交分類器,因為規則核准的是命令,而不是其主機536 * 攜帶[每個命令允許的網域](/docs/zh-TW/sandboxing#per-command-allowed-domains-in-auto-mode)的 shell 命令即使符合允許規則,也會送交分類器,因為規則核准的是命令,而不是其主機

537 * 依命令內容比對的詢問規則,例如 `Bash(git push *)`,會改用權限提示537 * 依命令內容比對的詢問規則,例如 `Bash(git push *)`,會改用權限提示

538 * 經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為受保護路徑的寫入操作,在 Claude 所請求的路徑本身不受保護時會提示您538 * 經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為受保護路徑的寫入操作,在 Claude 所請求的路徑本身不受保護時會提示您

539 * 從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取即使符合允許規則也會提示您

539 2. 唯讀操作和您工作目錄中的檔案編輯會自動核准,但寫入[受保護路徑](#protected-paths)和[工作目錄外的第一次讀取](#first-read-outside-the-working-directories)除外,後者會提示您540 2. 唯讀操作和您工作目錄中的檔案編輯會自動核准,但寫入[受保護路徑](#protected-paths)和[工作目錄外的第一次讀取](#first-read-outside-the-working-directories)除外,後者會提示您

540 * 在具有[伺服器端分類器審查](#server-side-classifier-review)的工作階段中,唯讀和[沙箱化](/docs/zh-TW/sandboxing#sandbox-modes)的 shell 命令會等待該審查,若審查將其標記則會被阻止541 * 在具有[伺服器端分類器審查](#server-side-classifier-review)的工作階段中,唯讀和[沙箱化](/docs/zh-TW/sandboxing#sandbox-modes)的 shell 命令會等待該審查,若審查將其標記則會被阻止

541 * 在您工作目錄內、經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為工作目錄外位置的寫入操作會提示您542 * 在您工作目錄內、經[符號連結檢查](/docs/zh-TW/permissions#symlinks)解析為工作目錄外位置的寫入操作會提示您

542 * 當 Claude 讀取[其他人製作的 artifact](/docs/zh-TW/artifacts#read-an-artifact-shared-with-you) 時,適用該章節所列的核准情況543 * 當 Claude 讀取[其他人製作的 artifact](/docs/zh-TW/artifacts#read-an-artifact-shared-with-you) 時,適用該章節所列的核准情況

544 * 從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取會提示您

543 3. 其他所有操作都會送交分類器,但採用預設處理方式的[關鍵路徑移除](#critical-paths)除外。在步驟 1 中直接提示您的連接器工具和 `requiresUserInteraction` MCP 工具也永遠不會送到分類器,因此組織要求的核准和同意步驟都不會被自動核准545 3. 其他所有操作都會送交分類器,但採用預設處理方式的[關鍵路徑移除](#critical-paths)除外。在步驟 1 中直接提示您的連接器工具和 `requiresUserInteraction` MCP 工具也永遠不會送到分類器,因此組織要求的核准和同意步驟都不會被自動核准

544 4. 如果分類器阻止操作,Claude 會收到原因。在大多數工作階段中,原因會指明分類器比對到的規則,例如 `[Data Exfiltration]`,而不是提供書面說明;請參閱[檢視拒絕](/docs/zh-TW/auto-mode-config#review-denials)546 4. 如果分類器阻止操作,Claude 會收到原因。在大多數工作階段中,原因會指明分類器比對到的規則,例如 `[Data Exfiltration]`,而不是提供書面說明;請參閱[檢視拒絕](/docs/zh-TW/auto-mode-config#review-denials)

545 547 


593 595 

594Claude Code 會拒絕符合您明確 [`ask` 規則](/docs/zh-TW/permissions#manage-permissions)的呼叫,而不是提示。它也會拒絕內建的 `AskUserQuestion` 工具,即使您的允許規則符合它,以及您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools)的連接器工具在該設定到達 Claude Code 的工作階段中。它以相同方式拒絕標記為 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,因為它們的核准卡需要此模式永遠不會收集的答案。596Claude Code 會拒絕符合您明確 [`ask` 規則](/docs/zh-TW/permissions#manage-permissions)的呼叫,而不是提示。它也會拒絕內建的 `AskUserQuestion` 工具,即使您的允許規則符合它,以及您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools)的連接器工具在該設定到達 Claude Code 的工作階段中。它以相同方式拒絕標記為 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,因為它們的核准卡需要此模式永遠不會收集的答案。

595 597 

596`rm` 和 `rmdir` 移除針對[關鍵路徑](#critical-paths),例如 `rm -rf /` 和 `rm -rf ~`,即使允許規則或 `PreToolUse` hook 允許它們也被拒絕。598`rm` 和 `rmdir` 移除針對[關鍵路徑](#critical-paths),例如 `rm -rf /` 和 `rm -rf ~`,即使允許規則符合它們或 `PreToolUse` hook 允許它們也被拒絕。從[網路路徑](/docs/zh-TW/permissions#network-paths)讀取也會以相同方式被拒絕。

597 599 

598[Claude Code on the web](/docs/zh-TW/claude-code-on-the-web) 上的雲端工作階段會忽略 `defaultMode: "dontAsk"`;詳見 [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) 以了解詳情。600[Claude Code on the web](/docs/zh-TW/claude-code-on-the-web) 上的雲端工作階段會忽略 `defaultMode: "dontAsk"`;詳見 [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) 以了解詳情。

599 601 


639* **如果您接受**:Claude Code 會在 `~/.claude/settings.json` 中將 `skipDangerousModePermissionPrompt` 設定為 `true`,因此後續工作階段會跳過對話框。若要再次看到對話框,請從該檔案中移除該鍵或將其設定為 `false`。[`skipDangerousModePermissionPrompt` 參考](/docs/zh-TW/settings-reference#skipdangerousmodepermissionprompt)列出了您或您的組織可以設定它的其他設定檔。641* **如果您接受**:Claude Code 會在 `~/.claude/settings.json` 中將 `skipDangerousModePermissionPrompt` 設定為 `true`,因此後續工作階段會跳過對話框。若要再次看到對話框,請從該檔案中移除該鍵或將其設定為 `false`。[`skipDangerousModePermissionPrompt` 參考](/docs/zh-TW/settings-reference#skipdangerousmodepermissionprompt)列出了您或您的組織可以設定它的其他設定檔。

640* **如果您拒絕**:Claude Code 會結束。642* **如果您拒絕**:Claude Code 會結束。

641 643 

642在[非互動模式](/docs/zh-TW/headless)中不會顯示對話框,使用 `--bg` 啟動的[背景工作階段](/docs/zh-TW/agent-view)會被拒絕,直到您在互動式工作階段中接受對話框。644在[非互動模式](/docs/zh-TW/headless)中不會顯示對話框。當您的接受記錄在使用者設定或受管設定中時,[背景工作階段](/docs/zh-TW/agent-view)會遵循該接受:

645 

646* 若未記錄任何接受,`claude --bg --permission-mode bypassPermissions` 會被拒絕,直到您在互動式工作階段中接受對話框。

647* 若 `skipDangerousModePermissionPrompt` 僅在 `.claude/settings.local.json` 中設定,背景工作階段啟動時會忽略略過請求,並固定顯示通知 `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true`。若要讓略過請求生效,請將該鍵新增至 `~/.claude/settings.json`,然後啟動新的背景工作階段。

643 648 

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

645 650 


708* `.devcontainer.json`713* `.devcontainer.json`

709* `.ripgreprc`、`pyrightconfig.json`714* `.ripgreprc`、`pyrightconfig.json`

710* `.mcp.json`、`.claude.json`715* `.mcp.json`、`.claude.json`

716* 當您的使用者、專案或本機[設定檔](/docs/zh-TW/settings#settings-files-and-who-they-affect)本身是符號連結時(例如連結到 dotfiles 儲存庫),該設定檔所指向的檔案。在將受保護路徑寫入路由到分類器的模式中,對此檔案的寫入會改為提示您,即使有允許規則相符也是如此。如果該檔案本身的路徑也是某個設定檔的路徑,例如另一個資料夾中的 `.claude/settings.json`,則該寫入會如同其他受保護路徑寫入一樣交由分類器處理

711 717 

712<h2 id="critical-paths">718<h2 id="critical-paths">

713 關鍵路徑719 關鍵路徑


727 733 

728* 檔案系統根目錄734* 檔案系統根目錄

729* 頂級目錄,即根目錄的任何直接子目錄,例如 `/usr`、`/etc` 或 `/data`735* 頂級目錄,即根目錄的任何直接子目錄,例如 `/usr`、`/etc` 或 `/data`

730* 您的主目錄736* 您的家目錄。在 Windows 上,其 8.3 短名稱也算在內,例如 `C:\Users\LONGNA~1`

731* Windows 磁碟機根目錄及其頂級目錄,例如 `C:\` 和 `C:\Windows`737* Windows 磁碟機根目錄及其頂級目錄,例如 `C:\` 和 `C:\Windows`。`\\?\C:\` 和 `\\localhost\C$` 等寫法視同 `C:\`

732* 您的工作目錄及其父目錄738* 您的工作目錄及其父目錄

733* 您的其他工作目錄及其父目錄,但僅當移除是其中一個目錄下的 glob 時,例如 `rm -rf <dir>/*`。對目錄本身執行 `rm -rf <dir>` 不會觸發此檢查739* 您的其他工作目錄及其父目錄,但僅當移除是其中一個目錄下的 glob 時,例如 `rm -rf <dir>/*`。對目錄本身執行 `rm -rf <dir>` 不會觸發此檢查

734 740 

741對家目錄 8.3 短名稱以及 `\\?\C:\` 和 `\\localhost\C$` 寫法的檢查需要 Claude Code v2.1.292 或更新版本。

742 

735<h3 id="other-targets-that-count-as-critical-paths">743<h3 id="other-targets-that-count-as-critical-paths">

736 計為關鍵路徑的其他目標744 計為關鍵路徑的其他目標

737</h3>745</h3>


747| 僅是命令替換輸出的目標,當 `rm` 是遞迴時 | `rm -rf "$(pwd)"` | Claude Code 無法在命令執行前檢查目標 |755| 僅是命令替換輸出的目標,當 `rm` 是遞迴時 | `rm -rf "$(pwd)"` | Claude Code 無法在命令執行前檢查目標 |

748| 關鍵路徑後的尾部命令替換 | `rm -rf ~/$(cmd)` | Claude Code 檢查如果替換展開為空時會保留的路徑,這裡是您的主目錄 |756| 關鍵路徑後的尾部命令替換 | `rm -rf ~/$(cmd)` | Claude Code 檢查如果替換展開為空時會保留的路徑,這裡是您的主目錄 |

749| 僅是反斜線的目標 | `rm -rf "\\"` | Windows 上的 Git Bash 將單個反斜線讀取為目前磁碟機的根目錄,因此檢查適用於每個平台 |757| 僅是反斜線的目標 | `rm -rf "\\"` | Windows 上的 Git Bash 將單個反斜線讀取為目前磁碟機的根目錄,因此檢查適用於每個平台 |

758| 以 GUID 而非磁碟機代號指定磁碟區的 Windows 路徑 | `rm -rf '\\?\Volume{GUID}\work\build'` | 該路徑未指明位於哪個磁碟機,因此可能是關鍵路徑。需要 Claude Code v2.1.292 或更新版本 |

750| 某些以 `/*` 或 `/*/` 結尾的目標 | `rm -rf logs/*/*`、`rm -rf logs/*/`、`cd logs && rm -rf a/*` | Claude Code 無法在命令執行前判斷它們會觸及哪些目錄 |759| 某些以 `/*` 或 `/*/` 結尾的目標 | `rm -rf logs/*/*`、`rm -rf logs/*/`、`cd logs && rm -rf a/*` | Claude Code 無法在命令執行前判斷它們會觸及哪些目錄 |

751 760 

752要關閉對僅是命令替換輸出的目標的檢查,請在啟動 Claude Code 的環境中設定 [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/zh-TW/env-vars#variables)。761要關閉對僅是命令替換輸出的目標的檢查,請在啟動 Claude Code 的環境中設定 [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/zh-TW/env-vars#variables)。

permissions.md +40 −9

Details

36 36 

37在 v2.1.211 之前,Claude Code 總是在啟動目錄中保存規則,因此在 worktree 或子目錄中授予的核准不適用於儲存庫的其餘部分。較早版本在子目錄或 worktree 中保存的規則仍然適用於在那裡啟動的工作階段。37在 v2.1.211 之前,Claude Code 總是在啟動目錄中保存規則,因此在 worktree 或子目錄中授予的核准不適用於儲存庫的其餘部分。較早版本在子目錄或 worktree 中保存的規則仍然適用於在那裡啟動的工作階段。

38 38 

39有時權限提示只提供一次性核准,沒有"不要再問"選項,也沒有允許操作用於工作階段其餘部分的選項。Claude Code 只在權限提示可以向您顯示它們允許的所有內容時才提供這些選項,因此您從權限提示保存的規則只涵蓋其選項命名的內容。當權限提示只提供一次性核准時,請核准操作一次,或在 [`/permissions`](#manage-permissions) 中自行新增規則。39有時權限提示只提供一次性核准,沒有"不要再問"選項,也沒有允許操作用於工作階段其餘部分的選項。Claude Code 只在權限提示可以向您顯示它們允許的所有內容時才提供這些選項,因此您從權限提示保存的規則只涵蓋其選項命名的內容。當權限提示只提供一次性核准時,請核准操作一次,或在 [`/permissions`](#manage-permissions) 中自行新增規則。若要停止以 `watch` 等 exec 包裝器開頭的命令,或帶有 `-delete` 等動作的 `find` 命令的權限提示,請參閱 [Exec 包裝器和 `find` 動作](#exec-wrappers-and-find-actions)。

40 40 

41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">

42 在回答權限提示時新增評論42 在回答權限提示時新增評論


91| `acceptEdits` | 自動接受工作目錄或 `additionalDirectories` 中路徑的檔案編輯和常見檔案系統命令,例如 `mkdir`、`touch`、`mv` 和 `cp` |91| `acceptEdits` | 自動接受工作目錄或 `additionalDirectories` 中路徑的檔案編輯和常見檔案系統命令,例如 `mkdir`、`touch`、`mv` 和 `cp` |

92| `plan` | Claude 讀取檔案並執行唯讀 shell 命令以探索,但不編輯您的原始檔案;在 [auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 可用的情況下,分類器批准的命令也會執行。在 CLI 和 VS Code 擴充功能中標示為 Plan |92| `plan` | Claude 讀取檔案並執行唯讀 shell 命令以探索,但不編輯您的原始檔案;在 [auto mode](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 可用的情況下,分類器批准的命令也會執行。在 CLI 和 VS Code 擴充功能中標示為 Plan |

93| `auto` | 在沒有例行提示的情況下執行;在 shell 命令和網路要求等操作執行之前,背景 [classifier](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 會檢查它們是否符合您的要求 |93| `auto` | 在沒有例行提示的情況下執行;在 shell 命令和網路要求等操作執行之前,背景 [classifier](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 會檢查它們是否符合您的要求 |

94| `dontAsk` | 自動拒絕每個會提示的呼叫;工作目錄中的檔案讀取和其他不需要批准的操作仍會執行,透過 `/permissions` 或 `permissions.allow` 規則預先批准的工具也會執行。`AskUserQuestion`、標示為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,以及連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 在工作階段中(該設定到達 Claude Code 的地方)即使您已允許它們也會被拒絕 |94| `dontAsk` | 自動拒絕每個會提示的呼叫;工作目錄中的檔案讀取和其他不需要核准的操作仍會執行,透過 `/permissions` 或 `permissions.allow` 規則預先核准的工具也會執行。`AskUserQuestion`、標示為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[來自網路路徑的讀取](#network-paths),以及連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 在工作階段中(該設定到達 Claude Code 的地方)即使您已允許它們也會被拒絕 |

95| `bypassPermissions` | 跳過權限提示,但[任何模式都不會自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)除外 |95| `bypassPermissions` | 跳過權限提示,但[任何模式都不會自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)除外 |

96 96 

97<Warning>97<Warning>


240 Bash240 Bash

241</h3>241</h3>

242 242 

243Bash 規則符合整個命令文字,其中 `*` 代表任何文字。[萬用字元模式](#wildcard-patterns)顯示每個規則形式符合哪些命令以及在哪裡放置 `*`。本節的其餘部分涵蓋 Claude Code 如何符合複合命令和包裝器、規則不符合的內容、唯讀命令和重新導向。243Bash 規則符合整個命令文字,其中 `*` 代表任何文字。[萬用字元模式](#wildcard-patterns)顯示每個規則形式符合哪些命令以及在哪裡放置 `*`。本節的其餘部分涵蓋 Claude Code 如何符合複合命令和包裝器、前綴規則無法核准哪些包裝器和 `find` 動作、規則不符合的內容、唯讀命令和重新導向。

244 244 

245<h4 id="compound-commands">245<h4 id="compound-commands">

246 複合命令246 複合命令


268 268 

269此包裝器清單是內建的,不可設定。開發環境執行器如 `direnv exec`、`devbox run`、`mise exec`、`npx` 和 `docker exec` 不在清單中。因為這些工具將其引數作為命令執行,像 `Bash(devbox run *)` 這樣的規則符合 `run` 後面的任何內容,包括 `devbox run rm -rf .`。若要批准環境執行器內的工作,請編寫包含執行器和內部命令的特定規則,如 `Bash(devbox run npm test)`。為您想要允許的每個內部命令新增一個規則。269此包裝器清單是內建的,不可設定。開發環境執行器如 `direnv exec`、`devbox run`、`mise exec`、`npx` 和 `docker exec` 不在清單中。因為這些工具將其引數作為命令執行,像 `Bash(devbox run *)` 這樣的規則符合 `run` 後面的任何內容,包括 `devbox run rm -rf .`。若要批准環境執行器內的工作,請編寫包含執行器和內部命令的特定規則,如 `Bash(devbox run npm test)`。為您想要允許的每個內部命令新增一個規則。

270 270 

271Exec 包裝器如 `watch`、`setsid`、`ionice` 和 `flock` 無法透過像 `Bash(watch *)` 這樣的前綴規則自動批准,所以在 Manual 模式中它們始終提示。同樣適用於帶有 `-exec` 或 `-delete` 的 `find`:`Bash(find *)` 規則不涵蓋這些形式。若要批准特定呼叫,請為完整命令字串編寫精確符合規則。271<h4 id="exec-wrappers-and-find-actions">

272 Exec 包裝器和 `find` 動作

273</h4>

274 

275像 `Bash(watch *)` 或 `Bash(find *)` 這樣的前綴規則無法自動核准以下命令,所以在 Manual 模式中它們會提示:

276 

277* **Exec 包裝器**:如 `watch`、`setsid`、`ionice` 和 `flock`

278* **`find`**:帶有執行命令、刪除檔案或寫入檔案的動作,如 `-exec`、`-delete` 或 `-fprint`,或帶有 `-files0-from`(從檔案取得要搜尋的路徑)

279 

280若要核准不含 `*` 的特定呼叫,請為完整命令字串編寫精確符合規則,如 `Bash(find build -type f -delete)`。

281 

282當命令含有 `*` 時,如 `find . -name '*.tmp' -delete`,Claude Code 會將規則讀取為[萬用字元模式](#wildcard-patterns)而不是精確符合,所以該命令仍然會提示。請在每次提示時核准它,或使用為其傳回 `"allow"` 的 [PreToolUse hook](/docs/zh-TW/hooks#pretooluse-decision-control)。

272 283 

273<h4 id="bash-rule-limits">284<h4 id="bash-rule-limits">

274 Bash 規則不符合的內容285 Bash 規則不符合的內容


301* **具有寫入能力旗標的命令的未引用 glob**:具有寫入能力或執行能力旗標的命令,如 `find`、`sort`、`sed` 和 `git`,在存在未引用的 glob 時提示,因為 glob 可能會擴展為像 `-delete` 這樣的旗標。312* **具有寫入能力旗標的命令的未引用 glob**:具有寫入能力或執行能力旗標的命令,如 `find`、`sort`、`sed` 和 `git`,在存在未引用的 glob 時提示,因為 glob 可能會擴展為像 `-delete` 這樣的旗標。

302* **`docker` 指向另一個守護程序**:唯讀形式的 `docker` 在命令帶有選擇不同守護程序的旗標時提示,如 `-H`、`--context` 或 Podman 的 `--url` 和 `--connection`。313* **`docker` 指向另一個守護程序**:唯讀形式的 `docker` 在命令帶有選擇不同守護程序的旗標時提示,如 `-H`、`--context` 或 Podman 的 `--url` 和 `--connection`。

303* **`file` 帶有路徑開啟旗標**:`file` 在傳遞 `-m`/`--magic-file` 或 `-f`/`--files-from` 時提示,因為這些旗標使 `file` 開啟旗標值中命名的路徑。314* **`file` 帶有路徑開啟旗標**:`file` 在傳遞 `-m`/`--magic-file` 或 `-f`/`--files-from` 時提示,因為這些旗標使 `file` 開啟旗標值中命名的路徑。

315* **可能列印環境變數的 `ps`**:當 `ps` 的其中一個引數可能作為 `e` 選項時,例如在 `ps auxe` 或 `ps aux -e` 中,`ps` 會提示,因為該選項會列印程序環境變數。`ps aux` 和 `ps -ef` 無需提示即可執行。對 `ps aux -e` 等帶破折號形式的檢查需要 Claude Code v2.1.290 或更新版本。

304* **Windows 上的網路路徑**:其引數包括網路 (UNC) 路徑(如 `\\server\share\file`)的命令會提示,因為存取網路路徑可能會將您的 Windows 認證傳送到它命名的主機。同樣的檢查適用於 [PowerShell 工具](/docs/zh-TW/tools-reference#powershell-tool)命令。316* **Windows 上的網路路徑**:其引數包括網路 (UNC) 路徑(如 `\\server\share\file`)的命令會提示,因為存取網路路徑可能會將您的 Windows 認證傳送到它命名的主機。同樣的檢查適用於 [PowerShell 工具](/docs/zh-TW/tools-reference#powershell-tool)命令。

305* **寫入特殊 shell 變數**:設定、取消設定或迴圈某些特殊 shell 變數(如 `PATH` 或 `IFS`)的命令會提示,即使命令的其餘部分是唯讀的。317* **寫入特殊 shell 變數**:設定、取消設定或迴圈某些特殊 shell 變數(如 `PATH` 或 `IFS`)的命令會提示,即使命令的其餘部分是唯讀的。

306* **分析無法解析的命令**:當 Claude Code 無法完全解析命令時,它會要求批准而不是將命令視為唯讀。超過 10,000 個字元的命令始終提示,因為它們超過分析解析的內容。318* **分析無法解析的命令**:當 Claude Code 無法完全解析命令時,它會要求批准而不是將命令視為唯讀。超過 10,000 個字元的命令始終提示,因為它們超過分析解析的內容。


508 520 

509當工具隨後開啟已批准的檔案時,它[確認路徑仍然解析到權限檢查批准的位置](/docs/zh-TW/errors#refusing-after-a-symlink-changed)。521當工具隨後開啟已批准的檔案時,它[確認路徑仍然解析到權限檢查批准的位置](/docs/zh-TW/errors#refusing-after-a-symlink-changed)。

510 522 

523<h4 id="network-paths">

524 網路路徑

525</h4>

526 

527當 Claude 的檔案讀取工具(如 Read、Grep 和 Glob)從網路路徑讀取時,該讀取會有自己的權限檢查。網路路徑是可以連到另一台電腦的路徑:在 Windows 上,是 UNC 路徑,如 `\\server\share\file`;在 macOS 和 Linux 上,是 `/net` 自動掛載路徑,如 `/net/fileserver/notes.txt`。查詢此類路徑可能會聯繫它命名的主機,而在 Windows 上,該聯繫可能會將您的憑證傳送給該主機。Shell 命令有自己的檢查:在 Manual 模式中,引數包括 UNC 路徑的唯讀 Bash 或 PowerShell 命令[在 Windows 上仍然會提示](#read-only-commands)。

528 

529在 Claude Code v2.1.292 及更新版本中,以下每一項都會保留提示:

530 

531* **允許規則**:規則不會預先核准讀取,包括整個工具的規則,如 `Read`

532* **PreToolUse hook**:傳回 `"allow"` 的 [hook](#extend-permissions-with-hooks) 不會略過提示

533* **自動模式**:提示會交給您,而不是由[分類器](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)決定讀取

534 

535在 `dontAsk` 模式中,Claude Code 會拒絕讀取而不是提示。在 `bypassPermissions` 模式中,以及在可使用[略過權限](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)的 plan mode 互動式終端機工作階段中,讀取會在沒有此提示的情況下執行。

536 

537若要在沒有此提示的情況下讀取網路共用上的檔案,請先為該共用提供本機路徑:

538 

539* **Windows**:將共用對應到磁碟機代號,並在啟動 Claude Code 時使用 `--add-dir` 傳遞該磁碟機,如[工作目錄](#working-directories)所述

540* **macOS 和 Linux**:將共用掛載到本機路徑,如 `/mnt` 或 `/Volumes` 下的目錄,並從該處讀取檔案,如[工作目錄是網路路徑](/docs/zh-TW/errors#working-directory-is-a-network-path)所述

541 

511<h3 id="webfetch">542<h3 id="webfetch">

512 WebFetch543 WebFetch

513</h3>544</h3>

514 545 

515WebFetch 規則使用 `domain:` 前綴,並針對請求 URL 的主機名進行符合。符合不區分大小寫,支援 `*` 萬用字元,並從規則和主機名中移除尾部 `.`,所以 `example.com.` 和 `example.com` 被視為相同。546WebFetch 規則使用 `domain:` 前綴,並針對請求 URL 的主機名進行符合。符合不區分大小寫,支援 `*` 萬用字元,並從規則和主機名中移除尾部 `.`,所以 `example.com.` 和 `example.com` 被視為相同。

516 547 

517* `WebFetch(domain:example.com)` 符合對 `example.com` 的請求548* `WebFetch(domain:example.com)` 僅符合對 `example.com` 的請求。若要同時涵蓋 `api.example.com` 等子網域,請新增 `WebFetch(domain:*.example.com)` 規則

518* `WebFetch(domain:*.example.com)` 符合任何深度的任何子網域,如 `api.example.com` 或 `a.b.example.com`,但不符合 `example.com` 本身549* `WebFetch(domain:*.example.com)` 符合任何深度的任何子網域,如 `api.example.com` 或 `a.b.example.com`,但不符合 `example.com` 本身

519* `WebFetch(domain:*)` 符合每個網域。它與裸 `WebFetch` 規則不同;請參閱[允許或拒絕每次擷取](#allow-or-deny-every-fetch)550* `WebFetch(domain:*)` 符合每個網域。它與裸 `WebFetch` 規則不同;請參閱[允許或拒絕每次擷取](#allow-or-deny-every-fetch)

520 551 

521在前導 `*.` 或裸 `*` 以外的任何位置,萬用字元僅符合兩個點之間的文字。`WebFetch(domain:example.*)` 符合 `example.org`,其中 `*` 變成 `org`,但不符合 `example.evil.com`,其中 `*` 必須變成 `evil.com` 並跨越一個點。這可防止尾部萬用字元符合攻擊者可以註冊的網域。552在前導 `*.` 或裸 `*` 以外的任何位置,萬用字元僅符合兩個點之間的文字。`WebFetch(domain:example.*)` 符合 `example.org`,其中 `*` 變成 `org`,但不符合 `example.evil.com`,其中 `*` 必須變成 `evil.com` 並跨越一個點。這可防止尾部萬用字元符合攻擊者可以註冊的網域。

522 553 

523WebFetch 規則中的萬用字元需要 Claude Code v2.1.172 或更新版本才能符合擷取。554`WebFetch` 規則中的萬用字元需要 Claude Code v2.1.172 或更新版本才能符合擷取。

524 555 

525<h4 id="allow-or-deny-every-fetch">556<h4 id="allow-or-deny-every-fetch">

526 允許或拒絕每次擷取557 允許或拒絕每次擷取


622 653 

623請參閱 [Decide whether to trust a mod](/docs/zh-TW/plugins/mods/overview#decide-whether-to-trust-a-mod),或如果您部署受管理設定,請參閱 [Manage mods for your organization](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default)。654請參閱 [Decide whether to trust a mod](/docs/zh-TW/plugins/mods/overview#decide-whether-to-trust-a-mod),或如果您部署受管理設定,請參閱 [Manage mods for your organization](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default)。

624 655 

625標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具在 hook 返回 `"allow"` 時仍會提示,連接器工具[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的工具在該設定到達 Claude Code 的工作階段中也是如此。656對於[需要使用者互動的工具](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves),例如 `AskUserQuestion` 或標記為 `requiresUserInteraction` 的 MCP 工具,mod 的 `tool.check` 核准不會跳過提示。需要 Claude Code v2.1.292 或更新版本。標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具在 hook 返回 `"allow"` 時也仍會提示,從[網路路徑](#network-paths)進行的讀取,以及在該設定到達 Claude Code 的工作階段中[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具也是如此。

626 657 

627阻止 hook 也優先於 allow 規則。以代碼 2 退出的 hook 會在評估權限規則之前停止工具呼叫,因此即使 allow 規則會允許呼叫,該阻止也會適用。若要執行所有 Bash 命令而無需提示,除了您想要阻止的少數幾個,請將 `"Bash"` 新增到您的 allow 清單,並註冊一個 PreToolUse hook 來拒絕那些特定命令。請參閱 [Block edits to protected files](/docs/zh-TW/hooks-guide#block-edits-to-protected-files) 以取得您可以調整的 hook 指令碼。658阻止 hook 也優先於 allow 規則。以代碼 2 退出的 hook 會在評估權限規則之前停止工具呼叫,因此即使 allow 規則會允許呼叫,該阻止也會適用。若要執行所有 Bash 命令而無需提示,除了您想要阻止的少數幾個,請將 `"Bash"` 新增到您的 allow 清單,並註冊一個 PreToolUse hook 來拒絕那些特定命令。請參閱 [Block edits to protected files](/docs/zh-TW/hooks-guide#block-edits-to-protected-files) 以取得您可以調整的 hook 指令碼。

628 659 


636* **在工作階段期間**:使用 `/add-dir` 命令667* **在工作階段期間**:使用 `/add-dir` 命令

637* **持久設定**:新增到 [settings files](/docs/zh-TW/settings#where-settings-live) 中的 `additionalDirectories`668* **持久設定**:新增到 [settings files](/docs/zh-TW/settings#where-settings-live) 中的 `additionalDirectories`

638 669 

639其他目錄中的檔案遵循與原始工作目錄相同的權限規則:它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。670其他目錄中的檔案遵循與原始工作目錄相同的權限規則:除了[網路路徑](#network-paths)檢查之外,它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。

640 671 

641您無法新增大多數[網路路徑](/docs/zh-TW/errors#working-directory-is-a-network-path),例如 UNC 共用 `\\server\share`,作為工作目錄,因為查詢它可能會聯絡它所命名的主機。在 Windows 上,請改為將共用對應到磁碟機代號,並在啟動時使用 `--add-dir` 傳遞磁碟機。672您無法新增大多數[網路路徑](/docs/zh-TW/errors#working-directory-is-a-network-path),例如 UNC 共用 `\\server\share`,作為工作目錄,因為查詢它可能會聯絡它所命名的主機。在 Windows 上,請改為將共用對應到磁碟機代號,並在啟動時使用 `--add-dir` 傳遞磁碟機。

642 673 


648 將工作階段移動到另一個目錄679 將工作階段移動到另一個目錄

649</h3>680</h3>

650 681 

651若要將工作階段移動到不同的主要工作目錄,而不是[在目前目錄旁新增目錄](#working-directories),請執行 `/cd <path>`。Claude Code 會保留對話、載入新目錄的 `CLAUDE.md`,並在您之前未在其中工作時提示您[信任工作區](#project-allow-rules-and-workspace-trust)。之後,當您從新目錄執行 `--resume` 時,Claude Code [找到移動的工作階段](/docs/zh-TW/sessions#resume-a-session)。682若要將工作階段移動到不同的主要工作目錄,而不是[在目前目錄旁新增目錄](#working-directories),請執行 `/cd <path>`。Claude Code 會保留對話、載入新目錄的 `CLAUDE.md`,並在您之前未在其中工作時提示您[信任工作區](#project-allow-rules-and-workspace-trust)。之後,當您從新目錄執行 `--resume` 時,Claude Code 會[找到移動的工作階段](/docs/zh-TW/sessions#where-the-session-picker-looks)。

652 683 

653移動後,Claude Code 會立即套用新目錄的專案設定:684移動後,Claude Code 會立即套用新目錄的專案設定:

654 685 

Details

790 790 

791`hooks/hooks.json` 和 `hooks` manifest 鍵中的 Hooks 都會載入。如需每個事件及其承載,請參閱 [Hook 事件](/docs/zh-TW/hooks#hook-events)。791`hooks/hooks.json` 和 `hooks` manifest 鍵中的 Hooks 都會載入。如需每個事件及其承載,請參閱 [Hook 事件](/docs/zh-TW/hooks#hook-events)。

792 792 

793當另一個已啟用的外掛程式具有相同名稱時,兩者之一會註冊其 `hooks/hooks.json` 中的 hook,另一個的則會被排除。請參閱 [兩個已啟用的外掛程式共用名稱時的 hook](/docs/zh-TW/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) 以了解是哪一個,以及 `/plugin` 中告知您此情況的說明。

794 

793若要將 hooks 寫成在 Claude Code 內執行且可以在其介面中繪製的 JavaScript 函式,在相同的 `hooks/hooks.json` 中的 `modules` 鍵下列出模組檔案。具有一個的外掛程式是 mod。請參閱 [建立 mod](/docs/zh-TW/plugins/mods/create)。795若要將 hooks 寫成在 Claude Code 內執行且可以在其介面中繪製的 JavaScript 函式,在相同的 `hooks/hooks.json` 中的 `modules` 鍵下列出模組檔案。具有一個的外掛程式是 mod。請參閱 [建立 mod](/docs/zh-TW/plugins/mods/create)。

794 796 

795<h4 id="when-plugin-hooks-fire">797<h4 id="when-plugin-hooks-fire">

Details

209* **具有自身儲存庫的 plugin**:安裝失敗,訊息包含 `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`。209* **具有自身儲存庫的 plugin**:安裝失敗,訊息包含 `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`。

210* **由相對路徑參考的 plugin**:安裝改為使用 marketplace 的目前副本,並在 plugin 載入時檢查約束。如果該副本超出範圍,依賴 plugin 保持停用,`claude plugin list` 顯示 `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`。210* **由相對路徑參考的 plugin**:安裝改為使用 marketplace 的目前副本,並在 plugin 載入時檢查約束。如果該副本超出範圍,依賴 plugin 保持停用,`claude plugin list` 顯示 `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`。

211 211 

212對於 marketplace 由相對路徑參考的 plugin,你新增為本機資料夾路徑的 marketplace 也會針對該資料夾的 git 標籤解析約束,當資料夾是 git 儲存庫時。這需要 Claude Code v2.1.196 或更新版本。不是 git 儲存庫的本機資料夾沒有標籤,因此 Claude Code 改為從資料夾的目前內容安裝依賴。212對於市集以相對路徑參考的外掛,當資料夾是 git 儲存庫時,您以本機資料夾路徑新增的市集也會針對該資料夾的 git 標籤解析約束。不是 git 儲存庫的本機資料夾沒有標籤,因此 Claude Code 改為從資料夾的目前內容安裝相依套件。

213 213 

214<h3 id="confirm-the-resolved-version">214<h3 id="confirm-the-resolved-version">

215 確認解析的版本215 確認解析的版本

Details

144這些項目 sources 不需要 git 帳戶:144這些項目 sources 不需要 git 帳戶:

145 145 

146* **`archive`**:透過 HTTPS 下載的 zip。使用者既不需要 `git` 也不需要帳戶,只需要對 URL 的網路存取。需要 Claude Code v2.1.224 或更新版本。使用 `sha256` 固定每個存檔,以便 Claude Code 拒絕變更的下載。若要使用下載傳送認證,請參閱 [Authenticate archive downloads](#authenticate-archive-downloads)。146* **`archive`**:透過 HTTPS 下載的 zip。使用者既不需要 `git` 也不需要帳戶,只需要對 URL 的網路存取。需要 Claude Code v2.1.224 或更新版本。使用 `sha256` 固定每個存檔,以便 Claude Code 拒絕變更的下載。若要使用下載傳送認證,請參閱 [Authenticate archive downloads](#authenticate-archive-downloads)。

147* **公開 git 儲存庫**:當項目提供 `https://` URL 時,Claude Code 透過 HTTPS 複製公開 `url` 或 `git-subdir` source,無需認證。對於 `github` source 或寫成 `owner/repo` 的 `git-subdir` source,沒有 GitHub SSH 金鑰的使用者設定 `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`。147* **公開 git 儲存庫**:當項目提供 `https://` URL 時,Claude Code 會透過 HTTPS 複製公開的 `url` 或 `git-subdir` 來源,無需憑證。對於 `github` 來源,或寫成 `owner/repo` 的 `git-subdir` 來源,請告知沒有 GitHub SSH 金鑰的使用者設定 `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`。

148 

149即使在沒有 SSH 金鑰的機器上,不設定 `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` 也能從 shell 成功執行 `claude plugin install`,仍請在您的說明中保留這項設定。對於 `github` 來源,該命令可能會自行退回使用 HTTPS,並印出 `SSH not configured, cloning via HTTPS`。從工作階段內的 `/plugin` 進行的安裝以及外掛更新不會退回,因此若未設定此變數,沒有 GitHub SSH 金鑰的使用者將會失敗。

148 150 

149對於一個網路上的團隊,共享檔案系統上的 `directory` marketplace 也可以在沒有 git 帳戶的情況下工作。使用者只需要對路徑的讀取存取。151對於一個網路上的團隊,共享檔案系統上的 `directory` marketplace 也可以在沒有 git 帳戶的情況下工作。使用者只需要對路徑的讀取存取。

150 152 

Details

80 80 

81雲端工作階段不會新增儲存庫在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 下列出的市場,因為這需要工作區信任對話框,雲端工作階段永遠不會顯示。81雲端工作階段不會新增儲存庫在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 下列出的市場,因為這需要工作區信任對話框,雲端工作階段永遠不會顯示。

82 82 

83專案範圍的技能目錄 plugin 僅從工作階段 [主要工作目錄](/docs/zh-TW/permissions#working-directories) 的 `.claude/skills/` 載入,且僅在您接受該資料夾的 [工作區信任對話框](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder) 後。它不會 [搜尋父目錄直到儲存庫根目錄](/docs/zh-TW/skills#discovery-from-parent-and-nested-directories) 的方式,就像純技能和命令一樣。如果您從子目錄啟動,儲存庫根目錄的 plugin 不會載入。改為從儲存庫根目錄啟動,或 [使用 `/cd` 將工作階段移到那裡](/docs/zh-TW/permissions#move-the-session-to-another-directory)(v2.1.246 或更新版本)。83如果儲存庫 `.claude/skills/` 中的 plugin 沒有載入,請檢查您從何處啟動工作階段,以及您是否信任該資料夾:

84 

85* **在子目錄中**:儲存庫根目錄的 plugin 不會載入。Claude Code 讀取工作階段 [主要工作目錄](/docs/zh-TW/permissions#working-directories) 的 `.claude/skills/`,且不同於一般 skill 和命令,不會為 plugin [搜尋父目錄](/docs/zh-TW/skills#discovery-from-parent-and-nested-directories)。請改為從儲存庫根目錄啟動,或在 v2.1.246 或更新版本上 [使用 `/cd` 將工作階段移到那裡](/docs/zh-TW/permissions#move-the-session-to-another-directory)

86* **從桌面應用程式,在 worktree 中**:plugin 從主要 checkout 的 `.claude/skills/` 載入,而不是從 worktree 的載入。請參閱 [worktree 與主要 checkout 共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)

87* **在您尚未信任的資料夾中**:plugin 僅在您接受該資料夾的 [工作區信任對話框](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder) 後才會載入

84 88 

85專案範圍的 plugin 被簽入儲存庫,並到達複製它的每個協作者。因為該內容來自儲存庫而不是來自您,它僅在應用於 `.claude/settings.json` 中專案允許規則的相同信任檢查後載入。信任父資料夾或使用 `-p` 執行是不夠的。執行程式碼的元件受到進一步限制:89專案範圍的 plugin 被簽入儲存庫,並到達複製它的每個協作者。因為該內容來自儲存庫而不是來自您,它僅在應用於 `.claude/settings.json` 中專案允許規則的相同信任檢查後載入。信任父資料夾或使用 `-p` 執行是不夠的。執行程式碼的元件受到進一步限制:

86 90 


421 425 

422因為順序比較清單名稱,名為 `hello-plugin` 的 `--plugin-dir` plugin 在該 plugin 的清單也說 `"name": "hello-plugin"` 時替換 `hello@example-marketplace`。426因為順序比較清單名稱,名為 `hello-plugin` 的 `--plugin-dir` plugin 在該 plugin 的清單也說 `"name": "hello-plugin"` 時替換 `hello@example-marketplace`。

423 427 

428<h3 id="hooks-when-two-enabled-plugins-share-a-name">

429 兩個已啟用外掛共用名稱時的 hook

430</h3>

431 

432當您從不同市集安裝並啟用兩個清單名稱相同的外掛時,兩者在 `/plugin` 中都會顯示為已啟用,但其中一個的 hook 會被排除。每個名稱只有一個外掛會註冊其 `hooks/hooks.json` 中的 hook,也只有一個外掛會載入 [hook 模組](/docs/zh-TW/plugins/mods/overview)。當您組織的受管設定啟用了其中一個副本時,由該副本持有此名稱。否則由 Claude Code 先載入的副本持有。

433 

434若要查看哪個副本持有此名稱,請在工作階段中執行 `/plugin` 並開啟 **Errors** 分頁。該處會針對 hook 被排除的副本顯示一則說明,指出持有此名稱的副本,被排除副本的詳細資訊中也會顯示相同說明。對於 `hooks/hooks.json` hook,該說明以 `Its hooks.json hooks do not run` 開頭;對於 hook 模組,則以 `Its hooks module does not load` 開頭。此說明需要 Claude Code v2.1.296 或更新版本。

435 

436若要改為執行被排除副本的 hook,請停用或解除安裝持有此名稱的副本,然後在工作階段中執行 `/reload-plugins`。重新載入會註冊剩餘副本的 hook 並清除該說明。當持有此名稱的副本是由受管設定啟用時,您無法停用它,且只要兩者都已安裝,另一個副本的 hook 就會保持關閉。

437 

424<h3 id="keep-a-session-only-plugin-from-loading">438<h3 id="keep-a-session-only-plugin-from-loading">

425 防止工作階段專用 plugin 載入439 防止工作階段專用 plugin 載入

426</h3>440</h3>

Details

51* <span id="reserved-name-spellings" />**保留名稱的另一種拼寫**:與保留名稱的拼寫不同,只是尾部有點,或用下劃線以外的符號代替連字號,因此 `claude.code.plugins` 計為 `claude-code-plugins`。新增 marketplace 失敗,錯誤為 [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/zh-TW/errors#marketplace-name-is-another-spelling-of-a-reserved-name),而已在其中一個下註冊的 marketplace 停止載入。此檢查需要 Claude Code v2.1.280 或更新版本。51* <span id="reserved-name-spellings" />**保留名稱的另一種拼寫**:與保留名稱的拼寫不同,只是尾部有點,或用下劃線以外的符號代替連字號,因此 `claude.code.plugins` 計為 `claude-code-plugins`。新增 marketplace 失敗,錯誤為 [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/zh-TW/errors#marketplace-name-is-another-spelling-of-a-reserved-name),而已在其中一個下註冊的 marketplace 停止載入。此檢查需要 Claude Code v2.1.280 或更新版本。

52* **Claude Code 用於不來自 marketplace 的外掛程式的名稱**:`inline` 用於使用 [`--plugin-dir`](/docs/zh-TW/cli-reference) 載入的外掛程式,`builtin` 用於內建外掛程式,`skills-dir` 用於從 [`.claude/skills/`](/docs/zh-TW/skills) 自動載入的外掛程式,`synced` 用於從您的 claude.ai 帳戶同步的外掛程式。`claude-plugin-test` 也被保留。`skills-dir` 也在 `strictKnownMarketplaces` 和 `blockedMarketplaces` 中顯示為 `{"source": "skills-dir"}`,在 [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists) 下描述。52* **Claude Code 用於不來自 marketplace 的外掛程式的名稱**:`inline` 用於使用 [`--plugin-dir`](/docs/zh-TW/cli-reference) 載入的外掛程式,`builtin` 用於內建外掛程式,`skills-dir` 用於從 [`.claude/skills/`](/docs/zh-TW/skills) 自動載入的外掛程式,`synced` 用於從您的 claude.ai 帳戶同步的外掛程式。`claude-plugin-test` 也被保留。`skills-dir` 也在 `strictKnownMarketplaces` 和 `blockedMarketplaces` 中顯示為 `{"source": "skills-dir"}`,在 [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists) 下描述。

53* **`npm`、`pip`、`uv`、`cargo`、`github` 和 `gh`**:以任何大小寫保留。此檢查需要 Claude Code v2.1.275 或更新版本。53* **`npm`、`pip`、`uv`、`cargo`、`github` 和 `gh`**:以任何大小寫保留。此檢查需要 Claude Code v2.1.275 或更新版本。

54* **每個 JavaScript 物件都具有的成員名稱**:`constructor`、`hasOwnProperty`、`isPrototypeOf`、`propertyIsEnumerable`、`toLocaleString`、`toString` 和 `valueOf`。`claude plugin marketplace add` 會拒絕使用其中之一的 marketplace,錯誤為 [`Claude Code reserves this name and cannot register a marketplace under it`](/docs/zh-TW/plugins/troubleshooting#claude-code-reserves-this-name)。此檢查需要 Claude Code v2.1.296 或更新版本。

54* **以 `claudeai-` 開頭的名稱**:為託管在 claude.ai 上的 marketplace 保留。`claude plugin marketplace add` 拒絕任何其他使用一個的 marketplace,錯誤為 `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`。55* **以 `claudeai-` 開頭的名稱**:為託管在 claude.ai 上的 marketplace 保留。`claude plugin marketplace add` 拒絕任何其他使用一個的 marketplace,錯誤為 `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`。

55* **已註冊 GitHub marketplace 的下載資料夾 `<owner>-<repo>`**:對於從 `github` 來源(例如 `acme/x-tools`)新增的 marketplace,無論該 marketplace 本身的 `name` 為何,Claude Code 都會透過名為 `acme-x-tools` 的資料夾下載它。當該 marketplace 以 `acme-x-tools` 以外的名稱註冊時,`claude plugin marketplace add` 會在下載另一個名為 `acme-x-tools` 的 marketplace 後拒絕它,並報告 `Can't use the marketplace name "acme-x-tools"`。此檢查需要 Claude Code v2.1.290 或更新版本。56* **已註冊 GitHub marketplace 的下載資料夾 `<owner>-<repo>`**:對於從 `github` 來源(例如 `acme/x-tools`)新增的 marketplace,無論該 marketplace 本身的 `name` 為何,Claude Code 都會透過名為 `acme-x-tools` 的資料夾下載它。當該 marketplace 以 `acme-x-tools` 以外的名稱註冊時,`claude plugin marketplace add` 會在下載另一個名為 `acme-x-tools` 的 marketplace 後拒絕它,並報告 `Can't use the marketplace name "acme-x-tools"`。此檢查需要 Claude Code v2.1.290 或更新版本。

56 57 

Details

68* **防護保護您管理的內容。** 使用者的 mod 無法更改您的受管 hooks 接收或決定的內容、系統提示、您的受管 `CLAUDE.md` 和其他受管指示、任何 mod 讀取的設定內容,或您的受管 MCP 伺服器的工具和描述。68* **防護保護您管理的內容。** 使用者的 mod 無法更改您的受管 hooks 接收或決定的內容、系統提示、您的受管 `CLAUDE.md` 和其他受管指示、任何 mod 讀取的設定內容,或您的受管 MCP 伺服器的工具和描述。

69* **允許所有其他內容。** 防護不添加其他限制。使用者的 mod 仍然可以讀取和寫入檔案、啟動程序、發出網路請求、重寫工具呼叫和提示、拒絕工具呼叫、批准否則會提示的呼叫,以及在介面中繪製,所有這些都具有該使用者的權限。69* **允許所有其他內容。** 防護不添加其他限制。使用者的 mod 仍然可以讀取和寫入檔案、啟動程序、發出網路請求、重寫工具呼叫和提示、拒絕工具呼叫、批准否則會提示的呼叫,以及在介面中繪製,所有這些都具有該使用者的權限。

70* **拒絕規則和您的受管 hook 優先。** 防護載入的地方,使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,無論哪個設定檔持有該規則。來自受管設定中 `PreToolUse` hook 的封鎖也是最終的。兩者都適用於 Claude 的工具呼叫。兩者都不適用於 mod 自己的 [`$.fs` 和 `$.process` 呼叫](/docs/zh-TW/plugins/mods/api#reach-files-processes-and-the-network):拒絕 `Read(.env)` 後,mod 仍然可以使用 `$.fs.read` 讀取該檔案或啟動執行該操作的程式。若要限制這些呼叫,請防止 mod 載入或在[政策 mod](#enforce-a-policy-with-a-mod-of-your-own) 中處理呼叫。70* **拒絕規則和您的受管 hook 優先。** 防護載入的地方,使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,無論哪個設定檔持有該規則。來自受管設定中 `PreToolUse` hook 的封鎖也是最終的。兩者都適用於 Claude 的工具呼叫。兩者都不適用於 mod 自己的 [`$.fs` 和 `$.process` 呼叫](/docs/zh-TW/plugins/mods/api#reach-files-processes-and-the-network):拒絕 `Read(.env)` 後,mod 仍然可以使用 `$.fs.read` 讀取該檔案或啟動執行該操作的程式。若要限制這些呼叫,請防止 mod 載入或在[政策 mod](#enforce-a-policy-with-a-mod-of-your-own) 中處理呼叫。

71* **其他權限檢查可以被覆蓋。** 批准工具呼叫的使用者 mod 可以批准 `ask` 規則會提示的呼叫,或受管設定外的 `PreToolUse` hook 阻止的呼叫。在自動模式下,mod 批准的呼叫執行時不進行分類器檢查。71* **其他權限檢查可以被覆寫。** 核准工具呼叫的使用者 mod 可以核准 `ask` 規則會提示確認的呼叫,或受管設定外的 `PreToolUse` hook 所封鎖的呼叫。在自動模式下,mod 核准的呼叫執行時不進行分類器檢查。如需了解 mod 的 `tool.check` 核准不會略過的提示,請參閱[使用 hook 擴充權限](/docs/zh-TW/permissions#extend-permissions-with-hooks)。

72 72 

73防護的來源在 [Claude Code 儲存庫的 `mods/sec-default` 目錄](https://github.com/anthropics/claude-code/tree/main/mods/sec-default)中是公開的。73防護的來源在 [Claude Code 儲存庫的 `mods/sec-default` 目錄](https://github.com/anthropics/claude-code/tree/main/mods/sec-default)中是公開的。

74 74 


81* **設定 hooks 保持有效。** 設定檔和外掛程式 `hooks/hooks.json` 中的命令、HTTP、提示和代理 hooks 像以前一樣執行,與 mods 並行。它們沒有任何內容已棄用。81* **設定 hooks 保持有效。** 設定檔和外掛程式 `hooks/hooks.json` 中的命令、HTTP、提示和代理 hooks 像以前一樣執行,與 mods 並行。它們沒有任何內容已棄用。

82* **拒絕規則在防護載入的地方優先。** 使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,除非您設定 [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard)。82* **拒絕規則在防護載入的地方優先。** 使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,除非您設定 [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard)。

83* **受管 hooks 首先執行。** 受管設定中的 `PreToolUse` hook 在任何 mod 看到工具呼叫之前執行,其塊是最終的。如果 mod 隨後重寫呼叫,您的受管 hooks 在重寫的呼叫上再次執行,因此塊仍然適用。來自其他設定檔和外掛程式的 `PreToolUse` hooks 在最後一個 mod 之後執行,因此返回自己結果代替執行工具的 mod 會防止這些執行。請參閱 [mods 執行的順序](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)。83* **受管 hooks 首先執行。** 受管設定中的 `PreToolUse` hook 在任何 mod 看到工具呼叫之前執行,其塊是最終的。如果 mod 隨後重寫呼叫,您的受管 hooks 在重寫的呼叫上再次執行,因此塊仍然適用。來自其他設定檔和外掛程式的 `PreToolUse` hooks 在最後一個 mod 之後執行,因此返回自己結果代替執行工具的 mod 會防止這些執行。請參閱 [mods 執行的順序](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)。

84* **網路政策涵蓋 `$.http.fetch`。** 如果您的組織關閉網路擷取,或工作階段關閉非必要網路流量,Claude Code 會拒絕 mod 使用 `$.http.fetch` 發出的網路請求。該政策不涵蓋 mod 使用 `$.process.run` 啟動的程式。該程式使用使用者自己的存取權限到達網路。84* **網路政策涵蓋 `$.http.fetch`。**

85 

86 * **您組織的政策不允許 WebFetch**:Claude Code 也會拒絕每個 mod 的 `$.http.fetch` 請求。請參閱 [WebFetch 可用性](/docs/zh-TW/tools-reference#webfetch-availability)。

87 * **您設定了 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/zh-TW/env-vars)**:您或您的使用者安裝的 mod 仍然可以發出這些請求。此變數只會阻止 [Claude Code 內建的 mod](/docs/zh-TW/plugins/mods/overview#mods-built-into-claude-code),以及任何攜帶工作階段 Anthropic 憑證的 `$.http.fetch` 請求。在 v2.1.288 之前,此變數會阻止每個 mod 的 `$.http.fetch` 請求。

88 

89 兩者都不涵蓋 mod 使用 `$.process.run` 啟動的程式,該程式會以使用者自己的存取權限連上網路。

85* **外掛程式控制涵蓋 mods。** Mod 是外掛程式,因此[限制使用者可以安裝的設定](/docs/zh-TW/plugins/org#restrict-what-users-can-install)(例如 `strictKnownMarketplaces`)決定是否可以安裝它。90* **外掛程式控制涵蓋 mods。** Mod 是外掛程式,因此[限制使用者可以安裝的設定](/docs/zh-TW/plugins/org#restrict-what-users-can-install)(例如 `strictKnownMarketplaces`)決定是否可以安裝它。

86* **Mods 無法更改權限提示。** Mod 可以重新設定 Claude Code 介面的大部分,但不能重新設定權限提示,因此無法更改提示顯示的內容。Mod 仍然可以在提示出現之前批准或拒絕工具呼叫,如[了解預設情況下會發生什麼](#know-what-happens-by-default)所述。91* **Mods 無法更改權限提示。** Mod 可以重新設定 Claude Code 介面的大部分,但不能重新設定權限提示,因此無法更改提示顯示的內容。Mod 仍然可以在提示出現之前批准或拒絕工具呼叫,如[了解預設情況下會發生什麼](#know-what-happens-by-default)所述。

87* **信任提示優先。** 在使用者尚未信任的目錄中的互動工作階段中,在他們回答信任提示之前,沒有 mod 載入。92* **信任提示優先。** 在使用者尚未信任的目錄中的互動工作階段中,在他們回答信任提示之前,沒有 mod 載入。

Details

303| `$.session` | `messages()` 將逐字稿傳回為 `{ role, text, toolUses }` 的列表。也是工作目錄、模型等。[`usage()`](/docs/zh-TW/plugins/mods/reference#mods-api-methods) 傳回上下文視窗使用和計畫限制。 |303| `$.session` | `messages()` 將逐字稿傳回為 `{ role, text, toolUses }` 的列表。也是工作目錄、模型等。[`usage()`](/docs/zh-TW/plugins/mods/reference#mods-api-methods) 傳回上下文視窗使用和計畫限制。 |

304| `$.mcp` | `call` 連接的 MCP 伺服器上的工具 |304| `$.mcp` | `call` 連接的 MCP 伺服器上的工具 |

305 305 

306檔案和程序有幾個自己的規則:306檔案、程序和請求有幾個自己的規則:

307 307 

308* **路徑**:相對路徑會相對於工作階段的工作目錄解析308* **路徑**:相對路徑會相對於工作階段的工作目錄解析,或相對於該 hook 正在處理其事件的 subagent 的工作目錄解析

309* **`$.fs.list`**:將一個目錄的項目傳回為 `{ name, kind, size, isLink }`,不會遞迴309* **`$.fs.list`**:將一個目錄的項目傳回為 `{ name, kind, size, isLink }`,不會遞迴

310* **`$.process.run`**:採用引數列表,不使用 shell。無論退出碼如何,它都解析為 `{ exitCode, stdout, stderr }`。如果程式無法啟動或在逾時時仍在執行,它會拒絕,預設為 30 秒,因此將其包裝在 `try` 和 `catch` 中。310* **`$.process.run`**:採用引數列表,不使用 shell。無論退出碼如何,它都解析為 `{ exitCode, stdout, stderr }`。如果程式無法啟動或在逾時時仍在執行,它會拒絕,預設為 30 秒,因此將其包裝在 `try` 和 `catch` 中。

311* **`$.http.fetch`**:最多追蹤五次重新導向。當重新導向至不同的來源時,它只會保留您設定的 `accept`、`accept-language`、`content-type` 和 `user-agent` 請求標頭,並捨棄其餘標頭,因此依賴其他標頭(例如 `Authorization`)的請求可能會在該重新導向之後失敗。[限制](/docs/zh-TW/plugins/mods/reference#limits)列出了它的逾時和本文大小。

311 312 

312這些呼叫中的每一個本身都是一個事件,以其命名空間和方法命名,不帶 `$.`,例如 `$.fs.read` 的 `fs.read`。鏈中[較早的](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in) mod 可以觀察、重寫或拒絕您的呼叫,這是組織限制 mod 到達的方式。313這些呼叫中的每一個本身都是一個事件,以其命名空間和方法命名,不帶 `$.`,例如 `$.fs.read` 的 `fs.read`。鏈中[較早的](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in) mod 可以觀察、重寫或拒絕您的呼叫,這是組織限制 mod 到達的方式。

313 314 

Details

148| `agent.offer` | subagent 類型提供給 Claude 時 | 以 `{ isOffered: false }` 保留不提供 |148| `agent.offer` | subagent 類型提供給 Claude 時 | 以 `{ isOffered: false }` 保留不提供 |

149| `agent.spawn` | subagent 或 [agent team](/docs/zh-TW/agent-teams) 隊員即將啟動時。對於隊員,`e.isTeammate` 為 `true`。 | 以 `next({ ...e, model })` 選擇其模型,或 `{ deny: reason }` |149| `agent.spawn` | subagent 或 [agent team](/docs/zh-TW/agent-teams) 隊員即將啟動時。對於隊員,`e.isTeammate` 為 `true`。 | 以 `next({ ...e, model })` 選擇其模型,或 `{ deny: reason }` |

150 150 

151當 Claude 使用 [`SendMessage`](/docs/zh-TW/sub-agents#resume-subagents) 工具恢復 subagent 時,您的 `agent.spawn` hook 不會再次執行。若要拒絕恢復 subagent 的 `SendMessage` 呼叫,請在 [`tool.call`](/docs/zh-TW/plugins/mods/events#guard-or-change-a-tool-call) hook 中比對該工具。

152 

151<h3 id="interface">153<h3 id="interface">

152 介面154 介面

153</h3>155</h3>


175| [`plugin.register`](/docs/zh-TW/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | hook 模組即將載入時。`e.uses` 列出其事件、mods API 呼叫、環境變數與狀態,與 `claude plugin validate` 印出的內容相同。每個呼叫都不含 `$.` 前綴,例如 `fs.read`。 | `{ refuse: reason }` |177| [`plugin.register`](/docs/zh-TW/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | hook 模組即將載入時。`e.uses` 列出其事件、mods API 呼叫、環境變數與狀態,與 `claude plugin validate` 印出的內容相同。每個呼叫都不含 `$.` 前綴,例如 `fs.read`。 | `{ refuse: reason }` |

176| `engine.create` | 正在為此 mod 建置 mods API 時 | 變更後的 mods API,用以新增命名空間。`user` [層級](#the-hook-function)以外的 mod 也可以保留不提供某個命名空間。 |178| `engine.create` | 正在為此 mod 建置 mods API 時 | 變更後的 mods API,用以新增命名空間。`user` [層級](#the-hook-function)以外的 mod 也可以保留不提供某個命名空間。 |

177 179 

180當其他 mod 的 hook 呼叫您在 `engine.create` 中新增之命名空間上的方法時,您的方法所發出的 `$` 呼叫會在該 hook 的上下文中執行,直到該事件上的每個 hook 都回傳為止。例如,相對路徑會以該 hook 的工作目錄為基準解析,而在回合正等待該 hook 時,`$.prompt.submit` 會被拒絕。在那之後您的方法所發出的呼叫,則會在您的 mod 自己的上下文中執行。

181 

178<h3 id="telemetry">182<h3 id="telemetry">

179 遙測183 遙測

180</h3>184</h3>


317| `$.process.run` 逾時 | 預設 30 秒,最多 10 分鐘 |321| `$.process.run` 逾時 | 預設 30 秒,最多 10 分鐘 |

318| `$.model.complete` `maxTokens` | 預設 1024,最多 64,000 或模型的輸出上限 |322| `$.model.complete` `maxTokens` | 預設 1024,最多 64,000 或模型的輸出上限 |

319| `$.fs.read` 與 `$.fs.write` | 單一檔案 4 MiB |323| `$.fs.read` 與 `$.fs.write` | 單一檔案 4 MiB |

324| `$.http.fetch` 請求本文 | 4 MiB,以字元計算。本文較大的呼叫會被拒絕。 |

325| `$.http.fetch` 回應本文 | 4 MiB。`text` 保存前 4 MiB,其餘部分不會被讀取。當 `Content-Length` 標頭宣告的大小超過此值時,呼叫會改為被拒絕,原因以 `is over the 4194304-byte limit` 結尾,但經過任何重新導向後的最後一個請求使用 `HEAD` 方法時除外。`HEAD` 豁免需要 Claude Code v2.1.296 或更新版本。 |

326| 單一 `$.http.fetch` 呼叫,包含重新導向與本文 | 30 秒 |

327| 單一 `$.http.fetch` 呼叫會跟隨的重新導向次數 | 5 |

320| hook 的 `drop` 原因或 `config.set` `deny` 原因 | 4,096 個字元。較長原因的結尾會被截斷,drop 或 deny 仍會生效。截斷需要 Claude Code v2.1.292 或更新版本,在較早的版本中,hook 則會改為[失敗](/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails)。 |328| hook 的 `drop` 原因或 `config.set` `deny` 原因 | 4,096 個字元。較長原因的結尾會被截斷,drop 或 deny 仍會生效。截斷需要 Claude Code v2.1.292 或更新版本,在較早的版本中,hook 則會改為[失敗](/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails)。 |

321| 單一樹狀結構中的文字 | 只繪製前 100,000 個字元 |329| 單一樹狀結構中的文字 | 只繪製前 100,000 個字元 |

322| `Code` 的 `language` 或 `path`、`Select` 選項的 `value`,或 `Client` 的 `module` | 10,000 個字元。若其中任一項較長,Claude Code 會[自行繪製該位置的版本](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)。 |330| `Code` 的 `language` 或 `path`、`Select` 選項的 `value`,或 `Client` 的 `module` | 10,000 個字元。若其中任一項較長,Claude Code 會[自行繪製該位置的版本](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)。 |

Details

78| `disableAllHooks in managed settings` | 您的組織關閉了已安裝 plugin 的 hooks |78| `disableAllHooks in managed settings` | 您的組織關閉了已安裝 plugin 的 hooks |

79| `only managed plugins and built-in plugins run` | 設定了 `allowManagedHooksOnly`,或在受管設定以外的設定檔中設定了 `disableAllHooks` |79| `only managed plugins and built-in plugins run` | 設定了 `allowManagedHooksOnly`,或在受管設定以外的設定檔中設定了 `disableAllHooks` |

80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | 您使用 `--bare` 啟動了 Claude Code |80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | 您使用 `--bare` 啟動了 Claude Code |

81| `another plugin of that name loads first` | 兩個 plugin 共享一個名稱。使用受管的或首先載入的。 |81| `another plugin of that name loads first` | 另一個已啟用的外掛與您的 mod 同名,並[佔有該名稱](/docs/zh-TW/plugins/loading#hooks-when-two-enabled-plugins-share-a-name),因此您的 hook 模組不會載入 |

82 82 

83<h3 id="messages-from-the-built-in-guard">83<h3 id="messages-from-the-built-in-guard">

84 來自內建防護的訊息84 來自內建防護的訊息


191 191 

192在 v2.1.292 之前,該呼叫會執行第二次,因此提示詞會被提交兩次、命令會被執行兩次,或 subagent 會被啟動兩次。192在 v2.1.292 之前,該呼叫會執行第二次,因此提示詞會被提交兩次、命令會被執行兩次,或 subagent 會被啟動兩次。

193 193 

194<h3 id="$-agent-register-refused-the-hooks-module-that-made-the-call-is-no-longer-loaded">

195 `$.agent.register refused: the hooks module that made the call is no longer loaded`

196</h3>

197 

198該行以您的 mod 名稱開頭,例如 `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`,且該 agent 不會被註冊。您的 mod 在此呼叫之前已被重新載入或卸載。重新載入會載入 hook 模組的新副本,而此呼叫來自仍在舊副本中執行的程式碼,例如尚未返回的 hook。

199 

200如果該 hook 未捕捉此拒絕,它會失敗,Claude Code 會[跳過它](#hook-skipped)。若要讓保持載入的副本註冊該 agent,請在您的 [`session.start`](/docs/zh-TW/plugins/mods/reference#session) hook 中進行呼叫,該 hook 會在重新載入後於每個新副本中再次執行。

201 

194<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">202<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

195 `mods that run in the hooks worker are off for this session`203 `mods that run in the hooks worker are off for this session`

196</h3>204</h3>

Details

256 256 

257在 v2.1.295 之前,Claude Code 會將此範例中的新增回報為成功。257在 v2.1.295 之前,Claude Code 會將此範例中的新增回報為成功。

258 258 

259<h3 id="claude-code-reserves-this-name">

260 `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it`

261</h3>

262 

263您新增了市集,而其 `marketplace.json` 中的 [`name`](/docs/zh-TW/plugins/marketplace-reference#top-level-fields) 是每個 JavaScript 物件都具有的成員名稱之一,例如 `constructor`、`toString` 或 `valueOf`。Claude Code 保留這些名稱,因此會拒絕此新增,且不會註冊任何內容。[保留名稱](/docs/zh-TW/plugins/marketplace-reference#reserved-names) 列出了這些名稱。

264 

265在此範例中,市集名為 `constructor`:

266 

267```text theme={null}

268Cannot add marketplace "constructor": Claude Code reserves this name and cannot register a marketplace under it. The name is set by "name" in the marketplace's marketplace.json; ask its maintainer to change it.

269```

270 

271如果設定檔在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 下宣告該市集,Claude Code 在啟動時嘗試新增它也會以相同方式失敗,且此訊息會出現在 `/plugin` 中的 **Errors** 標籤上。

272 

273為市集取另一個名稱,然後再次新增:

274 

275* **您擁有市集**:變更 `marketplace.json` 中的 `name`

276* **其他人託管它**:請所有者變更名稱

277 

278在 v2.1.296 之前,新增此類市集會因內部錯誤而失敗,而不是顯示此訊息。

279 

259<h3 id="ssh-authentication-failed-or-https-authentication-failed">280<h3 id="ssh-authentication-failed-or-https-authentication-failed">

260 `SSH authentication failed` or `HTTPS authentication failed`281 `SSH authentication failed` or `HTTPS authentication failed`

261</h3>282</h3>


907 Hook loads but never fires928 Hook loads but never fires

908</h4>929</h4>

909 930 

910如果 hook 載入無錯誤但永遠不會觸發,請檢查其定義,然後觀看它執行:931如果 hook 載入無錯誤但從未觸發,請先在您的工作階段中執行 `/plugin` 並開啟該外掛程式的詳細資訊。若其中有一則以 `Its hooks.json hooks do not run` 開頭的註記,表示另一個同名的已啟用外掛程式改為註冊了它的 hook,而 [當兩個已啟用的外掛程式同名時的 hook](/docs/zh-TW/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) 說明了是哪一個副本以及如何切換。否則,請檢查 hook 的定義,然後觀察它的執行:

911 932 

912<Steps>933<Steps>

913 <Step title="檢查事件名稱">934 <Step title="檢查事件名稱">

routines.md +3 −3

Details

86 </Step>86 </Step>

87 87 

88 <Step title="選擇儲存庫">88 <Step title="選擇儲存庫">

89 為 Claude 新增一個或多個 GitHub 儲存庫以在其中工作。每個儲存庫在執行開始時被複製,從預設分支開始。Claude 為其變更建立 `claude/` 前綴的分支。89 為 Claude 新增一個或多個 GitHub 儲存庫以在其中工作。每個儲存庫在執行開始時被複製。Claude 為其變更建立 `claude/` 前綴的分支。

90 </Step>90 </Step>

91 91 

92 <Step title="選擇環境">92 <Step title="選擇環境">


359 存儲庫和分支權限359 存儲庫和分支權限

360</h3>360</h3>

361 361 

362例行程序需要 GitHub 存取權限來複製存儲庫。當您使用 `/schedule` 從 CLI 建立例行程序時,Claude 檢查您的帳戶是否具有您執行它的存儲庫的 GitHub 存取權限,如果沒有,則新增一個設定注記,說明如何授予它。請參閱 [GitHub authentication options](/docs/zh-TW/claude-code-on-the-web#github-authentication-options) 以了解授予存取權限的兩種方式。362Routine 需要 GitHub 存取權限才能複製儲存庫。當您在 CLI 中使用 `/schedule` 建立 routine 時,Claude 會檢查您的帳戶是否具有執行該指令所在儲存庫的 GitHub 存取權限;若沒有,則會新增一則設定說明,指出如何授予權限。請參閱 [GitHub 身分驗證選項](/docs/zh-TW/claude-code-on-the-web#github-authentication-options)以了解授予存取權限的兩種方式。在 Team 和 Enterprise 方案中,必須由您 Claude 組織的[擁有者](/docs/zh-TW/server-managed-settings#access-control)先開啟各個方式,您才能使用;請參閱[連接 GitHub](/docs/zh-TW/web-quickstart#connect-github)。

363 363 

364如果您的 GitHub 連線在運行到期時遺失或過期,例行程序會跳過運行,最多 72 小時。在該時間窗口內重新連接 GitHub,例行程序會自動恢復。72 小時後仍未連接,例行程序會關閉,您在重新連接 GitHub 後將其重新打開。364如果您的 GitHub 連線在運行到期時遺失或過期,例行程序會跳過運行,最多 72 小時。在該時間窗口內重新連接 GitHub,例行程序會自動恢復。72 小時後仍未連接,例行程序會關閉,您在重新連接 GitHub 後將其重新打開。

365 365 

366您新增的每個存儲庫在每次運行時都會被複製。Claude 從存儲庫的預設分支開始,除非您的提示另有指定。366您新增的每個儲存庫在每次執行時都會被複製。除非提示詞另有指定,否則 Claude 會從儲存庫的預設分支開始。如果執行是由 [GitHub pull request 事件](#add-a-github-trigger)觸發,且該 pull request 的儲存庫是 routine 中的第一個儲存庫,則該儲存庫會改為從 pull request 的 head 提交開始。

367 367 

368除非您的提示詞指示 Claude 推送到其他分支,否則 Claude 會將其工作推送到以 `claude/` 為前綴的分支。若要控制執行可以推送到哪些分支,請在 GitHub 上使用分支保護規則或規則集。對於在 Anthropic 管理的基礎設施上進行的執行,以及透過 [Anthropic 的 git 代理伺服器](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy)推送的自行託管執行,GitHub 會將這些規則套用於您所連線的 GitHub 存取權限,因此該存取權限可以略過的規則不會阻擋執行的推送。使用您的部署所提供之 git 憑證進行推送的自行託管執行,則會依照那些憑證進行檢查。請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)。368除非您的提示詞指示 Claude 推送到其他分支,否則 Claude 會將其工作推送到以 `claude/` 為前綴的分支。若要控制執行可以推送到哪些分支,請在 GitHub 上使用分支保護規則或規則集。對於在 Anthropic 管理的基礎設施上進行的執行,以及透過 [Anthropic 的 git 代理伺服器](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy)推送的自行託管執行,GitHub 會將這些規則套用於您所連線的 GitHub 存取權限,因此該存取權限可以略過的規則不會阻擋執行的推送。使用您的部署所提供之 git 憑證進行推送的自行託管執行,則會依照那些憑證進行檢查。請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)。

369 369 

sandboxing.md +1 −0

Details

203* 以[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)為目標的 `rm` 或 `rmdir` 命令仍會經過一般的權限流程203* 以[關鍵路徑](/docs/zh-TW/permission-modes#critical-paths)為目標的 `rm` 或 `rmdir` 命令仍會經過一般的權限流程

204* 以內容為範圍的[詢問規則](/docs/zh-TW/permissions)(例如 `Bash(git push *)`)即使對沙箱化命令仍會強制提示204* 以內容為範圍的[詢問規則](/docs/zh-TW/permissions)(例如 `Bash(git push *)`)即使對沙箱化命令仍會強制提示

205* 單純的 `Bash` 詢問規則,或等效的 `Bash(*)` 形式,對於以沙箱方式執行的命令會被略過;對於退回一般權限流程的命令則仍然適用。在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中,該規則不會被略過:它也會對沙箱化命令(包括唯讀命令)提示205* 單純的 `Bash` 詢問規則,或等效的 `Bash(*)` 形式,對於以沙箱方式執行的命令會被略過;對於退回一般權限流程的命令則仍然適用。在 [plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中,該規則不會被略過:它也會對沙箱化命令(包括唯讀命令)提示

206* [Monitor 工具](/docs/zh-TW/tools-reference#monitor-tool)的命令不會自動核准,但仍會在沙箱中執行。若要略過提示,請新增與該命令相符的[允許規則](/docs/zh-TW/permissions#bash),例如 `Bash(npm run *)`

206 207 

207<Info>208<Info>

208 Auto-allow 模式獨立於您的權限模式設定運作,但有三個例外:[plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)、帶有[每個命令允許網域](#per-command-allowed-domains-in-auto-mode)的自動模式命令,以及自動模式中對沙箱化命令的[伺服器端分類器審查](/docs/zh-TW/permission-modes#how-the-classifier-evaluates-actions)。即使您不在「accept edits」模式中,啟用 auto-allow 時沙箱化的 Bash 命令也會自動執行。這表示在沙箱邊界內修改檔案的 Bash 命令會在不提示的情況下執行,即使在檔案編輯工具會提示的 Manual 模式中也是如此。209 Auto-allow 模式獨立於您的權限模式設定運作,但有三個例外:[plan mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)、帶有[每個命令允許網域](#per-command-allowed-domains-in-auto-mode)的自動模式命令,以及自動模式中對沙箱化命令的[伺服器端分類器審查](/docs/zh-TW/permission-modes#how-the-classifier-evaluates-actions)。即使您不在「accept edits」模式中,啟用 auto-allow 時沙箱化的 Bash 命令也會自動執行。這表示在沙箱邊界內修改檔案的 Bash 命令會在不提示的情況下執行,即使在檔案編輯工具會提示的 Manual 模式中也是如此。

Details

132執行器及其工作階段進行多種出站連接,不需要來自 Anthropic 的入站連接:132執行器及其工作階段進行多種出站連接,不需要來自 Anthropic 的入站連接:

133 133 

134* **控制平面**:執行器輪詢 `api.anthropic.com` 以獲取工作並發佈設定進度和失敗事件,全部出站 HTTPS。輪詢充當執行器的心跳。134* **控制平面**:執行器輪詢 `api.anthropic.com` 以獲取工作並發佈設定進度和失敗事件,全部出站 HTTPS。輪詢充當執行器的心跳。

135* **SCM 連接器**:可選的協調器 [SCM 連接器](/docs/zh-TW/self-hosted-environments-reference#scm-connector-flags) 隧道是唯一的 WebSocket 連接。135* **Git**:執行器透過 HTTPS 或 SSH 從您的 git 主機複製和推送,使用您的部署提供的憑證進行身份驗證。請參閱[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git) 以了解各種選項,包括每個工作階段鑄造的憑證。使用 [Anthropic git 代理伺服器](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy)時,github.com 上儲存庫的 git 流量會改為經由 `api.anthropic.com`。

136* **Git**:執行器透過 HTTPS 或 SSH 從您的 git 主機複製和推送,使用您的部署提供的認證進行身份驗證;[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git) 涵蓋了各種選項,包括每個工作階段鑄造的認證和 [Anthropic git 代理](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy),它透過 `api.anthropic.com` 路由 git。136* **工作階段子程序**:子 Claude Code 程序持有工作階段到 `api.anthropic.com` 的事件串流,並為模型推理和工作階段期間執行的 git 命令進行自己的出站呼叫。在使用 [Anthropic 管理的 git](/docs/zh-TW/self-hosted-environments-deploy#use-the-anthropic-git-proxy) 的工作階段中,子程序會透過它開啟到 `api.anthropic.com` 的 WebSocket 連接,傳送其針對 github.com 的 `git` 和 `gh` 流量。

137* **工作階段子程序**:子 Claude Code 程序持有工作階段的事件流到 `api.anthropic.com`,並為模型推理和工作階段期間執行的 git 命令進行自己的出站呼叫。請參閱[網路需求](/docs/zh-TW/self-hosted-environments-deploy#network-requirements)以取得完整的出站清單。[上面的圖表](#how-self-hosted-environments-work)顯示了這些路徑,除了可選的 SCM 連接器。137* **SCM 連接器**:可選的協調器 [SCM 連接器](/docs/zh-TW/self-hosted-environments-reference#scm-connector-flags)無法使用,因此其隧道不會開啟。該隧道是到 `api.anthropic.com` 的 WebSocket 連接。

138 

139請參閱[網路需求](/docs/zh-TW/self-hosted-environments-deploy#network-requirements)以取得完整的出站清單。[上面的圖表](#how-self-hosted-environments-work)顯示了這些路徑,除了可選的 SCM 連接器和 Anthropic 管理的 git 連接。

138 140 

139預設情況下,模型推理使用 Anthropic API。控制平面將 API 端點傳遞給每個工作階段,工作階段使用 Anthropic 發行的、工作階段範圍的 OAuth token 進行身份驗證。若要改為將模型請求傳送到您自己的雲端帳戶,請參閱[將模型請求傳送到 Bedrock 或 Agent Platform](/docs/zh-TW/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform)。141預設情況下,模型推理使用 Anthropic API。控制平面將 API 端點傳遞給每個工作階段,工作階段使用 Anthropic 發行的、工作階段範圍的 OAuth token 進行身份驗證。若要改為將模型請求傳送到您自己的雲端帳戶,請參閱[將模型請求傳送到 Bedrock 或 Agent Platform](/docs/zh-TW/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform)。

140 142 

Details

31| 變數 | 說明 |31| 變數 | 說明 |

32| :- | :- |32| :- | :- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 工作階段 JWT,前綴為 `sk-ant-cc-`。其 `act` 聲明識別工作階段建立者,並在建立的使用介面有記錄時包含建立者的電子郵件。該值是生成時的 token;重新整理會透過子程序的 stdin 到達,因此包裝指令碼只會看到初始值。請參閱[驗證工作階段身分](/docs/zh-TW/self-hosted-environments-identity)。 |33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 工作階段 JWT,前綴為 `sk-ant-cc-`。其 `act` 聲明識別工作階段建立者,並在建立的使用介面有記錄時包含建立者的電子郵件。該值是生成時的 token;重新整理會透過子程序的 stdin 到達,因此包裝指令碼只會看到初始值。請參閱[驗證工作階段身分](/docs/zh-TW/self-hosted-environments-identity)。 |

34| `CCR_SESSION_ACCOUNT_EMAIL` | 工作階段建立者的電子郵件,由執行器從 token 的 `act.email` 聲明中預先提取,未經簽章驗證。適合用於標籤,例如提交尾註。當電子郵件限制憑證發行時,請改為驗證 token 並從中讀取聲明;請參閱[佈建限定於工作階段建立者的憑證](#provision-credentials-scoped-to-the-session-creator)。當 token 不包含建立者電子郵件時未設定。請視為個人可識別資訊。 |34| `CCR_SESSION_ACCOUNT_EMAIL` | 工作階段建立者的電子郵件,由執行器從 token 的 `act.email` 聲明中預先提取,未經簽章驗證。適合用於標籤,例如提交尾註。當電子郵件限制憑證發行時,請改為驗證 token 並從中讀取聲明。請參閱[佈建限定於工作階段建立者的憑證](#provision-credentials-scoped-to-the-session-creator)。當 token 不包含建立者電子郵件時未設定,例如由您組織的服務身分建立的工作階段。請視為個人可識別資訊。 |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app`、`ios`、`claude_code_cli` 或 `scheduled_trigger`。Anthropic 在工作階段建立時記錄該值一次,因此包裝指令碼和每個生命週期 hook 都會看到相同的值。僅將其用於採用分析和標籤,不要用作授權訊號。當工作階段沒有已記錄或可識別的使用介面時未設定,因此在 `set -u` 下請以 `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` 參照它。需要 Claude Code v2.1.229 或更新版本。 |35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app`、`ios`、`claude_code_cli` 或 `scheduled_trigger`。Anthropic 在工作階段建立時記錄該值一次,因此包裝指令碼和每個生命週期 hook 都會看到相同的值。僅將其用於採用分析和標籤,不要用作授權訊號。當工作階段沒有已記錄或可識別的使用介面時未設定。需要 Claude Code v2.1.229 或更新版本。 |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | 執行器自己的 Claude Code 二進位檔案的絕對路徑。以 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 結束您的包裝指令碼,以移交給固定的二進位檔案,而無需硬編碼安裝路徑。 |36| `CLAUDE_RUNNER_CLAUDE_BIN` | 執行器自己的 Claude Code 二進位檔案的絕對路徑。以 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 結束您的包裝指令碼,以移交給固定的二進位檔案,而無需硬編碼安裝路徑。 |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | 標記形式為 `cse_...` 的工作階段 ID。這與[生命週期 hook](#lifecycle-hooks) 以 `CLAUDE_RUNNER_SESSION_ID`(`session_...` 形式)看到的是相同工作階段;UUID 變數在兩者之間相符,將 `cse_` 前綴替換為 `session_` 會產生工作階段 URL 中顯示的 ID。 |37| `CLAUDE_CODE_REMOTE_SESSION_ID` | 標記形式為 `cse_...` 的工作階段 ID。這與[生命週期 hook](#lifecycle-hooks) 以 `CLAUDE_RUNNER_SESSION_ID`(`session_...` 形式)看到的是相同工作階段;UUID 變數在兩者之間相符,將 `cse_` 前綴替換為 `session_` 會產生工作階段 URL 中顯示的 ID。 |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | 標準 UUID 形式的相同工作階段 ID,適用於以 UUID 為鍵的系統。 |38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | 標準 UUID 形式的相同工作階段 ID,適用於以 UUID 為鍵的系統。 |

39| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | 對於屬於某個 Slack 討論串的 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段,為該討論串的連結。其他工作階段不會設定此變數,討論串工作階段也可能未設定。 |

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | 對於屬於某個 Slack 討論串的 Claude Tag 工作階段,為該討論串的 Slack 時間戳記,例如 `1700000000.000100`。可能未設定,且可能在 `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 未設定時已設定,因此請分別檢查每個變數。 |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 保存目前工作階段 JWT 的每個工作階段檔案的絕對路徑,在 token 重新整理時保持最新。Shell 子程序在下載使用者新增到工作階段的附件時從中讀取其 `Authorization` 標頭。`exec` 會自動保留該變數;重建子程序環境的包裝指令碼必須帶上該變數,否則附件下載會無聲地停止運作。 |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 保存目前工作階段 JWT 的每個工作階段檔案的絕對路徑,在 token 重新整理時保持最新。Shell 子程序在下載使用者新增到工作階段的附件時從中讀取其 `Authorization` 標頭。`exec` 會自動保留該變數;重建子程序環境的包裝指令碼必須帶上該變數,否則附件下載會無聲地停止運作。 |

40| `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)。 |

41| `ANTHROPIC_BASE_URL` | 子程序將使用的 API 基礎 URL,由控制平面按工作階段傳遞,通常為 `https://api.anthropic.com`。不要覆寫它:工作階段的推理憑證是 Anthropic 發行的 OAuth token,其他提供者不接受。 |43| `ANTHROPIC_BASE_URL` | 子程序將使用的 API 基礎 URL,由控制平面按工作階段傳遞,通常為 `https://api.anthropic.com`。不要覆寫它:工作階段的推理憑證是 Anthropic 發行的 OAuth token,其他提供者不接受。 |


43 45 

44包裝指令碼也會繼承子程序的其餘受管環境,包括任何伺服器提供的環境變數。`exec` 會自動傳播所有內容;如果您的包裝指令碼以另一種方式生成子程序,請轉發完整環境。46包裝指令碼也會繼承子程序的其餘受管環境,包括任何伺服器提供的環境變數。`exec` 會自動傳播所有內容;如果您的包裝指令碼以另一種方式生成子程序,請轉發完整環境。

45 47 

48`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 和 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` 會傳到您的包裝指令碼或 [`command` hook](#command)。它們也會傳到工作階段執行的內容,例如 shell 命令、git hook 和 Claude Code hook。`checkout`、`post-session` 和 `spawn-runner` hook 不會收到它們。

49 

50<h3 id="give-a-default-to-variables-that-can-be-unset">

51 為可能未設定的變數提供預設值

52</h3>

53 

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 

56在 shell 展開 Slack 討論串連結的任何地方,請採取以下預防措施:

57 

58* **為其加上引號**:連結可能包含 shell 會處理的字元,例如 `?` 和 `&`,因此請為變數加上引號,如 `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`。

59* **不要將其值放入 `eval` 和 `sh -c` 字串中**:不要將其值代入 `eval` 或 `sh -c` 執行的字串,即使在引號內也不行。請改為讓該字串參照變數。

60 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">61<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 保持 stdin 和檔案描述符 3 連接62 保持 stdin 和檔案描述符 3 連接

48</h3>63</h3>

49 64 

50子程序的 stdin 是執行器的控制通道。token 輪換和工作階段結束訊號會在其上到達。執行器也會在檔案描述符 3 上開啟一個管道,並從中讀取子程序的活動訊號以驅動閒置和啟動逾時。單純的 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 會自動保留兩者。65子程序的 stdin 是執行器的控制通道。token 輪換和工作階段結束訊號會在其上到達。執行器也會在檔案描述符 3 上開啟一個管道,並從中讀取子程序的活動訊號以驅動閒置和啟動逾時。單純的 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 會自動保留兩者。

51 66 

52如果您的包裝指令碼使用單獨的 `&` 在背景中執行子程序,它會切斷子程序的 stdin:工作階段看起來健康,直到初始 OAuth token 大約 30 分鐘的生命週期過期,然後每個 API 呼叫都會失敗,並出現 `401 authentication_error`。如果您的包裝指令碼必須在背景中執行子程序,例如為了讓拆卸 trap 保持作用,請將 stdin 儲存在檔案描述符 4 或更高的編號上,並明確重新連接它:67如果您的包裝指令碼使用單獨的 `&` 在背景中執行子程序,它會切斷子程序的 stdin。工作階段看起來健康,直到初始 OAuth token 大約 30 分鐘的生命週期過期,然後每個使用該 token 的 API 呼叫都會失敗,並出現 `401 authentication_error`。如果您的包裝指令碼必須在背景中執行子程序,例如為了讓拆卸 trap 保持作用,請將 stdin 儲存在檔案描述符 4 或更高的編號上,並明確重新連接它:

53 68 

54```bash theme={null}69```bash theme={null}

55exec 4<&070exec 4<&0


59wait "$CHILD"74wait "$CHILD"

60```75```

61 76 

62不要在包裝指令碼中關閉或重複使用檔案描述符 3。重新導向子程序的 stdout 和 stderr 是可以的。77您可以重新導向子程序的 stdout。請保持檔案描述符 3 和 stderr 連接到執行器:

78 

79* **檔案描述符 3**:將子程序的活動訊號傳送給執行器。不要在包裝指令碼中關閉或重複使用它。

80* **stderr**:當包裝指令碼或子程序以非零狀態退出時,執行器會將 stderr 的最後幾行張貼到工作階段,並在自己的日誌中印出。工作階段的使用者會看到這些行,因此不要將祕密印到 stderr,並在部署包裝指令碼前移除 `set -x`。如果您重新導向 stderr,工作階段仍會執行,但執行器只會以退出碼回報失敗。

63 81 

64<h3 id="pass-the-system-prompt-flags-through">82<h3 id="pass-the-system-prompt-flags-through">

65 傳遞系統提示詞旗標83 傳遞系統提示詞旗標


108 checkout126 checkout

109</h3>127</h3>

110 128 

111每個儲存庫執行一次,取代執行器內建的複製與擷取。使用此 hook 從直讀式鏡像複製、從封存檔植入工作樹,或套用每個工作階段的 git 身分驗證。執行器會設定下列變數,也可能設定表格未列出的其他 `CLAUDE_RUNNER_` 變數:129每個儲存庫執行一次,取代執行器內建的複製與擷取。使用此 hook 從您透過 HTTPS 或 SSH 存取的直讀式鏡像複製、從封存檔植入工作樹,或套用每個工作階段的 git 身分驗證。執行器會設定下列變數,也可能設定表格未列出的其他 `CLAUDE_RUNNER_` 變數:

112 130 

113| 變數 | 說明 |131| 變數 | 說明 |

114| :- | :- |132| :- | :- |

115| `CLAUDE_RUNNER_REPO_URL` | 要複製的儲存庫 URL,在應用任何 `--git-host-rewrite` 和 `--git-ssh-rewrite` 之後 |133| `CLAUDE_RUNNER_REPO_URL` | 要複製的儲存庫 URL,在應用任何 `--git-host-rewrite` 和 `--git-ssh-rewrite` 之後 |

116| `CLAUDE_RUNNER_REPO_REF` | 要簽出的修訂版本:分支、標籤或提交 SHA,如會話要求的那樣。空表示儲存庫的預設分支。 |134| `CLAUDE_RUNNER_REPO_REF` | 要簽出的修訂版本,依工作階段的要求而定:分支、標籤、提交 SHA,或完整參照名稱,例如 `refs/pull/<number>/head`。空值表示儲存庫的預設分支。 |

117| `CLAUDE_RUNNER_CHECKOUT_PATH` | 工作樹必須留下的絕對路徑 |135| `CLAUDE_RUNNER_CHECKOUT_PATH` | 工作樹必須留下的絕對路徑 |

118| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |136| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |

119| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |137| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |

120| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |138| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |

121| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立會話的用戶端表面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當會話沒有記錄或識別的表面時未設定。 |139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` 參照它。需要 Claude Code v2.1.229 或更新版本。 |

122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |

123| `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 或更新版本。 |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 或更新版本。 |

124 142 

125指令碼必須在 `CLAUDE_RUNNER_CHECKOUT_PATH` 留下一個工作樹,簽出在要求的修訂版本。分離的 HEAD 是可以的;執行器在頂部建立會話的工作分支。執行器之後驗證路徑包含 `.git`;如果您的掛鉤具體化非 git 來源(例如 Perforce 或解包的 tarball),請在執行器的環境中設定 `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` 以跳過該檢查。基於 Git 的流程(例如工作分支建立和推送結果)需要 git 簽出,因此使用 [`post-session` 掛鉤](#post-session)從非 git 樹匯出結果。143指令碼必須在 `CLAUDE_RUNNER_CHECKOUT_PATH` 留下一個簽出於所要求修訂版本的工作樹。分離的 HEAD 也可以,因為執行器會在其上建立工作階段的工作分支。

126 144 

127執行器不會將 git 認證傳遞給掛鉤。相反,從會話的身份鑄造每個會話的複製認證:根據[驗證來自您的服務的權杖](/docs/zh-TW/self-hosted-environments-identity#verify-the-token-from-your-service)中所述,使用標準 JWT 庫針對 `CLAUDE_RUNNER_API_BASE_URL` 下的 JWKS 端點驗證 `CLAUDE_CODE_SESSION_ACCESS_TOKEN`,然後讓您的認證服務為權杖的 `act` 聲明中的身份發行短期複製認證。`CLAUDE_RUNNER_CLAUDE_BIN` 未在簽出掛鉤環境中設定,因此 `decode-token` 子命令在此不可用。回退到主機已有的任何 git 驗證(例如 SSH 代理、認證助手或 `.netrc`)也是一個選項。145在您的 hook 返回後,執行器會驗證 `CLAUDE_RUNNER_CHECKOUT_PATH` 包含 `.git`。如果您的 hook 具體化的是非 git 來源(例如 Perforce 或解開的 tarball),請在執行器的環境中設定 `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` 以略過該檢查。基於 Git 的流程(例如建立工作分支與推送結果)需要 git 簽出,因此請使用 [`post-session` hook](#post-session) 從非 git 樹匯出結果。

128 146 

129當掛鉤以非零狀態退出,或以 0 退出而沒有在後面留下可用的簽出時,執行器執行的操作取決於儲存庫:147<h4 id="get-git-credentials-in-the-hook">

148 在 hook 中取得 git 憑證

149</h4>

130 150 

131* **會話推送結果的儲存庫**:執行器失敗會話,在非零退出時將指令碼的 stderr 尾部呈現給使用者。151執行器不會將 git 憑證傳遞給 hook。`decode-token` 子命令在此也無法使用,因為 `CLAUDE_RUNNER_CLAUDE_BIN` 未在 checkout hook 環境中設定。請改為從工作階段的身分產生每個工作階段的複製憑證,或退而使用主機本身的 git 身分驗證:

132* **會話只從中讀取的儲存庫**,例如新增到執行中會話的儲存庫:執行器記錄帶有失敗詳細資訊的 `[runner:warn]` 行,向會話發佈 `Skipped` 步驟,移除掛鉤在簽出路徑留下的任何內容,並繼續處理其餘儲存庫。當執行器無法立即移除路徑時,它會在會話結束時重試移除。如果跳過使會話完全沒有儲存庫,執行器仍然會失敗會話。

133 152 

134在 v2.1.228 之前,執行器在任何儲存庫的掛鉤失敗時失敗會話,因此掛鉤無法提供的唯讀儲存庫在會話在每個新執行器上恢復時再次失敗會話。153* **每個工作階段的複製憑證**:依照[從您的服務驗證 token](/docs/zh-TW/self-hosted-environments-identity#verify-the-token-from-your-service)所述,使用標準 JWT 函式庫,針對 `CLAUDE_RUNNER_API_BASE_URL` 下的 JWKS 端點驗證 `CLAUDE_CODE_SESSION_ACCESS_TOKEN`。接著讓您的憑證服務為 token 的 `act` 宣告中的身分核發短期複製憑證。請以 `act.sub` 作為該憑證的識別鍵,且不要要求 `act.email`。

154* **主機 git 身分驗證**:使用主機已有的任何 git 身分驗證,例如 SSH agent、憑證輔助程式或 `.netrc`。

135 155 

136執行器在會話結束後移除簽出路徑。156<h4 id="when-the-hook-fails">

157 hook 失敗時

158</h4>

159 

160當 hook 以非零狀態結束,或以 0 結束卻未留下可用的簽出時,即視為 hook 失敗:

161 

162* **會話推送結果的儲存庫**:執行器失敗會話,在非零退出時將指令碼的 stderr 尾部呈現給使用者。

163* **工作階段只會讀取的儲存庫**,例如新增到執行中工作階段的儲存庫:執行器會記錄一行帶有失敗詳細資訊的 `[runner:warn]`,向工作階段發佈 `Skipped` 步驟,移除 hook 在簽出路徑留下的任何內容,並繼續處理其餘儲存庫。如果略過後工作階段完全沒有任何儲存庫,執行器仍會使工作階段失敗。

164 

165當 hook 成功時,執行器會在工作階段結束後移除簽出路徑。

137 166 

138<h3 id="post-session">167<h3 id="post-session">

139 post-session168 post-session


151| `CLAUDE_RUNNER_WORKSPACE_PATHS` | 會話工作樹的冒號分隔絕對路徑。零儲存庫會話為空。 |180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | 會話工作樹的冒號分隔絕對路徑。零儲存庫會話為空。 |

152| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | 會話的偵錯日誌的路徑,在掛鉤執行時仍在磁碟上 |181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | 會話的偵錯日誌的路徑,在掛鉤執行時仍在磁碟上 |

153| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |182| `CLAUDE_RUNNER_API_BASE_URL` | 用於會話範圍呼叫的 Anthropic API 基礎 URL |

154| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立會話的用戶端表面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當會話沒有記錄或識別的表面時未設定。需要 Claude Code v2.1.229 或更新版本。 |183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端使用介面,例如 `web_claude_ai`、`desktop_app` 或 `ios`。當工作階段沒有已記錄或可辨識的使用介面時不會設定,因此在 `set -u` 下請以 `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` 參照它。需要 Claude Code v2.1.229 或更新版本。 |

155| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | 會話存取權杖,用於會話範圍的 API 呼叫 |

156| `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 或更新版本。 |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 或更新版本。 |

157 186 

158`CLAUDE_RUNNER_EXIT_REASON` 採用四個值之一:187`CLAUDE_RUNNER_EXIT_REASON` 採用四個值之一:

159 188 

160* `completed`:會話乾淨地結束。Claude Code 程序正常退出,或會話在仍在執行時被存檔或刪除。189* `completed`:工作階段正常結束。Claude Code 程序正常結束,或在工作階段被封存或刪除後自行結束。

161* `failed`:Claude Code 程序崩潰,或在它啟動後設定失敗。190* `failed`:Claude Code 程序崩潰,或在它啟動後設定失敗。

162* `interrupted`:執行器停止了會話。它釋放會話以釋放插槽、會話在啟動時逾時、伺服器將會話移出此執行器、執行器正在排水,或會話超過其 [`--kill-session-after-min`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 限制。191* `interrupted`:執行器停止了工作階段,屬於下列其中一種情況:

192 * 執行器釋放工作階段以空出插槽。

193 * 工作階段在啟動時逾時。

194 * 伺服器將工作階段移出此執行器。

195 * 執行器的輪詢在程序結束前察覺到封存或刪除。

196 * 執行器正在排空。

197 * 工作階段超過其 [`--kill-session-after-min`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 限制。

163* `abandoned`:保留給另一個執行器聲稱的會話。掛鉤目前在該情況下不觸發。198* `abandoned`:保留給另一個執行器聲稱的會話。掛鉤目前在該情況下不觸發。

164 199 

165[會話生命週期計數器](/docs/zh-TW/self-hosted-environments-reference#session-lifecycle-counter-semantics)將釋放、啟動逾時和伺服器移動計為 `completed` 而不是 `interrupted`,因為執行器乾淨地交回了插槽。如果您將掛鉤收據與計數器進行比較,請預期該差異。200如果您將 hook 收到的結果與[工作階段生命週期計數器](/docs/zh-TW/self-hosted-environments-reference#session-lifecycle-counter-semantics)進行比較,請預期部分 `interrupted` 結果在計數器中會被計為 `completed`。計數器會將釋放、啟動逾時、伺服器移動,以及由執行器輪詢先察覺到的封存或刪除計為 `completed`,因為執行器已乾淨地交回插槽。

166 201 

167掛鉤的結束狀態永遠不會影響會話結果;失敗被記錄並忽略。執行器在每個會話結束(包括執行器關閉)時等待最多 `--post-session-hook-timeout-sec`(預設 60 秒)。此範例將未提交的工作保存到救援分支:202掛鉤的結束狀態永遠不會影響會話結果;失敗被記錄並忽略。執行器在每個會話結束(包括執行器關閉)時等待最多 `--post-session-hook-timeout-sec`(預設 60 秒)。此範例將未提交的工作保存到救援分支:

168 203 

169```bash theme={null}204```bash theme={null}

170#!/usr/bin/env bash205#!/usr/bin/env bash

171set -u206set -u

207export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}

172IFS=':'208IFS=':'

173# -c overrides beat repo-local settings, blocking session-written fsmonitor,209# -c overrides beat repo-local settings, blocking session-written fsmonitor,

174# hook-path, and gpg-program config from executing code with the hook's210# hook-path, and gpg-program config from executing code with the hook's

175# privileges. -c commit.gpgsign=false also leaves these rescue commits211# privileges. -c commit.gpgsign=false also leaves these rescue commits

176# unsigned under --configure-git.212# unsigned under --configure-git.

177# Repo-local credential.helper and pushurl still apply, and on a runner213# Repo-local credential.helper and pushurl still apply, and on a runner

178# before v2.1.280 so does core.sshCommand; if the hook holds credentials214# before v2.1.280 so does core.sshCommand; see the note below the script

179# the session didn't, see the note below the script.215# before you give this push a credential.

180g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \216g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

181 -c commit.gpgsign=false "$@"; }217 -c commit.gpgsign=false "$@"; }

182for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do218for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do


188done224done

189```225```

190 226 

191hook 會使用執行器主機上其自身環境中可用的任何 git 憑證進行推送。在[映像中不含憑證的做法](/docs/zh-TW/self-hosted-environments-deploy#configure-git)下,包括內建複製經由 Anthropic git 代理伺服器進行時,都不會有任何憑證,因此請在推送前於 hook 內產生短期推送憑證:將 hook 在 `CLAUDE_CODE_SESSION_ACCESS_TOKEN` 中收到的工作階段 token 與您自己的 token 服務交換,並依照[驗證工作階段身分](/docs/zh-TW/self-hosted-environments-identity)所述進行驗證。當 hook 持有工作階段所沒有的憑證時,請將 `origin` 替換為由操作人員提供的 URL,並傳遞 `-c credential.helper=` 加上您自己的輔助程式。[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)說明了工作階段寫入的設定仍可能影響哪些部分。227指令碼中的 `GIT_ALLOW_PROTOCOL` 這一行將 git 限制為 HTTPS、HTTP 與 SSH 遠端。如果執行器的環境已自行設定非空的 `GIT_ALLOW_PROTOCOL` 清單,指令碼會保留該清單。

228 

229hook 會使用執行器主機上其自身環境中可用的任何 git 憑證進行推送。在[映像中不含憑證的做法](/docs/zh-TW/self-hosted-environments-deploy#configure-git)下,包括內建複製經由 Anthropic git 代理伺服器進行時,都不會有任何憑證,因此請在推送前於 hook 內產生短期推送憑證:將 hook 在 `CLAUDE_CODE_SESSION_ACCESS_TOKEN` 中收到的工作階段 token 與您自己的 token 服務交換,並依照[驗證工作階段身分](/docs/zh-TW/self-hosted-environments-identity)所述進行驗證。

230 

231請將您的 hook 提供給 git 的任何憑證都視為工作階段能夠取得的憑證,並在產生時將其權限限制為僅足以完成此次推送。您 hook 中的 git 會讀取工作階段可寫入的設定檔,而其中任一檔案所指定的憑證輔助程式或篩選驅動程式,會以您 hook 的權限執行。無論您指定哪個遠端,這些檔案中的設定也可能改變推送的目的地。關於執行器在您 hook 中固定的 git 設定,以及交由這些檔案決定的設定,請參閱[生命週期 hook 內的 Git 設定](#git-configuration-inside-lifecycle-hooks)。

192 232 

193<h4 id="hook-timing-when-the-runner-releases-a-session">233<h4 id="hook-timing-when-the-runner-releases-a-session">

194 執行器釋放會話時的掛鉤計時234 執行器釋放會話時的掛鉤計時


264| `CLAUDE_RUNNER_ORDER_ID` | 不透明的冪等性金鑰,每個啟動請求唯一,對 Kubernetes 資源名稱安全。將其用作您的佈建程式的去重金鑰。 |304| `CLAUDE_RUNNER_ORDER_ID` | 不透明的冪等性金鑰,每個啟動請求唯一,對 Kubernetes 資源名稱安全。將其用作您的佈建程式的去重金鑰。 |

265| `CLAUDE_RUNNER_SESSION_ID` | 此請求所針對的工作階段。它在每次重新請求工作階段時重複,因此將其用於記錄和路由,而不是作為去重金鑰。對於預熱請求為空,預熱請求會在設定 [`--min-idle`](/docs/zh-TW/self-hosted-environments-reference#orchestrator-cli-flags) 時在任何特定工作階段之前啟動待命執行器,因此不要假設變數已設定。 |305| `CLAUDE_RUNNER_SESSION_ID` | 此請求所針對的工作階段。它在每次重新請求工作階段時重複,因此將其用於記錄和路由,而不是作為去重金鑰。對於預熱請求為空,預熱請求會在設定 [`--min-idle`](/docs/zh-TW/self-hosted-environments-reference#orchestrator-cli-flags) 時在任何特定工作階段之前啟動待命執行器,因此不要假設變數已設定。 |

266| `CLAUDE_RUNNER_SESSION_UUID` | 相同的工作階段 ID,採用規範 UUID 形式。對於預熱請求為空。 |306| `CLAUDE_RUNNER_SESSION_UUID` | 相同的工作階段 ID,採用規範 UUID 形式。對於預熱請求為空。 |

267| `CLAUDE_RUNNER_ATTEMPT` | 此工作階段已有多少個啟動請求。對於預熱請求為 `0`。 |307| `CLAUDE_RUNNER_ATTEMPT` | 用於記錄的每個工作階段計數器。它不是重試次數,也不是請求次數。對於預熱請求為 `0`,但針對某個工作階段的請求也可能帶有 `0`。 |

268| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | 來自輪詢回應的 HTTP `Date` 標頭的伺服器時間。當 hook 驗證工作單 JWT 的 `exp` 時,請與此值進行比較,而不是本地時鐘,以容許時間偏差。當閘道省略標頭時為空。 |308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | 來自輪詢回應的 HTTP `Date` 標頭的伺服器時間。當 hook 驗證工作單 JWT 的 `exp` 時,請與此值進行比較,而不是本地時鐘,以容許時間偏差。當閘道省略標頭時為空。 |

269| `CLAUDE_RUNNER_POOL_ID` | 新執行器應加入的環境的 ID,採用 `ccpool_...` 形式 |309| `CLAUDE_RUNNER_POOL_ID` | 新執行器應加入的環境的 ID,採用 `ccpool_...` 形式 |

270| `CLAUDE_RUNNER_ACCOUNT_ID` | 排隊工作階段的帳戶的標記 ID,用於按帳戶路由、配額或退款。不可用時為空,Claude Tag 頻道工作階段始終為空,這些工作階段沒有帳戶排隊。 |310| `CLAUDE_RUNNER_ACCOUNT_ID` | 排隊工作階段的帳戶的標記 ID,用於按帳戶路由、配額或退款。不可用時為空,Claude Tag 頻道工作階段始終為空,這些工作階段沒有帳戶排隊。 |

271| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | 排隊工作階段的帳戶的電子郵件。不可用時為空。將電子郵件視為個人可識別資訊,不要記錄它。 |311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | 排隊工作階段的帳戶的電子郵件。不可用時為空。將電子郵件視為個人可識別資訊,不要記錄它。 |

272| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | 工作階段的第一個 git 來源的 URL,用於路由到預先準備了該儲存庫的執行器。工作階段沒有 git 來源時為空。 |312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | 工作階段的第一個 git 來源的 URL,用於路由到預先準備了該儲存庫的執行器。工作階段沒有 git 來源時為空。 |

273| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | 工作階段的第一個 git 來源的修訂版本:分支、SHA 或標籤。未指定時為空。 |313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | 工作階段的第一個 git 來源的修訂版本:分支、SHA、標籤或完整參照名稱。未指定時為空。 |

274| `CLAUDE_RUNNER_REPO_SOURCES` | 所有工作階段的 git 來源的 `{url, revision}` 的 JSON 陣列,用於在次要儲存庫上路由的 hook。沒有來源時為空。 |314| `CLAUDE_RUNNER_REPO_SOURCES` | 所有工作階段的 git 來源的 `{url, revision}` 的 JSON 陣列,用於在次要儲存庫上路由的 hook。沒有來源時為空。 |

275| `CLAUDE_RUNNER_CORRELATION_ID` | 在工作階段建立時提供的相關 ID,回顯以便 hook 可以將此工作單對應到建立工作階段的請求。工作階段沒有時為空。 |315| `CLAUDE_RUNNER_CORRELATION_ID` | 在工作階段建立時提供的相關 ID,回顯以便 hook 可以將此工作單對應到建立工作階段的請求。工作階段沒有時為空。 |

276| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端表面,例如 `web_claude_ai`、`desktop_app`、`ios` 或 `scheduled_trigger`,用於採用分析。當工作階段沒有記錄或識別的表面時未設定,對於預熱請求也未設定;使用 `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]` 檢查它,在 `set -u` 下保持安全。 |316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 建立工作階段的用戶端表面,例如 `web_claude_ai`、`desktop_app`、`ios` 或 `scheduled_trigger`,用於採用分析。當工作階段沒有記錄或識別的表面時未設定,對於預熱請求也未設定;使用 `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]` 檢查它,在 `set -u` 下保持安全。 |


282* **在啟動的執行器上使用 `--capacity 1`**:工作階段綁定的工作單恰好註冊一個綁定到該工作階段的執行器,因此更高的容量會新增永遠不會接收工作的插槽,執行器在啟動時會記錄警告。322* **在啟動的執行器上使用 `--capacity 1`**:工作階段綁定的工作單恰好註冊一個綁定到該工作階段的執行器,因此更高的容量會新增永遠不會接收工作的插槽,執行器在啟動時會記錄警告。

283* **預熱工作單註冊未綁定**:待命執行器未綁定到工作階段,並像固定群組執行器一樣聲稱已排隊的工作。323* **預熱工作單註冊未綁定**:待命執行器未綁定到工作階段,並像固定群組執行器一樣聲稱已排隊的工作。

284 324 

285合約有四個佈建程式無關的規則:325無論您的 hook 在哪個平台上佈建,合約都有四條規則:

286 326 

2871. **在 `CLAUDE_RUNNER_ORDER_ID` 上保持冪等性。** 重新傳遞相同的請求最多必須啟動一個執行器。從 ID 衍生確定性資源名稱,並讓您的平台拒絕重複項。不要改為在 `CLAUDE_RUNNER_SESSION_ID` 上進行金鑰設定。每次重新請求工作階段都會使用相同的工作階段 ID 和新的訂單 ID,因此按工作階段 ID 命名或去重的工作負載會為該工作階段建立一次,之後永遠不會再建立。3271. **在 `CLAUDE_RUNNER_ORDER_ID` 上保持冪等性。** 重新傳遞相同的請求最多必須啟動一個執行器。從 ID 衍生確定性資源名稱,並讓您的平台拒絕重複項。不要改為在 `CLAUDE_RUNNER_SESSION_ID` 上進行金鑰設定。每次重新請求工作階段都會使用相同的工作階段 ID 和新的訂單 ID,因此按工作階段 ID 命名或去重的工作負載會為該工作階段建立一次,之後永遠不會再建立。

2882. **不要重試工作負載。** 一個訂單 ID 最多意味著建立一個工作負載。如果執行器永遠不註冊,Anthropic 會在 `--expected-spawn-seconds` 後使用新的訂單 ID 重新請求。3282. **不要重試工作負載。** 一個訂單 ID 最多意味著建立一個工作負載。如果執行器永遠不註冊,Anthropic 會在 `--expected-spawn-seconds` 後使用新的訂單 ID 重新請求。

2893. **使用退出代碼合約。** 退出 0 表示已提交。退出 1 表示可重試的失敗;工作階段退避並被重新提供。退出 2 或更高表示不可重試;工作階段被阻止再次啟動,直到 [Owner](/docs/zh-TW/cloud-environments#organization-shared-environments) 在環境的 **Activity** 標籤中選擇 **Retry**。在非零退出時,hook 的 stderr 的尾部會作為失敗原因出現在那裡,因此將可操作的錯誤寫入 stderr,永遠不要寫入祕密。對於預熱請求,沒有工作階段失敗:協調器只在本地記錄非零退出,伺服器在租約後重新請求啟動。3293. **使用退出碼合約。** 以符合結果的狀態退出:

2904. **將 `--expected-spawn-seconds` 設定為至少您的 p99 啟動時間。** 這是伺服器端租約。所有協調器副本必須使用相同的值。330 

331 * **退出 0**:已提交。

332 * **退出 1**:可重試的失敗。工作階段會退避並被重新提供。

333 * **退出 2 或更高**:不可重試的失敗。工作階段會被阻止再次啟動,直到使用者向其傳送新訊息,或 [Owner](/docs/zh-TW/cloud-environments#organization-shared-environments) 在環境的 **Activity** 標籤中對其選擇 **Retry**。

334 

335 在非零退出時,hook 的 stderr 的尾部會作為失敗原因出現在 **Activity** 標籤中,因此將可操作的錯誤寫入 stderr,且永遠不要將祕密寫入其中。在 shell hook 中,請[保持暫時性失敗可重試](#keep-transient-failures-retryable-in-a-shell-hook)。

336 

337 預熱請求沒有可失敗的工作階段:協調器只在本地記錄非零退出,伺服器會在 `--expected-spawn-seconds` 租約到期後重新請求啟動。

3384. **將 `--expected-spawn-seconds` 設定為至少您從啟動請求到執行器註冊的 p99 時間。** 從協調器收到啟動請求時開始計算,並包含在您的平台上等待容量的時間以及啟動時間。此值是伺服器端租約,工作單會隨之過期,因此工作負載耗時更長的執行器將無法註冊。所有協調器副本必須使用相同的值。

291 339 

292hook 寫入 stdout 或 stderr 的所有內容都會出現在協調器的日誌中,認證會自動編輯。如果工作階段保持排隊,請檢查協調器的 `/healthz` 主體以取得佇列計數,然後在 [**Cloud environments** 管理頁面](https://claude.ai/admin-settings/cloud-environments) 上開啟您環境的 **Activity** 標籤:在那裡展開失敗的工作階段以查看其啟動錯誤,並選擇 **Retry** 以重新請求它。340hook 寫入 stdout 或 stderr 的所有內容都會出現在協調器的日誌中,認證會自動編輯。如果工作階段保持排隊,請檢查協調器的 `/healthz` 主體以取得佇列計數,然後在 [**Cloud environments** 管理頁面](https://claude.ai/admin-settings/cloud-environments) 上開啟您環境的 **Activity** 標籤:在那裡展開失敗的工作階段以查看其啟動錯誤,並選擇 **Retry** 以重新請求它。

293 341 

294保持排隊且在 **Activity** 標籤中沒有啟動錯誤的工作階段可能意味著 hook 是在工作階段 ID 上進行金鑰設定的。若要確認,請檢查您的平台是否有該工作階段的第一個啟動請求的工作負載,以及沒有重新請求的工作負載。如果是這樣,請改為在 `CLAUDE_RUNNER_ORDER_ID` 上進行工作負載金鑰設定。342保持排隊且在 **Activity** 標籤中沒有啟動錯誤的工作階段可能意味著 hook 是在工作階段 ID 上進行金鑰設定的。若要確認,請檢查您的平台是否有該工作階段的第一個啟動請求的工作負載,以及沒有重新請求的工作負載。如果是這樣,請改為在 `CLAUDE_RUNNER_ORDER_ID` 上進行工作負載金鑰設定。

295 343 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 在 shell hook 中保持暫時性失敗可重試

346</h4>

347 

348在使用 `set -e` 的 shell hook 中,原本重試即可排除的失敗可能會阻止工作階段。hook 會在失敗的命令處停止,並以該命令本身的狀態退出,而協調器會對該狀態套用退出碼合約。許多失敗會回傳 2 或更高的狀態,例如命令未安裝時的 `127`,以及 `curl --fail` 遇到 HTTP 錯誤時的 `22`,因此它們會在第一次失敗時就阻止工作階段。

349 

350已被 hook 阻止的工作階段會保持阻止狀態,直到使用者向其傳送新訊息,或 [Owner](/docs/zh-TW/cloud-environments#organization-shared-environments) 在環境的 **Activity** 標籤中對其選擇 **Retry**。

351 

352若要將此類失敗改為退出 1,請將以下幾行直接放在 hook 的 `#!` 行下方,位於任何可能失敗的內容之前:

353 

354```bash theme={null}

355set -e

356PERMANENT=; permanent() { printf '%s\n' "$*" >&2; PERMANENT=1; exit 2; }

357trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

358```

359 

360這幾行會改變 hook 其餘部分的行為,因此加入後,請檢查 hook 中是否有以下每種模式:

361 

362* **單獨的 `exit 2` 或更高**:設定 trap 後,它會變成退出 1。對於任何重試都無法修正的錯誤,請改為以原因呼叫 `permanent`,例如 `permanent "namespace claude-runners does not exist"`。請在主 shell 中呼叫它,不要在 `$( )`、`( )` 或管線中呼叫。

363* **`exec`**:不要以 `exec` 開始 hook 的最後一個命令,因為 `exec` 會取代 shell,trap 將不會執行。

364* **第二個 `EXIT` trap**:第二個 `trap ... EXIT` 會取代第一個,因此請將兩者合併為單一 trap。將您的清理命令直接放在 `rc=$?;` 之後,並在每個命令結尾加上 `|| true;`。如此一來,清理在失敗和成功時都會執行,且失敗的清理命令不會設定 hook 的退出狀態。以下合併後的 trap 展示了其形式,其中 `your-cleanup-command` 代表您自己的命令:

365 

366 ```bash theme={null}

367 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

368 ```

369* **允許失敗的命令**:如果 hook 之前未使用 `set -e`,它現在會在第一個回傳非零的命令處停止,例如找不到任何結果的查詢,或被您的平台拒絕的重複提交。如果 hook 會根據結果採取動作,請將該命令作為 `if` 的條件。如果它忽略結果,請在該命令後加上 `|| true`。

370 

371若要確認 trap 是否正常運作,請在 `trap` 行正下方新增一行,呼叫一個不存在的命令,例如 `no-such-command`。從您的 shell 執行 hook 檔案,確認 `echo $?` 輸出 `1`,然後移除該行。

372 

296<h2 id="send-model-requests-to-bedrock-or-agent-platform">373<h2 id="send-model-requests-to-bedrock-or-agent-platform">

297 將模型請求傳送至 Bedrock 或 Agent Platform374 將模型請求傳送至 Bedrock 或 Agent Platform

298</h2>375</h2>


381將模型請求傳送至 Amazon Bedrock 或 Google Cloud 的 Agent Platform 的工作階段,與 Anthropic API 上的工作階段有以下差異:458將模型請求傳送至 Amazon Bedrock 或 Google Cloud 的 Agent Platform 的工作階段,與 Anthropic API 上的工作階段有以下差異:

382 459 

383* **來自 claude.ai 的政策**:[伺服器管理設定](/docs/zh-TW/server-managed-settings)不會傳達至這些工作階段。Owner 在 Claude Code 管理設定中設定的組織政策也不會傳達,因此 Claude Code 不會在工作階段內強制執行這些政策。請將您所依賴的規則放入 runner 映像檔的[受管設定檔案](/docs/zh-TW/managed-settings#delivery-mechanisms)中。460* **來自 claude.ai 的政策**:[伺服器管理設定](/docs/zh-TW/server-managed-settings)不會傳達至這些工作階段。Owner 在 Claude Code 管理設定中設定的組織政策也不會傳達,因此 Claude Code 不會在工作階段內強制執行這些政策。請將您所依賴的規則放入 runner 映像檔的[受管設定檔案](/docs/zh-TW/managed-settings#delivery-mechanisms)中。

461* **帳戶 skill**:這些工作階段不會下載使用者的 claude.ai 帳戶所啟用的 skill。請參閱[每個工作階段的設定如何組成](#how-each-session’s-config-is-assembled)。

384* **檔案**:使用者在 claude.ai 或行動裝置或桌面應用程式中附加至工作階段的檔案不會傳達至工作階段,且 Claude 無法使用 [`SendUserFile` 工具](/docs/zh-TW/tools-reference)回傳檔案。請改將輸入檔案放在儲存庫中或 runner 上。462* **檔案**:使用者在 claude.ai 或行動裝置或桌面應用程式中附加至工作階段的檔案不會傳達至工作階段,且 Claude 無法使用 [`SendUserFile` 工具](/docs/zh-TW/tools-reference)回傳檔案。請改將輸入檔案放在儲存庫中或 runner 上。

385* **模型選擇**:Anthropic 的控制平面會傳送每個工作階段的模型,當工作階段在沒有指定模型的情況下啟動時,Claude Code 會使用該供應商的預設模型。Runner 會從其傳遞給工作階段的環境中移除 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_MODEL`。供應商頁面的範例會設定 `ANTHROPIC_MODEL`,但在 runner 的環境中,這兩個變數都沒有任何作用。[Amazon Bedrock](/docs/zh-TW/amazon-bedrock#4-pin-model-versions) 和 [Agent Platform](/docs/zh-TW/google-vertex-ai#5-pin-model-versions) 的「固定模型版本」中的各模型系列變數確實會傳達至工作階段。這些變數決定的是 `opus` 等別名解析為哪個模型,而非完整模型 ID 解析為哪個模型。463* **模型選擇**:Anthropic 的控制平面會傳送每個工作階段的模型,當工作階段在沒有指定模型的情況下啟動時,Claude Code 會使用該供應商的預設模型。您無法透過 runner 環境中的 `ANTHROPIC_MODEL` 或 `ANTHROPIC_DEFAULT_MODEL` 選擇模型,但可以固定別名所解析的目標:

464 * **`ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_MODEL`**:即使供應商頁面的範例會設定 `ANTHROPIC_MODEL`,runner 仍會從其傳遞給工作階段的環境中移除這兩個變數。

465 * **各模型系列的固定變數**:[Amazon Bedrock](/docs/zh-TW/amazon-bedrock#4-pin-model-versions) 和 [Agent Platform](/docs/zh-TW/google-vertex-ai#5-pin-model-versions) 的「固定模型版本」中的變數確實會傳達至工作階段。這些變數決定的是 `opus` 等別名解析為哪個模型,而非完整模型 ID 解析為哪個模型。

386* **您的帳戶未提供的模型**:工作階段可能會在某則訊息上失敗,並出現指出該模型名稱的錯誤。請啟用您的開發人員可以選擇的模型、「固定模型版本」中所述的背景模型,以及[自動模式](/docs/zh-TW/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry)所使用的分類器模型。在 Amazon Bedrock 上,請在您的政策中允許其中每一個模型。466* **您的帳戶未提供的模型**:工作階段可能會在某則訊息上失敗,並出現指出該模型名稱的錯誤。請啟用您的開發人員可以選擇的模型、「固定模型版本」中所述的背景模型,以及[自動模式](/docs/zh-TW/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry)所使用的分類器模型。在 Amazon Bedrock 上,請在您的政策中允許其中每一個模型。

387* **網路搜尋和快速模式**:[網路搜尋](/docs/zh-TW/tools-reference#websearch-tool-behavior)在 Amazon Bedrock 上無法使用,而[快速模式](/docs/zh-TW/fast-mode)在兩個供應商上都無法使用。關於其他因供應商而異的功能,請參閱[因供應商而異的 CLI 功能](/docs/zh-TW/feature-availability#cli-capabilities-that-vary-by-provider)。467* **網路搜尋和快速模式**:[網路搜尋](/docs/zh-TW/tools-reference#websearch-tool-behavior)在 Amazon Bedrock 上無法使用,而[快速模式](/docs/zh-TW/fast-mode)在兩個供應商上都無法使用。關於其他因供應商而異的功能,請參閱[因供應商而異的 CLI 功能](/docs/zh-TW/feature-availability#cli-capabilities-that-vary-by-provider)。

388 468 


411 491 

412工作階段會繼承 runner 的環境,因此請在該處設定 [`ENABLE_TOOL_SEARCH`](/docs/zh-TW/mcp#scale-with-mcp-tool-search),以控制 runner 產生的每個工作階段的 MCP 工具搜尋;各個值的說明請參閱 MCP 頁面。492工作階段會繼承 runner 的環境,因此請在該處設定 [`ENABLE_TOOL_SEARCH`](/docs/zh-TW/mcp#scale-with-mcp-tool-search),以控制 runner 產生的每個工作階段的 MCP 工具搜尋;各個值的說明請參閱 MCP 頁面。

413 493 

494<a id="connection-timing" />

495 

496<h3 id="wait-for-mcp-servers-before-the-first-turn">

497 在第一個回合前等待 MCP 伺服器

498</h3>

499 

500自架的工作階段會在兩個不同的時間點,短暫等待仍在連線中的 MCP 伺服器。錯過等待的伺服器,其工具在第一個回合開始時將不可用,之後無需您採取任何動作即會變為可用。這兩次等待如下:

501 

502* **工作階段啟動**:在首次取得工具清單之前,工作階段預設最多會等待 5 秒,等待項目中設定了 [`alwaysLoad: true`](/docs/zh-TW/mcp#exempt-a-server-from-deferral) 的 HTTP 或 SSE 伺服器;若您在 runner 的環境中設定了 [`MCP_CONNECTION_NONBLOCKING=0`](/docs/zh-TW/env-vars),則會等待所有伺服器。否則,HTTP 和 SSE 伺服器會在背景中連線。工作階段在此等待期間,初始化速度會較慢。[`MCP_CONNECT_TIMEOUT_MS`](/docs/zh-TW/env-vars) 可變更 5 秒的預設值。

503* **第一個回合**:在訊息抵達後,第一個回合最多會等待 2 秒,等待仍在連線中的 stdio 伺服器。工作階段在此等待期間,第一個回覆會較慢。若要變更此等待的時間長度,請在 runner 的環境中設定 [`CLAUDE_CODE_MCP_STARTUP_WAIT_MS`](/docs/zh-TW/env-vars)。它不會變更此等待涵蓋哪些伺服器。需要 Claude Code v2.1.274 或更新版本。

504 

505`claude mcp add` 沒有 `alwaysLoad` 旗標。若要設定此鍵,請改用 `claude mcp add-json` 加入伺服器,它會在伺服器的 JSON 中接受此鍵並將其寫入 `.claude.json`。在您的 Dockerfile 中:

506 

507```dockerfile theme={null}

508RUN claude mcp add-json core '{"type":"http","url":"https://mcp.example.com/mcp","alwaysLoad":true}' --scope user

509```

510 

511如果伺服器的工具在之後的回合中也沒有出現,請依照 [MCP 伺服器](#mcp-servers)中的說明,檢查該伺服器是否有傳達到工作階段。

512 

414<h3 id="turn-off-built-in-session-tools">513<h3 id="turn-off-built-in-session-tools">

415 關閉內建工作階段工具514 關閉內建工作階段工具

416</h3>515</h3>


571 670 

572設定 `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` 以從不同路徑植入,或將其指向空目錄以停用植入。671設定 `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` 以從不同路徑植入,或將其指向空目錄以停用植入。

573 672 

574儲存庫提交的 `.claude/settings.json` 會作為專案設定疊加於其上。在包含多個儲存庫的工作階段中,[最多只有一個儲存庫的檔案會生效](#repository-settings-in-sessions-with-several-repositories)。工作階段也會從執行器映像中的標準系統路徑讀取 [`managed-settings.json`](/docs/zh-TW/settings#where-settings-live)。其設定鍵是否與[伺服器受管設定](/docs/zh-TW/server-managed-settings)一併套用,取決於 [Claude Code 如何組合受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources):預設情況下,當您的組織傳遞任何伺服器受管設定鍵時,工作階段會忽略執行器映像的檔案,但 [Claude Code 從每個管理來源讀取的設定鍵](/docs/zh-TW/managed-settings#keys-read-from-every-admin-source)除外,例如 `env` 區塊、沙箱鎖定、沙箱二進位檔路徑和 `forceRemoteSettingsRefresh`。請參閱[設定優先順序](/docs/zh-TW/settings#settings-precedence)。673工作階段也會讀取以下設定檔:

674 

675* **專案設定**:儲存庫提交的 `.claude/settings.json` 會疊加於使用者層級基準之上。在包含多個儲存庫的工作階段中,[最多只有一個儲存庫的檔案會生效](#repository-settings-in-sessions-with-several-repositories)。

676* **受管設定**:工作階段會從執行器映像中的標準系統路徑讀取 [`managed-settings.json`](/docs/zh-TW/settings#where-settings-live)。關於其設定鍵是否與[伺服器受管設定](/docs/zh-TW/server-managed-settings)一併套用,請參閱 [Claude Code 如何組合受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)。

677 

678關於這些來源的套用順序,請參閱[設定優先順序](/docs/zh-TW/settings#settings-precedence)。

575 679 

576當 Anthropic 的控制平面為工作階段提供 [Claude Code hook](/docs/zh-TW/hooks) 時,執行器會將其與您自己的設定並存安裝,而非覆寫您的設定。需要 Claude Code v2.1.229 或更新版本。680當 Anthropic 的控制平面為工作階段提供 [Claude Code hook](/docs/zh-TW/hooks) 時,執行器會將其與您自己的設定並存安裝,而非覆寫您的設定。需要 Claude Code v2.1.229 或更新版本。

577 681 


579* **撰寫者**:控制平面以其自身部署中的固定常數填入這些指令碼,絕不來自個別工作階段或第三方輸入。683* **撰寫者**:控制平面以其自身部署中的固定常數填入這些指令碼,絕不來自個別工作階段或第三方輸入。

580* **仍受何者管控**:透過 `--settings` 傳遞的 hook 會進入一般的合併 hook 設定,而非受管層級,因此您的受管設定仍然適用。`disableAllHooks` 會停用它們,且它們不屬於 [`allowManagedHooksOnly`](/docs/zh-TW/settings-reference#allowmanagedhooksonly) 保持載入的類別。684* **仍受何者管控**:透過 `--settings` 傳遞的 hook 會進入一般的合併 hook 設定,而非受管層級,因此您的受管設定仍然適用。`disableAllHooks` 會停用它們,且它們不屬於 [`allowManagedHooksOnly`](/docs/zh-TW/settings-reference#allowmanagedhooksonly) 保持載入的類別。

581 685 

686當使用者啟動自己的工作階段時,Claude Code 也會將[其 claude.ai 帳戶已啟用的 skill](/docs/zh-TW/skills#skills-in-cowork-and-cloud-sessions) 下載至該工作階段的設定目錄。[routine](/docs/zh-TW/routines) 執行不會取得其擁有者的 skill,而[將模型請求傳送至 Bedrock 或 Agent Platform](#send-model-requests-to-bedrock-or-agent-platform) 的工作階段則不會下載任何 skill。若這些工作階段需要某個 skill,請將其提交至儲存庫的 `.claude/skills/`,或將其加入您的執行器映像。

687 

582在 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段以外,自託管環境中的工作階段預設會關閉[自動記憶](/docs/zh-TW/memory#auto-memory)。若有應跨工作階段延續的指令,請使用執行器映像或儲存庫中的 `CLAUDE.md`。688在 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段以外,自託管環境中的工作階段預設會關閉[自動記憶](/docs/zh-TW/memory#auto-memory)。若有應跨工作階段延續的指令,請使用執行器映像或儲存庫中的 `CLAUDE.md`。

583 689 

584執行器對主機 `~/.claude/` 的快照不包含 `projects/` 目錄。自動記憶的預設儲存位置就位於該目錄下。如果您將記憶檔案放在那裡,執行器不會將其植入工作階段,這些檔案也不會開啟自動記憶。690執行器對主機 `~/.claude/` 的快照不包含 `projects/` 目錄。自動記憶的預設儲存位置就位於該目錄下。如果您將記憶檔案放在那裡,執行器不會將其植入工作階段,這些檔案也不會開啟自動記憶。

Details

20 20 

21* **臨時的、每個工作階段的容器**:在新鮮容器或 VM 中執行每個執行器程序,該容器或 VM 在程序退出時被銷毀,使用 `--capacity 1` 和預設的 `--drain-grace-sec 0`,以便每個容器恰好服務一個工作階段。在更高的容量或正的清空寬限期下,一個容器服務來自同一[鎖定所有者](/docs/zh-TW/self-hosted-environments#key-concepts)的多個工作階段;請參閱[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)。不要在執行器重新啟動之間重複使用檔案系統,除非在刻意的[預熱簽出](#reuse-a-pre-warmed-checkout)設定中,並且永遠不要跨所有者。21* **臨時的、每個工作階段的容器**:在新鮮容器或 VM 中執行每個執行器程序,該容器或 VM 在程序退出時被銷毀,使用 `--capacity 1` 和預設的 `--drain-grace-sec 0`,以便每個容器恰好服務一個工作階段。在更高的容量或正的清空寬限期下,一個容器服務來自同一[鎖定所有者](/docs/zh-TW/self-hosted-environments#key-concepts)的多個工作階段;請參閱[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)。不要在執行器重新啟動之間重複使用檔案系統,除非在刻意的[預熱簽出](#reuse-a-pre-warmed-checkout)設定中,並且永遠不要跨所有者。

22 * <span id="processes-a-stopped-session-leaves" />當執行器停止工作階段時,它不會向在其 shell 命令結束後仍在執行的程序傳送任何訊號,例如已轉為常駐程式(daemonized)的服務。銷毀容器或 VM 會結束該程序。22 * <span id="processes-a-stopped-session-leaves" />當執行器停止工作階段時,它不會向在其 shell 命令結束後仍在執行的程序傳送任何訊號,例如已轉為常駐程式(daemonized)的服務。銷毀容器或 VM 會結束該程序。

23* **映像中沒有廣泛的認證**:不要包含長期的 SSH 金鑰、雲端提供商認證或授予超過工作階段需要的個人存取令牌。在工作階段期間使用的薄荷認證,例如推送或 API 令牌,從您的[包裝器指令碼](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts)按工作階段進行。對於在包裝器執行之前發生的初始複製,使用 [`checkout` 生命週期鉤子](/docs/zh-TW/self-hosted-environments-configuration#checkout)或 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy);請參閱[配置 Git](#configure-git)。23* **映像中沒有廣泛的憑證**:不要包含長期的 SSH 金鑰、雲端提供商憑證,或授予超過工作階段所需權限的個人存取 token。工作階段期間使用的憑證,例如推送或 API token,應從您的[包裝器指令碼](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts)按工作階段產生。初始複製會在包裝器執行之前發生,因此請使用 [`checkout` 生命週期 hook](/docs/zh-TW/self-hosted-environments-configuration#checkout) 處理,或在工作階段的所有儲存庫都位於 github.com 上時使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy)。關於這兩者,請參閱[設定 git](#configure-git)。

24* **讓工作階段無法接觸主機的 GitHub 憑證**:Claude 可以使用工作階段能讀取的任何 GitHub 憑證,並擁有該憑證所授予的任何存取權。請將執行器主機本身範圍廣泛的 GitHub 憑證排除在工作階段可讀取的任何位置之外。此類憑證可能是個人存取 token、`gh auth login` 為您的帳戶儲存的 token,或執行器環境中的 `GH_TOKEN`。

25 * **使用 [Anthropic 管理的 git](#use-the-anthropic-git-proxy) 時**:若有此類憑證,Claude 會直接連線到 GitHub,而不是透過 Anthropic 管理的 git。

26 * **不使用 Anthropic 管理的 git 時**:如果您依照[在映像中提供 git 設定](#ship-git-config-in-your-image)所述嚴格限制其範圍,複製憑證可以保留在映像中。

24* **將環境祕密保留在執行工作階段的主機之外**:環境祕密可以註冊執行器並拾取在環境上排隊的任何工作階段。在固定群中,它存在於每個執行器主機上,任何工作階段的程式碼都可以讀取祕密檔案。優先使用[按需執行器](/docs/zh-TW/self-hosted-environments-configuration#on-demand-runners),其中祕密保留在協調器主機上,該主機永遠不執行使用者程式碼,每個執行器接收單次使用的工作單據,該單據恰好註冊一個執行器。在固定群中,將環境祕密檔案視為可由每個工作階段讀取,並在任何懷疑的工作階段洩露後輪換祕密。27* **將環境祕密保留在執行工作階段的主機之外**:環境祕密可以註冊執行器並拾取在環境上排隊的任何工作階段。在固定群中,它存在於每個執行器主機上,任何工作階段的程式碼都可以讀取祕密檔案。優先使用[按需執行器](/docs/zh-TW/self-hosted-environments-configuration#on-demand-runners),其中祕密保留在協調器主機上,該主機永遠不執行使用者程式碼,每個執行器接收單次使用的工作單據,該單據恰好註冊一個執行器。在固定群中,將環境祕密檔案視為可由每個工作階段讀取,並在任何懷疑的工作階段洩露後輪換祕密。

25* **預設拒絕網路出站流量**:在每個環境上限制執行器和工作階段容器的出站流量在您自己的網路邊界;[預設拒絕出站流量](#default-deny-egress)涵蓋允許什麼以及為什麼。28* **預設拒絕網路出站流量**:在每個環境上限制執行器和工作階段容器的出站流量在您自己的網路邊界;[預設拒絕出站流量](#default-deny-egress)涵蓋允許什麼以及為什麼。

26* **最小權限主機 IAM**:附加到執行器主機的計算身份,例如執行個體設定檔或節點服務帳戶,應僅授予執行器本身需要的內容。工作階段應通過您的包裝器指令碼而不是繼承主機的身份來獲得自己的認證。29* **最小權限主機 IAM**:附加到執行器主機的計算身份,例如執行個體設定檔或節點服務帳戶,應僅授予執行器本身需要的內容。工作階段應通過您的包裝器指令碼而不是繼承主機的身份來獲得自己的認證。


42 防護無論 [`--trust-workspace`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags)如何都會執行,並且不涵蓋儲存庫鉤子、`.mcp.json` 或 Bash 規則;請參閱[權限和工具批准](/docs/zh-TW/self-hosted-environments-configuration#permissions-and-tool-approval)以了解這些授予應該在哪裡。45 防護無論 [`--trust-workspace`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags)如何都會執行,並且不涵蓋儲存庫鉤子、`.mcp.json` 或 Bash 規則;請參閱[權限和工具批准](/docs/zh-TW/self-hosted-environments-configuration#permissions-and-tool-approval)以了解這些授予應該在哪裡。

43 46 

44<Note>47<Note>

45 您組織的 IP 允許列表預設不涵蓋自託管執行器流量。不要依賴它作為執行器或工作階段流量的網路控制;改為在您自己的網路邊界應用預設拒絕出站流量,如果您想要為您的組織強制執行 IP 允許列表,請聯繫您的 Anthropic 帳戶團隊。48 如果您的組織已啟用 [IP 允許清單](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting),請在啟動執行器和工作階段容器之前,將它們的公用出站位址加入允許清單。如果您執行[按需執行器](/docs/zh-TW/self-hosted-environments-configuration#on-demand-runners),也請加入協調器主機的位址。不要依賴允許清單作為執行器或工作階段流量的網路控制,而應改為在您自己的網路邊界套用預設拒絕出站流量。

46</Note>49</Note>

47 50 

48<h2 id="network-requirements">51<h2 id="network-requirements">


55 58 

56| 主機 | 連接埠 | 用途 |59| 主機 | 連接埠 | 用途 |

57| :- | :- | :- |60| :- | :- | :- |

58| `api.anthropic.com` | 443、HTTPS;WSS 僅用於 SCM 連接器 | 執行器控制平面和工作階段串流、模型推理、功能旗標、產品分析、[JWKS](/docs/zh-TW/self-hosted-environments-identity)金鑰提取、提交簽名、設定 `--use-anthropic-git-proxy` 時的 Git 代理,以及設定 `--scm-connector-host` 時協調器的 [SCM 連接器](/docs/zh-TW/self-hosted-environments-reference#scm-connector-flags)隧道 |61| `api.anthropic.com` | 443、HTTPS;WSS 用於 [Anthropic 管理的 Git](#use-the-anthropic-git-proxy) | 執行器控制平面和工作階段串流、模型推理、功能旗標、產品分析、[JWKS](/docs/zh-TW/self-hosted-environments-identity) 金鑰提取、提交簽名,以及設定 `--use-anthropic-git-proxy` 時的 Anthropic 管理的 Git |

59| 您的 Git 主機,例如 `github.com` 或您的 GitHub Enterprise 主機 | 443 或 22 | 複製和推送儲存庫。如果執行器使用 `--use-anthropic-git-proxy`(將 Git 流量路由通過 `api.anthropic.com`)則不需要。 |62| 您的 Git 主機,例如 `github.com` 或您的 GitHub Enterprise 主機 | 443 或 22 | 在執行器工作階段所使用的每個 Git 主機上複製和推送儲存庫。對於使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器,請參閱[何時仍需要 `github.com` 路徑](#github-com-egress-with-the-anthropic-git-proxy)。 |

63 

64<span id="github-com-egress-with-the-anthropic-git-proxy" />使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器會將其 `github.com` Git 流量路由通過 `api.anthropic.com`,因此不需要 `github.com` 的 Git 主機路徑。如果您設定了 `--push-outcome-on-release` 或從 `post-session` hook 推送,則仍需要該路徑。

60 65 

61這些主機是否需要取決於您的配置:66這些主機是否需要取決於您的配置:

62 67 


71| `browser-intake-us5-datadoghq.com` | 443 | Anthropic 錯誤報告上傳,僅在為工作階段帳戶啟用[錯誤報告](/docs/zh-TW/data-usage#telemetry-services)時發送。由 `DISABLE_ERROR_REPORTING=1` 或 `DISABLE_TELEMETRY=1` 抑制。 |76| `browser-intake-us5-datadoghq.com` | 443 | Anthropic 錯誤報告上傳,僅在為工作階段帳戶啟用[錯誤報告](/docs/zh-TW/data-usage#telemetry-services)時發送。由 `DISABLE_ERROR_REPORTING=1` 或 `DISABLE_TELEMETRY=1` 抑制。 |

72| 您的雲端供應商用於模型請求、模型查詢和更新憑證的端點,例如 `bedrock-runtime.us-east-1.amazonaws.com` 或 `aiplatform.googleapis.com` | 443 | 僅當執行器[將模型請求傳送至 Amazon Bedrock 或 Google Cloud 的 Agent Platform](/docs/zh-TW/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) 時 |77| 您的雲端供應商用於模型請求、模型查詢和更新憑證的端點,例如 `bedrock-runtime.us-east-1.amazonaws.com` 或 `aiplatform.googleapis.com` | 443 | 僅當執行器[將模型請求傳送至 Amazon Bedrock 或 Google Cloud 的 Agent Platform](/docs/zh-TW/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) 時 |

73 78 

74執行器不會到達 `statsig.anthropic.com`、`*.sentry.io`、`claude.ai` 或 `platform.claude.com`。這些主機出現在一些較舊的企業網路檢查清單中,但您不需要為執行器或工作階段流量允許列表它們:功能旗標提取進入 `api.anthropic.com`,執行器使用環境祕密而不是互動式 OAuth 進行身份驗證。兩個主機端流確實到達 `claude.ai`,因此從其出站流量允許的主機執行它們,而不是擴大工作階段容器出站流量:單行安裝程式在安裝時從 `claude.ai` 提取 `install.sh`,互動式 `claude auth login`([引導式設定](/docs/zh-TW/self-hosted-environments-quickstart#set-up-an-environment-and-runner)、`doctor` 的已登入模式和 [CI 分派](/docs/zh-TW/self-hosted-environments-testing#authenticate-from-ci)使用)通過 `claude.ai`、`claude.com` 和 `platform.claude.com` 登入。`mcp-proxy.anthropic.com` 也不是必需的:自託管工作階段不使用它,當為您的組織啟用時,將您的組織 claude.ai 連接器傳遞到工作階段通過 `api.anthropic.com` 路由。請參閱 [MCP 伺服器](/docs/zh-TW/self-hosted-environments-configuration#mcp-servers)。79您不需要為執行器或工作階段流量將這些主機加入允許清單:

80 

81* **`statsig.anthropic.com`、`*.sentry.io`、`claude.ai` 和 `platform.claude.com`**:這些主機出現在一些較舊的企業網路檢查清單中,但執行器不會連線到它們。功能旗標提取會前往 `api.anthropic.com`,而執行器使用環境祕密而非互動式 OAuth 進行身分驗證。

82* **`mcp-proxy.anthropic.com`**:自託管工作階段不使用它。當您的組織啟用連接器傳遞時,您組織的 claude.ai 連接器會透過 `api.anthropic.com` 到達工作階段。請參閱 [MCP 伺服器](/docs/zh-TW/self-hosted-environments-configuration#mcp-servers)。

83 

84以下主機端流程確實會連線到 `claude.ai`,因此請從出站流量允許連線到它的主機執行這些流程,而不是擴大工作階段容器的出站流量:

85 

86* **單行安裝程式**:在安裝時從 `claude.ai` 提取 `install.sh`。

87* **互動式 `claude auth login`**:透過 `claude.ai`、`claude.com` 和 `platform.claude.com` 登入。[引導式設定](/docs/zh-TW/self-hosted-environments-quickstart#run-the-guided-setup)、`doctor` 的已登入模式和 [CI 分派](/docs/zh-TW/self-hosted-environments-testing#authenticate-from-ci)會使用它。您用來登入的瀏覽器也會從 `hcaptcha.com`、`*.hcaptcha.com` 和 `challenges.cloudflare.com` 載入 claude.ai 登入頁面的瀏覽器檢查。

75 88 

76<h3 id="default-deny-egress">89<h3 id="default-deny-egress">

77 預設拒絕出站流量90 預設拒絕出站流量


127* **讓執行器配置 Git**:使用 `--configure-git` 啟動執行器,以使其寫入 Anthropic 託管工作階段使用的相同身份和提交簽名配置140* **讓執行器配置 Git**:使用 `--configure-git` 啟動執行器,以使其寫入 Anthropic 託管工作階段使用的相同身份和提交簽名配置

128* **在映像中提供 Git 配置**:自己設定身份和推送認證,例如在您自己的機器人身份下提交141* **在映像中提供 Git 配置**:自己設定身份和推送認證,例如在您自己的機器人身份下提交

129 142 

143對於 github.com 上的儲存庫,您也可以使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 啟動執行器,或設定 `CLAUDE_RUNNER_USE_GIT_PROXY=1`,請 Anthropic 為執行器的工作階段提供 Git 服務。

144 

130執行器主機上的 Git 版本下限:[`--configure-git`](#let-the-runner-configure-git) SSH 提交簽名需要 Git 2.34 或更新版本,[`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 需要 2.32 或更新版本,從 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 推送的分支恢復工作階段需要 2.29 或更新版本。如果您省略所有三個並自己管理 Git 身份,Git 2.24 就足夠了。145執行器主機上的 Git 版本下限:[`--configure-git`](#let-the-runner-configure-git) SSH 提交簽名需要 Git 2.34 或更新版本,[`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 需要 2.32 或更新版本,從 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 推送的分支恢復工作階段需要 2.29 或更新版本。如果您省略所有三個並自己管理 Git 身份,Git 2.24 就足夠了。

131 146 

132<h3 id="let-the-runner-configure-git">147<h3 id="let-the-runner-configure-git">


138* `user.name = Claude` 和 `user.email = noreply@anthropic.com`,與 Anthropic 託管工作階段相符153* `user.name = Claude` 和 `user.email = noreply@anthropic.com`,與 Anthropic 託管工作階段相符

139* SSH 格式提交和標籤簽名,通過執行器管理的填充程式路由,該填充程式使用工作階段自己的認證通過 Anthropic 的簽名服務簽名每個提交。簽名可在 GitHub 上針對 Anthropic 的已發佈 SSH 簽名金鑰進行驗證。154* SSH 格式提交和標籤簽名,通過執行器管理的填充程式路由,該填充程式使用工作階段自己的認證通過 Anthropic 的簽名服務簽名每個提交。簽名可在 GitHub 上針對 Anthropic 的已發佈 SSH 簽名金鑰進行驗證。

140* `push.negotiate = true`,因此 Git 在打包推送之前詢問您的 Git 主機它已經擁有哪些提交。需要 Claude Code v2.1.257 或更新版本。155* `push.negotiate = true`,因此 Git 在打包推送之前詢問您的 Git 主機它已經擁有哪些提交。需要 Claude Code v2.1.257 或更新版本。

141* `core.hooksPath` 指向執行器管理的鉤子目錄。其 `commit-msg` 和 `prepare-commit-msg` 鉤子為每個提交添加 `Co-authored-by:` 預告片,用於工作階段的建立者,從 [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 構建,當該變數未設定時省略。如果您的映像已設定 `core.hooksPath`,執行器保留您的設定,跳過安裝這些鉤子,並列印 `[runner:git]` 警告。156* `core.hooksPath` 指向執行器管理的 hook 目錄。其 `commit-msg` 和 `prepare-commit-msg` hook 會為每個提交加上工作階段建立者的 `Co-authored-by:` trailer。該 trailer 由 [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 中的電子郵件建立,當該變數未設定時則省略。如果您的映像已設定 `core.hooksPath`,且執行器未使用 [Anthropic 管理的 Git](#use-the-anthropic-git-proxy),執行器會保留您的設定、跳過安裝這些 hook,並列印 `[runner:git]` 警告。

142 157 

143提交簽名需要 Git 2.34 或更新版本;執行器在啟動時檢查並在您的 Git 較舊時以錯誤退出。此旗標不配置推送認證,您仍在映像中提供。158提交簽名需要 Git 2.34 或更新版本;執行器在啟動時檢查並在您的 Git 較舊時以錯誤退出。此旗標不配置推送認證,您仍在映像中提供。

144 159 

145在 v2.1.280 或更新版本的執行器上,您從 `checkout` 或 `post-session` 生命週期 hook 所建立的提交也會以工作階段身分簽署,但不會加上 `Co-authored-by:` trailer。[生命週期 hook 內的 Git 設定](/docs/zh-TW/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks)說明了執行器在這些 hook 內固定的 Git 設定。160在 v2.1.280 或更新版本的執行器上,您從 `checkout` 或 `post-session` 生命週期 hook 所建立的提交也會以工作階段身分簽署,但不會加上 `Co-authored-by:` trailer。[生命週期 hook 內的 Git 設定](/docs/zh-TW/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks)說明了執行器在這些 hook 內固定的 Git 設定。

146 161 

162無論是否使用 `--configure-git`,Claude Code 都會指示 Claude 在提交訊息結尾加上 `Claude-Session: <url>` trailer,並在 pull request 描述結尾加上工作階段的 URL。若要省略兩者,請在執行器主機的 [`~/.claude/settings.json`](/docs/zh-TW/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) 中將 [`attribution.sessionUrl`](/docs/zh-TW/settings-reference#attribution-sessionurl) 設為 `false`,然後重新啟動執行器。

163 

147<h3 id="ship-git-config-in-your-image">164<h3 id="ship-git-config-in-your-image">

148 在映像中提供 Git 配置165 在映像中提供 Git 配置

149</h3>166</h3>


186 使用 Anthropic Git 代理203 使用 Anthropic Git 代理

187</h3>204</h3>

188 205 

189使用 `--use-anthropic-git-proxy` 啟動執行器,或設定 `CLAUDE_RUNNER_USE_GIT_PROXY=1`,以使其通過 Anthropic 的 Git 代理複製,使用工作階段自己的短期令牌進行身份驗證。對於普通使用者工作階段,代理使用為工作階段建立者儲存的 GitHub 或 GitHub Enterprise OAuth 令牌;對於機器人和代理工作階段,它使用您的組織的 GitHub App 安裝令牌。無論哪種方式,執行器映像都不需要任何 Git 認證:沒有 SSH 金鑰、沒有認證幫助程式、沒有 `.netrc`。這是 Anthropic 託管環境使用的相同身份驗證路徑。206使用 Anthropic Git 代理伺服器(也稱為 Anthropic 管理的 Git)時,執行器映像不需要為工作階段本身準備任何 SSH 金鑰、憑證輔助程式、`.netrc` 或其他 Git 憑證。執行器會改為請 Anthropic 為其工作階段提供 Git 服務。對於 Anthropic 所服務的使用者工作階段,執行器的複製以及工作階段自己的提取和推送都會經過 Anthropic,Anthropic 使用為工作階段建立者儲存的 GitHub OAuth token。[Anthropic 如何為工作階段提供 Git 服務](#how-anthropic-serves-git-for-a-session)說明了機器人和 agent 工作階段的情況。

207 

208除非您[將其開啟](#turn-the-anthropic-git-proxy-on),否則 Git 代理伺服器是關閉的。以自己的憑證連線到 Git 主機的執行器不需要它,其 Git 可搭配任何 Git 主機運作。

209 

210相對地,Git 代理伺服器會限制執行器支援的範圍,並改變執行器所需的條件:

211 

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)。

214* **僅限分支推送**:刪除分支的推送會失敗,推送到任何其他類型的 ref(例如標籤)也會失敗。關於推送可以更新哪些分支,請參閱 [GitHub 代理伺服器](/docs/zh-TW/cloud-environments#github-proxy)。

215* **已連結的 GitHub 帳戶**:建立使用者工作階段的人必須已在 claude.ai 上連結 GitHub,否則該工作階段[無法啟動](#creator-has-no-github-connection)。

216* **`--capacity 1`**:Git 代理伺服器要求每個執行器程序只處理一個工作階段,因此請執行更多副本以實現平行處理。[開啟 Anthropic Git 代理伺服器](#turn-the-anthropic-git-proxy-on)列出了相關要求。

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)。

219* **逐一工作階段決定**:Anthropic 會針對執行器上的每個工作階段決定是否為其提供 Git 服務,未被服務的工作階段將無法啟動。[在使用 Git 代理伺服器的執行器上工作階段無法啟動時](#when-anthropic-doesnt-serve-a-session)說明了原因。

220 

221<span id="git-proxy-replaces-global-git-config" />

222 

223<Warning>

224 設定 `--use-anthropic-git-proxy` 時,執行器會刪除並取代其執行身分使用者的全域 Git 設定,且不保留任何備份。它會在啟動時以及每個工作階段之前執行此操作。您保存在那裡的登入資訊或憑證輔助程式將會遺失。[`--configure-git`](#let-the-runner-configure-git) 寫入的設定則會保留。請以專用使用者身分或在容器中執行執行器,切勿以您自己的使用者身分執行。

225</Warning>

226 

227請將非機密的 Git 設定(例如身分和 `safe.directory`)保存在系統 Git 設定中。

228 

229<h4 id="turn-the-anthropic-git-proxy-on">

230 開啟 Anthropic Git 代理伺服器

231</h4>

232 

233在使用 `--use-anthropic-git-proxy` 啟動執行器之前,請確認執行器主機符合以下每項要求。當容量或 Git 要求未滿足時,執行器會拒絕啟動:

190 234 

191代理需要 `--capacity 1`,因為代理 URL 是每個工作階段的,Git 2.32 或更新版本,因為較舊的 Git 忽略代理用來隔離工作階段的配置機制。如果任一要求未滿足,執行器拒絕啟動。因為代理從 Anthropic 端提取,您的 Git 主機必須可從 Anthropic 基礎設施到達,與 Anthropic 託管工作階段相同的要求;對於僅在您的網路內可路由的 Git 主機,改用 [`checkout` 生命週期鉤子](/docs/zh-TW/self-hosted-environments-configuration#checkout)。每個執行器程序一次處理一個工作階段,因此執行更多副本以實現並行性。啟用代理後,`--git-host-rewrite` 和 `--git-ssh-rewrite` 無效:代理 URL 指向 `api.anthropic.com`,而不是您的 Git 主機。235* **Claude Code v2.1.267 或更新版本**:較早的版本接受該旗標,但不會回報請 Anthropic 提供 Git 服務的請求,也不會列印 `Registering as opted in` 行,因此 Anthropic 不會服務其工作階段。

236* **`--capacity 1`(預設值)**:每個執行器程序一次處理一個工作階段,因此請執行更多副本以實現平行處理。

237* **Git 2.32 或更新版本**:較舊的 Git 會忽略執行器為 Git 代理伺服器設定的每個工作階段 Git 設定。

192 238 

193<Warning>239<Warning>

194 本頁上的 [Kubernetes](#kubernetes) 和 [Docker Compose](#docker-compose) 配方使用 `--capacity 4`。如果您在不將容量更改為 `1` 的情況下將 `--use-anthropic-git-proxy` 或 `CLAUDE_RUNNER_USE_GIT_PROXY=1` 添加到其中之一,每次您的協調器重新啟動執行器時,執行器都會在啟動時退出。設定 `--capacity 1` 並執行更多副本以實現並行性。[When the runner exits](#when-the-runner-exits) 顯示執行器列印的行。240 本頁上的 [Kubernetes](#kubernetes) 和 [Docker Compose](#docker-compose) 配方使用 `--capacity 4`。如果您在不將容量更改為 `1` 的情況下將 `--use-anthropic-git-proxy` 或 `CLAUDE_RUNNER_USE_GIT_PROXY=1` 添加到其中之一,每次您的協調器重新啟動執行器時,執行器都會在啟動時退出。設定 `--capacity 1` 並執行更多副本以實現並行性。[When the runner exits](#when-the-runner-exits) 顯示執行器列印的行。

195</Warning>241</Warning>

196 242 

197執行器也會在註冊時向 Anthropic 報告選擇加入,在啟動時列印 `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`。報告選擇加入需要 Claude Code v2.1.267 或更新版本,較早的版本接受該旗標而不報告它或列印該行。選擇加入執行器上的每個工作階段隨後使用 Anthropic 管理的 Git 或每個工作階段的代理 URL。當工作階段使用每個工作階段的代理 URL 時,執行器記錄一行 `[runner:warn]` 說明這一點。243若要開啟 Git 代理伺服器,請在執行器的命令中加入 `--use-anthropic-git-proxy`,或在執行器的環境中設定 `CLAUDE_RUNNER_USE_GIT_PROXY=1`。以下命令在執行器主機的 shell 中執行,會以開啟 Git 代理伺服器的方式啟動[快速入門](/docs/zh-TW/self-hosted-environments-quickstart#set-up-manually)中的執行器:

244 

245```bash theme={null}

246claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>' --use-anthropic-git-proxy

247```

248 

249啟動時,執行器會列印 `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`。接著 Anthropic 會針對該執行器上的每個工作階段決定是否為其提供 Git 服務。對於每個被服務的工作階段,執行器會記錄一行包含 `governed git ACTIVE` 的 `[runner:session]`。如果工作階段反而無法啟動,請參閱[在使用 Git 代理伺服器的執行器上工作階段無法啟動時](#when-anthropic-doesnt-serve-a-session)。

250 

251<h4 id="how-anthropic-serves-git-for-a-session">

252 Anthropic 如何為工作階段提供 Git 服務

253</h4>

254 

255對於 Anthropic 所服務的工作階段,執行器的複製以及工作階段自己的提取和推送都會經過 Anthropic,並以工作階段自己的短期 token 進行身分驗證:

256 

257* **使用者工作階段**:Anthropic 使用為工作階段建立者儲存的 GitHub OAuth token。

258* **機器人和 agent 工作階段**:Anthropic 使用您組織的 GitHub App 安裝 token。

259* **URL 重寫**:`--git-host-rewrite` 和 `--git-ssh-rewrite` 對 Git 代理伺服器所服務的儲存庫沒有作用。

260 

261<h4 id="when-anthropic-doesnt-serve-a-session">

262 在使用 Git 代理伺服器的執行器上工作階段無法啟動時

263</h4>

264 

265在以 `--use-anthropic-git-proxy` 啟動的執行器上,當 Anthropic 不為工作階段提供 Git 服務時,該工作階段將無法啟動。請在執行器的日誌中尋找指出包含 `/git_proxy/` 之 `api.anthropic.com` 位址的 Git 錯誤。

266 

267對於每個工作階段,Claude Code v2.1.267 或更新版本的執行器也會記錄以下其中一行:當 Anthropic 服務該工作階段的 Git 時,記錄一行包含 `governed git ACTIVE` 的 `[runner:session]`;若未服務,則記錄一行包含 `the server withheld Anthropic-managed git for this session` 的 `[runner:warn]`。請在以下情況中找出您看到的那一行:

268 

269* **既沒有 `governed git ACTIVE` 也沒有 `withheld` 行**:早於 Claude Code v2.1.267 的執行器兩行都不會記錄,且 Anthropic 不會服務其工作階段。請依照[固定版本](#pin-the-version)將執行器更新至 v2.1.267 或更新版本。

270* **`withheld` 行**:Anthropic 未服務該工作階段。先前可搭配 Git 代理伺服器運作的執行器,也可能在您這邊沒有任何變更的情況下以這種方式失敗。

271 * **有儲存庫不在 github.com 上**:只要工作階段中有任何一個儲存庫位於其他 Git 主機(例如 GitHub Enterprise Server),該工作階段就不會被服務,包括其 github.com 儲存庫在內。請為該環境的執行器[關閉 Anthropic Git 代理伺服器](#turn-the-anthropic-git-proxy-off)。

272 * **所有儲存庫都在 github.com 上**:請將此失敗連同 `withheld` 行中的工作階段 ID 回報給[您的 Anthropic 客戶團隊](#report-an-issue)。Anthropic 會在其端記錄原因。

273* **包含 `remote: access denied by the git proxy` 的行**:即使是 Anthropic 所服務的工作階段仍可能被拒絕,例如當組織政策拒絕該工作階段的 Git 存取,或該工作階段未獲授權存取該儲存庫時。此時執行器的日誌會顯示一行包含 `remote: access denied by the git proxy` 的內容,該行其餘部分會說明原因。

274* <span id="creator-has-no-github-connection" />**`GitHub authentication required`**:當工作階段建立者在 claude.ai 上沒有可用的 GitHub 連結時會出現此訊息。工作階段的複製會失敗,Git 錯誤訊息為 `GitHub authentication required. Please reconnect your GitHub account.` 請該使用者在其 claude.ai 設定中連結或重新連結 GitHub。

275 

276修正原因後,請重新啟動失敗的工作階段。

277 

278<h4 id="turn-the-anthropic-git-proxy-off">

279 關閉 Anthropic Git 代理伺服器

280</h4>

281 

282如果某個環境中的工作階段使用位於 github.com 以外 Git 主機(例如 GitHub Enterprise Server)上的儲存庫,請為該環境的執行器關閉 `--use-anthropic-git-proxy`。

283 

284<Steps>

285 <Step title="移除旗標">

286 從執行器的命令中移除 `--use-anthropic-git-proxy`。如果您在執行器的環境中(例如 pod spec 或 Compose 檔案)設定了 `CLAUDE_RUNNER_USE_GIT_PROXY`,請在該處將其移除。在 shell 中,請取消設定它:

287 

288 ```bash theme={null}

289 unset CLAUDE_RUNNER_USE_GIT_PROXY

290 ```

291 </Step>

292 

293 <Step title="為執行器提供 Git 憑證">

294 為執行器工作階段使用的每個 Git 主機(包括 github.com)提供無需提示即可運作的憑證。執行器使用者全域 Git 設定中原有的任何憑證都已消失,因為在設定 `--use-anthropic-git-proxy` 期間,執行器已刪除該設定。請[在映像中提供憑證](#ship-git-config-in-your-image),或使用 [`checkout` 生命週期 hook](/docs/zh-TW/self-hosted-environments-configuration#checkout)。

295 </Step>

296 

297 <Step title="開放網路路徑">

298 允許執行器透過連接埠 443 或 22 連線到執行器工作階段使用的每個 Git 主機。請參閱[網路需求](#network-requirements)中的 Git 主機列。

299 </Step>

300 

301 <Step title="重新啟動執行器">

302 重新啟動執行器,讓它們在不使用 Git 代理伺服器的情況下註冊。然後重新啟動每個失敗的工作階段。

303 </Step>

304</Steps>

198 305 

199<h4 id="github-api-access-without-the-github-cli">306<h4 id="github-api-access-without-the-github-cli">

200 不使用 GitHub CLI 存取 GitHub API307 不使用 GitHub CLI 存取 GitHub API


266```dockerfile theme={null}373```dockerfile theme={null}

267FROM debian:bookworm-slim374FROM debian:bookworm-slim

268ARG CLAUDE_CODE_VERSION375ARG CLAUDE_CODE_VERSION

269RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \376RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \

270 && rm -rf /var/lib/apt/lists/*377 && rm -rf /var/lib/apt/lists/*

271RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \378RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

272 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude379 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


382kubectl create namespace claude-runners489kubectl create namespace claude-runners

383```490```

384 491 

385從保存您在管理 UI 的[**複製環境金鑰**步驟](/docs/zh-TW/self-hosted-environments-quickstart#set-up-an-environment-and-runner)中複製的值的本地檔案建立支持 Secret,以便祕密永遠不會出現在您的 shell 歷史記錄中。執行 `(umask 077 && cat > ./environment-secret)`,貼上祕密,按 Enter,然後按 Ctrl-D。然後建立 Secret 並刪除檔案:492從保存您在管理 UI 的[**複製環境金鑰**步驟](/docs/zh-TW/self-hosted-environments-quickstart#set-up-manually)中複製的值的本地檔案建立支持 Secret,以便祕密永遠不會出現在您的 shell 歷史記錄中。執行 `(umask 077 && cat > ./environment-secret)`,貼上祕密,按 Enter,然後按 Ctrl-D。然後建立 Secret 並刪除檔案:

386 493 

387```bash theme={null}494```bash theme={null}

388kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret495kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret


500 重複使用預熱簽出607 重複使用預熱簽出

501</h2>608</h2>

502 609 

503對於大型儲存庫,複製可能主導工作階段啟動。在 `--capacity 1` 且沒有 [`checkout` 鉤子](/docs/zh-TW/self-hosted-environments-configuration#checkout) 的情況下,執行器在 `<base-dir>/<repo-owner>/<repo>` 保持每個儲存庫的一個規範複製並在工作階段之間重複使用它:它提取請求的 ref、分離 `HEAD` 並硬重置為它,當變化不多時幾乎是瞬間的。要跳過冷複製,以兩種方式之一提供複製:610對於大型儲存庫,複製可能主導工作階段啟動。要跳過冷複製,請自行在執行器保存其自身複製的路徑上提供一個複製。在沒有 [`checkout` hook](/docs/zh-TW/self-hosted-environments-configuration#checkout) 的情況下,執行器在 `<base-dir>/<repo-owner>/<repo>` 為每個儲存庫保持一個規範複製,並在工作階段之間重複使用它:

611 

612* **在 `--capacity 1` 時**:執行器提取請求的 ref、分離 `HEAD` 並硬重置為它,當變化不多時幾乎是瞬間的。

613* **在 `--capacity` 大於一時**:執行器提取到該複製中,然後為每個工作階段從中簽出一個單獨的 worktree。預熱複製可節省下載,但無法節省簽出。

614 

615在映像中或在持久卷上提供複製:

504 616 

505* **在映像中複製**:在該路徑將複製構建到您的執行器映像中。每個新容器然後以預熱複製啟動,而不重複使用磁碟。617* **在映像中複製**:在該路徑將複製構建到您的執行器映像中。每個新容器然後以預熱複製啟動,而不重複使用磁碟。

506* **在持久卷上複製**:在您使用 [`--lock-to-account`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 預鎖定到一個使用者帳戶的執行器上,將 `--base-dir` 指向持久卷,因此磁碟只服務該帳戶。預鎖定的執行器永遠不會拾取 Claude Tag 頻道工作階段,因此此選項不適用於服務它們的執行器。618* **在持久卷上複製**:在您使用 [`--lock-to-account`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 預鎖定到一個使用者帳戶的執行器上,將 `--base-dir` 指向持久卷,因此磁碟只服務該帳戶。預鎖定的執行器永遠不會拾取 Claude Tag 頻道工作階段,因此此選項不適用於服務它們的執行器。


508重複使用路徑做什麼和不保證什麼:620重複使用路徑做什麼和不保證什麼:

509 621 

510* **任何複製形狀都有效**:路徑上的完整、淺或單分支複製按原樣使用。執行器在提取到現有複製時永遠不會傳遞 `--depth`,因此完整預熱保持其完整歷史記錄,淺複製保持淺。`CLAUDE_RUNNER_FETCH_DEPTH`(`full`、`0` 或數字;預設 50)僅控制執行器在不存在複製時進行的冷複製。622* **任何複製形狀都有效**:路徑上的完整、淺或單分支複製按原樣使用。執行器在提取到現有複製時永遠不會傳遞 `--depth`,因此完整預熱保持其完整歷史記錄,淺複製保持淺。`CLAUDE_RUNNER_FETCH_DEPTH`(`full`、`0` 或數字;預設 50)僅控制執行器在不存在複製時進行的冷複製。

511* **追蹤的變化重置,未追蹤的檔案持續**:每個工作階段從硬重置開始,該重置擦除前一個工作階段的追蹤修改,但執行器永遠不執行 `git clean`,因此鎖定所有者的早期工作階段的未追蹤檔案保留在樹中。623* **追蹤的變化重置,未追蹤的檔案持續**:在 `--capacity 1` 時,每個工作階段從硬重置開始,該重置擦除前一個工作階段的追蹤修改,但執行器永遠不執行 `git clean`,因此鎖定所有者的早期工作階段的未追蹤檔案保留在樹中。

512* **每工作階段目錄也持續**:在簽出旁邊,執行器在 `<base-dir>/_sessions/` 下為它執行的每個工作階段建立每工作階段項目。工作階段的 Claude 設定目錄保存對話記錄的本地副本。在它旁邊是工作階段的上傳檔案,當工作階段有任何時。工作階段目錄也坐在那裡:它在工作階段執行時保存任何每工作階段 worktrees 和 `checkout` 鉤子簽出,並保持 Claude 在其中寫入的任何其他內容。624* **每工作階段目錄也持續**:在簽出旁邊,執行器在 `<base-dir>/_sessions/` 下為它執行的每個工作階段建立每工作階段項目。工作階段的 Claude 設定目錄保存對話記錄的本地副本。在它旁邊是工作階段的上傳檔案,當工作階段有任何時。工作階段目錄也坐在那裡:它在工作階段執行時保存任何每工作階段 worktrees 和 `checkout` 鉤子簽出,並保持 Claude 在其中寫入的任何其他內容。

513 625 

514 預設情況下,執行器在工作階段結束時將這些留在原地,因此在超越執行器程序的磁碟上它們會累積。每個工作階段都以執行器自己的使用者身份執行,因此該磁碟服務的任何後續工作階段都可以讀取它們。如果您保持持久 `--base-dir`,請為該增長調整卷的大小。相同的適用於任何在相同檔案系統上重新啟動執行器的設定,包括 [Docker Compose 配方](#docker-compose)。626 預設情況下,執行器在工作階段結束時將這些留在原地,因此在超越執行器程序的磁碟上它們會累積。每個工作階段都以執行器自己的使用者身份執行,因此該磁碟服務的任何後續工作階段都可以讀取它們。如果您保持持久 `--base-dir`,請為該增長調整卷的大小。相同的適用於任何在相同檔案系統上重新啟動執行器的設定,包括 [Docker Compose 配方](#docker-compose)。


522 634 

523每個工作階段的子 Claude Code 程序執行執行器自己的二進位檔案,執行器在它生成的工作階段內關閉自動更新,因此每個工作階段執行您在主機上安裝或構建到映像中的版本。主機級更新在執行器下次啟動時生效。635每個工作階段的子 Claude Code 程序執行執行器自己的二進位檔案,執行器在它生成的工作階段內關閉自動更新,因此每個工作階段執行您在主機上安裝或構建到映像中的版本。主機級更新在執行器下次啟動時生效。

524 636 

525您的工作階段使用的模型可能需要比它們執行的版本更新的 Claude Code 版本。伺服器隨後會以 [Claude Code 不支援此模型](/docs/zh-TW/errors#claude-code-does-not-support-this-model) 拒絕該模型的請求。在您固定版本之前,請檢查[模型所需的 Claude Code 版本](/docs/zh-TW/model-config#available-models),以確保您的工作階段使用的每個模型都符合要求。637選擇您的工作階段執行哪個版本,以及何時變更:

526 638 

639* **在固定版本之前**:針對工作階段使用的每個模型,檢查[模型所需的 Claude Code 版本](/docs/zh-TW/model-config#available-models)。如果某個模型需要比工作階段執行的版本更新的版本,伺服器會以 [Claude Code 不支援此模型](/docs/zh-TW/errors#claude-code-does-not-support-this-model) 拒絕該模型的請求。

527* **將群保持在一個版本上**:使用固定版本構建映像,或在裸主機上安裝特定版本並[禁用自動更新](/docs/zh-TW/setup#disable-auto-updates)640* **將群保持在一個版本上**:使用固定版本構建映像,或在裸主機上安裝特定版本並[禁用自動更新](/docs/zh-TW/setup#disable-auto-updates)

528* **升級**:安裝較新版本或重建映像,然後重新啟動執行器641* **升級固定機群**:閱讀從您目前版本到要安裝版本之間的 [changelog](/docs/en/changelog) 項目,然後安裝較新版本或重新建置映像,並重新啟動執行器

642* **升級隨需執行器**:閱讀從您目前版本到要安裝版本之間的 [changelog](/docs/en/changelog) 項目,然後變更您的 [`spawn-runner` hook](/docs/zh-TW/self-hosted-environments-configuration#the-spawn-runner-hook) 所啟動的映像。每個新的執行器都會取得新版本。已在執行中的執行器,包括由 [`--min-idle`](/docs/zh-TW/self-hosted-environments-reference#orchestrator-cli-flags) 啟動的待命執行器,會保留其版本直到結束。請勿重新啟動它,因為其工作指令只能使用一次。

529* **外掛程式**:外掛程式市場也不自動更新;在執行器的環境中設定 `FORCE_AUTOUPDATE_PLUGINS=1` 以讓外掛程式自動更新,同時二進位檔案保持固定643* **外掛程式**:外掛程式市場也不自動更新;在執行器的環境中設定 `FORCE_AUTOUPDATE_PLUGINS=1` 以讓外掛程式自動更新,同時二進位檔案保持固定

530 644 

531<h2 id="scale-the-fleet">645<h2 id="scale-the-fleet">


580</h3>694</h3>

581 695 

582* **恢復的工作階段丟失未推送的工作**:新的執行器會從其起始分支再次複製儲存庫,因此工作階段未推送的工作會消失。696* **恢復的工作階段丟失未推送的工作**:新的執行器會從其起始分支再次複製儲存庫,因此工作階段未推送的工作會消失。

583 * **若要保留已提交的工作**:設定 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags)。執行器會在釋放之前盡力推送工作階段的結果分支,恢復的工作階段便會從這些提交開始。未提交的變更仍會遺失。697 * **若要保留已提交的工作**:在環境中的每個執行器上設定 [`--push-outcome-on-release`](/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags),因為沒有此旗標的執行器會從其起始分支恢復工作階段。具有此旗標的執行器會在釋放之前盡力推送工作階段的結果分支,恢復的工作階段便會從這些提交開始。推送會使用執行器主機本身的 git 憑證,包括在使用 [Anthropic 管理的 git](#use-the-anthropic-git-proxy) 的執行器上。未提交的變更仍會遺失。

698 * **使用 `checkout` hook 時**:透過 [`checkout` 生命週期 hook](/docs/zh-TW/self-hosted-environments-configuration#checkout) 簽出的儲存庫不會被推送。請改為從 [`post-session` hook](/docs/zh-TW/self-hosted-environments-configuration#post-session) 建立這些儲存庫的快照。

584 * **啟用旗標之前**:限制誰可以推送到來源遠端上的 `claude/*` refs。在恢復時,執行器會提取先前推送的分支,而不驗證是誰推送的。699 * **啟用旗標之前**:限制誰可以推送到來源遠端上的 `claude/*` refs。在恢復時,執行器會提取先前推送的分支,而不驗證是誰推送的。

585* **工作階段中途新增的儲存庫可能無法複製**:Claude 透過 HTTPS 使用 `git clone` 複製它。在未使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器上,如果主機上沒有任何項目能讀取該儲存庫,複製會因 git 身分驗證錯誤而失敗。在可行的情況下,請在建立工作階段時選擇工作階段需要的每個儲存庫。700* **工作階段中途新增的儲存庫可能無法複製**:Claude 透過 HTTPS 使用 `git clone` 複製它。在未使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器上,如果主機上沒有任何項目能讀取該儲存庫,複製會因 git 身分驗證錯誤而失敗。在可行的情況下,請在建立工作階段時選擇工作階段需要的每個儲存庫。

586* **某些連接器不出現在自託管工作階段中**:您在 claude.ai Settings 中尚未連接的連接器不在自託管工作階段中列出,工作階段不會提示您連接它。首先在 Settings 中連接它,然後啟動新工作階段。將連接器添加到已執行的工作階段也不會使其工具可用於 Claude;啟動新工作階段以拾取新添加的連接器。701* **某些連接器不出現在自託管工作階段中**:您在 claude.ai Settings 中尚未連接的連接器不在自託管工作階段中列出,工作階段不會提示您連接它。首先在 Settings 中連接它,然後啟動新工作階段。將連接器添加到已執行的工作階段也不會使其工具可用於 Claude;啟動新工作階段以拾取新添加的連接器。


606* **執行器不出現在環境中**:確認主機可以通過 HTTPS 到達 `api.anthropic.com`,環境祕密是最新的,主機時鐘在真實時間的五分鐘內;更大的偏差導致身份驗證失敗。執行器在身份驗證失敗時記錄 `[runner:fatal]` 及拒絕原因。721* **執行器不出現在環境中**:確認主機可以通過 HTTPS 到達 `api.anthropic.com`,環境祕密是最新的,主機時鐘在真實時間的五分鐘內;更大的偏差導致身份驗證失敗。執行器在身份驗證失敗時記錄 `[runner:fatal]` 及拒絕原因。

607* **執行器在啟動時以 `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 之前,執行器在啟動時沒有檢查基本目錄,此配置錯誤在拾取後失敗工作階段。

608* **工作階段保持排隊**:每個線上執行器可能被鎖定到不同的所有者。檢查每個執行器的 `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)。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)。

609* **工作階段在拾取後立即失敗**:在 claude.ai/code 中打開工作階段以查看錯誤。最常見的原因是執行器映像中缺少 [Git 認證](#configure-git)和未安裝的構建工具。不可寫的基本目錄在啟動時停止執行器,而不是失敗工作階段。請參閱此清單中的**執行器在啟動時以 `cannot create or write to base directory` 退出**項。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` 退出**項目。

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)。

610* **工作階段無法通過身份驗證出站代理到達網路**:當您使用 [`--proxy-authorization-command` 或 `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) 設定的來源失敗、在 30 秒後超時或產生空值時,執行器以 `502 Bad Gateway` 回答該連接並記錄原因。執行器在該日誌中編輯命令的 stderr,永遠不記錄標頭值。使用 `--proxy-authorization-command`,自己在主機上執行命令以確認它在 stdout 上列印整個標頭值。如果執行器改為在啟動時以 `could not start the proxy-authorization listener` 退出,它無法打開其環回偵聽器。726* **工作階段無法通過身份驗證出站代理到達網路**:當您使用 [`--proxy-authorization-command` 或 `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) 設定的來源失敗、在 30 秒後超時或產生空值時,執行器以 `502 Bad Gateway` 回答該連接並記錄原因。執行器在該日誌中編輯命令的 stderr,永遠不記錄標頭值。使用 `--proxy-authorization-command`,自己在主機上執行命令以確認它在 stdout 上列印整個標頭值。如果執行器改為在啟動時以 `could not start the proxy-authorization listener` 退出,它無法打開其環回偵聽器。

611* **執行器記錄 `Poll failed` 行包含 `rejecting the malformed poll response`**:執行器接收到工作輪詢回應,其主體不是隊列的預期 JSON,最常見的原因是執行器和 `api.anthropic.com` 之間的某些內容(例如攔截代理或強制入口網站)以自己的頁面回答。執行器拒絕回應,在 `claude_code_self_hosted_runner_poll_errors_total` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)的 `transport` 種類下計數,並在[工作階段生命週期](/docs/zh-TW/self-hosted-environments#session-lifecycle)中描述的失敗輪詢時間表上重試。執行器保持服務其活躍工作階段。配置代理以從 `api.anthropic.com` 無更改地傳遞回應。在 v2.1.246 之前,執行器將此類回應讀取為空工作隊列,這可能結束其活躍工作階段或使其退出。727* **執行器記錄 `Poll failed` 行包含 `rejecting the malformed poll response`**:執行器接收到工作輪詢回應,其主體不是隊列的預期 JSON,最常見的原因是執行器和 `api.anthropic.com` 之間的某些內容(例如攔截代理或強制入口網站)以自己的頁面回答。執行器拒絕回應,在 `claude_code_self_hosted_runner_poll_errors_total` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)的 `transport` 種類下計數,並在[工作階段生命週期](/docs/zh-TW/self-hosted-environments#session-lifecycle)中描述的失敗輪詢時間表上重試。執行器保持服務其活躍工作階段。配置代理以從 `api.anthropic.com` 無更改地傳遞回應。在 v2.1.246 之前,執行器將此類回應讀取為空工作隊列,這可能結束其活躍工作階段或使其退出。

612* **工作階段的分支不再存在於遠端**:對於工作階段僅從中讀取的 Git 來源,執行器跳過該來源並在其餘來源上繼續。對於工作階段推送結果的來源,已刪除的分支(通常因為它被合併並自動刪除)使工作階段失敗,並出現命名儲存庫和分支的錯誤,要求您恢復分支並重試。當跳過會使其沒有儲存庫時,執行器使用相同的錯誤使工作階段失敗。在 v2.1.228 之前,此類工作階段在空目錄中啟動。728* **工作階段的分支不再存在於遠端**:對於工作階段僅從中讀取的 Git 來源,執行器跳過該來源並在其餘來源上繼續。對於工作階段推送結果的來源,已刪除的分支(通常因為它被合併並自動刪除)使工作階段失敗,並出現命名儲存庫和分支的錯誤,要求您恢復分支並重試。當跳過會使其沒有儲存庫時,執行器使用相同的錯誤使工作階段失敗。在 v2.1.228 之前,此類工作階段在空目錄中啟動。


616 732 

617 存取檢查在每次工作階段在執行器上啟動時再次執行,因此一旦執行器的 Git 身份具有讀取存取權限,下一次啟動會複製儲存庫。在 v2.1.274 之前,這些拒絕中的每一個都失敗了工作階段啟動。733 存取檢查在每次工作階段在執行器上啟動時再次執行,因此一旦執行器的 Git 身份具有讀取存取權限,下一次啟動會複製儲存庫。在 v2.1.274 之前,這些拒絕中的每一個都失敗了工作階段啟動。

618* **工作階段需要幾分鐘才能啟動**:初始複製通常主導。觀看 `claude_code_self_hosted_runner_session_init_duration_seconds` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)以確認,並使用[預熱簽出](#reuse-a-pre-warmed-checkout)或較小的 `CLAUDE_RUNNER_FETCH_DEPTH` 切割複製。734* **工作階段需要幾分鐘才能啟動**:初始複製通常主導。觀看 `claude_code_self_hosted_runner_session_init_duration_seconds` [指標](/docs/zh-TW/self-hosted-environments-reference#prometheus-metrics)以確認,並使用[預熱簽出](#reuse-a-pre-warmed-checkout)或較小的 `CLAUDE_RUNNER_FETCH_DEPTH` 切割複製。

619* **輪次以 401 失敗**:每個工作階段使用執行器從 Anthropic 獲取並通過工作階段的 stdin 輪換的短期 [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 來驗證模型呼叫。當輪次以來自模型 API 的 401 或 403 結束時,執行器獲取新令牌並將其傳遞給工作階段。失敗的輪次不會重試。735* **回合以 401 失敗**:當回合以來自 Anthropic API 的 401 或 403 結束時,執行器會從 Anthropic 取得新的 [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 並將其傳遞給工作階段。失敗的回合不會重試。此 token 為短期有效,執行器會透過工作階段的 stdin 輪換它。

620 736 

621 當獲取失敗時,執行器記錄 `inference_token refresh failed` 行,說明何時會重試,並且只要工作階段運行就會繼續重試。737 當獲取失敗時,執行器記錄 `inference_token refresh failed` 行,說明何時會重試,並且只要工作階段運行就會繼續重試。

622 738 


637 753 

638* **正常退出**:執行器完成了其工作階段並清空、達到其退休時間或被告知停止。重新啟動它以便環境再次具有容量。[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)描述這些退出。754* **正常退出**:執行器完成了其工作階段並清空、達到其退休時間或被告知停止。重新啟動它以便環境再次具有容量。[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)描述這些退出。

639* **失敗的啟動**:執行器無法使用給定的設定或主機啟動,因此它在啟動後幾秒鐘退出,每次您重新啟動它時都以相同的方式退出。更快地重新啟動它沒有幫助。有人需要閱讀其輸出並修復原因。755* **失敗的啟動**:執行器無法使用給定的設定或主機啟動,因此它在啟動後幾秒鐘退出,每次您重新啟動它時都以相同的方式退出。更快地重新啟動它沒有幫助。有人需要閱讀其輸出並修復原因。

756* **失去聯繫**:無法連線到 Anthropic 的時間超過其[租約](/docs/zh-TW/self-hosted-environments#session-lifecycle)的執行器(例如在其主機休眠期間)可能會從環境中移除。當已移除的執行器重新連線時,它會退出。其日誌中可能會出現包含 `runner record gone server-side` 的 `[runner:fatal]` 行,或在較長的中斷之後出現 [`poll auth failed`](/docs/zh-TW/self-hosted-environments-quickstart#set-up-an-environment-and-runner)。執行器不會自行重新註冊,因此請重新啟動它。

640 757 

641配置您的監督程序以在執行器退出時重新啟動它,在執行器持續在啟動後立即退出時等待更長時間再重新啟動,並在這種情況持續發生時告知某人。758配置您的監督程序以在執行器退出時重新啟動它,在執行器持續在啟動後立即退出時等待更長時間再重新啟動,並在這種情況持續發生時告知某人。

642 759 

Details

195 195 

196包裝器在 `CLAUDE_RUNNER_CLAUDE_BIN` 中接收執行者自身二進位檔案的絕對路徑;使用該路徑而不是 PATH 解析的 `claude`,以便解碼在執行者本身使用的相同二進位檔案上執行。196包裝器在 `CLAUDE_RUNNER_CLAUDE_BIN` 中接收執行者自身二進位檔案的絕對路徑;使用該路徑而不是 PATH 解析的 `claude`,以便解碼在執行者本身使用的相同二進位檔案上執行。

197 197 

198使用 `jq -re` 而不是 `jq -r`,以便遺漏的聲明導致非零退出。僅使用 `-r`,遺漏的聲明會列印字面字串 `null` 並以零退出,這會無聲地將壞值傳遞到下游。僅當 JWKS 端點無法到達的離線檢查時,才將 `--no-verify` 傳遞給 `decode-token`。198使用 `jq -re` 而不是 `jq -r`,以便遺漏的聲明導致非零退出。僅使用 `-r`,遺漏的聲明會列印字面字串 `null` 並以零退出,這會無聲地將壞值傳遞到下游。

199 

200如果 `decode-token` 無法從 JWKS 端點取得金鑰或無法驗證 token,它會將原因列印到 stderr,不列印任何聲明,並以代碼 1 退出。僅當 JWKS 端點無法到達的離線檢查時,才將 `--no-verify` 傳遞給 `decode-token`。

199 201 

200<h2 id="claims-reference">202<h2 id="claims-reference">

201 聲明參考203 聲明參考

Details

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* 與實時同步的時鐘,例如使用 NTP。當時鐘偏差超過五分鐘時,驗證失敗;請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。38* 與實時同步的時鐘,例如使用 NTP。當時鐘偏差超過五分鐘時,驗證失敗;請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。

38 39 

39<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


57 設定環境和執行器58 設定環境和執行器

58</h2>59</h2>

59 60 

60Claude Code 包含引導式設定:一個互動式 Claude Code 工作階段,引導您在管理 UI 中建立環境、使用您保存的密鑰檔案啟動本機執行器、確認執行器註冊,並將速查表寫入 `./runner-setup/CHEAT-SHEET.md`。在您已使用持有擁有者角色的帳戶使用 `claude auth login` 登入的機器上執行它;它不適用於 API 金鑰或第三方模型提供者。在無法進行互動式工作階段的主機上,改為使用下面的手動步驟。首先確認[版本檢查](#software-on-the-runner-host)已通過:在 2.1.224 之前的版本上,此命令會啟動一個普通的 Claude 工作階段,將這些詞作為提示,而不是引導式設定。若要啟動引導式設定,請執行設定子命令並按照提示進行:61使用[引導式設定](#run-the-guided-setup)或[手動步驟](#set-up-manually)。引導式設定是單一命令,會啟動互動式 Claude Code 工作階段,並引導您完成其餘步驟。在無法進行互動式工作階段的主機上,請改用手動步驟。當持有擁有者角色的人員已建立環境並將其密鑰交給您時,也請使用手動步驟,因為引導式設定需要以擁有者身分登入。

62 

63<h3 id="run-the-guided-setup">

64 執行引導式設定

65</h3>

66 

67引導式設定會引導您在管理 UI 中建立環境、使用您保存的密鑰檔案啟動本機執行器、確認執行器註冊,並將速查表寫入 `./runner-setup/CHEAT-SHEET.md`。執行之前,請確認您的登入狀態和版本:

68 

69* **登入**:在您已使用持有擁有者角色的帳戶透過 `claude auth login` 登入的機器上執行它。若僅使用 API 金鑰或第三方模型提供者,工作階段會啟動,但其組織檢查會失敗。

70* **版本**:確認[版本檢查](#software-on-the-runner-host)已通過。在 2.1.224 之前的版本上,setup 命令會啟動一個 Claude 工作階段,將這些字詞作為提示詞,而不是引導式設定。

71 

72若要啟動引導式設定,請在您的 shell 中執行設定子命令並按照提示進行:

61 73 

62```bash theme={null}74```bash theme={null}

63claude self-hosted-runner setup75claude self-hosted-runner setup

64```76```

65 77 

66若要改為手動設定:78設定本身不會啟動測試工作階段:它會告訴您在 claude.ai/code 啟動一個。設定的最後一步會停止它所啟動的執行器。如果您在該步驟之前離開設定,執行器會繼續執行。若要在最後一步之後繼續,請在您的 shell 中使用 `./runner-setup/CHEAT-SHEET.md` 中的命令再次啟動執行器,然後[將工作階段路由到環境](#route-a-session)。

79 

80<h3 id="set-up-manually">

81 手動設定

82</h3>

83 

84在 claude.ai 上建立環境,從主機上的終端機啟動執行器,然後返回 claude.ai 確認執行器出現,並將工作階段路由到它。如果持有擁有者角色的人員已建立環境並將其密鑰交給您,請從步驟 2 開始。

67 85 

68<Steps>86<Steps>

69 <Step title="建立環境">87 <Step title="建立環境">


73 </Step>91 </Step>

74 92 

75 <Step title="啟動執行器">93 <Step title="啟動執行器">

76 建立密鑰目錄。此步驟和下一步需要 root 用於 `/etc/claude` 路徑;執行器程序可以讀取的任何路徑都有效,因此如果您使用不同的路徑,請一起調整兩個命令和 `--environment-secret-file` 值。94 建立密鑰目錄。此命令和下一個命令使用 `/etc/claude`,這需要 root,且它們建立的密鑰檔案只能由執行它們的使用者讀取。如果執行器將以其他使用者身分執行,它會以 `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')` 退出。在這種情況下,請以執行器的使用者身分執行這兩個命令,並使用該使用者可寫入的目錄取代 `/etc/claude`,然後將相同路徑傳遞給 `--environment-secret-file`。執行器程序可以讀取的任何路徑都有效。

77 95 

78 ```bash theme={null}96 ```bash theme={null}

79 mkdir -p /etc/claude97 mkdir -p /etc/claude


89 107 

90 如果執行器無法建立或寫入路徑,它在啟動時會以命名目錄的錯誤退出,而不是註冊。請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。108 如果執行器無法建立或寫入路徑,它在啟動時會以命名目錄的錯誤退出,而不是註冊。請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。

91 109 

92 然後使用 `--environment-secret-file` 和 `--base-dir` 啟動執行器。執行器向您的環境註冊並開始輪詢工作。如果執行器退出,請手動重新啟動它。生產部署在編排器下執行執行器,該編排器重新啟動已退出的執行器,通常每次重新啟動時使用新的檔案系統;[重複使用預先準備的簽出](/docs/zh-TW/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout)涵蓋支援的持久磁碟設定。110 然後使用 `--environment-secret-file` 和 `--base-dir` 啟動執行器:

93 111 

94 ```bash theme={null}112 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```114 ```

115 

116 執行器向您的環境註冊後會記錄 `Registered: runner_id=<runner-id>`,然後開始輪詢工作。如果執行器之後退出,請自行重新啟動它。有關何時會發生這種情況,請參閱[如果執行器退出](#if-the-runner-exits)。

97 </Step>117 </Step>

98 118 

99 <Step title="驗證執行器出現">119 <Step title="驗證執行器出現">

100 返回[**雲端環境**頁面](https://claude.ai/admin-settings/cloud-environments)。您的環境狀態在執行器啟動後幾秒內從**未部署執行器**變更為**健康**;開啟環境並選擇**活動**以查看執行器本身。120 返回[**雲端環境**頁面](https://claude.ai/admin-settings/cloud-environments)。您的環境狀態在執行器啟動後幾秒內從**未部署執行器**變更為**健康**;開啟環境並選擇**活動**以查看執行器本身。如果您無法存取管理頁面,上一步執行器日誌中的 `Registered: runner_id=<runner-id>` 行可提供相同的訊號。

101 </Step>121 </Step>

102 122 

103 <Step title="將工作階段路由到環境">123 <Step title="將工作階段路由到環境">

104 在 claude.ai/code 啟動工作階段,並從環境選擇器中選擇您的環境,其中自託管環境與 Anthropic 託管的環境並排出現。執行器使用主機已有的任何 git 認證進行複製,因此選擇此主機已可以複製的存放庫,或公開存放庫;生產中私有存放庫的認證選項在[設定 git](/docs/zh-TW/self-hosted-environments-deploy#configure-git)。下一個可用的執行器會拾取佇列中的工作階段,並記錄 `Picked up session <session-id>` 以及其活動計數和容量,因此您可以從執行器自己的輸出確認哪個主機接收了工作階段。在 [claude.ai/code](https://claude.ai/code) 觀看工作階段工作並閱讀 Claude 的回覆。如果工作階段保持佇列狀態,請參閱[疑難排解](/docs/zh-TW/self-hosted-environments-deploy#troubleshooting)。124 <span id="route-a-session" />在 claude.ai/code 啟動工作階段,並從環境選擇器中選擇您的環境,其中自託管環境與 Anthropic 託管的環境並排出現。對於儲存庫,請選擇[先決條件](#host-and-network)中的儲存庫:公開儲存庫,或此主機已可以複製的儲存庫。執行器使用主機已有的任何 git 憑證進行複製。

125 

126 下一個可用的執行器會拾取佇列中的工作階段,並記錄 `Picked up session <session-id>` 以及其活動計數和容量,因此您可以從執行器自己的輸出確認哪個主機接收了工作階段。在 [claude.ai/code](https://claude.ai/code) 觀看工作階段工作並閱讀 Claude 的回覆。

127 

128 如果工作階段沒有開始工作,請對照您看到的情況:

129 

130 * **工作階段保持佇列狀態**:請參閱[疑難排解](/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),其中也涵蓋了生產環境中私有儲存庫的憑證選項。

105 </Step>132 </Step>

106</Steps>133</Steps>

107 134 

108執行器在其活動工作階段完成後按設計退出;請參閱[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)。對於生產環境,在編排器下部署它,該編排器在退出時重新啟動它,並在執行器啟動後立即持續退出時等待更長的時間再重新啟動。請參閱[部署到生產環境](/docs/zh-TW/self-hosted-environments-deploy)和[當執行器退出時](/docs/zh-TW/self-hosted-environments-deploy#when-the-runner-exits)。135<h3 id="if-the-runner-exits">

136 如果執行器退出

137</h3>

138 

139如果執行器在此快速入門期間退出,請使用相同的命令再次啟動它。執行器可能會自行退出:

140 

141* **工作階段已完成**:日誌顯示 `[runner:exit] account workload drained — exiting`。執行器在其活動工作階段完成後按設計退出。請參閱[執行器生命週期](/docs/zh-TW/self-hosted-environments#runner-lifecycle)。

142* **失去聯繫**:日誌顯示一行 `[runner:fatal]`,並帶有 `runner record gone server-side` 或 `poll auth failed`。如果執行器與 Anthropic 失去聯繫一段時間,例如因為主機進入睡眠狀態,它可能會在下次連線到 Anthropic 時退出。

143 

144完成一個回合並不會結束您的測試工作階段。第一個回合之後,工作階段仍處於附加狀態,執行器也仍在執行,因此您可以[向工作階段傳送後續訊息](#send-a-follow-up-message-to-a-running-session),而無需先重新啟動執行器。

145 

146對於生產環境,在編排器下部署執行器,該編排器在退出時重新啟動它,並在執行器啟動後立即持續退出時等待更長的時間再重新啟動。請參閱[部署到生產環境](/docs/zh-TW/self-hosted-environments-deploy)和[當執行器退出時](/docs/zh-TW/self-hosted-environments-deploy#when-the-runner-exits)。

109 147 

110<h2 id="send-a-follow-up-message-to-a-running-session">148<h2 id="send-a-follow-up-message-to-a-running-session">

111 傳送後續訊息到執行中的工作階段149 傳送後續訊息到執行中的工作階段

Details

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 在轉向完成或工作階段等待使用者操作後,在 N 分鐘的不活動後釋放工作階段槽。仍在進行中轉向的工作階段(包括持有永不完成的背景工作或從執行中工具呼叫內部請求的批准的工作階段)不計為閒置;與 `--kill-session-after-min` 配對作為硬後擋。在工作階段的背景工作完成後,執行器將工作階段視為忙碌,直到讀取結果的後續轉向開始,最多 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 視窗。在執行器接收到關閉信號或達到其退休時間之前,留下執行器沒有活動工作階段的釋放會啟動與正常排空相同的退出路徑,由 `--drain-grace-sec` 管理。在您使用 [`--defer-shutdown-max-min`](/docs/zh-TW/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal) 延遲的第一個信號之後,執行器在釋放使其不持有任何工作階段時立即退出。`0` 停用。 |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 在轉向完成或工作階段等待使用者操作後,在 N 分鐘的不活動後釋放工作階段槽。仍在進行中轉向的工作階段(包括持有永不完成的背景工作或從執行中工具呼叫內部請求的批准的工作階段)不計為閒置;與 `--kill-session-after-min` 配對作為硬後擋。在工作階段的背景工作完成後,執行器將工作階段視為忙碌,直到讀取結果的後續轉向開始,最多 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 視窗。在執行器接收到關閉信號或達到其退休時間之前,留下執行器沒有活動工作階段的釋放會啟動與正常排空相同的退出路徑,由 `--drain-grace-sec` 管理。在您使用 [`--defer-shutdown-max-min`](/docs/zh-TW/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal) 延遲的第一個信號之後,執行器在釋放使其不持有任何工作階段時立即退出。`0` 停用。 |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 關閉 | 當工作階段在此執行器上結束時,移除 `<base-dir>/_sessions/` 下的工作階段的每個工作階段目錄,無論結果如何。[重複使用預先加熱的簽出](/docs/zh-TW/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout)描述它們持有的內容以及當它們保留時誰可以讀取它們。移除是盡力而為:當執行器被終止或在清理執行之前達到其排空期限時,每個工作階段目錄保留在原位。啟用旗標後,失敗或中斷的工作階段的偵錯日誌不會保留在磁碟上。需要 Claude Code v2.1.268 或更新版本。 |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 關閉 | 當工作階段在此執行器上結束時,移除 `<base-dir>/_sessions/` 下的工作階段的每個工作階段目錄,無論結果如何。[重複使用預先加熱的簽出](/docs/zh-TW/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout)描述它們持有的內容以及當它們保留時誰可以讀取它們。移除是盡力而為:當執行器被終止或在清理執行之前達到其排空期限時,每個工作階段目錄保留在原位。啟用旗標後,失敗或中斷的工作階段的偵錯日誌不會保留在磁碟上。需要 Claude Code v2.1.268 或更新版本。 |

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| `--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` 掛鉤需要更多時間,請提高該值。 |

56| `--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)上的初始化信號清除,而不是普通輸出,之後 `--release-idle-session-min` 接管。`0` 停用。 |

57| `--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)無論此旗標如何都掃描它們。 |

58| `--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) 而不是客戶管理的 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 或更新版本;否則執行器拒絕啟動。取代重寫旗標。 |

59 60 

60大多數持續時間旗標都有最大值,選擇以將每個逾時保持在執行時間的 32 位元計時器上限內,大約 24.85 天。`--*-min` 旗標上限為 10080 分鐘,7 天;`--drain-grace-sec` 為 604800 秒,也是 7 天;`--drain-wait-sec` 為 86400 秒,24 小時。`--session-stop-grace-sec` 和 `--post-session-hook-timeout-sec` 無上限。超過上限的行為因表面而異:61大多數持續時間旗標都有最大值,選擇以將每個逾時保持在執行時間的 32 位元計時器上限內,大約 24.85 天。`--*-min` 旗標上限為 10080 分鐘,7 天;`--drain-grace-sec` 為 604800 秒,也是 7 天;`--drain-wait-sec` 為 86400 秒,24 小時。`--session-stop-grace-sec` 和 `--post-session-hook-timeout-sec` 無上限。超過上限的行為因表面而異:

61 62 

62* **旗標**:啟動失敗並出現錯誤。63* **旗標**:啟動失敗並出現錯誤。

63* **環境變數**:執行器將值夾住到計時器上限,而不是拒絕它。64* **環境變數**:執行器將值夾住到計時器上限,而不是拒絕它。

64 65 

66<h3 id="auto-mode-rule-lists">

67 自動模式規則清單

68</h3>

69 

70`--server-auto-mode-lists` 讓您決定哪些來自執行器外部的[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器規則可以送達您執行器上的工作階段。Anthropic 的控制平面可以隨工作階段傳送規則清單,並要求執行器套用它們。其中某些項目可能是您組織的管理員所撰寫的規則。這些清單為 `environment`、`soft_deny` 和 `allow`:

71 

72* **`environment`**:項目可以讓分類器允許更多,也可以允許更少。

73* **`soft_deny`**:項目會封鎖某個動作,除非使用者明確要求該動作或適用某個 `allow` 例外。

74* **`allow`**:`soft_deny` 項目的例外。

75 

76旗標的值決定執行器套用哪些清單:

77 

78* **`no-allow`**:預設值。套用 `environment` 和 `soft_deny`,並保留 `allow` 不套用。`environment` 項目仍然可以讓分類器允許更多,因此預設值並不會排除所有放寬。

79* **`all`**:套用全部三個清單。

80* **`none`**:一個都不套用。選擇 `none` 可排除來自這些清單的所有放寬。它也會捨棄 `soft_deny` 的限制。

81 

82沒有任何執行器設定能讓控制平面要求執行器套用這些清單。當控制平面未提出要求時,無論您如何設定,工作階段都不會收到任何清單。若要查看實際發生的情況,請使用 `--log-level debug` 啟動執行器。執行器接著會為每個工作階段記錄一行包含 `the server asked this runner to apply` 的日誌,或一行包含 `the server did not ask this runner to apply the auto mode lists it sends` 的日誌。

83 

65<h2 id="orchestrator-cli-flags">84<h2 id="orchestrator-cli-flags">

66 協調器 CLI 旗標85 協調器 CLI 旗標

67</h2>86</h2>


72| :- | :- | :- |91| :- | :- | :- |

73| `--hook-concurrency <n>` | `4` | 最大 `spawn-runner` 掛鉤並行執行。也限制每次輪詢聲稱多少個產生請求。 |92| `--hook-concurrency <n>` | `4` | 最大 `spawn-runner` 掛鉤並行執行。也限制每次輪詢聲稱多少個產生請求。 |

74| `--hook-timeout <sec>` | `60` | 在此許多秒後終止掛鉤的程序樹。逾時加上其 5 秒終止寬限期必須保持在 `--expected-spawn-seconds` 以下;協調器在啟動時強制執行此項。 |93| `--hook-timeout <sec>` | `60` | 在此許多秒後終止掛鉤的程序樹。逾時加上其 5 秒終止寬限期必須保持在 `--expected-spawn-seconds` 以下;協調器在啟動時強制執行此項。 |

75| `--expected-spawn-seconds <sec>` | `120` | 產生的執行器的預期 p99 啟動時間,在伺服器強制的範圍 10 到 3600 內。在每次輪詢時作為伺服器端租約發送;如果沒有執行器在其經過前註冊,工作階段會以新訂單 ID 重新提供。所有副本必須共享此值。 |94| `--expected-spawn-seconds <sec>` | `120` | 從協調器收到產生請求到執行器註冊為止的預期 p99 時間,包括在您的平台上等待容量的任何時間。伺服器強制的範圍為 10 到 3600。在每次輪詢時作為伺服器端租約發送:如果沒有執行器在其經過前註冊,工作階段會以新訂單 ID 重新提供。所有副本必須共享此值。 |

76| `--min-idle <n>` | `0` | 通過主動產生待命執行器來保持至少 N 個閒置工作階段槽空閒。`0` 停用預熱。與執行器的 `--exit-if-unused-min` 配對,以便多餘的待命執行器回收自己。 |95| `--min-idle <n>` | `0` | 通過主動產生待命執行器來保持至少 N 個閒置工作階段槽空閒。`0` 停用預熱。與執行器的 `--exit-if-unused-min` 配對,以便多餘的待命執行器回收自己。 |

77| `--debug-dir <path>` | 未設定 | 將每個產生請求的工作訂單和掛鉤 stderr 寫入磁碟。僅用於偵錯;永遠不要在生產環境中設定。 |96| `--debug-dir <path>` | 未設定 | 將每個產生請求的工作訂單和掛鉤 stderr 寫入磁碟。僅用於偵錯;永遠不要在生產環境中設定。 |

78 97 


108| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | 執行器在轉向完成後計算工作階段忙碌的上限時間,用於 `--drain-wait-sec` 排空,而工作階段的程序向 Anthropic 報告轉向的結束。`0` 或無法使用的值回退到預設值,因此無法關閉保持。需要 Claude Code v2.1.275 或更新版本。 |127| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | 執行器在轉向完成後計算工作階段忙碌的上限時間,用於 `--drain-wait-sec` 排空,而工作階段的程序向 Anthropic 報告轉向的結束。`0` 或無法使用的值回退到預設值,因此無法關閉保持。需要 Claude Code v2.1.275 或更新版本。 |

109| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | 執行器等待作業系統將 `SIGKILL` 傳遞到卡在不可中斷 I/O 中的子程序的時間,然後自己退出。下限為 `--post-session-hook-timeout-sec` 加 15 秒,以及設定 `--push-outcome-on-release` 時的 30 秒,因此有效最小值在預設值為 75 秒。 |128| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | 執行器等待作業系統將 `SIGKILL` 傳遞到卡在不可中斷 I/O 中的子程序的時間,然後自己退出。下限為 `--post-session-hook-timeout-sec` 加 15 秒,以及設定 `--push-outcome-on-release` 時的 30 秒,因此有效最小值在預設值為 75 秒。 |

110| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | 新複製的 git 提取深度。設定正整數,或 `full` 或 `0` 以進行完整提取。工作區中已存在的存放庫保持其現有深度。 |129| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | 新複製的 git 提取深度。設定正整數,或 `full` 或 `0` 以進行完整提取。工作區中已存在的存放庫保持其現有深度。 |

130| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | 每次嘗試中,當 git 伺服器本身的進度數字持續上升時(例如伺服器為大型儲存庫準備 pack 時),git 提取可等待第一筆資料的時間(以毫秒為單位)。`0` 或 `off` 會關閉此等待:此類提取在兩分鐘內沒有資料時即會被中斷。其他任何整數會被限制在 `120000` 到 `1800000` 之間,即 2 到 30 分鐘。需要 Claude Code v2.1.295 或更新版本。 |

111| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | 未設定 | 當 `1` 時,在 `checkout` 掛鉤執行後跳過 `.git` 存在檢查。當您的掛鉤具體化非 git 來源時設定此項。 |131| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | 未設定 | 當 `1` 時,在 `checkout` 掛鉤執行後跳過 `.git` 存在檢查。當您的掛鉤具體化非 git 來源時設定此項。 |

112| `FORCE_AUTOUPDATE_PLUGINS` | 未設定 | 當 `1` 時,即使二進位檔被固定,也讓外掛程式市場自動更新 |132| `FORCE_AUTOUPDATE_PLUGINS` | 未設定 | 當 `1` 時,即使二進位檔被固定,也讓外掛程式市場自動更新 |

113| `CLAUDE_CODE_DISABLE_ARTIFACT` | 未設定 | 當 `1` 時,無論組織的管理員設定如何,都在工作階段中停用 Artifact 工具,並放棄 `*.frame.claudeusercontent.com` 出口要求 |133| `CLAUDE_CODE_DISABLE_ARTIFACT` | 未設定 | 當 `1` 時,無論組織的管理員設定如何,都在工作階段中停用 Artifact 工具,並放棄 `*.frame.claudeusercontent.com` 出口要求 |


178| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | 按類型累積 PollSpawnHints 失敗:`transport`、`timeout`、`5xx`、`429` 或 `4xx`。所有五個序列都從程序啟動開始存在;在 `rate(...[5m]) > 0` 時發出警報。 |198| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | 按類型累積 PollSpawnHints 失敗:`transport`、`timeout`、`5xx`、`429` 或 `4xx`。所有五個序列都從程序啟動開始存在;在 `rate(...[5m]) > 0` 時發出警報。 |

179| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | 現在可聲稱的產生請求 |199| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | 現在可聲稱的產生請求 |

180| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | 在可重試掛鉤失敗後退避重試的產生請求 |200| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | 在可重試掛鉤失敗後退避重試的產生請求 |

181| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | 被阻止的產生請求,直到擁有者從環境的**活動**標籤重試它們;如果高於零則發出警報 |201| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | 被阻止產生的工作階段。每個工作階段會持續被阻止,直到使用者傳送新訊息給它,或擁有者從環境的**活動**標籤重試它。修正原因後,計數可能仍維持在零以上。如果高於零則發出警報。 |

182| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | 等待此環境中執行器的總工作階段。環境範圍的聚合,在每個協調器實例上相同:在實例之間使用 `MAX` 而不是 `SUM`。 |202| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | 等待此環境中執行器的總工作階段。環境範圍的聚合,在每個協調器實例上相同:在實例之間使用 `MAX` 而不是 `SUM`。 |

183| `claude_code_self_hosted_orchestrator_pool_active_sessions` | 目前指派給此環境中活著執行器的工作階段。環境範圍的聚合,在每個協調器實例上相同:在實例之間使用 `MAX` 而不是 `SUM`。 |203| `claude_code_self_hosted_orchestrator_pool_active_sessions` | 目前指派給此環境中活著執行器的工作階段。環境範圍的聚合,在每個協調器實例上相同:在實例之間使用 `MAX` 而不是 `SUM`。 |

184| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | 累積 `spawn-runner` 掛鉤結果:`ok`、`retryable`、`non_retryable`。計數協調器掛鉤呼叫,而不是執行器產生的工作階段子程序:不可與 `sessions_started_total` 比較,因為容量高於 1、暖池和為同一工作階段再次產生的執行器都使兩者分歧。 |204| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | 累積 `spawn-runner` 掛鉤結果:`ok`、`retryable`、`non_retryable`。計數協調器掛鉤呼叫,而不是執行器產生的工作階段子程序:不可與 `sessions_started_total` 比較,因為容量高於 1、暖池和為同一工作階段再次產生的執行器都使兩者分歧。 |


251 for: 5m271 for: 5m

252 labels: {severity: warning}272 labels: {severity: warning}

253 annotations:273 annotations:

254 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個工作階段初始化失敗(簽出掛鉤 / git / 權杖 / 初始化前崩潰)"274 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個工作階段初始化失敗(簽出 hook / git / 權杖 / 初始化前崩潰)"

255 - alert: ClaudeRunnerPollErrors275 - alert: ClaudeRunnerPollErrors

256 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0276 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0

257 for: 2m277 for: 2m


263 for: 5m283 for: 5m

264 labels: {severity: warning}284 labels: {severity: warning}

265 annotations:285 annotations:

266 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個 SessionStart 掛鉤失敗"286 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個 SessionStart hook 失敗"

267 287 

268 - name: claude-code-self-hosted-orchestrator288 - name: claude-code-self-hosted-orchestrator

269 rules:289 rules:


278 for: 2m298 for: 2m

279 labels: {severity: warning}299 labels: {severity: warning}

280 annotations:300 annotations:

281 summary: "協調器 {{ $labels.pod }} 已超過 90 秒未輪詢(輪詢迴圈等待掛鉤執行)"301 summary: "協調器 {{ $labels.pod }} 已超過 90 秒未輪詢(輪詢迴圈等待 hook 執行)"

282 - alert: ClaudeOrchestratorCircuitBroken302 - alert: ClaudeOrchestratorCircuitBroken

283 expr: claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions > 0303 expr: claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions > 0

284 for: 1m304 for: 1m

285 labels: {severity: critical}305 labels: {severity: critical}

286 annotations:306 annotations:

287 summary: "{{ $value }} 個工作階段斷路 — spawn-runner 掛鉤重複不可重試;修復基礎設施然後從活動標籤重試"307 summary: "被阻止產生的工作階段:{{ $value }}。在活動標籤中閱讀每個工作階段的錯誤,修正原因,然後選取重試"

288 - alert: ClaudeOrchestratorPollErrors308 - alert: ClaudeOrchestratorPollErrors

289 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0309 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

290 for: 2m310 for: 2m


296 for: 5m316 for: 5m

297 labels: {severity: warning}317 labels: {severity: warning}

298 annotations:318 annotations:

299 summary: "協調器 {{ $labels.pod }}:5 分鐘內 >3 個 spawn-runner 掛鉤失敗"319 summary: "協調器 {{ $labels.pod }}:5 分鐘內 >3 個 spawn-runner hook 失敗"

300```320```

301 321 

302<h3 id="pass-through-session-child-metrics">322<h3 id="pass-through-session-child-metrics">


319 339 

320在 v2.1.260 之前,執行器終止達到其 `--kill-session-after-min` 限制的每個工作階段並在 `sessions_interrupted_total` 中計數。340在 v2.1.260 之前,執行器終止達到其 `--kill-session-after-min` 限制的每個工作階段並在 `sessions_interrupted_total` 中計數。

321 341 

322[`post-session` 掛鉤](/docs/zh-TW/self-hosted-environments-configuration#post-session)的 `CLAUDE_RUNNER_EXIT_REASON` 以不同方式分類乾淨交接。掛鉤將釋放、啟動逾時和伺服器取消指派報告為 `interrupted`,因為執行器停止了子程序。這些計數器記錄與 `completed` 相同的事件,因為槽被乾淨地交回。342[`post-session` hook](/docs/zh-TW/self-hosted-environments-configuration#post-session)的 `CLAUDE_RUNNER_EXIT_REASON` 以不同方式分類乾淨交接。hook 將這些情況報告為 `interrupted`,因為執行器停止了子程序:釋放、啟動逾時、伺服器取消指派,以及輪詢先注意到的存檔或刪除。這些計數器記錄與 `completed` 相同的事件,因為槽被乾淨地交回。

323 343 

324如果您直接根據 `sessions_completed_total` 協調掛鉤收據,您會低估完成。使用掛鉤以獲得每個工作階段的保證,並使用計數器以獲得聚合速率。344如果您直接根據 `sessions_completed_total` 協調掛鉤收據,您會低估完成。使用掛鉤以獲得每個工作階段的保證,並使用計數器以獲得聚合速率。

325 345 

Details

87 87 

88The `--environment` 和 `--ref` 分派旗標需要執行指令碼的機器上的 Claude Code v2.1.224 或更新版本,與執行器本身的下限相同。安裝 hook 並在此主機上啟動執行器後,測試指令碼:88The `--environment` 和 `--ref` 分派旗標需要執行指令碼的機器上的 Claude Code v2.1.224 或更新版本,與執行器本身的下限相同。安裝 hook 並在此主機上啟動執行器後,測試指令碼:

89 89 

901. 使用 `claude -p "<prompt>" --environment <environment-id> --output-format json` 在測試環境上建立工作階段,從 git 簽出執行,以便 CLI 可以從 `origin` 遠端自動偵測存放庫。可選的 `--ref <branch>` 將工作階段的簽出基於命名的 ref,而不是本機 HEAD。該命令建立工作階段、列印包含 `session_id` 的一行 JSON,並在不等待 Claude 回覆的情況下退出。901. 使用 `claude -p "<prompt>" --environment <environment-id> --output-format json` 在測試環境上建立工作階段。請從 git 簽出中執行該命令,以便 CLI 可以從 `origin` 遠端自動偵測儲存庫。可選的 `--ref <branch>` 將工作階段的簽出基於命名的 ref,而不是本機 HEAD。該命令會在不等待 Claude 回覆的情況下退出。其列印的內容會告訴您的指令碼結果:

91 * **工作階段已建立**:一行 JSON,例如 `{"ok":true,"session_id":"session_...","title":"...","url":"...","pool_id":"..."}`

92 * **工作階段建立失敗**:`{"ok":false,"error":"..."}` 這一行,且命令以狀態 1 退出

93 * **某些較早發生的錯誤**,例如您的組織無法使用雲端工作階段或缺少提示詞:錯誤會輸出到 stderr 且沒有 JSON 行,命令以狀態 1 退出

912. 等待回覆出現在 `$E2E_REPLY_DIR/<session_id>.txt` 中,由執行器上的 Stop hook 在回合完成後寫入。942. 等待回覆出現在 `$E2E_REPLY_DIR/<session_id>.txt` 中,由執行器上的 Stop hook 在回合完成後寫入。

923. 使用 `claude -p "<message>" --cloud <session_id> --output-format json` 傳送後續訊息(請參閱[傳送後續訊息到執行中的工作階段](/docs/zh-TW/claude-code-on-the-web#send-follow-ups-from-the-cli)),它將使用者事件發佈到現有工作階段並退出。953. 使用 `claude -p "<message>" --cloud <session_id> --output-format json` 傳送後續訊息(請參閱[傳送後續訊息到執行中的工作階段](/docs/zh-TW/claude-code-on-the-web#send-follow-ups-from-the-cli)),它將使用者事件發佈到現有工作階段並退出。

934. 以與步驟 2 相同的方式等待後續訊息的回覆。964. 以與步驟 2 相同的方式等待後續訊息的回覆。


104 範例指令碼107 範例指令碼

105</h2>108</h2>

106 109 

107下面的指令碼針對 `$CLAUDE_TEST_ENVIRONMENT_ID`(您的測試環境的 `ccpool_...` ID,顯示在管理頁面上環境的詳細對話框中或由[建立環境呼叫](#create-a-dedicated-test-environment)返回)執行完整迴圈,並在每個回覆中斷言哨兵短語。從您希望工作階段在其中工作的儲存庫的 git 簽出執行它,在此主機上啟動執行器後,安裝擷取 hook 並匯出 `E2E_REPLY_DIR`。請先依照[從 CI 進行驗證](#authenticate-from-ci)中的說明,在執行指令碼的機器上使用 claude.ai 帳戶登入。若未登入,第一次分派會失敗並出現錯誤,例如 `Unable to get organization UUID for cloud session creation`。110範例指令碼在與測試執行器相同的機器上執行。執行之前,請先準備好該機器:

111 

112* **儲存庫簽出**:從您希望工作階段在其中工作的儲存庫的 git 簽出執行指令碼。

113* **執行器**:在此主機上啟動執行器,並安裝擷取 hook 及匯出 `E2E_REPLY_DIR`。

114* **登入**:依照[從 CI 進行驗證](#authenticate-from-ci)中的說明,在執行指令碼的機器上使用 claude.ai 帳戶登入。

115* **環境 ID**:將 `CLAUDE_TEST_ENVIRONMENT_ID` 設定為您的測試環境的 `ccpool_...` ID,該 ID 顯示在管理頁面上環境的詳細對話框中,或由[建立環境呼叫](#create-a-dedicated-test-environment)返回。

116 

117下面的指令碼針對 `$CLAUDE_TEST_ENVIRONMENT_ID` 執行完整迴圈,並在每個回覆中斷言哨兵短語。

108 118 

109```bash theme={null}119```bash theme={null}

110#!/usr/bin/env bash120#!/usr/bin/env bash


152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"162TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"163EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \164create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)165 --ref "$TEST_REPO_REF" --output-format json < /dev/null)

156echo "create: $create_json"166echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")167SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 168 


163# 3. Post a follow-up via the CLI.173# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"174TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"175EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)176followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json < /dev/null)

167echo "followup: $followup_json"177echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null178jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 179 

sessions.md +43 −41

Details

6 6 

7> 命名、恢復、分支和在 Claude Code 對話之間切換。涵蓋 `--continue`、`--resume`、`--from-pr`、`/resume` 選擇器、session 命名、匯出文字記錄,以及文字記錄的儲存位置。7> 命名、恢復、分支和在 Claude Code 對話之間切換。涵蓋 `--continue`、`--resume`、`--from-pr`、`/resume` 選擇器、session 命名、匯出文字記錄,以及文字記錄的儲存位置。

8 8 

9session 是與專案目錄相關聯的已儲存對話。Claude Code 在您工作時將其儲存在本地,因此您可以從中斷的地方繼續、分支以嘗試不同的方法,或在任務之間切換。9[工作階段](/docs/zh-TW/glossary#session)是與專案目錄相關聯的已儲存對話。Claude Code 在您工作時將其儲存在本地,因此您可以從中斷的地方繼續、分支以嘗試不同的方法,或在任務之間切換。

10 10 

11[桌面應用程式](/docs/zh-TW/desktop#work-in-parallel-with-sessions)、[claude.ai/code](/docs/zh-TW/claude-code-on-the-web) 和 [VS Code 擴充功能](/docs/zh-TW/vs-code#resume-past-conversations)各自維護自己的 session 歷史記錄,桌面應用程式也可以[恢復 CLI session](/docs/zh-TW/desktop#coming-from-the-cli)。本頁涵蓋 CLI。11[桌面應用程式](/docs/zh-TW/desktop#work-in-parallel-with-sessions)、[claude.ai/code](/docs/zh-TW/claude-code-on-the-web) 和 [VS Code 擴充功能](/docs/zh-TW/vs-code#resume-past-conversations)各自維護自己的 session 歷史記錄,桌面應用程式也可以[恢復 CLI session](/docs/zh-TW/desktop#coming-from-the-cli)。本頁涵蓋 CLI。

12 12 


18 18 

19| 命令 | 功能 |19| 命令 | 功能 |

20| :- | :- |20| :- | :- |

21| `claude --continue` | 重新開啟目前目錄中最近的對話 |21| `claude --continue` | 重新開啟目前目錄中最近的工作階段 |

22| `claude --resume` | 開啟[工作階段選擇器](#use-the-session-picker) |22| `claude --resume` | 開啟[工作階段選擇器](#use-the-session-picker) |

23| `claude --resume <name>` | 直接恢復已命名的工作階段 |23| `claude --resume <name>` | 直接恢復已命名的工作階段 |

24| `claude --resume <transcript-path>` | 恢復儲存在該絕對路徑之 `.jsonl` [逐字稿檔案](#where-transcripts-are-stored)中的對話 |24| `claude --resume <transcript-path>` | 恢復儲存在該絕對路徑之 `.jsonl` [逐字稿檔案](#where-transcripts-are-stored)中的工作階段 |

25| `claude --from-pr <number>` | 開啟工作階段選擇器,並篩選為連結到該 pull request 的工作階段 |25| `claude --from-pr <number>` | 開啟工作階段選擇器,並篩選為連結到該 pull request 的工作階段 |

26| `/resume` | 從進行中的工作階段內切換到不同的對話 |26| `/resume` | 從進行中的工作階段內切換到不同的工作階段 |

27 

28Claude Code 會將使用 [`claude -p`](/docs/zh-TW/headless) 或 [Agent SDK](/docs/zh-TW/agent-sdk/overview) 建立的工作階段排除在工作階段選擇器和 `claude --continue` 之外。您仍然可以將其工作階段 ID 傳遞給 `claude --resume <session-id>` 來恢復它。使用 `claude --continue` 時,Claude Code 也會跳過[第一個提示詞是 `/loop` 的工作階段](#where-the-session-picker-looks)。當您執行 [`claude -p --continue`](/docs/zh-TW/headless#continue-conversations) 時,Claude Code 會包含 `-p`、SDK 和 `/loop` 工作階段。

29 

30您可以從任何目錄執行 `claude --resume <session-id>`,因此可以恢復在其他地方啟動或已使用 [`/cd`](/docs/zh-TW/commands) 移動的工作階段。Claude Code 會依下列順序尋找該 ID:

31 

321. 目前的專案目錄及其 git worktree

332. 此機器上的所有其他專案

34 

35跨專案搜尋只有在恰好一個其他專案持有含該 ID 訊息的逐字稿時才會解析該 ID,因此手動複製的重複項會讓 Claude Code 回報找不到,而不是恢復任意一份副本。若沒有任何已儲存的工作階段符合該 ID,Claude Code 會回報 `No conversation found with session ID: <session-id>`。

36 

37在 v2.1.223 之前,查詢會停在目前專案目錄及其 git worktree,因此您必須從工作階段最後工作的目錄恢復。

38 

39`claude --continue` 會開啟已完成的[背景工作階段](/docs/zh-TW/agent-view),但不會開啟仍在執行的工作階段;開啟已完成的背景工作階段需要 Claude Code v2.1.257 或更新版本。如果您最近的對話是您[移到背景](/docs/zh-TW/agent-view#send-the-session-to-the-background)的對話,且它仍在背景執行,Claude Code 會顯示 `Your most recent conversation is running in the background` 和該工作階段的 ID 並退出。請從 [`claude agents`](/docs/zh-TW/agent-view#attach-to-a-session) 附加到該工作階段,或執行 `claude --resume` 以選擇另一個工作階段。

40 27 

41<h3 id="resume-a-running-background-session">28<h3 id="resume-a-running-background-session">

42 恢復執行中的背景工作階段29 恢復執行中的背景工作階段


64 51 

65當 Claude Code 從逐字稿載入對話時,恢復的工作階段會復原該對話以及其中儲存的狀態:52當 Claude Code 從逐字稿載入對話時,恢復的工作階段會復原該對話以及其中儲存的狀態:

66 53 

67* 對話記錄:完整的記錄,包括工具呼叫和結果。在前一個程序結束時(例如當機時)仍在執行的工具,在您恢復時不會完成或再次執行。Claude 會看到該呼叫被標記為在結果記錄之前就被中斷,並被告知在再次執行之前先檢查它是否已生效,除非設定了 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars#variables)。在 v2.1.281 之前,Claude Code 會從對話中刪除被中斷的呼叫,或將其以您中斷的呼叫呈現給 Claude。54* 對話記錄:完整的記錄,包括工具呼叫和結果。在前一個程序結束時(例如當機時)仍在執行的工具,在您恢復時不會完成或再次執行。Claude 會看到該呼叫被標記為在結果記錄之前就被中斷,並被告知在再次執行之前先檢查它是否已生效,除非設定了 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-TW/env-vars#variables)。

68* 模型:工作階段會繼續使用其原本使用的模型,但[設定您的模型](/docs/zh-TW/model-config#setting-your-model)中所述的情況除外。55* 模型:工作階段會繼續使用其原本使用的模型,但[設定您的模型](/docs/zh-TW/model-config#setting-your-model)中所述的情況除外。

69* Agent:使用 [`--agent`](/docs/zh-TW/sub-agents#invoke-subagents-explicitly) 或 `agent` 設定啟動的工作階段會繼續作為該 agent 運作,並保留其工具限制和模型。恢復時傳遞 `--agent` 可選擇不同的 agent;關於任一情況下的系統提示詞,請參閱[恢復對話中的系統提示詞旗標](/docs/zh-TW/cli-reference#system-prompt-flags-in-resumed-conversations)。Claude Code 會在兩個地方尋找該 agent:工作階段的原始目錄(前提是您已[信任該工作區](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)),然後是您進行恢復的目錄,因此當您從另一個目錄恢復時,專案範圍的 agent 仍會載入。如果 Claude Code 在這兩個地方都找不到該 agent,工作階段會以預設工具恢復,並顯示[指出該 agent 名稱的警告](/docs/zh-TW/errors#session-agent-no-longer-available)。56* Agent:使用 [`--agent`](/docs/zh-TW/sub-agents#invoke-subagents-explicitly) 或 `agent` 設定啟動的工作階段會繼續作為該 agent 運作,並保留其工具限制和模型。恢復時傳遞 `--agent` 可選擇不同的 agent;關於任一情況下的系統提示詞,請參閱[恢復對話中的系統提示詞旗標](/docs/zh-TW/cli-reference#system-prompt-flags-in-resumed-conversations)。Claude Code 會在兩個地方尋找該 agent:工作階段的原始目錄(前提是您已[信任該工作區](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)),然後是您進行恢復的目錄,因此當您從另一個目錄恢復時,專案範圍的 agent 仍會載入。如果 Claude Code 在這兩個地方都找不到該 agent,工作階段會以預設工具恢復,並顯示[指出該 agent 名稱的警告](/docs/zh-TW/errors#session-agent-no-longer-available)。

70* 權限模式:如果您在終端機中使用 `claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(當名稱符合單一工作階段時)且不帶 `-p` 恢復,Claude Code 會復原工作階段當時的權限模式,但[恢復時的權限模式](#permission-mode-on-resume)中的情況除外,該節也涵蓋工作階段選擇器、`/resume` 以及使用 `claude -p` 恢復。傳遞 `--permission-mode` 或 `--dangerously-skip-permissions` 可覆寫復原的模式。57* 權限模式:如果您在終端機中使用 `claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(當名稱符合單一工作階段時)且不帶 `-p` 恢復,Claude Code 會復原工作階段當時的權限模式,但[恢復時的權限模式](#permission-mode-on-resume)中的情況除外,該節也涵蓋工作階段選擇器、`/resume` 以及使用 `claude -p` 恢復。傳遞 `--permission-mode` 或 `--dangerously-skip-permissions` 可覆寫復原的模式。


83* 終端機:`claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(當名稱符合單一工作階段時),且不帶 `-p`。Claude Code 會復原工作階段當時的權限模式,但表格中的情況除外。傳遞 `--permission-mode` 或 `--dangerously-skip-permissions` 可覆寫復原的模式。70* 終端機:`claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(當名稱符合單一工作階段時),且不帶 `-p`。Claude Code 會復原工作階段當時的權限模式,但表格中的情況除外。傳遞 `--permission-mode` 或 `--dangerously-skip-permissions` 可覆寫復原的模式。

84* 非互動式:`claude -p --resume` 或 `claude -p --continue`。Claude Code 會以新的 `claude -p` 執行會採用的權限模式啟動該次執行,但以 plan mode 結束的工作階段在[下列條件](#resume-in-plan-mode-with-p)下會以 plan mode 恢復。71* 非互動式:`claude -p --resume` 或 `claude -p --continue`。Claude Code 會以新的 `claude -p` 執行會採用的權限模式啟動該次執行,但以 plan mode 結束的工作階段在[下列條件](#resume-in-plan-mode-with-p)下會以 plan mode 恢復。

85* VS Code:擴充功能的對話面板。表格僅涵蓋以 plan mode 結束的對話;其餘情況請參閱[恢復過去的對話](/docs/zh-TW/vs-code#resume-past-conversations)。72* VS Code:擴充功能的對話面板。表格僅涵蓋以 plan mode 結束的對話;其餘情況請參閱[恢復過去的對話](/docs/zh-TW/vs-code#resume-past-conversations)。

86* 啟動時的工作階段選擇器:您從[工作階段選擇器](#use-the-session-picker)選擇的工作階段,無論您是單獨使用 `claude --resume`、使用 `claude --from-pr`,還是使用符合多個工作階段的名稱來開啟選擇器。Claude Code 會以從相同命令列啟動新工作階段時的權限模式啟動該工作階段,但以 plan mode 結束的工作階段會在 plan mode 中恢復,除非您傳遞 `--permission-mode`、`--dangerously-skip-permissions` 或 `--fork-session`。不會復原其他已儲存的權限模式。73* 啟動時的工作階段選擇器:您從[工作階段選擇器](#use-the-session-picker)選擇的工作階段,無論您是單獨使用 `claude --resume`、使用 `claude --from-pr`,還是使用符合多個工作階段的名稱來開啟選擇器。Claude Code 會以從相同命令列啟動新工作階段時的權限模式啟動該工作階段,但以 plan mode 結束的工作階段會在 plan mode 中恢復。如果您傳遞 `--permission-mode`、`--dangerously-skip-permissions` 或 `--fork-session`,Claude Code 不會復原 plan mode。不會復原其他已儲存的權限模式。

87* 在工作階段內使用 `/resume`,帶或不帶引數:您切換到的對話會以您目前工作階段所在的權限模式繼續,但以 plan mode 結束的對話會在 plan mode 中恢復,即使您是以 `--permission-mode` 或 `--dangerously-skip-permissions` 啟動 Claude Code。如果該對話在本次 Claude Code 執行中稍早已開啟過,例如您一開始所在的對話,或您以 `/clear` 或 `/resume` 離開的對話,它則會改為以您目前的權限模式繼續。74* 在工作階段內使用 `/resume`,帶或不帶引數:您切換到的對話會以您目前工作階段所在的權限模式繼續,但以 plan mode 結束的對話會在 plan mode 中恢復,即使您是以 `--permission-mode` 或 `--dangerously-skip-permissions` 啟動 Claude Code。如果該對話在本次 Claude Code 執行中稍早已開啟過,例如您一開始所在的對話,或您以 `/clear` 或 `/resume` 離開的對話,它則會改為以您目前的權限模式繼續。

88 75 

76如果[拒絕規則](/docs/zh-TW/permissions#manage-permissions)移除了 [`ExitPlanMode`](/docs/zh-TW/tools-reference) 工具,Claude 就無法呈現計畫以供核准,因此 Claude Code 不會復原 plan mode。工作階段會以從相同命令列啟動新工作階段時的權限模式啟動。使用 `/resume` 時,對話會以您目前的權限模式繼續。

77 

89在非互動式和 VS Code 路徑上復原 plan mode 需要 Claude Code v2.1.246 或更新版本。每一列列出工作階段結束時的權限模式、您透過終端機、非互動式和 VS Code 中的哪一種路徑恢復它,以及 Claude Code 啟動恢復之工作階段時採用的權限模式。78在非互動式和 VS Code 路徑上復原 plan mode 需要 Claude Code v2.1.246 或更新版本。每一列列出工作階段結束時的權限模式、您透過終端機、非互動式和 VS Code 中的哪一種路徑恢復它,以及 Claude Code 啟動恢復之工作階段時採用的權限模式。

90 79 

91| 工作階段結束時的模式 | 恢復方式 | 恢復後的權限模式 |80| 工作階段結束時的模式 | 恢復方式 | 恢復後的權限模式 |

92| :- | :- | :- |81| :- | :- | :- |

93| `bypassPermissions` | 終端機 | 新工作階段會啟動的權限模式。若要再次[略過權限](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode),請在啟動時使用其啟動旗標之一,或在 [user、`--settings` 或受管設定](/docs/zh-TW/settings-reference#permissions-defaultmode)中使用 `permissions.defaultMode: "bypassPermissions"` 啟用它 |82| `bypassPermissions` | 終端機 | 新工作階段會啟動的權限模式。若要再次[略過權限](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode),請在啟動時使用其啟動旗標之一,或在 [user、`--settings` 或受管設定](/docs/zh-TW/settings-reference#permissions-defaultmode)中使用 `permissions.defaultMode: "bypassPermissions"` 啟用它 |

94| `plan` | 終端機 | plan mode。使用 `--fork-session` 時,則為新工作階段會啟動的權限模式 |83| `plan` | 終端機 | plan mode。使用 `--fork-session` 時,則為新工作階段會啟動的權限模式 |

84| `plan` | 終端機,當拒絕規則移除 `ExitPlanMode` 時 | 新工作階段會啟動的權限模式 |

95| `auto` | 終端機 | `auto`,僅當您的帳戶仍符合[自動模式要求](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)時 |85| `auto` | 終端機 | `auto`,僅當您的帳戶仍符合[自動模式要求](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)時 |

96| Manual | 終端機 | 當新工作階段會依[內建預設值](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)以自動模式啟動時,為 Manual。當設定檔中的 `defaultMode` [生效](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)時,Claude Code 則會改以該模式啟動恢復的工作階段 |86| Manual | 終端機 | 當新工作階段會依[內建預設值](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)以自動模式啟動時,為 Manual。當設定檔中的 `defaultMode` [生效](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)時,Claude Code 則會改以該模式啟動恢復的工作階段 |

97| `plan` | 非互動式,符合[下列條件](#resume-in-plan-mode-with-p)時 | plan mode |87| `plan` | 非互動式,符合[下列條件](#resume-in-plan-mode-with-p)時 | plan mode |


110* 您未傳遞 `--permission-mode` 或 `--dangerously-skip-permissions`100* 您未傳遞 `--permission-mode` 或 `--dangerously-skip-permissions`

111* 您未傳遞 `--fork-session`101* 您未傳遞 `--fork-session`

112* 該次執行不是透過[頻道](/docs/zh-TW/channels)啟動的102* 該次執行不是透過[頻道](/docs/zh-TW/channels)啟動的

103* 沒有任何[拒絕規則](/docs/zh-TW/permissions#manage-permissions)移除 `ExitPlanMode` 工具

113 104 

114<h3 id="resume-from-a-summary">105<h3 id="resume-from-a-summary">

115 從摘要恢復106 從摘要恢復


117 108 

118在 Pro 或 Max 方案中,當您恢復已閒置超過約一小時且超過 100,000 個 token 的工作階段時,Claude Code 會復原對話,然後在您傳送第一則訊息之前開啟一個對話框。此時工作階段的[提示快取](/docs/zh-TW/prompt-caching#cache-lifetime)已過期,因此無論您選擇對話框中的哪個選項,下一個請求都會將完整記錄處理一次。109在 Pro 或 Max 方案中,當您恢復已閒置超過約一小時且超過 100,000 個 token 的工作階段時,Claude Code 會復原對話,然後在您傳送第一則訊息之前開啟一個對話框。此時工作階段的[提示快取](/docs/zh-TW/prompt-caching#cache-lifetime)已過期,因此無論您選擇對話框中的哪個選項,下一個請求都會將完整記錄處理一次。

119 110 

120對話框提供三種繼續工作階段的方式。它們的差別在於各自會將多少對話內容帶入後續請求,這是在保留每個細節與每個請求傳送較少 token 之間的取捨:111對話框提供三種繼續工作階段的方式:

121 112 

122* **從摘要恢復**:立即執行 [`/compact`](/docs/zh-TW/context-window#what-survives-compaction)。Claude Code 會針對完整記錄傳送一個摘要請求,然後以摘要、您最近的幾次交流以及最多五個最近讀取的檔案取代記錄。後續請求會攜帶摘要,而不是完整記錄。113* **從摘要恢復**:立即執行 [`/compact`](/docs/zh-TW/context-window#what-survives-compaction)。後續請求會攜帶摘要,而不是完整記錄。

123* **按原樣恢復完整工作階段**:以未變更的狀態載入對話。在您傳送第一則訊息後,Claude Code 會重新處理並重新快取完整記錄,然後在快取保持有效期間,於後續請求中從快取重新讀取。114* **按原樣恢復完整工作階段**:以未變更的狀態載入對話。

124* **不要再詢問我**:恢復完整工作階段,並在之後所有的恢復中不再顯示此對話框。115* **不要再詢問我**:恢復完整工作階段,並在之後所有的恢復中不再顯示此對話框。

125 116 

126按原樣恢復會保留對話的每個細節,但每個請求的成本會隨對話大小而增加。從摘要恢復在之後的每個請求中成本較低,因為它攜帶的是摘要而不是完整記錄,但摘要遺漏的任何內容都不再存在於 Claude 的上下文中。請參閱[為什麼長時間工作階段中的使用量會攀升](/docs/zh-TW/costs#why-usage-climbs-in-a-long-session),了解每個請求成本的來源。117按原樣恢復會保留對話的每個細節,但每個請求的成本會隨對話大小而增加。從摘要恢復在之後的每個請求中成本較低,因為它攜帶的是摘要而不是完整記錄,但摘要遺漏的任何內容都不再存在於 Claude 的上下文中。請參閱[為什麼長時間工作階段中的使用量會攀升](/docs/zh-TW/costs#why-usage-climbs-in-a-long-session),了解每個請求成本的來源。


136 127 

137使用 `Ctrl+W` 可將範圍擴大到儲存庫的所有 worktree,或使用 `Ctrl+A` 擴大到此機器上的每個專案。128使用 `Ctrl+W` 可將範圍擴大到儲存庫的所有 worktree,或使用 `Ctrl+A` 擴大到此機器上的每個專案。

138 129 

139第一個提示詞是 [`/loop`](/docs/zh-TW/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) 命令的工作階段不會出現在選擇器中,`claude --continue` 也會跳過它們。在對話稍後才執行 `/loop` 不會隱藏該工作階段。在 v2.1.211 之前,在對話早期執行 `/loop` 會讓該工作階段永久從選擇器中隱藏。130<h4 id="/loop-p-agent-sdk-and-background-sessions">

131 `/loop`、`-p`、Agent SDK 和背景工作階段

132</h4>

133 

134第一個提示詞是 [`/loop`](/docs/zh-TW/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) 命令的工作階段不會出現在選擇器中,`claude --continue` 也會跳過它們。在對話稍後才執行 `/loop` 不會隱藏該工作階段。

135 

136Claude Code 會將使用 [`claude -p`](/docs/zh-TW/headless) 或 [Agent SDK](/docs/zh-TW/agent-sdk/overview) 建立的工作階段排除在工作階段選擇器和 `claude --continue` 之外。您仍然可以將其工作階段 ID 傳遞給 `claude --resume <session-id>` 來恢復它。當您執行 [`claude -p --continue`](/docs/zh-TW/headless#continue-conversations) 時,Claude Code 會包含 `-p`、SDK 和 `/loop` 工作階段。

140 137 

141使用 [`/cd`](/docs/zh-TW/commands) 移動工作階段會將其重新定位到新目錄的專案儲存空間,因此之後它會出現在該目錄的選擇器中。從 v2.1.196 開始,已移動的工作階段即使在當機或強制退出後,也不會出現在舊目錄的選擇器中。在較早的版本中,當舊路徑包含特殊字元(例如底線)時,在非正常退出後,它也可能重新出現在舊目錄的清單中。138`claude --continue` 會開啟已完成的[背景工作階段](/docs/zh-TW/agent-view),但不會開啟仍在執行的工作階段;開啟已完成的背景工作階段需要 Claude Code v2.1.257 或更新版本。如果您最近的對話是您[移到背景](/docs/zh-TW/agent-view#send-the-session-to-the-background)的對話,且它仍在背景執行,Claude Code 會顯示 `Your most recent conversation is running in the background` 和該工作階段的 ID 並退出。請從 [`claude agents`](/docs/zh-TW/agent-view#attach-to-a-session) 附加到該工作階段,或執行 `claude --resume` 以選擇另一個工作階段。

139 

140<h4 id="sessions-in-other-worktrees-and-projects">

141 其他 worktree 和專案中的工作階段

142</h4>

142 143 

143從同一儲存庫的另一個 worktree 選擇工作階段時,Claude Code 會在原處恢復它;當該工作階段自己的 worktree 已不存在時,Claude Code 會[在您目前的目錄中恢復它](/docs/zh-TW/worktrees#resume-a-worktree-session)。從不相關的專案選擇工作階段時,Claude Code 會改為將 `cd` 和恢復命令複製到您的剪貼簿。如果該專案的目錄已不存在,Claude Code 會在您目前的目錄中恢復該工作階段,而不是複製一個會失敗的 `cd` 命令。144從同一儲存庫的另一個 worktree 選擇工作階段時,Claude Code 會在原處恢復它;當該工作階段自己的 worktree 已不存在時,Claude Code 會[在您目前的目錄中恢復它](/docs/zh-TW/worktrees#resume-a-worktree-session)。從不相關的專案選擇工作階段時,Claude Code 會改為將 `cd` 和恢復命令複製到您的剪貼簿。如果該專案的目錄已不存在,Claude Code 會在您目前的目錄中恢復該工作階段,而不是複製一個會失敗的 `cd` 命令。

144 145 

146使用 [`/cd`](/docs/zh-TW/commands) 移動工作階段會將其重新定位到新目錄的專案儲存空間,因此之後它會出現在該目錄的選擇器中。

147 

148<h4 id="resume-by-session-id-or-name">

149 依工作階段 ID 或名稱恢復

150</h4>

151 

152您可以從任何目錄執行 `claude --resume <session-id>`,因此可以恢復在其他地方啟動或已使用 [`/cd`](/docs/zh-TW/commands) 移動的工作階段。Claude Code 會依下列順序尋找該 ID:

153 

1541. 目前的專案目錄及其 git worktree

1552. 此機器上的所有其他專案

156 

157跨專案搜尋只有在恰好一個其他專案持有含該 ID 訊息的逐字稿時才會解析該 ID,因此手動複製的重複項會讓 Claude Code 回報找不到,而不是恢復任意一份副本。若沒有任何已儲存的工作階段符合該 ID,Claude Code 會回報 `No conversation found with session ID: <session-id>`。

158 

145依名稱恢復會在目前儲存庫及其 worktree 中解析。兩種形式都會尋找完全相符的項目,即使它位於不同的 worktree 中也會直接恢復:159依名稱恢復會在目前儲存庫及其 worktree 中解析。兩種形式都會尋找完全相符的項目,即使它位於不同的 worktree 中也會直接恢復:

146 160 

147| 命令 | 完全相符 | 名稱不明確 |161| 命令 | 完全相符 | 名稱不明確 |


166 180 

167通過 CLI 路由或從 claude.ai 命名 session 後,使用 `claude --resume <name>` 或 `/resume <name>` 返回到它;桌面應用程式 session 在 [desktop app](/docs/zh-TW/desktop#work-in-parallel-with-sessions) 中恢復。請參閱[恢復 session](#resume-a-session) 以了解名稱解析在 worktrees 中的行為方式。181通過 CLI 路由或從 claude.ai 命名 session 後,使用 `claude --resume <name>` 或 `/resume <name>` 返回到它;桌面應用程式 session 在 [desktop app](/docs/zh-TW/desktop#work-in-parallel-with-sessions) 中恢復。請參閱[恢復 session](#resume-a-session) 以了解名稱解析在 worktrees 中的行為方式。

168 182 

169當您使用此機器上另一個活躍 session 已經使用的名稱啟動或恢復互動式 session,或將 session 重新命名為這樣的名稱時,Claude Code 會將名稱保留給已經擁有它的 session,將您的名稱重新命名為帶有兩個單詞後綴的變體,例如 `auth-refactor-graceful-unicorn`,並告知您。如果您想自己選擇一個名稱,請使用新名稱執行 `/rename`。在 v2.1.232 之前,兩個 sessions 都保留了該名稱。

170 

171在三種情況下,Claude Code 不會重新命名重複項,因此您仍然可以在列表中看到兩個具有相同名稱的 sessions:

172 

173* 它不檢查 AI 生成的標題或預設顯示名稱。

174* 它不檢查啟動時 [background](/docs/zh-TW/agent-view#from-your-shell) 或 `-p` session 的 `--name`。

175* 它無法重新命名早期版本 Claude Code 上的 session。

176 

177您未命名的 sessions 仍然會獲得 Claude Code 指派的兩個標籤。只有生成的標題可作為恢復控制代碼:183您未命名的 sessions 仍然會獲得 Claude Code 指派的兩個標籤。只有生成的標題可作為恢復控制代碼:

178 184 

179* 預設顯示名稱:您從未命名的互動式 sessions 在啟動時仍會獲得預設顯示名稱。需要 Claude Code v2.1.196 或更新版本。預設名稱結合了工作目錄的名稱和一個兩字元的後綴,例如 `my-app-3f`,並在執行中 sessions 的列表中識別該 session,例如 [agent view](/docs/zh-TW/agent-view) 和 `claude agents --json` 輸出。預設名稱不是恢復控制代碼。如果您將其傳遞給 `claude --resume` 或 `/resume`,Claude Code 找不到該 session。命名 session 會在這些列表中取代預設名稱,接受計畫也會這樣做。185* 預設顯示名稱:您從未命名的互動式工作階段在啟動時仍會獲得預設顯示名稱。需要 Claude Code v2.1.196 或更新版本。預設名稱結合了工作目錄的名稱和一個兩字元的後綴,例如 `my-app-3f`,並在執行中工作階段的列表中識別該工作階段,例如 [agent view](/docs/zh-TW/agent-view) 和 `claude agents --json` 輸出。預設名稱不是恢復控制代碼。如果您將其傳遞給 `claude --resume` 或 `/resume`,Claude Code 找不到該工作階段。

180* 生成的標題:如果您未命名 session,Claude Code 會為其生成 session 標題。標題是您第一個提示的簡短摘要,由對小型/快速模型(通常是 Haiku 級別模型)的背景請求編寫。您直接從 shell 或指令碼啟動的 `claude -p` 執行不會獲得一個。186* 生成的標題:如果您未命名 session,Claude Code 會為其生成 session 標題。標題是您第一個提示的簡短摘要,由對小型/快速模型(通常是 Haiku 級別模型)的背景請求編寫。您直接從 shell 或指令碼啟動的 `claude -p` 執行不會獲得一個。

181 187 

182 接受計畫會將生成的標題替換為基於計畫的標題。命名 session 也會取代它。188 接受計畫會將生成的標題替換為基於計畫的標題。您可以將任一標題傳遞給 `claude --resume` 或 `/resume`,Claude Code 會以與您設定的名稱相同的方式解析它。

183 

184 您會在 [session 選擇器](#use-the-session-picker) 中和未設定名稱時的狀態列 [`session_name`](/docs/zh-TW/statusline) 欄位中看到第一個提示標題。計畫標題顯示在相同的兩個位置,也顯示在執行中 sessions 的列表中,其中它取代了預設顯示名稱。

185 

186 您可以將任一標題傳遞給 `claude --resume` 或 `/resume`,Claude Code 會以與您設定的名稱相同的方式解析它。

187 189 

188<h2 id="use-the-session-picker">190<h2 id="use-the-session-picker">

189 使用 session 選擇器191 使用 session 選擇器


205| `Ctrl+B` | 篩選為目前 git 分支的 sessions。再次按下以顯示所有分支 |207| `Ctrl+B` | 篩選為目前 git 分支的 sessions。再次按下以顯示所有分支 |

206| `Esc` | 退出 session 選擇器或搜尋模式 |208| `Esc` | 退出 session 選擇器或搜尋模式 |

207 209 

208每一列顯示 session 名稱(如果已設定),否則顯示 AI 生成的 session 標題、對話摘要或第一個提示,以及自上次活動以來的時間、git 分支和檔案大小。使用 `Ctrl+A` 擴展到所有專案後,也會看到每個 session 的專案路徑。210每一列顯示工作階段名稱(如果已設定),否則顯示 AI 生成的工作階段標題、對話摘要或第一個提示詞,以及自上次活動以來的時間、git 分支和檔案大小。

209 211 

210使用 `/branch` 或 `--fork-session` 建立的 sessions 會取得自己的 session ID,並顯示為單獨的列。當選擇器為同一個 session 找到多個項目時,它會將它們分組在單一列下。按 `→` 展開群組。212使用 `/branch` 或 `--fork-session` 建立的 sessions 會取得自己的 session ID,並顯示為單獨的列。當選擇器為同一個 session 找到多個項目時,它會將它們分組在單一列下。按 `→` 展開群組。

211 213 


223/branch try-streaming-approach225/branch try-streaming-approach

224```226```

225 227 

226如果您省略名稱,Claude Code 會根據對話中的第一個提示為新分支命名。從 v2.1.198 開始,這也適用於 [壓縮](/docs/zh-TW/how-claude-code-works#when-context-fills-up) 之後;較早的版本會回退到字面名稱 `Branched conversation`,而不是查看壓縮摘要之外的原始第一個提示。228如果您省略名稱,Claude Code 會根據對話中的第一個提示詞為新分支命名。

227 229 

228從命令列,將 `--continue` 或 `--resume` 與 `--fork-session` 結合:230從命令列,將 `--continue` 或 `--resume` 與 `--fork-session` 結合:

229 231 


250 252 

251這些命令控制上下文視窗中的內容,而無需離開 session:253這些命令控制上下文視窗中的內容,而無需離開 session:

252 254 

253* **`/clear`**:以空上下文重新開始。Claude Code 會儲存先前的對話;使用 `/resume` 恢復它,或在同一個 Claude Code 程序中,從[倒帶選單的前一個 session 項目](/docs/zh-TW/checkpointing#rewind-past-a-cleared-conversation)。不帶引數時,新對話會保留您使用 `--name` 或 `/rename` 設定的名稱,但不會保留 AI 生成的 session 標題。若要改為命名您要離開的對話,請傳遞名稱,如 `/clear release-prep`;新對話隨後會以未命名狀態開始255* **`/clear`**:以空上下文重新開始。Claude Code 會儲存先前的工作階段;使用 `/resume` 恢復它,或在同一個 Claude Code 程序中,從[倒帶選單的前一個工作階段項目](/docs/zh-TW/checkpointing#rewind-past-a-cleared-conversation)。不帶引數時,新工作階段會保留您使用 `--name` 或 `/rename` 設定的名稱,但不會保留 AI 生成的工作階段標題。若要改為命名您要離開的工作階段,請傳遞名稱,如 `/clear release-prep`;新工作階段隨後會以未命名狀態開始

254* **`/compact [instructions]`**:用摘要替換歷史記錄,可選擇性地專注於您指定的內容256* **`/compact [instructions]`**:用摘要替換歷史記錄,可選擇性地專注於您指定的內容

255* **`/context`**:顯示目前消耗上下文的內容257* **`/context`**:顯示目前消耗上下文的內容

256 258 

settings.md +2 −2

Details

495 495 

496在 v2.1.211 之前,Claude Code 在啟動目錄中保留檔案。它仍然會讀取較早版本留在該處的檔案,與根檔案一併讀取;當兩者設定相同的設定鍵時,以根的值為準,而兩個檔案的權限規則都適用。Agent SDK 的 [`resolveSettings()`](/docs/zh-TW/agent-sdk/typescript#resolvesettings) 協助程式始終從啟動目錄讀取檔案。496在 v2.1.211 之前,Claude Code 在啟動目錄中保留檔案。它仍然會讀取較早版本留在該處的檔案,與根檔案一併讀取;當兩者設定相同的設定鍵時,以根的值為準,而兩個檔案的權限規則都適用。Agent SDK 的 [`resolveSettings()`](/docs/zh-TW/agent-sdk/typescript#resolvesettings) 協助程式始終從啟動目錄讀取檔案。

497 497 

498Claude Code 從工作階段的[主要工作目錄](/docs/zh-TW/permissions#working-directories)讀取共享 `.claude/settings.json`,因此若要使用在儲存庫根目錄提交的檔案,請從那裡啟動 Claude Code。在您[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)後,Claude Code 改為從新目錄讀取兩個專案檔案,按相同規則放置本機檔案。從您移動到的目錄讀取它們需要 Claude Code v2.1.246 或更新版本。498Claude Code 從工作階段的[主要工作目錄](/docs/zh-TW/permissions#working-directories)讀取共享 `.claude/settings.json`,因此若要使用在儲存庫根目錄提交的檔案,請從那裡啟動 Claude Code。在您[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)後,Claude Code 改為從新目錄讀取兩個專案檔案,按相同規則放置本機檔案。從您移動到的目錄讀取它們需要 Claude Code v2.1.246 或更新版本。若是從桌面應用程式啟動的 worktree 工作階段,請參閱[worktree 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


767 767 

768兩件事使 `.claude/settings.json` 中的鍵無法為克隆它的每個人應用:768兩件事使 `.claude/settings.json` 中的鍵無法為克隆它的每個人應用:

769 769 

770* **Claude Code 忽略儲存庫檔案中的鍵。** 在[設定索引](/docs/zh-TW/settings-reference#settings-index)的「範圍」欄中查找 `User, local, or managed`、`User or managed`、`Managed` 或 `Global config`。這些鍵永遠不會從共用檔案應用,除了少數儲存庫檔案仍然可以關閉的鍵。每個這些項目在其「範圍」行上都說明了這一點。`Global config` 鍵僅從 `~/.claude.json` 應用。770* **Claude Code 忽略儲存庫檔案中的鍵。** 在[設定索引](/docs/zh-TW/settings-reference#settings-index)的「範圍」欄中查找 `User, local, or managed`、`User or managed`、`User`、`Managed` 或 `Global config`。這些鍵永遠不會從共用檔案應用,除了少數儲存庫檔案仍然可以關閉的鍵。每個這些項目在其「範圍」行上都說明了這一點。`Global config` 鍵僅從 `~/.claude.json` 應用。

771 771 

772 在 `env` 鍵內,遙測匯出變數也永遠不會從共用檔案應用,除了少數關閉值;請參閱[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)。772 在 `env` 鍵內,遙測匯出變數也永遠不會從共用檔案應用,除了少數關閉值;請參閱[Claude Code 在 `env` 中忽略的變數](/docs/zh-TW/settings-reference#variables-claude-code-ignores-in-env)。

773* **鍵等待信任。** `permissions.allow` 規則、`permissions.additionalDirectories`、`extraKnownMarketplaces` 和大多數 [`env`](/docs/zh-TW/settings-reference#env) 值僅在每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)後應用。在那之前,他們仍然看到提示,不會從檔案宣告的市集獲得外掛。`deny` 和 `ask` 規則立即應用。773* **鍵等待信任。** `permissions.allow` 規則、`permissions.additionalDirectories`、`extraKnownMarketplaces` 和大多數 [`env`](/docs/zh-TW/settings-reference#env) 值僅在每個隊友[信任資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)後應用。在那之前,他們仍然看到提示,不會從檔案宣告的市集獲得外掛。`deny` 和 `ask` 規則立即應用。

Details

582<ReferenceFilter582<ReferenceFilter

583 noun="settings"583 noun="settings"

584 placeholder="Filter settings by key or purpose"584 placeholder="Filter settings by key or purpose"

585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "Managed", "Global config"] }}585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "User", "Managed", "Global config"] }}

586 columnHelp={{586 columnHelp={{

587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",

588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",


638| [`claudeMdExcludes`](#claudemdexcludes) | 在記憶載入時跳過特定的 [CLAUDE.md](/docs/zh-TW/memory#exclude-specific-claude-md-files) 檔案 | 記憶和上下文 | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | 在記憶載入時跳過特定的 [CLAUDE.md](/docs/zh-TW/memory#exclude-specific-claude-md-files) 檔案 | 記憶和上下文 | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | 選擇 Claude Code 在刪除[逐字稿](/docs/zh-TW/data-usage#data-retention)之前保留多少天 | 隱私和遙測 | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | 選擇 Claude Code 在刪除[逐字稿](/docs/zh-TW/data-usage#data-retention)之前保留多少天 | 隱私和遙測 | Any file |

640| [`companyAnnouncements`](#companyannouncements) | 在啟動時顯示您組織的公告 | 介面和終端機 | Any file |640| [`companyAnnouncements`](#companyannouncements) | 在啟動時顯示您組織的公告 | 介面和終端機 | Any file |

641| [`copyFullResponse`](#copyfullresponse) | 讓 [`/copy`](/docs/zh-TW/commands) 複製完整回應,不顯示程式碼區塊選擇器 | 全域組態設定 | Global config |641| [`copyFullResponse`](#copyfullresponse) | 讓 [`/copy`](/docs/zh-TW/commands) 複製完整回應,不顯示選擇器 | 全域組態設定 | Global config |

642| [`copyOnSelect`](#copyonselect) | 關閉在[全螢幕呈現](/docs/zh-TW/fullscreen#use-the-mouse)和 agent 檢視中以滑鼠選取文字時的自動複製 | 全域組態設定 | Global config |642| [`copyOnSelect`](#copyonselect) | 關閉在[全螢幕呈現](/docs/zh-TW/fullscreen#use-the-mouse)和 agent 檢視中以滑鼠選取文字時的自動複製 | 全域組態設定 | Global config |

643| [`crossSessionInbound`](#crosssessioninbound) | 選擇 Claude Code 是否傳遞[來自您其他工作階段的訊息](/docs/zh-TW/cross-session-messaging#control-inbound-messages)、只顯示通知而不傳遞,或拒絕這些訊息 | Agent、工作階段和 worktree | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | 選擇 Claude Code 是否傳遞[來自您其他工作階段的訊息](/docs/zh-TW/cross-session-messaging#control-inbound-messages)、只顯示通知而不傳遞,或拒絕這些訊息 | Agent、工作階段和 worktree | Any file |

644| [`defaultShell`](#defaultshell) | 選擇由 Bash 或 PowerShell 執行您以 [`!` 前綴](/docs/zh-TW/interactive-mode#shell-mode-with-prefix)輸入的 shell 命令 | 介面和終端機 | Any file |644| [`defaultShell`](#defaultshell) | 選擇由 Bash 或 PowerShell 執行您以 [`!` 前綴](/docs/zh-TW/interactive-mode#shell-mode-with-prefix)輸入的 shell 命令 | 介面和終端機 | Any file |


684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | 關閉或開啟 [`/rewind`](/docs/zh-TW/checkpointing) 所還原的檔案快照 | 記憶和上下文 | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | 關閉或開啟 [`/rewind`](/docs/zh-TW/checkpointing) 所還原的檔案快照 | 記憶和上下文 | Any file |

685| [`fileSuggestion`](#filesuggestion) | 以您自己的命令提供 [`@` 檔案自動完成](/docs/zh-TW/interactive-mode#quick-commands) | 介面和終端機 | Any file |685| [`fileSuggestion`](#filesuggestion) | 以您自己的命令提供 [`@` 檔案自動完成](/docs/zh-TW/interactive-mode#quick-commands) | 介面和終端機 | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | 將輸出中的 issue 或審查 ID 轉為輸入框下方的[可點擊連結](/docs/zh-TW/statusline#clickable-links) | 介面和終端機 | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | 將輸出中的 issue 或審查 ID 轉為輸入框下方的[可點擊連結](/docs/zh-TW/statusline#clickable-links) | 介面和終端機 | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | 設定登入畫面所連線的[閘道 URL](/docs/zh-TW/claude-apps-gateway#set-the-gateway-url) | 身分驗證和提供者 | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | 設定登入畫面所連線的[閘道 URL](/docs/zh-TW/claude-apps-gateway#set-the-gateway-url) | 身分驗證和提供者 | User or managed |

688| [`forceLoginMethod`](#forceloginmethod) | 將[登入限制](/docs/zh-TW/authentication#restrict-login-to-your-organization)為 claude.ai、Claude Console 或[雲端閘道](/docs/zh-TW/claude-apps-gateway) | 身分驗證和提供者 | Any file |688| [`forceLoginMethod`](#forceloginmethod) | 將[登入限制](/docs/zh-TW/authentication#restrict-login-to-your-organization)為 claude.ai、Claude Console 或[雲端閘道](/docs/zh-TW/claude-apps-gateway) | 身分驗證和提供者 | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [將 claude.ai 登入限定於您的組織](/docs/zh-TW/authentication#restrict-login-to-your-organization);只有受管來源會強制執行 | 身分驗證和提供者 | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [將 claude.ai 登入限定於您的組織](/docs/zh-TW/authentication#restrict-login-to-your-organization);只有受管來源會強制執行 | 身分驗證和提供者 | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | 在重新擷取[伺服器受管設定](/docs/zh-TW/server-managed-settings)之前阻止啟動 | 企業和受管設定 | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | 在重新擷取[伺服器受管設定](/docs/zh-TW/server-managed-settings)之前阻止啟動 | 企業和受管設定 | Managed |


831| [`worktree`](#worktree) | 設定 Claude Code 如何建立 git [worktree](/docs/zh-TW/worktrees) | Agent、工作階段和 worktree | Any file |831| [`worktree`](#worktree) | 設定 Claude Code 如何建立 git [worktree](/docs/zh-TW/worktrees) | Agent、工作階段和 worktree | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | 從遠端預設分支或您的本機 HEAD 建立新 [worktree](/docs/zh-TW/worktrees) 的分支 | Agent、工作階段和 worktree | Any file |832| [`worktree.baseRef`](#worktree-baseref) | 從遠端預設分支或您的本機 HEAD 建立新 [worktree](/docs/zh-TW/worktrees) 的分支 | Agent、工作階段和 worktree | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | 讓背景工作階段不透過 [worktree](/docs/zh-TW/worktrees) 直接編輯工作副本 | Agent、工作階段和 worktree | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | 讓背景工作階段不透過 [worktree](/docs/zh-TW/worktrees) 直接編輯工作副本 | Agent、工作階段和 worktree | Any file |

834| [`worktree.location`](#worktree-location) | 選擇 [Desktop SSH 工作階段](/docs/zh-TW/desktop#ssh-sessions)在遠端機器上建立其 worktree 的位置 | Agent、工作階段和 worktree | User |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | 在每個 [worktree](/docs/zh-TW/worktrees) 中只簽出您需要的目錄 | Agent、工作階段和 worktree | Any file |835| [`worktree.sparsePaths`](#worktree-sparsepaths) | 在每個 [worktree](/docs/zh-TW/worktrees) 中只簽出您需要的目錄 | Agent、工作階段和 worktree | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | 以符號連結將大型目錄連到每個 [worktree](/docs/zh-TW/worktrees),而非複製它們 | Agent、工作階段和 worktree | Any file |836| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | 以符號連結將大型目錄連到每個 [worktree](/docs/zh-TW/worktrees),而非複製它們 | Agent、工作階段和 worktree | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | 讓 WSL 從 Windows 原則鏈讀取[受管設定](/docs/zh-TW/managed-settings) | 企業和受管設定 | Managed |837| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | 讓 WSL 從 Windows 原則鏈讀取[受管設定](/docs/zh-TW/managed-settings) | 企業和受管設定 | Managed |


1763 * `"acceptEdits"`:Claude Code 也在不詢問的情況下執行檔案編輯和常見的檔案系統命令,例如 `mkdir` 和 `mv`1764 * `"acceptEdits"`:Claude Code 也在不詢問的情況下執行檔案編輯和常見的檔案系統命令,例如 `mkdir` 和 `mv`

1764 * `"plan"`:Claude Code 讀取和計畫,但在您核准計畫之前封鎖編輯1765 * `"plan"`:Claude Code 讀取和計畫,但在您核准計畫之前封鎖編輯

1765 * `"auto"`:Claude Code 在沒有例行提示的情況下執行;在 shell 命令和網路請求等操作執行之前,背景分類器會檢查它們是否符合您的請求1766 * `"auto"`:Claude Code 在沒有例行提示的情況下執行;在 shell 命令和網路請求等操作執行之前,背景分類器會檢查它們是否符合您的請求

1766 * `"dontAsk"`:Claude Code 自動拒絕每個原本會提示的呼叫;讀取、不需要核准的其他操作以及預先核准的工具仍然執行1767 * `"dontAsk"`:Claude Code 自動拒絕每個原本會提示的呼叫;工作目錄內的檔案讀取、不需要核准的其他操作以及預先核准的工具仍然執行,但從[網路路徑](/docs/zh-TW/permissions#network-paths)的讀取除外

1767 * `"bypassPermissions"`:Claude Code 在不詢問的情況下執行所有操作1768 * `"bypassPermissions"`:Claude Code 在不詢問的情況下執行所有操作

1768 * `"manual"`:`"default"` 的別名1769 * `"manual"`:`"default"` 的別名

1769* **預設值**:未設定1770* **預設值**:未設定


2398 2399 

2399* `files` 或 `envVars` 中仍具有有效 `path` 或 `name`,且 `mode` 為 `mask` 或 `deny` 的項目(例如其 `extract` 模式沒有擷取群組),會被降級為 `mode: "deny"` 並顯示警告,因此在您修正該項目之前,憑證會保持封鎖而非遮罩。降級的 `files` 項目會像明確的 `deny` 項目一樣鎖定 [`filesystem.disabled`](/docs/zh-TW/sandboxing#disable-filesystem-isolation),且警告會註明,若受管設定關閉檔案系統隔離,其讀取封鎖將不會強制執行。2400* `files` 或 `envVars` 中仍具有有效 `path` 或 `name`,且 `mode` 為 `mask` 或 `deny` 的項目(例如其 `extract` 模式沒有擷取群組),會被降級為 `mode: "deny"` 並顯示警告,因此在您修正該項目之前,憑證會保持封鎖而非遮罩。降級的 `files` 項目會像明確的 `deny` 項目一樣鎖定 [`filesystem.disabled`](/docs/zh-TW/sandboxing#disable-filesystem-isolation),且警告會註明,若受管設定關閉檔案系統隔離,其讀取封鎖將不會強制執行。

2400* 具有未知 `mode` 或無效 `path` 或 `name` 的項目會被移除。2401* 具有未知 `mode` 或無效 `path` 或 `name` 的項目會被移除。

2401* 每種情況都會發出警告;無論項目是被降級或移除,其餘有效項目仍會強制執行,而完全無效的 `credentials` 值會被捨棄,`sandbox` 的其餘部分仍然適用。2402* 每種情況都會發出警告;無論項目是被降級或移除,其餘有效項目仍會強制執行。

2402 2403 

2403適用於 v2.1.191 及更新版本;在 v2.1.221 之前,每個無效項目都會被移除。關於其他具有逐欄位處理方式的受管鍵,請參閱[受管設定中的無效項目](/docs/zh-TW/managed-settings#invalid-entries-in-managed-settings)。2404適用於 v2.1.191 及更新版本;在 v2.1.221 之前,每個無效項目都會被移除。關於其他具有逐欄位處理方式的受管鍵,請參閱[受管設定中的無效項目](/docs/zh-TW/managed-settings#invalid-entries-in-managed-settings)。

2404 2405 


5681 5682 

5682在 git 儲存庫外,失敗的 [`WorktreeCreate` hook](/docs/zh-TW/worktrees#non-git-version-control) 會釋放區塊,以便工作階段可以就地編輯工作目錄;該釋放需要 Claude Code v2.1.203 或更新版本。5683在 git 儲存庫外,失敗的 [`WorktreeCreate` hook](/docs/zh-TW/worktrees#non-git-version-control) 會釋放區塊,以便工作階段可以就地編輯工作目錄;該釋放需要 Claude Code v2.1.203 或更新版本。

5683 5684 

5685<h3 id="worktree-location">

5686 `worktree.location`

5687</h3>

5688 

5689選擇遠端機器上 [Desktop SSH 工作階段](/docs/zh-TW/desktop#choose-where-ssh-session-worktrees-go) 建立其 worktrees 的資料夾,以取代 `<project-root>/.claude/worktrees/`。只有桌面應用程式會讀取此設定鍵:`--worktree`、`EnterWorktree` 工具、隔離的 subagents 和背景工作階段都會忽略它。需要 Claude Desktop v1.44121.0 或更新版本。

5690 

5691* **Scope**: [`User`](#scopes),位於遠端機器上的 `~/.claude/settings.json` 中

5692* **Type**: string,絕對路徑或以 `~/` 開頭的路徑

5693* **Default**: 未設定,因此 worktrees 會放在專案內

5694 

5695此範例將資料夾設定為 `~/worktrees`:

5696 

5697```json settings.json theme={null}

5698{

5699 "worktree": {

5700 "location": "~/worktrees"

5701 }

5702}

5703```

5704 

5705在 Desktop 中於 SSH 連線上設定的 **Worktree folder** 優先於此設定鍵。如果您的組織限制工作階段可使用的資料夾,Desktop 會將 worktrees 保留在專案內。

5706 

5684<h2 id="remote-desktop-and-notifications">5707<h2 id="remote-desktop-and-notifications">

5685 遠端、桌面和通知5708 遠端、桌面和通知

5686</h2>5709</h2>


5813 `enableArtifact`5836 `enableArtifact`

5814</h3>5837</h3>

5815 5838 

5816關閉 [Artifact](/docs/zh-TW/artifacts) 工具,該工具將工作階段輸出發佈為 claude.ai 上的私人網頁。當您在 `/config` 中關閉 **Artifacts** 列時,Claude Code 會將此金鑰寫入您的使用者設定,因此您通常不會手動編輯它。需要 Claude Code v2.1.196 或更新版本。5839關閉 [Artifact](/docs/zh-TW/artifacts) 工具,該工具將工作階段輸出發佈為 claude.ai 上的私人網頁。當您在 `/config` 中關閉 **Artifacts** 列時,Claude Code 會將此金鑰寫入您的使用者設定,因此您通常不會手動編輯它。

5817 5840 

5818* **範圍**:[`任何檔案`](#scopes)。每個檔案都可以關閉工具,但沒有任何檔案可以將其重新開啟。5841* **範圍**:[`任何檔案`](#scopes)。每個檔案都可以關閉工具,但沒有任何檔案可以將其重新開啟。

5819* **類型**:布林值5842* **類型**:布林值


5920 `sshConfigs`5943 `sshConfigs`

5921</h3>5944</h3>

5922 5945 

5923將 SSH 連線新增到[桌面](/docs/zh-TW/desktop#pre-configure-ssh-connections-for-your-team)環境下拉式選單。管理員使用它來向團隊分發共用連線。您在受管理設定中定義的連線顯示為受管理,因此使用者可以選擇它們,但無法在應用程式中編輯或刪除它們。5946將 SSH 連線新增到[桌面](/docs/zh-TW/desktop#pre-configure-ssh-connections-for-your-team)環境下拉式選單。管理員使用它來向團隊分發共用連線。您在受管理設定中定義的連線會顯示為受管理。使用者可以選擇它們,並為其[設定自己的 **Worktree 資料夾**](/docs/zh-TW/desktop#choose-where-ssh-session-worktrees-go),但無法在應用程式中編輯其他任何內容或刪除它們。

5924 5947 

5925* **範圍**:[`使用者或受管理`](#scopes)。桌面應用程式讀取此金鑰。預設情況下,它會從[單一受管理來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取受管理的連線。5948* **範圍**:[`使用者或受管理`](#scopes)。桌面應用程式讀取此金鑰。預設情況下,它會從[單一受管理來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取受管理的連線。

5926* **類型**:物件陣列,每個物件具有必需的 `id`、`name` 和 `sshHost` 以及選用的 `sshPort` 和 `sshIdentityFile`5949* **類型**:物件陣列,每個物件具有必需的 `id`、`name` 和 `sshHost` 以及選用的 `sshPort` 和 `sshIdentityFile`


6085 6108 

6086限制人員可以使用哪種帳戶登入。設定 `"claudeai"` 以僅允許 claude.ai 帳戶,設定 `"console"` 以僅允許 Claude Console 帳戶,或設定 `"gateway"` 以將人員傳送到 [cloud gateway](/docs/zh-TW/claude-apps-gateway) 而不是第一方登入。管理員在受管設定中設定它,並將其與 [`forceLoginOrgUUID`](#forceloginorguuid) 配對,以將開發人員的 claude.ai 登入保持在一個組織內。如果您在任何設定檔中將其設定為 `"claudeai"` 或 `"console"`,Claude Code 也會停止在該檔案適用的工作階段中提供[無金鑰 Console 登入](/docs/zh-TW/authentication#sign-in-without-an-api-key)。6109限制人員可以使用哪種帳戶登入。設定 `"claudeai"` 以僅允許 claude.ai 帳戶,設定 `"console"` 以僅允許 Claude Console 帳戶,或設定 `"gateway"` 以將人員傳送到 [cloud gateway](/docs/zh-TW/claude-apps-gateway) 而不是第一方登入。管理員在受管設定中設定它,並將其與 [`forceLoginOrgUUID`](#forceloginorguuid) 配對,以將開發人員的 claude.ai 登入保持在一個組織內。如果您在任何設定檔中將其設定為 `"claudeai"` 或 `"console"`,Claude Code 也會停止在該檔案適用的工作階段中提供[無金鑰 Console 登入](/docs/zh-TW/authentication#sign-in-without-an-api-key)。

6087 6110 

6088* **範圍**:[`任何檔案`](#scopes)。Claude Code 僅從機器上的受管來源(`managed-settings.json`、macOS plist 或 Windows HKLM 登錄,或原則協助程式)接受 `"gateway"`。它在使用者、專案、本機、HKCU 和伺服器受管設定中將 `"gateway"` 視為未設定,與 [`forceLoginGatewayUrl`](#forcelogingatewayurl) 的規則相同。6111* **範圍**:[`任何檔案`](#scopes)。Claude Code 從與 [`forceLoginGatewayUrl`](#forcelogingatewayurl) 相同的來源接受 `"gateway"`,並在其他所有位置將其視為未設定。

6089* **類型**:字串,其中之一:6112* **類型**:字串,其中之一:

6090 * `"claudeai"`:僅 claude.ai 帳戶可以登入6113 * `"claudeai"`:僅 claude.ai 帳戶可以登入

6091 * `"console"`:僅 Claude Console 帳戶可以登入6114 * `"console"`:僅 Claude Console 帳戶可以登入


6108 6131 

6109設定 `/login` Cloud gateway 畫面連線到的 gateway URL,以便人員可以到達您的 [cloud gateway](/docs/zh-TW/claude-apps-gateway) 而無需輸入其位址。該畫面沒有 URL 欄位:設定此金鑰時,它會顯示您的 gateway URL,並在人員按下 Enter 時連線;不設定時,它會告訴他們聯絡其 IT 管理員。6132設定 `/login` Cloud gateway 畫面連線到的 gateway URL,以便人員可以到達您的 [cloud gateway](/docs/zh-TW/claude-apps-gateway) 而無需輸入其位址。該畫面沒有 URL 欄位:設定此金鑰時,它會顯示您的 gateway URL,並在人員按下 Enter 時連線;不設定時,它會告訴他們聯絡其 IT 管理員。

6110 6133 

6111此金鑰或 `forceLoginMethod: "gateway"` 中的任一個都會使機器僅限 gateway,但使用 `CLAUDE_CODE_USE_*` 選擇雲端提供者的工作階段除外。`/login` 接著會在 Cloud gateway 畫面上開啟,沒有登入方法選擇器。請參閱[管理員原則需要 Cloud gateway 登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in),了解剩餘第一方登入或 API 金鑰會發生什麼。設定兩個金鑰,以便畫面連線而不是顯示錯誤。6134在受管設定中,此金鑰或 `forceLoginMethod: "gateway"` 中的任一個都會使機器僅限 gateway,但使用 `CLAUDE_CODE_USE_*` 選擇雲端提供者的工作階段除外。`/login` 接著會在 Cloud gateway 畫面上開啟,沒有登入方法選擇器。請參閱[管理員原則需要 Cloud gateway 登入](/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in),了解剩餘第一方登入或 API 金鑰會發生什麼。設定兩個金鑰,以便畫面連線而不是顯示錯誤。

6112 6135 

6113* **範圍**:[`受管`](#scopes)。僅從機器上的來源讀取:`managed-settings.json`、macOS plist 或 Windows HKLM 登錄,或原則協助程式。Claude Code 在 HKCU 和伺服器受管設定中忽略它。6136* **範圍**:[`使用者或受管`](#scopes)。從機器上的受管來源讀取:`managed-settings.json`、macOS plist 或 Windows HKLM 登錄,或原則協助程式。在沒有上述任何來源的機器上,Claude Code v2.1.295 或更新版本也會從[使用者設定](/docs/zh-TW/claude-apps-gateway#set-the-gateway-url-in-user-settings)讀取它。Claude Code 在 HKCU 和伺服器受管設定中忽略它。

6114* **類型**:字串,包括協定(scheme)的完整 URL6137* **類型**:字串,包括協定(scheme)的完整 URL

6115* **預設**:未設定,所以 Cloud gateway 畫面顯示錯誤,告訴人員聯絡其 IT 管理員6138* **預設**:未設定,所以 Cloud gateway 畫面顯示錯誤,告訴人員聯絡其 IT 管理員

6116 6139 


6140}6163}

6141```6164```

6142 6165 

6143如果受管來源設定空陣列或 Claude Code 無法解析的值,Claude Code 會使用誤設定訊息阻止每個登入。6166如果受管來源設定空陣列,或設定不是字串也不是字串陣列的值,使用 Anthropic 帳戶登入的使用者將無法啟動 Claude Code 或完成登入。他們會看到一則指名 `forceLoginOrgUUID` 並告訴他們聯絡管理員的訊息。若是 [`policyHelper`](#policyhelper) 輸出錯誤類型的值,則會改為[使其執行失敗](#helper-failures)。

6144 6167 

6145請參閱[限制登入到您的組織](/docs/zh-TW/authentication#restrict-login-to-your-organization),了解 Claude Code 如何處理 Claude Console 登入、其他登入路徑和環境憑證。6168請參閱[限制登入到您的組織](/docs/zh-TW/authentication#restrict-login-to-your-organization),了解 Claude Code 如何處理 Claude Console 登入、其他登入路徑和環境憑證。

6146 6169 


6806 `copyFullResponse`6829 `copyFullResponse`

6807</h3>6830</h3>

6808 6831 

6809讓 [`/copy`](/docs/zh-TW/commands) 每次都複製完整回應,無需在回應包含程式碼區塊時顯示的選擇器。在該選擇器中選擇**始終複製完整回應**會將此金鑰設定為 `true`。會在 `/config` 中顯示為**略過 /copy 選擇器**。6832讓 [`/copy`](/docs/zh-TW/commands) 每次都複製完整回應,無需顯示選擇器。在該選擇器中選擇**始終複製完整回應**會將此金鑰設定為 `true`。會在 `/config` 中顯示為**略過 /copy 選擇器**。

6810 6833 

6811* **範圍**:[`全域設定`](#scopes)6834* **範圍**:[`全域設定`](#scopes)

6812* **類型**:布林值6835* **類型**:布林值

6813 * `true`:`/copy` 複製完整回應,無需顯示選擇器6836 * `true`:`/copy` 複製完整回應,無需顯示選擇器

6814 * `false`:當回應包含程式碼區塊時,`/copy` 顯示一個選擇器,您可以在其中選擇一個程式碼區塊或完整回應6837 * `false`:當回應包含程式碼區塊或引用區塊時,`/copy` 顯示一個選擇器,您可以在其中選擇一個區塊或完整回應

6815* **預設值**:`false`6838* **預設值**:`false`

6816 6839 

6817```json ~/.claude.json theme={null}6840```json ~/.claude.json theme={null}

skills.md +7 −7

Details

192 192 

193Claude Code 從您啟動它的目錄中的 `.claude/skills/` 以及直到版本庫根目錄的每個父目錄中載入專案技能,因此在 `packages/frontend/` 中啟動仍會拾取在根目錄定義的技能。當您在 v2.1.246 或更新版本上[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 會新增新目錄的專案技能。193Claude Code 從您啟動它的目錄中的 `.claude/skills/` 以及直到版本庫根目錄的每個父目錄中載入專案技能,因此在 `packages/frontend/` 中啟動仍會拾取在根目錄定義的技能。當您在 v2.1.246 或更新版本上[使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 會新增新目錄的專案技能。

194 194 

195在連結的 [git worktree](/docs/zh-TW/worktrees) 中執行的工作階段中,Claude Code 只在 worktree 根目錄之前搜尋父目錄。在 Claude Code v2.1.277 或更新版本上,當 worktree 簽出在其根目錄沒有 `.claude/skills` 目錄時,Claude Code 會改為載入主簽出的專案技能。請參閱[worktrees 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。195在您使用 `--worktree` 或 `git worktree add` 建立的連結 [git worktree](/docs/zh-TW/worktrees) 中執行的工作階段中,Claude Code 只在 worktree 根目錄之前搜尋父目錄。在 Claude Code v2.1.277 或更新版本上,當 worktree 簽出在其根目錄沒有 `.claude/skills` 目錄時,Claude Code 會改為載入主簽出的專案 skill。請參閱[worktree 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。

196 196 

197位於您啟動位置下方的 `.claude/skills/` 目錄中的技能在啟動時不會載入。它們在 Claude 首次讀取或編輯該子目錄中的檔案時載入,並在工作階段的其餘時間保持可用。在此之前,它們不會出現在 `/` 功能表中,您也無法按名稱叫用它們。若要更早載入它們,請使用子目錄的路徑執行 `/add-dir`,這需要 Claude Code v2.1.257 或更新版本。197位於您啟動位置下方的 `.claude/skills/` 目錄中的 skill 在啟動時不會載入。它們在 Claude 首次讀取或編輯該子目錄中的檔案時載入,並在工作階段的其餘時間保持可用。在此之前,它們不會出現在 `/` 功能表中,您也無法按名稱叫用它們。若要更早載入它們,請使用子目錄的路徑執行 `/add-dir`,這需要 Claude Code v2.1.257 或更新版本。對於從桌面應用程式啟動的 worktree 工作階段,請參閱[worktree 與主簽出共享的內容](/docs/zh-TW/worktrees#what-worktrees-share-with-the-main-checkout)。

198 198 

199當巢狀技能與另一個技能共享名稱時,兩者都保持可用。在版本庫根目錄有 `deploy` 技能,在 `apps/web/.claude/skills/` 中有另一個:199當巢狀技能與另一個技能共享名稱時,兩者都保持可用。在版本庫根目錄有 `deploy` 技能,在 `apps/web/.claude/skills/` 中有另一個:

200 200 


235 235 

236如果技能僅存在於您機器上的 `~/.claude/skills/` 中,當[例行工作](/docs/zh-TW/routines)叫用它時,Claude Code 會報告找不到該技能,因為每次例行工作執行都會啟動為新的雲端工作階段。若要在這些工作階段中提供個人技能:236如果技能僅存在於您機器上的 `~/.claude/skills/` 中,當[例行工作](/docs/zh-TW/routines)叫用它時,Claude Code 會報告找不到該技能,因為每次例行工作執行都會啟動為新的雲端工作階段。若要在這些工作階段中提供個人技能:

237 237 

238* 對於 Cowork 和雲端工作階段,為您的 claude.ai 帳戶啟用該技能。238* 對於 Cowork 和雲端工作階段,為您的 claude.ai 帳戶啟用該 skill。[自架環境中的某些工作階段](/docs/zh-TW/self-hosted-environments-configuration#how-each-session’s-config-is-assembled)不會載入您帳戶的 skill。

239* 對於雲端工作階段,您可以改為將技能提交到版本庫的 `.claude/skills/`。在版本庫的 `.claude/settings.json` 中宣告的外掛程式和僅在您的使用者設定中啟用的外掛程式[不會在雲端工作階段中載入](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)。239* 對於雲端工作階段,您可以改為將技能提交到版本庫的 `.claude/skills/`。在版本庫的 `.claude/settings.json` 中宣告的外掛程式和僅在您的使用者設定中啟用的外掛程式[不會在雲端工作階段中載入](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)。

240 240 

241[Desktop 排程工作](/docs/zh-TW/desktop-scheduled-tasks)在您的機器上本地執行,因此它們會載入 `~/.claude/skills/`。241[Desktop 排程工作](/docs/zh-TW/desktop-scheduled-tasks)在您的機器上本地執行,因此它們會載入 `~/.claude/skills/`。


434| `when_to_use` | 否 | Claude 應何時調用 skill 的其他上下文,例如觸發短語或範例請求。附加到 skill 列表中的 `description`,並計入 1,536 字元上限。 |434| `when_to_use` | 否 | Claude 應何時調用 skill 的其他上下文,例如觸發短語或範例請求。附加到 skill 列表中的 `description`,並計入 1,536 字元上限。 |

435| `argument-hint` | 否 | 在自動完成期間顯示的提示,以指示預期的引數。範例:`[issue-number]` 或 `[filename] [format]`。 |435| `argument-hint` | 否 | 在自動完成期間顯示的提示,以指示預期的引數。範例:`[issue-number]` 或 `[filename] [format]`。 |

436| `arguments` | 否 | 用於 skill 內容中[`$name` 替換](#available-string-substitutions)的命名位置引數。接受以空格分隔的字串或 YAML 列表。名稱按順序映射到引數位置。 |436| `arguments` | 否 | 用於 skill 內容中[`$name` 替換](#available-string-substitutions)的命名位置引數。接受以空格分隔的字串或 YAML 列表。名稱按順序映射到引數位置。 |

437| `disable-model-invocation` | 否 | 設定為 `true` 以防止 Claude 自動加載此 skill。用於您想使用 `/name` 手動觸發的工作流程。也防止 skill 被[預加載到子代理中](/docs/zh-TW/sub-agents#preload-skills-into-subagents)。從 v2.1.196 開始,也防止 skill 在[排程任務](/docs/zh-TW/scheduled-tasks)以 skill 作為其提示觸發時運行。預設值:`false`。 |437| `disable-model-invocation` | 否 | 設定為 `true` 以防止 Claude 自動加載此 skill。用於您想使用 `/name` 手動觸發的工作流程。也防止 skill 被[預加載到 subagents 中](/docs/zh-TW/sub-agents#preload-skills-into-subagents),以及在[排程任務](/docs/zh-TW/scheduled-tasks)以 skill 作為其提示詞觸發時運行。預設值:`false`。 |

438| `user-invocable` | 否 | 當只有 Claude 應調用 skill 時設定為 `false`:Claude Code 將其從 `/` 菜單中隱藏,當您鍵入 `/name` 時不運行它。用於使用者不應直接調用的背景知識。預設值:`true`。 |438| `user-invocable` | 否 | 當只有 Claude 應調用 skill 時設定為 `false`:Claude Code 將其從 `/` 菜單中隱藏,當您鍵入 `/name` 時不運行它。用於使用者不應直接調用的背景知識。預設值:`true`。 |

439| `allowed-tools` | 否 | Claude 在調用此 skill 的回合中可以使用而無需請求許可的工具。當您發送下一條訊息時,授予清除。接受以空格或逗號分隔的字串或 YAML 列表。請參閱[為 skill 預先批准工具](#pre-approve-tools-for-a-skill)。 |439| `allowed-tools` | 否 | Claude 在調用此 skill 的回合中可以使用而無需請求許可的工具。當您發送下一條訊息時,授予清除。接受以空格或逗號分隔的字串或 YAML 列表。請參閱[為 skill 預先批准工具](#pre-approve-tools-for-a-skill)。 |

440| `disallowed-tools` | 否 | 此 skill 處於活動狀態時從 Claude 的可用工具池中移除的工具。用於不應呼叫某些工具的自主 skills,例如背景迴圈的 `AskUserQuestion`。接受以空格或逗號分隔的字串或 YAML 列表。當您發送下一條訊息時,限制清除。與拒絕規則一樣,當任何其他工具保持時,該欄位無法移除[`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior)。 |440| `disallowed-tools` | 否 | 此 skill 處於活動狀態時從 Claude 的可用工具池中移除的工具。用於不應呼叫某些工具的自主 skills,例如背景迴圈的 `AskUserQuestion`。接受以空格或逗號分隔的字串或 YAML 列表。當您發送下一條訊息時,限制清除。與拒絕規則一樣,當任何其他工具保持時,該欄位無法移除[`EndConversation`](/docs/zh-TW/tools-reference#endconversation-tool-behavior)。 |


528 528 

529如果此 skill 安裝在 `~/.claude/skills/render-chart/`,`${CLAUDE_SKILL_DIR}` 的兩個出現都擴展到該目錄。`allowed-tools` 規則然後匹配 skill 主體告訴 Claude 運行的確切命令,因此指令碼運行而無需提示。529如果此 skill 安裝在 `~/.claude/skills/render-chart/`,`${CLAUDE_SKILL_DIR}` 的兩個出現都擴展到該目錄。`allowed-tools` 規則然後匹配 skill 主體告訴 Claude 運行的確切命令,因此指令碼運行而無需提示。

530 530 

531`${CLAUDE_PROJECT_DIR}` 替換需要 Claude Code v2.1.196 或更新版本。

532 

533索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展到 `hello world`,`$1` 擴展到 `second`。`$ARGUMENTS` 佔位符始終擴展到完整的引數字串,如鍵入的那樣。531索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展到 `hello world`,`$1` 擴展到 `second`。`$ARGUMENTS` 佔位符始終擴展到完整的引數字串,如鍵入的那樣。

534 532 

535沒有對應引數的索引佔位符(例如僅傳遞一個引數時的 `$2`)在內容中保持不變。來自 [`arguments`](#frontmatter-reference) frontmatter 的命名佔位符,沒有匹配的引數,擴展為空字串。533沒有對應引數的索引佔位符(例如僅傳遞一個引數時的 `$2`)在內容中保持不變。來自 [`arguments`](#frontmatter-reference) frontmatter 的命名佔位符,沒有匹配的引數,擴展為空字串。


641 639 

642[自動壓縮](/docs/zh-TW/how-claude-code-works#when-context-fills-up)在 token 預算內進行調用的 skills。當對話被總結以釋放上下文時,Claude Code 在總結後重新附加每個 skill 的最新調用,保留每個的前 5,000 個 token。重新附加的 skills 共享 25,000 個 token 的組合預算。Claude Code 從最近調用的 skill 開始填充此預算,因此如果您在一個工作階段中調用了許多,較舊的 skills 可能在壓縮後完全被丟棄。640[自動壓縮](/docs/zh-TW/how-claude-code-works#when-context-fills-up)在 token 預算內進行調用的 skills。當對話被總結以釋放上下文時,Claude Code 在總結後重新附加每個 skill 的最新調用,保留每個的前 5,000 個 token。重新附加的 skills 共享 25,000 個 token 的組合預算。Claude Code 從最近調用的 skill 開始填充此預算,因此如果您在一個工作階段中調用了許多,較舊的 skills 可能在壓縮後完全被丟棄。

643 641 

644如果 skill 似乎在第一個回應後停止影響行為,內容通常仍然存在,模型選擇其他工具或方法。加強 skill 的 `description` 和指示,以便模型繼續偏好它,或使用 [hooks](/docs/zh-TW/hooks) 來確定性地強制行為。如果 skill 很大或您在它之後調用了其他幾個,在壓縮後重新調用它以恢復完整內容。642如果 Claude 在工作階段中途停止遵循 skill,請參閱[Claude 停止遵循 skill](#claude-stops-following-a-skill)。

645 643 

646<h3 id="pre-approve-tools-for-a-skill">644<h3 id="pre-approve-tools-for-a-skill">

647 為 skill 預先批准工具645 為 skill 預先批准工具


843* 當您在同一技能的較早呼叫仍在執行時呼叫分叉技能時841* 當您在同一技能的較早呼叫仍在執行時呼叫分叉技能時

844* 當[排程工作](/docs/zh-TW/scheduled-tasks)以技能作為其提示時觸發842* 當[排程工作](/docs/zh-TW/scheduled-tasks)以技能作為其提示時觸發

845 843 

844當[動態工作流程](/docs/zh-TW/workflows)中的 agent 呼叫分叉 skill 時,即使 skill 沒有設定 `background: false`,該 agent 也會等待並接收結果。在 v2.1.295 之前,Claude Code 在此情況下不會等待,而當 skill 在背景中執行時,其結果會送達您的主要對話,而不是送達該 agent。

845 

846背景分叉也會使用[適用於背景子代理的較窄工具集](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)執行:技能的子代理是常規代理類型,所以分叉對話的子代理豁免不涵蓋它。如果您的技能步驟取決於該集合外的工具,請設定 `background: false` 以保持完整工具集。846背景分叉也會使用[適用於背景子代理的較窄工具集](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)執行:技能的子代理是常規代理類型,所以分叉對話的子代理豁免不涵蓋它。如果您的技能步驟取決於該集合外的工具,請設定 `background: false` 以保持完整工具集。

847 847 

848在背景中執行的分叉技能會在您工作階段的[檢查點](/docs/zh-TW/checkpointing)之外應用其編輯,所以 `/rewind` 不會撤銷它們;使用 git 來還原它們。848在背景中執行的分叉技能會在您工作階段的[檢查點](/docs/zh-TW/checkpointing)之外應用其編輯,所以 `/rewind` 不會撤銷它們;使用 git 來還原它們。

sub-agents.md +3 −5

Details

386* **主對話的模型屬於該家族**:子代理在主對話的確切模型上執行,包括任何 `[1m]` 尾碼,因此它獲得與主對話相同的[擴展上下文](/docs/zh-TW/model-config#extended-context)視窗。386* **主對話的模型屬於該家族**:子代理在主對話的確切模型上執行,包括任何 `[1m]` 尾碼,因此它獲得與主對話相同的[擴展上下文](/docs/zh-TW/model-config#extended-context)視窗。

387* **Claude Code 無法判斷主對話的模型家族,在[Anthropic API 以外的提供者](/docs/zh-TW/third-party-integrations)上**:這可能發生在 Amazon Bedrock 上的[應用程式推論設定檔 ARN](/docs/zh-TW/amazon-bedrock#iam-configuration),Claude Code 尚未解析為支援模型。此情況僅涵蓋 `opus` 別名,當您設定 [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/zh-TW/model-config#environment-variables) 時不適用,因為 `opus` 然後解析為您設定的模型。387* **Claude Code 無法判斷主對話的模型家族,在[Anthropic API 以外的提供者](/docs/zh-TW/third-party-integrations)上**:這可能發生在 Amazon Bedrock 上的[應用程式推論設定檔 ARN](/docs/zh-TW/amazon-bedrock#iam-configuration),Claude Code 尚未解析為支援模型。此情況僅涵蓋 `opus` 別名,當您設定 [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/zh-TW/model-config#environment-variables) 時不適用,因為 `opus` 然後解析為您設定的模型。

388 388 

389`CLAUDE_CODE_SUBAGENT_MODEL` 中的別名始終解析為別名指向的版本,即使它命名主對話的家族。389`CLAUDE_CODE_SUBAGENT_MODEL` 中的別名一律解析為別名指向的版本,即使它指定的是主對話的家族。將此變數設定為 `inherit` 等同於不設定它。

390 390 

391單獨設定 `CLAUDE_CODE_SUBAGENT_MODEL` 不會改變內建 Explore 和 Plan 子代理執行的模型。若要改變它,請參閱[在一個模型上執行每個子代理](#run-every-subagent-on-one-model)。391單獨設定 `CLAUDE_CODE_SUBAGENT_MODEL` 不會改變內建 Explore 和 Plan 子代理執行的模型。若要改變它,請參閱[在一個模型上執行每個子代理](#run-every-subagent-on-one-model)。

392 392 

393在 v2.1.251 之前,`CLAUDE_CODE_SUBAGENT_MODEL` 在此順序中排在第一位,並覆蓋每次叫用參數和 frontmatter,包括 `model: inherit`。393在 v2.1.251 之前,`CLAUDE_CODE_SUBAGENT_MODEL` 在此順序中排在第一位,並覆蓋每次叫用參數和 frontmatter,包括 `model: inherit`。

394 394 

395將變數設定為 `inherit` 與不設定它相同。在 v2.1.196 之前,該值強制子代理進入主對話的模型並忽略其他來源。

396 

397Claude Code 根據您組織的 [`availableModels`](/docs/zh-TW/model-config#restrict-model-selection) 允許清單檢查每次叫用參數、frontmatter 和環境變數值。對於被阻止的值,它替換另一個模型:395Claude Code 根據您組織的 [`availableModels`](/docs/zh-TW/model-config#restrict-model-selection) 允許清單檢查每次叫用參數、frontmatter 和環境變數值。對於被阻止的值,它替換另一個模型:

398 396 

399* 當被阻止的值是家族別名(例如 `opus`)時,Claude Code 在允許清單允許的該家族的最新版本上執行子代理,遵循與 `/model` 相同的[替換規則和提供者範圍](/docs/zh-TW/model-config#restrict-model-selection)。在 v2.1.222 之前,Claude Code 也在被阻止的家族別名的繼承模型上執行子代理。397* 當被阻止的值是家族別名(例如 `opus`)時,Claude Code 在允許清單允許的該家族的最新版本上執行子代理,遵循與 `/model` 相同的[替換規則和提供者範圍](/docs/zh-TW/model-config#restrict-model-selection)。在 v2.1.222 之前,Claude Code 也在被阻止的家族別名的繼承模型上執行子代理。


620| `default` | 手動模式:提示權限 |618| `default` | 手動模式:提示權限 |

621| `acceptEdits` | 自動接受檔案編輯和工作目錄或 `additionalDirectories` 中路徑的常見檔案系統命令 |619| `acceptEdits` | 自動接受檔案編輯和工作目錄或 `additionalDirectories` 中路徑的常見檔案系統命令 |

622| `auto` | [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode):背景分類器檢查命令和受保護目錄寫入 |620| `auto` | [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode):背景分類器檢查命令和受保護目錄寫入 |

623| `dontAsk` | 自動拒絕權限提示。明確允許的工具仍然工作;`AskUserQuestion`、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,以及連接器工具[您的組織在啟用該設定的工作階段中設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools)被拒絕,即使您已允許它們 |621| `dontAsk` | 自動拒絕權限提示。明確允許的工具仍可使用;`AskUserQuestion`、標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[從網路路徑讀取](/docs/zh-TW/permissions#network-paths),以及在該設定適用於 Claude Code 的工作階段中[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具,即使您已允許也會被拒絕 |

624| `bypassPermissions` | [跳過權限提示](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)。子代理僅在主對話執行此模式時在此模式中執行 |622| `bypassPermissions` | [跳過權限提示](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)。子代理僅在主對話執行此模式時在此模式中執行 |

625| `plan` | Plan 模式(唯讀探索) |623| `plan` | Plan 模式(唯讀探索) |

626 624 


1150* **系統提示詞**:agent 自己的提示詞加上 Claude Code 附加的環境詳細資訊,而不是 Claude Code 系統提示詞。自訂 subagents 在 [markdown 正文](#write-subagent-files) 或 `prompt` 欄位中定義它們。內建 agents 有預定義的提示詞。1148* **系統提示詞**:agent 自己的提示詞加上 Claude Code 附加的環境詳細資訊,而不是 Claude Code 系統提示詞。自訂 subagents 在 [markdown 正文](#write-subagent-files) 或 `prompt` 欄位中定義它們。內建 agents 有預定義的提示詞。

1151* **任務訊息**:Claude 在交接工作時編寫的委派提示詞。1149* **任務訊息**:Claude 在交接工作時編寫的委派提示詞。

1152* **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) 時完全不載入。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) 時完全不載入。

1153* **Git 狀態**:Claude Code 在 subagent 啟動時從您的儲存庫讀取的快照。在 Git 儲存庫之外或快照被關閉時不存在;請參閱 [`includeGitInstructions`](/docs/zh-TW/settings-reference#includegitinstructions)。Explore 和 Plan 無論如何都跳過它。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 無論如何都跳過它。

1154* **預載入的 skills**:agent 的 [`skills` 欄位](#preload-skills-into-subagents) 中命名的任何 skill 的完整內容。內建 agents 不預載入 skills。1152* **預載入的 skills**:agent 的 [`skills` 欄位](#preload-skills-into-subagents) 中命名的任何 skill 的完整內容。內建 agents 不預載入 skills。

1155* **同級名單**:一則 [系統提醒](/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 不會出現。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 不會出現。

1156 1154 

Details

122}122}

123```123```

124 124 

125<h2 id="see-session-status-in-your-terminal">

126 在終端機中查看工作階段狀態

127</h2>

128 

129如果您的終端機實作了 OSC 7501 Program Status Protocol,它就能顯示每個互動式 Claude Code 工作階段是正在運作、正在等待您,還是已完成,這在您執行長時間任務或同時執行多個工作階段時很有幫助。Claude Code 中沒有需要開啟的設定。若要了解您的終端機是否實作了此協定,以及它在何處顯示狀態,請查閱其文件。

130 

131如果終端機已實作此協定,但您沒有看到某個工作階段的狀態,請逐一檢查以下原因:

132 

133* **Claude Code 版本**:狀態回報需要 Claude Code v2.1.295 或更新版本。在您的 shell 中執行 `claude --version` 以進行檢查。

134* **tmux**:在 tmux 內,Claude Code 會檢查 tmux 是否支援,而非檢查您的終端機,且 [`allow-passthrough`](#configure-tmux) 對此沒有作用。請在 tmux 之外啟動工作階段。

135* **背景工作階段**:[背景工作階段](/docs/zh-TW/agent-view)不會向您的終端機回報其狀態,即使您已附加至該工作階段也是如此。其狀態會改為顯示在 agent 檢視中。

136* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](/docs/zh-TW/env-vars#variables)**:如果您將此變數設為 `1`,Claude Code 就不會檢查是否支援,也不會回報狀態。請取消設定此變數。

137 

125<h2 id="configure-tmux">138<h2 id="configure-tmux">

126 設定 tmux139 設定 tmux

127</h2>140</h2>

tools-reference.md +32 −11

Details

279 279 

280Edit 工具執行精確的字串替換。它接受 `old_string` 和 `new_string`,並用後者替換前者。它不使用正規表達式或模糊匹配。280Edit 工具執行精確的字串替換。它接受 `old_string` 和 `new_string`,並用後者替換前者。它不使用正規表達式或模糊匹配。

281 281 

282編輯要應用必須通過三項檢查。在任何檢查之前,由 [`Read` 拒絕規則](/docs/zh-TW/permissions#tool-specific-permission-rules)匹配的路徑會被拒絕,包括在該處建立新檔案。拒絕需要 Claude Code v2.1.208 或更新版本。282編輯要應用必須通過這些檢查。在任何檢查之前,由 [`Read` 拒絕規則](/docs/zh-TW/permissions#tool-specific-permission-rules)匹配的路徑會被拒絕,包括在該處建立新檔案。拒絕需要 Claude Code v2.1.208 或更新版本。

283 283 

284* **編輯前讀取**:Claude 在編輯檔案前在目前對話中讀取該檔案,而以 [`PARTIAL view` 通知](#read-tool-behavior)中斷的讀取不計算在內。Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取。較新的模型可以在讀取不需要權限提示且 Read 工具可用時編輯未讀檔案。284* **編輯前讀取**:Claude 在編輯檔案前在目前對話中讀取該檔案,而以 [`PARTIAL view` 通知](#large-files)中斷的讀取不計算在內。Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取。較新的模型可以在讀取不需要權限提示且 Read 工具可用時編輯未讀檔案。

285* **匹配**:`old_string` 必須在檔案中完全按照書寫方式出現。單一個空白字元或縮排差異足以導致不匹配。285* **匹配**:`old_string` 必須在檔案中完全按照書寫方式出現。單一個空白字元或縮排差異足以導致不匹配。

286* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其中包含足夠的周圍內容以確定一個出現位置,要麼設定 `replace_all: true` 以替換所有出現位置。286* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其中包含足夠的周圍內容以確定一個出現位置,要麼設定 `replace_all: true` 以替換所有出現位置。

287 287 

288在 Claude 最後讀取檔案後,磁碟上變更的檔案仍然可以編輯,當 `old_string` 與目前內容完全且明確匹配,且 Claude Code 可以讀取檔案而無需提示時。針對檔案的目前內容進行匹配可保持安全,結果會注意到檔案包含其他變更,因此 Claude 在依賴周圍內容的編輯前重新讀取它。在任何其他情況下,例如過時的 `old_string` 或不使用 `replace_all` 而匹配多次的情況,Claude 在編輯前再次讀取檔案。未讀和已變更檔案的寬鬆處理需要 Claude Code v2.1.208 或更新版本;在此之前,Claude Code 拒絕對它在對話中未讀過或在讀取後在磁碟上變更的任何檔案進行編輯。288在 Claude 最後讀取檔案後,磁碟上變更的檔案仍然可以編輯,當 `old_string` 與目前內容完全且明確匹配,且 Claude Code 可以讀取檔案而無需提示時。針對檔案的目前內容進行匹配可保持安全,結果會注意到檔案包含其他變更,因此 Claude 在依賴周圍內容的編輯前重新讀取它。在任何其他情況下,例如過時的 `old_string` 或不使用 `replace_all` 而匹配多次的情況,Claude 在編輯前再次讀取檔案。未讀和已變更檔案的寬鬆處理需要 Claude Code v2.1.208 或更新版本;在此之前,Claude Code 拒絕對它在對話中未讀過或在讀取後在磁碟上變更的任何檔案進行編輯。

289 289 

290使用 Bash 檢視檔案也滿足編輯前讀取要求,當命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 或 `rg` 在單一檔案上且沒有管道或重新導向時。管道輸出和其他 Bash 命令不計入編輯前讀取檢查。290Claude 使用 `cat` 或 `grep` 等 Bash 命令檢視檔案後,也可以在不另外執行 Read 的情況下編輯該檔案。這些命令為 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 和 `rg`,且每個命令都須在單一檔案上執行,沒有管道或重新導向。未輸出任何匹配結果的搜尋不算作讀取,此清單以外的任何命令也不算。

291 291 

292當 Claude 以這種方式檢視檔案時,Claude Code 也會載入適用於該檔案的任何[子目錄 `CLAUDE.md`](/docs/zh-TW/memory#how-claude-md-files-load) 和[路徑範圍規則](/docs/zh-TW/memory#path-specific-rules)。請參閱 [Read 和 Edit 權限規則](/docs/zh-TW/permissions#read-and-edit),了解您的 `Read` 和 `Edit` 拒絕規則涵蓋哪些 Bash 命令。292當 Claude 以這種方式檢視檔案時,Claude Code 也會載入適用於該檔案的任何[子目錄 `CLAUDE.md`](/docs/zh-TW/memory#how-claude-md-files-load) 和[路徑範圍規則](/docs/zh-TW/memory#path-specific-rules)。請參閱 [Read 和 Edit 權限規則](/docs/zh-TW/permissions#read-and-edit),了解您的 `Read` 和 `Edit` 拒絕規則涵蓋哪些 Bash 命令。

293 293 

294<h3 id="non-utf-8-files">

295 非 UTF-8 檔案

296</h3>

297 

298Claude 無法對不是有效 UTF-8 的檔案使用 [NotebookEdit](#notebookedit-tool-behavior)。Edit 也是如此,除非檔案以小端序 UTF-16 位元組順序標記開頭。當 Claude 嘗試時,工具會拒絕變更並保持檔案不變。被拒絕的檔案包括以 Windows-1252 或 Shift-JIS 等舊式編碼儲存的非 ASCII 文字、二進位檔案,以及包含無效位元組序列的 UTF-8 檔案。

299 

300這些工具之所以拒絕,是因為它們會將整個檔案以 UTF-8 存回,這會把每個無法解碼的位元組替換為替換字元 `U+FFFD`。取而代之的是,[Claude 收到的錯誤](/docs/zh-TW/errors#file-is-not-valid-utf-8)會指示它使用能保留檔案編碼的 shell 命令來進行變更,或先詢問您是否要將檔案轉換為 UTF-8。

301 

302Claude 仍可使用 Write 取代此類檔案,除非新內容包含 `U+FFFD`,也就是 Read 在無法解碼的位元組位置向 Claude 顯示的字元。此防護機制可防止 Claude 將其讀取到的亂碼文字寫回。當 Write 確實取代檔案時,會以 UTF-8 儲存新內容,因此檔案的原始編碼會遺失。

303 

294<h2 id="endconversation-tool-behavior">304<h2 id="endconversation-tool-behavior">

295 EndConversation 工具行為305 EndConversation 工具行為

296</h2>306</h2>


455* `insert`:在目標後新增新儲存格。沒有 `cell_id` 時,新儲存格位於 notebook 的開始。需要 `cell_type` 設定為 `code` 或 `markdown`。465* `insert`:在目標後新增新儲存格。沒有 `cell_id` 時,新儲存格位於 notebook 的開始。需要 `cell_type` 設定為 `code` 或 `markdown`。

456* `delete`:移除目標儲存格。466* `delete`:移除目標儲存格。

457 467 

468對於無法以 UTF-8 解碼的 notebook 檔案,NotebookEdit 會依據[與 Edit 相同的規則](#non-utf-8-files)拒絕處理,且不會寫入任何內容。

469 

458權限規則使用 `Edit(...)` 路徑格式。像 `Edit(notebooks/**)` 這樣的規則涵蓋該目錄中檔案上的 NotebookEdit 呼叫。470權限規則使用 `Edit(...)` 路徑格式。像 `Edit(notebooks/**)` 這樣的規則涵蓋該目錄中檔案上的 NotebookEdit 呼叫。

459 471 

460<h2 id="powershell-tool">472<h2 id="powershell-tool">


514* 個別 [command hooks](/docs/zh-TW/hooks#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中執行該 hook。Hooks 直接啟動 PowerShell,因此無論 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 為何都能運作。526* 個別 [command hooks](/docs/zh-TW/hooks#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中執行該 hook。Hooks 直接啟動 PowerShell,因此無論 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 為何都能運作。

515* [skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中執行 `` !`command` `` 區塊。需要啟用 PowerShell 工具。527* [skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中執行 `` !`command` `` 區塊。需要啟用 PowerShell 工具。

516 528 

517Bash 工具部分所述的相同主工作階段工作目錄重設行為適用於 PowerShell 命令,包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。529PowerShell 命令遵循與 Bash 命令[相同的主工作階段工作目錄重設行為](#what-persists-between-commands),包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。

530 

531PowerShell 命令也會接收 hook 透過 `CLAUDE_ENV_FILE` 保存的變數,條件如 [PowerShell 命令中的保存變數](/docs/zh-TW/hooks#persisted-variables-in-powershell-commands)所述。需要 Claude Code v2.1.296 或更新版本。

518 532 

519來自 `grep`、`rg`、`egrep`、`fgrep`、`findstr` 和 `git grep` 的結束代碼 1 表示無符合項目。來自 `git diff` 的結束代碼 1 表示存在差異。這兩個結果都不會向 Claude 報告為命令失敗。對於 `robocopy`,結束代碼 0 到 7 是資訊性結果,例如複製的檔案或偵測到的額外檔案。結束代碼 8 或更高視為失敗。533來自 `grep`、`rg`、`egrep`、`fgrep`、`findstr` 和 `git grep` 的結束代碼 1 表示無符合項目。來自 `git diff` 的結束代碼 1 表示存在差異。這兩個結果都不會向 Claude 報告為命令失敗。對於 `robocopy`,結束代碼 0 到 7 是資訊性結果,例如複製的檔案或偵測到的額外檔案。結束代碼 8 或更高視為失敗。

520 534 


547 561 

548Read 工具接受檔案路徑並傳回包含行號的內容。Claude 被指示始終傳遞絕對路徑。562Read 工具接受檔案路徑並傳回包含行號的內容。Claude 被指示始終傳遞絕對路徑。

549 563 

550根據預設,Read 從檔案開始處傳回內容。當整個檔案讀取超過權杖限制時,Read 會傳回第一頁並顯示 `PARTIAL view` 通知,告訴 Claude 它收到了多少檔案內容,以及如何使用 `offset` 和 `limit` 讀取更多內容。傳遞明確 `offset` 或 `limit` 的讀取操作如果仍然超過權杖限制,會傳回錯誤。

551 

552具有明確 `limit` 的讀取操作會在選定的行數超過權杖限制可能容納的內容時立即停止,並傳回錯誤而不載入其餘範圍。錯誤會告訴 Claude 使用較小的 `limit`,或者當單一行非常大時,改為使用 [Grep](#grep-tool-behavior) 搜尋特定內容。在 v2.1.208 之前,Claude Code 會在拒絕前將整個範圍載入記憶體,因此讀取具有極長單一行的檔案可能會導致記憶體不足。

553 

554讀取空檔案會傳回通知,說明檔案存在但內容為空,而超過最後一行的 `offset` 會傳回通知,提供檔案的行數。在 v2.1.208 之前,讀取空檔案會傳回超過末尾的通知。564讀取空檔案會傳回通知,說明檔案存在但內容為空,而超過最後一行的 `offset` 會傳回通知,提供檔案的行數。在 v2.1.208 之前,讀取空檔案會傳回超過末尾的通知。

555 565 

556Read 處理純文字以外的多種檔案類型:566Read 處理純文字以外的多種檔案類型:

557 567 

558* **影像**:PNG、JPG 和其他影像格式會以 Claude 可以看到的視覺內容形式傳回,而不是原始位元組。Claude Code 會在傳送前調整大小並重新壓縮大型影像以符合模型的影像大小限制,因此 Claude 可能會看到大型螢幕擷取畫面的縮小版本。在調整大小後仍大於 500KB 的影像會以降低品質的 JPEG 格式重新編碼,其像素尺寸保持不變。如果 Claude 在大型影像中遺漏了細微的像素級細節,請要求它先裁剪感興趣的區域,例如透過 Bash 使用 ImageMagick。568* **影像**:PNG、JPG 和其他影像格式會以 Claude 可以看到的視覺內容形式傳回,而不是原始位元組。Claude Code 會在傳送前調整大小並重新壓縮大型影像以符合模型的影像大小限制,因此 Claude 可能會看到大型螢幕擷取畫面的縮小版本。在調整大小後仍大於 500KB 的影像會以降低品質的 JPEG 格式重新編碼,其像素尺寸保持不變。如果 Claude 在大型影像中遺漏了細微的像素級細節,請要求它先裁剪感興趣的區域,例如透過 Bash 使用 ImageMagick。

559* **PDF**:Claude 會完整讀取短 `.pdf` 檔案。對於超過 10 頁的 PDF,它會使用 `pages` 參數(例如 `"1-5"`)按範圍讀取,一次最多 20 頁。頁面範圍讀取會使用 poppler-utils 中的 `pdftoppm` 呈現頁面,因此在 macOS 上使用 `brew install poppler` 安裝,或在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安裝。在 Windows 和其他平台上,安裝將 `pdftoppm` 放在您的 `PATH` 上的 poppler 組建。沒有它,頁面範圍讀取會失敗並顯示 `pdftoppm is not installed`。569* **PDF**:Claude 會完整讀取短 `.pdf` 檔案。對於超過 10 頁的 PDF,它會使用 `pages` 參數(例如 `"1-5"`)按範圍讀取,一次最多 20 頁。頁面範圍讀取會使用 poppler-utils 中的 `pdftoppm` 呈現頁面,因此在 macOS 上使用 `brew install poppler` 安裝,或在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安裝。在 Windows 和其他平台上,安裝將 `pdftoppm` 放在您的 `PATH` 上的 poppler 組建。沒有它,頁面範圍讀取會失敗並顯示 `pdftoppm is not installed`。

560* **Jupyter 筆記本**:`.ipynb` 檔案會傳回所有儲存格及其輸出,包括程式碼、markdown 和視覺化。Claude Code 拒絕讀取超過 100 MB 的筆記本檔案;錯誤會告訴 Claude 如何改為讀取筆記本的一部分,例如使用 shell 命令讀取儲存格的切片。570* **Jupyter 筆記本**:`.ipynb` 檔案會傳回所有儲存格及其輸出,包括程式碼、markdown 和視覺化。儲存格總計超過 256 KB 或超過 [token 限制](#large-files)的筆記本會改為傳回錯誤。Claude Code 拒絕讀取超過 100 MB 的筆記本檔案;錯誤會告訴 Claude 如何改為讀取筆記本的一部分,例如使用 shell 命令讀取儲存格的切片。

561 571 

562Read 只讀取檔案,不讀取目錄。Claude 使用 shell 命令(例如 `ls`)列出目錄內容。572Read 只讀取檔案,不讀取目錄。Claude 使用 shell 命令(例如 `ls`)列出目錄內容。

563 573 

574<h3 id="large-files">

575 大型檔案

576</h3>

577 

578Claude 可以讀取大於單次 Read 呼叫所能傳回內容的文字檔案。根據預設,單次呼叫最多傳回 25,000 個 token,或您在 [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](/docs/zh-TW/env-vars) 中設定的值,並會拒絕讀取超過 256 KB 的整個檔案,因此 Claude 會使用 `offset` 和 `limit` 分頁讀取較大的檔案。在 Claude Code v2.1.296 或更新版本中,Claude 可以在需要時(例如您要求讀取整個檔案)設定 `allow_large: true`,改為在單次呼叫中讀取整個檔案或較長的行範圍。該讀取會依據工作階段[上下文視窗](/docs/zh-TW/context-window)中剩餘的空間來決定大小,而不是依據預設限制。影像、PDF 和筆記本仍維持其限制。

579 

580當讀取超過預設限制時,Claude 會收到的內容:

581 

582* **整個檔案超過 token 限制**:檔案的第一頁,並附上 `PARTIAL view` 通知,說明它收到了多少檔案內容,以及如何使用 `offset` 和 `limit` 讀取更多內容

583* **整個檔案超過 256 KB,或 `offset` 或 `limit` 讀取超過 token 限制**:錯誤,告訴它使用 `offset` 和 `limit` 讀取一部分,或改為使用 [Grep](#grep-tool-behavior) 搜尋特定內容

584 

564<h2 id="sendfeedback-tool-behavior">585<h2 id="sendfeedback-tool-behavior">

565 SendFeedback 工具行為586 SendFeedback 工具行為

566</h2>587</h2>


734 Write 工具行為755 Write 工具行為

735</h2>756</h2>

736 757 

737Write 工具會建立新檔案或以提供的完整內容覆寫現有檔案。它不會附加或合併。758Write 工具會建立新檔案或以提供的完整內容覆寫現有檔案。它不會附加或合併。Write 也會覆寫位元組無法解碼的現有檔案,並將新內容儲存為 UTF-8,如[非 UTF-8 檔案](#non-utf-8-files)中所述。

738 759 

739Claude 是否必須在目前對話中讀取現有檔案後才能覆寫該檔案,取決於模型和檔案:760Claude 是否必須在目前對話中讀取現有檔案後才能覆寫該檔案,取決於模型和檔案:

740 761 

741* Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取,因此對未讀取的現有檔案進行 Write 會失敗並出現錯誤。762* Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取,因此對未讀取的現有檔案進行 Write 會失敗並出現錯誤。

742* 較新的模型可以在與[讀取前編輯](#edit-tool-behavior)相同的條件下覆寫他們在此工作階段中從未讀取的檔案:讀取它不需要權限提示,且 Read 工具可用。763* 較新的模型可以在與[讀取前編輯](#edit-tool-behavior)相同的條件下覆寫他們在此工作階段中從未讀取的檔案:讀取它不需要權限提示,且 Read 工具可用。

743* Jupyter 筆記本和 Claude 僅部分讀取且帶有[`PARTIAL view` 通知](#read-tool-behavior)的檔案,在每個模型上都需要讀取。764* Jupyter 筆記本和 Claude 僅部分讀取且帶有[`PARTIAL view` 通知](#large-files)的檔案,在每個模型上都需要讀取。

744 765 

745此限制不適用於新檔案。在 v2.1.228 之前,每個模型都需要在覆寫現有檔案前進行讀取。766此限制不適用於新檔案。在 v2.1.228 之前,每個模型都需要在覆寫現有檔案前進行讀取。

746 767 

Details

1212如果您在登入後看到 `API Error: 403 Request not allowed`:1212如果您在登入後看到 `API Error: 403 Request not allowed`:

1213 1213 

1214* **Claude Pro/Max 使用者**:在 [claude.ai/settings](https://claude.ai/settings) 驗證您的訂閱是否有效1214* **Claude Pro/Max 使用者**:在 [claude.ai/settings](https://claude.ai/settings) 驗證您的訂閱是否有效

1215* **Anthropic Console 使用者**:確認您的帳戶具有「Claude Code」或「Developer」角色。管理員在 Anthropic Console 的「設定」→「成員」中指派此角色。1215* **Anthropic Console 使用者**:確認您的帳戶具有「Claude Code」或「Developer」角色。管理員在 Console 的「成員」頁面 [platform.claude.com/settings/members](https://platform.claude.com/settings/members) 指派此角色。

1216* **位於代理伺服器後方**:公司代理伺服器可能干擾 API 請求。請參閱[網路設定](/docs/zh-TW/network-config)以取得代理伺服器設定。1216* **位於代理伺服器後方**:公司代理伺服器可能干擾 API 請求。請參閱[網路設定](/docs/zh-TW/network-config)以取得代理伺服器設定。

1217 1217 

1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">

vs-code.md +3 −2

Details

237 237 

238若要恢復已存檔的工作階段,請展開 **Archived sessions** 並點擊 **Unarchive session**。若要一次恢復每個已存檔的工作階段,請將滑鼠懸停在活動列中的 **Archived sessions** 標頭上,並點擊其取消存檔圖示,這需要 Claude Code v2.1.277 或更新版本。在 v2.1.257 之前,操作是 **Delete session**,它隱藏了一個工作階段,無法恢復。您之前刪除的工作階段會在您升級後出現在 **Archived sessions** 下。238若要恢復已存檔的工作階段,請展開 **Archived sessions** 並點擊 **Unarchive session**。若要一次恢復每個已存檔的工作階段,請將滑鼠懸停在活動列中的 **Archived sessions** 標頭上,並點擊其取消存檔圖示,這需要 Claude Code v2.1.277 或更新版本。在 v2.1.257 之前,操作是 **Delete session**,它隱藏了一個工作階段,無法恢復。您之前刪除的工作階段會在您升級後出現在 **Archived sessions** 下。

239 239 

240當您恢復的對話在計畫模式中結束時,Claude Code 會恢復計畫模式。需要 Claude Code v2.1.246 或更新版本。Claude Code 在兩種情況下不會恢復它:240當您恢復的對話在 plan mode 中結束時,Claude Code 會恢復 plan mode。需要 Claude Code v2.1.246 或更新版本。Claude Code 在以下情況下不會恢復它:

241 241 

242* 擴充功能從 `claudeCode.initialPermissionMode` 或從較早對話進行的選擇中[選擇起始權限模式](/docs/zh-TW/permission-modes#switch-permission-modes)242* 擴充功能從 `claudeCode.initialPermissionMode` 或從較早對話進行的選擇中[選擇起始權限模式](/docs/zh-TW/permission-modes#switch-permission-modes)

243* 您已設定 `claudeCode.claudeProcessWrapper`243* 您已設定 `claudeCode.claudeProcessWrapper`

244* [拒絕規則](/docs/zh-TW/permissions#manage-permissions)移除了 [`ExitPlanMode`](/docs/zh-TW/tools-reference) 工具

244 245 

245<h3 id="resume-cloud-sessions-from-claude-ai">246<h3 id="resume-cloud-sessions-from-claude-ai">

246 從 Claude.ai 恢復雲端工作階段247 從 Claude.ai 恢復雲端工作階段


479 480 

480Claude 會為瀏覽器任務開啟新分頁,並共享您瀏覽器的登入狀態,因此它可以存取您已登入的任何網站。481Claude 會為瀏覽器任務開啟新分頁,並共享您瀏覽器的登入狀態,因此它可以存取您已登入的任何網站。

481 482 

482若要讓每個工作階段在啟動時即連接到您的瀏覽器,而無需輸入 `@browser`,請參閱[預設啟用 Chrome](/docs/zh-TW/chrome#enable-chrome-by-default)。關於在以此方式連接的工作階段中,Claude Code 於執行瀏覽器操作前詢問您的情況,請參閱[VS Code 工作階段中的權限提示](/docs/zh-TW/chrome#permission-prompts-in-vs-code-sessions)。483若要讓每個工作階段在啟動時即連接到您的瀏覽器,而無需輸入 `@browser`,請參閱[預設啟用 Chrome](/docs/zh-TW/chrome#enable-chrome-by-default)。關於 Claude Code 何時會在執行瀏覽器操作前詢問您,請參閱[VS Code 工作階段中的權限提示](/docs/zh-TW/chrome#permission-prompts-in-vs-code-sessions)。

483 484 

484如需設定說明、完整的功能清單和疑難排解,請參閱 [使用 Claude Code 搭配 Chrome](/docs/zh-TW/chrome)。485如需設定說明、完整的功能清單和疑難排解,請參閱 [使用 Claude Code 搭配 Chrome](/docs/zh-TW/chrome)。

485 486 

workflows.md +1 −1

Details

511* 在大型執行前檢查 `/model`,如果您通常為日常工作切換到較小的模型511* 在大型執行前檢查 `/model`,如果您通常為日常工作切換到較小的模型

512* 當您描述任務時,要求 Claude 為不需要最強模型的階段使用較小的模型512* 當您描述任務時,要求 Claude 為不需要最強模型的階段使用較小的模型

513 513 

514當您組織的 [`availableModels` 允許清單](/docs/zh-TW/model-config#restrict-model-selection)阻止指令碼為代理請求的模型時,該代理會改為在替代模型上執行,遵循與子代理相同的[替代規則](/docs/zh-TW/sub-agents#choose-a-model)。[`/workflows`](#watch-the-run) 中的執行進度檢視會顯示一個警告,命名請求的和替代的模型。514當您組織的 [`availableModels` 允許清單](/docs/zh-TW/model-config#restrict-model-selection)封鎖指令碼為 agent 請求的模型時,該 agent 會改為在替代模型上執行,並遵循與 [subagent 相同的替代規則](/docs/zh-TW/sub-agents#choose-a-model)。

515 515 

516<h3 id="set-a-size-guideline">516<h3 id="set-a-size-guideline">

517 設定大小指南517 設定大小指南

worktrees.md +3 −1

Details

268 268 

269 相同的讀取涵蓋 `.claude/agents` 和 `.claude/commands`。對於技能,讀取需要 Claude Code v2.1.277 或更新版本。269 相同的讀取涵蓋 `.claude/agents` 和 `.claude/commands`。對於技能,讀取需要 Claude Code v2.1.277 或更新版本。

270 270 

271無論您是使用 `--worktree`、使用 `git worktree add` 還是透過[桌面應用程式](/docs/zh-TW/desktop#work-in-parallel-with-sessions)建立 worktree,所有這些都適用。271無論您是使用 `--worktree` 還是使用 `git worktree add` 建立 worktree,所有這些都適用。

272 

273在您從[桌面應用程式](/docs/zh-TW/desktop#work-in-parallel-with-sessions)啟動的 worktree 工作階段中,Claude Code 會從主要檢出的根目錄而非 worktree 讀取專案設定,例如設定、hook、skill、agent、命令和 [`.mcp.json`](/docs/zh-TW/mcp#project-scope) 伺服器。Hook 命令會在該根目錄中執行,且 `${CLAUDE_PROJECT_DIR}` 指向該根目錄。若要存取 Claude 正在處理的檔案,請從 hook 的 [`cwd` 輸入欄位](/docs/zh-TW/hooks#common-input-fields)讀取 worktree 的路徑。`CLAUDE.md` 檔案和 `.claude/rules/` 仍會從 worktree 載入。

272 274 

273<h2 id="manage-worktrees-manually">275<h2 id="manage-worktrees-manually">

274 手動管理 worktrees276 手動管理 worktrees