SpyBara
Go Premium

Documentation 2026-10-23 22:59 UTC to 2026-10-24 22:59 UTC

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

artifacts.md +1 −3

Details

340 340 

341Claude Docs 作為 claude.ai [連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)而不是命令到達 Claude Code。連接後,`/mcp` 會將其列為 `claude.ai Claude Docs`。針對供其他人使用的文件的要求會進入 Claude Docs 而不是成品頁面:規格、提案或您在工作階段中進行的計畫寫法。Claude 會在草擬文件時提供文件的連結。341Claude Docs 作為 claude.ai [連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)而不是命令到達 Claude Code。連接後,`/mcp` 會將其列為 `claude.ai Claude Docs`。針對供其他人使用的文件的要求會進入 Claude Docs 而不是成品頁面:規格、提案或您在工作階段中進行的計畫寫法。Claude 會在草擬文件時提供文件的連結。

342 342 

343屬於程式碼庫的文件(例如 README)會保持為檔案。若要取得 Claude 否則會放在 Claude Docs 中的內容的檔案,請命名格式,例如 `.docx` 或儲存庫中的 Markdown 檔案。343屬於程式碼庫的文件(例如 README)會保持為檔案。若要取得 Claude 否則會放在 Claude Docs 中的內容的檔案,請命名格式,例如 `.docx` 或儲存庫中的 Markdown 檔案。若只要關閉 `claude.ai Claude Docs` 連接器,請參閱[停用 claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#disable-claude-ai-connectors)。

344 

345若要關閉連接器,請將 `claude.ai Claude Docs` 新增至 `deniedMcpServers` 或使用 `/mcp` 切換,兩者都在[停用 claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#disable-claude-ai-connectors)中說明。

346 344 

347## 頁面限制345## 頁面限制

348 346 

Details

458 458 

459#### 父設定中的 hook 和 skill 設定鍵如何生效459#### 父設定中的 hook 和 skill 設定鍵如何生效

460 460 

461如果您透過 Agent SDK 的 `managedSettings` 選項將 `disableAllHooks: true` 作為父設定傳遞,並非每個 hook 都會停止。您的 [SDK hook 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md)仍會執行,管理員的 hook 也會執行,您的應用程式無法將其關閉。461您的應用程式在 Agent SDK 的 [`managedSettings`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options) 選項中傳遞的設定鍵屬於父設定。在管理員部署受管設定的機器上,Claude Code 會忽略父設定,除非管理員[允許嵌入主機新增原則](https://code.claude.com/docs/zh-TW/managed-settings.md#let-an-embedding-host-add-policy)。

462 462 

463在管理員部署受管設定的機器上,Claude Code 會忽略父設定,除非管理員[允許嵌入主機新增原則](https://code.claude.com/docs/zh-TW/managed-settings.md#let-an-embedding-host-add-policy)。463如果您在 `managedSettings` 中傳遞 [`disableAllHooks: true`](https://code.claude.com/docs/zh-TW/settings-reference#disableallhooks):

464 

465* **停止**:使用者、專案和本機 hook,以及在 agent frontmatter 或 SDK 的 [`settings` 選項](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options)中宣告的 hook。

466* **繼續執行**:您的應用程式的 [SDK hook 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md),以及管理員來自受管設定的 hook。您的應用程式無法將管理員的 hook 關閉。

464 467 

465| 您傳遞的內容 | 結果 |468| 您傳遞的內容 | 結果 |

466| :- | :- |469| :- | :- |

467| `disableAllHooks: true` | 視為 `allowManagedHooksOnly: true`,因此列為[在 `allowManagedHooksOnly` 下被阻擋](https://code.claude.com/docs/zh-TW/settings-reference#what-runs-under-allowmanagedhooksonly)的 hook 會停止,SDK [`settings` 選項](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options)中的 hook 也會停止。 |470| `hooks`,或含有項目的 `allowedHttpHookUrls` 或 `httpHookAllowedEnvVars` | Claude Code 會忽略該設定鍵。請改用 SDK `settings` 選項。 |

468| [`disableSkillShellExecution: true`](https://code.claude.com/docs/zh-TW/settings-reference#disableskillshellexecution) | 生效。 |

469| `allowedHttpHookUrls: []` | 除非管理員定義了 `hooks` 或啟用了外掛,否則生效。不會執行任何 HTTP hook,但其他設定來源列出的 URL 除外。 |471| `allowedHttpHookUrls: []` | 除非管理員定義了 `hooks` 或啟用了外掛,否則生效。不會執行任何 HTTP hook,但其他設定來源列出的 URL 除外。 |

470| `httpHookAllowedEnvVars: []` | 除非管理員定義了 `hooks` 或啟用了外掛,否則生效。HTTP hook 標頭只能包含其他設定來源列出的環境變數。 |472| `httpHookAllowedEnvVars: []` | 除非管理員定義了 `hooks` 或啟用了外掛,否則生效。HTTP hook 標頭只能包含其他設定來源列出的環境變數。 |

471| 含有項目的 `allowedHttpHookUrls` 或 `httpHookAllowedEnvVars` | Claude Code 會忽略它,因為合併會擴大管理員的清單。請改用 SDK `settings` 選項。 |473| [`disableSkillShellExecution: true`](https://code.claude.com/docs/zh-TW/settings-reference#disableskillshellexecution) | 生效。 |

472 474 

473在 `managedSettings` 中傳遞這些設定鍵需要 Claude Code v2.1.309 或更新版本,或 TypeScript Agent SDK v0.3.309 或更新版本。475在 `managedSettings` 中傳遞這些設定鍵需要 Claude Code v2.1.309 或更新版本,或 TypeScript Agent SDK v0.3.309 或更新版本。

474 476 

Details

8 8 

9> [!NOTE]9> [!NOTE]

10>10>

11> 雲端工作階段適用於 Pro、Max 和 Team 方案,以及具有高級席位或 Chat + Claude Code 席位的 Enterprise 使用者。如果您的 Enterprise 組織使用[自訂角色](https://support.claude.com/en/articles/13930452)管理您的存取權,您還需要一個包含雲端工作階段權限的角色。請 Owner 檢查您的角色,如果缺少該權限,請在 [**Organization settings > Roles**](https://claude.ai/admin-settings/roles) 中新增。11> 雲端工作階段適用於 Pro、Max 和 Team 方案,以及具有高級席位或 Chat + Claude Code 席位的 Enterprise 使用者。如果您的存取權由[自訂角色](https://support.claude.com/en/articles/13930452)管理,您還需要一個包含雲端工作階段權限的角色,才能從瀏覽器、應用程式或終端機在 Anthropic 的基礎設施上啟動工作階段。請 Owner 在 [**Organization settings > Roles**](https://claude.ai/admin-settings/roles) 中將該權限新增至您的其中一個角色。

12 12 

13雲端工作階段是在雲端基礎設施上執行的 Claude Code 工作階段,而不是在您的機器上執行。預設情況下,它在 Anthropic 管理的基礎設施上執行,或在您的組織的[自託管環境](https://code.claude.com/docs/zh-TW/self-hosted-environments)上執行(如果路由到那裡)。工作階段在您關閉筆記型電腦後仍會繼續執行,您可以從任何裝置檢查或控制它。它會與您其餘的 Claude 和 Claude Code 使用量一起計入您方案的用量上限,雲端 VM 不另外收費。13雲端工作階段是在雲端基礎設施上執行的 Claude Code 工作階段,而不是在您的機器上執行。預設情況下,它在 Anthropic 管理的基礎設施上執行,或在您的組織的[自託管環境](https://code.claude.com/docs/zh-TW/self-hosted-environments)上執行(如果路由到那裡)。工作階段在您關閉筆記型電腦後仍會繼續執行,您可以從任何裝置檢查或控制它。它會與您其餘的 Claude 和 Claude Code 使用量一起計入您方案的用量上限,雲端 VM 不另外收費。

14 14 

Details

109 109 

110#### 新增機密110#### 新增機密

111 111 

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

113 113 

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

115 115 


119 119 

120**2. 新增機密**120**2. 新增機密**

121 121 

122選擇**新增機密**並填寫表單。保留預設的**機密類型** **Bearer**,用於在請求標頭中傳輸的 API 金鑰,並填寫這些欄位:122選擇**新增機密**(在管理設定中標示為**新增**)並填寫表單。保留預設的**機密類型** **Bearer**,用於在請求標頭中傳輸的 API 金鑰,並填寫這些欄位:

123 123 

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

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


443 443 

444### 指令碼需求444### 指令碼需求

445 445 

446設定指令碼有三個限制條件需要考慮:446設定指令碼有四個限制條件需要考慮:

447 447 

448* **Exit zero**:如果指令碼以非零狀態結束,工作階段將無法啟動。在非關鍵命令後附加 `|| true`,以便間歇性安裝失敗不會阻止工作階段。448* **Exit zero**:如果指令碼以非零狀態結束,工作階段將無法啟動。在非關鍵命令後附加 `|| true`,以便間歇性安裝失敗不會阻止工作階段。

449* **在五分鐘內完成**:將指令碼的總執行時間保持在大約五分鐘以內,以便[環境快取](#environment-caching)可以建立。當設定耗時超過五分鐘時,環境不會被快取。使用 `&` 和 `wait` 並行執行獨立安裝,並將任何無法納入的單一下載移至[SessionStart hook](#setup-scripts-vs-sessionstart-hooks),在背景中啟動它。如果新工作階段在設定期間停滯或失敗,請參閱[新工作階段在設定期間掛起或逾時](https://code.claude.com/docs/zh-TW/web-quickstart.md#new-sessions-hang-or-time-out-during-setup)。449* **在五分鐘內完成**:將指令碼的總執行時間保持在大約五分鐘以內,以便[環境快取](#environment-caching)可以建立。當設定耗時超過五分鐘時,環境不會被快取。使用 `&` 和 `wait` 並行執行獨立安裝,並將任何無法納入的單一下載移至[SessionStart hook](#setup-scripts-vs-sessionstart-hooks),在背景中啟動它。如果新工作階段在設定期間停滯或失敗,請參閱[新工作階段在設定期間掛起或逾時](https://code.claude.com/docs/zh-TW/web-quickstart.md#new-sessions-hang-or-time-out-during-setup)。

450* **安裝的網路存取**:套件安裝需要連接到登錄檔。預設的 **Trusted** 層級涵蓋[常見套件登錄檔](#default-allowed-domains),包括 npm、PyPI、RubyGems 和 crates.io;使用 **None** 網路存取時,安裝會失敗。450* **安裝的網路存取**:套件安裝需要連接到登錄檔。預設的 **Trusted** 層級涵蓋[常見套件登錄檔](#default-allowed-domains),包括 npm、PyPI、RubyGems 和 crates.io;使用 **None** 網路存取時,安裝會失敗。

451* **環境的變數尚未設定**:指令碼會在工作階段設定環境的[環境變數](#set-environment-variables)之前執行。請在指令碼本身中設定指令碼所需的任何值。

451 452 

452### 環境快取453### 環境快取

453 454 

Details

123 123 

124當審查未套用被納入的檔案時,請逐一檢查下列項目:124當審查未套用被納入的檔案時,請逐一檢查下列項目:

125 125 

126* **位置**:將檔案移至儲存庫根目錄。指向子目錄的路徑,例如 `@docs/review-rules.md`,不會被納入。126* **位置**:將檔案移至儲存庫根目錄。除了 [skill 檔案](#include-a-skill-file)之外,指向子目錄的路徑,例如 `@docs/review-rules.md`,不會被納入。

127* **名稱**:檔案名稱必須完全相符(包括大小寫),並使用不含空格的名稱。如果某一行的名稱與 `REVIEW.md` 旁的任何檔案都不相符,該行會以純文字形式保留在 `REVIEW.md` 中,而檢查執行不會將其回報為已略過的納入。127* **名稱**:檔案名稱必須完全相符(包括大小寫),並使用不含空格的名稱。如果某一行的名稱與 `REVIEW.md` 旁的任何檔案都不相符,該行會以純文字形式保留在 `REVIEW.md` 中,而檢查執行不會將其回報為已略過的納入。

128* **僅限一層**:請在根目錄的 `REVIEW.md` 中列出每個檔案。被納入的檔案或子目錄 `REVIEW.md` 中的 `@` 行會保留為純文字,而指向其他檔案的 Markdown 連結也不算是納入。128* **僅限一層**:請在根目錄的 `REVIEW.md` 中列出每個檔案。被納入的檔案或子目錄 `REVIEW.md` 中的 `@` 行會保留為純文字([skill 檔案則不同](#include-a-skill-file)),而指向其他檔案的 Markdown 連結也不算是納入。

129* **限制**:最多納入八個不同的檔案,並讓 `REVIEW.md` 及其納入的檔案合計小於 150,000 位元組。會使總量達到位元組上限的檔案會被整個略過,而不是被截斷。檢查執行會回報因任一限制而略過了多少個納入行。129* **限制**:最多納入八個不同的檔案,並讓 `REVIEW.md` 及其納入的檔案合計小於 150,000 位元組。會使總量達到位元組上限的檔案會被整個略過,而不是被截斷。檢查執行會回報因任一限制而略過了多少個納入行。

130* **連結**:`REVIEW.md` 及其納入的檔案中,Markdown 連結總數請保持在 64 個以內。指向 `http`、`https` 或 `mailto` 位址以及 `#` 錨點的連結不計入。超過此限制時,審查會略過您整個根目錄 `REVIEW.md`,而不只是被納入的檔案。檢查執行接著會[說明指令未被套用](https://code.claude.com/docs/zh-TW/code-review-troubleshooting.md#the-check-run-mentions-review-md)。130* **連結**:`REVIEW.md` 及其納入的檔案中,Markdown 連結總數請保持在 64 個以內。指向 `http`、`https` 或 `mailto` 位址以及 `#` 錨點的連結不計入,[skill 檔案](#include-a-skill-file)中的連結也不計入。超過此限制時,審查會略過您整個根目錄 `REVIEW.md`,而不只是被納入的檔案。檢查執行接著會[說明指令未被套用](https://code.claude.com/docs/zh-TW/code-review-troubleshooting.md#the-check-run-mentions-review-md)。

131* **已合併的副本**:將被納入的檔案合併到[讀取 `REVIEW.md` 的分支](#which-branch-review-md-is-read-from)。審查會從同一個提交讀取兩者,絕不會從 pull request 本身的變更中讀取。131* **已合併的副本**:將被納入的檔案合併到[讀取 `REVIEW.md` 的分支](#which-branch-review-md-is-read-from)。審查會從同一個提交讀取兩者,絕不會從 pull request 本身的變更中讀取。

132 132 

133### 納入 skill 檔案

134 

135若要讓審查遵循您保存在 [skill](https://code.claude.com/docs/zh-TW/skills.md) 中的指引,請在根目錄的 `REVIEW.md` 中納入該 skill 的 `SKILL.md`。Code Review 不會執行 skill。

136 

137請在獨立的一行中加入 `@` 以及 `SKILL.md` 的路徑,格式為 `.claude/skills/<folder>/SKILL.md`:

138 

139```markdown theme={null}

140# Review instructions

141 

142Report at most five Nits per review.

143 

144@.claude/skills/api-review/SKILL.md

145 

146Treat any change under `migrations/` as Important.

147```

148 

149請保護[讀取 `REVIEW.md` 的分支](#which-branch-review-md-is-read-from),因為 Code Review 只有在從受保護分支讀取 `REVIEW.md` 時才會納入 skill 檔案。skill 檔案會計入八個檔案與 150,000 位元組的限制,並另有 30,000 位元組的專屬限制。

150 

151#### 撰寫 Code Review 會納入的 skill 行

152 

153請使用不含空格的資料夾名稱。路徑中含有空格的行會以純文字形式保留在 `REVIEW.md` 中,而檢查執行不會將其回報為已略過的納入。

154 

155如果 skill 的 `@` 行違反下列任一規則,Code Review 就不會從該行納入此 skill:

156 

157* **路徑**:以儲存庫根目錄為起點,將路徑寫成 `.claude/skills/<folder>/SKILL.md`,且 skill 的資料夾須直接位於 `skills/` 之下。與根目錄中的檔案名稱不同,此格式的路徑若不符合任何檔案,會被略過並計入。

158* **來源**:將 `.claude/` 下任何其他檔案,或[內建、個人或外掛 skill](https://code.claude.com/docs/zh-TW/skills.md#where-skills-live) 中的指引,複製到 `REVIEW.md` 旁的檔案中。您無法直接納入這些內容。

159* **檔案**:將 `SKILL.md` 以一般文字檔的形式提交。Code Review 不會追蹤符號連結,無論該連結是檔案本身還是其路徑中的資料夾。

160* **大小**:讓 `SKILL.md` 保持在 30,000 位元組以內(包含 frontmatter)

161* **數量**:最多撰寫八個 skill 行。重複的行會再次計入這八個之中。

162* **`REVIEW.md` 中的區塊**:不要將 `@` 行放在程式碼圍欄內。請關閉其上方的每個 HTML 註解,以及每個 `<pre>`、`<script>`、`<style>` 或 `<textarea>` 區塊。

163 

164當 Code Review 因違反「檔案」、「大小」、「數量」或「區塊」規則而略過 skill 行時,檢查執行的[略過納入行相關訊息](https://code.claude.com/docs/zh-TW/code-review-troubleshooting.md#the-check-run-mentions-review-md)會將其計入。此訊息只會在審查套用來自受保護分支的 `REVIEW.md` 時出現。

165 

166#### 檢查審查從 skill 取得的內容

167 

168納入 skill 時,審查只會取得 `SKILL.md` 的本文,而不會取得 skill 中的其他任何內容,因此請依下列清單檢查 skill。

169 

170* **Frontmatter**:將審查所需的任何 [frontmatter](https://code.claude.com/docs/zh-TW/skills.md#frontmatter-reference) 內容在本文中重述,例如 `description` 中提供的 skill 使用條件

171* **注入的命令**:將 [`!` 命令](https://code.claude.com/docs/zh-TW/skills#inject-dynamic-context)會提供的內容明確寫出。Code Review 不會執行該命令,並會以預留位置取代包含該命令的整行或整個區塊。

172* **替換**:將 `$ARGUMENTS` 及其他[替換](https://code.claude.com/docs/zh-TW/skills.md#available-string-substitutions)改為固定文字,因為審查不會傳遞任何引數,並會讓它們維持原樣

173* **輔助檔案**:將審查所需的內容複製到 `SKILL.md` 中,因為 Code Review 不會載入腳本、連結的檔案或 `@file` 參照

174* **排除與 Nit 上限**:將排除發現或限制 Nit 數量的指令寫在 `REVIEW.md` 或其旁邊的檔案中,而不是寫在 skill 中。Code Review 不會接受 skill 的文字作為兩者任一的依據。

175* **指向儲存庫檔案的連結**:以文字說明連結或 `@file` 參照所指向的內容。審查看到的路徑會是純文字或預留位置。

176 

177如果您編輯 skill 的 `!` 命令、`$ARGUMENTS` 或連結,也會改變它在 Claude Code 中的運作方式。如果您的團隊依賴這些功能,請將指引複製到 `REVIEW.md` 旁的檔案中,並改為納入該檔案,而非 skill。

178 

179#### Code Review 在 skill 文字中變更的字元

180 

181Code Review 會變更 skill 文字中的部分字元,因此您的程式碼範例會以下列形式送達審查。

182 

183```text theme={null}

184In SKILL.md: Use `items[0]`, never `List<String>`.

185The review reads: Use ˋitems(0)ˋ, never ˋList< String>ˋ.

186 

187In SKILL.md: Run `ps | grep api` and ask @alice.

188The review reads: Run ˋps ¦ grep apiˋ and ask @ alice.

189```

190 

191若某條規則依賴這些字元之一,也請以文字加以說明。

192 

133### 從哪個分支讀取 REVIEW\.md193### 從哪個分支讀取 REVIEW\.md

134 194 

135Code Review 會從 pull request 的基礎分支或預設分支讀取 `REVIEW.md`,絕不會從 pull request 本身的變更中讀取。若要變更審查行為,請先合併 `REVIEW.md` 的變更。195Code Review 會從 pull request 的基礎分支或預設分支讀取 `REVIEW.md`,絕不會從 pull request 本身的變更中讀取。若要變更審查行為,請先合併 `REVIEW.md` 的變更。


140* 排除路徑、檔案或問題類別200* 排除路徑、檔案或問題類別

141* 限制 nit 留言數量201* 限制 nit 留言數量

142 202 

203請將排除與 Nit 上限寫在 `REVIEW.md` 或其旁邊的檔案中,而不是寫在[被納入的 skill](#include-a-skill-file) 中。

204 

143#### 哪些設定算是分支保護205#### 哪些設定算是分支保護

144 206 

145Code Review 將下列設定視為保護:207Code Review 將下列設定視為保護:

Details

67 67 

68## Check run 提及 REVIEW\.md68## Check run 提及 REVIEW\.md

69 69 

70以下是 check run 中可能出現的三則 `REVIEW.md` 相關訊息:70以下是 check run 中可能出現的四則 `REVIEW.md` 相關訊息:

71 71 

72* **「This review applied the repository's review instructions (REVIEW\.md) from its default branch, which is not protected against direct pushes.」**:此審查僅讀取了根目錄的檔案。關於保護分支會帶來哪些改變,請參閱[從哪個分支讀取 REVIEW.md](https://code.claude.com/docs/zh-TW/code-review-customize.md#which-branch-review-md-is-read-from)。72* **「This review applied the repository's review instructions (REVIEW\.md) from its default branch, which is not protected against direct pushes.」**:此審查僅讀取了根目錄的檔案。關於保護分支會帶來哪些改變,請參閱[從哪個分支讀取 REVIEW.md](https://code.claude.com/docs/zh-TW/code-review-customize.md#which-branch-review-md-is-read-from)。

73* **「were not applied to this review: branch protection could not be confirmed」**:此審查未讀取任何 `REVIEW.md`。73* **「were not applied to this review: branch protection could not be confirmed」**:此審查未讀取任何 `REVIEW.md`。


75 * **連結過多**:檔案中含有超過 64 個 Markdown 連結。請將連結減少至 [64 個或更少](https://code.claude.com/docs/zh-TW/code-review-customize.md#include-other-files-in-review-md)。75 * **連結過多**:檔案中含有超過 64 個 Markdown 連結。請將連結減少至 [64 個或更少](https://code.claude.com/docs/zh-TW/code-review-customize.md#include-other-files-in-review-md)。

76 * **審查無法解析的連結**:檔案中有格式錯誤的 Markdown 連結。請修正或移除該連結。76 * **審查無法解析的連結**:檔案中有格式錯誤的 Markdown 連結。請修正或移除該連結。

77 * **指向已變更檔案的連結**:檔案連結至此 pull request 所變更的檔案或資料夾,且審查無法僅排除含有該連結的那幾行。請直接在 `REVIEW.md` 中撰寫該規則。77 * **指向已變更檔案的連結**:檔案連結至此 pull request 所變更的檔案或資料夾,且審查無法僅排除含有該連結的那幾行。請直接在 `REVIEW.md` 中撰寫該規則。

78* **「include line(s) in the root REVIEW\.md were skipped on this review」**:您的根目錄 `REVIEW.md` 已套用,但這些行所指定的檔案並未套用。請查看[在 REVIEW.md 中引入其他檔案](https://code.claude.com/docs/zh-TW/code-review-customize.md#include-other-files-in-review-md)下的清單,若為 skill,另請查看[引入 skill 檔案](https://code.claude.com/docs/zh-TW/code-review-customize.md#include-a-skill-file)下的清單。

78 79 

79## 設定問題80## 設定問題

80 81 

desktop.md +5 −5

Details

844| [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars#variables) 或 [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/zh-TW/env-vars#variables) | 在[您為開發伺服器設定變數的其中一個位置](#set-environment-variables-for-dev-servers)設定,然後結束並重新開啟 Desktop |844| [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars#variables) 或 [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/zh-TW/env-vars#variables) | 在[您為開發伺服器設定變數的其中一個位置](#set-environment-variables-for-dev-servers)設定,然後結束並重新開啟 Desktop |

845| `API_TIMEOUT_MS`、`ANTHROPIC_BASE_URL` 或 Desktop 自行設定的其他變數 | 請參閱[Desktop 自行設定的環境變數](#environment-variables-desktop-sets-itself) |845| `API_TIMEOUT_MS`、`ANTHROPIC_BASE_URL` 或 Desktop 自行設定的其他變數 | 請參閱[Desktop 自行設定的環境變數](#environment-variables-desktop-sets-itself) |

846 846 

847在 macOS 或 Linux 上,如果您已在 `~/.zshrc` 或 `~/.bashrc` 中使用 `export` 設定變數,請參閱[Claude 執行的命令中缺少匯出的變數或其值錯誤](#exported-variable-missing-or-wrong-in-commands-claude-runs)。847在 macOS 或 Linux 上,如果您以 `export` 設定的變數在 Claude 執行的命令中遺失或不正確,請參閱[Claude 執行的命令中匯出的變數遺失或不正確](#exported-variable-missing-or-wrong-in-commands-claude-runs)。

848 848 

849#### 為本機工作階段設定環境變數849#### 為本機工作階段設定環境變數

850 850 


894 894 

895如果 Claude 在 macOS 或 Linux 上執行的命令沒有取得您在 `~/.zshrc` 或 `~/.bashrc` 中以 `export` 設定的變數,或取得錯誤的值,請依序嘗試下列步驟:895如果 Claude 在 macOS 或 Linux 上執行的命令沒有取得您在 `~/.zshrc` 或 `~/.bashrc` 中以 `export` 設定的變數,或取得錯誤的值,請依序嘗試下列步驟:

896 896 

897**1. 開始新的工作階段**897**1. 啟動新的工作階段**

898 898 

899請 Claude 再次執行該命令。899請 Claude 再次執行該命令。

900 900 

901**2. 結束並重新開啟 Desktop**901**2. 結束並重新開啟 Desktop**

902 902 

903然後開始新的工作階段。903然後啟動新的工作階段。

904 904 

905**3. 檢查您已儲存的變數**905**3. 檢查您已儲存的變數**

906 906 

907如果命令取得錯誤的值,請檢查您是否也在[已儲存的環境](#use-edit-or-remove-a-saved-environment)或[本機環境編輯器](#use-the-local-environment-editor)中設定了該變數。如果是,請在該處變更值,然後開始新的工作階段。907如果命令取得了錯誤的值,請檢查您是否也在[已儲存的環境](#use-edit-or-remove-a-saved-environment)或[本機環境編輯器](#use-the-local-environment-editor)中設定了該變數。若是如此,請在該處變更值並啟動新的工作階段。

908 908 

909**4. 使用已儲存的環境**909**4. 使用已儲存的環境**

910 910 

911將變數新增至[已儲存的本機環境](#set-environment-variables-for-local-sessions),然後從該環境開始新的工作階段。對於 `PATH` 或 `CLAUDE_CONFIG_DIR` 等變數,請改為遵循[其專屬的說明](#environment-variables-in-local-sessions)。911將變數新增至[已儲存的本機環境](#set-environment-variables-for-local-sessions),然後從該環境啟動新的工作階段。對於 `PATH`、`CLAUDE_CONFIG_DIR` 或 `API_TIMEOUT_MS` 等變數,請改為遵循[其各自的說明](#environment-variables-in-local-sessions)。

912 912 

913在 v2.1.304 之前,Claude Code 不會將匯出的變數傳遞給命令,因此請[檢查工作階段執行的版本](#claude-code-version-in-the-code-tab)。913在 v2.1.304 之前,Claude Code 不會將匯出的變數傳遞給命令,因此請[檢查工作階段執行的版本](#claude-code-version-in-the-code-tab)。

914 914 

Details

15 15 

16本頁涵蓋本機排程任務;如需雲端排程任務及其觸發選項,請參閱[使用排程任務自動化工作](https://code.claude.com/docs/zh-TW/routines.md)。16本頁涵蓋本機排程任務;如需雲端排程任務及其觸發選項,請參閱[使用排程任務自動化工作](https://code.claude.com/docs/zh-TW/routines.md)。

17 17 

18> [!NOTE]

19>

20> 如果您的應用程式以[先前的名稱](https://code.claude.com/docs/zh-TW/routines.md#where-the-name-routines-still-appears)顯示此功能,請在本頁提到 **Scheduled** 的地方點選 **Routines**,並在提到 **New task** 的地方點選 **New routine**。

21 

18## 比較排程選項22## 比較排程選項

19 23 

20Claude Code 提供三種方式來排程定期或一次性的工作:24Claude Code 提供三種方式來排程定期或一次性的工作:


45 49 

46**1. 開啟 Scheduled tasks 頁面**50**1. 開啟 Scheduled tasks 頁面**

47 51 

48在 [**Code** 標籤](https://code.claude.com/docs/zh-TW/desktop.md)中,按一下側邊欄中或側邊欄 **More** 選單中的 **Scheduled**。52在 [**Code** 標籤](https://code.claude.com/docs/zh-TW/desktop.md)中,按一下側邊欄中或側邊欄 **More** 選單中的 **Scheduled**。如果側邊欄顯示的是 **Routines** 而非 **Scheduled**,請按一下 **Routines**,再按一下 **New routine**,然後繼續參閱[全頁表單](#full-page-form)。

49 53 

50**2. 開始新任務**54**2. 開始新任務**

51 55 

52按一下 **New task**。如果開啟的選單中有 **Create with Claude** 和 **Set up manually**,請選擇 **Set up manually**。**New scheduled task** 對話框隨即開啟。如果 **Only on this computer** 位於對話框頂端,請在輸入任何內容之前,先前往[對話框頂端有 Only on this computer 時](#dialog-with-only-on-this-computer-at-the-top)。56按一下 **New task** 以開啟 **New scheduled task** 對話框。繼續之前,請留意是否出現以下畫面:

57 

58* 如果開啟的選單中有 **Create with Claude** 和 **Set up manually**,請選擇 **Set up manually** 以開啟對話框。

59* 如果 **Only on this computer** 位於對話框頂端,請在輸入任何內容之前,先前往[對話框頂端有 Only on this computer 時](#dialog-with-only-on-this-computer-at-the-top)。

60* 如果開啟的是含有 **Local** 和 **Cloud** 的選單,或開啟的是整個頁面而非對話框,請前往[全頁表單](#full-page-form)。

53 61 

54**3. 為任務命名**62**3. 為任務命名**

55 63 


99 107 

100按一下 **Create**。任務的詳細資料頁面隨即開啟。108按一下 **Create**。任務的詳細資料頁面隨即開啟。

101 109 

110### 全頁表單

111 

112如果開啟的是含有 **Local** 和 **Cloud** 的選單,請選擇 **Local**。標題為 **New local routine** 或 **New local scheduled task** 的頁面隨即開啟。填寫其欄位:

113 

114* **Name**:輸入在您的所有任務中唯一的名稱。

115* **Description**:輸入說明。

116* **Instructions**:輸入 Claude 在任務執行時應執行的操作。在同一個方塊中,選擇權限模式、模型,以及任務執行所在的資料夾。

117* **Schedule**:選擇其中一個[排程選項](#schedule-options)。

118 

119如果 **Create** 無法使用,請將游標停留在其上方,以查看表單還缺少哪些內容。按一下 **Create**,任務的詳細資料頁面隨即開啟。

120 

102## 排程選項121## 排程選項

103 122 

104當您在 **Advanced settings** 下開啟 **Only on this computer** 時,**Trigger** 卡片會提供 Hourly、Daily、Weekdays 和 Weekly。若要為此類任務使用 **Manual** 或 **Custom**,請在建立任務後開啟其 [**Edit** 表單](#manage-scheduled-tasks)。該表單以及[頂部有 **Only on this computer** 的對話框](#dialog-with-only-on-this-computer-at-the-top)提供以下六個選項:123當您在 **Advanced settings** 下開啟 **Only on this computer** 時,**Trigger** 卡片會提供 Hourly、Daily、Weekdays 和 Weekly。若要為此類任務使用 **Manual** 或 **Custom**,請在建立任務後開啟其 [**Edit** 表單](#manage-scheduled-tasks)。該表單、[頂部有 **Only on this computer** 的對話框](#dialog-with-only-on-this-computer-at-the-top)以及[完整頁面表單](#full-page-form)提供以下六個選項:

105 124 

106* **Hourly**:每小時執行一次125* **Hourly**:每小時執行一次

107* **Daily**:每天在您選擇的本機時間執行126* **Daily**:每天在您選擇的本機時間執行

env-vars.md +1 −1

Details

298| `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 中沒有作用,因為其所覆寫的巢狀工作階段偵測在這些版本中已被移除 |298| `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 中沒有作用,因為其所覆寫的巢狀工作階段偵測在這些版本中已被移除 |

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

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

301| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 當您的終端機能以 Unicode 預留位置繪製 kitty graphics protocol 圖片,但您仍看到 `Image` 的暗色 `alt` 文字時,設定為 `1` 可將 [mod `Image` 元素](https://code.claude.com/docs/zh-TW/plugins/mods/reference#elements)繪製為圖片。請參閱[哪些終端機會繪製 `Image`](https://code.claude.com/docs/zh-TW/plugins/mods/gallery#image-and-client),以及為何此變數在 tmux 或 screen 中無效 |301| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 當您的終端機以 Unicode 預留位置繪製 kitty 圖形協定影像,而您仍看到 `Image` 的暗色 `alt` 文字時,設定為 `1` 以將 [mod `Image` 元素](https://code.claude.com/docs/zh-TW/plugins/mods/reference#elements)繪製為圖片。請參閱[哪些終端機會繪製 `Image`,以及不應在何處設定此變數](https://code.claude.com/docs/zh-TW/plugins/mods/gallery#image-and-client) |

302| `CLAUDE_CODE_FORK_SUBAGENT` | 控制 fork 模式,此模式預設為開啟,可讓 Claude 自行啟動 [fork](https://code.claude.com/docs/zh-TW/sub-agents.md#fork-the-current-conversation)。在 fork 模式開啟時,Claude 也無法在您機器上的互動式終端機、VS Code 或桌面工作階段中[等待 subagent](https://code.claude.com/docs/zh-TW/sub-agents.md#run-subagents-in-foreground-or-background)。設定為 `0` 以關閉 fork 模式。關於版本,請參閱[關閉 fork 模式](https://code.claude.com/docs/zh-TW/sub-agents.md#turn-fork-mode-on-or-off) |302| `CLAUDE_CODE_FORK_SUBAGENT` | 控制 fork 模式,此模式預設為開啟,可讓 Claude 自行啟動 [fork](https://code.claude.com/docs/zh-TW/sub-agents.md#fork-the-current-conversation)。在 fork 模式開啟時,Claude 也無法在您機器上的互動式終端機、VS Code 或桌面工作階段中[等待 subagent](https://code.claude.com/docs/zh-TW/sub-agents.md#run-subagents-in-foreground-or-background)。設定為 `0` 以關閉 fork 模式。關於版本,請參閱[關閉 fork 模式](https://code.claude.com/docs/zh-TW/sub-agents.md#turn-fork-mode-on-or-off) |

303| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 設為 `1` 可在 `claude -p --output-format stream-json` 輸出中發出 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 文字與思考區塊,行為與 [`--forward-subagent-text`](https://code.claude.com/docs/zh-TW/cli-reference#cli-flags) 旗標相同。當叫用 `claude` 的 harness 無法自行傳遞旗標時使用此變數。該旗標在非互動模式搭配 stream-json 輸出以外的情況下會以錯誤結束,但此變數在這些情況下會被忽略,因此在整個程序範圍設定時,巢狀叫用仍可正常運作。需要 Claude Code v2.1.211 或更新版本 |303| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 設為 `1` 可在 `claude -p --output-format stream-json` 輸出中發出 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 文字與思考區塊,行為與 [`--forward-subagent-text`](https://code.claude.com/docs/zh-TW/cli-reference#cli-flags) 旗標相同。當叫用 `claude` 的 harness 無法自行傳遞旗標時使用此變數。該旗標在非互動模式搭配 stream-json 輸出以外的情況下會以錯誤結束,但此變數在這些情況下會被忽略,因此在整個程序範圍設定時,巢狀叫用仍可正常運作。需要 Claude Code v2.1.211 或更新版本 |

304| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 設為 `1` 可在自訂代理伺服器或第三方供應商(例如 Amazon Bedrock 或 Claude Platform on AWS)上傳送[閘道提示標頭](https://code.claude.com/docs/zh-TW/llm-gateway-protocol.md#gateway-hint-headers),例如 `x-claude-code-request-class` 與 `x-claude-code-compaction`。設為 `0` 可停止在每個連線上傳送這些標頭,包括直接連線至 Anthropic API 的情況,Claude Code 在該情況下預設會傳送它們。需要 Claude Code v2.1.273 或更新版本 |304| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 設為 `1` 可在自訂代理伺服器或第三方供應商(例如 Amazon Bedrock 或 Claude Platform on AWS)上傳送[閘道提示標頭](https://code.claude.com/docs/zh-TW/llm-gateway-protocol.md#gateway-hint-headers),例如 `x-claude-code-request-class` 與 `x-claude-code-compaction`。設為 `0` 可停止在每個連線上傳送這些標頭,包括直接連線至 Anthropic API 的情況,Claude Code 在該情況下預設會傳送它們。需要 Claude Code v2.1.273 或更新版本 |

errors.md +67 −10

Details

247| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [命令列錯誤](#mcp-permission-prompt-tool-not-found) |247| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [命令列錯誤](#mcp-permission-prompt-tool-not-found) |

248| `OAuth callback port <port> is already in use — another process may be holding it` | [命令列錯誤](#oauth-callback-port-is-already-in-use) |248| `OAuth callback port <port> is already in use — another process may be holding it` | [命令列錯誤](#oauth-callback-port-is-already-in-use) |

249| `No available ports for OAuth redirect` | [命令列錯誤](#no-available-ports-for-oauth-redirect) |249| `No available ports for OAuth redirect` | [命令列錯誤](#no-available-ports-for-oauth-redirect) |

250| 來自 `/security-review` 或任何注入動態上下文之 skill 的 `Shell command failed for pattern "..."` | [命令列錯誤](#security-review-fails-without-origin-head) |250| `Shell command failed for pattern "..."`,來自 `/security-review` 或任何注入動態上下文的 skill | [命令列錯誤](#security-review-fails-without-origin-head) |

251| 來自注入動態上下文之 skill 的 `Shell command permission check failed for pattern "..."` | [命令列錯誤](#security-review-fails-without-origin-head) |251| 來自注入動態上下文之 skill 的 `Shell command permission check failed for pattern "..."` | [命令列錯誤](#security-review-fails-without-origin-head) |

252| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [命令列錯誤](#security-review-fails-without-origin-head) |252| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [命令列錯誤](#security-review-fails-without-origin-head) |

253| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [命令列錯誤](#no-shell-command-was-run) |253| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [命令列錯誤](#no-shell-command-was-run) |


317| `Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)` | [外掛錯誤](#skipping-connection-recent-failure-cached) |317| `Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)` | [外掛錯誤](#skipping-connection-recent-failure-cached) |

318| `Error: No such tool available: <tool name>` | [工具錯誤](#no-such-tool-available) |318| `Error: No such tool available: <tool name>` | [工具錯誤](#no-such-tool-available) |

319| `MCP server "<name>" connection closed before the tool call was answered` | [工具錯誤](#connection-closed-before-the-tool-call-was-answered) |319| `MCP server "<name>" connection closed before the tool call was answered` | [工具錯誤](#connection-closed-before-the-tool-call-was-answered) |

320| `MCP server "<name>" is disabled — re-enable it via /mcp to use its tools` | [工具錯誤](#mcp-server-is-disabled) |

321| `MCP server "<name>" tool "<tool>" timed out after <N>s. The server asked the user a question, and no answer came before the time limit.` | [工具錯誤](#mcp-tool-call-timed-out-with-the-servers-question-unanswered) |

320| `would be spawned with zero tools — refusing` | [工具錯誤](#agent-would-be-spawned-with-zero-tools) |322| `would be spawned with zero tools — refusing` | [工具錯誤](#agent-would-be-spawned-with-zero-tools) |

321| `File is covered by a Read deny rule in your permission settings` | [工具錯誤](#file-is-covered-by-a-read-deny-rule) |323| `File is covered by a Read deny rule in your permission settings` | [工具錯誤](#file-is-covered-by-a-read-deny-rule) |

322| `cannot contain null bytes (\0)` | [工具錯誤](#path-cannot-contain-null-bytes) |324| `cannot contain null bytes (\0)` | [工具錯誤](#path-cannot-contain-null-bytes) |


348| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` / `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) |350| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` / `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) |

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

350| `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) |352| `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) |

353| `git is not installed on this Mac. To install it, run xcode-select --install, then try again.` | [工具錯誤](#git-is-not-installed-on-this-mac) |

351| `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) |354| `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) |

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

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


487 490 

488當 Claude 正在諮詢 [advisor](https://code.claude.com/docs/zh-TW/advisor.md) 時,橫幅在 90 秒無資料後出現,而不是 20 秒,因為長時間的 advisor 審查可能遠超過 20 秒都未發送任何內容。在 v2.1.214 之前,20 秒的閾值也適用於 advisor 呼叫,所以即使沒有任何問題,橫幅也會在 advisor 審查期間出現。491當 Claude 正在諮詢 [advisor](https://code.claude.com/docs/zh-TW/advisor.md) 時,橫幅在 90 秒無資料後出現,而不是 20 秒,因為長時間的 advisor 審查可能遠超過 20 秒都未發送任何內容。在 v2.1.214 之前,20 秒的閾值也適用於 advisor 呼叫,所以即使沒有任何問題,橫幅也會在 advisor 審查期間出現。

489 492 

493#### 透過閘道連線時,等待橫幅時隱時現

494 

495如果在 Claude 思考時 `Waiting for API response` 橫幅時隱時現,且您透過閘道連線,請將 [Claude Code 更新](https://code.claude.com/docs/zh-TW/setup.md#update-claude-code)至 v2.1.309 或更新版本。在這些連線上,橫幅會在 45 秒無資料後出現:

496 

497* [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-TW/env-vars) 設定為 Anthropic API 以外的主機,例如 [LLM 閘道](https://code.claude.com/docs/zh-TW/llm-gateway)

498* [Claude apps gateway](https://code.claude.com/docs/zh-TW/claude-apps-gateway) 工作階段

499* 已設定 `ANTHROPIC_AWS_BASE_URL` 的 [Claude Platform on AWS](https://code.claude.com/docs/zh-TW/claude-platform-on-aws.md)

500 

501在 v2.1.309 之前,這些連線上的橫幅會在 20 秒後出現。

502 

490### 調整重試行為503### 調整重試行為

491 504 

492您可以使用這些環境變數調整重試行為:505您可以使用這些環境變數調整重試行為:


3256 3269 

3257**處理方式:**3270**處理方式:**

3258 3271 

3259* 在指令碼或 CI 作業中,附加 `--trust-workspace` 以僅在該次執行中信任該 checkout:`claude ultrareview --trust-workspace`。請只對您信任的程式碼附加它,因為該 checkout 的 git 設定和 Claude Code 專案設定屆時可以執行程式。若要審查您不信任其程式碼的 pull request,請參閱[如何從您信任的 checkout 審查它](https://code.claude.com/docs/zh-TW/ultrareview.md#trust-the-folder-before-the-review-runs)。3272* 在指令碼或 CI 工作中,附加 `--trust-workspace` 以僅在該次執行中信任該資料夾:`claude ultrareview --trust-workspace`。請僅對您信任的程式碼附加此旗標,因為 git 與 Claude Code 之後可能會執行該資料夾的 git 設定與專案設定中所指定的程式。對於您不信任其程式碼的 pull request,請[從您信任的分支執行審查](https://code.claude.com/docs/zh-TW/ultrareview.md#trust-the-folder-before-the-review-runs)。

3260* 在您自己的電腦上,於該資料夾中執行 `claude` 並接受[工作區信任對話框](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust),然後再次執行原本的命令3273* 在您自己的電腦上,於該資料夾中執行 `claude` 並接受[工作區信任對話框](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust),然後再次執行原本的命令

3261 3274 

3262`claude ultrareview` 的下列每則訊息都表示沒有啟動任何審查,且退出碼為 1:3275`claude ultrareview` 的下列每則訊息都表示沒有啟動任何審查,且退出碼為 1:


3265* **`Error: Workspace not trusted. <folder> is your home directory`**:由於對家目錄的信任永遠不會被儲存,先在那裡執行 `claude` 並沒有幫助。請改從專案目錄執行 `claude ultrareview`(事先在那裡執行一次 `claude` 以接受信任對話框),或附加 `--trust-workspace`。3278* **`Error: Workspace not trusted. <folder> is your home directory`**:由於對家目錄的信任永遠不會被儲存,先在那裡執行 `claude` 並沒有幫助。請改從專案目錄執行 `claude ultrareview`(事先在那裡執行一次 `claude` 以接受信任對話框),或附加 `--trust-workspace`。

3266* **`No answer in time.` 後接 `Error: Workspace not trusted`**:`Trust <folder>? [y/N]` 問題在 5 分鐘內未獲回答。請再次執行 `claude ultrareview` 並回答它。3279* **`No answer in time.` 後接 `Error: Workspace not trusted`**:`Trust <folder>? [y/N]` 問題在 5 分鐘內未獲回答。請再次執行 `claude ultrareview` 並回答它。

3267* **`Ultrareview did not start: <folder> is not trusted`**:您在 `Trust <folder>? [y/N]` 問題中拒絕了,例如回答 `n` 或按下 Enter。若要啟動審查,請再次執行 `claude ultrareview` 並回答 `y`。3280* **`Ultrareview did not start: <folder> is not trusted`**:您在 `Trust <folder>? [y/N]` 問題中拒絕了,例如回答 `n` 或按下 Enter。若要啟動審查,請再次執行 `claude ultrareview` 並回答 `y`。

3268* **``Ultrareview did not start: `--trust-workspace` takes no value``**:`--trust-workspace` 後面接了旗標以外的內容,例如 PR 編號或 `false`。如果您不信任該資料夾,請省略此旗標。若要在此次執行中信任它,請將 PR 編號或基礎分支放在旗標之前:`claude ultrareview 1234 --trust-workspace`。3281* **``Ultrareview did not start: `--trust-workspace` takes no value``**:`--trust-workspace` 之後接了非旗標的內容,例如 PR 編號或 `false`。如果您不信任該資料夾,請省略此旗標。若要在此次執行中信任該資料夾,請將 PR 編號或基礎分支放在旗標之前:`claude ultrareview 1234 --trust-workspace`。

3269 3282 

3270在 v2.1.309 之前,`claude ultrareview` 不接受 `--trust-workspace`。3283在 v2.1.309 之前,`claude ultrareview` 不接受 `--trust-workspace`。

3271 3284 


3526 3539 

3527以下同類字串會在命令執行之前就觸發:3540以下同類字串會在命令執行之前就觸發:

3528 3541 

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

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

3531* `No shell command in <name> was run`:檔案中的某個 `!` 命令包含除定位字元或換行字元以外的原始控制字元,因此所有命令都不會執行。請參閱[如何找出並移除該字元](#no-shell-command-was-run)3544* `No shell command in <name> was run`:檔案中某個 `!` 命令包含定位字元或換行字元以外的原始控制字元,因此所有命令都不會執行。請參閱[如何找出並移除該字元](#no-shell-command-was-run)

3532 3545 

3533**處理方式:**3546**處理方式:**

3534 3547 


3678 3691 

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

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

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

3682 3695 

3683**處理方式:**3696**處理方式:**

3684 3697 


4419* 如果動作未發生,請要求 Claude 再次執行該工具。您不需要先重新連線伺服器,因為 Claude Code 會在下一次呼叫該伺服器的任一工具時再次連線。如果該連線也失敗,請參閱 [遠端伺服器在工作階段中途斷線](https://code.claude.com/docs/zh-TW/mcp.md#mid-session-drops-of-a-remote-server)。4432* 如果動作未發生,請要求 Claude 再次執行該工具。您不需要先重新連線伺服器,因為 Claude Code 會在下一次呼叫該伺服器的任一工具時再次連線。如果該連線也失敗,請參閱 [遠端伺服器在工作階段中途斷線](https://code.claude.com/docs/zh-TW/mcp.md#mid-session-drops-of-a-remote-server)。

4420* 如果您是該伺服器的開發者,且該工具可安全呼叫兩次,請 [將其標記為可安全重複](https://code.claude.com/docs/zh-TW/mcp.md#tool-calls-pending-when-a-connection-closes),讓 Claude Code 能重複遺失的呼叫4433* 如果您是該伺服器的開發者,且該工具可安全呼叫兩次,請 [將其標記為可安全重複](https://code.claude.com/docs/zh-TW/mcp.md#tool-calls-pending-when-a-connection-closes),讓 Claude Code 能重複遺失的呼叫

4421 4434 

4435### MCP server is disabled

4436 

4437工具結果中出現此訊息,表示 Claude 呼叫了一個已 [停用](https://code.claude.com/docs/zh-TW/mcp.md#disable-a-server-without-removing-it) 之 [MCP 伺服器](https://code.claude.com/docs/zh-TW/mcp.md) 上的工具。Claude Code 沒有連線至該伺服器,因此該工具未執行,Claude 收到的是此文字而非結果:

4438 

4439```text wrap theme={null}

4440MCP server "<name>" is disabled — re-enable it via /mcp to use its tools

4441```

4442 

4443**處理方式:**

4444 

4445* 如果您原本就打算停用該伺服器,則無需任何動作

4446* 如果 Claude 需要該伺服器的工具,請在 Claude Code 提示詞輸入框中透過 `/mcp` 將其重新啟用

4447* 在 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 應用程式中,若要重新啟用該伺服器,請在 TypeScript 中呼叫 [`toggleMcpServer()`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#togglemcpserver) 並將 `enabled` 設為 `true`,或在 Python 中呼叫 [`toggle_mcp_server()`](https://code.claude.com/docs/zh-TW/agent-sdk/python#claudesdkclient) 並將 `enabled` 設為 `True`

4448 

4449### MCP tool call timed out with the server's question unanswered

4450 

4451在 [非互動模式](https://code.claude.com/docs/zh-TW/headless.md) 中,某個 [MCP 伺服器](https://code.claude.com/docs/zh-TW/mcp.md) 在工具呼叫期間透過 [elicitation](https://code.claude.com/docs/zh-TW/mcp.md#respond-to-mcp-elicitation-requests) 要求輸入,而該呼叫的時間限制在收到回答之前就已用盡:

4452 

4453```text theme={null}

4454MCP server "<name>" tool "<tool>" timed out after <N>s. The server asked the user a question, and no answer came before the time limit. Do not call this tool again in this turn. Tell the user that the server's question got no answer, and wait for their reply.

4455```

4456 

4457在 v2.1.310 之前,結果會以 `timed out after <N>s` 結束,且未提及該問題。

4458 

4459**處理方式:**

4460 

4461* 設定一個會回答伺服器請求的 [`Elicitation` hook](https://code.claude.com/docs/zh-TW/hooks#elicitation)

4462* 在 TypeScript Agent SDK 應用程式中,讓您的 [`onElicitation`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options) 回呼在時間限制用盡之前傳回其回答

4463* 若要給予回答更多時間,請在伺服器的設定項目中以毫秒為單位設定較長的 [`timeout`](https://code.claude.com/docs/zh-TW/mcp#time-limits-on-mcp-tool-calls),例如 `"timeout": 600000` 代表 10 分鐘

4464* 改為在互動式工作階段中執行該任務,並自行回答伺服器的 [對話框](https://code.claude.com/docs/zh-TW/mcp.md#respond-to-mcp-elicitation-requests)

4465 

4422### Agent would be spawned with zero tools4466### Agent would be spawned with zero tools

4423 4467 

4424subagent 的 [`tools` 清單](https://code.claude.com/docs/zh-TW/sub-agents#supported-frontmatter-fields) 中的每個項目都無法比對到可用的工具,因此 Claude Code 拒絕啟動該 subagent:沒有任何工具,它就無法執行動作。訊息會依問題類型將您的項目分組:4468subagent 的 [`tools` 清單](https://code.claude.com/docs/zh-TW/sub-agents#supported-frontmatter-fields) 中的每個項目都無法比對到可用的工具,因此 Claude Code 拒絕啟動該 subagent:沒有任何工具,它就無法執行動作。訊息會依問題類型將您的項目分組:


4741The command was not started: this computer's disk is full (ENOSPC) on the volume holding /tmp/claude-501 (Claude Code's temporary directory), so the file that captures command output could not be created there and nothing ran. Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.4785The command was not started: this computer's disk is full (ENOSPC) on the volume holding /tmp/claude-501 (Claude Code's temporary directory), so the file that captures command output could not be created there and nothing ran. Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.

4742```4786```

4743 4787 

4744另外三則訊息會出現在已執行並以非零代碼結束的命令之後。此範例為 `Disk full:` 形式:4788`Disk full:`、`Disk quota used up:` 和 `Nearly out of inodes:` 訊息會出現在已執行並以非零代碼結束的命令之後。例如:

4745 4789 

4746```text wrap theme={null}4790```text wrap theme={null}

4747Disk full: this computer's volume holding /tmp/claude-501 (Claude Code's temporary directory) has 3 MB free, so whatever this command printed was lost and its own writes may have failed with "No space left on device". Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.4791Disk full: this computer's volume holding /tmp/claude-501 (Claude Code's temporary directory) has 3 MB free, so whatever this command printed was lost and its own writes may have failed with "No space left on device". Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.


4751 4795 

4752* 在 macOS 和 Linux 上,於 shell 中執行 `df -h <dir>`,以查看存放該目錄的是哪個磁碟區以及其使用量。`df -i <dir>` 會顯示可用的 inode 數量。`<dir>` 是您的訊息所指出的目錄,例如 `df -i /tmp/claude-501`4796* 在 macOS 和 Linux 上,於 shell 中執行 `df -h <dir>`,以查看存放該目錄的是哪個磁碟區以及其使用量。`df -i <dir>` 會顯示可用的 inode 數量。`<dir>` 是您的訊息所指出的目錄,例如 `df -i /tmp/claude-501`

4753* **`Disk full: this computer's volume` 或 `disk is full (ENOSPC)`**:刪除該磁碟區上任何位置中不需要的檔案4797* **`Disk full: this computer's volume` 或 `disk is full (ENOSPC)`**:刪除該磁碟區上任何位置中不需要的檔案

4754* **`Disk quota used up:` 或 `Disk full: a test write`**:刪除您自己在該磁碟區上的檔案,即使該磁碟區仍顯示有可用空間4798* **`Disk quota used up:`、`disk quota is used up (EDQUOT)` 或 `Disk full: a test write`**:刪除您自己在該磁碟區上的檔案,即使該磁碟區仍顯示有可用空間

4755* **`disk quota is used up (EDQUOT)`**:刪除您自己在該磁碟區上的檔案

4756* **`Nearly out of inodes:`**:刪除該磁碟區上大量的檔案。無論大小,每個檔案都會佔用一個 inode,因此重要的是檔案數量,而非檔案大小4799* **`Nearly out of inodes:`**:刪除該磁碟區上大量的檔案。無論大小,每個檔案都會佔用一個 inode,因此重要的是檔案數量,而非檔案大小

4757* 或者,將 [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/zh-TW/env-vars) 設為位於有空間之磁碟區上的目錄,然後重新啟動 Claude Code4800* 或者,將 [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/zh-TW/env-vars) 設為位於有空間之磁碟區上的目錄,然後重新啟動 Claude Code

4758* 接著讓 Claude 再次執行該命令4801* 接著讓 Claude 再次執行該命令


4766 4809 

4767在 v2.1.305 之前,Claude Code 因磁碟已滿而無法啟動的命令,只會傳回作業系統的錯誤文字。該文字的內容例如 `ENOSPC: no space left on device, open <path>.output`。4810在 v2.1.305 之前,Claude Code 因磁碟已滿而無法啟動的命令,只會傳回作業系統的錯誤文字。該文字的內容例如 `ENOSPC: no space left on device, open <path>.output`。

4768 4811 

4812### git is not installed on this Mac

4813 

4814此訊息表示 Claude Code 中的某個步驟需要 git,而它找到的 git 是 Apple 位於 `/usr/bin/git` 的替代程式。提供 git 的開發者工具尚未安裝。

4815 

4816Claude Code 不會啟動該替代程式,而是改為顯示此文字,例如出現在較長的訊息中:

4817 

4818```text wrap theme={null}

4819git is not installed on this Mac. To install it, run xcode-select --install, then try again.

4820```

4821 

4822**處理方式:**

4823 

4824* 在 Terminal 中執行 `xcode-select --install`,完成它所啟動的安裝,然後在 Claude Code 中重試您原本在做的事

4825 

4769### File is not valid UTF-84826### File is not valid UTF-8

4770 4827 

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

fast-mode.md +21 −11

Details

155 155 

156在提供快速模式之前,Claude Code 會透過直接向 `api.anthropic.com` 的請求檢查您組織的快速模式可用性。該檢查不遵循 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential),因此在將 Claude 流量路由透過 [LLM 閘道](https://code.claude.com/docs/zh-TW/llm-gateway)並阻止直接出口到 `api.anthropic.com` 的網路上,即使推理請求有效,檢查也會失敗。該檢查確實使用已設定的 [HTTP 代理](https://code.claude.com/docs/zh-TW/network-config.md#proxy-configuration),因此網路阻止只在 `api.anthropic.com` 即使透過代理也無法到達的地方才會使檢查失敗。156在提供快速模式之前,Claude Code 會透過直接向 `api.anthropic.com` 的請求檢查您組織的快速模式可用性。該檢查不遵循 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential),因此在將 Claude 流量路由透過 [LLM 閘道](https://code.claude.com/docs/zh-TW/llm-gateway)並阻止直接出口到 `api.anthropic.com` 的網路上,即使推理請求有效,檢查也會失敗。該檢查確實使用已設定的 [HTTP 代理](https://code.claude.com/docs/zh-TW/network-config.md#proxy-configuration),因此網路阻止只在 `api.anthropic.com` 即使透過代理也無法到達的地方才會使檢查失敗。

157 157 

158當檢查失敗時,`/fast` 報告「由於網路連線問題,快速模式不可用」,請求以標準速度執行,即使您的組織已啟用快速模式。過去成功的檢查會從其快取結果繼續工作,因此被阻止的檢查主要影響新安裝。158如果您的組織已啟用快速模式,但 `/fast` 顯示並非如此,請在下列情況中找到它顯示的訊息。

159 159 

160當檢查到達 `api.anthropic.com` 但呈現 Anthropic 拒絕的認證時,開放網路上也會出現相同的連線訊息。其解析金鑰是閘道發行的認證的工作階段,保存在 [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 中或由 [`apiKeyHelper`](https://code.claude.com/docs/zh-TW/settings-reference#apikeyhelper) 產生,會使用該金鑰發送檢查,被拒絕的請求會報告為連線失敗。160#### Fast mode unavailable due to network connectivity issues

161 161 

162若要復原快速模式,在網路阻止是原因的地方允許直接出口到 `api.anthropic.com`,或設定與檢查失敗方式相符的任何變數:162可用性檢查失敗(例如因為您的網路阻止 `api.anthropic.com`),請求會以標準速度執行。過去成功的檢查會從其快取結果繼續運作,因此被阻止的檢查主要影響新安裝。

163 163 

164* `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1` 將失敗的檢查視為可用,並仍然遵守「已被您的組織停用」的回應。當您的網路拒絕連線,或當 Anthropic 拒絕閘道認證時使用它;允許清單無法幫助認證情況,因為沒有任何東西被阻止。164若要復原快速模式,請將直接出口到 `api.anthropic.com` 加入允許清單,或設定 `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`,這會將失敗的檢查視為可用,並仍然遵守「已被您的組織停用」的回應。

165* `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1` 完全跳過檢查。當您的網路攔截請求而不是拒絕它時使用它。

166 165 

167兩個閘道配置報告「快速模式已被您的組織停用」而不是連線訊息,即使您的組織已啟用快速模式:166#### Fast mode is currently unavailable

168 167 

169* 僅使用 [`ANTHROPIC_AUTH_TOKEN`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 進行驗證的工作階段會跳過檢查:沒有 claude.ai 登入或 Anthropic API 金鑰,以及沒有快取的成功檢查,Claude Code 會將快速模式視為由您的組織停用,而不發送請求。168在閘道後面,請檢查下列設定,在這些設定中 Claude Code 不會發送可用性檢查,且沒有先前成功的檢查快取:

170* 攔截檢查並用自己的頁面回答的代理,例如傳回 HTTP 200 阻止頁面的 TLS 檢查代理,被讀取為回應,表示您的組織已停用快速模式。

171 169 

172在這兩種情況下,設定 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1` 以復原快速模式。`CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` 不適用於任何一種情況,因為它只繞過失敗的檢查,而這兩種都會產生停用回應。允許清單直接出口無法幫助持有人令牌情況,它永遠不會發送請求。170* 您將 `ANTHROPIC_BASE_URL` 指向您的閘道,並將 [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 設定為閘道發行、但不符合 Anthropic API 金鑰格式的金鑰。Claude Code 不會將此類金鑰傳送至 `api.anthropic.com`。

171* 您設定了 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/zh-TW/env-vars),因此 Claude Code 會跳過檢查。

173 172 

174這些變數只影響用戶端檢查。當您的組織已停用快速模式時,API 會拒絕快速模式請求,無論是否設定了它們。被 API 拒絕的請求即使設定了跳過變數也會成立。Claude Code 會以標準速度重試被拒絕的請求,關閉快速模式,並且 `/fast` 報告您的組織已停用快速模式。173若要在任一設定中復原快速模式,請設定 `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`。

175 174 

176設定 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 也會抑制可用性檢查。沒有先前快取的成功檢查,`/fast` 報告「快速模式目前不可用」;兩個跳過變數在該配置中也會復原快速模式。175#### Fast mode has been disabled by your organization

176 

177在閘道後面,即使您的組織已啟用快速模式,您也可能在下列任一設定中看到此訊息:

178 

179* 您僅使用 [`ANTHROPIC_AUTH_TOKEN`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 進行驗證,沒有 claude.ai 登入、沒有 API 金鑰,也沒有快取的成功檢查。Claude Code 接著會將快速模式視為已被您的組織停用,而不發送請求。

180* 代理伺服器攔截檢查並以自己的頁面回答,例如傳回 HTTP 200 阻止頁面的 TLS 檢查代理伺服器。Claude Code 會將該頁面讀取為表示您的組織已停用快速模式的回應。

181 

182在這兩種情況下,請設定 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`(這會完全跳過檢查),而不是 `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS`(它不適用於任何一種情況)。

183 

184> [!NOTE]

185>

186> 跳過變數只會變更用戶端檢查。當您的組織已停用快速模式時,無論是否設定了這些變數,API 都會拒絕快速模式請求。Claude Code 接著會以標準速度重試請求,關閉快速模式,並且 `/fast` 會報告您的組織已停用快速模式。

177 187 

178### 需要每個工作階段的選擇加入188### 需要每個工作階段的選擇加入

179 189 

hooks.md +16 −5

Details

961blocking because Git Bash wasn't found, so only exit code 0 or 2 counts as this hook's verdict.961blocking because Git Bash wasn't found, so only exit code 0 or 2 counts as this hook's verdict.

962```962```

963 963 

964要找出 hook 失敗的原因,請查看 [偵錯日誌](#debug-hooks)。請選擇符合您 hook 的修正方式:964如果錯誤還顯示 `PowerShell started no program`,請從 [針對僅由帶引號字串組成之 `command` 的修正方式](#powershell-started-no-program) 著手,PowerShell 會將這類命令列印出來,而不是執行它。

965 

966在沒有 Git Bash 的情況下,該 hook 傳回 0 或 2 以外的任何退出碼都計為 [失敗](#block-the-action-when-a-hook-fails),即使它列印了不拒絕呼叫的 JSON。要找出 hook 失敗的原因,請查看 [偵錯日誌](#debug-hooks)。然後選擇符合您 hook 的修正方式:

965 967 

966* **hook 失敗時操作應繼續進行**:在 hook 中新增 [`"onFailure": "continue"`](#block-the-action-when-a-hook-fails)968* **hook 失敗時操作應繼續進行**:在 hook 中新增 [`"onFailure": "continue"`](#block-the-action-when-a-hook-fails)

967* **hook 是為 Bash 撰寫的**:未設定 `shell` 的 [shell 形式](#exec-form-and-shell-form) hook 在未安裝 Git Bash 時會在 PowerShell 中執行,而為 Bash 撰寫的指令碼在那裡可能無法照原樣執行。安裝 [Git for Windows](https://git-scm.com/downloads/win),或者如果 Git Bash 安裝在 Claude Code 找不到的位置,請設定 [`CLAUDE_CODE_GIT_BASH_PATH`](https://code.claude.com/docs/zh-TW/env-vars),然後啟動新的工作階段969* **hook 以 1 退出來發出警告,但在當機時必須阻止**:使用 `"onFailure": "continue"` 時,呼叫會在退出碼 1 時繼續進行,無論是警告還是當機皆然。請改為新增 `"onFailure": "block"`,並在指令碼發出警告之處以退出碼 0 結束,讓這些呼叫繼續進行。若仍要在 `PreToolUse` 上顯示警告,請將其列印到 stdout,放在單一 JSON 物件的 [`systemMessage`](#json-output) 欄位中。

970* **hook 是為 Bash 撰寫的**:在沒有 Git Bash 的情況下,未設定 `shell` 的 [shell 形式](#exec-form-and-shell-form) hook 會在 PowerShell 中執行,並可能在那裡失敗。安裝 [Git for Windows](https://git-scm.com/downloads/win),或者如果 Git Bash 安裝在 Claude Code 找不到的位置,請設定 [`CLAUDE_CODE_GIT_BASH_PATH`](https://code.claude.com/docs/zh-TW/env-vars)。然後啟動新的工作階段。

968* **hook 執行單一 `.exe`,而非 `.cmd` 或 `.bat` 檔案**:將程式放在 `command` 中、將其引數放在 `args` 中以使用 exec 形式,並新增 `"onFailure": "block"`。Claude Code 接著會在沒有 shell 的情況下啟動該程式。若沒有 `"onFailure": "block"`,當程式失敗、不存在或逾時時,呼叫可能會繼續進行971* **hook 執行單一 `.exe`,而非 `.cmd` 或 `.bat` 檔案**:將程式放在 `command` 中、將其引數放在 `args` 中以使用 exec 形式,並新增 `"onFailure": "block"`。Claude Code 接著會在沒有 shell 的情況下啟動該程式。若沒有 `"onFailure": "block"`,當程式失敗、不存在或逾時時,呼叫可能會繼續進行

969* **hook 以 1 退出來發出警告,但在當機時必須阻止**:使用 `"onFailure": "continue"` 時,呼叫會在退出碼 1 時繼續進行,無論是警告還是當機皆然。請改為新增 `"onFailure": "block"`,並在指令碼發出警告之處以退出碼 0 結束,讓這些呼叫繼續進行。要在 `PreToolUse` 上以退出碼 0 退出後顯示警告,請將其列印到 stdout,放在單一 JSON 物件的 [`systemMessage`](#json-output) 欄位中

970* **必須在失敗時阻止的 PowerShell 防護 hook**:在未設定 `onFailure` 的情況下,一旦安裝了 Git for Windows 且 Claude Code 找到 Git Bash,它就不會再阻止。新增 `"onFailure": "block"`,讓失敗或逾時在有無 Git Bash 的情況下都會阻止呼叫。同時設定 `"shell": "powershell"`,讓 hook 從此之後繼續在 PowerShell 中執行,而不是在 Git Bash 中執行972* **必須在失敗時阻止的 PowerShell 防護 hook**:在未設定 `onFailure` 的情況下,一旦安裝了 Git for Windows 且 Claude Code 找到 Git Bash,它就不會再阻止。新增 `"onFailure": "block"`,讓失敗或逾時在有無 Git Bash 的情況下都會阻止呼叫。同時設定 `"shell": "powershell"`,讓 hook 從此之後繼續在 PowerShell 中執行,而不是在 Git Bash 中執行

971 973 

972對於顯示此錯誤的 hook,0 或 2 以外的任何退出碼都計為 [失敗](#block-the-action-when-a-hook-fails),即使該 hook 列印了不拒絕呼叫的 JSON。

973 

974在 v2.1.309 之前,訊息為 `blocking because Git Bash wasn't found and this hook doesn't set "shell" to "powershell", so only exit code 0 or 2 counts as its verdict.`974在 v2.1.309 之前,訊息為 `blocking because Git Bash wasn't found and this hook doesn't set "shell" to "powershell", so only exit code 0 or 2 counts as its verdict.`

975 975 

976#### PowerShell started no program

977 

978出現此錯誤的 hook 是在 PowerShell 中執行的,而對於僅由帶引號字串組成的 `command`(例如 `"command": "\"C:\\Tools\\guard.exe\""`),PowerShell 會將其列印出來,而不是執行它。

979 

980* **要列印文字(例如 JSON)**:設定 `"shell": "powershell"`,hook 便會以 0 退出

981* **要執行 `.ps1`、`.cmd` 或 `.bat` 檔案,或路徑含有變數的 `.exe`**:設定 `"shell": "powershell"`,並在帶引號的路徑前加上 `&`。保留 `$HOME` 原樣,並依照 [`check.ps1` 範例](#reference-scripts-by-path-in-powershell-hooks) 拼寫 `$env:CLAUDE_PROJECT_DIR` 的方式來拼寫環境變數

982* **要執行路徑中不含 `$` 的單一 `.exe`**:從 `command` 中移除內層引號,然後套用 [執行單一 `.exe` 之 hook 的修正方式](#failed-hooks-on-windows-without-git-bash),若程式不接受引數,請寫入 `"args": []`

983* **要執行為 Bash 撰寫的指令碼**:套用 [為 Bash 撰寫之 hook 的修正方式](#failed-hooks-on-windows-without-git-bash)

984 

976#### 每個事件的退出碼 2 行為985#### 每個事件的退出碼 2 行為

977 986 

978退出碼 2 是 hook 發出「停止,不要這樣做」的方式。效果取決於事件,因為某些事件代表可以被阻止的操作(例如尚未發生的工具呼叫),而其他事件代表已經發生或無法防止的事情。987退出碼 2 是 hook 發出「停止,不要這樣做」的方式。效果取決於事件,因為某些事件代表可以被阻止的操作(例如尚未發生的工具呼叫),而其他事件代表已經發生或無法防止的事情。


4186}4195}

4187```4196```

4188 4197 

4198### 在 PowerShell hook 中依路徑參考指令碼

4199 

4189若要從 PowerShell shell 形式命令參考專案根目錄,請寫入 `${CLAUDE_PROJECT_DIR}` 或 `$env:CLAUDE_PROJECT_DIR`。Claude Code 會在 PowerShell shell 形式命令中將 `${CLAUDE_PROJECT_DIR}`、`${CLAUDE_PLUGIN_ROOT}` 和 `${CLAUDE_PLUGIN_DATA}` 佔位符重寫為 PowerShell 的 `${env:NAME}` 形式,無論 hook 是在 `settings.json`、外掛或 skill 中定義。PowerShell 會在解析後從匯出的環境中解析該值,因此佔位符在雙引號字串內有效,但在單引號字串內無效,因為 PowerShell 永遠不會在單引號字串中展開變數。4200若要從 PowerShell shell 形式命令參考專案根目錄,請寫入 `${CLAUDE_PROJECT_DIR}` 或 `$env:CLAUDE_PROJECT_DIR`。Claude Code 會在 PowerShell shell 形式命令中將 `${CLAUDE_PROJECT_DIR}`、`${CLAUDE_PLUGIN_ROOT}` 和 `${CLAUDE_PLUGIN_DATA}` 佔位符重寫為 PowerShell 的 `${env:NAME}` 形式,無論 hook 是在 `settings.json`、外掛或 skill 中定義。PowerShell 會在解析後從匯出的環境中解析該值,因此佔位符在雙引號字串內有效,但在單引號字串內無效,因為 PowerShell 永遠不會在單引號字串中展開變數。

4190 4201 

4191不要在 PowerShell hook 中寫入裸露的 `$CLAUDE_PROJECT_DIR` 拼寫。PowerShell 會將其解析為未定義的本機變數,並將其解析為 `$null`,這會導致指令碼路徑沒有其專案根目錄前綴。Claude Code 不會重寫該形式;它會在 [debug log](#debug-hooks) 中記錄警告。4202不要在 PowerShell hook 中寫入裸露的 `$CLAUDE_PROJECT_DIR` 拼寫。PowerShell 會將其解析為未定義的本機變數,並將其解析為 `$null`,這會導致指令碼路徑沒有其專案根目錄前綴。Claude Code 不會重寫該形式;它會在 [debug log](#debug-hooks) 中記錄警告。

jetbrains.md +1 −1

Details

61/ide61/ide

62```62```

63 63 

64當連接成功時,Claude Code 會確認並顯示類似 `Connected to IntelliJ IDEA.` 的訊息。如果 Claude Code 偵測到執行中的 IDE 但該 IDE 沒有安裝外掛程式,`/ide` 會為您安裝外掛程式,並要求您重新啟動 IDE。64當連接成功時,Claude Code 會確認並顯示類似 `Connected to IntelliJ IDEA.` 的訊息。

65 65 

66如果您希望 Claude 能夠存取與 IDE 相同的檔案,請從與 IDE 專案根目錄相同的目錄啟動 Claude Code。66如果您希望 Claude 能夠存取與 IDE 相同的檔案,請從與 IDE 專案根目錄相同的目錄啟動 Claude Code。

67 67 

Details

519| `400` 錯誤在每個請求上,在閘道自己的詞語中拒絕工具的輸入架構或其 `pattern`,在 Claude Code v2.1.265 至 v2.1.267 上 | 在這些版本上的逐步推出中,[Artifact 工具](https://code.claude.com/docs/zh-TW/artifacts.md#availability)架構帶有包含 `\p{...}` Unicode 字元類的正規表達式。Anthropic API 接受它,但檢查每個工具架構的 `pattern` 的閘道或上游使用自己的正規表達式引擎會拒絕整個請求 | 更新到 v2.1.268 或更高版本,不發送正規表達式。在受影響的版本上,[關閉 artifacts](https://code.claude.com/docs/zh-TW/artifacts.md#disable-artifacts),這會從請求中移除工具及其架構 |519| `400` 錯誤在每個請求上,在閘道自己的詞語中拒絕工具的輸入架構或其 `pattern`,在 Claude Code v2.1.265 至 v2.1.267 上 | 在這些版本上的逐步推出中,[Artifact 工具](https://code.claude.com/docs/zh-TW/artifacts.md#availability)架構帶有包含 `\p{...}` Unicode 字元類的正規表達式。Anthropic API 接受它,但檢查每個工具架構的 `pattern` 的閘道或上游使用自己的正規表達式引擎會拒絕整個請求 | 更新到 v2.1.268 或更高版本,不發送正規表達式。在受影響的版本上,[關閉 artifacts](https://code.claude.com/docs/zh-TW/artifacts.md#disable-artifacts),這會從請求中移除工具及其架構 |

520| `400` 錯誤在每個請求上,在閘道自己的詞語中拒絕無法識別的工具類型,例如 `Input tag 'advisor_20260301'`,在 Claude Code v2.1.275 上 | 在該版本上的逐步推出中,即使關閉顧問,請求也會帶有[顧問工具](https://code.claude.com/docs/zh-TW/advisor.md)項目。Anthropic API 接受它,但驗證工具類型的閘道或上游會拒絕整個請求;[轉發請求正文欄位不變](https://code.claude.com/docs/zh-TW/llm-gateway-protocol.md#forward-as-open-lists)的閘道會不受影響地通過它。該項目是一個不帶任何對話內容的聲明 | 更新到 v2.1.276 或更高版本,除非您打開顧問,否則不會在 `ANTHROPIC_BASE_URL` 閘道後面發送該項目。在 v2.1.275 上,設定 [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/zh-TW/env-vars),這會從請求中移除該項目 |520| `400` 錯誤在每個請求上,在閘道自己的詞語中拒絕無法識別的工具類型,例如 `Input tag 'advisor_20260301'`,在 Claude Code v2.1.275 上 | 在該版本上的逐步推出中,即使關閉顧問,請求也會帶有[顧問工具](https://code.claude.com/docs/zh-TW/advisor.md)項目。Anthropic API 接受它,但驗證工具類型的閘道或上游會拒絕整個請求;[轉發請求正文欄位不變](https://code.claude.com/docs/zh-TW/llm-gateway-protocol.md#forward-as-open-lists)的閘道會不受影響地通過它。該項目是一個不帶任何對話內容的聲明 | 更新到 v2.1.276 或更高版本,除非您打開顧問,否則不會在 `ANTHROPIC_BASE_URL` 閘道後面發送該項目。在 v2.1.275 上,設定 [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/zh-TW/env-vars),這會從請求中移除該項目 |

521| 模型缺失於 `/model` 選擇器 | 閘道模型名稱不在 Claude Code 的內置列表中,或 Claude Code 顯示替換內置選項的 [`modelPicker`](https://code.claude.com/docs/zh-TW/settings-reference#modelpicker) 陣容 | 啟用[閘道模型發現](#add-gateway-models-to-the-model-picker)或使用[模型配置](https://code.claude.com/docs/zh-TW/model-config.md)變數添加名稱。如果 Claude Code 顯示替換 `modelPicker` 陣容,請將閘道模型添加到其中,或在受管設定提供時要求您的管理員添加它們 |521| 模型缺失於 `/model` 選擇器 | 閘道模型名稱不在 Claude Code 的內置列表中,或 Claude Code 顯示替換內置選項的 [`modelPicker`](https://code.claude.com/docs/zh-TW/settings-reference#modelpicker) 陣容 | 啟用[閘道模型發現](#add-gateway-models-to-the-model-picker)或使用[模型配置](https://code.claude.com/docs/zh-TW/model-config.md)變數添加名稱。如果 Claude Code 顯示替換 `modelPicker` 陣容,請將閘道模型添加到其中,或在受管設定提供時要求您的管理員添加它們 |

522| `/fast` 報告 `Fast mode unavailable due to network connectivity issues`,而推理請求有效 | [快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md)可用性檢查直接進入 `api.anthropic.com`,不遵循 `ANTHROPIC_BASE_URL`,因此阻止的直接出站會導致檢查失敗。當檢查呈現來自 `ANTHROPIC_API_KEY` 或 `apiKeyHelper` 的閘道簽發的金鑰,而 Anthropic 拒絕它時,在開放網路上也會出現相同的訊息 | 如果出站被阻止,請將 `api.anthropic.com` 列入白名單,或設定跳過變數;對於被拒絕的閘道金鑰,只有跳過變數有幫助。請參閱[在代理和 LLM 閘道後面使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |522| `/fast` 回報 `Fast mode unavailable due to network connectivity issues`,但推理請求正常運作 | [快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md)可用性檢查會直接連線到 `api.anthropic.com`,不遵循 `ANTHROPIC_BASE_URL`,因此被阻擋的直接出站連線會導致檢查失敗 | 如果出站連線被阻擋,請將 `api.anthropic.com` 加入允許清單,或設定跳過變數。請參閱[在代理伺服器和 LLM 閘道後使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

523| `/fast` 在使用 `ANTHROPIC_AUTH_TOKEN` 驗證的會話中報告 `Fast mode has been disabled by your organization`,儘管組織已啟用快速模式 | 可用性檢查需要 claude.ai 登入或 Anthropic API 金鑰;僅使用持有人令牌,Claude Code 會將快速模式視為已禁用,而不發送檢查 | 設定 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`;請參閱[在代理和 LLM 閘道後面使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |523| 在以 `ANTHROPIC_API_KEY` 中閘道簽發的金鑰進行身分驗證的工作階段中,`/fast` 回報 `Fast mode is currently unavailable` | 當 `ANTHROPIC_BASE_URL` 指向您的閘道時,Claude Code 不會將非 Anthropic API 金鑰格式的金鑰傳送給 `api.anthropic.com`。因此[快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md)可用性檢查不會送出,且若沒有先前成功檢查的快取結果,Claude Code 會將快速模式視為不可用 | 設定 `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`;請參閱[在代理伺服器和 LLM 閘道後使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

524| 在以 `ANTHROPIC_AUTH_TOKEN` 進行身分驗證的工作階段中,`/fast` 回報 `Fast mode has been disabled by your organization`,儘管組織已啟用快速模式 | 可用性檢查需要 claude.ai 登入或 API 金鑰;若僅有 bearer token,Claude Code 會將快速模式視為已停用,而不送出檢查 | 設定 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`;請參閱[在代理伺服器和 LLM 閘道後使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

524| Claude Code 要求您登入,儘管 [curl 測試](#verify-the-connection)成功 | CLI 沒有自己的認證:可達的基礎 URL 不是一個,在互動會話中,專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中的 `env` 區塊僅在首次執行嚮導和[信任提示](https://code.claude.com/docs/zh-TW/permissions.md#what-runs-before-you-trust-a-folder)後應用 | 在 Claude Code 在首次執行設定之前讀取的位置設定 `ANTHROPIC_AUTH_TOKEN`:shell 匯出、`~/.claude/settings.json` 中的 `env` 區塊或受管設定 |525| Claude Code 要求您登入,儘管 [curl 測試](#verify-the-connection)成功 | CLI 沒有自己的認證:可達的基礎 URL 不是一個,在互動會話中,專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中的 `env` 區塊僅在首次執行嚮導和[信任提示](https://code.claude.com/docs/zh-TW/permissions.md#what-runs-before-you-trust-a-folder)後應用 | 在 Claude Code 在首次執行設定之前讀取的位置設定 `ANTHROPIC_AUTH_TOKEN`:shell 匯出、`~/.claude/settings.json` 中的 `env` 區塊或受管設定 |

525| `ANTHROPIC_API_KEY` 已設定但被忽略,無提示 | 金鑰在互動會話中需要一次性批准,之前拒絕的金鑰被忽略而不再詢問 | 使用 `Use custom API key` 選項在 `/config` 下啟用它 |526| `ANTHROPIC_API_KEY` 已設定但被忽略,無提示 | 金鑰在互動會話中需要一次性批准,之前拒絕的金鑰被忽略而不再詢問 | 使用 `Use custom API key` 選項在 `/config` 下啟用它 |

526| `This machine's managed settings require a first-party login`,或當受管設定將 `forceLoginMethod` 設定為 `"gateway"` 或也設定 `forceLoginGatewayUrl` 時的 [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in) | 受管設定包括 `forceLoginMethod` 或 `forceLoginOrgUUID`,不能與 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 共存 | 您的管理員必須從受管設定中移除 `forceLoginMethod`、`forceLoginOrgUUID` 和 `forceLoginGatewayUrl` 以使用閘道認證,或移除閘道認證以使用受管設定要求的登入。兩者無法結合 |527| `This machine's managed settings require a first-party login`,或當受管設定將 `forceLoginMethod` 設定為 `"gateway"` 或也設定 `forceLoginGatewayUrl` 時的 [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/zh-TW/errors#administrator-policy-requires-a-cloud-gateway-sign-in) | 受管設定包括 `forceLoginMethod` 或 `forceLoginOrgUUID`,不能與 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 共存 | 您的管理員必須從受管設定中移除 `forceLoginMethod`、`forceLoginOrgUUID` 和 `forceLoginGatewayUrl` 以使用閘道認證,或移除閘道認證以使用受管設定要求的登入。兩者無法結合 |

mcp.md +253 −253

Details

60 60 

61## 安裝 MCP 伺服器61## 安裝 MCP 伺服器

62 62 

63MCP 伺服器可以根據您的需求以多種方式進行設定:63MCP 伺服器可依您的需求以多種方式設定:

64 64 

65### 選項 1:新增遠端 HTTP 伺服器65### 選項 1:新增遠端 HTTP 伺服器

66 66 

67HTTP 伺服器是連接到遠端 MCP 伺服器的建議選項。這是雲端服務最廣泛支援的傳輸方式。67HTTP 伺服器是連線至遠端 MCP 伺服器的建議選項。這是雲端服務支援最廣泛的傳輸方式。

68 68 

69```bash theme={null}69```bash theme={null}

70# 基本語法70# Basic syntax

71claude mcp add --transport http <name> <url>71claude mcp add --transport http <name> <url>

72 72 

73# 實際範例:連接到 Notion73# Real example: Connect to Notion

74claude mcp add --transport http notion https://mcp.notion.com/mcp74claude mcp add --transport http notion https://mcp.notion.com/mcp

75 75 

76# 使用 Bearer token 的範例76# Example with Bearer token

77claude mcp add --transport http secure-api https://api.example.com/mcp \77claude mcp add --transport http secure-api https://api.example.com/mcp \

78 --header "Authorization: Bearer your-token"78 --header "Authorization: Bearer your-token"

79```79```

80 80 

81在透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。81透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規格使用 `streamable-http` 這個名稱來稱呼此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。

82 82 

83具有 `url` 但沒有 `type` 的 JSON 項目是設定錯誤,因為 Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器。Claude Code 會跳過該伺服器並報告 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。83具有 `url` 但沒有 `type` 的 JSON 項目屬於設定錯誤,因為 Claude Code 會將沒有 `type` 的項目視為 stdio 伺服器。Claude Code 會略過該伺服器並回報 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。

84 84 

85只有 SDK 主機應用程式(例如 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md) 應用程式或 [桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md))可以註冊進程內 `"type": "sdk"` 伺服器。Claude Code 會跳過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並報告 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。85只有 SDK 主機應用程式,例如 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md) 應用程式或[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),才能註冊行程內的 `"type": "sdk"` 伺服器。Claude Code 會略過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並回報 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。

86 86 

87在 `--output-format stream-json` 執行中,Claude Code 也會在 `system/init` 事件的 [`mcp_server_errors` 欄位](https://code.claude.com/docs/zh-TW/headless#stream-responses)中報告跳過的 `--mcp-config` 項目,以便指令碼可以偵測伺服器從未載入。這需要 Claude Code v2.1.219 或更新版本。87在 `--output-format stream-json` 執行中,Claude Code 也會在 `system/init` 事件的 [`mcp_server_errors` 欄位](https://code.claude.com/docs/zh-TW/headless#stream-responses)中回報被略過的 `--mcp-config` 項目,讓指令碼能偵測到該伺服器從未載入。這需要 Claude Code v2.1.219 或更新版本。

88 88 

89### 選項 2:新增遠端 SSE 伺服器89### 選項 2:新增遠端 SSE 伺服器

90 90 

91> [!WARNING]91> [!WARNING]

92>92>

93> SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP 伺服器(如果可用)。93> SSE(Server-Sent Events)傳輸方式已棄用。若可行,請改用 HTTP 伺服器。

94 94 

95某些服務仍然只公開 SSE 端點。使用與 [HTTP 伺服器](#option-1-add-a-remote-http-server)相同的 `claude mcp add --transport http <name> <url>` 命令新增這些。Claude Code 首先嘗試 HTTP 傳輸,當伺服器不接受時切換到 SSE。自動切換需要 Claude Code v2.1.265 或更新版本。95有些服務仍只提供 SSE 端點。請使用與 [HTTP 伺服器](#option-1-add-a-remote-http-server)相同的 `claude mcp add --transport http <name> <url>` 命令來新增這類伺服器。Claude Code 會先嘗試 HTTP 傳輸方式,並在伺服器不接受時切換為 SSE。自動切換需要 Claude Code v2.1.265 或更新版本。

96 96 

97在較早版本上,或直接透過 SSE 連接,請改為傳遞 `--transport sse`:97若使用較早的版本,或要直接透過 SSE 連線,請改為傳入 `--transport sse`:

98 98 

99```bash theme={null}99```bash theme={null}

100# 基本語法100# Basic syntax

101claude mcp add --transport sse <name> <url>101claude mcp add --transport sse <name> <url>

102 102 

103# 實際範例:連接到 Asana103# Real example: Connect to Asana

104claude mcp add --transport sse asana https://mcp.asana.com/sse104claude mcp add --transport sse asana https://mcp.asana.com/sse

105 105 

106# 使用驗證標頭的範例106# Example with authentication header

107claude mcp add --transport sse private-api https://api.company.com/sse \107claude mcp add --transport sse private-api https://api.company.com/sse \

108 --header "X-API-Key: your-key-here"108 --header "X-API-Key: your-key-here"

109```109```

110 110 

111### 選項 3:新增本機 stdio 伺服器111### 選項 3:新增本機 stdio 伺服器

112 112 

113Stdio 伺服器在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。113Stdio 伺服器以本機程序的形式在您的電腦上執行。它們非常適合需要直接存取系統的工具或自訂指令碼。

114 114 

115Claude Code 在生成的伺服器環境中設定 `CLAUDE_PROJECT_DIR` 為專案根目錄,因此您的伺服器可以解析專案相對路徑,而無需依賴工作目錄。這是 hook 在其 `CLAUDE_PROJECT_DIR` 變數中接收的相同目錄。從伺服器程序內部讀取它,例如 Node 中的 `process.env.CLAUDE_PROJECT_DIR` 或 Python 中的 `os.environ["CLAUDE_PROJECT_DIR"]`。115Claude Code 會在所啟動伺服器的環境中將 `CLAUDE_PROJECT_DIR` 設為專案根目錄,讓您的伺服器能解析相對於專案的路徑,而不必依賴工作目錄。這與 hook 在其 `CLAUDE_PROJECT_DIR` 變數中收到的目錄相同。請在伺服器程序內讀取它,例如在 Node 中使用 `process.env.CLAUDE_PROJECT_DIR`,或在 Python 中使用 `os.environ["CLAUDE_PROJECT_DIR"]`。

116 116 

117`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在您於工作階段中途新增或移除工作目錄時不會變更。限制自身檔案系統存取到一組允許目錄的伺服器應改為實作 MCP `roots/list` 請求。Claude Code 使用工作階段的啟動目錄加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個 [額外工作目錄](https://code.claude.com/docs/zh-TW/permissions.md#working-directories)來回答 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。117`CLAUDE_PROJECT_DIR` 是固定的專案根目錄,在工作階段中途新增或移除工作目錄時不會改變。若伺服器要將自身的檔案系統存取限制在一組允許的目錄內,應改為實作 MCP `roots/list` 請求。Claude Code 會以工作階段的啟動目錄,加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個[額外工作目錄](https://code.claude.com/docs/zh-TW/permissions.md#working-directories)來回應 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。

118 118 

119此變數設定在伺服器的環境中,而不是在 Claude Code 自身的環境中,因此在專案範圍的 `.mcp.json` 項目或 `~/.claude.json` 中的本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 擴展參考它需要預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。119此變數設定在伺服器的環境中,而非 Claude Code 本身的環境中,因此若要在專案範圍 `.mcp.json` 項目,或 `~/.claude.json` 中本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 展開來參照它,需要提供預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定會直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。

120 120 

121```bash theme={null}121```bash theme={null}

122# 基本語法122# Basic syntax

123claude mcp add [options] <name> -- <command> [args...]123claude mcp add [options] <name> -- <command> [args...]

124 124 

125# 實際範例:新增 Airtable 伺服器125# Real example: Add Airtable server

126claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \126claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \

127 -- npx -y airtable-mcp-server127 -- npx -y airtable-mcp-server

128```128```

129 129 

130> [!NOTE]130> [!NOTE]

131>131>

132> 對於 stdio 伺服器,`--`(雙破折號)分隔 Claude 自身的選項(例如 `--transport`、`--env` 和 `--scope`)與執行伺服器的命令和引數。`--` 之後的所有內容都會原封不動地傳遞給伺服器。132> 對於 stdio 伺服器,`--`(雙破折號)會將 Claude 本身的選項(例如 `--transport`、`--env` 和 `--scope`)與執行伺服器的命令和引數分隔開來。`--` 之後的所有內容都會原封不動地傳遞給伺服器。

133>133>

134> 例如:134> 例如:

135>135>

136> * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`136> * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`

137> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`137> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 在環境中帶有 `KEY=value` 的情況下執行 `python server.py --port 8080`

138>138>

139> 沒有 `--`,Claude Code 會嘗試將伺服器的旗標(例如上面的 `--port`)解析為自身的選項。139> 若沒有 `--`,Claude Code 會嘗試將伺服器的旗標(例如上方的 `--port`)當作自己的選項來解析。

140>140>

141> `--env` 接受多個 `KEY=value` 對。如果伺服器名稱直接跟在 `--env` 之後,CLI 會將名稱讀取為另一對並拒絕它,因此請在 `--env` 和伺服器名稱之間放置至少一個其他選項,例如 `--transport stdio`。141> `--env` 接受多個 `KEY=value` 配對。若伺服器名稱直接接在 `--env` 之後,CLI 會將該名稱讀取為另一個配對並予以拒絕,因此請在 `--env` 與伺服器名稱之間至少放置一個其他選項,例如 `--transport stdio`。

142 142 

143#### Claude Code 如何停止 stdio 伺服器143#### Claude Code 如何停止 stdio 伺服器

144 144 

145當 Claude Code 中斷與 stdio 伺服器的連接時(例如在您的工作階段結束時),它會向伺服器程序傳送訊號,並短暫等待其退出,然後才強制停止它。如果您的伺服器在關閉時儲存狀態或移除鎖定檔案,請處理您平台的訊號,並在該時間內完成:145當 Claude Code 中斷與 stdio 伺服器的連線時(例如工作階段結束時),它會向伺服器程序發送訊號,並短暫等待其結束,然後才強制停止。若您的伺服器會在關閉時儲存狀態或移除鎖定檔案,請處理您平台的訊號,並在該時間內完成:

146 146 

147* **在 macOS 和 Linux 上**:Claude Code 傳送 `SIGINT`,如果程序在 100 毫秒後仍在執行,則傳送 `SIGTERM`,再過 400 毫秒後傳送 `SIGKILL`。147* **在 macOS 和 Linux 上**:Claude Code 會傳送 `SIGINT`,若 100 毫秒後程序仍在執行則傳送 `SIGTERM`,再過 400 毫秒後傳送 `SIGKILL`。

148* **在 Windows 上**:Claude Code 關閉伺服器的 stdin,如果程序在 300 毫秒後仍在執行,則結束伺服器的程序樹。148* **在 Windows 上**:Claude Code 會關閉伺服器的 stdin,若 300 毫秒後程序仍在執行,則結束伺服器的程序樹。

149 149 

150在 v2.1.296 之前,Windows 上的 Claude Code 會立即結束伺服器的程序樹,不會先關閉 stdin 或等待。150在 v2.1.296 之前,Windows 上的 Claude Code 會立即結束伺服器的程序樹,而不會先關閉 stdin 或等待。

151 151 

152### 選項 4:新增遠端 WebSocket 伺服器152### 選項 4:新增遠端 WebSocket 伺服器

153 153 

154WebSocket 伺服器保持持久雙向連接,適合遠端 MCP 伺服器主動向 Claude 推送事件。當您的伺服器只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。154WebSocket 伺服器會維持持久的雙向連線,適合會主動向 Claude 推送事件的遠端 MCP 伺服器。若您的伺服器只回應請求,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 兩者皆不支援。

155 155 

156在 `.mcp.json` 中或使用 `claude mcp add-json` 設定 WebSocket 伺服器:156請在 `.mcp.json` 中或使用 `claude mcp add-json` 設定 WebSocket 伺服器:

157 157 

158```bash theme={null}158```bash theme={null}

159claude mcp add-json events-server \159claude mcp add-json events-server \

160 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'160 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

161```161```

162 162 

163`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。身分驗證僅限標頭,因此在 `headers` 中傳遞靜態 token 或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 產生 token。`claude mcp add --transport` 旗標不接受 `ws`。163`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。身分驗證僅透過標頭進行,因此請在 `headers` 中傳入靜態 token,或在連線時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 產生 token。`claude mcp add --transport` 旗標不接受 `ws`。

164 164 

165### 從為另一個用戶端編寫的設定指示新增伺服器165### 從為其他用戶端撰寫的設定說明新增伺服器

166 166 

167MCP 伺服器不是 Claude Code 特有的,因此伺服器的設定指示可能是為 Claude Desktop、Cursor 或另一個 MCP 用戶端編寫的,並且不提供 `claude mcp add` 命令。若要新增伺服器,請在這些指示中尋找 URL、啟動命令或 JSON 區塊:167MCP 伺服器並非 Claude Code 專屬,因此伺服器的設定說明可能是為 Claude Desktop、Cursor 或其他 MCP 用戶端撰寫,且未提供 `claude mcp add` 命令。若仍要新增該伺服器,請在這些說明中尋找 URL、啟動命令或 JSON 區塊:

168 168 

169* **URL**(例如 `https://mcp.example.com/mcp`):伺服器是遠端的。169* **URL**,例如 `https://mcp.example.com/mcp`:伺服器位於遠端。

170* **啟動命令**(例如 `npx -y @example/mcp-server`):伺服器在您的機器上執行。170* **啟動命令**,例如 `npx -y @example/mcp-server`:伺服器在您的電腦上執行。

171* **`mcpServers` JSON 區塊**:為另一個用戶端的設定檔編寫的設定。171* **`mcpServers` JSON 區塊**:為其他用戶端的設定檔撰寫的設定。

172 172 

173每一個都是 [安裝 MCP 伺服器](#installing-mcp-servers)中四個選項之一接受的輸入。在下面找到您擁有的形狀,將其轉換為 Claude Code 接受的命令。除非您新增 `--scope project` 或 `--scope user`,否則每個命令都會寫入 [本機範圍](#local-scope)。173每一種都是[安裝 MCP 伺服器](#installing-mcp-servers)中四個選項所接受的輸入之一。請在下方找到您所擁有的形式,將其轉換為 Claude Code 接受的命令。除非您加上 `--scope project` 或 `--scope user`,否則每個命令都會寫入[本機範圍](#local-scope)。

174 174 

175#### 從 URL 新增伺服器175#### 從 URL 新增伺服器

176 176 

177URL 表示伺服器是遠端的。對於 `https://` 端點,使用 `--transport http` 新增它,或在指示說端點使用 SSE 時遵循 [選項 2](#option-2-add-a-remote-sse-server)。對於 `wss://` 端點,改為使用 [選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:177URL 表示伺服器位於遠端。對於 `https://` 端點,請使用 `--transport http` 新增;若說明指出端點使用 SSE,則依照[選項 2](#option-2-add-a-remote-sse-server) 操作。對於 `wss://` 端點,請改用[選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:

178 178 

179```bash theme={null}179```bash theme={null}

180claude mcp add --transport http example https://mcp.example.com/mcp180claude mcp add --transport http example https://mcp.example.com/mcp

181```181```

182 182 

183如果指示也提供 API 金鑰或 token 標頭,請使用 `--header` 傳遞它,如 [選項 1](#option-1-add-a-remote-http-server)所示。183若說明還提供了 API 金鑰或 token 標頭,請如[選項 1](#option-1-add-a-remote-http-server) 所示,使用 `--header` 傳入。

184 184 

185#### 從 `npx`、`uvx` 或二進位命令新增伺服器185#### 從 `npx`、`uvx` 或二進位檔命令新增伺服器

186 186 

187啟動命令表示伺服器作為本機 stdio 程序執行。將整個命令放在 `--` 之後,以便 Claude Code 將旗標(例如 `-y`)傳遞給啟動伺服器的命令,而不是將其讀取為自身的選項。使用 `--env` 傳遞指示要求的任何環境變數,在伺服器名稱之後和 `--` 之前:187啟動命令表示伺服器以本機 stdio 程序的形式執行。請將整個命令放在 `--` 之後,讓 Claude Code 將 `-y` 等旗標傳遞給啟動伺服器的命令,而不是將其讀取為自己的選項。請在伺服器名稱之後、`--` 之前,使用 `--env` 傳入說明要求的任何環境變數:

188 188 

189```bash theme={null}189```bash theme={null}

190claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server190claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server

191```191```

192 192 

193[選項 3](#option-3-add-a-local-stdio-server)完整涵蓋 `--` 分隔符。193[選項 3](#option-3-add-a-local-stdio-server) 完整說明了 `--` 分隔符號。

194 194 

195#### 從 `mcpServers` JSON 區塊新增伺服器195#### 從 `mcpServers` JSON 區塊新增伺服器

196 196 

197為另一個 MCP 用戶端(例如 Claude Desktop)編寫的 `mcpServers` 區塊使用 Claude Code 讀取的包裝器金鑰和項目形狀。將 `mcpServers` 內的物件傳遞給 `claude mcp add-json`,而不是包裝器。兩個項目需要先修復:197為其他 MCP 用戶端(例如 Claude Desktop)撰寫的 `mcpServers` 區塊,使用的是 Claude Code 可讀取的包裝鍵與項目形式。請將 `mcpServers` 內部的物件(而非包裝層)傳給 `claude mcp add-json`。有兩種項目需要先修正:

198 198 

199* **`url` 沒有 `type`**:新增 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"` 以符合端點。Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器,因此沒有 `type` 的 `url` 項目會失敗。199* **有 `url` 但沒有 `type`**:依端點加上 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"`。Claude Code 會將沒有 `type` 的項目視為 stdio 伺服器,因此沒有 `type` 的 `url` 項目會失敗。

200* **金鑰包含字母、數字、連字號和底線以外的字元**:選擇僅使用這些字元的伺服器名稱。否則金鑰是伺服器名稱。200* **鍵包含字母、數字、連字號和底線以外的字元**:請選擇只使用這些字元的伺服器名稱。否則,該鍵即為伺服器名稱。

201 201 

202例如,此區塊:202例如,這個區塊:

203 203 

204```json theme={null}204```json theme={null}

205{205{


212}212}

213```213```

214 214 

215變成此命令:215會變成這個命令:

216 216 

217```bash theme={null}217```bash theme={null}

218claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'218claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

219```219```

220 220 

221[從 JSON 設定新增 MCP 伺服器](#add-mcp-servers-from-json-configuration)涵蓋 `add-json` 的 shell 逃逸和 `--scope` 旗標。若要與您的團隊共享伺服器,請改為新增 `--scope project`,或在您的專案根目錄的 `.mcp.json` 下的 `mcpServers` 下新增項目並提交它。[專案範圍](#project-scope)涵蓋 Claude Code 如何載入和核准該檔案。221[從 JSON 設定新增 MCP 伺服器](#add-mcp-servers-from-json-configuration)說明了 shell 跳脫處理以及 `add-json` 的 `--scope` 旗標。若要改為與團隊共用該伺服器,請加上 `--scope project`,或將該項目新增至專案根目錄中 `.mcp.json` 的 `mcpServers` 下並提交。[專案範圍](#project-scope)說明了 Claude Code 如何載入及核准該檔案。

222 222 

223每個 `claude mcp add` 和 `claude mcp add-json` 命令在成功時列印 `Added ...` 行。若要檢查 Claude Code 是否已連接,請執行 `claude mcp get <name>`;[伺服器狀態](#server-status)涵蓋它顯示的狀態和 `.mcp.json` 伺服器的核准步驟。223每個 `claude mcp add` 和 `claude mcp add-json` 命令成功時都會印出一行 `Added ...`。若要確認 Claude Code 已連線,請執行 `claude mcp get <name>`;[伺服器狀態](#server-status)說明了它所顯示的狀態,以及 `.mcp.json` 伺服器的核准步驟。

224 224 

225### 管理您的伺服器225### 管理您的伺服器

226 226 

227設定後,您可以使用這些命令管理您的 MCP 伺服器:227設定完成後,您可以使用以下命令管理 MCP 伺服器:

228 228 

229```bash theme={null}229```bash theme={null}

230# 列出所有已設定的伺服器230# List all configured servers

231claude mcp list231claude mcp list

232 232 

233# 取得特定伺服器的詳細資訊233# Get details for a specific server

234claude mcp get notion234claude mcp get notion

235 235 

236# 移除伺服器236# Remove a server

237claude mcp remove notion237claude mcp remove notion

238 238 

239# (在 Claude Code 內)檢查伺服器狀態239# (within Claude Code) Check server status

240/mcp240/mcp

241```241```

242 242 

243移除遠端伺服器時,Claude Code 也會刪除為該伺服器儲存的 OAuth token 和用戶端註冊。243移除遠端伺服器時,Claude Code 也會刪除它為該伺服器儲存的 OAuth token 和用戶端註冊資訊。

244 244 

245#### 伺服器狀態245#### 伺服器狀態

246 246 

247`claude mcp add` 透過列印 `Added ...` 行確認成功新增,這表示設定已寫入。如果命令改為列印 `was not saved` 訊息,請參閱 [MCP 伺服器未儲存或移除](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-was-not-saved-or-removed);對於 `may not have been saved` 訊息,請參閱 [MCP 伺服器可能未儲存或移除](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-may-not-have-been-saved-or-removed)。247`claude mcp add` 會印出一行 `Added ...` 以確認新增成功,這表示設定已寫入。若命令改為印出 `was not saved` 訊息,請參閱 [MCP server was not saved or removed](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-was-not-saved-or-removed);若為 `may not have been saved` 訊息,請參閱 [MCP server may not have been saved or removed](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-may-not-have-been-saved-or-removed)。

248 248 

249`claude mcp list` 在它列出的每個伺服器旁邊顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連接到該伺服器,而不是列表命令失敗。249`claude mcp list` 會在列出的每個伺服器旁顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連線至該伺服器,而不是 list 命令失敗。

250 250 

251此列表中的狀態報告設定決定而不是連接嘗試,因此 Claude Code 在不連接到伺服器的情況下列印它們:251以下清單中的狀態回報的是設定上的決定,而非連線嘗試,因此 Claude Code 會在不連線至伺服器的情況下印出它們:

252 252 

253* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json`、您尚未核准的專案範圍伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。請以互動方式執行 `claude` 來檢閱並核准它。253* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json`、您尚未核准的專案範圍伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。請以互動方式執行 `claude` 來檢閱並核准它。

254* `✘ Rejected (see disabledMcpjsonServers in settings)`:由 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` 伺服器。Claude Code 只在 `claude mcp get <name>` 中顯示它。254* `✘ Rejected (see disabledMcpjsonServers in settings)`:被 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` 伺服器。Claude Code 只會在 `claude mcp get <name>` 中顯示它。

255* `⊘ Disabled for this project (re-enable via /mcp)`:專案的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 列表命名的伺服器。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。從 `/mcp` 面板重新開啟伺服器。255* `⊘ Disabled for this project (re-enable via /mcp)`:專案的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 清單中列出的伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。請從 `/mcp` 面板重新啟用該伺服器。

256 256 

257#### 專案伺服器核准和工作區信任257#### 專案伺服器核准與工作區信任

258 258 

259`claude mcp list` 和 `claude mcp get` 只從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准,直到您透過在工作區中執行 `claude` 並接受工作區信任對話來信任工作區。複製的儲存庫無法核准自身的伺服器:提交到專案的 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](https://code.claude.com/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在不受信任的資料夾中被忽略,伺服器保持在 `⏸ Pending approval` 而不是被連接和健康檢查。259在您於工作區中執行 `claude` 並接受工作區信任對話框以信任該工作區之前,`claude mcp list` 和 `claude mcp get` 只會從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准。複製下來的儲存庫無法核准自己的伺服器:在未受信任的資料夾中,提交至專案 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](https://code.claude.com/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 會被忽略,伺服器會停留在 `⏸ Pending approval`,而不會被連線並進行健康檢查。

260 260 

261這些來源的核准在不受信任的資料夾中仍然適用:261來自以下來源的核准在未受信任的資料夾中仍然適用:

262 262 

263* 您的使用者 `~/.claude/settings.json`263* 您的使用者 `~/.claude/settings.json`

264* 受管設定264* 受管設定

265* 使用 `--settings` 傳遞的設定265* 透過 `--settings` 傳入的設定

266 266 

267Claude Code 也應用來自未追蹤 `.claude/settings.local.json` 的核准,但它執行 git 來檢查檔案是否被追蹤,並且只在 [受信任的資料夾](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任的資料夾中,Claude Code 會等待信任對話,然後才應用檔案的核准,除非資料夾是您自己的設定主目錄:您的家目錄,或其 `.claude` 您已設定為 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars) 的目錄。在 v2.1.207 之前,Claude Code 即使在您從未信任的資料夾中也應用來自未追蹤 `.claude/settings.local.json` 的核准。267Claude Code 也會套用來自未追蹤的 `.claude/settings.local.json` 的核准,但它會執行 git 來檢查該檔案是否被追蹤,而且只會在[受信任的資料夾](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任過的資料夾中,Claude Code 會等待信任對話框後才套用該檔案的核准,除非該資料夾是您自己的設定主目錄:也就是您的家目錄,或其 `.claude` 已被您設為 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars) 的目錄。在 v2.1.207 之前,即使在您從未信任過的資料夾中,Claude Code 也會套用來自未追蹤的 `.claude/settings.local.json` 的核准。

268 268 

269任何設定檔中的 `disabledMcpjsonServers` 項目仍然拒絕伺服器。269任何設定檔中的 `disabledMcpjsonServers` 項目仍會拒絕該伺服器。

270 270 

271#### 伺服器狀態詳細資訊271#### 伺服器狀態詳細資訊

272 272 

273在 `/mcp` 中(包括伺服器的選單)和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中,您之前使用過的遠端 HTTP 或 SSE 伺服器可以顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 從發現快取(在上一個工作階段中儲存)載入伺服器的工具列表,而不是在啟動時連接,Claude Code 在 Claude 首次呼叫伺服器的工具之一時連接伺服器。工具從您的第一條訊息開始可用,因此您無需執行任何操作。發現快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。273在 `/mcp`(包括其中的伺服器選單)以及 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理器中,您先前使用過的遠端 HTTP 或 SSE 伺服器可能會顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 是從先前工作階段儲存的探索快取中載入伺服器的工具清單,而非在啟動時連線,並會在 Claude 第一次呼叫該伺服器的某個工具時連線該伺服器。這些工具從您的第一則訊息開始就可使用,因此您無需執行任何操作。探索快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。

274 274 

275發現快取預設關閉,除非逐步推出已為您的帳戶啟用它。設定 [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/zh-TW/env-vars) 以開啟它,或設定 `0` 以在推出啟用它時保持關閉。在 v2.1.238 之前,快取預設開啟。275除非逐步推出已為您的帳戶啟用,否則探索快取預設為關閉。設定 [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/zh-TW/env-vars) 可將其開啟,或設為 `0` 以在推出已啟用時仍保持關閉。在 v2.1.238 之前,快取預設為開啟。

276 276 

277當您從 `/mcp` 中的伺服器選單選擇 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該伺服器的快取項目。**Reconnect** 在已連接或失敗的伺服器上也會捨棄它;在 `cached` 伺服器上,**Reconnect** 現在連接伺服器並保留項目。Claude Code 在捨棄項目後下次連接到伺服器時,它會從伺服器而不是從快取中擷取工具列表。277當您從 `/mcp` 中伺服器的選單選取 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該伺服器的快取項目。對已連線或失敗的伺服器,**Reconnect** 也會捨棄它;對 `cached` 伺服器,**Reconnect** 會立即連線伺服器並保留該項目。捨棄項目後,Claude Code 下次連線至該伺服器時,會從伺服器而非快取擷取工具清單。

278 278 

279當伺服器的狀態為 `✘ Failed to connect` 時,`claude mcp list` 將失敗詳細資訊附加到該狀態行,`claude mcp get <name>` 在 `Issue:` 行上顯示它:HTTP 狀態或錯誤代碼,加上伺服器傳回的任何錯誤文字。伺服器在 `/mcp` 中的詳細檢視在其 `Issue:` 列中包含相同的伺服器報告文字。Claude Code 從此詳細資訊中編輯類似憑證的文字,並且永遠不包括擴展的伺服器 URL,它可能攜帶機密。Claude Code 不會將詳細資訊附加到 `✘ Connection error` 狀態,因為它會列印的異常文字可以嵌入該 URL。在 v2.1.219 之前,兩個命令都只顯示裸露的失敗狀態,沒有狀態代碼或伺服器的錯誤文字。279當伺服器的狀態為 `✘ Failed to connect` 時,`claude mcp list` 會在該狀態行後附加失敗詳細資訊,而 `claude mcp get <name>` 會在 `Issue:` 行中顯示它:HTTP 狀態或錯誤代碼,以及伺服器傳回的任何錯誤文字。`/mcp` 中伺服器的詳細資訊檢視也會在其 `Issue:` 列中包含相同的伺服器回報文字。Claude Code 會從這些詳細資訊中遮蔽類似憑證的文字,且絕不包含展開後的伺服器 URL,因為其中可能帶有機密資訊。Claude Code 不會在 `✘ Connection error` 狀態後附加詳細資訊,因為它在該處會印出的例外文字可能內嵌該 URL。在 v2.1.219 之前,這兩個命令只顯示單純的失敗狀態,不含狀態碼或伺服器的錯誤文字。

280 280 

281當您從 `/mcp` 完成身分驗證且連接仍然因 HTTP 狀態或傳輸錯誤代碼而失敗時,Claude Code 會在嘗試後列印的訊息中新增該代碼和伺服器 URL 的來源。來源是方案和主機,加上 URL 命名的連接埠(例如 `https://mcp.example.com`)。281當您從 `/mcp` 完成身分驗證,但連線仍因 HTTP 狀態或傳輸錯誤代碼而失敗時,Claude Code 會在嘗試後印出的訊息中加入該代碼以及伺服器 URL 的來源。來源是指通訊協定與主機,若 URL 有指定連接埠則加上連接埠,例如 `https://mcp.example.com`。

282 282 

283* 路徑和查詢永遠不會出現在該訊息中。283* 該訊息中絕不會出現路徑與查詢字串。

284* 對於本機、專案或使用者 [範圍](#mcp-installation-scopes)中的伺服器或受管 MCP 設定,來源顯示該設定中寫入的主機,因此主機中的 `${VAR}` 參考在訊息中不會展開。284* 對於本機、專案或使用者[範圍](#mcp-installation-scopes)中或受管 MCP 設定中的伺服器,來源會顯示該設定中所寫的主機,因此主機中的 `${VAR}` 參照不會在訊息中展開。

285* 對於沒有狀態或錯誤代碼的失敗,Claude Code 顯示錯誤文字而不顯示來源。285* 對於沒有狀態或錯誤代碼的失敗,Claude Code 會顯示錯誤文字,但不含來源。

286 286 

287設定為空 `url` 的遠端伺服器在 `/mcp`、`claude mcp list` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中顯示為 `not configured`,Claude Code 不會嘗試連接到它。外掛可以包含此類佔位符項目,用於您稍後設定的連接器,因此 Claude Code 不會將其報告為錯誤或設定問題。伺服器在 `/mcp` 中的詳細檢視讀取 `No URL configured for this server`;設定項目的 `url` 以連接它。287設定中 `url` 為空的遠端伺服器,在 `/mcp`、`claude mcp list` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理器中會顯示為 `not configured`,且 Claude Code 不會嘗試連線至它。外掛可以為您稍後設定的連接器加入這類預留項目,因此 Claude Code 不會將其回報為錯誤或設定問題。`/mcp` 中該伺服器的詳細資訊檢視會顯示 `No URL configured for this server`;請設定該項目的 `url` 以進行連線。

288 288 

289#### 設定警告289#### 設定警告

290 290 

291Claude Code 警告下面的設定問題。每個項目說明 Claude Code 檢查的內容以及如何清除警告:291Claude Code 會針對以下設定問題發出警告。每個項目都說明了 Claude Code 檢查的內容以及如何清除警告:

292 292 

293* **隱藏空白**:當 MCP 設定值攜帶隱藏的前導或尾隨空白時,Claude Code 會發出警告,這通常來自貼上帶有尾隨換行符的 token。Claude Code 檢查 `command`、`url`、每個 `args` 項目以及 `env` 和 `headers` 下的值和金鑰名稱。Claude Code 在 `claude mcp list` 輸出和 `/mcp` 中顯示警告,命名受影響的欄位而不回顯其值,例如 `Leading or trailing whitespace in: headers.Authorization`。Claude Code 不會修剪空白並完全按照寫入的方式使用值,因此編輯設定以移除它。293* **隱藏的空白字元**:當 MCP 設定值帶有隱藏的前導或尾隨空白字元時,Claude Code 會發出警告,這通常來自貼上帶有尾隨換行字元的 token。Claude Code 會檢查 `command`、`url`、每個 `args` 項目,以及 `env` 和 `headers` 下的值與鍵名稱。Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中顯示警告,列出受影響的欄位但不顯示其值,例如 `Leading or trailing whitespace in: headers.Authorization`。Claude Code 不會修剪空白字元,而是完全依照所寫的內容使用這些值,因此請編輯設定將其移除。

294* **在多個範圍中使用相同名稱**:如果您在多個 [範圍](#mcp-installation-scopes)中定義相同的伺服器名稱,但端點不同,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告衝突。Claude Code 按端點儲存 OAuth 登入,因此當您驗證在一個專案中載入的定義時,您仍然需要在不同定義載入的專案中單獨登入。保留您想要的端點並使用 `claude mcp remove <name> --scope <scope>` 移除其他端點。在警告中,Claude Code 引用每個範圍的端點,如您的設定中所寫,帶有 [`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)未展開,因此它永遠不會顯示已解析的值,例如 API 金鑰。294* **同一名稱存在於多個範圍**:若您在多個[範圍](#mcp-installation-scopes)中以不同端點定義了相同的伺服器名稱,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告此衝突。Claude Code 會依端點儲存 OAuth 登入,因此當您為在某個專案中載入的定義進行身分驗證後,在載入不同定義的專案中仍需另外登入。請保留您要的端點,並使用 `claude mcp remove <name> --scope <scope>` 移除其他端點。在警告中,Claude Code 會引用您設定中所寫的每個範圍的端點,其中的 [`${VAR}` 參照](#environment-variable-expansion-in-mcp-json)不會展開,因此絕不會顯示 API 金鑰等已解析的值。

295* **保留名稱**:Claude Code 保留其內建伺服器的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。如果您的設定定義具有保留名稱的伺服器,Claude Code 會在載入時跳過它並顯示警告,要求您重新命名它。`claude mcp add` 拒絕帶有錯誤的保留名稱。`Claude Preview` 和 `Claude Browser` 都命名 [Claude Code 桌面應用程式的預覽窗格](https://code.claude.com/docs/zh-TW/desktop.md#preview-your-app)使用的內建伺服器。295* **保留名稱**:Claude Code 保留了其內建伺服器的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。若您的設定定義了使用保留名稱的伺服器,Claude Code 會在載入時略過它,並顯示警告要求您重新命名。`claude mcp add` 會以錯誤拒絕保留名稱。`Claude Preview` 和 `Claude Browser` 都是指 [Claude Code 桌面應用程式預覽窗格](https://code.claude.com/docs/zh-TW/desktop.md#preview-your-app)所使用的內建伺服器。

296* **遺漏環境變數**:如果伺服器設定中的 [`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)命名未設定且沒有 `:-default` 的變數,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告,命名變數,並仍然載入伺服器,`${VAR}` 文字未展開。設定變數或新增 `${VAR:-default}` 備援。在遠端伺服器的 `url` 和 `headers` 中,某些憑證變數 [讀取為空](#credential-variables-that-read-as-empty),沒有警告。296* **缺少環境變數**:若伺服器設定中的 [`${VAR}` 參照](#environment-variable-expansion-in-mcp-json)指名了一個未設定且沒有 `:-default` 的變數,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中發出警告並指出該變數,並仍以未展開的 `${VAR}` 文字載入伺服器。請設定該變數或加上 `${VAR:-default}` 備援值。在遠端伺服器的 `url` 和 `headers` 中,某些憑證變數則會[讀取為空值](#credential-variables-that-read-as-empty),且不會發出警告。

297 297 

298#### 工具可用性298#### 工具可用性

299 299 

300`/mcp` 面板在每個已連接伺服器旁邊顯示工具計數,並標記宣傳工具功能但不公開工具的伺服器。300`/mcp` 面板會在每個已連線伺服器旁顯示工具數量,並標示出宣告具備工具能力但未公開任何工具的伺服器。

301 301 

302如果您的請求需要仍在背景連接的伺服器中的工具,Claude 會在繼續之前等待該伺服器。等待的方式取決於您的設定:302若您的請求需要來自仍在背景連線中的伺服器的工具,Claude 會等待該伺服器後再繼續。等待的方式取決於您的設定:

303 303 

304* **使用 [工具搜尋](#scale-with-mcp-tool-search)(預設)**:等待發生在 `ToolSearch` 呼叫內。304* **使用[工具搜尋](#scale-with-mcp-tool-search)(預設)**:等待發生在 `ToolSearch` 呼叫內。

305* **沒有工具搜尋**:Claude 改為使用 `WaitForMcpServers` 工具。沒有工具搜尋的設定包括 `ENABLE_TOOL_SEARCH=false`,以及 Google Cloud 的 Agent Platform 上早於 Claude Opus 4.5、Claude Sonnet 4.5 和 Claude Haiku 4.5 的模型。對於 `ANTHROPIC_BASE_URL` 閘道,請參閱 [透過 LLM 閘道進行工具搜尋](#tool-search-through-a-gateway)。305* **不使用工具搜尋**:Claude 改為使用 `WaitForMcpServers` 工具。不使用工具搜尋的設定包括 `ENABLE_TOOL_SEARCH=false`,以及在 Google Cloud 的 Agent Platform 上使用早於 Claude Opus 4.5、Claude Sonnet 4.5 和 Claude Haiku 4.5 的模型。關於 `ANTHROPIC_BASE_URL` 閘道,請參閱[透過 LLM 閘道使用工具搜尋](#tool-search-through-a-gateway)。

306* **在 Microsoft Foundry [部署託管在 Azure 上](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**:Claude 開始於工具搜尋路徑而不是 `WaitForMcpServers`,因為 Claude Code 只從 API 發現部署的伺服器端拒絕。Claude Code 將該部署切換到 [前期載入](#scale-with-mcp-tool-search)後,來自完成連接的伺服器的工具在 Claude 的下一個請求上變得可用。306* **在 Microsoft Foundry [託管於 Azure 的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上**:Claude 會從工具搜尋路徑開始,而非使用 `WaitForMcpServers`,因為 Claude Code 只能從 API 得知該部署在伺服器端的拒絕。在 Claude Code 將該部署切換為[預先載入](#scale-with-mcp-tool-search)後,來自完成連線之伺服器的工具會在 Claude 的下一個請求中變為可用。

307 307 

308啟用工具搜尋後,當伺服器在 Claude 工作時完成連接時,Claude Code 在同一回合中的下一個請求上將伺服器的工具名稱列出給 Claude。Claude 然後可以搜尋並呼叫這些工具,而無需等待您的下一條訊息。308啟用工具搜尋時,若伺服器在 Claude 工作期間完成連線,Claude Code 會在同一回合中 Claude 的下一個請求裡,向 Claude 列出該伺服器的工具名稱。Claude 隨後即可搜尋並呼叫這些工具,而無需等待您的下一則訊息。

309 309 

310恢復工作階段後,Claude 可以在工具的 MCP 伺服器仍在連接時呼叫已儲存對話中的工具。當伺服器正在進行首次連接嘗試時,Claude Code 會保留該呼叫最多 10 秒,並在工具可用後執行它。如果伺服器未及時連接,或它已在 [失敗嘗試後重試](#automatic-reconnection),該呼叫會以 `No such tool available` [工具錯誤](https://code.claude.com/docs/zh-TW/errors.md#no-such-tool-available)失敗。310在您恢復工作階段後,Claude 可能會在某工具的 MCP 伺服器仍在連線時,呼叫已儲存對話中的該工具。當伺服器正在進行第一次連線嘗試時,Claude Code 會將呼叫保留最多 10 秒,並在工具可用時執行它。若伺服器未及時連線,或已在[失敗嘗試後重試中](#automatic-reconnection),該呼叫會以 `No such tool available` [工具錯誤](https://code.claude.com/docs/zh-TW/errors.md#no-such-tool-available)失敗。

311 311 

312### 在不移除的情況下停用伺服器312### 停用伺服器而不移除它

313 313 

314在 `/mcp` 面板中切換伺服器關閉,以停止 Claude Code 連接到它,而不會失去其設定。Claude Code 仍然在 `/mcp` 中列出伺服器,標記為已停用。314在 `/mcp` 面板中關閉伺服器,可阻止 Claude Code 連線至該伺服器,而不會遺失其設定。Claude Code 仍會在 `/mcp` 中列出該伺服器,並標示為已停用。

315 315 

316當您切換伺服器時,Claude Code 在 `~/.claude.json` 中按專案記錄您的選擇,在兩個涵蓋不相交伺服器集合的列表之一中:316當您切換伺服器時,Claude Code 會依專案將您的選擇記錄在 `~/.claude.json` 中的兩個清單之一,這兩個清單涵蓋互不重疊的伺服器集合:

317 317 

318* `disabledMcpServers`:使用者設定伺服器、外掛伺服器、您的組織 [透過受管設定提供](https://code.claude.com/docs/zh-TW/managed-mcp.md#provide-servers-through-managed-settings)的伺服器、Claude Code [自身擷取](#how-connectors-reach-claude-code)的 claude.ai 連接器以及預設開啟的內建伺服器的選擇退出列表。Claude Code 不連接您在此列出的伺服器。當您使用 [停用 claude.ai 連接器](#disable-claude-ai-connectors)中描述的按專案 `/mcp` 切換停用 claude.ai 連接器時,Claude Code 在此列表下使用其顯示名稱寫入它,例如 `claude.ai Slack`。318* `disabledMcpServers`:選擇退出清單,適用於使用者設定的伺服器、外掛伺服器、您的組織[透過受管設定提供的伺服器](https://code.claude.com/docs/zh-TW/managed-mcp.md#provide-servers-through-managed-settings)、Claude Code [自行擷取](#how-connectors-reach-claude-code)的 claude.ai 連接器,以及預設開啟的內建伺服器。Claude Code 不會連線至您列在此處的伺服器。當您使用[停用 claude.ai 連接器](#disable-claude-ai-connectors)中所述的各專案 `/mcp` 切換開關停用 claude.ai 連接器時,Claude Code 會以其顯示名稱將其寫入此清單,例如 `claude.ai Slack`。

319* `enabledMcpServers`:預設關閉的內建伺服器(例如 `computer-use`)的選擇加入列表。Claude Code 只在您在此列出時連接預設關閉的伺服器。319* `enabledMcpServers`:選擇加入清單,適用於預設關閉的內建伺服器,例如 `computer-use`。Claude Code 只有在您將預設關閉的伺服器列在此處時才會連線至它。

320 320 

321Claude Code 為每個伺服器查詢恰好兩個列表之一,因此兩個列表都不會覆寫另一個。如果您將常規伺服器新增到 `enabledMcpServers`,或將預設關閉的內建伺服器新增到 `disabledMcpServers`,Claude Code 會忽略該項目。321Claude Code 對每個伺服器只會查閱兩個清單中的其中一個,因此任一清單都不會覆寫另一個。若您將一般伺服器加入 `enabledMcpServers`,或將預設關閉的內建伺服器加入 `disabledMcpServers`,Claude Code 會忽略該項目。

322 322 

323`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 和 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,它們控制專案的 `.mcp.json` 檔案中定義的伺服器的核准。323`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 及 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,後兩者控制的是專案 `.mcp.json` 檔案中所定義伺服器的核准。

324 324 

325### MCP 用戶端執行時325### MCP 用戶端執行環境

326 326 

327Claude Code 透過兩個用戶端執行時之一連接到 MCP 伺服器。v1 執行時建立在 MCP TypeScript SDK 1.x 上。v2 執行時是 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 上的相同程式碼,它新增 MCP 協議修訂 2026-07-28。此頁面的其餘部分適用於兩個執行時,除非某個部分命名 v2 執行時。327Claude Code 透過兩種用戶端執行環境之一連線至 MCP 伺服器。v1 執行環境建置於 MCP TypeScript SDK 1.x 之上。v2 執行環境是建置於 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 之上的相同程式碼,並加入了 MCP 協定修訂版 2026-07-28。本頁其餘內容同時適用於兩種執行環境,除非某節指明為 v2 執行環境。

328 328 

329Claude Code 每次啟動時選擇執行時,並保持到您退出。在 [擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching)的工作階段中,它在 Claude Code v2.1.232 或更新版本上使用 v2 執行時。329Claude Code 每次啟動時都會選擇一種執行環境,並持續使用直到您結束。在會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching)的工作階段中,Claude Code v2.1.232 或更新版本會使用 v2 執行環境。

330 330 

331在不擷取功能旗標的工作階段中,Claude Code 在 Claude Code v2.1.274 或更新版本上預設使用 v2 執行時:331在不擷取功能旗標的工作階段中,Claude Code v2.1.274 或更新版本預設使用 v2 執行環境:

332 332 

333* Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段,除非嵌入 Claude Code 的主機平台設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars)333* 在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段,除非內嵌 Claude Code 的主機平台設定了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars)

334* 透過 [Claude 應用程式閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)登入的工作階段334* 透過 [Claude apps 閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)登入的工作階段

335* 您關閉遙測或功能旗標擷取的工作階段,例如使用 `DISABLE_TELEMETRY`335* 您關閉遙測或功能旗標擷取的工作階段,例如使用 `DISABLE_TELEMETRY`

336 336 

337在 v2 上,Claude Code 也:337在 v2 上,Claude Code 還會:

338 338 

339* 詢問 HTTP、stdio 和 claude.ai 連接器伺服器是否支援較新的修訂,並與支援的伺服器一起使用它。這包括雲端和 [Remote Control](https://code.claude.com/docs/zh-TW/remote-control.md) 工作階段的連接器。Claude Code 連接到每個其他伺服器,如 v1 所做的那樣。339* 詢問 HTTP、stdio 和 claude.ai 連接器伺服器是否支援較新的修訂版,並與支援的伺服器使用該修訂版。這包括雲端和 [Remote Control](https://code.claude.com/docs/zh-TW/remote-control.md) 工作階段的連接器。Claude Code 會以與 v1 相同的方式連線至其他所有伺服器。

340* 在 [它保持開啟的流](#notification-streams-on-the-v2-runtime)上從較新修訂上的伺服器接收 `list_changed` 通知。340* 透過[保持開啟的串流](#notification-streams-on-the-v2-runtime),從使用較新修訂版的伺服器接收 `list_changed` 通知。

341* 不註冊在較新修訂上連接的 [頻道](#push-messages-with-channels)伺服器,因為該修訂無法攜帶頻道訊息。341* 不會註冊以較新修訂版連線的[頻道](#push-messages-with-channels)伺服器,因為該修訂版無法承載頻道訊息。

342* 失敗 [MCP OAuth 登入](#authenticate-with-remote-mcp-servers),其授權回應命名意外發行者。342* 當[MCP OAuth 登入](#authenticate-with-remote-mcp-servers)的授權回應指名了非預期的發行者時,使登入失敗。

343* 僅將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 憑證傳送到透過 HTTPS 或在 `localhost`、`127.0.0.1` 或 `::1` 上提供的 token 端點。對於 token 端點為其他地方(例如本機網路上的裝置)的純 `http://` 的伺服器,登入失敗。請參閱 [拒絕將憑證傳送到非 https token 端點](https://code.claude.com/docs/zh-TW/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)。343* 只將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 憑證傳送至透過 HTTPS 提供服務,或位於 `localhost`、`127.0.0.1` 或 `::1` 的 token 端點。對於 token 端點在其他任何位置使用純 `http://` 的伺服器(例如您本機網路上的裝置),登入會失敗。請參閱 [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/zh-TW/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)。

344 344 

345Anthropic 可以使用 Claude Code 擷取的功能旗標將特定伺服器保持在較早的協議上,或關閉該流。345Anthropic 可以透過 Claude Code 擷取的功能旗標,讓特定伺服器維持使用較早的協定,或不使用該串流。

346 346 

347若要自行選擇執行時,請設定 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/zh-TW/env-vars) 為 `v1` 或 `v2`。若要決定 Claude Code 是否詢問,請設定 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 為 `auto` 或 `legacy`。347若要自行選擇執行環境,請將 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `v1` 或 `v2`。若要決定 Claude Code 是否詢問,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `auto` 或 `legacy`。

348 348 

349### 動態工具更新349### 動態工具更新

350 350 

351MCP 伺服器可以在連接期間變更其提供的工具、提示詞或資源,並傳送 `list_changed` 通知。當收到通知時:351MCP 伺服器可以在連線期間變更其提供的工具、提示詞或資源,並傳送 `list_changed` 通知。收到通知時:

352 352 

353* **在互動式終端機工作階段中**,Claude Code 會從該伺服器擷取更新後的列表,因此您無需重新連接它。353* **在互動式終端機工作階段中**,Claude Code 會從該伺服器擷取更新後的清單,因此您無需重新連線。

354* **在使用 `-p` 旗標的 [非互動模式](https://code.claude.com/docs/zh-TW/headless.md)中以及在 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 中**,Claude Code 在收到這些通知時只重新整理工具列表。354* **在使用 `-p` 旗標的[非互動模式](https://code.claude.com/docs/zh-TW/headless.md)及 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 中**,Claude Code 收到這些通知時只會重新整理工具清單。

355 355 

356如果重新整理請求失敗,Claude Code 會保留伺服器之前發現的工具、提示詞和資源,直到稍後的重新整理成功。356若重新整理請求失敗,Claude Code 會保留該伺服器先前探索到的工具、提示詞和資源,直到之後的重新整理成功為止。

357 357 

358#### v2 執行時上的通知流358#### v2 執行環境上的通知串流

359 359 

360在 [v2 執行時](#mcp-client-runtimes)上,Claude Code 在它保持開啟的流上從較新協議修訂上的伺服器接收 `list_changed` 通知。當流關閉時,Claude Code 會重新開啟它,有兩個限制:360在 [v2 執行環境](#mcp-client-runtimes)上,Claude Code 會透過保持開啟的串流,從使用較新協定修訂版的伺服器接收 `list_changed` 通知。串流關閉時,Claude Code 會重新開啟它,但有兩項限制:

361 361 

362* **流在 10 秒內再次關閉**:Claude Code 最多重新開啟三次,然後停止該連接。362* **串流在 10 秒內再次關閉**:Claude Code 最多重新開啟三次,之後對該連線停止重新開啟。

363* **流保持開啟超過 10 秒,然後關閉**(如流到無伺服器主機通常所做的那樣):在一小時內五次重新開啟後,Claude Code 在下一次之前等待約六小時。363* **串流保持開啟超過 10 秒後才關閉**(連至無伺服器主機的串流通常如此):在一小時內重新開啟五次後,Claude Code 會等待約六小時才進行下一次。

364 364 

365直到流重新開啟,您保留伺服器的最後擷取工具、提示詞和資源。若要更快地取得其變更,請從 `/mcp` 重新連接伺服器。365在串流重新開啟之前,您會保留該伺服器最後擷取的工具、提示詞和資源。若要更快取得其變更,請從 `/mcp` 重新連線該伺服器。

366 366 

367### 自動重新連接367### 自動重新連線

368 368 

369Claude Code 重新連接在工作階段中途掉線的遠端伺服器,並在暫時性錯誤後重試 HTTP 或 SSE 伺服器的首次連接。對於 stdio 伺服器,請參閱 [退出或無法啟動的 Stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)。369Claude Code 會重新連線在工作階段中途斷線的遠端伺服器,並在發生暫時性錯誤後重試 HTTP 或 SSE 伺服器的第一次連線。關於 stdio 伺服器,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)。

370 370 

371#### 遠端伺服器的工作階段中途掉線371#### 遠端伺服器在工作階段中途斷線

372 372 

373Claude Code 首先會使用指數退避嘗試重新連接掉線的遠端伺服器,最多五次,從一秒延遲開始,每次加倍:373Claude Code 會先以指數退避嘗試重新連線斷線的遠端伺服器最多五次,從一秒延遲開始,每次加倍:

374 374 

375* **在互動式工作階段中**:`/mcp` 在 Claude Code 重新連接時將伺服器顯示為待處理。在五次失敗嘗試後,Claude Code 將伺服器標記為失敗,或在伺服器需要再次授權時標記為需要身分驗證。當它將伺服器標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。375* **在互動式工作階段中**:Claude Code 重新連線時,`/mcp` 會將該伺服器顯示為擱置中。五次嘗試都失敗後,Claude Code 會將該伺服器標示為失敗,或在伺服器需要重新授權時標示為需要身分驗證。標示為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。

376* **在 [`claude -p`](https://code.claude.com/docs/zh-TW/headless) 執行和 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段中**:Claude Code 進行相同的五次嘗試,沒有 `/mcp` 面板顯示這些嘗試。如果五次都失敗,執行會在沒有該伺服器工具的情況下繼續:376* **在 [`claude -p`](https://code.claude.com/docs/zh-TW/headless) 執行和 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段中**:Claude Code 會進行相同的五次嘗試,但沒有 `/mcp` 面板可顯示。若五次都失敗,執行會在沒有該伺服器工具的情況下繼續:

377 * **在暫時性錯誤(例如 5xx 回應或逾時)之後**:Claude Code 會在背景中持續重試 HTTP 或 SSE 伺服器。重試最多持續約半小時,當某次重試連接成功時,伺服器的工具會再次可用。在此之前,Agent SDK 工作階段會回報 [狀態](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) `failed`,您的程式碼可以 [重新連接伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。若要在 `claude -p` 中重新連接,請重新開始執行。377 * **在暫時性錯誤之後,例如 5xx 回應或逾時**:Claude Code 會在背景持續重試 HTTP 或 SSE 伺服器。重試最多持續約半小時,當其中一次連線成功時,該伺服器的工具會再次變為可用。在此之前,Agent SDK 工作階段會回報[狀態](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) `failed`,而您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。若要在 `claude -p` 中重新連線,請重新開始執行。

378 * **當伺服器 [需要您重新登入](#authenticate-with-remote-mcp-servers)時**:Claude Code 會停止重試,Agent SDK 工作階段會將伺服器的狀態回報為 `needs-auth`。在您的 shell 中使用 [`claude mcp login <name>`](#authenticate-from-the-command-line) 登入。然後重新開始執行,或在 Agent SDK 工作階段中改為 [重新連接伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。378 * **當伺服器[需要您重新登入](#authenticate-with-remote-mcp-servers)時**:Claude Code 會停止重試,Agent SDK 工作階段會將該伺服器的狀態回報為 `needs-auth`。請在您的 shell 中使用 [`claude mcp login <name>`](#authenticate-from-the-command-line) 登入。然後重新開始執行,或在 Agent SDK 工作階段中改為[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。

379 379 

380#### 失敗的首次連接380#### 第一次連線失敗

381 381 

382當 HTTP 或 SSE 伺服器的首次連接因暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)失敗時,Claude Code 最多重試三次。如果連接仍然失敗,Claude Code 將伺服器標記為失敗。382當 HTTP 或 SSE 伺服器的第一次連線因暫時性錯誤(例如 5xx 回應、連線被拒或逾時)而失敗時,Claude Code 最多會重試三次。若連線仍然失敗,Claude Code 會將該伺服器標示為失敗。

383 383 

384這些重試在下列情況下不適用:384這些重試在以下情況不適用:

385 385 

386* stdio 伺服器的首次連接。若要再次嘗試,請參閱 [退出或無法啟動的 Stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)386* stdio 伺服器的第一次連線。若要再試一次,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)

387* WebSocket 伺服器的首次連接387* WebSocket 伺服器的第一次連線。若要在互動式終端機工作階段中再試一次,請從 `/mcp` 中該伺服器的選單選取 **Reconnect**

388* 身分驗證或找不到錯誤,因為它需要設定變更才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是伺服器唯一的 `Authorization` 標頭來源時,Claude Code 仍然重試身分驗證錯誤,因為它在每次嘗試時重新執行助手並可以取得新憑證388* 身分驗證或找不到的錯誤,因為這需要變更設定才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是伺服器 `Authorization` 標頭的唯一來源時,Claude Code 仍會重試身分驗證錯誤,因為它在每次嘗試時都會重新執行該 helper,並可能取得新的憑證

389 389 

390#### 退出或無法啟動的 Stdio 伺服器390#### 結束或無法啟動的 stdio 伺服器

391 391 

392若要再次啟動 stdio 伺服器,請閱讀與其發生情況相符的欄。依您執行 Claude Code 的方式找到您的列:互動式工作階段、`claude -p` 執行或 Agent SDK 工作階段。392若要重新啟動 stdio 伺服器,請閱讀符合其發生情況的欄位。請依您執行 Claude Code 的方式找到對應的列:互動式工作階段、`claude -p` 執行或 Agent SDK 工作階段。

393 393 

394| 您執行 Claude Code 的方式 | 伺服器的程序在工作階段中途退出 | 伺服器的首次連接失敗 |394| 您執行 Claude Code 的方式 | 伺服器程序在工作階段中途結束 | 伺服器的第一次連線失敗 |

395| - | - | - |395| - | - | - |

396| 互動式工作階段 | Claude Code 將伺服器標記為失敗。若要再次啟動它,請從 `/mcp` 中伺服器的選單選擇 **Reconnect** | Claude Code 將伺服器標記為失敗。若要再次啟動它,請從 `/mcp` 中伺服器的選單選擇 **Reconnect** |396| 互動式工作階段 | Claude Code 將該伺服器標示為失敗。若要重新啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** | Claude Code 將該伺服器標示為失敗。若要重新啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** |

397| `claude -p` 執行 | Claude Code 會在下次 Claude 呼叫該伺服器的其中一個工具時再次啟動伺服器,並在伺服器連接後執行該呼叫 | 執行會在沒有該伺服器工具的情況下繼續。若要讓 Claude Code 再次嘗試連接,請重新開始執行。當外掛提供該伺服器時,新的執行會在失敗後 15 分鐘內跳過連接,因此請先等待這段時間,或 [更早重試](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached) |397| `claude -p` 執行 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時重新啟動伺服器,並在伺服器連線後執行該呼叫 | 執行會在沒有該伺服器工具的情況下繼續。若要讓 Claude Code 再次嘗試連線,請重新開始執行。當伺服器由外掛提供時,新的執行會在失敗後 15 分鐘內略過連線,因此請先等待這段時間,或[更早重試](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached) |

398| Agent SDK 工作階段 | Claude Code 會在下次 Claude 呼叫該伺服器的其中一個工具時再次啟動伺服器,並在伺服器連接後執行該呼叫 | 工作階段會在沒有該伺服器工具的情況下繼續。您的程式碼可以 [重新連接伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) |398| Agent SDK 工作階段 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時重新啟動伺服器,並在伺服器連線後執行該呼叫 | 工作階段會在沒有該伺服器工具的情況下繼續。您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) |

399 399 

400#### 失敗的發現請求400#### 探索請求失敗

401 401 

402伺服器連接後,Claude Code 向其傳送功能發現請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。Claude Code 在暫時性網路或伺服器錯誤後使用短退避最多重試這些請求三次。它不重試身分驗證錯誤、4xx 回應或請求逾時。402伺服器連線後,Claude Code 會向其傳送能力探索請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。發生暫時性網路或伺服器錯誤後,Claude Code 會以短暫退避重試這些請求最多三次。它不會重試身分驗證錯誤、4xx 回應或請求逾時。

403 403 

404#### 自行重試失敗的伺服器404#### 自行重試失敗的伺服器

405 405 

406若要重試所有失敗或需要身分驗證的伺服器,請執行 `/mcp reconnect all`。在互動式終端機中,這需要 Claude Code v2.1.284 或更新版本,較早版本會在該處列印 `MCP server "all" not found`。406若要重試每個失敗或需要身分驗證的伺服器,請在互動式終端機工作階段的 Claude Code 提示字元執行 `/mcp reconnect all`。這需要 Claude Code v2.1.284 或更新版本。較早的版本會印出 `MCP server "all" not found`。

407 407 

408#### Claude 如何了解伺服器失敗408#### Claude 如何得知伺服器失敗

409 409 

410Claude Code 是否告訴 Claude 關於失敗連接的已設定伺服器取決於 [工具搜尋](#scale-with-mcp-tool-search)(預設開啟):410Claude Code 是否會告知 Claude 某個已設定的伺服器連線失敗,取決於[工具搜尋](#scale-with-mcp-tool-search),該功能預設為開啟:

411 411 

412* 使用工具搜尋,Claude Code 告訴 Claude 哪個伺服器失敗及其連接錯誤,因此 Claude 在其回應中報告連接失敗。Claude Code 在找不到符合工具的 `ToolSearch` 結果中包含相同的資訊。412* 使用工具搜尋時,Claude Code 會告知 Claude 哪個伺服器失敗及其連線錯誤,因此 Claude 會在其回應中回報連線失敗。Claude Code 也會在找不到相符工具的 `ToolSearch` 結果中包含相同的資訊。

413* 在任何 [沒有工具搜尋的設定](#configure-tool-search)中,Claude Code 不向 Claude 報告失敗的伺服器連接。413* 在任何[不使用工具搜尋的設定](#configure-tool-search)中,Claude Code 不會向 Claude 回報失敗的伺服器連線。

414 414 

415### 使用頻道推送訊息415### 使用頻道推送訊息

416 416 

417MCP 伺服器也可以直接將訊息推送到您的工作階段,以便 Claude 可以對外部事件(如 CI 結果、監控警報或聊天訊息)做出反應。若要啟用此功能,您的伺服器宣告 `claude/channel` 功能,您在啟動時使用 `--channels` 旗標選擇加入。請參閱 [頻道](https://code.claude.com/docs/zh-TW/channels.md)以使用官方支援的頻道,或 [頻道參考](https://code.claude.com/docs/zh-TW/channels-reference.md)以建立您自己的。417MCP 伺服器也可以直接將訊息推送到您的工作階段中,讓 Claude 能對外部事件做出反應,例如 CI 結果、監控警示或聊天訊息。若要啟用此功能,您的伺服器需宣告 `claude/channel` 能力,並由您在啟動時以 `--channels` 旗標選擇加入。請參閱[頻道](https://code.claude.com/docs/zh-TW/channels.md)以使用官方支援的頻道,或參閱[頻道參考](https://code.claude.com/docs/zh-TW/channels-reference.md)以建立您自己的頻道。

418 418 

419在 [v2 執行時](#mcp-client-runtimes)上,協商 MCP 協議修訂 2026-07-28 的頻道伺服器無法傳遞頻道訊息,因此 Claude Code 不會將其註冊為頻道。不支援該修訂的頻道伺服器會在較早的握手上連接,並如以往一樣註冊。419在 [v2 執行環境](#mcp-client-runtimes)上,協商使用 MCP 協定修訂版 2026-07-28 的頻道伺服器無法傳遞頻道訊息,因此 Claude Code 不會將其註冊為頻道。不支援該修訂版的頻道伺服器會以較早的交握方式連線,並如往常一樣註冊。

420 420 

421Claude Code 預設會向 stdio 伺服器詢問該修訂。若要將 stdio 頻道伺服器保持在較早的握手上,請設定 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 為 `legacy`,這會將每個伺服器都保持在較早的握手上。421Claude Code 預設會向 stdio 伺服器要求該修訂版。若要讓 stdio 頻道伺服器維持使用較早的交握方式,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `legacy`,這會讓所有伺服器都維持使用較早的交握方式。

422 422 

423> [!TIP]423> [!TIP]

424>424>

425> 提示:425> 提示:

426>426>

427> * 使用 `-s` 或 `--scope` 旗標指定設定的儲存位置:427> * 使用 `-s` 或 `--scope` 旗標指定設定的儲存位置:

428> * `local`(預設):僅在目前專案中對您可用428> * `local`(預設):僅在目前專案中供您使用

429> * `project`:透過 `.mcp.json` 檔案與專案中的每個人共享429> * `project`:透過 `.mcp.json` 檔案與專案中的所有人共用

430> * `user`:在所有專案中對您可用430> * `user`:在所有專案中供您使用

431> * 使用 `-e` 或 `--env` 旗標設定環境變數(例如 `-e KEY=value`)431> * 使用 `-e` 或 `--env` 旗標設定環境變數(例如 `-e KEY=value`)

432> * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 短形式432> * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 簡寫形式

433> * 使用 `MCP_TIMEOUT` 環境變數設定 MCP 伺服器啟動逾時(例如 `MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)433> * 使用 `MCP_TIMEOUT` 環境變數設定 MCP 伺服器啟動逾時(例如 `MCP_TIMEOUT=10000 claude` 會設定 10 秒逾時)

434> * 透過將 `timeout` 欄位(以毫秒為單位)新增到該伺服器的 `.mcp.json` 項目來設定按伺服器工具執行逾時,例如 `"timeout": 600000` 表示十分鐘。這僅針對該伺服器覆寫 `MCP_TOOL_TIMEOUT` 環境變數434> * 在該伺服器的 `.mcp.json` 項目中加入以毫秒為單位的 `timeout` 欄位,即可為個別伺服器設定工具執行逾時,例如 `"timeout": 600000` 代表十分鐘。這只會針對該伺服器覆寫 `MCP_TOOL_TIMEOUT` 環境變數

435> * 當 MCP 工具輸出超過 10,000 個 token 時,Claude Code 顯示警告,預設限制輸出為 25,000 個 token。若要變更 token 限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數,例如 `MAX_MCP_OUTPUT_TOKENS=50000`。警告閾值是固定的。除非伺服器提高某個工具自身的限制,否則超過 50,000 個字元的成功文字結果無論此變數為何都會儲存到檔案。請參閱 [MCP 輸出限制和警告](#mcp-output-limits-and-warnings)435> * 當 MCP 工具輸出超過 10,000 個 token 時,Claude Code 會顯示警告,且預設將輸出限制在 25,000 個 token。若要變更 token 限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數,例如 `MAX_MCP_OUTPUT_TOKENS=50000`。警告閾值是固定的。除非伺服器提高了工具本身的限制,否則超過 50,000 個字元的成功文字結果無論此變數為何都會儲存至檔案。請參閱 [MCP 輸出限制與警告](#mcp-output-limits-and-warnings)

436> * 使用 `/mcp` 對需要 OAuth 2.0 身分驗證的遠端伺服器進行驗證436> * 使用 `/mcp` 向需要 OAuth 2.0 身分驗證的遠端伺服器進行身分驗證

437 437 

438### MCP 工具呼叫的時間限制438### MCP 工具呼叫的時間限制

439 439 

440若要限制 MCP 工具呼叫可執行的時間:440若要限制 MCP 工具呼叫可執行的時間長度:

441 441 

442* **各伺服器**:在該伺服器的設定項目中加入以毫秒為單位的 `timeout` 欄位442* **個別伺服器**:在該伺服器的設定項目中加入以毫秒為單位的 `timeout` 欄位

443* **跨伺服器**:設定 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)443* **所有伺服器**:設定 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)

444 444 

445按伺服器 `timeout` 是每個工具呼叫的硬牆鐘限制,來自伺服器的進度通知不會延長它。低於 1000 的值被忽略並落回 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)伺服器,還有第二個按請求計時器,涵蓋每個請求到伺服器的第一個回應位元組。Claude Code 將該計時器設定為三個值中最大的:60 秒、適用於伺服器的工具逾時和 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 的 28 小時預設值不進入該比較,低於 60 秒的值不會縮短計時器。Stdio 和 WebSocket 伺服器沒有按請求計時器。445個別伺服器的 `timeout` 是每次工具呼叫的硬性實際時間限制,伺服器的進度通知不會延長它。低於 1000 的值會被忽略,並改用 `MCP_TOOL_TIMEOUT`,若該變數未設定,則改用其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)伺服器,還有第二個針對每個請求的計時器,涵蓋每個請求直到收到伺服器的第一個回應位元組為止。Claude Code 會將該計時器設為三個值中的最大值:60 秒、適用於該伺服器的工具逾時,以及 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 時的 28 小時預設值不會納入該比較,且低於 60 秒的值不會縮短該計時器。Stdio 和 WebSocket 伺服器沒有針對每個請求的計時器。

446 446 

447至少 1000 的按伺服器 `timeout` 也充當下面描述的空閒逾時的下限:Claude Code 永遠不會因空閒而早於按伺服器 `timeout` 中止該伺服器的工具呼叫。447至少為 1000 的個別伺服器 `timeout` 也會作為下述閒置逾時的下限:Claude Code 絕不會比個別伺服器的 `timeout` 更早因閒置而中止該伺服器的工具呼叫。

448 448 

449對 MCP 伺服器的工具呼叫,在空閒視窗內不傳送回應且不傳送進度通知,會因錯誤而中止,而不是等待牆鐘限制。空閒逾時適用於除 IDE 伺服器和 SDK 進程內伺服器外的每個伺服器類型。空閒視窗預設為 HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器的五分鐘,以及 stdio 伺服器的 30 分鐘。449若 MCP 伺服器在閒置時間範圍內沒有傳送任何回應或進度通知,對其的工具呼叫會以錯誤中止,而不是等到實際時間限制。閒置逾時適用於 IDE 伺服器和 SDK 行程內伺服器以外的所有伺服器類型。閒置時間範圍預設為:HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器為五分鐘,stdio 伺服器為 30 分鐘。

450 450 

451以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數以變更空閒視窗,或設定為 `0` 以停用檢查。451請以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數來變更閒置時間範圍,或將其設為 `0` 以停用此檢查。

452 452 

453這些逾時限制呼叫可以執行多長時間,不總是它阻止工作階段多長時間:執行超過兩分鐘的主對話呼叫首先移動到背景任務。請參閱 [長工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。453這些逾時限制的是呼叫可以執行多久,而不一定是它會阻擋工作階段多久:執行超過兩分鐘的主要對話呼叫會先移至背景任務。請參閱[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。

454 454 

455### 長工具呼叫的自動背景化455### 長時間工具呼叫的自動背景化

456 456 

457若背景呼叫在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中的詳細檢視顯示 `runs on the server; survives exiting this session`,請參閱[在伺服器上執行的 MCP 任務](#mcp-tasks-that-run-on-the-server)。457若背景呼叫在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中的詳細資訊檢視顯示 `runs on the server; survives exiting this session`,請參閱[在伺服器上執行的 MCP 任務](#mcp-tasks-that-run-on-the-server)。

458 458 

459主對話中仍在執行兩分鐘後的 MCP 工具呼叫移動到背景任務,而不是阻止工作階段。Claude 立即接收任務 ID 並繼續工作,結果在呼叫解決時作為任務通知到達。459主要對話中的 MCP 工具呼叫若在兩分鐘後仍在執行,會移至背景任務,而不會阻擋工作階段。Claude 會立即收到任務 ID 並繼續工作,呼叫結束時,結果會以任務通知的形式送達。

460 460 

461任務出現在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands)中,您也可以在其中停止它,它不會在退出工作階段時存活。任務的項目顯示伺服器報告的最新進度。如果您停止任務,Claude Code 會取消該呼叫並告知 Claude 不會有結果。停止並不保證伺服器會停止:它可能已經完成部分工作,或仍可能完成它。461該任務會出現在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中,您也可以在那裡停止它,且它不會在結束工作階段後延續。任務的項目會顯示伺服器回報的最新進度。若您停止任務,Claude Code 會取消呼叫並告知 Claude 不會有結果。停止並不保證伺服器會停止:它可能已完成部分工作,或仍可能完成它。

462 462 

463按呼叫限制仍然適用於呼叫在背景中執行時:由按伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)設定的牆鐘限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)設定的空閒逾時。463呼叫在背景執行時,每次呼叫的限制仍然適用:由個別伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的實際時間限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的閒置逾時。

464 464 

465若要變更或關閉自動背景化:465若要變更或關閉自動背景化:

466 466 

467* 設定以毫秒為單位的 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數以變更門檻,或設為 `0` 以關閉自動背景化。設為 `0` 時,Claude 在互動式工作階段中也會[等待 MCP 任務](#make-claude-wait-for-the-result-of-an-mcp-task)467* 以毫秒為單位設定 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數來變更閾值,或將其設為 `0` 以關閉自動背景化。設為 `0` 時,Claude 在互動式工作階段中也會[等待 MCP 任務](#make-claude-wait-for-the-result-of-an-mcp-task)

468* 將 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`,這會將其與背景命令和背景 subagent 一併關閉468* 將 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`,這會將其與背景命令和背景 subagent 一併關閉

469 469 

470某些呼叫永遠不會移動到背景:470有些呼叫永遠不會移至背景:

471 471 

472* 來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 的呼叫;Claude Code 只背景化主對話呼叫472* 來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 的呼叫;Claude Code 只會將主要對話的呼叫背景化

473* 對 IDE 伺服器的呼叫473* 對 IDE 伺服器的呼叫

474* 在 [非互動模式](https://code.claude.com/docs/zh-TW/headless.md)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設定為 `1`,因為一次性執行可能在結果到達之前結束474* [非互動模式](https://code.claude.com/docs/zh-TW/headless.md)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設為 `1`,因為單次執行可能在結果送達前就結束

475 475 

476等待開啟 [引出對話](#respond-to-mcp-elicitation-requests)的呼叫在對話開啟時不會背景化;伺服器被阻止在您的輸入上,而不是緩慢,因此 Claude Code 將移動延遲到對話關閉。476等待開啟中之[引導對話框](#respond-to-mcp-elicitation-requests)的呼叫,在對話框開啟期間不會被背景化;伺服器是在等待您的輸入,而不是速度慢,因此 Claude Code 會將移動延後至對話框關閉為止。

477 477 

478### 在伺服器上執行的 MCP 任務478### 在伺服器上執行的 MCP 任務

479 479 

480MCP 任務是 MCP 伺服器使用 [MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)自行執行的長時間工作,例如報表匯出或建置。伺服器接受工作後,Claude 的工具呼叫就會傳回,因此 Claude 會繼續工作,除非您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task)。工作結束時,逐字稿會註明,且 Claude 會取得結果。請向 Claude 詢問結果。480MCP 任務是 MCP 伺服器使用 [MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)自行執行的長時間工作,例如報表匯出或建置。伺服器一接受該工作,Claude 的工具呼叫就會返回,因此除非您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),否則 Claude 會繼續工作。工作結束時,逐字稿會顯示此情況,而 Claude 會取得結果。請向 Claude 詢問結果。

481 481 

482在此期間,頁尾會顯示如 `1 MCP task` 的計數,Claude Code 會透過向伺服器檢查狀態來追蹤任務。遠端伺服器上的任務在您結束後仍會繼續執行。若要再次追蹤它,請[恢復同一個工作階段](#exit-clear-or-resume-while-an-mcp-task-runs)。482在此期間,頁尾會顯示如 `1 MCP task` 的計數,而 Claude Code 會透過向伺服器檢查其狀態來追蹤該任務。遠端伺服器上的任務在您結束後仍會繼續執行。若要再次追蹤它,請[恢復同一個工作階段](#exit-clear-or-resume-while-an-mcp-task-runs)。

483 483 

484> [!NOTE]484> [!NOTE]

485>485>

486> MCP 任務在 Claude Code CLI 中為公開測試版,需要 Claude Code v2.1.304 或更新版本。[呼叫成為 MCP 任務所需的條件](#requirements-for-mcp-tasks)列出了可取得此功能的工作階段和伺服器。486> MCP 任務在 Claude Code CLI 中處於公開測試版階段,需要 Claude Code v2.1.304 或更新版本。[呼叫成為 MCP 任務的條件](#requirements-for-mcp-tasks)列出了可使用它們的工作階段與伺服器。

487 487 

488#### 停止 MCP 任務或取得其結果488#### 停止 MCP 任務或取得其結果

489 489 

490若要停止執行中的任務,請在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中選取它並按下 `x`,或請 Claude 停止。Claude Code 會停止追蹤該任務並要求伺服器取消,但伺服器仍可能將其完成。請先從 `/mcp` 重新連線已中斷連線的伺服器,否則不會送出取消請求,且 Claude Code 會遺忘該任務而無法再次追蹤。按下 `Esc` 不會停止背景任務。490若要停止執行中的任務,請在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中選取它並按下 `x`,或請 Claude 停止它。Claude Code 會停止追蹤該任務並要求伺服器取消它,但伺服器仍可能完成它。請先從 `/mcp` 重新連線已中斷連線的伺服器,否則不會送出取消請求,且 Claude Code 會遺忘該任務而無法再次追蹤它。按下 `Esc` 不會停止背景任務。

491 491 

492任務結束時,逐字稿中會出現如下的一行:492任務結束時,逐字稿中會出現如下的一行:

493 493 


495MCP task <server task id> (<server>/<tool>) completed.495MCP task <server task id> (<server>/<tool>) completed.

496```496```

497 497 

498結果會傳給 Claude,而非寫入逐字稿,因此請向 Claude 詢問結果。若結果送達時 Claude 處於閒置狀態,Claude 會主動開始處理。498結果會傳給 Claude,而不是寫入逐字稿,因此請向 Claude 詢問結果。若結果送達時 Claude 處於閒置狀態,Claude 會主動開始處理它。

499 499 

500#### 回答 MCP 任務提出的問題500#### 回答來自 MCP 任務的問題

501 501 

502執行中的任務可以開啟 [elicitation 對話框](#respond-to-mcp-elicitation-requests)來要求您輸入。`/tasks` 開啟期間,對話框會保持隱藏,因此請關閉 `/tasks` 以進行回答。拒絕或按下 `Esc` 也是對伺服器的回答,伺服器接著會決定任務是否繼續。502執行中的任務可以開啟[引導對話框](#respond-to-mcp-elicitation-requests)來要求您輸入。當 `/tasks` 開啟時,對話框會保持隱藏,因此請關閉 `/tasks` 以作答。拒絕或按下 `Esc` 也是對伺服器的一種回答,伺服器隨後會決定任務是否繼續。

503 503 

504在[非互動](https://code.claude.com/docs/zh-TW/headless.md)工作階段中,Claude Code 會要求伺服器取消請求輸入的任務,而不會執行您的 [`Elicitation` hook](https://code.claude.com/docs/zh-TW/hooks#elicitation) 或呼叫 Agent SDK 的 `onElicitation` 回呼。504在[非互動](https://code.claude.com/docs/zh-TW/headless.md)工作階段中,Claude Code 會要求伺服器取消要求輸入的任務,而不會執行您的 [`Elicitation` hook](https://code.claude.com/docs/zh-TW/hooks#elicitation) 或呼叫 Agent SDK 的 `onElicitation` 回呼。

505 505 

506#### 在 MCP 任務執行期間結束、清除或恢復506#### 在 MCP 任務執行期間結束、清除或恢復

507 507 

508遠端伺服器上的任務在您結束後仍會繼續執行。stdio 伺服器的程序會在 Claude Code 結束時停止,儘管其任務在 `/tasks` 中顯示 `runs on the server; survives exiting this session`。除非該伺服器的文件說明工作會在程序結束後持續,否則請先讓這些任務完成,或在 `/tasks` 中將其停止。508遠端伺服器上的任務在您結束後仍會繼續執行。stdio 伺服器的程序會在 Claude Code 結束時停止,儘管其任務在 `/tasks` 中顯示 `runs on the server; survives exiting this session`。除非該伺服器的文件表示工作會在程序結束後延續,否則請先讓這些任務完成,或在 `/tasks` 中停止它們。

509 509 

510| 情況 | 任務會發生什麼事 | 您可以做什麼 |510| 情況 | 任務會發生什麼事 | 您可以做什麼 |

511| - | - | - |511| - | - | - |

512| 您執行 `/clear` 或 `/branch`,或以 `/resume` 切換到另一個工作階段 | 只要 Claude Code 保持開啟,結果就會送達您目前的對話 | 結束後,以 `claude --resume` 恢復任務開始時所在的工作階段 |512| 您執行 `/clear` 或 `/branch`,或 `/resume` 另一個工作階段 | 只要 Claude Code 保持開啟,結果就會送達您目前的對話 | 結束之後,使用 `claude --resume` 恢復任務開始時所在的工作階段 |

513| 您結束 Claude Code | 沒有任何結束選項會取消遠端伺服器的任務,即使結束對話框將其列在 `The following will stop when you exit:` 之下 | 先在 `/tasks` 中停止它,或稍後恢復同一個工作階段 |513| 您結束 Claude Code | 沒有任何結束選項會取消遠端伺服器的任務,即使結束對話框將其列在 `The following will stop when you exit:` 之下 | 先在 `/tasks` 中停止它,或稍後恢復同一個工作階段 |

514| 您以互動方式返回任務的工作階段:`claude --resume`、`claude --continue` 或 `/resume` | 伺服器連線後,Claude Code 會再次追蹤該任務,若任務在此期間已完成且伺服器仍記得它,Claude 會取得結果 | 保持伺服器的名稱和連線設定不變 |514| 您以互動方式回到任務的工作階段:`claude --resume`、`claude --continue` 或 `/resume` | 伺服器連線後,Claude Code 會再次追蹤該任務;若任務在此期間已完成且伺服器仍知道它,Claude 會取得結果 | 保持伺服器的名稱和連線設定不變 |

515| 您在單次 `claude -p "<prompt>"` 執行中以 `--resume` 或 `--continue` 恢復任務的工作階段 | 該次執行不會追蹤任務 | 以互動方式恢復,或使用 `--input-format stream-json` |515| 您在單次 `claude -p "<prompt>"` 執行中使用 `--resume` 或 `--continue` 恢復任務的工作階段 | 該執行不會追蹤該任務 | 以互動方式恢復,或使用 `--input-format stream-json` 恢復 |

516| 您開始新的工作階段或使用 `--fork-session` | 新的工作階段不會追蹤任務 | 恢復啟動該任務的工作階段 |516| 您開始新的工作階段或使用 `--fork-session` | 新的工作階段不會追蹤該任務 | 恢復啟動該任務的工作階段 |

517 517 

518#### 呼叫成為 MCP 任務所需的條件518#### 呼叫成為 MCP 任務的條件

519 519 

520只有在以下所有條件都成立時,工具呼叫才會成為 MCP 任務:520只有在以下所有條件都成立時,工具呼叫才會成為 MCP 任務:

521 521 

522* 伺服器支援任務522* 伺服器支援任務

523* 伺服器是以[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線的 HTTP、stdio 或 claude.ai 連接器伺服器。設定 [`MCP_SDK_GENERATION=v1` 或 `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/zh-TW/env-vars) 會排除此情況523* 伺服器是以[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線的 HTTP、stdio 或 claude.ai 連接器伺服器。設定 [`MCP_SDK_GENERATION=v1` 或 `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/zh-TW/env-vars) 會排除此情況

524* 工作階段會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching),因此不能在 Amazon Bedrock 等第三方供應商上,也不能關閉遙測或旗標擷取524* 工作階段會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching),因此不能在 Amazon Bedrock 等第三方供應商上,也不能關閉遙測或旗標擷取

525* Anthropic 已為您的工作階段類型開啟 MCP 任務。在 v2.1.304 或更新版本上,涵蓋終端機 CLI 工作階段、[Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段和 [GitHub Actions](https://code.claude.com/docs/zh-TW/github-actions.md) 執行。其他使用介面,例如 [VS Code 擴充功能](https://code.claude.com/docs/zh-TW/vs-code.md)和[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),沒有 MCP 任務525* Anthropic 已為您這類工作階段開啟 MCP 任務。在 v2.1.304 或更新版本上,這涵蓋終端機 CLI 工作階段、[Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段和 [GitHub Actions](https://code.claude.com/docs/zh-TW/github-actions.md) 執行。其他使用介面,例如 [VS Code 擴充功能](https://code.claude.com/docs/zh-TW/vs-code.md)和[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),沒有 MCP 任務

526* 呼叫來自主對話,而非來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md)526* 呼叫來自主要對話,而非來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md)

527* 工作階段為互動式,或者 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段或讀取 `--input-format stream-json` 的 `claude -p` 執行具備:527* 工作階段是互動式的,或者 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段或讀取 `--input-format stream-json` 的 `claude -p` 執行具備:

528 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 為 `1`528 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 為 `1`

529 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` 不為 `1`529 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` 不為 `1`

530 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 不為 `0`530 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 不為 `0`

531 531 

532任何其他呼叫都是一般的工具呼叫,[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)說明了其中哪些會移至背景。532其他任何呼叫都是一般的工具呼叫,而[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)說明了其中哪些會移至背景。

533 533 

534請保持 Agent SDK 或 stream-json 工作階段的輸入開啟,因為輸入關閉後,執行[不會等待 MCP 任務](https://code.claude.com/docs/zh-TW/headless.md#mcp-work-when-a-non-interactive-run-ends)。單次 `claude -p "<prompt>"` 執行不會取得 MCP 任務。534請保持 Agent SDK 或 stream-json 工作階段的輸入開啟,因為輸入關閉後,執行[不會等待 MCP 任務](https://code.claude.com/docs/zh-TW/headless.md#mcp-work-when-a-non-interactive-run-ends)。單次 `claude -p "<prompt>"` 執行不會取得 MCP 任務。

535 535 

536#### MCP 任務上的狀態訊息536#### MCP 任務上的狀態訊息

537 537 

538這些訊息出現在任務的 `/tasks` 項目或其結束時的逐字稿行中,表示 Claude Code 無法連絡伺服器或任務。當其中一則訊息顯示在 `/tasks` 中時,工作可能仍在執行:Claude Code 不會干預它,並會持續檢查。`300s` 和設定相關的訊息即使在恢復連絡後仍會保留在項目上。538這些訊息出現在任務的 `/tasks` 項目或其結束的逐字稿行中,表示 Claude Code 無法連繫到伺服器或任務。當其中一則顯示在 `/tasks` 中時,該工作可能仍在執行:Claude Code 不會干預它,並持續檢查。`300s` 和設定相關的訊息即使在恢復聯繫後仍會保留在項目上。

539 539 

540| 訊息 | 發生了什麼事 | 您可以做什麼 |540| 訊息 | 發生了什麼事 | 您可以做什麼 |

541| - | - | - |541| - | - | - |

542| `reconnecting…` | 自恢復以來伺服器尚未回應,或狀態檢查沒有得到回應 | 若持續出現,請從 `/mcp` 重新連線 |542| `reconnecting…` | 恢復後伺服器尚未回應,或狀態檢查沒有得到回應 | 若持續顯示,請從 `/mcp` 重新連線 |

543| `needs a sign-in to <server>` | 伺服器拒絕了狀態檢查 | 從 `/mcp` 登入 |543| `needs a sign-in to <server>` | 伺服器拒絕了狀態檢查 | 從 `/mcp` 登入 |

544| `status requests come back with errors; retrying…` | 伺服器或其前方的代理伺服器以錯誤回應狀態檢查 | 在 Claude Code 重試期間等待 |544| `status requests come back with errors; retrying…` | 伺服器或其前方的代理伺服器以錯誤回應狀態檢查 | 在 Claude Code 重試時等待 |

545| `server '<name>' did not reconnect within 300s` | 五分鐘內沒有任何檢查得到回應,例如連線中斷或伺服器已停用 | 從 `/mcp` 重新連線 |545| `server '<name>' did not reconnect within 300s` | 五分鐘內沒有任何得到回應的檢查,例如連線中斷或伺服器已停用 | 從 `/mcp` 重新連線 |

546| `server '<name>' asked for a sign-in, and none was accepted within 300s` | 五分鐘後伺服器仍要求登入 | 從 `/mcp` 登入 |546| `server '<name>' asked for a sign-in, and none was accepted within 300s` | 五分鐘後伺服器仍要求登入 | 從 `/mcp` 登入 |

547| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | 五分鐘內都是錯誤回應 | 檢查伺服器本身的健康狀態或日誌 |547| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | 五分鐘內都是錯誤回應 | 檢查伺服器本身的健康狀態或日誌 |

548| `server '<name>' is not configured in this session; the task may still be running on it` | 工作階段中沒有該名稱的伺服器,例如它已被移除、重新命名或未包含在 `--mcp-config` 中,或 claude.ai 連接器仍在載入中 | 以相同名稱還原伺服器,然後再次恢復工作階段。若是載入中的連接器,則無需任何操作:連接器出現後,Claude Code 就會追蹤該任務 |548| `server '<name>' is not configured in this session; the task may still be running on it` | 工作階段中沒有該名稱的伺服器,例如它已被移除、重新命名或未包含在 `--mcp-config` 中,或 claude.ai 連接器仍在載入 | 以相同名稱還原該伺服器,然後再次恢復工作階段。若是載入中的連接器,則無需任何操作:連接器出現後,Claude Code 就會追蹤該任務 |

549| 以 `server '<name>' was reconfigured to a different transport since this task was created` 開頭的訊息 | 存在該名稱的伺服器,但其連線設定在任務開始後已變更,例如其 URL、command、args、env、headers 或 timeout | 還原先前的設定,然後再次恢復工作階段 |549| 以 `server '<name>' was reconfigured to a different transport since this task was created` 開頭的訊息 | 存在該名稱的伺服器,但其連線設定自任務開始後已變更,例如其 URL、command、args、env、headers 或 timeout | 還原先前的設定,然後再次恢復工作階段 |

550| `the server rejected this task's id; asking again…` | 伺服器表示不認得該任務 ID。Claude Code 會持續詢問最多五分鐘 | 等待:若伺服器再次認得該 ID,訊息就會清除,否則會接著出現 `outcome unknown.` 行 |550| `the server rejected this task's id; asking again…` | 伺服器表示它不認識該任務 ID。Claude Code 會持續詢問最多五分鐘 | 等待:若伺服器再次識別該 ID,訊息就會清除,否則接著會出現 `outcome unknown.` 行 |

551| 以 `outcome unknown.` 結尾的逐字稿行,其中一種形式為 `expired on the server: outcome unknown.` | 伺服器拒絕了該 ID 或以其他永久性錯誤拒絕,且 Claude Code 已停止追蹤該任務 | 第二次呼叫可能會重複工作。再次呼叫該工具之前,請向伺服器確認已完成的內容,例如請 Claude 使用該伺服器的其他工具 |551| 以 `outcome unknown.` 結尾的逐字稿行,其中一種形式為 `expired on the server: outcome unknown.` | 伺服器拒絕了該 ID 或以其他永久性錯誤拒絕,且 Claude Code 已停止追蹤該任務 | 第二次呼叫可能會重複該工作。再次呼叫該工具之前,請向伺服器確認已完成的內容,例如請 Claude 使用該伺服器的其他工具 |

552 552 

553#### MCP 任務的時間限制553#### MCP 任務的時間限制

554 554 

555預設情況下,背景中的任務沒有 Claude Code 時間限制。[工具呼叫時間限制](#time-limits-on-mcp-tool-calls),包括實際時間限制和閒置逾時,會在伺服器以任務回應呼叫之前適用。若您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),這些限制會在整個任務期間適用。得到回應的狀態檢查會計為閒置逾時的活動。555預設情況下,背景中的任務沒有 Claude Code 時間限制。[工具呼叫時間限制](#time-limits-on-mcp-tool-calls)(包括實際時間限制和閒置逾時)在伺服器以任務回應該呼叫之前適用。若您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),這些限制會在整個任務期間適用。得到回應的狀態檢查會計為閒置逾時的活動。

556 556 

557#### 讓 Claude 等待 MCP 任務的結果557#### 讓 Claude 等待 MCP 任務的結果

558 558 

559若要在互動式工作階段中讓 Claude 等待任務的結果,請設定兩個環境變數之一,例如在 [`settings.json`](https://code.claude.com/docs/zh-TW/settings) 的 `env` 區塊中:559若要讓 Claude 在互動式工作階段中等待任務的結果,請設定以下兩個環境變數之一,例如在 [`settings.json`](https://code.claude.com/docs/zh-TW/settings) 的 `env` 區塊中:

560 560 

561* **將 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `0`**:Claude 會等待每個 MCP 工具呼叫直到呼叫結束561* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `0`**:Claude 會等待每個 MCP 工具呼叫直到呼叫結束

562* **將 [`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`**:Claude 會等待任務的結果。當[自動背景化](#automatic-backgrounding-of-long-tool-calls)開啟時,它預設會在兩分鐘後移動呼叫,因此短任務會就地完成,而長任務不會阻擋您。被移動的呼叫是一般的背景呼叫,而非 MCP 任務。它不會在結束工作階段後保留562* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`**:Claude 會等待任務的結果。當[自動背景化](#automatic-backgrounding-of-long-tool-calls)開啟時,它預設會在兩分鐘後移動該呼叫,因此短任務會就地完成,長任務則不會阻擋您。被移動的呼叫是一般的背景呼叫,而非 MCP 任務。它不會在結束工作階段後延續

563 563 

564Claude 等待期間,按下 `Esc` 或達到[實際時間限制或閒置逾時](#time-limits-on-mcp-tasks)會結束呼叫,且 Claude Code 會要求伺服器取消任務。564在 Claude 等待期間,按下 `Esc` 或達到[實際時間限制或閒置逾時](#time-limits-on-mcp-tasks)都會結束該呼叫,且 Claude Code 會要求伺服器取消該任務。

565 565 

566若您將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 設為 `1` 或以 [bare 模式](https://code.claude.com/docs/zh-TW/headless.md#start-faster-with-bare-mode)啟動,單憑這樣並不會讓 Claude 等待 MCP 任務。此範例將 `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 設為 `0`,因此 Claude 會等待每個 MCP 工具呼叫:566若您將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 設為 `1` 或以 [bare 模式](https://code.claude.com/docs/zh-TW/headless.md#start-faster-with-bare-mode)啟動,僅此並不會讓 Claude 等待 MCP 任務。此範例將 `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 設為 `0`,因此 Claude 會等待每個 MCP 工具呼叫:

567 567 

568```json settings.json theme={null}568```json settings.json theme={null}

569{569{


573}573}

574```574```

575 575 

576### 給伺服器作者的 MCP 任務說明576### 供伺服器作者參考的 MCP 任務

577 577 

578若您建置 MCP 伺服器,可以用任務回應長時間執行的 `tools/call`。[MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)定義了您要傳送的訊息。在[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線上,每個請求都會在 `params._meta["io.modelcontextprotocol/clientCapabilities"]` 中攜帶 Claude Code 的用戶端能力,並在 `extensions` 下帶有 `"io.modelcontextprotocol/tasks": {}`。[無法成為任務](#requirements-for-mcp-tasks)的 `tools/call` 請求會省略該擴充功能。578若您建置 MCP 伺服器,可以用任務來回應長時間執行的 `tools/call`。[MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)定義了您要傳送的訊息。在[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線上,每個請求都會在 `params._meta["io.modelcontextprotocol/clientCapabilities"]` 攜帶 Claude Code 的用戶端能力,並在 `extensions` 下包含 `"io.modelcontextprotocol/tasks": {}`。[無法成為任務](#requirements-for-mcp-tasks)的 `tools/call` 請求會省略該擴充功能。

579 579 

580#### 以任務回應呼叫580#### 以任務回應呼叫

581 581 

582只有在請求攜帶該擴充功能時才以任務回應,否則 Claude 會收到工具錯誤 `Unsupported result type 'task' for tools/call`。當缺少 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 或 `ttlMs` 時,Claude 也會收到相同的錯誤。任務物件是 `tools/call` 回應的 JSON-RPC `result`,不需要 `content` 陣列,此處還包含選用的 `statusMessage` 和 `pollIntervalMs`:582只有在請求攜帶該擴充功能時才以任務回應,否則 Claude 會收到工具錯誤 `Unsupported result type 'task' for tools/call`。當缺少 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 或 `ttlMs` 時,Claude 也會收到相同的錯誤。任務物件是您 `tools/call` 回應的 JSON-RPC `result`,不需要 `content` 陣列,此處包含了選用的 `statusMessage` 和 `pollIntervalMs`:

583 583 

584```json theme={null}584```json theme={null}

585{585{


596 596 

597| 欄位 | Claude Code 如何處理 |597| 欄位 | Claude Code 如何處理 |

598| - | - |598| - | - |

599| `resultType` | 設為 `"task"` 以將回應標示為任務。若沒有此欄位,Claude Code 會將回應讀取為一般結果 |599| `resultType` | 設為 `"task"` 以將回覆標示為任務。若沒有此欄位,Claude Code 會將回覆讀取為一般結果 |

600| `taskId` | 必填。最多 128 個可列印的 ASCII 字元且不含空格,否則 Claude 會收到以 `MCP server "<name>" returned a malformed task handle for tool "<tool>"` 開頭的工具錯誤。請讓此 ID 在不同連線間都能被回應,因為恢復後 Claude Code 會在新的連線上詢問它 |600| `taskId` | 必要。最多 128 個可列印的 ASCII 字元且不含空格,否則 Claude 會收到以 `MCP server "<name>" returned a malformed task handle for tool "<tool>"` 開頭的工具錯誤。請讓該 ID 在不同連線間都能被回應,因為恢復後 Claude Code 會在新的連線上詢問它 |

601| `status` | 必填。為 `working`、`input_required`、`completed`、`failed` 或 `cancelled` 之一。其他值會產生 `Unsupported result type` 錯誤 |601| `status` | 必要。為 `working`、`input_required`、`completed`、`failed` 或 `cancelled` 之一。其他值會產生 `Unsupported result type` 錯誤 |

602| `createdAt`、`lastUpdatedAt`、`ttlMs` | 必填,`ttlMs` 可以是 `null`。Claude Code 不會因為任務的 `ttlMs` 已過而捨棄該任務 |602| `createdAt`、`lastUpdatedAt`、`ttlMs` | 必要,且 `ttlMs` 可以是 `null`。Claude Code 不會因為任務的 `ttlMs` 已過而捨棄該任務 |

603| `pollIntervalMs` | 選填,但不可為 `null`。兩次 `tasks/get` 請求之間的毫秒數,限制在 250 到 30000 之間。缺少此欄位時,Claude Code 使用 2000,並會從每個 `tasks/get` 回應中重新讀取此值 |603| `pollIntervalMs` | 選用,但不可為 `null`。`tasks/get` 請求之間的毫秒數,會被限制在 250 到 30000 之間。若缺少此欄位,Claude Code 會使用 2000,並從每個 `tasks/get` 回應中重新讀取該值 |

604| `statusMessage` | 選填。`/tasks` 顯示的是您最新一次 `tasks/get` 回應中的值,而非這第一次的值,且省略此欄位的回應會將其清除。[Claude Code 的狀態訊息](#status-messages-on-an-mcp-task)可能會取代它 |604| `statusMessage` | 選用。`/tasks` 會顯示您最新 `tasks/get` 回應中的值,而非這第一個回應中的值,且省略此欄位的回應會將其清除。[Claude Code 的狀態訊息](#status-messages-on-an-mcp-task)可能會取代它 |

605 605 

606在 HTTP 或 claude.ai 連接器伺服器上,任務回應必須在[逐請求計時器](#time-limits-on-mcp-tool-calls)內開始,因此請先接受工作並回應,再進行工作。606在 HTTP 或 claude.ai 連接器伺服器上,任務回應必須在[每個請求的計時器](#time-limits-on-mcp-tool-calls)內開始,因此請先接受工作並回應,然後再執行工作。

607 607 

608#### 回報狀態、結果與問題608#### 回報狀態、結果與問題

609 609 

610在任務回應之後,Claude Code 會立即傳送帶有 `{ "taskId": ... }` 的 `tasks/get`,然後每個輪詢間隔重複一次。tasks 擴充功能要求您的回應攜帶 `"resultType": "complete"`,以及 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 和 `ttlMs`。`ttlMs` 可以是 `null`,`statusMessage` 和 `pollIntervalMs` 為選填。此範例回報建置已完成:610在任務回應之後,Claude Code 會立即傳送帶有 `{ "taskId": ... }` 的 `tasks/get`,然後每個輪詢間隔重複一次。tasks 擴充功能要求您的回應攜帶 `"resultType": "complete"`,以及 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 和 `ttlMs`。`ttlMs` 可以是 `null`,而 `statusMessage` 和 `pollIntervalMs` 為選用。此範例回報建置已完成:

611 611 

612```json theme={null}612```json theme={null}

613{613{


626| 狀態、方法或回應 | Claude Code 如何處理 |626| 狀態、方法或回應 | Claude Code 如何處理 |

627| - | - |627| - | - |

628| `working` | 持續輪詢 |628| `working` | 持續輪詢 |

629| `completed` | 將頂層 `result` 物件中的一般 `tools/call` 結果交給 Claude。其中的 `isError: true` 會被回報為失敗 |629| `completed` | 將頂層 `result` 物件中的一般 `tools/call` 結果提供給 Claude。其中的 `isError: true` 會回報為失敗 |

630| `failed` | 告知 Claude 頂層 `error` 物件 `{ code, message, data }` 的 `message`,tasks 擴充功能要求失敗的任務必須帶有此物件。若沒有該 `message`,Claude 會改為取得 `statusMessage`,否則取得 `Task failed` |630| `failed` | 將頂層 `error` 物件 `{ code, message, data }` 的 `message` 告知 Claude,tasks 擴充功能要求失敗的任務必須包含此物件。若沒有該 `message`,Claude 會改為收到 `statusMessage`,否則為 `Task failed` |

631| `cancelled` | 告知 Claude `statusMessage`,否則告知 `Task was cancelled by the server` |631| `cancelled` | 將 `statusMessage` 告知 Claude,否則為 `Task was cancelled by the server` |

632| `input_required` | 讀取 `inputRequests`,這是一個將您所選的鍵對應到 `{ method, params }` 的物件。Claude Code 會透過帶有 `{ taskId, inputResponses }` 的 `tasks/update` 對每個鍵回答一次,其中 `inputResponses` 將相同的鍵對應到該請求的結果。每個任務超過 16 個的鍵會被忽略 |632| `input_required` | 讀取 `inputRequests`,這是一個將您選擇的鍵對應至 `{ method, params }` 的物件。Claude Code 會透過帶有 `{ taskId, inputResponses }` 的 `tasks/update` 對每個鍵回答一次,其中 `inputResponses` 會將相同的鍵對應至該請求的結果。每個任務超過 16 個的鍵會被忽略 |

633| `inputRequests` 中的方法 | `elicitation/create` 只在互動式終端機工作階段中提供服務,`roots/list` 則在所有地方都提供。當 Claude Code 無法處理請求時,會要求伺服器取消任務 |633| `inputRequests` 中的方法 | `elicitation/create` 只在互動式終端機工作階段中提供服務,`roots/list` 則在所有地方都提供。當 Claude Code 無法處理某個請求時,它會要求伺服器取消該任務 |

634| 其他 `status` 值 | Claude Code 會要求伺服器取消任務,並向 Claude 回報為失敗 |634| 其他 `status` 值 | Claude Code 會要求伺服器取消該任務,並向 Claude 回報為失敗 |

635| JSON-RPC 錯誤 `-32602` | 視為未知的任務 ID。對於背景中的任務,Claude Code 會持續詢問最多五分鐘,然後向 Claude 回報結果未知 |635| JSON-RPC 錯誤 `-32602` | 讀取為未知的任務 ID。對於背景中的任務,Claude Code 會持續詢問最多五分鐘,然後向 Claude 回報結果未知 |

636| `tasks/cancel` | 例如在伺服器連線期間,Claude 或使用者停止任務時傳送。結束時不會傳送 |636| `tasks/cancel` | 例如當 Claude 或使用者在伺服器連線期間停止任務時傳送。結束時不會傳送 |

637| `tasks/result`、`tasks/list`、`notifications/tasks` | 不使用,因此請將結果放在您的 `tasks/get` 回應中 |637| `tasks/result`、`tasks/list`、`notifications/tasks` | 不會使用,因此請將結果放在您的 `tasks/get` 回應中 |

638 638 

639### 外掛提供的 MCP 伺服器639### 外掛提供的 MCP 伺服器

640 640 

641[外掛](https://code.claude.com/docs/zh-TW/plugins/overview.md)可以捆綁 MCP 伺服器,在您啟用外掛時提供工具和整合。641[外掛](https://code.claude.com/docs/zh-TW/plugins/overview.md)可以捆綁 MCP 伺服器,在您啟用外掛時提供工具與整合功能。

642 642 

643**外掛 MCP 伺服器如何工作**:643**外掛 MCP 伺服器的運作方式**:

644 644 

645* 外掛在外掛根目錄的 `.mcp.json` 中或內聯在 `plugin.json` 中定義 MCP 伺服器645* 外掛在外掛根目錄的 `.mcp.json` 中定義 MCP 伺服器,或內嵌於 `plugin.json` 中

646* 當您啟用外掛時,Claude Code 自動啟動其 MCP 伺服器646* 當您啟用外掛時,Claude Code 會自動啟動其 MCP 伺服器

647* Claude Code 將外掛 MCP 工具與手動設定的 MCP 工具一起提供647* Claude Code 會將外掛 MCP 工具與手動設定的 MCP 工具一併提供

648* 您透過安裝或解除安裝外掛新增和移除外掛伺服器,而不是使用 `/mcp` 命令。您仍然可以 [在 `/mcp` 中切換已安裝的外掛伺服器關閉](#disable-a-server-without-removing-it),這會停止 Claude Code 連接到它,而不會移除外掛648* 外掛伺服器的新增與移除是透過安裝或解除安裝外掛來完成,而非使用 `/mcp` 命令。您仍可在 `/mcp` 中[將已安裝的外掛伺服器切換為關閉](#disable-a-server-without-removing-it),這會讓 Claude Code 停止連線至該伺服器,而不會移除外掛

649 649 

650**範例外掛 MCP 設定**:650**外掛 MCP 設定範例**:

651 651 

652在外掛根目錄的 `.mcp.json` 中:652在外掛根目錄的 `.mcp.json` 中:

653 653 


665}665}

666```666```

667 667 

668或內聯在 `plugin.json` 中:668或內嵌於 `plugin.json` 中:

669 669 

670```json theme={null}670```json theme={null}

671{671{


681 681 

682**外掛 MCP 功能**:682**外掛 MCP 功能**:

683 683 

684* **自動生命週期**:伺服器在這些點連接和斷開連接:684* **自動生命週期**:伺服器會在以下時間點連線與中斷連線:

685 * 在工作階段啟動時,Claude Code 自動連接已啟用外掛的伺服器。在 `/mcp` 中,您之前使用過的遠端(HTTP 或 SSE)外掛伺服器可以改為顯示 [`cached` 狀態](#server-status-detail);Claude Code 在 Claude 首次呼叫其工具之一時連接它。當 stdio 外掛伺服器的連接在不到 15 分鐘前失敗時,Claude Code 會 [跳過該連接](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached)685 * 在工作階段啟動時,Claude Code 會自動連線已啟用外掛的伺服器。在 `/mcp` 中,您先前使用過的遠端(HTTP 或 SSE)外掛伺服器可能會改為顯示 [`cached` 狀態](#server-status-detail);Claude Code 會在 Claude 首次呼叫其中一個工具時連線該伺服器。當 stdio 外掛伺服器的連線在不到 15 分鐘前失敗時,Claude Code 會[略過該連線](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached)

686 * 如果您在工作階段期間啟用或停用外掛,Claude Code 在變更適用時連接或斷開其 MCP 伺服器。[在不重新啟動的情況下應用外掛變更](https://code.claude.com/docs/zh-TW/plugins/cli-reference.md#reload-plugins)描述何時發生。在沒有互動式終端機的工作階段中,`/reload-plugins` 不連接或斷開外掛 MCP 伺服器;這些變更在您的下一個工作階段中生效686 * 如果您在工作階段期間啟用或停用外掛,Claude Code 會在變更套用時連線或中斷其 MCP 伺服器。[無需重新啟動即可套用外掛變更](https://code.claude.com/docs/zh-TW/plugins/cli-reference.md#reload-plugins)說明了套用的時機。在沒有互動式終端機的工作階段中,`/reload-plugins` 不會連線或中斷外掛 MCP 伺服器;這些變更會在您的下一個工作階段生效

687 * 當您重新載入時,Claude Code 保留設定未變更的外掛伺服器的即時連接,並在您 [從 Agent SDK 替換工作階段的 MCP 伺服器列表](https://code.claude.com/docs/zh-TW/agent-sdk/typescript.md#mcpsetserversresult)而不命名它們時執行相同操作687 * 當您重新載入時,Claude Code 會保留設定未變更之外掛伺服器的現有連線;當您從 Agent SDK [取代工作階段的 MCP 伺服器清單](https://code.claude.com/docs/zh-TW/agent-sdk/typescript.md#mcpsetserversresult)而未指名這些伺服器時,也會如此處理

688 * 當您在 v2.1.246 或更新版本上 [使用 `/cd` 移動工作階段](https://code.claude.com/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 連接新目錄的設定啟用的外掛的伺服器,並斷開不再啟用的外掛的伺服器,因此您不需要在移動後執行 `/reload-plugins`688 * 當您在 v2.1.246 或更新版本中[使用 `/cd` 移動工作階段](https://code.claude.com/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 會連線新目錄設定所啟用之外掛的伺服器,並中斷不再啟用之外掛的伺服器,因此移動後您不需要執行 `/reload-plugins`

689 * 在 [雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,對尚未連接的外掛伺服器的 MCP 呼叫(例如空閒工作階段喚醒後)按需啟動伺服器並等待它連接689 * 在[雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,對尚未連線之外掛伺服器的 MCP 呼叫(例如在閒置的工作階段剛喚醒後)會依需求啟動該伺服器,並等待其連線

690* **路徑佔位符**:`${CLAUDE_PLUGIN_ROOT}` 解析為外掛的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 解析為其 [持久狀態](https://code.claude.com/docs/zh-TW/plugins/components.md#path-variables-and-persistent-data)目錄,`${CLAUDE_PROJECT_DIR}` 解析為穩定的專案根目錄。替換適用於:690* **路徑預留位置**:`${CLAUDE_PLUGIN_ROOT}` 會解析為外掛的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 會解析為其[持久狀態](https://code.claude.com/docs/zh-TW/plugins/components.md#path-variables-and-persistent-data)目錄,而 `${CLAUDE_PROJECT_DIR}` 會解析為穩定的專案根目錄。替換適用於:

691 * `stdio` 伺服器:`command`、`args`、`env`691 * `stdio` 伺服器:`command`、`args`、`env`

692 * `http`、`sse` 和 `ws` 伺服器:`url`、`headers` 和 `headersHelper`692 * `http`、`sse` 和 `ws` 伺服器:`url`、`headers` 和 `headersHelper`

693* **使用者環境存取**:存取與手動設定伺服器相同的環境變數693* **使用者環境存取**:可存取與手動設定之伺服器相同的環境變數

694* **多個傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,儘管傳輸支援可能因伺服器而異694* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,但傳輸支援可能因伺服器而異

695 695 

696外掛伺服器出現在 `/mcp` 中,指標顯示它們來自外掛。696外掛伺服器會顯示在 `/mcp` 中,並附有表示其來自外掛的標示。

697 697 

698`claude mcp get` 會隱藏為外掛的 stdio 或 WebSocket 伺服器設定的值,因為它們可能攜帶憑證:698`claude mcp get` 會隱藏為外掛之 stdio 或 WebSocket 伺服器設定的值,因為這些值可能包含憑證:

699 699 

700* **stdio 伺服器**:它列印 `Command: stdio`、空 `Args:` 行,並將每個環境變數列印為 `NAME=[REDACTED]`700* **stdio 伺服器**:會輸出 `Command: stdio`、一行空白的 `Args:`,並將每個環境變數輸出為 `NAME=[REDACTED]`

701* **WebSocket 伺服器**:它列印 `URL: ws`,並將每個標頭列印為 `<name>: [REDACTED]`,而 `claude mcp list` 會以 `ws` 取代 URL 顯示701* **WebSocket 伺服器**:會輸出 `URL: ws`,並將每個標頭輸出為 `<name>: [REDACTED]`,而 `claude mcp list` 會以 `ws` 取代 URL 顯示

702 702 

703若要查看外掛設定的內容,請 [在磁碟上找到外掛](https://code.claude.com/docs/zh-TW/plugins/loading.md#find-plugins-on-disk)並讀取其 `.mcp.json` 或 `plugin.json`。703若要查看外掛設定的內容,請[在磁碟上找到該外掛](https://code.claude.com/docs/zh-TW/plugins/loading.md#find-plugins-on-disk),並閱讀其 `.mcp.json` 或 `plugin.json`。

704 704 

705**外掛 MCP 工具名稱**:705**外掛 MCP 工具名稱**:

706 706 

707來自外掛捆綁的 MCP 伺服器的工具在其可呼叫名稱中包含外掛名稱和伺服器金鑰。完整形式是 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都被替換為 `_`。對於名為 `my-plugin` 的外掛中捆綁的 `database-tools` 伺服器,`query` 工具可呼叫為:707來自外掛捆綁之 MCP 伺服器的工具,其可呼叫名稱同時包含外掛名稱與伺服器鍵。完整形式為 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都會被替換為 `_`。以名為 `my-plugin` 之外掛中捆綁的 `database-tools` 伺服器為例,`query` 工具的呼叫名稱為:

708 708 

709```709```

710mcp__plugin_my-plugin_database-tools__query710mcp__plugin_my-plugin_database-tools__query

711```711```

712 712 

713在 [權限規則](https://code.claude.com/docs/zh-TW/permissions.md)、skill 的 `allowed-tools` 列表、[subagent 的 `tools` 欄位](https://code.claude.com/docs/zh-TW/sub-agents#available-tools)或 [hook matcher](https://code.claude.com/docs/zh-TW/hooks.md#match-mcp-tools) 中參考工具時使用此完整名稱。針對裸伺服器金鑰編寫的 hook matcher(例如 `mcp__database-tools__.*`)永遠不會針對外掛捆綁的伺服器觸發。713在[權限規則](https://code.claude.com/docs/zh-TW/permissions.md)、skill 的 `allowed-tools` 清單、[subagent 的 `tools` 欄位](https://code.claude.com/docs/zh-TW/sub-agents#available-tools)或 [hook matcher](https://code.claude.com/docs/zh-TW/hooks.md#match-mcp-tools) 中參照該工具時,請使用此完整名稱。針對單純伺服器鍵撰寫的 hook matcher(例如 `mcp__database-tools__.*`)永遠不會對外掛捆綁的伺服器觸發。

714 714 

715伺服器本身在範圍名稱 `plugin:<plugin-name>:<server-name>` 下註冊,例如 `plugin:my-plugin:database-tools`。在預期已設定伺服器名稱的地方使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](https://code.claude.com/docs/zh-TW/hooks#mcp-tool-hook-fields)。715伺服器本身會以範圍名稱 `plugin:<plugin-name>:<server-name>` 註冊,例如 `plugin:my-plugin:database-tools`。在需要已設定之伺服器名稱的地方請使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](https://code.claude.com/docs/zh-TW/hooks#mcp-tool-hook-fields)。

716 716 

717請參閱 [外掛元件參考](https://code.claude.com/docs/zh-TW/plugins/components.md#mcp-servers)以取得有關使用外掛捆綁 MCP 伺服器的詳細資訊。717如需在外掛中捆綁 MCP 伺服器的詳細資訊,請參閱[外掛元件參考](https://code.claude.com/docs/zh-TW/plugins/components.md#mcp-servers)。

718 718 

719## MCP 安裝範圍719## MCP 安裝範圍

720 720 


1332 1332 

1333來自 claude.ai 的伺服器會出現在清單中,並有指示器顯示它們來自 claude.ai。1333來自 claude.ai 的伺服器會出現在清單中,並有指示器顯示它們來自 claude.ai。

1334 1334 

1335Anthropic 也自行提供一些 connectors,無需您或管理員新增。在可使用 [Claude Docs](https://code.claude.com/docs/zh-TW/artifacts.md#write-a-document-with-claude-docs) 的帳戶上,`/mcp` 會列出 `claude.ai Claude Docs`,無需設定,當您要求建立供他人使用的文件時,Claude 會使用它。若要關閉它,請將 `"claude.ai Claude Docs"` 的 `serverName` 項目新增至 `deniedMcpServers`,或使用 `/mcp` 切換,兩者都在 [停用 claude.ai connectors](#disable-claude-ai-connectors) 中說明。1335Anthropic 也自行提供一些 connectors,無需您或管理員新增。在可使用 [Claude Docs](https://code.claude.com/docs/zh-TW/artifacts.md#write-a-document-with-claude-docs) 的帳戶上,`/mcp` 會列出 `claude.ai Claude Docs`,無需設定,當您要求建立供他人使用的文件時,Claude 會使用它。若要僅關閉此 connector,請參閱 [停用 claude.ai connectors](#disable-claude-ai-connectors)。

1336 1336 

1337當您的組織在 claude.ai 中管理其驗證時,Claude Code 會在 `/mcp` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中將 connector 標記為 `managed`。Managed 狀態不會改變 Claude Code 連接到 connector 的方式,也不會改變您組織的 [工具控制](#organization-controls-on-connector-tools) 的應用方式。1337當您的組織在 claude.ai 中管理其驗證時,Claude Code 會在 `/mcp` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中將 connector 標記為 `managed`。Managed 狀態不會改變 Claude Code 連接到 connector 的方式,也不會改變您組織的 [工具控制](#organization-controls-on-connector-tools) 的應用方式。

1338 1338 

model-config.md +7 −2

Details

349 349 

350當 Claude Code 套用的受管設定定義了 `availableModels` 時,只會套用該清單,[自行提供清單的主機平台](https://code.claude.com/docs/zh-TW/settings.md#exceptions-to-managed-settings-precedence)除外:使用者、專案或本機設定中的項目無法擴充它,且 Claude Code 也絕不會跨受管來源合併 `availableModels`;[Claude Code 如何合併受管來源](https://code.claude.com/docs/zh-TW/managed-settings.md#how-claude-code-combines-managed-sources)說明套用哪個來源的清單。否則,來自使用者、專案與本機設定的清單會如同其他陣列設定一樣[串接並去除重複](https://code.claude.com/docs/zh-TW/settings.md#settings-precedence)。在 Claude Code v2.1.175 之前,來自較低優先順序範圍的項目會合併至受管清單,而不是被其取代。350當 Claude Code 套用的受管設定定義了 `availableModels` 時,只會套用該清單,[自行提供清單的主機平台](https://code.claude.com/docs/zh-TW/settings.md#exceptions-to-managed-settings-precedence)除外:使用者、專案或本機設定中的項目無法擴充它,且 Claude Code 也絕不會跨受管來源合併 `availableModels`;[Claude Code 如何合併受管來源](https://code.claude.com/docs/zh-TW/managed-settings.md#how-claude-code-combines-managed-sources)說明套用哪個來源的清單。否則,來自使用者、專案與本機設定的清單會如同其他陣列設定一樣[串接並去除重複](https://code.claude.com/docs/zh-TW/settings.md#settings-precedence)。在 Claude Code v2.1.175 之前,來自較低優先順序範圍的項目會合併至受管清單,而不是被其取代。

351 351 

352在有效清單中,指定某系列中特定模型的項目(無論是版本前綴或完整模型 ID)會停用該系列的萬用字元項目:`["sonnet", "claude-sonnet-4-5"]` 只允許 Sonnet 4.5 版本,而不是所有 Sonnet 模型。352在有效清單中,指定某系列中特定模型的項目(無論是版本前綴或完整模型 ID)會停用該系列的萬用字元項目。例如,使用 `["sonnet", "claude-sonnet-4-5"]` 時,使用者只能選取 `claude-sonnet-4-5` 所[比對](#restrict-model-selection)的模型 ID,而不是所有 Sonnet 模型。

353 353 

354### Mantle 模型 ID354### Mantle 模型 ID

355 355 


947>947>

948> 透過 [MDM 或受管設定檔](https://code.claude.com/docs/zh-TW/managed-settings.md#delivery-mechanisms)派送的 `availableModels` 允許清單在使用第三方供應商時仍然適用;[伺服器受管設定不會派送至該處](https://code.claude.com/docs/zh-TW/server-managed-settings.md#platform-availability)。948> 透過 [MDM 或受管設定檔](https://code.claude.com/docs/zh-TW/managed-settings.md#delivery-mechanisms)派送的 `availableModels` 允許清單在使用第三方供應商時仍然適用;[伺服器受管設定不會派送至該處](https://code.claude.com/docs/zh-TW/server-managed-settings.md#platform-availability)。

949>949>

950> 篩選會比對 `opus` 等模型別名、`claude-opus-4-8` 等版本前綴,或完整的供應商格式模型 ID。`us.anthropic.` 等供應商特定前綴不會被移除,因此若要允許特定模型,請列出其完整的供應商格式 ID,或透過 [`modelOverrides`](#override-model-ids-per-version) 進行對應。對於固定模型,該 ID 即為您在其 `ANTHROPIC_DEFAULT_*_MODEL` 變數中設定的值。比對前,允許清單項目與所要求模型中的任何 `[1m]` 後綴都會被移除。950> 篩選會比對 `opus` 等模型別名、`claude-opus-4-8` 等版本前綴,或完整的供應商格式模型 ID。`us.anthropic.` 等供應商特定前綴不會被移除,因此若要允許特定模型,請透過 [`modelOverrides`](#override-model-ids-per-version) 進行對應,或列出其完整的供應商格式 ID:

951>

952> * **Google Cloud's Agent Platform**:當 Claude Code 所請求的 ID 帶有 `@` 日期(例如 `claude-sonnet-4-5@20250929`)時,請在允許清單項目中包含該日期。單獨的 `claude-sonnet-4-5` 在任一 [`availableModelsMatch`](https://code.claude.com/docs/zh-TW/settings-reference#availablemodelsmatch) 設定下都不會符合該 ID。

953> * **固定模型**:列出您在該模型的 `ANTHROPIC_DEFAULT_*_MODEL` 變數中設定的值

954>

955> 比對前,允許清單項目與所請求模型中的任何 `[1m]` 後綴都會被移除。

951 956 

952### 自訂固定模型的顯示與功能957### 自訂固定模型的顯示與功能

953 958 

Details

605 605 

606* `prompt.id`:將使用者提示詞與其後直到下一個提示詞之前的所有事件相關聯的 UUID。請參閱[事件關聯屬性](#event-correlation-attributes)。606* `prompt.id`:將使用者提示詞與其後直到下一個提示詞之前的所有事件相關聯的 UUID。請參閱[事件關聯屬性](#event-correlation-attributes)。

607* `workspace.host_paths`:在桌面應用程式中選取的主機工作區目錄,以字串陣列表示607* `workspace.host_paths`:在桌面應用程式中選取的主機工作區目錄,以字串陣列表示

608* `workflow.run_id`:執行識別碼,前綴為 `wf_`,出現在屬於 [Workflow](https://code.claude.com/docs/zh-TW/workflows.md) 工具執行的 agent 所發出的 API 與工具事件上。依單一 `workflow.run_id` 篩選事件即可重建該次執行的 API 請求與工具結果。此識別碼涵蓋工作流程腳本所產生的 agent,以及這些 agent 再產生的任何 agent,例如 skill 呼叫。它與 Workflow 工具結果中回報的執行識別碼相符。在其他所有事件上皆不存在。608* `workflow.run_id`:執行識別碼,前綴為 `wf_`,出現在屬於 [Workflow](https://code.claude.com/docs/zh-TW/workflows.md) 工具執行的 agent 所發出的 API 與工具事件上。依單一 `workflow.run_id` 篩選事件,即可重建該次執行的 API 請求與工具結果。此識別碼涵蓋工作流程腳本產生的 agent,以及這些 agent 再產生的任何 agent,例如 skill 呼叫。它與 Workflow 工具結果中回報的執行識別碼相符。

609* `workflow.name`:工作流程的名稱,即其腳本的 `meta.name`,與 `workflow.run_id` 一同發出。當執行的是未經修改的內建腳本時,內建工作流程名稱會原樣顯示。使用者撰寫的名稱(包括內建腳本的編輯副本)會被替換為 `custom`,除非設定了 `OTEL_LOG_TOOL_DETAILS=1`。609* `workflow.name`:工作流程的名稱,即其腳本的 `meta.name`,與 `workflow.run_id` 一同發出。當執行的是未經修改的內建腳本時,內建工作流程名稱會原樣顯示。使用者撰寫的名稱(包括內建腳本的編輯副本)會被替換為 `custom`,除非設定了 `OTEL_LOG_TOOL_DETAILS=1`。

610* `agent_id`:引發該事件的 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 的識別碼,例如 `a3f2c1b4d5e6f7a80`。攜帶此屬性的事件包括 subagent 的 API 與工具事件、其 [`assistant_response`](#assistant-response-event) 事件,以及已完成 subagent 的 [`subagent_completed`](#subagent-completed-event)。在主工作階段與[程序內隊員](https://code.claude.com/docs/zh-TW/agent-teams.md#choose-a-display-mode)的事件上不存在。subagent 的 [span `agent_id`](#span-attributes) 是相同的值,或在開頭的 `a` 後加上標籤,例如 `acompact-3f2c1b4d5e6f7a80`。需要 Claude Code v2.1.310 或更新版本

611* `parent_agent_id`:產生或最後一次恢復引發該事件之 subagent 的 agent 的 `agent_id`。當該 agent 是主工作階段時不存在。需要 Claude Code v2.1.310 或更新版本

610 612 

611#### 儲存庫屬性613#### 儲存庫屬性

612 614 


755| `prompt.id` | UUID v4 識別碼,連結處理單一使用者提示詞期間產生的所有事件 |757| `prompt.id` | UUID v4 識別碼,連結處理單一使用者提示詞期間產生的所有事件 |

756| `event.sequence` | 從 0 開始的計數器,用於排序事件,以每個 Claude Code 程序而非每個工作階段計數 |758| `event.sequence` | 從 0 開始的計數器,用於排序事件,以每個 Claude Code 程序而非每個工作階段計數 |

757| `message.uuid` | 保存在工作階段逐字稿(`~/.claude/projects/*/*.jsonl` 檔案)中之訊息的 UUID。出現在 `assistant_response`、`api_response_body` 以及 `user_prompt` 上,但命令分派除外,因為命令分派可能產生零則或多則訊息。在 `assistant_response` 與 `api_response_body` 上,這是該回應的最終逐字稿項目,下一個回合的 `parentUuid` 會從此項目串接。在 `api_response_body` 上需要 Claude Code v2.1.274 或更新版本 |759| `message.uuid` | 保存在工作階段逐字稿(`~/.claude/projects/*/*.jsonl` 檔案)中之訊息的 UUID。出現在 `assistant_response`、`api_response_body` 以及 `user_prompt` 上,但命令分派除外,因為命令分派可能產生零則或多則訊息。在 `assistant_response` 與 `api_response_body` 上,這是該回應的最終逐字稿項目,下一個回合的 `parentUuid` 會從此項目串接。在 `api_response_body` 上需要 Claude Code v2.1.274 或更新版本 |

758| `request_id` | 伺服器指派的 API 請求 ID,從 `request-id` 回應標頭讀取,例如 `req_011...`。在沒有 `request-id` 標頭的回應上(如 [Amazon Bedrock](https://code.claude.com/docs/zh-TW/amazon-bedrock.md)),此值改為來自 `x-amzn-requestid` 標頭。當回應帶有任一標頭時,出現在 `api_request`、`api_error`、`api_refusal`、`assistant_response` 與 `api_response_body` 上。與 `llm_request` 追蹤 span 上的同名屬性相符。`x-amzn-requestid` 來源需要 Claude Code v2.1.282 或更新版本 |760| `request_id` | 伺服器指派的 API 請求 ID,從 `request-id` 回應標頭讀取,例如 `req_011...`。對於沒有 `request-id` 標頭的回應(如 [Amazon Bedrock](https://code.claude.com/docs/zh-TW/amazon-bedrock.md) 上),值會改從 `x-amzn-requestid` 標頭取得。當回應攜帶其中任一標頭時,會出現在 `api_request`、`api_error`、`api_refusal`、`assistant_response`、`api_response_body`、[`tool_result`](#tool-result-event) 與 [`tool_decision`](#tool-decision-event) 上。與 `llm_request` 追蹤 span 上的同名屬性相符。`x-amzn-requestid` 來源需要 Claude Code v2.1.282 或更新版本 |

759| `client_request_id` | 用戶端產生的 UUID,以 `x-client-request-id` 請求標頭傳送。在第一方 API 連線上出現於 `api_request` 與 `api_error`;在第三方供應商後端上,以及請求透過非串流備援重試時不會出現。可將請求與其回應配對,且對於逾時等從未產生伺服器 `request_id` 的失敗情況仍然可用。與 `llm_request` 追蹤 span 上的同名屬性相符 |761| `client_request_id` | 用戶端產生的 UUID,以 `x-client-request-id` 請求標頭傳送。在第一方 API 連線上出現於 `api_request` 與 `api_error`;在第三方供應商後端上,以及請求透過非串流備援重試時不會出現。可將請求與其回應配對,且對於逾時等從未產生伺服器 `request_id` 的失敗情況仍然可用。與 `llm_request` 追蹤 span 上的同名屬性相符 |

760 762 

761若要追蹤由單一提示詞觸發的所有活動,請以特定的 `prompt.id` 值篩選您的事件。這會傳回處理該提示詞期間發生的 user\_prompt 事件、任何 api\_request 事件以及任何 tool\_result 事件。763若要追蹤由單一提示詞觸發的所有活動,請以特定的 `prompt.id` 值篩選您的事件。這會傳回處理該提示詞期間發生的 user\_prompt 事件、任何 api\_request 事件以及任何 tool\_result 事件。


820* `event.sequence`:用於排序事件的每程序計數器,說明請參閱[事件關聯屬性](#event-correlation-attributes)822* `event.sequence`:用於排序事件的每程序計數器,說明請參閱[事件關聯屬性](#event-correlation-attributes)

821* `tool_name`:工具名稱823* `tool_name`:工具名稱

822* `tool_use_id`:此次工具呼叫的唯一識別碼。與傳遞給 hook 的 `tool_use_id` 相符,可讓 OTel 事件與 hook 擷取的資料相互關聯。824* `tool_use_id`:此次工具呼叫的唯一識別碼。與傳遞給 hook 的 `tool_use_id` 相符,可讓 OTel 事件與 hook 擷取的資料相互關聯。

825* `request_id`:包含此工具呼叫之 API 回應的 [`request_id`](#event-correlation-attributes),讓您能將該呼叫與該回應的 API 事件聯結。當該回應沒有請求 ID,或沒有任何 API 回應包含該呼叫時不存在。需要 Claude Code v2.1.310 或更新版本

823* `success`:`"true"` 或 `"false"`826* `success`:`"true"` 或 `"false"`

824* `duration_ms`:執行時間(毫秒)827* `duration_ms`:執行時間(毫秒)

825* `error_type`:工具失敗時的錯誤類別字串,例如 `"Error:ENOENT"` 或 `"ShellError"`828* `error_type`:工具失敗時的錯誤類別字串,例如 `"Error:ENOENT"` 或 `"ShellError"`


972* `event.sequence`:用於排序事件的每程序計數器,說明請參閱[事件關聯屬性](#event-correlation-attributes)975* `event.sequence`:用於排序事件的每程序計數器,說明請參閱[事件關聯屬性](#event-correlation-attributes)

973* `tool_name`:工具名稱(例如 "Read"、"Edit"、"Write"、"NotebookEdit")976* `tool_name`:工具名稱(例如 "Read"、"Edit"、"Write"、"NotebookEdit")

974* `tool_use_id`:此次工具呼叫的唯一識別碼。與傳遞給 hook 的 `tool_use_id` 相符,可讓 OTel 事件與 hook 擷取的資料相互關聯。977* `tool_use_id`:此次工具呼叫的唯一識別碼。與傳遞給 hook 的 `tool_use_id` 相符,可讓 OTel 事件與 hook 擷取的資料相互關聯。

978* `request_id`:包含此工具呼叫之 API 回應的 [`request_id`](#event-correlation-attributes),讓您能將該呼叫與該回應的 API 事件聯結。當該回應沒有請求 ID,或沒有任何 API 回應包含該呼叫時不存在。需要 Claude Code v2.1.310 或更新版本

975* `decision`:`"accept"` 或 `"reject"`979* `decision`:`"accept"` 或 `"reject"`

976* `tool_source`:一律出現。工具的來源,為 CLI 撰寫之值的封閉集合:980* `tool_source`:一律出現。工具的來源,為 CLI 撰寫之值的封閉集合:

977 * `"builtin"`:CLI 本身的工具981 * `"builtin"`:CLI 本身的工具


1024 * Skill 工具:包含 `skill_name`1028 * Skill 工具:包含 `skill_name`

1025 * Agent 工具或舊版 Task 工具:包含 `subagent_type`1029 * Agent 工具或舊版 Task 工具:包含 `subagent_type`

1026 1030 

1027若您將 OpenTelemetry SDK 的 `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` 調降到低於 `tool_decision` 事件上的屬性數量,SDK 會捨棄 Claude Code 最後設定的屬性。SDK 會先捨棄 `permission_mode`,其次是 `classifier_category`,第三是 `classifier_verdict`,之後才會捨棄事件的其他屬性。此順序需要 Claude Code v2.1.302 或更新版本。1031如果您將 OpenTelemetry SDK 的 `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` 調低到低於 `tool_decision` 事件上的屬性數量,SDK 會捨棄 Claude Code 最後設定的屬性。SDK 會在其他任何屬性之前依下列順序捨棄這些屬性,並略過事件未攜帶的屬性:

1032 

10331. `parent_agent_id`

10342. `agent_id`

10353. `request_id`

10364. `permission_mode`

10375. `classifier_category`

10386. `classifier_verdict`

1039 

1040在 Claude Code v2.1.302 或更新版本中,`permission_mode`、`classifier_category` 與 `classifier_verdict` 會依此順序捨棄。`parent_agent_id`、`agent_id` 與 `request_id` 需要 v2.1.310 或更新版本。

1028 1041 

1029#### 安全事件1042#### 安全事件

1030 1043 

Details

240 240 

241兩個 Datadog 進入主機僅攜帶選用的操作遙測,設定 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/zh-TW/env-vars) 會停用兩者。第三方提供者上的工作階段永遠不會傳送到這些主機,即使平台設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars) 且遙測指標預設為開啟。請參閱[遙測服務](https://code.claude.com/docs/zh-TW/data-usage.md#telemetry-services)以了解 Claude Code 傳送的所有內容以及如何在完成允許清單之前停用它。241兩個 Datadog 進入主機僅攜帶選用的操作遙測,設定 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/zh-TW/env-vars) 會停用兩者。第三方提供者上的工作階段永遠不會傳送到這些主機,即使平台設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars) 且遙測指標預設為開啟。請參閱[遙測服務](https://code.claude.com/docs/zh-TW/data-usage.md#telemetry-services)以了解 Claude Code 傳送的所有內容以及如何在完成允許清單之前停用它。

242 242 

243### 雲端提供者和 LLM 閘道路由

244 

243使用 [Amazon Bedrock](https://code.claude.com/docs/zh-TW/amazon-bedrock.md)、[Google Cloud 的 Agent Platform](https://code.claude.com/docs/zh-TW/google-vertex-ai.md)、[Microsoft Foundry](https://code.claude.com/docs/zh-TW/microsoft-foundry.md) 或已登入的 [Claude 應用程式閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)工作階段時,模型流量和驗證會連線到您的提供者或閘道,而不是 `api.anthropic.com`、`claude.ai` 或 `platform.claude.com`。WebFetch 工具仍會呼叫 `api.anthropic.com` 進行其[網域安全檢查](https://code.claude.com/docs/zh-TW/data-usage.md#webfetch-domain-safety-check),除非您在[設定](https://code.claude.com/docs/zh-TW/settings.md)中設定 `skipWebFetchPreflight: true`。245使用 [Amazon Bedrock](https://code.claude.com/docs/zh-TW/amazon-bedrock.md)、[Google Cloud 的 Agent Platform](https://code.claude.com/docs/zh-TW/google-vertex-ai.md)、[Microsoft Foundry](https://code.claude.com/docs/zh-TW/microsoft-foundry.md) 或已登入的 [Claude 應用程式閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)工作階段時,模型流量和驗證會連線到您的提供者或閘道,而不是 `api.anthropic.com`、`claude.ai` 或 `platform.claude.com`。WebFetch 工具仍會呼叫 `api.anthropic.com` 進行其[網域安全檢查](https://code.claude.com/docs/zh-TW/data-usage.md#webfetch-domain-safety-check),除非您在[設定](https://code.claude.com/docs/zh-TW/settings.md)中設定 `skipWebFetchPreflight: true`。

244 246 

245透過 [LLM 閘道](https://code.claude.com/docs/zh-TW/llm-gateway)使用 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 進行路由時,[快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md)可用性檢查仍會呼叫 `api.anthropic.com` 而不是閘道基底 URL。檢查會遵守已設定的 HTTP 代理,因此在網路區塊是原因的情況下,代理中 `api.anthropic.com` 的允許清單項目是修正方式。網路區塊只有在主機即使透過代理也無法連線時才會使檢查失敗,快速模式隨後會報告連線錯誤。當檢查呈現 Anthropic 拒絕的閘道簽發認證時,也會出現相同的連線錯誤;允許清單在那裡沒有幫助,因為沒有任何東西被阻止。請參閱[在代理和 LLM 閘道後面使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)以了解恢復它的變數。247如果您的開發人員在透過 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential) 設定的 [LLM 閘道](https://code.claude.com/docs/zh-TW/llm-gateway)後面使用[快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md),請保持 `api.anthropic.com` 可透過您的代理伺服器連線。當 Claude Code 傳送快速模式可用性檢查時,該檢查會透過任何已設定的 HTTP 代理伺服器連線到該主機,絕不會連線到閘道。若要了解何時不會傳送檢查,以及在各種情況下恢復快速模式的變數,請參閱[在代理伺服器和 LLM 閘道後面使用快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)。

246 248 

247### 組織 IP 允許清單和代理出口249### 組織 IP 允許清單和代理出口

248 250 

Details

106 106 

107hook 模組中的程式碼巢狀過深,或其匯入鏈過長,導致 Claude Code 無法載入。該行以 mod 的名稱和 `hooks module did not load:` 開頭,然後給出某個檔案的名稱以及此原因。107hook 模組中的程式碼巢狀過深,或其匯入鏈過長,導致 Claude Code 無法載入。該行以 mod 的名稱和 `hooks module did not load:` 開頭,然後給出某個檔案的名稱以及此原因。

108 108 

109請檢查該檔案以及透過其匯入所連結到的檔案,找出巢狀最深的部分並重寫以減少巢狀,或縮短匯入鏈。如果該 mod 是您安裝而非您撰寫的,請要求其作者進行修改。109在該檔案及其匯入所觸及的檔案中,找出巢狀層級最深的程式碼並加以改寫以減少巢狀層級,或縮短匯入鏈。如果該 mod 並非由您撰寫,請要求其作者修正。

110 110 

111### `the parser stopped` 或 `the engine ran out of stack loading the file`111### `the parser stopped` 或 `the engine ran out of stack loading the file`

112 112 

routines.md +20 −2

Details

25* 只有 API 觸發條件的任務會在您呼叫其端點時執行。25* 只有 API 觸發條件的任務會在您呼叫其端點時執行。

26* 只有 GitHub 觸發條件的任務會在發生符合的儲存庫事件時執行。26* 只有 GitHub 觸發條件的任務會在發生符合的儲存庫事件時執行。

27 27 

28排程任務適用於 Pro、Max、Team 和 Enterprise 方案。您可以在 [claude.ai/code/routines](https://claude.ai/code/routines) 建立和管理它們,或從 CLI 使用 `/schedule`。先前的名稱 routines [仍會出現在](#where-the-name-routines-still-appears)網址、CLI 和 API 中。28排程任務適用於 Pro、Max、Team 和 Enterprise 方案。您可以在 [claude.ai/code/routines](https://claude.ai/code/routines) 建立和管理它們,或從 CLI 使用 `/schedule`。先前的名稱 routines [仍會出現](#where-the-name-routines-still-appears)。

29 29 

30> [!NOTE]30> [!NOTE]

31>31>


66 66 

67**1. 開啟建立對話方塊**67**1. 開啟建立對話方塊**

68 68 

69前往 [claude.ai/code/routines](https://claude.ai/code/routines) 並按一下 **New task**。如果先開啟了選單,請選擇 **Set up manually**。**New scheduled task** 對話方塊隨即開啟。選單中的另一個選項 **Create with Claude** 則可讓您在對話中描述任務,由 Claude 替您建立。69前往 [claude.ai/code/routines](https://claude.ai/code/routines) 並按一下 **New task**,以開啟 **New scheduled task** 對話方塊。繼續之前,請檢查是否出現以下畫面:

70 

71* 如果按鈕顯示的是 **New routine** 而非 **New task**,請按一下 **New routine**,並依照[完整頁面表單](#full-page-form)繼續操作。

72* 在 Desktop 應用程式中,如果開啟了包含 **Local** 和 **Cloud** 的選單,請前往[完整頁面表單](#full-page-form)。

73* 如果開啟了包含 **Create with Claude** 和 **Set up manually** 的選單,請選擇 **Set up manually** 以開啟對話方塊。**Create with Claude** 則可讓您在對話中描述任務,改由 Claude 替您建立。

74* 如果開啟的是完整頁面而非對話方塊,請前往[完整頁面表單](#full-page-form)。

70 75 

71如果對話方塊開啟時已經顯示 **Repositories** 和 **Environment**,請參閱[該對話方塊的差異](#dialog-with-repositories-and-environment-in-the-main-view)。否則,此對話方塊也會為 claude.ai 聊天建立排程任務。若要讓您的任務成為對話方塊中所稱的 Claude Code 任務,請在接下來的步驟中選擇儲存庫,或新增 GitHub 事件或 API 觸發條件。這類任務會在雲端工作階段中執行 Claude Code。76如果對話方塊開啟時已經顯示 **Repositories** 和 **Environment**,請參閱[該對話方塊的差異](#dialog-with-repositories-and-environment-in-the-main-view)。否則,此對話方塊也會為 claude.ai 聊天建立排程任務。若要讓您的任務成為對話方塊中所稱的 Claude Code 任務,請在接下來的步驟中選擇儲存庫,或新增 GitHub 事件或 API 觸發條件。這類任務會在雲端工作階段中執行 Claude Code。

72 77 


126 131 

127請在新增 GitHub 事件觸發條件之前先選擇儲存庫,因為在選擇儲存庫之前無法使用該觸發條件。132請在新增 GitHub 事件觸發條件之前先選擇儲存庫,因為在選擇儲存庫之前無法使用該觸發條件。

128 133 

134#### 完整頁面表單

135 

136在 Desktop 應用程式中,如果開啟了包含 **Local** 和 **Cloud** 的選單,請選擇 **Cloud**。標題為 **New routine** 或 **New scheduled task** 的頁面隨即開啟。請填寫其中的欄位:

137 

138* **Name**:輸入名稱。

139* **Instructions**:輸入提示詞。在同一個方塊中,選擇模型、儲存庫和環境。若要了解各項所控制的內容,請參閱[從網頁建立](#create-from-the-web)下的步驟。

140* **Select a trigger**:選擇 **Schedule**、**GitHub event** 或 **API**。若為排程,請參閱[新增排程觸發條件](#add-a-schedule-trigger)。若為 [GitHub 事件](#add-a-github-trigger),請選擇儲存庫。若為 [API 觸發條件](#add-an-api-trigger),請從按一下 **Create** 後開啟的 **API token** 對話方塊中複製 token,因為它只會顯示一次。若要組合多個觸發條件,請按一下 **Add another trigger**。

141* **Connectors**:預設會包含您所有已連接的連接器,因此請移除任務不需要的連接器。

142 

143如果 **Create** 無法使用,請將游標停留在其上方,以查看表單還需要哪些內容。按一下 **Create**,任務的詳細資料頁面隨即開啟。

144 

129### 從 CLI 建立145### 從 CLI 建立

130 146 

131在任何工作階段中執行 `/schedule`,即可透過對話方式建立排程任務。您也可以直接傳入描述,例如定期任務 `/schedule daily PR review at 9am`,或一次性任務 `/schedule clean up feature flag in one week`。Claude 會逐步收集與網頁對話方塊相同的資訊,然後將任務儲存到您的帳戶。此命令也可使用別名 `/routines`。147在任何工作階段中執行 `/schedule`,即可透過對話方式建立排程任務。您也可以直接傳入描述,例如定期任務 `/schedule daily PR review at 9am`,或一次性任務 `/schedule clean up feature flag in one week`。Claude 會逐步收集與網頁對話方塊相同的資訊,然後將任務儲存到您的帳戶。此命令也可使用別名 `/routines`。


152* **整點執行**:如果您將執行排程在剛好整點(例如 9:00),它可能會晚幾分鐘才開始。若要在接近排程時間時開始,請選擇整點後幾分鐘,例如 9:07。168* **整點執行**:如果您將執行排程在剛好整點(例如 9:00),它可能會晚幾分鐘才開始。若要在接近排程時間時開始,請選擇整點後幾分鐘,例如 9:07。

153* **自訂間隔**:若需要預設選項未提供的節奏,請建立任務並在其[編輯對話方塊](#edit-and-control-scheduled-tasks)中選擇 **Custom**。接著輸入 cron 運算式,例如 `0 */2 * * *` 代表每兩小時執行一次。若要從 CLI 設定,請執行 [`/schedule update`](#manage-scheduled-tasks-from-the-cli)。執行頻率高於每小時一次的運算式會被拒絕。169* **自訂間隔**:若需要預設選項未提供的節奏,請建立任務並在其[編輯對話方塊](#edit-and-control-scheduled-tasks)中選擇 **Custom**。接著輸入 cron 運算式,例如 `0 */2 * * *` 代表每兩小時執行一次。若要從 CLI 設定,請執行 [`/schedule update`](#manage-scheduled-tasks-from-the-cli)。執行頻率高於每小時一次的運算式會被拒絕。

154* **時區**:選擇預設頻率時,請以您的本地時區輸入時間。170* **時區**:選擇預設頻率時,請以您的本地時區輸入時間。

171* **Cron 運算式時區**:當運算式只有五個欄位時,請以 UTC 撰寫小時,因此 `0 9 * * 1-5` 會在平日 UTC 上午 9:00 執行。如果該欄位以 `CRON_TZ=` 前綴開頭,請保留它並以該時區撰寫小時,或將其刪除並以 UTC 撰寫小時。

155 172 

156#### 排程一次性執行173#### 排程一次性執行

157 174 


455 472 

456排程任務先前稱為 routines,以下這些地方仍保留先前的名稱。它們所指的都是同一項功能:473排程任務先前稱為 routines,以下這些地方仍保留先前的名稱。它們所指的都是同一項功能:

457 474 

475* **應用程式**:在部分帳戶中,側邊欄項目和頁面標題顯示為 **Routines**,按鈕顯示為 **New routine**,其他標籤也使用 routine 一詞。若要在該處建立任務,請參閱[完整頁面表單](#full-page-form)。

458* **網址**:`claude.ai/code/routines`476* **網址**:`claude.ai/code/routines`

459* **CLI**:`/schedule` 的別名 `/routines`、該命令的說明,以及 Claude 在設定任務時的回覆477* **CLI**:`/schedule` 的別名 `/routines`、該命令的說明,以及 Claude 在設定任務時的回覆

460* **API**:`/fire` 端點路徑、其 beta 標頭、其回應 `type`、`<routine-fire-payload>` 標籤,以及 [Trigger a routine through the API](https://platform.claude.com/docs/en/api/claude-code/routines-fire) 參考頁面478* **API**:`/fire` 端點路徑、其 beta 標頭、其回應 `type`、`<routine-fire-payload>` 標籤,以及 [Trigger a routine through the API](https://platform.claude.com/docs/en/api/claude-code/routines-fire) 參考頁面

sandboxing.md +13 −1

Details

537 537 

538* **在您的工作目錄及其上層目錄中**:`.claude` 設定檔、`.claude/skills`、`.claude/agents`、`.claude/commands` 和 `.claude/hooks` 目錄、`.mcp.json`,以及 Claude Code 自行執行的檔案,例如 `.claude/workflows` 和 `.claude/scheduled_tasks.json`538* **在您的工作目錄及其上層目錄中**:`.claude` 設定檔、`.claude/skills`、`.claude/agents`、`.claude/commands` 和 `.claude/hooks` 目錄、`.mcp.json`,以及 Claude Code 自行執行的檔案,例如 `.claude/workflows` 和 `.claude/scheduled_tasks.json`

539* **僅在您的工作目錄中**:shell 啟動檔案,例如 `.bashrc` 和 `.zshrc`、`.gitconfig`、`.vscode` 和 `.idea` 目錄,以及 `.git` 內的 `hooks` 和 `config`539* **僅在您的工作目錄中**:shell 啟動檔案,例如 `.bashrc` 和 `.zshrc`、`.gitconfig`、`.vscode` 和 `.idea` 目錄,以及 `.git` 內的 `hooks` 和 `config`

540* **會將您的工作目錄變成 bare git 儲存庫的檔案**:頂層的 `HEAD`、`objects` 和 `refs`,以及當旁邊有 `HEAD` 時,該處既有的 `config` 和 `hooks` 項目。名為 `config` 的檔案即使沒有 `HEAD` 也會被拒絕。在 Linux 和 WSL2 上,沙箱會刪除沙箱化命令執行期間出現的頂層 `HEAD` 檔案或 `objects` 或 `refs` 目錄540* **會將您的工作目錄變成 bare git 儲存庫的檔案**:頂層的 `HEAD`、`objects` 和 `refs`,以及當旁邊有 `HEAD` 檔案或符號連結時,該處既有的 `config` 和 `hooks` 項目。名為 `config` 的檔案即使沒有 `HEAD` 也會被拒絕。[之後才出現的 `HEAD`、`objects` 或 `refs` 可能會被刪除](#when-the-sandbox-deletes-head-objects-or-refs)。在 Linux 和 WSL2 上,沙箱化命令可以在原本不存在這類項目的位置建立一個。

541* **在 `~/.claude` 或 `CLAUDE_CONFIG_DIR` 所指向的目錄中**:其大部分內容,加上 `~/.claude.json` 和 `.credentials.json` 憑證儲存區541* **在 `~/.claude` 或 `CLAUDE_CONFIG_DIR` 所指向的目錄中**:其大部分內容,加上 `~/.claude.json` 和 `.credentials.json` 憑證儲存區

542 542 

543如果在工作階段期間,受保護設定檔的路徑上出現符號連結,沙箱也會從下一個命令開始,拒絕寫入該符號連結所指向的檔案。543如果在工作階段期間,受保護設定檔的路徑上出現符號連結,沙箱也會從下一個命令開始,拒絕寫入該符號連結所指向的檔案。


552 552 

553如果 `git merge` 或 `git checkout` 在其中某個路徑上因 `unable to unlink old` 而失敗,請參閱[git 命令因 `unable to unlink old` 而失敗](#a-git-command-fails-with-unable-to-unlink-old)。553如果 `git merge` 或 `git checkout` 在其中某個路徑上因 `unable to unlink old` 而失敗,請參閱[git 命令因 `unable to unlink old` 而失敗](#a-git-command-fails-with-unable-to-unlink-old)。

554 554 

555#### 沙箱何時會刪除 `HEAD`、`objects` 或 `refs`

556 

557沙箱化命令結束後,您工作目錄中較新的頂層 `HEAD`、`objects` 或 `refs` 項目會被刪除,除非它是含有內容的資料夾。「較新」是指沙箱上次建構其設定時該項目並不存在:也就是在工作階段開始時,或在 [`/cd`](https://code.claude.com/docs/zh-TW/commands) 等變更之後。

558 

559如果沙箱上次建構其設定時已有 `HEAD` 檔案或符號連結存在,含有內容的較新 `objects` 或 `refs` 資料夾也會連同其內容一起被刪除。若要保留資料夾,請參閱[命令執行後名為 `objects` 或 `refs` 的資料夾消失](#a-folder-named-objects-or-refs-disappears-after-a-command)。

560 

555#### 經過符號連結的被拒絕路徑561#### 經過符號連結的被拒絕路徑

556 562 

557在 macOS 上,當被拒絕的路徑經過符號連結時(例如 `~/.claude` 是連結到 dotfiles 儲存庫的符號連結),沙箱也會拒絕該路徑的實際位置。這涵蓋沙箱本身的拒絕項目,以及您以字面形式寫下的 `denyWrite` 和 `denyRead` 項目。563在 macOS 上,當被拒絕的路徑經過符號連結時(例如 `~/.claude` 是連結到 dotfiles 儲存庫的符號連結),沙箱也會拒絕該路徑的實際位置。這涵蓋沙箱本身的拒絕項目,以及您以字面形式寫下的 `denyWrite` 和 `denyRead` 項目。


881 887 

882失敗後,Claude 可能會[提供在沙箱外重新執行命令](#the-unsandboxed-retry-escape-hatch)。核准該重試,或在另一個終端機中自己執行 git 命令。如果您已將 `allowUnsandboxedCommands` 設定為 `false`,Claude 無法提供重試,因此請自己執行命令。888失敗後,Claude 可能會[提供在沙箱外重新執行命令](#the-unsandboxed-retry-escape-hatch)。核准該重試,或在另一個終端機中自己執行 git 命令。如果您已將 `allowUnsandboxedCommands` 設定為 `false`,Claude 無法提供重試,因此請自己執行命令。

883 889 

890### 名為 `objects` 或 `refs` 的資料夾在命令執行後消失

891 

892在工作階段期間出現的頂層 `objects` 或 `refs` 資料夾,可能會[在沙箱化命令結束後被刪除](#when-the-sandbox-deletes-head-objects-or-refs)。無論該資料夾是由命令、Claude 還是您所建立的,都是如此。若要保留資料夾,請在其中留下一些內容。如果在工作階段期間頂層曾有 `HEAD` 檔案或符號連結,請將其移走,然後重新啟動在該處開啟的每個 Claude Code 工作階段。

893 

894在 v2.1.307 之前,即使資料夾中有內容且沒有 `HEAD`,該資料夾仍會被刪除。若您使用的是較早的版本,請[更新 Claude Code](https://code.claude.com/docs/zh-TW/setup.md#update-claude-code)。

895 

884### Bubblewrap 在容器內啟動失敗896### Bubblewrap 在容器內啟動失敗

885 897 

886在無特權容器中,[bubblewrap](#os-level-enforcement) 無法掛載新的 `/proc` 檔案系統,因此沙箱化命令失敗,出現 `bwrap` 錯誤,例如 `Can't mount proc on /newroot/proc: Operation not permitted`。將 [`enableWeakerNestedSandbox`](https://code.claude.com/docs/zh-TW/settings-reference#sandbox-enableweakernestedsandbox) 設定為 `true`,以便沙箱改為綁定掛載容器的現有 `/proc`。僅在外部容器已提供您需要的隔離邊界時使用此設定,因為此設定會向沙箱化命令公開新的 `/proc` 掛載原本會隱藏的程序資訊。898在無特權容器中,[bubblewrap](#os-level-enforcement) 無法掛載新的 `/proc` 檔案系統,因此沙箱化命令失敗,出現 `bwrap` 錯誤,例如 `Can't mount proc on /newroot/proc: Operation not permitted`。將 [`enableWeakerNestedSandbox`](https://code.claude.com/docs/zh-TW/settings-reference#sandbox-enableweakernestedsandbox) 設定為 `true`,以便沙箱改為綁定掛載容器的現有 `/proc`。僅在外部容器已提供您需要的隔離邊界時使用此設定,因為此設定會向沙箱化命令公開新的 `/proc` 掛載原本會隱藏的程序資訊。

Details

30 30 

31圖表中的兩個 Claude Code 方塊是工作階段程序:一個執行器同時執行兩個工作階段,達到其設定的容量。執行器一次為一個[擁有者](#key-concepts)服務,並在認領其第一個工作階段時鎖定到該擁有者,因此簽出的程式碼永遠不會在擁有者之間混合;[執行器生命週期](#runner-lifecycle)涵蓋了該規則。31圖表中的兩個 Claude Code 方塊是工作階段程序:一個執行器同時執行兩個工作階段,達到其設定的容量。執行器一次為一個[擁有者](#key-concepts)服務,並在認領其第一個工作階段時鎖定到該擁有者,因此簽出的程式碼永遠不會在擁有者之間混合;[執行器生命週期](#runner-lifecycle)涵蓋了該規則。

32 32 

33您可以自己啟動執行器並保持它們執行,或執行[自動擴展協調器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners),這是您託管的第二個程序,它在工作階段佇列時啟動執行器;每個執行器在其工作完成時自行退出。無論哪種方式,您都只需設定一次環境,它就會出現在每個支援的表面上的選擇器中。33您可以自己啟動執行器並保持它們執行,或執行[自動擴展協調器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners),這是您託管的第二個程序,它會在工作階段排入佇列時啟動執行器。無論哪種方式,您都只需設定一次環境,它就會出現在每個支援的使用介面上的選擇器中。

34 34 

35## 可用性和限制35## 可用性和限制

36 36 


122 122 

123支援公司出站代理。執行器和可選的[自動擴展協調器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners)遵守[網路設定](https://code.claude.com/docs/zh-TW/network-config.md)中描述的代理和 mTLS 環境變數,例如 `HTTPS_PROXY` 和 `NO_PROXY`;在每個程序的環境中設定它們。這些變數涵蓋控制平面呼叫、協調器的 [SCM 連接器](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#scm-connector-flags) WebSocket 和 HTTPS 遠端的內建複製,工作階段從執行器繼承它們。工作階段流使用透過 HTTPS 的伺服器發送事件,因此路徑中的代理不得緩衝回應。123支援公司出站代理。執行器和可選的[自動擴展協調器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners)遵守[網路設定](https://code.claude.com/docs/zh-TW/network-config.md)中描述的代理和 mTLS 環境變數,例如 `HTTPS_PROXY` 和 `NO_PROXY`;在每個程序的環境中設定它們。這些變數涵蓋控制平面呼叫、協調器的 [SCM 連接器](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#scm-connector-flags) WebSocket 和 HTTPS 遠端的內建複製,工作階段從執行器繼承它們。工作階段流使用透過 HTTPS 的伺服器發送事件,因此路徑中的代理不得緩衝回應。

124 124 

125如果您的代理還需要 `Proxy-Authorization` 標頭,執行器可以將其新增到它開啟到代理的每個連接;請參閱[向出站代理進行身份驗證](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。125* **代理伺服器身分驗證**:如果您的代理伺服器還需要 `Proxy-Authorization` 標頭,執行器可以將其新增到它開啟到代理伺服器的每個連接;請參閱[向出站代理伺服器進行身分驗證](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。

126* **長時間存續的回應**:如果執行器認領了工作階段,但 Claude 從未回答其第一則訊息,原因可能出在您的代理伺服器。請參閱[工作階段已被認領,但 Claude 從未回答其第一則訊息](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#when-a-sessions-first-message-is-never-answered)。

126 127 

127## 保留在您的基礎設施上的內容128## 保留在您的基礎設施上的內容

128 129 

Details

36| `CLAUDE_CODE_REMOTE_SESSION_UUID` | 標準 UUID 形式的相同工作階段 ID,適用於以 UUID 為鍵的系統。 |36| `CLAUDE_CODE_REMOTE_SESSION_UUID` | 標準 UUID 形式的相同工作階段 ID,適用於以 UUID 為鍵的系統。 |

37| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | 對於屬於某個 Slack 討論串的 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段,為該討論串的連結。其他工作階段不會設定此變數,討論串工作階段也可能未設定。 |37| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | 對於屬於某個 Slack 討論串的 [Claude Tag](https://claude.com/docs/claude-tag/overview) 工作階段,為該討論串的連結。其他工作階段不會設定此變數,討論串工作階段也可能未設定。 |

38| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | 對於屬於某個 Slack 討論串的 Claude Tag 工作階段,為該討論串的 Slack 時間戳記,例如 `1700000000.000100`。可能未設定,且可能在 `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 未設定時已設定,因此請分別檢查每個變數。 |38| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | 對於屬於某個 Slack 討論串的 Claude Tag 工作階段,為該討論串的 Slack 時間戳記,例如 `1700000000.000100`。可能未設定,且可能在 `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` 未設定時已設定,因此請分別檢查每個變數。 |

39| `CLAUDE_CODE_REMOTE_SLACK_CHANNEL_ID` | 對於 Claude Tag 工作階段,為該工作階段所服務或其討論串所在之 Slack 頻道或私訊的 ID,例如 `C0123ABCDE`。Slack 時間戳記是在單一頻道內識別訊息,因此請將此 ID 與 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` 一併記錄。其他工作階段不會設定此變數,Claude Tag 工作階段也可能未設定。 |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 保存目前工作階段 JWT 的每個工作階段檔案的絕對路徑,在 token 重新整理時保持最新。Shell 子程序在下載使用者新增到工作階段的附件時從中讀取其 `Authorization` 標頭。`exec` 會自動保留該變數;重建子程序環境的包裝指令碼必須帶上該變數,否則附件下載會無聲地停止運作。 |40| `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`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器;請參閱[重複使用預先準備的簽出](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)。 |41| `CLAUDE_CONFIG_DIR` | 每個工作階段的 Claude 設定目錄,在工作階段開始時從執行器在啟動時擷取的執行器主機設定快照中寫入;請參閱[權限和工具核准](#permissions-and-tool-approval)。此處的寫入隔離於此工作階段。工作階段結束後,該目錄會保留在 `<base-dir>/_sessions/` 下,除非您使用 [`--remove-session-state`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器;請參閱[重複使用預先準備的簽出](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)。 |

41| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | `CLAUDE_CONFIG_DIR` 中某個檔案的路徑,該檔案保存 Anthropic 控制平面為此工作階段傳遞的 MCP 伺服器定義。如果您的包裝指令碼會重建子程序的環境,請帶上此變數。若缺少此變數,當控制平面更新所傳遞的伺服器時,子程序會關閉您的包裝指令碼以 [`--mcp-config`](https://code.claude.com/docs/zh-TW/cli-reference#cli-flags) 新增、但不在該更新中的任何 stdio、HTTP 或 SSE 伺服器。需要 Claude Code v2.1.299 或更新版本。 |42| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | `CLAUDE_CONFIG_DIR` 中某個檔案的路徑,該檔案保存 Anthropic 控制平面為此工作階段傳遞的 MCP 伺服器定義。如果您的包裝指令碼會重建子程序的環境,請帶上此變數。若缺少此變數,當控制平面更新所傳遞的伺服器時,子程序會關閉您的包裝指令碼以 [`--mcp-config`](https://code.claude.com/docs/zh-TW/cli-reference#cli-flags) 新增、但不在該更新中的任何 stdio、HTTP 或 SSE 伺服器。需要 Claude Code v2.1.299 或更新版本。 |


44 45 

45包裝指令碼也會繼承子程序的其餘受管環境,包括任何伺服器提供的環境變數。`exec` 會自動傳播所有內容;如果您的包裝指令碼以另一種方式生成子程序,請轉發完整環境。46包裝指令碼也會繼承子程序的其餘受管環境,包括任何伺服器提供的環境變數。`exec` 會自動傳播所有內容;如果您的包裝指令碼以另一種方式生成子程序,請轉發完整環境。

46 47 

47`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 不會收到它們。48您可以在包裝指令碼或 [`command` hook](#command) 中,以及在工作階段執行的內容(例如 shell 命令、git hook 和 Claude Code hook)中讀取 `CLAUDE_CODE_REMOTE_SLACK_*` 變數。`checkout`、`post-session` 和 `spawn-runner` hook 不會收到它們。

48 49 

49### 為可能未設定的變數提供預設值50### 為可能未設定的變數提供預設值

50 51 

51`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:-}"`。52如果您的指令碼使用 `set -u`,請以預設值展開 `CCR_SESSION_ACCOUNT_EMAIL`、`CLAUDE_RUNNER_CLIENT_PLATFORM`、`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL`、`CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` 和 `CLAUDE_CODE_REMOTE_SLACK_CHANNEL_ID`,例如 `"${CCR_SESSION_ACCOUNT_EMAIL:-}"`。每個變數都可能未設定,而在 `set -u` 下,Bash 展開未設定的變數時會以 `unbound variable` 停止。

52 53 

53### 為指令碼展開的引數和變數加上引號54### 為指令碼展開的引數和變數加上引號

54 55 


89* **原樣傳遞它們**:以 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 結束包裝指令碼,這會將檔案旗標連同其他所有引數一起轉發。不要捨棄或改寫它們。如果工作階段遺失了提示詞檔案旗標,它將在缺少控制平面為其傳送之指令的情況下執行。90* **原樣傳遞它們**:以 `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` 結束包裝指令碼,這會將檔案旗標連同其他所有引數一起轉發。不要捨棄或改寫它們。如果工作階段遺失了提示詞檔案旗標,它將在缺少控制平面為其傳送之指令的情況下執行。

90* **在 v2.1.281 或更新版本的執行器上,您附加的檔案旗標會取代伺服器的旗標,而不會與其疊加**:每個提示詞檔案旗標只接受單一值,且 Claude Code 會保留最後一次出現的值,因此如果您在 `"$@"` 之後附加 `--append-system-prompt-file <path>`,您檔案的內容會取代伺服器的附加指令。若要在伺服器的指令之上新增指令,請將它們放入執行器映像的 `CLAUDE.md` 中,執行器會將其[植入每個工作階段的使用者層級設定](#how-each-session’s-config-is-assembled)。91* **在 v2.1.281 或更新版本的執行器上,您附加的檔案旗標會取代伺服器的旗標,而不會與其疊加**:每個提示詞檔案旗標只接受單一值,且 Claude Code 會保留最後一次出現的值,因此如果您在 `"$@"` 之後附加 `--append-system-prompt-file <path>`,您檔案的內容會取代伺服器的附加指令。若要在伺服器的指令之上新增指令,請將它們放入執行器映像的 `CLAUDE.md` 中,執行器會將其[植入每個工作階段的使用者層級設定](#how-each-session’s-config-is-assembled)。

91 92 

93#### 修正工作階段開始時的 `Argument list too long`

94 

95在 Linux 上,如果您將控制平面的提示詞與您自己的文字合併為單一 `--append-system-prompt` 引數,一旦該引數達到 128 KB,執行器就會記錄如下的一行:

96 

97```text theme={null}

98Session <id> finished: failed — reason: child exited 126: /opt/wrapper.sh: line 9: /usr/local/bin/claude: Argument list too long

99```

100 

101Linux 將每個單一引數限制為 32 個記憶體分頁,以常見的 4 KB 分頁計算即為 128 KB。`getconf ARG_MAX` 回報的數值(通常為 2 MB)是另一項限制,針對的是所有引數與環境的總和。

102 

103在 Claude Code v2.1.283 或更新版本上,請將檔案旗標保留在 `"$@"` 中,並僅將您自己的文字作為 `--append-system-prompt` 傳遞。Claude Code 會[同時使用兩者](https://code.claude.com/docs/zh-TW/cli-reference.md#system-prompt-flags),先使用控制平面的提示詞,再使用您自己的文字:

104 

105```bash theme={null}

106exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --append-system-prompt "$(cat /opt/team-instructions.md)"

107```

108 

109在 Linux 上,如果您自己的文字達到 128 KB,請將其移至執行器映像的 `CLAUDE.md`,因為它仍然是單一引數。

110 

111在 v2.1.281 或 v2.1.282 上,該命令會以 `Cannot use both --append-system-prompt and --append-system-prompt-file` 退出。在更早的版本上,您的文字會在沒有任何錯誤的情況下取代控制平面的提示詞。在上述任一版本上,請先更新,或將您自己的文字移至 `CLAUDE.md`。

112 

92### 佈建限定於工作階段建立者的憑證113### 佈建限定於工作階段建立者的憑證

93 114 

94使用 `decode-token` 子命令從工作階段 JWT 讀取聲明。它依序從引數、`CLAUDE_CODE_SESSION_ACCESS_TOKEN` 或 stdin 讀取 token;請參閱[驗證工作階段內的 token](https://code.claude.com/docs/zh-TW/self-hosted-environments-identity.md#verify-the-token-inside-the-session) 以了解它檢查的內容。下面的範例解碼建立者身分,將其交換為短期 AWS 憑證,並透過 exec 進入 Claude Code:115使用 `decode-token` 子命令從工作階段 JWT 讀取聲明。它依序從引數、`CLAUDE_CODE_SESSION_ACCESS_TOKEN` 或 stdin 讀取 token;請參閱[驗證工作階段內的 token](https://code.claude.com/docs/zh-TW/self-hosted-environments-identity.md#verify-the-token-inside-the-session) 以了解它檢查的內容。下面的範例解碼建立者身分,將其交換為短期 AWS 憑證,並透過 exec 進入 Claude Code:


122| 變數 | 說明 |143| 變數 | 說明 |

123| :- | :- |144| :- | :- |

124| `CLAUDE_RUNNER_REPO_URL` | 要複製的儲存庫 URL,在應用任何 `--git-host-rewrite` 和 `--git-ssh-rewrite` 之後 |145| `CLAUDE_RUNNER_REPO_URL` | 要複製的儲存庫 URL,在應用任何 `--git-host-rewrite` 和 `--git-ssh-rewrite` 之後 |

125| `CLAUDE_RUNNER_REPO_REF` | 要簽出的修訂版本,依工作階段的要求而定:分支、標籤、提交 SHA,或完整參照名稱,例如 `refs/pull/<number>/head`。空值表示儲存庫的預設分支。 |146| `CLAUDE_RUNNER_REPO_REF` | 要簽出的修訂版本,依工作階段的要求而定:分支、標籤、提交 SHA,或完整參照名稱,例如 `refs/heads/<branch>` 或 `refs/pull/<number>/head`。空值表示儲存庫的預設分支。 |

126| `CLAUDE_RUNNER_CHECKOUT_PATH` | 工作樹必須留下的絕對路徑 |147| `CLAUDE_RUNNER_CHECKOUT_PATH` | 工作樹必須留下的絕對路徑 |

127| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |148| `CLAUDE_RUNNER_SESSION_ID` | 標記形式為 `session_...` 的會話 ID,用於記錄和相關性 |

128| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |149| `CLAUDE_RUNNER_SESSION_UUID` | 規範 UUID 形式的相同會話 ID |


303 324 

304無論您的 hook 在哪個平台上佈建,此合約都有四條規則:325無論您的 hook 在哪個平台上佈建,此合約都有四條規則:

305 326 

3061. **以 `CLAUDE_RUNNER_ORDER_ID` 實現冪等。** 同一請求重新遞送時,最多只能產生一個 runner。請從訂單 ID 推導出確定性的資源名稱,並讓您的平台拒絕重複項目。請勿改用 `CLAUDE_RUNNER_SESSION_ID` 作為金鑰。某工作階段的每次重新請求都帶有相同的工作階段 ID 與新的訂單 ID,因此以工作階段 ID 命名或去重的工作負載只會建立一次,之後該工作階段便再也不會建立。3271. **以 `CLAUDE_RUNNER_ORDER_ID` 實現冪等。** 同一請求重新遞送時,最多只能產生一個 runner。請從訂單 ID 推導出確定性的資源名稱,並讓您的平台拒絕重複項目。請勿改用 `CLAUDE_RUNNER_SESSION_ID` 作為金鑰。某工作階段的每次重新請求都帶有相同的工作階段 ID 與新的訂單 ID。以工作階段 ID 命名或去重的工作負載,在第一個工作負載仍存在時不會再次建立。

3072. **不要重試工作負載。** 一個訂單 ID 代表最多建立一個工作負載。若 runner 從未註冊,Anthropic 會在 `--expected-spawn-seconds` 之後以新的訂單 ID 重新請求。3282. **不要重試工作負載。** 一個訂單 ID 代表最多建立一個工作負載。若 runner 從未註冊,Anthropic 會在 `--expected-spawn-seconds` 之後以新的訂單 ID 重新請求。

3083. **遵循退出碼合約。** 以符合結果的狀態結束:3293. **遵循退出碼合約。** 以符合結果的狀態結束:

309 330 

310 * **Exit 0**:已提交。331 * **Exit 0**:已提交。

311 * **Exit 1,或在 `--hook-timeout` 結束時仍在執行**:可重試的失敗。工作階段會退避並重新提供。332 * **Exit 1,或在 `--hook-timeout` 結束時仍在執行**:可重試的失敗。工作階段會退避並重新提供。連續 10 次請求失敗後,該工作階段會如同 exit 2 或更高時一樣被封鎖。

312 * **Exit 2 或更高**:不可重試的失敗。該工作階段會被封鎖而無法再次產生,直到使用者向其傳送新訊息,或 [Owner](https://code.claude.com/docs/zh-TW/cloud-environments.md#organization-shared-environments) 在環境的 **Activity** 分頁中對其選取 **Retry**。333 * **Exit 2 或更高**:不可重試的失敗。該工作階段會被封鎖而無法再次產生,直到使用者向其傳送新訊息,或 [Owner](https://code.claude.com/docs/zh-TW/cloud-environments.md#organization-shared-environments) 在環境的 **Activity** 分頁中對其選取 **Retry**。

313 334 

314 工作階段退避期間,它會在 **Activity** 分頁中顯示為 **Queued**,且沒有產生錯誤,因此請在 orchestrator 的日誌中查看 hook 的輸出。一旦被封鎖,工作階段會顯示為 **Failed**。展開它即可查看產生錯誤,其內容取自 hook stderr 的最後 512 個字元。請將可據以採取行動的錯誤寫入 stderr,且不要包含任何密鑰。在 shell hook 中,請[讓暫時性失敗保持可重試](#keep-transient-failures-retryable-in-a-shell-hook)。335 工作階段退避期間,它會在 **Activity** 分頁中顯示為 **Queued**,且沒有產生錯誤,因此請在 orchestrator 的日誌中查看 hook 的輸出。一旦被封鎖,工作階段會顯示為 **Failed**。展開它即可查看產生錯誤,其內容取自 hook stderr 的最後 512 個字元。請將可據以採取行動的錯誤寫入 stderr,且不要包含任何密鑰。在 shell hook 中,請[讓暫時性失敗保持可重試](#keep-transient-failures-retryable-in-a-shell-hook)。


318 339 

319hook 寫入 stdout 或 stderr 的所有內容都會出現在 orchestrator 的日誌中,且憑證會自動遮蔽。若工作階段持續停留在佇列中,請檢查 orchestrator 的 `/healthz` 回應內容以取得佇列計數,然後在 [**Cloud environments** 管理頁面](https://claude.ai/admin-settings/cloud-environments)開啟您環境的 **Activity** 分頁:在該處展開失敗的工作階段以查看其產生錯誤,並選取 **Retry** 以重新請求。340hook 寫入 stdout 或 stderr 的所有內容都會出現在 orchestrator 的日誌中,且憑證會自動遮蔽。若工作階段持續停留在佇列中,請檢查 orchestrator 的 `/healthz` 回應內容以取得佇列計數,然後在 [**Cloud environments** 管理頁面](https://claude.ai/admin-settings/cloud-environments)開啟您環境的 **Activity** 分頁:在該處展開失敗的工作階段以查看其產生錯誤,並選取 **Retry** 以重新請求。

320 341 

321若工作階段持續停留在佇列中,而 **Activity** 分頁中沒有產生錯誤,可能表示 hook 是以工作階段 ID 作為金鑰。若要確認,請檢查您的平台是否有該工作階段第一次產生請求的工作負載,而重新請求則沒有任何工作負載。若是如此,請改以 `CLAUDE_RUNNER_ORDER_ID` 作為工作負載的金鑰。342#### 修正持續顯示 Queued 或顯示 Failed 的重新開啟工作階段

343 

344若重新開啟的工作階段持續顯示 **Queued** 或顯示 **Failed**,或您的 hook 在處理它們時逾時,原因之一可能是 hook 以工作階段 ID 命名或去重工作負載。當工作階段的 runner 已結束後,其使用者又向其傳送訊息時,該工作階段即會重新開啟。例如,假設有一個 hook 以如下方式建立每個工作負載的名稱:

345 

346```bash theme={null}

347name="runner-${CLAUDE_RUNNER_SESSION_ID}"

348```

349 

3501. 在工作階段的第一次產生請求時,hook 會以該名稱建立工作負載,並啟動一個 runner

3512. runner 結束(例如在 [`--release-idle-session-min`](#make-on-demand-runners-exit-when-idle) 之後),之後使用者重新開啟該工作階段

3523. 該工作階段的下一個產生請求帶有相同的工作階段 ID 與新的訂單 ID,因此 hook 會建立相同的名稱

3534. 若您的平台仍保有第一次請求的工作負載(因為在其 runner 結束時沒有任何機制將其[移除](#make-on-demand-runners-exit-when-idle)),hook 不會建立新的工作負載,也不會啟動任何 runner

3545. 該工作階段之後的每個產生請求都會以相同方式結束

355 

356請開啟您自己的 hook,查看當工作負載已存在時它會如何處理,例如當您的平台拒絕重複的名稱時。在第一欄中找到該行為,即可得知重新開啟的工作階段在 **Activity** 分頁中會顯示什麼:

357 

358| 當工作負載已存在時,您的 hook | **Queued** 變為 **Failed** 的時機 | 產生錯誤 |

359| :- | :- | :- |

360| 未建立任何內容即以 0 結束 | 連續 10 次此類請求之後 | `runner did not register within ETA after max attempts` |

361| 以 1 結束 | 連續 10 次此類請求之後 | 您 hook 的 stderr 結尾;若其未寫入任何內容到 stderr,則為 `exit 1` |

362| 以 2 或更高結束 | 立即 | 您 hook 的 stderr 結尾;若其未寫入任何內容到 stderr,則為 `exit` 加上代碼,例如 `exit 2` |

363| 一直等待到 `--hook-timeout` 結束 | 連續 10 次此類請求之後 | 您 hook 的 stderr 結尾;若其未寫入任何內容到 stderr,則為 `spawn-runner hook timed out after 60000ms` |

364 

365在最後一列的產生錯誤中,`60000` 是以毫秒表示的 `--hook-timeout`。當 hook 一直等待到 `--hook-timeout` 結束時,orchestrator 的日誌也會出現一行 `timed out after`。

366 

367若要修正 hook,請依照 [hook 合約的規則 1](#the-spawn-runner-hook) 的要求,以 `CLAUDE_RUNNER_ORDER_ID` 建立每個名稱或金鑰。在此範例中,名稱會變成:

368 

369```bash theme={null}

370name="runner-${CLAUDE_RUNNER_ORDER_ID}"

371```

372 

373若您的 hook 會等待,也請讓它在提交工作負載後便結束,因為等待中的 hook 會[延遲其 orchestrator 的後續 hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#orchestrator-cli-flags)。變更 hook 後,請在 **Activity** 分頁中檢查每個卡住之工作階段的狀態:

374 

375* **Queued**:該工作階段會自行取得下一個產生請求

376* **Failed**:以 Owner 身分對其選取 **Retry**,或請其使用者向其傳送新訊息

322 377 

323#### 讓隨需 runner 在閒置時結束378#### 讓隨需 runner 在閒置時結束

324 379 


740 795 

741執行器對主機 `~/.claude/` 的快照不包含 `projects/` 目錄。自動記憶的預設儲存位置就位於該目錄下。如果您將記憶檔案放在那裡,執行器不會將其植入工作階段,這些檔案也不會開啟自動記憶。796執行器對主機 `~/.claude/` 的快照不包含 `projects/` 目錄。自動記憶的預設儲存位置就位於該目錄下。如果您將記憶檔案放在那裡,執行器不會將其植入工作階段,這些檔案也不會開啟自動記憶。

742 797 

798### 停止無法擷取伺服器受管設定的工作階段

799 

800若要讓擷取[伺服器受管設定](https://code.claude.com/docs/zh-TW/server-managed-settings.md)的工作階段在擷取失敗時不啟動,請在執行器映像中的 [`managed-settings.json`](https://code.claude.com/docs/zh-TW/settings#where-settings-live) 將 [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/zh-TW/settings-reference#forceremotesettingsrefresh) 設為 `true`。若 Anthropic 的 API 回覆您的組織沒有伺服器受管設定,這也算作擷取成功。

801 

802在加入此設定鍵之前,請先確認該環境是否執行 Claude Tag 頻道工作階段,或是否將模型請求傳送至 Bedrock 或 Agent Platform:

803 

804* **Claude Tag 頻道工作階段**:對於擁有者[將 Claude Tag 頻道路由至](https://code.claude.com/docs/zh-TW/cloud-environments.md#set-the-environment-a-claude-tag-channel-uses)的環境,請勿在其執行器上設定此設定鍵。Anthropic 的 API 會拒絕這些工作階段對伺服器受管設定的請求,因此設定此設定鍵後,這些工作階段將無法啟動。請將它們的規則放在執行器映像的 `managed-settings.json` 中,[它們仍會讀取該檔案](https://code.claude.com/docs/zh-TW/managed-settings.md#where-and-when-a-policy-applies)。若要為其他工作階段使用此設定鍵,請在另一個獨立的環境中執行那些工作階段。

805* **Bedrock 或 Agent Platform**:使用這些提供者的工作階段[不會擷取伺服器受管設定](#what-differs-from-sessions-on-the-anthropic-api),因此無論您是否設定此設定鍵,它們都會啟動。請改為從同一個 `managed-settings.json` 強制執行您的規則。

806 

807以下 `managed-settings.json` 設定了此設定鍵:

808 

809```json managed-settings.json theme={null}

810{

811 "forceRemoteSettingsRefresh": true

812}

813```

814 

815即使您也在 claude.ai 管理主控台中設定了此設定鍵,仍請在該檔案中設定。新的工作階段沒有您伺服器受管設定的[快取副本](https://code.claude.com/docs/zh-TW/server-managed-settings.md#fetch-and-caching-behavior),因此如果您只在主控台中設定此設定鍵,工作階段此時尚未取得它。若其擷取隨後失敗,工作階段會在沒有這些設定的情況下執行,直到之後的擷取成功為止。

816 

817若要確認工作階段未啟動是因為設定擷取失敗,請查看工作階段中 [Claude Code 的最後輸出](#keep-stdin-and-file-descriptor-3-attached)或執行器的日誌。其中會包含 `Your organization requires remote managed settings to load, but they could not be loaded.`

818 

743### 包含多個儲存庫之工作階段中的儲存庫設定819### 包含多個儲存庫之工作階段中的儲存庫設定

744 820 

745在[專案](https://code.claude.com/docs/zh-TW/claude-projects.md#what-threads-pick-up-from-your-repositories)中的討論串裡,無論討論串在何處啟動,都不會有任何儲存庫的 `.claude/settings.json` 作為專案設定生效,也不會載入任何儲存庫的 `.mcp.json` 或 skill。若要為這些討論串提供 skill,請將其加入您的執行器映像。821在[專案](https://code.claude.com/docs/zh-TW/claude-projects.md#what-threads-pick-up-from-your-repositories)中的討論串裡,無論討論串在何處啟動,都不會有任何儲存庫的 `.claude/settings.json` 作為專案設定生效,也不會載入任何儲存庫的 `.mcp.json` 或 skill。若要為這些討論串提供 skill,請將其加入您的執行器映像。

Details

313 313 

314對於使用 Anthropic 管理的 Git 的每個工作階段,執行器也記錄以 `governed git: GIT_SSL_CAINFO is set` 或 `governed git: GIT_SSL_NO_VERIFY is set` 開始的 `[runner:warn]` 行。該行說明執行器對其自己的 Git、工作階段內的 Git 和您的生命週期鉤子對該變數所做的操作。它以您是否需要更改任何內容結束。314對於使用 Anthropic 管理的 Git 的每個工作階段,執行器也記錄以 `governed git: GIT_SSL_CAINFO is set` 或 `governed git: GIT_SSL_NO_VERIFY is set` 開始的 `[runner:warn]` 行。該行說明執行器對其自己的 Git、工作階段內的 Git 和您的生命週期鉤子對該變數所做的操作。它以您是否需要更改任何內容結束。

315 315 

316### 將 github.com 儲存庫加入 Claude Tag 頻道工作階段

317 

318如果 Claude 無法將 github.com 儲存庫加入 Claude Tag 頻道工作階段,即使您的執行器可以複製該儲存庫,也請確認該頻道具有其存取權。該存取權來自 GitHub 上及您 Claude 組織中的設定,而非來自執行器的 Git 憑證。

319 

320**1. 安裝 Claude GitHub App**

321 

322在擁有該儲存庫的 GitHub 組織或帳戶上安裝 [Claude GitHub App](https://github.com/apps/claude),並在安裝中包含該儲存庫。

323 

324**2. 連結 GitHub 組織或帳戶**

325 

326在 [**Organization settings > Git providers**](https://claude.ai/admin-settings/source-control) 中,將該組織或帳戶連結到您的 Claude 組織。同時也擁有該 GitHub 組織的 Claude 組織 Owner 可以進行連結。請參閱[連結您的 GitHub 組織](https://claude.com/docs/claude-tag/admins/configure-github#link-your-github-organization)。

327 

328**3. 授予儲存庫**

329 

330在 [Claude Tag 管理設定](https://claude.ai/admin-settings/claude-tag)中,將該儲存庫授予該頻道,或授予包含該頻道的更大範圍:其 Slack 工作區或整個 Slack。具有 Owner 角色或 Claude Tag Admin 權限的人可以授予。如果頻道管理員的 GitHub 帳戶是該儲存庫的管理員,頻道管理員也可以將其加入自己的頻道。請參閱[授予儲存庫存取權](https://claude.com/docs/claude-tag/admins/configure-github#grant-repository-access)。

331 

332然後在頻道中開始新的討論串,並在您的第一則訊息中[指明該儲存庫](https://claude.com/docs/claude-tag/admins/configure-github#how-granted-repositories-reach-a-session)。

333 

334如果 Claude 仍無法加入該儲存庫,請參閱[如果 Claude 無法存取儲存庫](https://claude.com/docs/claude-tag/admins/configure-github#if-claude-can%E2%80%99t-reach-a-repository),了解應在何處檢查 GitHub 連結和儲存庫授權。

335 

316### 為私有網路重寫 Git URL336### 為私有網路重寫 Git URL

317 337 

318儲存庫 URL 從控制平面以 HTTPS 形式傳來,並帶有您 Git 主機的主機名稱;對於 GitHub Enterprise,這是您在 claude.ai 上為 [GitHub Enterprise 整合](https://code.claude.com/docs/zh-TW/github-enterprise-server.md)設定的主機名稱。兩個可重複使用的旗標會在複製之前重寫這些 URL:338儲存庫 URL 從控制平面以 HTTPS 形式傳來,並帶有您 Git 主機的主機名稱;對於 GitHub Enterprise,這是您在 claude.ai 上為 [GitHub Enterprise 整合](https://code.claude.com/docs/zh-TW/github-enterprise-server.md)設定的主機名稱。兩個可重複使用的旗標會在複製之前重寫這些 URL:


376 396 

377構建和測試通常是工作階段負載中最大和最可變的部分,因此執行您的儲存庫的代表性構建,測量其峰值 CPU 和記憶體,並提高任何在該峰值之上沒有為 Claude Code 程序留下空間的起始值。397構建和測試通常是工作階段負載中最大和最可變的部分,因此執行您的儲存庫的代表性構建,測量其峰值 CPU 和記憶體,並提高任何在該峰值之上沒有為 Claude Code 程序留下空間的起始值。

378 398 

379執行器使用 `--capacity` 來限制它一次執行多少個工作階段。它不在它們之間分割 CPU 或記憶體,因此執行器上的工作階段共享容器的 CPU 和記憶體。要限制一個工作階段的份額,從您的[包裝器指令碼](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#wrapper-scripts)應用限制。因此,給一個容器什麼取決於它一次服務多少個工作階段:399執行器使用 `--capacity` 來限制它一次執行多少個工作階段。它不在它們之間分割 CPU 或記憶體,因此執行器上的工作階段共享容器的 CPU 和記憶體。為了避免一個工作階段的記憶體使用量結束其他工作階段,請每個執行器只執行一個工作階段,並為其設定[專屬的記憶體限制](#give-each-session-its-own-memory-limit)。

380 400 

381* **每個執行器一個工作階段**:給每個容器一個工作階段的值。在 `--capacity 1` 使用此調整大小,[強化部分](#harden-your-deployment)推薦,以及[按需執行器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners),您在工作流程的 [`spawn-runner` 鉤子](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#the-spawn-runner-hook)提交的工作負載上設定值,例如 Kubernetes Job 的 pod 範本。401* **每個執行器一個工作階段**:給每個容器一個工作階段的值。在 `--capacity 1` 使用此調整大小,[強化部分](#harden-your-deployment)推薦,以及[按需執行器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners),您在工作流程的 [`spawn-runner` 鉤子](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#the-spawn-runner-hook)提交的工作負載上設定值,例如 Kubernetes Job 的 pod 範本。

382* **每個執行器多個工作階段**:在 `--capacity` 高於 1 時,將一個工作階段的值乘以容量,因為最多那麼多工作階段可以在容器中同時執行。[Kubernetes](#kubernetes) 和 [Docker Compose](#docker-compose) 配方執行 `--capacity 4`,沒有 CPU 或記憶體限制,因此添加為您執行的容量調整大小的限制。402* **每個執行器多個工作階段**:在 `--capacity` 高於 1 時,將一個工作階段的值乘以容量,因為最多那麼多工作階段可以在容器中同時執行。[Kubernetes](#kubernetes) 和 [Docker Compose](#docker-compose) 配方執行 `--capacity 4`,沒有 CPU 或記憶體限制,因此添加為您執行的容量調整大小的限制。

403* **一台主機上多個執行器容器**:依執行器容量的總和調整主機大小,因為每個執行器只將自己的工作階段計入 `--capacity`:

404 

405 * **記憶體**:將一個工作階段的記憶體乘以該總和,再加上主機本身程序使用的記憶體

406 * **CPU**:將一個工作階段的 CPU 請求乘以該總和。若要讓每個工作階段同時突發,請改為乘以其 CPU 限制。

407 

408 為每個執行器提供專屬的容器。在每個容器中使用[相同的 `--base-dir` 路徑](#keep-the-base-directory-and-capacity-identical-across-runners),並放在沒有其他執行器容器掛載的儲存空間上,讓每個執行器都有[自己的工作目錄](#harden-your-deployment)。

409 

410### 為每個工作階段提供專屬的記憶體限制

411 

412為了避免記憶體耗盡時一個工作階段結束其他工作階段,請讓每個執行器以 `--capacity 1` 在專屬的記憶體限制下執行,並將該限制設為一個工作階段的記憶體:

413 

414* **在容器中**:每個容器執行一個執行器,並設定容器的記憶體限制,例如 Kubernetes 上的 `limits.memory`、Docker 上的 `--memory`,或 Compose 檔案中的 `mem_limit`。請讓各容器限制的總和低於主機的記憶體,因為當主機本身耗盡記憶體時,核心可能會終止主機上任何位置的程序。

415* **在 systemd 下且不使用容器**:在執行器的 unit 上設定 `MemoryMax`,並且每台主機執行一個執行器,因為在同一檔案系統上[使用相同 `--base-dir`](#keep-the-base-directory-and-capacity-identical-across-runners) 的執行器會共享在那裡複製的儲存庫。例如,在 `--capacity 1` 且沒有 `checkout` hook 的情況下,它們在同一個儲存庫上的工作階段可能會同時在同一個簽出中工作。若要在一台主機上執行多個執行器,請為每個執行器提供一個容器。

416 

417當容器或 unit 達到其記憶體限制時,核心只會終止其中的程序。如果您將 `--capacity` 設定為高於 1,工作階段會共享同一個限制。當它們達到該限制時,核心不會依工作階段選擇要終止哪些程序,因此一個工作階段的記憶體使用量可能會結束其他工作階段。

418 

419在 Kubernetes 上,無論 kubelet 的 `singleProcessOOMKill` 設定為哪個值,都無法將工作階段分隔開來。您也無法在[包裝器指令碼](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#wrapper-scripts)中使用記憶體 `ulimit` 來限制工作階段的總記憶體。核心會將 `ulimit -v` 之類的值分別套用至每個程序。

420 

421### 在程序和執行緒限制下保留空間

422 

423若要決定程序和執行緒限制的大小,請測量一個工作階段所需的數量,並乘以共享該限制的工作階段數。當這些工作階段達到限制時,核心會拒絕新的程序和執行緒,因此其中任何一個工作階段中的命令、建置和測試都可能失敗。被拒絕的呼叫會傳回 `EAGAIN`,其標準訊息為 `Resource temporarily unavailable`。

424 

425假設一個工作階段的峰值為 300 個程序和執行緒,且有四個工作階段共享該限制。它們合計需要 1,200,而將限制設為 2,400 時,您就為需要兩倍數量的建置保留了空間。

426 

427#### 在何處設定各項限制

428 

429此表中的每項限制都同時計算執行緒和程序,而 `pids.max` 是存放 cgroup 限制的檔案:

430 

431| 限制 | 設定位置 | 共享者 |

432| :- | :- | :- |

433| Kubernetes 上的 `pids.max` | 執行執行器之節點的 kubelet 設定中的 `podPidsLimit`。您無法在 Pod 規格中設定它。 | 一個 Pod 的容器 |

434| Docker 上的 `pids.max` | `--pids-limit`,或 Compose 檔案中的 `pids_limit` | 一個容器 |

435| systemd 下的 `pids.max` | 執行器 unit 上的 `TasksMax` | 一個 unit |

436| `ulimit -u` | 啟動執行器的 shell 或服務 | 主機上以執行器使用者 ID 執行的所有內容。對 root 不強制執行。 |

437 

438當您未設定 `TasksMax` 時,systemd 會套用 `DefaultTasksMax`,其預設值為 `kernel.pid_max`、`kernel.threads-max` 和根 cgroup 的 `pids.max` 三者中最低值的 15%。

439 

440#### 測量一個工作階段的峰值

441 

442若要取得您自己執行器的數值,請在其主機(在 Kubernetes 上即為節點)上測量一個工作階段:

443 

444**1. 單獨啟動一個執行器**

445 

446以 `--capacity 1` 啟動一個執行器,其容器或 systemd unit 中沒有其他內容,並且在其主機和環境中都是唯一的:

447 

448* **其主機**:使用沒有執行其他執行器的主機。這樣您就能在下一步中找出它的程序。

449* **其環境**:讓它成為該環境中唯一的執行器,例如在您[為測試建立](https://code.claude.com/docs/zh-TW/self-hosted-environments-quickstart.md#set-up-manually)的環境中。工作階段會被路由到環境,而不是路由到執行器。

450 

451先不要啟動工作階段,因為您需要在建置開始之前取得下一步中的目錄。

452 

453**2. 找出執行器的 cgroup 目錄**

454 

455在主機上(而不是在容器內)找出執行器的程序 ID,例如使用 `ps`。讀取該 ID 的 `/proc/<pid>/cgroup`:

456 

457* **某一行包含 `:pids:`**:主機使用 cgroup v1,目錄為 `/sys/fs/cgroup/pids` 後接 `:pids:` 之後的文字

458* **唯一的一行以 `0::` 開頭**:主機使用 cgroup v2,目錄為 `/sys/fs/cgroup` 後接 `0::` 之後的文字

459 

460**3. 執行代表性建置並記錄峰值**

461 

462讓一個工作階段執行代表性建置,並從執行器的 cgroup 目錄取得峰值:

463 

464* **目錄中有 `pids.peak`**:在建置完成後讀取該檔案

465* **目錄中沒有 `pids.peak`**:在建置執行期間每秒讀取一次 `pids.current`,並保留最高值。兩次讀取之間的峰值不會被觀察到,因此請將該值視為偏低的估計值。

466 

467**4. 乘以共享該限制的工作階段數**

468 

469* **一個執行器的 Pod、容器或 unit**:將峰值乘以執行器的 `--capacity`

470* **多個執行器共享的限制**:將峰值乘以它們容量的總和

471 

472然後加上共享該限制的其他任何內容的峰值,例如 Pod 中的另一個容器。

473 

474**5. 將限制設定為高於結果**

475 

476限制較高時,您可以為較重的建置保留空間;限制較低時,您可以更快阻止 fork bomb。

477 

478#### 檢查 `pids.max` 限制

479 

480* **檢查是否已達到 `pids.max`**:搜尋主機的核心日誌(例如使用 `dmesg`),尋找包含 `cgroup: fork rejected by pids controller in` 和 cgroup 路徑的行。核心只會在第一次拒絕該 cgroup 中的程序或執行緒時記錄此訊息,因此請搜尋整個日誌。

481* **查看生效中的限制**:讀取執行器 cgroup 目錄及其上層每個目錄中的 `pids.max`。最低的值即為生效中的限制,而 `max` 表示該層級沒有限制。

383 482 

384## Kubernetes483## Kubernetes

385 484 


577 676 

578重複使用路徑做什麼和不保證什麼:677重複使用路徑做什麼和不保證什麼:

579 678 

580* **任何複製形狀都有效**:路徑上的完整、淺或單分支複製按原樣使用。執行器在提取到現有複製時永遠不會傳遞 `--depth`,因此完整預熱保持其完整歷史記錄,淺複製保持淺。`CLAUDE_RUNNER_FETCH_DEPTH`(`full`、`0` 或數字;預設 50)僅控制執行器在不存在複製時進行的冷複製。679* **複製深度**:建置複製時不要使用 `--depth`,可搭配或不搭配 `--single-branch`。執行器在提取到具有 `origin` 遠端的複製時永遠不會傳遞 `--depth`,即使您設定了 [`CLAUDE_RUNNER_FETCH_DEPTH`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#environment-variable-only-settings) 也是如此。使用完整複製時,每個工作階段只會下載複製所缺少的提交。使用淺複製時,若工作階段所在的分支是在複製最舊的提交之前分叉出來的,該工作階段會下載該分支的完整歷史記錄。

581* **追蹤的變化重置,未追蹤的檔案持續**:在 `--capacity 1` 時,每個工作階段從硬重置開始,該重置擦除前一個工作階段的追蹤修改,但執行器永遠不執行 `git clean`,因此鎖定所有者的早期工作階段的未追蹤檔案保留在樹中。680* **追蹤的變化重置,未追蹤的檔案持續**:在 `--capacity 1` 時,每個工作階段從硬重置開始,該重置擦除前一個工作階段的追蹤修改,但執行器永遠不執行 `git clean`,因此鎖定所有者的早期工作階段的未追蹤檔案保留在樹中。

582* **每工作階段目錄也持續**:在簽出旁邊,執行器在 `<base-dir>/_sessions/` 下為它執行的每個工作階段建立每工作階段項目。工作階段的 Claude 設定目錄保存對話記錄的本地副本。在它旁邊是工作階段的上傳檔案,當工作階段有任何時。工作階段目錄也坐在那裡:它在工作階段執行時保存任何每工作階段 worktrees 和 `checkout` 鉤子簽出,並保持 Claude 在其中寫入的任何其他內容。681* **每工作階段目錄也持續**:在簽出旁邊,執行器在 `<base-dir>/_sessions/` 下為它執行的每個工作階段建立每工作階段項目。工作階段的 Claude 設定目錄保存對話記錄的本地副本。在它旁邊是工作階段的上傳檔案,當工作階段有任何時。工作階段目錄也坐在那裡:它在工作階段執行時保存任何每工作階段 worktrees 和 `checkout` 鉤子簽出,並保持 Claude 在其中寫入的任何其他內容。

583 682 


587* **使用 Git 代理伺服器時,`reftable` 預熱會遺失其 refs**:當執行器在每個工作階段之前清理 `.git/` 時,它會保留 `.git/refs/` 並移除 `.git/reftable/` 目錄。以 Git 的 `reftable` ref 格式預熱的複製會因此遺失其 refs,因此請改以 Git 的 `files` ref 格式預熱複製。686* **使用 Git 代理伺服器時,`reftable` 預熱會遺失其 refs**:當執行器在每個工作階段之前清理 `.git/` 時,它會保留 `.git/refs/` 並移除 `.git/reftable/` 目錄。以 Git 的 `reftable` ref 格式預熱的複製會因此遺失其 refs,因此請改以 Git 的 `files` ref 格式預熱複製。

588* **長複製不需要解決方法**:執行器使用 120 秒無進度看門狗和 30 分鐘硬上限限制每個 Git 操作,而不是平面超時,因此保持報告進度的慢冷複製完成。687* **長複製不需要解決方法**:執行器使用 120 秒無進度看門狗和 30 分鐘硬上限限制每個 Git 操作,而不是平面超時,因此保持報告進度的慢冷複製完成。

589 688 

689### 確認執行器使用您的複製

690 

691若要確認執行器使用您的複製,請使用 [`--log-level debug`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 啟動執行器,並在該儲存庫上啟動工作階段。執行器會在日誌中記錄 `Prefetched repo found at` 以及複製的路徑。如果它改為記錄 `No prefetched repo, fresh init at`,表示它在該行所列的路徑上找不到可用的複製。請檢查您的複製是否位於該路徑、由執行器的使用者擁有,並具有名為 `origin` 的遠端。

692 

693如果執行器找到您的複製,但工作階段仍然啟動緩慢,請檢查該複製是否為淺複製。

694 

590## 固定版本695## 固定版本

591 696 

592根據預設,每個工作階段的子程序會執行執行器自己的二進位檔案,且執行器會在它生成的工作階段內關閉自動更新。在此預設下,每個工作階段都會執行您在主機上安裝或建置到映像中的版本。主機級更新在執行器下次啟動時生效。697根據預設,每個工作階段的子程序會執行執行器自己的二進位檔案,且執行器會在它生成的工作階段內關閉自動更新。在此預設下,每個工作階段都會執行您在主機上安裝或建置到映像中的版本。主機級更新在執行器下次啟動時生效。


609* **固定群**:執行靜態執行器副本集並在每個執行器服務的 [Prometheus 指標](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#prometheus-metrics)上擴展714* **固定群**:執行靜態執行器副本集並在每個執行器服務的 [Prometheus 指標](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#prometheus-metrics)上擴展

610* **按需執行器**:執行 `claude self-hosted-runner orchestrator` 子命令,它輪詢 Anthropic 以查找沒有可用執行器排隊的工作階段,並調用您的 `spawn-runner` 鉤子為每個工作階段啟動一個。請參閱[按需執行器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners)。715* **按需執行器**:執行 `claude self-hosted-runner orchestrator` 子命令,它輪詢 Anthropic 以查找沒有可用執行器排隊的工作階段,並調用您的 `spawn-runner` 鉤子為每個工作階段啟動一個。請參閱[按需執行器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners)。

611 716 

717### 在固定群上釋放閒置工作階段

718 

719如果在每個執行器都在線的情況下,固定群上的工作階段仍持續排隊,原因可能是閒置工作階段。預設情況下,工作階段在其回合結束後仍會保留其槽位,而其執行器會持續鎖定於該工作階段的[所有者](https://code.claude.com/docs/zh-TW/self-hosted-environments#key-concepts)。如果您團隊的[雲端排程任務](https://code.claude.com/docs/zh-TW/routines.md)在每次執行時都會啟動新的工作階段,其閒置工作階段可能會佔滿所有槽位。

720 

721若要檢查,請讀取每個執行器的 [Prometheus 指標](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#prometheus-metrics)中的 `claude_code_self_hosted_runner_session_idle_seconds`。執行器持有的每個工作階段都有其各自的序列:工作階段忙碌時為 `0`,否則為其進入閒置狀態以來的秒數。選擇您允許的閒置時間:要長於人們在任務進行中的暫停時間,並且短到足以讓每次執行在排程任務的下一次執行開始之前被釋放。將這些序列與該時間進行比較。

722 

723* **序列高於該時間,例如 30 分鐘的 `1800`**:閒置工作階段佔用了這些槽位,因此請設定 `--release-idle-session-min`

724* **每個序列都低於該時間**:沒有任何工作階段閒置那麼久。請添加執行器,或針對[從不進入閒置狀態的工作階段](#some-sessions-don’t-count-as-idle)設定 [`--kill-session-after-min`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags)。

725* **沒有序列的執行器**:沒有任何工作階段持有它。請參閱[疑難排解](#troubleshooting)下的 **Sessions stay queued**。

726* **指標沒有回應的執行器**:其程序可能已經結束。請參閱[當執行器結束時](#when-the-runner-exits)下的 **An environment that looks healthy**。

727 

728若要釋放閒置工作階段,請使用 [`--release-idle-session-min`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 並搭配以分鐘為單位的該時間來啟動每個執行器,例如 `--release-idle-session-min 30`。執行器隨後會釋放任何閒置達該時間的工作階段,無論是由排程任務還是由人員啟動的。

729 

730* **未推送的工作**:已釋放的工作階段會在其下一則訊息時恢復,但不包含其尚未推送的工作。若要保留其提交,請參閱[恢復的工作階段會遺失未推送的工作](#additional-limitations)。

731* **執行器結束**:釋放其最後一個工作階段的執行器會開始[正常結束](#when-the-runner-exits)。請讓您的監督程式在全新的檔案系統上重新啟動它,如[強化您的部署](#harden-your-deployment)所述。

732* **從不進入閒置狀態的工作階段**:也請設定 [`--kill-session-after-min`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags),因為[某些工作階段不被視為閒置](#some-sessions-don’t-count-as-idle)

733 

612## 已知問題和限制734## 已知問題和限制

613 735 

614以下是此版本中的限制,其中存在解決方法。736以下是此版本中的限制,其中存在解決方法。


642### 其他限制764### 其他限制

643 765 

644* **恢復的工作階段丟失未推送的工作**:新的執行器會從其起始分支再次複製儲存庫,因此工作階段未推送的工作會消失。766* **恢復的工作階段丟失未推送的工作**:新的執行器會從其起始分支再次複製儲存庫,因此工作階段未推送的工作會消失。

645 * **若要保留已提交的工作**:在環境中的每個執行器上設定 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags),因為沒有此旗標的執行器會從其起始分支恢復工作階段。具有此旗標的執行器會在釋放之前盡力推送工作階段的結果分支,恢復的工作階段便會從這些提交開始。推送會使用執行器主機本身的 git 憑證,包括在使用 [Anthropic 管理的 git](#use-the-anthropic-git-proxy) 的執行器上。未提交的變更仍會遺失。767 * **若要保留已提交的工作**:在環境中的每個執行器上設定 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags),因為沒有此旗標的執行器會從其起始分支恢復工作階段。具有此旗標的執行器會在釋放之前盡力推送工作階段的結果分支,恢復的工作階段便會從這些提交開始。推送會使用執行器主機本身的 git 憑證,包括在使用 [Anthropic 管理的 git](#use-the-anthropic-git-proxy) 的執行器上。

646 * **使用 `checkout` hook 時**:透過 [`checkout` 生命週期 hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#checkout) 簽出的儲存庫不會被推送。請改為從 [`post-session` hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#post-session) 建立這些儲存庫的快照。768 * **使用 `checkout` hook 時**:透過 [`checkout` 生命週期 hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#checkout) 簽出的儲存庫不會被推送。請改為從 [`post-session` hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#post-session) 建立這些儲存庫的快照。

647 * **啟用旗標之前**:限制誰可以推送到來源遠端上的 `claude/*` refs。在恢復時,執行器會提取先前推送的分支,而不驗證是誰推送的。769 * **啟用旗標之前**:限制誰可以推送到來源遠端上的 `claude/*` refs。在恢復時,執行器會提取先前推送的分支,而不驗證是誰推送的。

770 * **未提交的變更仍會遺失**:若要提示 Claude 在完成回應時提交並推送,請參閱[提示工作階段推送其工作](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)

648* **工作階段中途新增的儲存庫可能無法複製**:Claude 透過 HTTPS 使用 `git clone` 複製它。在未使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器上,如果主機上沒有任何項目能讀取該儲存庫,複製會因 git 身分驗證錯誤而失敗。在可行的情況下,請在建立工作階段時選擇工作階段需要的每個儲存庫。771* **工作階段中途新增的儲存庫可能無法複製**:Claude 透過 HTTPS 使用 `git clone` 複製它。在未使用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的執行器上,如果主機上沒有任何項目能讀取該儲存庫,複製會因 git 身分驗證錯誤而失敗。在可行的情況下,請在建立工作階段時選擇工作階段需要的每個儲存庫。

649* **某些連接器不出現在自託管工作階段中**:您在 claude.ai Settings 中尚未連接的連接器不在自託管工作階段中列出,工作階段不會提示您連接它。首先在 Settings 中連接它,然後啟動新工作階段。將連接器添加到已執行的工作階段也不會使其工具可用於 Claude;啟動新工作階段以拾取新添加的連接器。772* **某些連接器不出現在自託管工作階段中**:您在 claude.ai Settings 中尚未連接的連接器不在自託管工作階段中列出,工作階段不會提示您連接它。首先在 Settings 中連接它,然後啟動新工作階段。將連接器添加到已執行的工作階段也不會使其工具可用於 Claude;啟動新工作階段以拾取新添加的連接器。

650* **當有人封存或刪除工作階段,或從工作階段的選單釋放其執行器時**:不要依賴 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 的推送。若要在這些情況下保存提交,請從 [`post-session` hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#post-session) 將 `HEAD` 推送到救援分支。如果您以該處的範例為起點,請讓它在沒有任何未提交變更時也進行推送,因為該範例只會在建立快照提交之後才推送。773* **當有人封存或刪除工作階段,或從工作階段的選單釋放其執行器時**:不要依賴 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 的推送。若要在這些情況下保存提交,請從 [`post-session` hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#post-session) 將 `HEAD` 推送到救援分支。如果您以該處的範例為起點,請讓它在沒有任何未提交變更時也進行推送,因為該範例只會在建立快照提交之後才推送。


684* **工作階段在接收後立即失敗**:在 claude.ai/code 中開啟該工作階段以查看錯誤。如果錯誤顯示 git 無法進行身分驗證,請檢查 runner 的 [git 憑證](#configure-git)。在以 `--use-anthropic-git-proxy` 啟動的 runner 上,請參閱[當工作階段無法在使用 git 代理伺服器的 runner 上啟動時](#when-anthropic-doesnt-serve-a-session)。807* **工作階段在接收後立即失敗**:在 claude.ai/code 中開啟該工作階段以查看錯誤。如果錯誤顯示 git 無法進行身分驗證,請檢查 runner 的 [git 憑證](#configure-git)。在以 `--use-anthropic-git-proxy` 啟動的 runner 上,請參閱[當工作階段無法在使用 git 代理伺服器的 runner 上啟動時](#when-anthropic-doesnt-serve-a-session)。

685 808 

686 無法寫入的基礎目錄會讓 runner 在啟動時就停止,而不是讓工作階段失敗。請參閱本清單中的 **Runner 在啟動時以 `cannot create or write to base directory` 結束**項目。809 無法寫入的基礎目錄會讓 runner 在啟動時就停止,而不是讓工作階段失敗。請參閱本清單中的 **Runner 在啟動時以 `cannot create or write to base directory` 結束**項目。

810* **工作階段已被接收,但 Claude 從未回覆其第一則訊息**:如果您的 runner 透過代理伺服器連線至 `api.anthropic.com`,請設定代理伺服器在工作階段的 `/worker/events/stream` 回應抵達時即將其傳遞出去。提高 runner 的逾時並無幫助。若要在 runner 的日誌中確認原因,請參閱[工作階段已被接收,但 Claude 從未回覆其第一則訊息](#when-a-sessions-first-message-is-never-answered)。

687* **工作階段無法在設定了 `--use-anthropic-git-proxy` 的 runner 上啟動**:請在 runner 的日誌中尋找 `access denied by the git proxy`,或是指名包含 `/git_proxy/` 之 `api.anthropic.com` 位址的 git 錯誤。若要判斷 Anthropic 是否已服務該工作階段並修正原因,請參閱[當工作階段無法在使用 git 代理伺服器的 runner 上啟動時](#when-anthropic-doesnt-serve-a-session)。811* **工作階段無法在設定了 `--use-anthropic-git-proxy` 的 runner 上啟動**:請在 runner 的日誌中尋找 `access denied by the git proxy`,或是指名包含 `/git_proxy/` 之 `api.anthropic.com` 位址的 git 錯誤。若要判斷 Anthropic 是否已服務該工作階段並修正原因,請參閱[當工作階段無法在使用 git 代理伺服器的 runner 上啟動時](#when-anthropic-doesnt-serve-a-session)。

688* **工作階段無法透過需要身分驗證的輸出代理伺服器連線至網路**:當您以 [`--proxy-authorization-command` 或 `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) 設定的來源失敗、在 30 秒後逾時,或產生空值時,runner 會對該連線回應 `502 Bad Gateway` 並記錄原因。Runner 會在該日誌中遮蔽(redact)命令的 stderr 內容,且絕不會記錄標頭值。使用 `--proxy-authorization-command` 時,請在主機上自行執行該命令,確認它會在 stdout 上輸出完整的標頭值。如果 runner 改為在啟動時以 `could not start the proxy-authorization listener` 結束,表示它無法開啟其 loopback 監聽器。812* **工作階段無法透過需要身分驗證的輸出代理伺服器連線至網路**:當您以 [`--proxy-authorization-command` 或 `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) 設定的來源失敗、在 30 秒後逾時,或產生空值時,runner 會對該連線回應 `502 Bad Gateway` 並記錄原因。Runner 會在該日誌中遮蔽(redact)命令的 stderr 內容,且絕不會記錄標頭值。使用 `--proxy-authorization-command` 時,請在主機上自行執行該命令,確認它會在 stdout 上輸出完整的標頭值。如果 runner 改為在啟動時以 `could not start the proxy-authorization listener` 結束,表示它無法開啟其 loopback 監聽器。

689* **Runner 記錄包含 `rejecting the malformed poll response` 的 `Poll failed` 行**:runner 收到的工作輪詢回應本文並非佇列預期的 JSON。其中一個原因是攔截式代理伺服器或強制入口網頁以其自己的頁面作出回應。如果 runner 透過代理伺服器連線,請設定代理伺服器,讓來自 `api.anthropic.com` 的回應原封不動地通過。813* **Runner 記錄包含 `rejecting the malformed poll response` 的 `Poll failed` 行**:runner 收到的工作輪詢回應本文並非佇列預期的 JSON。其中一個原因是攔截式代理伺服器或強制入口網頁以其自己的頁面作出回應。如果 runner 透過代理伺服器連線,請設定代理伺服器,讓來自 `api.anthropic.com` 的回應原封不動地通過。


708* **工作階段啟動失敗並顯示 `This runner couldn't read`**:runner 以其 [git 憑證](#configure-git)向 git 主機請求儲存庫,並收到找不到的回應。該儲存庫不存在,或這些憑證無法存取該儲存庫。832* **工作階段啟動失敗並顯示 `This runner couldn't read`**:runner 以其 [git 憑證](#configure-git)向 git 主機請求儲存庫,並收到找不到的回應。該儲存庫不存在,或這些憑證無法存取該儲存庫。

709 * **如果您管理該 runner**:為其 git 憑證授予該儲存庫的讀取權限,然後啟動新的工作階段。833 * **如果您管理該 runner**:為其 git 憑證授予該儲存庫的讀取權限,然後啟動新的工作階段。

710 * **如果您是啟動該工作階段的人**:如果儲存庫不存在,請以正確的儲存庫啟動新的工作階段。如果 runner 無法存取該儲存庫,請要求 runner 的管理員授予存取權,然後啟動新的工作階段。834 * **如果您是啟動該工作階段的人**:如果儲存庫不存在,請以正確的儲存庫啟動新的工作階段。如果 runner 無法存取該儲存庫,請要求 runner 的管理員授予存取權,然後啟動新的工作階段。

711* **工作階段需要數分鐘才能啟動**:通常初始 clone 佔了大部分時間。請觀察 `claude_code_self_hosted_runner_session_init_duration_seconds` [指標](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#prometheus-metrics)以確認,並透過[預熱的 checkout](#reuse-a-pre-warmed-checkout) 或較小的 `CLAUDE_RUNNER_FETCH_DEPTH` 縮短 clone 時間。835* **工作階段需要數分鐘才能啟動或恢復**:其中一個原因是全新的 clone。在每個 runner 都以空磁碟啟動且沒有 [`checkout` hook](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#checkout) 的叢集上,runner 會在啟動 Claude Code 之前重新 clone 工作階段的儲存庫。在空磁碟上恢復的工作階段也會再次等待相同的 clone。

836 

837 若要略過全新的 clone,請提供[預熱的 checkout](#reuse-a-pre-warmed-checkout)。如果您已提供,請[確認 runner 有使用它](#confirm-that-the-runner-uses-your-clone)。若由 runner 自行進行 clone 並在一個工作階段後結束,請將 [`CLAUDE_RUNNER_FETCH_DEPTH`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#environment-variable-only-settings) 從預設的 50 個提交調低,以擷取較少的歷史記錄。

838 

839 如果您使用 hook,它會取代 runner 的 clone 執行,因此請改為檢查您的 hook 所做的事。請觀察 `claude_code_self_hosted_runner_session_init_duration_seconds` [指標](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference.md#prometheus-metrics),以查看啟動所需的時間。

712* **回合因 401 失敗**:當回合以來自 Anthropic API 的 401 或 403 結束時,runner 會從 Anthropic 取得新的 [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 並傳遞給工作階段。失敗的回合不會重試。此 token 的效期很短,runner 會透過工作階段的 stdin 輪換它。840* **回合因 401 失敗**:當回合以來自 Anthropic API 的 401 或 403 結束時,runner 會從 Anthropic 取得新的 [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration#wrapper-scripts) 並傳遞給工作階段。失敗的回合不會重試。此 token 的效期很短,runner 會透過工作階段的 stdin 輪換它。

713 841 

714 當取得失敗時,runner 會記錄一行 `inference_token refresh failed`,說明何時會重試,並在工作階段執行期間持續重試。842 當取得失敗時,runner 會記錄一行 `inference_token refresh failed`,說明何時會重試,並在工作階段執行期間持續重試。


788 916 

789如需在 runner 主機上進行引導式診斷,請執行 [doctor 子命令](#troubleshooting)。917如需在 runner 主機上進行引導式診斷,請執行 [doctor 子命令](#troubleshooting)。

790 918 

919### 工作階段已被接收,但 Claude 從未回覆其第一則訊息

920 

921如果 runner 接收了工作階段,但 Claude 從未回覆第一則訊息,而您的 runner 透過代理伺服器連線至 `api.anthropic.com`,原因可能出在代理伺服器。Anthropic 會透過一個保持開啟的串流回應將訊息傳送給工作階段。如果您的代理伺服器緩衝了該回應,或在傳遞任何內容之前就將其結束,第一則訊息就永遠不會抵達。工作階段的其他請求仍會成功。

922 

923若要修正此問題,請變更代理伺服器處理此請求的方式:

924 

925```text theme={null}

926GET https://api.anthropic.com/v1/code/sessions/<session-id>/worker/events/stream

927```

928 

929* **不要緩衝回應**:在回應抵達時即將其傳遞出去。其內容類型為 `text/event-stream`。

930* **讓回應保持開啟**:它最多可保持開啟一小時。如果代理伺服器設有閒置逾時,請將其設定為遠高於 15 秒,因為 Anthropic 預設至少每隔這段時間就會傳送一次 keep-alive。

931 

932接著啟動新的工作階段,並確認 Claude 有回覆。提高 runner 的逾時並無幫助:您只會在 runner 停止工作階段之前等待更久。

933 

934#### 在 runner 的日誌中確認原因

935 

936這些步驟適用於 Claude Code v2.1.287 或更新版本、使用預設 `--log-level info` 的 runner。較舊的 runner 會較晚記錄這些行,或完全不記錄。

937 

9381. 等待 [`--startup-timeout-min`](https://code.claude.com/docs/zh-TW/self-hosted-environments-reference#runner-cli-flags) 經過,預設為 15 分鐘。Runner 接著會停止工作階段,並記錄一行包含 `no child output for` 且以 `— releasing` 結尾的內容。

9392. 在 runner 的日誌中搜尋 `SDKStartup: SSE`。這些行出現在 `finished: interrupted` 行之後,位於步驟 1 那一行之後的幾行。大多數沒有時間戳記,因此日誌收集器可能會將它們顯示在其他位置。

9403. 在下表中找到該行:

941 

942| 日誌行包含 | 處理方式 |

943| :- | :- |

944| `SSE connect failed (no response in 30s)` 或 `SSE liveness timeout` | 請確認代理伺服器有轉送該請求、在回應的標頭與資料抵達時即將其傳遞出去,且不會中斷連線 |

945| `SSE connect failed (HTTP` 及狀態碼 | 請檢查代理伺服器本身的日誌。如果是代理伺服器自行回應了該請求,請讓該請求通過代理伺服器。 |

946| `SSE connect failed (` 及任何其他文字 | 括號中的文字即為錯誤。請在代理伺服器本身的日誌中尋找同一個連線。 |

947| `SSE stream ended by server`,一再出現 | 請檢查代理伺服器對長時間回應的時間限制。單獨一行這樣的內容屬於正常。 |

948| `SSE reconnected after` | 請在其後尋找其他行之一。這一行並不表示有任何內容送達工作階段。 |

949 

950如果日誌中沒有上述任何一行,或代理伺服器的日誌顯示沒有任何問題,請[回報問題](#report-an-issue)。

951 

952#### 阻止工作階段再次嘗試

953 

954工作階段會保留該訊息為待處理狀態,而能服務該工作階段擁有者的 runner 會再次接收該工作階段。在您變更代理伺服器之前,工作階段每次都會以相同方式等待。若要停止這種情況,請在 claude.ai/code 中封存該工作階段。

955 

791## 下一步956## 下一步

792 957 

793* [自訂工作階段](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md):包裝器指令碼、生命週期鉤子、按需執行器、MCP 伺服器和權限958* [自訂工作階段](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md):包裝器指令碼、生命週期鉤子、按需執行器、MCP 伺服器和權限

Details

121* **工作階段因 git 錯誤而無法啟動**:如果錯誤包含 git 的 `could not read Username for`,後面接著您的 git 主機 URL,表示執行器沒有該主機的 HTTPS 憑證。121* **工作階段因 git 錯誤而無法啟動**:如果錯誤包含 git 的 `could not read Username for`,後面接著您的 git 主機 URL,表示執行器沒有該主機的 HTTPS 憑證。

122 * **提供 HTTPS 憑證**:請參閱[設定 git](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#configure-git)122 * **提供 HTTPS 憑證**:請參閱[設定 git](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#configure-git)

123 * **改用 SSH 複製**:如果執行器主機已有 SSH 金鑰,請參閱[為私有網路重寫 git URL](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)123 * **改用 SSH 複製**:如果執行器主機已有 SSH 金鑰,請參閱[為私有網路重寫 git URL](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)

124 * **完成任一修正後**:再次啟動執行器並觀察失敗的工作階段,而不是啟動新的工作階段。如果它已失敗多次,請等待數分鐘,直到執行器記錄 `Picked up session`。

125 * **若要改用其他儲存庫**:[封存](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md#archive-sessions)或[刪除](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md#delete-sessions)失敗的工作階段,然後再次啟動執行器並啟動新的工作階段。否則,執行器可能會拾取失敗的工作階段,而不是新的工作階段。

124 126 

125### 如果執行器退出127### 如果執行器退出

126 128 

Details

83 83 

84| 旗標 | 預設值 | 說明 |84| 旗標 | 預設值 | 說明 |

85| :- | :- | :- |85| :- | :- | :- |

86| `--hook-concurrency <n>` | `4` | 最大 `spawn-runner` 掛鉤並行執行。也限制每次輪詢聲稱多少個產生請求。 |86| `--hook-concurrency <n>` | `4` | 最大 `spawn-runner` hook 並行執行數。也限制每次輪詢聲稱多少個產生請求。協調器只有在其啟動的每個 hook 都完成後,才會檢查新的產生請求,因此一個緩慢的 hook 會延遲該協調器的後續 hook。 |

87| `--hook-timeout <sec>` | `60` | 在此許多秒後終止掛鉤的程序樹。逾時加上其 5 秒終止寬限期必須保持在 `--expected-spawn-seconds` 以下;協調器在啟動時強制執行此項。 |87| `--hook-timeout <sec>` | `60` | 在此許多秒後終止掛鉤的程序樹。逾時加上其 5 秒終止寬限期必須保持在 `--expected-spawn-seconds` 以下;協調器在啟動時強制執行此項。 |

88| `--expected-spawn-seconds <sec>` | `120` | 從協調器收到產生請求到執行器註冊為止的預期 p99 時間,包括在您的平台上等待容量的任何時間。伺服器強制的範圍為 10 到 3600。在每次輪詢時作為伺服器端租約發送:如果沒有執行器在其經過前註冊,工作階段會以新訂單 ID 重新提供。所有副本必須共享此值。 |88| `--expected-spawn-seconds <sec>` | `120` | 從協調器收到產生請求到執行器註冊為止的預期 p99 時間,包括在您的平台上等待容量的任何時間。伺服器強制的範圍為 10 到 3600。在每次輪詢時作為伺服器端租約發送:如果沒有執行器在其經過前註冊,工作階段會以新訂單 ID 重新提供。所有副本必須共享此值。 |

89| `--min-idle <n>` | `0` | 通過主動產生待命執行器來保持至少 N 個閒置工作階段槽空閒。`0` 停用預熱。與執行器的 `--exit-if-unused-min` 配對,以便多餘的待命執行器回收自己。 |89| `--min-idle <n>` | `0` | 通過主動產生待命執行器來保持至少 N 個閒置工作階段槽空閒。`0` 停用預熱。與執行器的 `--exit-if-unused-min` 配對,以便多餘的待命執行器回收自己。 |


116| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | 執行器在工作階段達到其 `--kill-session-after-min` 限制後等待的時間,以便執行中的轉向完成或釋放完成,然後才終止工作階段 |116| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | 執行器在工作階段達到其 `--kill-session-after-min` 限制後等待的時間,以便執行中的轉向完成或釋放完成,然後才終止工作階段 |

117| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | 執行器在轉向完成後計算工作階段忙碌的上限時間,用於 `--drain-wait-sec` 排空,而工作階段的程序向 Anthropic 報告轉向的結束。`0` 或無法使用的值回退到預設值,因此無法關閉保持。需要 Claude Code v2.1.275 或更新版本。 |117| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | 執行器在轉向完成後計算工作階段忙碌的上限時間,用於 `--drain-wait-sec` 排空,而工作階段的程序向 Anthropic 報告轉向的結束。`0` 或無法使用的值回退到預設值,因此無法關閉保持。需要 Claude Code v2.1.275 或更新版本。 |

118| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | 執行器等待作業系統將 `SIGKILL` 傳遞到卡在不可中斷 I/O 中的子程序的時間,然後自己退出。下限為 `--post-session-hook-timeout-sec` 加 15 秒,以及設定 `--push-outcome-on-release` 時的 30 秒,因此有效最小值在預設值為 75 秒。 |118| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | 執行器等待作業系統將 `SIGKILL` 傳遞到卡在不可中斷 I/O 中的子程序的時間,然後自己退出。下限為 `--post-session-hook-timeout-sec` 加 15 秒,以及設定 `--push-outcome-on-release` 時的 30 秒,因此有效最小值在預設值為 75 秒。 |

119| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | 新複製的 git 提取深度。設定正整數,或 `full` 或 `0` 以進行完整提取。工作區中已存在的存放庫保持其現有深度。 |119| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | 新複製的 git 提取深度。設定正整數,或 `full` 或 `0` 以進行完整提取。對於工作區中已存在的複製,請參閱[重複使用預熱的簽出](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)。 |

120| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | 每次嘗試中,當 git 伺服器本身的進度數字持續上升時(例如伺服器為大型儲存庫準備 pack 時),git 提取可等待第一筆資料的時間(以毫秒為單位)。`0` 或 `off` 會關閉此等待:此類提取在兩分鐘內沒有資料時即會被中斷。其他任何整數會被限制在 `120000` 到 `1800000` 之間,即 2 到 30 分鐘。需要 Claude Code v2.1.295 或更新版本。 |120| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | 每次嘗試中,當 git 伺服器本身的進度數字持續上升時(例如伺服器為大型儲存庫準備 pack 時),git 提取可等待第一筆資料的時間(以毫秒為單位)。`0` 或 `off` 會關閉此等待:此類提取在兩分鐘內沒有資料時即會被中斷。其他任何整數會被限制在 `120000` 到 `1800000` 之間,即 2 到 30 分鐘。需要 Claude Code v2.1.295 或更新版本。 |

121| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | 未設定 | 當 `1` 時,在 `checkout` 掛鉤執行後跳過 `.git` 存在檢查。當您的掛鉤具體化非 git 來源時設定此項。 |121| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | 未設定 | 當 `1` 時,在 `checkout` 掛鉤執行後跳過 `.git` 存在檢查。當您的掛鉤具體化非 git 來源時設定此項。 |

122| `FORCE_AUTOUPDATE_PLUGINS` | 未設定 | 當 `1` 時,即使二進位檔被固定,也讓外掛程式市場自動更新 |122| `FORCE_AUTOUPDATE_PLUGINS` | 未設定 | 當 `1` 時,即使二進位檔被固定,也讓外掛程式市場自動更新 |


230 interval: 30s230 interval: 30s

231```231```

232 232 

233### 範例警報規則

234 

233這些範例警報規則是起點;為您的艦隊大小調整閾值:235這些範例警報規則是起點;為您的艦隊大小調整閾值:

234 236 

235```yaml theme={null}237```yaml theme={null}


251 annotations:253 annotations:

252 summary: "執行器執行混合版本"254 summary: "執行器執行混合版本"

253 - alert: ClaudeRunnerInitErrorsHigh255 - alert: ClaudeRunnerInitErrorsHigh

254 expr: increase(claude_code_self_hosted_runner_session_init_errors_total[10m]) > 3256 expr: sum by (namespace) (increase(claude_code_self_hosted_runner_session_init_errors_total[10m])) > 3

255 for: 5m257 for: 5m

256 labels: {severity: warning}258 labels: {severity: warning}

257 annotations:259 annotations:

258 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個工作階段初始化失敗(簽出 hook / git / 權杖 / 初始化前崩潰)"260 summary: "工作階段在初始化前失敗(簽出 hook / git / 權杖 / 初始化前崩潰)"

259 - alert: ClaudeRunnerPollErrors261 - alert: ClaudeRunnerPollErrors

260 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0262 expr: sum by (pod) (rate(claude_code_self_hosted_runner_poll_errors_total[5m])) > 0

261 for: 2m263 for: 2m


263 annotations:265 annotations:

264 summary: "執行器 {{ $labels.pod }}:PollWork 失敗(5 分鐘內 {{ $value | humanize }}/s)"266 summary: "執行器 {{ $labels.pod }}:PollWork 失敗(5 分鐘內 {{ $value | humanize }}/s)"

265 - alert: ClaudeRunnerSessionStartHookErrors267 - alert: ClaudeRunnerSessionStartHookErrors

266 expr: increase(claude_code_self_hosted_runner_session_start_hook_errors_total[10m]) > 3268 expr: sum by (namespace) (increase(claude_code_self_hosted_runner_session_start_hook_errors_total[10m])) > 3

267 for: 5m269 for: 5m

268 labels: {severity: warning}270 labels: {severity: warning}

269 annotations:271 annotations:

270 summary: "執行器 {{ $labels.pod }}:10 分鐘內 >3 個 SessionStart hook 失敗"272 summary: "SessionStart hook 持續失敗"

271 273 

272 - name: claude-code-self-hosted-orchestrator274 - name: claude-code-self-hosted-orchestrator

273 rules:275 rules:


284 annotations:286 annotations:

285 summary: "協調器 {{ $labels.pod }} 已超過 90 秒未輪詢(輪詢迴圈等待 hook 執行)"287 summary: "協調器 {{ $labels.pod }} 已超過 90 秒未輪詢(輪詢迴圈等待 hook 執行)"

286 - alert: ClaudeOrchestratorCircuitBroken288 - alert: ClaudeOrchestratorCircuitBroken

287 expr: claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions > 0289 expr: max by (namespace) (claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions and on (instance) max_over_time(claude_code_self_hosted_orchestrator_connected[2m]) == 1) > 0

288 for: 1m290 for: 1m

289 labels: {severity: critical}291 labels: {severity: critical}

290 annotations:292 annotations:


303 summary: "協調器 {{ $labels.pod }}:5 分鐘內 >3 個 spawn-runner hook 失敗"305 summary: "協調器 {{ $labels.pod }}:5 分鐘內 >3 個 spawn-runner hook 失敗"

304```306```

305 307 

308### 針對遺失的執行器與等待中的工作階段發出警報

309 

310在[固定艦隊](https://code.claude.com/docs/zh-TW/self-hosted-environments-deploy.md#scale-the-fleet)上,載入 `ClaudeRunnersBelowFloor`。使用[按需執行器](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#on-demand-runners)時,改為載入 `ClaudeOrchestratorSessionsWaiting` 和 `ClaudeOrchestratorQueueWaitHigh`。

311 

312#### 固定艦隊遺失執行器時發出警報

313 

314`ClaudeRunnersBelowFloor` 會在剩餘的已註冊且已抓取執行器數量低於下限並持續 10 分鐘時觸發:

315 

316```yaml theme={null}

317groups:

318 # 僅限固定艦隊。使用按需執行器時,數量會隨需求變動,

319 # 因此 ClaudeRunnersBelowFloor 會在需求低時觸發。

320 - name: claude-code-self-hosted-fixed-fleet-capacity

321 rules:

322 - alert: ClaudeRunnersBelowFloor

323 expr: (count(claude_code_self_hosted_runner_info{namespace="claude-runners"}) or vector(0)) < 2

324 for: 10m

325 labels: {severity: critical, namespace: claude-runners}

326 annotations:

327 summary: "已註冊且已抓取的執行器:{{ $value }},低於下限。請先檢查執行器工作負載,若全部都在執行,再檢查抓取目標。"

328```

329 

330* **下限**:將 `expr` 中的 `2` 設為約為副本數的一半,並無條件進位。有三個副本時保留 `2`,當只剩一個執行器或沒有執行器時,警報就會觸發。

331* **命名空間**:取代 matcher 中和 `labels` 中的 `claude-runners`,並為每個額外的命名空間複製此警報。如果您的目標沒有 `namespace` 標籤,請移除 matcher 和該標籤,否則警報會讀取到 0 並觸發。

332* **`ClaudeRunnerPollStale` 和 `ClaudeRunnerPollErrors`**:請保持從[範例警報規則](#sample-alert-rules)載入它們,因為 `ClaudeRunnersBelowFloor` 仍會計入無法輪詢的執行器

333 

334#### 工作階段等待按需執行器時發出警報

335 

336`ClaudeOrchestratorSessionsWaiting` 會在等待執行器的工作階段數量持續高於 0 達 10 分鐘時觸發。`ClaudeOrchestratorQueueWaitHigh` 會在過去 10 分鐘內超過 1% 的佇列等待超過 160 秒,且此情況持續 5 分鐘時觸發:

337 

338```yaml theme={null}

339groups:

340 # 僅限按需執行器。不需要針對命名空間進行編輯。

341 - name: claude-code-self-hosted-on-demand-capacity

342 rules:

343 - alert: ClaudeOrchestratorSessionsWaiting

344 expr: |

345 max by (namespace) (

346 claude_code_self_hosted_orchestrator_pool_pending_sessions

347 and on (instance)

348 max_over_time(claude_code_self_hosted_orchestrator_connected[2m]) == 1

349 ) > 0

350 for: 10m

351 labels: {severity: warning}

352 annotations:

353 summary: "等待執行器的工作階段:{{ $value }},已高於閾值達 10 分鐘。請依結果檢查 claude_code_self_hosted_orchestrator_spawn_hooks_total,然後檢查未啟動的執行器工作負載。"

354 - alert: ClaudeOrchestratorQueueWaitHigh

355 expr: |

356 histogram_quantile(0.99, sum by (namespace, le) (

357 rate(claude_code_self_hosted_orchestrator_session_queue_wait_seconds_bucket[10m])

358 )) > 160

359 for: 5m

360 labels: {severity: warning}

361 annotations:

362 summary: "過去 10 分鐘內超過 1% 的佇列等待超過 160 秒。請檢查 ClaudeOrchestratorDisconnected 是否正在觸發,然後依結果檢查 claude_code_self_hosted_orchestrator_spawn_hooks_total 以及 claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds。"

363```

364 

365* **閾值**:如果總是有某個工作階段在等待,請將 `ClaudeOrchestratorSessionsWaiting` 中的 `> 0` 提高到高於您通常看到的數字

366* **`ClaudeOrchestratorDisconnected`**:請保持從[範例警報規則](#sample-alert-rules)載入它,因為 `ClaudeOrchestratorSessionsWaiting` 會在命名空間中最後一個協調器斷開連線約 2 分鐘後停止觸發

367 

306### 傳遞工作階段子程序指標368### 傳遞工作階段子程序指標

307 369 

308每個工作階段在其自己的子程序中執行,具有自己的 OpenTelemetry 指標;在 `--capacity` 高於 1 時,執行器重寫這些子程序指標的公開方式。在執行器主機上設定 `OTEL_METRICS_EXPORTER=prometheus` 並在工作階段的環境中設定 `CLAUDE_CODE_ENABLE_TELEMETRY=1`(例如從您的[包裝指令碼](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#wrapper-scripts)或執行器自己的環境,工作階段繼承),重新公開每個子程序的計數器和量表工具在執行器自己的 `/metrics` 端點上,與執行器的序列一起。執行器將子程序的匯出器重寫為通過 OTLP 推送到健康連接埠上的僅環回接收器,使用 `session_id` 和 `client_platform` 標籤標記每個序列,並在該工作階段結束時驅逐工作階段的序列。直方圖不傳遞,子程序指標的名稱會與執行器自己的前綴衝突被放棄。370每個工作階段在其自己的子程序中執行,具有自己的 OpenTelemetry 指標;在 `--capacity` 高於 1 時,執行器重寫這些子程序指標的公開方式。在執行器主機上設定 `OTEL_METRICS_EXPORTER=prometheus` 並在工作階段的環境中設定 `CLAUDE_CODE_ENABLE_TELEMETRY=1`(例如從您的[包裝指令碼](https://code.claude.com/docs/zh-TW/self-hosted-environments-configuration.md#wrapper-scripts)或執行器自己的環境,工作階段繼承),重新公開每個子程序的計數器和量表工具在執行器自己的 `/metrics` 端點上,與執行器的序列一起。執行器將子程序的匯出器重寫為通過 OTLP 推送到健康連接埠上的僅環回接收器,使用 `session_id` 和 `client_platform` 標籤標記每個序列,並在該工作階段結束時驅逐工作階段的序列。直方圖不傳遞,子程序指標的名稱會與執行器自己的前綴衝突被放棄。

Details

324}324}

325```325```

326 326 

327模型 ID 項目(例如 `"claude-opus-5"`)也允許擴展它的更新版本,例如 Opus 5.5。要阻止其中一個版本,請使用 [`deniedModels`](#deniedmodels)。要使每個模型 ID 項目僅允許它命名的版本,請使用 [`availableModelsMatch`](#availablemodelsmatch)。請參閱[限制模型選擇](https://code.claude.com/docs/zh-TW/model-config.md#restrict-model-selection)。327模型 ID 項目(例如 `"claude-opus-5"`)也允許擴展它的更新版本,例如 Opus 5.5。要阻止其中一個版本,請使用 [`deniedModels`](#deniedmodels)。要使每個模型 ID 項目僅允許它命名的版本,請使用 [`availableModelsMatch`](#availablemodelsmatch)。請參閱[限制模型選擇](https://code.claude.com/docs/zh-TW/model-config.md#restrict-model-selection)。如需第三方提供者 ID,請參閱[為第三方部署固定模型](https://code.claude.com/docs/zh-TW/model-config.md#pin-models-for-third-party-deployments)。

328 328 

329### `availableModelsMatch`329### `availableModelsMatch`

330 330 


333* **範圍**: [`受管`](#scopes)。Claude Code 在使用者、專案和本地設定以及 `--settings` 中忽略金鑰,並帶有警告333* **範圍**: [`受管`](#scopes)。Claude Code 在使用者、專案和本地設定以及 `--settings` 中忽略金鑰,並帶有警告

334* **類型**: 字串,其中之一:334* **類型**: 字串,其中之一:

335 * `"prefix"`: 模型 ID 項目允許其版本和任何用另一個區段擴展它的模型 ID335 * `"prefix"`: 模型 ID 項目允許其版本和任何用另一個區段擴展它的模型 ID

336 * `"exact"`: 模型 ID 項目僅允許它命名的版本,包括該版本的日期 ID,因此 `"claude-opus-5"` 允許 Opus 5 但不允許 `claude-opus-5-5`。系列別名(例如 `"opus"`)仍然允許整個系列,`best`、`opusplan` 和 `default` 項目被忽略336 * `"exact"`: 模型 ID 項目僅允許它命名的版本,因此 `"claude-opus-5"` 允許 Opus 5 但不允許 `claude-opus-5-5`。像 `"claude-opus-4-5"` 這樣的項目也允許其帶日期的 Anthropic 模型 ID `claude-opus-4-5-20251101`。系列別名(例如 `"opus"`)仍然允許整個系列,`best`、`opusplan` 和 `default` 項目被忽略

337* **預設**: `"prefix"`337* **預設**: `"prefix"`

338 338 

339此範例允許 Opus 5 和 Sonnet 5,不允許任何更新版本:339此範例允許 Opus 5 和 Sonnet 5,不允許任何更新版本:


1371 1371 

1372Claude Code 會移除目錄路徑結尾的斜線,因此 `~/.aws` 和 `~/.aws/` 會比對到相同的目錄。在 v2.1.224 之前,Claude Code 會將結尾斜線原樣傳給沙箱,因此對於以結尾斜線撰寫的 `denyRead` 或 `denyWrite` 項目,Claude 仍可讀取或寫入其下的路徑。1372Claude Code 會移除目錄路徑結尾的斜線,因此 `~/.aws` 和 `~/.aws/` 會比對到相同的目錄。在 v2.1.224 之前,Claude Code 會將結尾斜線原樣傳給沙箱,因此對於以結尾斜線撰寫的 `denyRead` 或 `denyWrite` 項目,Claude 仍可讀取或寫入其下的路徑。

1373 1373 

1374Claude Code 也會移除結尾的 `/**`,因此 `~/build/**` 和 `~/build` 涵蓋相同的目錄。`*` 等萬用字元是否有效,取決於項目所在的清單及平台:1374##### 萬用字元在沙箱路徑中的適用之處

1375 1375 

1376* **`allowWrite` 和 `denyWrite`**:在 macOS 上,萬用字元有效。在 Linux 和 WSL2 上,沙箱會掛載具體路徑,因此在移除結尾的 `/**` 後,若項目仍包含 `*`、`?` 或 `[`,Claude Code 會略過該項目,而該項目不會產生任何效果。Claude Code 會將您 `Edit` 權限規則中的路徑加入這些清單,因此同樣的限制也適用於它們,且 `/sandbox` 的 **Config** 分頁會針對包含萬用字元的 `Edit` 和 `Read` 權限規則發出警告。1376萬用字元 `*`、`?` 和 `**` 在 macOS 上適用於全部四個 `sandbox.filesystem` 路徑清單,在 Linux 和 WSL2 上則適用於較少的位置:

1377* **`denyRead` 和 `allowRead`**:萬用字元在所有平台上都有效。在 Linux 和 WSL2 上,Claude Code 會將讀取項目展開為其所比對到的具體路徑,而寫入清單則不會這樣處理。

1378 1377 

1379大括號在名稱中會被當作一般字元比對,因此 `~/data/{keys,tokens}` 涵蓋的是名稱字面上為 `{keys,tokens}` 的目錄,而非兩個替代選項。若要涵蓋 `~/data/keys` 和 `~/data/tokens`,請將它們分別新增為獨立的項目。1378| `sandbox.filesystem` 清單 | 在 Linux 和 WSL2 上可用的寫法 | 在 Linux 和 WSL2 上無效的範例 | 應改寫為 |

1379| :- | :- | :- | :- |

1380| `denyRead`、`allowRead` | 結尾的 `/**` 可用,因此 `~/build/**` 涵蓋與 `~/build` 相同的目錄。其他萬用字元只有在項目[完整路徑](#sandbox-path-prefixes)的第一個目錄名稱之後才有效。 | `denyRead` 中的 `/**/*.pem` 不涵蓋任何內容,因此不會封鎖任何讀取 | `/srv/**/*.pem`,每個最上層目錄各一個項目 |

1381| `allowWrite`、`denyWrite` | 只有結尾的 `/**` 可用,因此 `~/build/**` 涵蓋與 `~/build` 相同的目錄 | `./src/*` 只涵蓋 `src` 中本身名為 `*` 的檔案或目錄,若不存在則不涵蓋任何內容 | `./src`,涵蓋 `src` 底下的所有內容,或每個路徑各一個項目 |

1382 

1383在 `~/keys/*.pem` 中,萬用字元位於第一個目錄名稱之後;對於家目錄為 `/home/alice` 的情況,第一個目錄名稱為 `home`:

1384 

1385```text theme={null}

1386~/keys/*.pem the entry

1387/home/alice/keys/*.pem its full path

1388 ^^^^ the first directory name, home

1389```

1390 

1391在 Linux 和 WSL2 上,工作階段中 `/sandbox` 的 **Config** 分頁會對包含結尾 `/**` 以外萬用字元的 `Edit` 權限規則發出警告。這些萬用字元對沙箱化命令無效。請將規則應涵蓋的每個路徑,或包含它們的目錄,加入 `allowWrite`(對應允許規則)或 `denyWrite`(對應拒絕規則)。

1392 

1393##### 名稱包含方括號、大括號或圓括號的目錄

1394 

1395若要允許或封鎖名稱包含方括號的目錄,請照原樣寫出名稱,例如 `./app/[slug]`。在該項目中,`[slug]` 是目錄的實際名稱,包含方括號:

1396 

1397```text theme={null}

1398app/

1399└── [slug]/

1400 └── page.tsx

1401```

1402 

1403該項目會涵蓋目錄底下的所有內容,因此請勿加上結尾的 `/**`。在 macOS 以及 Linux 和 WSL2 上,`app/[slug]` 目錄必須在沙箱化命令啟動時就已存在。

1404 

1405* **如 `[slug]` 的方括號**:在 macOS 的每個清單中,以及 Linux 和 WSL2 的 `denyRead` 和 `allowRead` 中,`./app/[slug]` 中的方括號同時也是一個模式。此時該項目也會比對 `app` 底下以 `slug` 中任一字元命名的路徑,例如 `app/s` 或 `app/g`。當該項目位於 `allowRead` 中,或在 macOS 上位於 `allowWrite` 中時,沙箱化命令也能存取這些路徑。請重新命名任何它們不應存取的路徑。

1406* **如 `[user-id]` 或 `[post-id]` 的方括號,其中連字號左側字元的排序在右側字元之後**:`./app/[user-id]` 在每個平台的每個清單中都只涵蓋名稱完全相同的目錄。在 v2.1.304 之前,當 `denyRead` 或 `allowRead` 包含此類項目時,Linux 和 WSL2 上的沙箱化命令會無法啟動。

1407* **大括號和圓括號**:這些是一般字元,因此 `~/data/{keys,tokens}` 涵蓋一個名為 `{keys,tokens}` 的目錄,而非兩個替代選項。若要涵蓋 `~/data/keys` 和 `~/data/tokens`,請將兩者各自新增為獨立項目。

1380 1408 

1381### `sandbox.filesystem.allowWrite`1409### `sandbox.filesystem.allowWrite`

1382 1410 


3470 3498 

3471主機名稱比對不區分大小寫,並將 `hooks.example.com.`(帶有標記完整網域名稱的尾端點)視為與 `hooks.example.com` 相同,這與 DNS 的處理方式一致。允許清單適用於來自每個來源的 hook,包括受管設定。3499主機名稱比對不區分大小寫,並將 `hooks.example.com.`(帶有標記完整網域名稱的尾端點)視為與 `hooks.example.com` 相同,這與 DNS 的處理方式一致。允許清單適用於來自每個來源的 hook,包括受管設定。

3472 3500 

3473在 Agent SDK 的 `managedSettings` 選項中,當此設定鍵的清單有項目時,Claude Code 會忽略它,因此請改為在 SDK 的 `settings` 選項中傳入該清單。請參閱[每個值在父設定中的作用](https://code.claude.com/docs/zh-TW/claude-apps-gateway#how-hook-and-skill-keys-in-parent-settings-take-effect)。3501在 Agent SDK 的 `managedSettings` 選項中,當此設定鍵的清單有項目時,Claude Code 會忽略它,因此請改為在 SDK 的 [`settings` 選項](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options)中傳入該清單。請參閱[空清單在父設定中的作用](https://code.claude.com/docs/zh-TW/claude-apps-gateway#how-hook-and-skill-keys-in-parent-settings-take-effect)。

3474 3502 

3475### `allowManagedHooksOnly`3503### `allowManagedHooksOnly`

3476 3504 


3520影響範圍取決於哪個檔案包含此設定鍵:3548影響範圍取決於哪個檔案包含此設定鍵:

3521 3549 

3522* **在受管設定中**:Claude Code 停用每個已設定的 hook,包括受管 hook,並繼續執行 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 在程序中註冊的 hook3550* **在受管設定中**:Claude Code 停用每個已設定的 hook,包括受管 hook,並繼續執行 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 在程序中註冊的 hook

3523* **在 Agent SDK 的 `managedSettings` 選項中**:Claude Code 將此設定鍵視為 `allowManagedHooksOnly: true`,因此請參閱[在 `allowManagedHooksOnly` 下執行的內容](#what-runs-under-allowmanagedhooksonly)以了解哪些 hook 會停止。在管理員部署受管設定的機器上,除非管理員[允許嵌入主機新增政策](https://code.claude.com/docs/zh-TW/managed-settings.md#let-an-embedding-host-add-policy),否則 Claude Code 會忽略此設定鍵。需要 Claude Code v2.1.309 或更新版本。3551* **在 Agent SDK 的 `managedSettings` 選項中**:在管理員部署受管設定的機器上,除非管理員[允許嵌入主機新增政策](https://code.claude.com/docs/zh-TW/managed-settings.md#let-an-embedding-host-add-policy),否則 Claude Code 會忽略此設定鍵。在此設定鍵生效的情況下,使用者、專案、本機和外掛 hook 會停止,SDK 的 `settings` 選項中的任何 hook 也會停止。管理員的受管 hook、[強制啟用](#enabledplugins)之外掛的 hook,以及您的 [SDK hook 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md)會繼續執行。需要 Claude Code v2.1.309 或更新版本。

3524* **在任何其他設定檔中**:Claude Code 停用使用者、專案、本機和外掛 hook;受管 hook、Agent SDK hook,以及在受管 [`enabledPlugins`](#enabledplugins) 中強制啟用之外掛的 hook 會繼續執行3552* **在任何其他設定檔中**:Claude Code 停用使用者、專案、本機和外掛 hook;受管 hook、Agent SDK hook,以及在受管 [`enabledPlugins`](#enabledplugins) 中強制啟用之外掛的 hook 會繼續執行

3525 3553 

3526此設定鍵也會停止 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md),也就是其程式碼會註冊 hook 的外掛:3554此設定鍵也會停止 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md),也就是其程式碼會註冊 hook 的外掛:


3624 3652 

3625允許清單適用於來自每個來源的 hook,包括受管設定。3653允許清單適用於來自每個來源的 hook,包括受管設定。

3626 3654 

3627在 Agent SDK 的 `managedSettings` 選項中,當此設定鍵的清單有項目時,Claude Code 會忽略它,因此請改為在 SDK 的 `settings` 選項中傳入該清單。請參閱[每個值在父設定中的作用](https://code.claude.com/docs/zh-TW/claude-apps-gateway#how-hook-and-skill-keys-in-parent-settings-take-effect)。3655在 Agent SDK 的 `managedSettings` 選項中,當此設定鍵的清單有項目時,Claude Code 會忽略它,因此請改為在 SDK 的 [`settings` 選項](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options)中傳入該清單。請參閱[空清單在父設定中的作用](https://code.claude.com/docs/zh-TW/claude-apps-gateway#how-hook-and-skill-keys-in-parent-settings-take-effect)。

3628 3656 

3629### `workflowKeywordTriggerEnabled`3657### `workflowKeywordTriggerEnabled`

3630 3658 


3841* **Type**: Boolean3869* **Type**: Boolean

3842 * `true`: Claude Code 永遠不會執行 marketplace 宣告的命令,不會安裝或更新命令來源的 plugins,並停止載入已安裝的 plugins3870 * `true`: Claude Code 永遠不會執行 marketplace 宣告的命令,不會安裝或更新命令來源的 plugins,並停止載入已安裝的 plugins

3843 * `false`: Claude Code 明確允許命令來源的 plugins3871 * `false`: Claude Code 明確允許命令來源的 plugins

3844* **Default**: 未設定,因此 Claude Code 遵循 [`allowManagedHooksOnly`](#allowmanagedhooksonly):限制 hook 執行到受管設定的組織也會禁用命令來源3872* **Default**: 未設定,因此 Claude Code 遵循 [`allowManagedHooksOnly`](#allowmanagedhooksonly):限制 hook 執行到受管設定的組織也會禁用命令來源。在 Agent SDK 的 `managedSettings` 選項中傳遞 [`disableAllHooks: true`](#disableallhooks) 的應用程式,本身並不會禁用命令來源。

3845 3873 

3846```json managed-settings.json theme={null}3874```json managed-settings.json theme={null}

3847{3875{

Details

127 127 

128```bash ~/.tmux.conf theme={null}128```bash ~/.tmux.conf theme={null}

129set -g allow-passthrough on129set -g allow-passthrough on

130set -g focus-events on

130set -s extended-keys on131set -s extended-keys on

131set -as terminal-features 'xterm*:extkeys'132set -as terminal-features 'xterm*:extkeys'

132```133```

133 134 

134`allow-passthrough` 行讓通知和進度更新到達外層終端,而不是被 tmux 吞沒。`extended-keys` 行讓 tmux 區分 Shift+Enter 和純 Enter,以便換行快捷鍵能夠運作。135`allow-passthrough` 行讓通知和進度更新到達外層終端,而不是被 tmux 吞沒。`extended-keys` 行讓 tmux 區分 Shift+Enter 和純 Enter,以便換行快捷鍵能夠運作。

135 136 

137[mod 的 `Image`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#elements) 需要 `allow-passthrough` 和 `focus-events` 這兩行,以及其他[在 tmux 內繪製的需求](https://code.claude.com/docs/zh-TW/plugins/mods/gallery.md#draw-an-image-inside-tmux)。新增這些行之後,還需要從 tmux 分離、重新連接,並重新啟動 Claude Code。

138 

136## 修復 Windows 上 Backspace 刪除整個單詞的問題139## 修復 Windows 上 Backspace 刪除整個單詞的問題

137 140 

138在 Windows 上,Claude Code 將到達的 Backspace 讀取為 `^H` 時會將其解釋為 Ctrl+Backspace,這會[刪除前一個單詞](https://code.claude.com/docs/zh-TW/interactive-mode.md#text-editing),除非 `TERM_PROGRAM` 是 `mintty` 或 `TERM` 是 `cygwin`。在 macOS 和 Linux 上,Claude Code 將其讀取為純 Backspace。141在 Windows 上,Claude Code 將到達的 Backspace 讀取為 `^H` 時會將其解釋為 Ctrl+Backspace,這會[刪除前一個單詞](https://code.claude.com/docs/zh-TW/interactive-mode.md#text-editing),除非 `TERM_PROGRAM` 是 `mintty` 或 `TERM` 是 `cygwin`。在 macOS 和 Linux 上,Claude Code 將其讀取為純 Backspace。

ultrareview.md +2 −2

Details

176該子命令會以以下三個代碼之一結束:176該子命令會以以下三個代碼之一結束:

177 177 

178* **0**:審查已完成,無論是否有發現結果178* **0**:審查已完成,無論是否有發現結果

179* **1**:審查未能啟動或在完成前被停止、雲端工作階段出錯,或逾時已過。當[資料夾未受信任](#trust-the-folder-before-the-review-runs)時,代碼也是 1,包括您在信任問題中回答 `n` 或按下 Ctrl-C 的情況。179* **1**:審查未能啟動或在完成前被停止、雲端工作階段出錯,或逾時已過。當[資料夾未受信任](#trust-the-folder-before-the-review-runs)時,代碼也是 1,包括您在信任問題中回答 `n`、按下 Enter 或按下 Ctrl-C 的情況。

180* **130**:您在該子命令啟動審查、等待發現結果或傳送 `--post` 評論時按下了 Ctrl-C,而非在信任問題時180* **130**:您在該子命令啟動審查、等待發現結果或傳送 `--post` 評論時按下了 Ctrl-C,而非在信任問題時

181 181 

182如果該子命令在發現結果到達之前結束,這些發現結果將永遠不會到達您的終端機。審查可能仍在雲端執行中。再次執行該子命令會啟動新的審查,而不是繼續先前那一次,且新的審查會[使用一次免費執行或以用量點數計費](#pricing-and-free-runs)。182如果該子命令在發現結果到達之前結束,這些發現結果將永遠不會到達您的終端機。審查可能仍在雲端執行中。再次執行該子命令會啟動新的審查,而不是繼續先前那一次,且新的審查會[使用一次免費執行或以用量點數計費](#pricing-and-free-runs)。


198claude ultrareview 1234 --trust-workspace198claude ultrareview 1234 --trust-workspace

199```199```

200 200 

201若要審查未受信任的 pull request,請從您信任的分支執行 `claude ultrareview <PR number> --trust-workspace`。與 `y` 不同,此旗標不會儲存任何內容。該 PR 會[在雲端複製](#review-a-pull-request),因此您不需要在本機擁有其分支。201若要審查未受信任的 pull request,請從您信任的分支執行 `claude ultrareview <PR number> --trust-workspace`。該 PR 會[在雲端複製](#review-a-pull-request),因此您不需要在本機擁有其分支。

202 202 

203## ultrareview 與 `/code-review` 的比較203## ultrareview 與 `/code-review` 的比較

204 204 

vs-code.md +6 −1

Details

1001 1001 

1002### 聽寫或 Web 分頁在 TLS 檢查代理伺服器後方失敗1002### 聽寫或 Web 分頁在 TLS 檢查代理伺服器後方失敗

1003 1003 

1004當聽寫或 Web 分頁因憑證錯誤(例如 `unable to get local issuer certificate`)而失敗時,請在 `~/.claude/settings.json` 的 `env` 區塊中設定 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/zh-TW/network-config#custom-ca-certificates)。將其設為包含您代理伺服器根 CA 憑證的 PEM 檔案路徑,您的 IT 團隊可以提供此檔案。該錯誤文字會顯示在麥克風按鈕上或擴充功能的日誌中:1004當聽寫或 Web 分頁因憑證錯誤(例如 `unable to get local issuer certificate`)而失敗時,請在 `~/.claude/settings.json` 的 `env` 區塊中設定 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/zh-TW/network-config#custom-ca-certificates)。將其設為包含您代理伺服器根 CA 憑證的 PEM 檔案路徑,您的 IT 團隊可以提供此檔案。失敗情況會顯示在麥克風按鈕或 Web 分頁上,或顯示在日誌中:

1005 1005 

1006* **聽寫**:麥克風按鈕會在 `Dictation error: WebSocket error:` 之後顯示錯誤文字。1006* **聽寫**:麥克風按鈕會在 `Dictation error: WebSocket error:` 之後顯示錯誤文字。

1007* **Web 分頁**:列出[雲端工作階段](#resume-cloud-sessions-from-claude-ai)的分頁會顯示 `Remote server is not connected`,但不含錯誤文字。若要在日誌中讀取錯誤文字:1007* **Web 分頁**:列出[雲端工作階段](#resume-cloud-sessions-from-claude-ai)的分頁會顯示 `Remote server is not connected`,但不含錯誤文字。若要在日誌中讀取錯誤文字:

1008 1. 從[命令選擇區](#vs-code-commands-and-shortcuts)執行 **Claude Code: Show Logs**,以開啟 `Claude VSCode` 輸出頻道。1008 1. 從[命令選擇區](#vs-code-commands-and-shortcuts)執行 **Claude Code: Show Logs**,以開啟 `Claude VSCode` 輸出頻道。

1009 2. 點擊分頁上的 **Reconnect**,並等待其不再顯示 `Connecting…`。1009 2. 點擊分頁上的 **Reconnect**,並等待其不再顯示 `Connecting…`。

1010 3. 在頻道中搜尋 `Error fetching remote sessions:` 或 `Failed to fetch organization UUID:`,然後閱讀最新符合的那一行中該前綴之後的錯誤文字。1010 3. 在頻道中搜尋 `Error fetching remote sessions:` 或 `Failed to fetch organization UUID:`,然後閱讀最新符合的那一行中該前綴之後的錯誤文字。

1011* **日誌警告**:提及 `an authority that Claude Code does not trust` 的警告表示發生憑證錯誤。位於 TLS 檢查代理伺服器後方時,請在 `~/.claude/settings.json` 的 `env` 中設定 `NODE_EXTRA_CA_CERTS`。v2.1.309 之前的版本不會記錄此警告。

1011 1012 

1012此修正需要擴充功能版本 2.1.307 或更新版本,因此請先更新擴充功能。然後將 `NODE_EXTRA_CA_CERTS` 設為憑證檔案的完整路徑,且不要使用 `~`。若為 Windows 路徑,請在 `settings.json` 中將每個反斜線寫兩次,例如 `C:\\certs\\example-ca.pem`。1013此修正需要擴充功能版本 2.1.307 或更新版本,因此請先更新擴充功能。然後將 `NODE_EXTRA_CA_CERTS` 設為憑證檔案的完整路徑,且不要使用 `~`。若為 Windows 路徑,請在 `settings.json` 中將每個反斜線寫兩次,例如 `C:\\certs\\example-ca.pem`。

1013 1014 

1015> [!NOTE]

1016>

1017> 在連線至 WSL、SSH 主機、開發容器或其他系統的視窗中,請在該系統上儲存憑證檔案並編輯 `~/.claude/settings.json`,而不是在您的本機電腦上。

1018 

1014此範例指定位於 Linux 或 macOS 路徑 `/etc/ssl/certs/example-ca.pem` 的憑證檔案:1019此範例指定位於 Linux 或 macOS 路徑 `/etc/ssl/certs/example-ca.pem` 的憑證檔案:

1015 1020 

1016```json ~/.claude/settings.json theme={null}1021```json ~/.claude/settings.json theme={null}