SpyBara
Go Premium

Documentation 2026-10-08 22:58 UTC to 2026-10-09 22:01 UTC

63 files changed +1,515 −688. View all changes and history on the product overview
2026
Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

216| 选项 | 它控制什么 | 默认值 |216| 选项 | 它控制什么 | 默认值 |

217| :- | :- | :- |217| :- | :- | :- |

218| 最大轮次(`max_turns` / `maxTurns`) | 最大工具使用往返次数 | 无限制 |218| 最大轮次(`max_turns` / `maxTurns`) | 最大工具使用往返次数 | 无限制 |

219| 最大预算(`max_budget_usd` / `maxBudgetUsd`) | 停止前的最大成本 | 无限制 |219| 最大预算(`max_budget_usd` / `maxBudgetUsd`) | 循环停止时的预估支出 | 无限制 |

220 220 

221当达到任一限制时,SDK 返回一个 `ResultMessage`,包含相应的错误子类型(`error_max_turns` 或 `error_max_budget_usd`)。有关如何检查这些子类型,请参阅 [处理结果](#handle-the-result),有关语法,请参阅 [`ClaudeAgentOptions`](/docs/zh-CN/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/zh-CN/agent-sdk/typescript#options)。221当达到任一限制时,SDK 返回一个 `ResultMessage`,包含相应的错误子类型(`error_max_turns` 或 `error_max_budget_usd`)。有关如何检查这些子类型,请参阅 [处理结果](#handle-the-result),有关语法,请参阅 [`ClaudeAgentOptions`](/docs/zh-CN/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/zh-CN/agent-sdk/typescript#options)。

222 222 


224 224 

225使用 [流式输入](/docs/zh-CN/agent-sdk/streaming-vs-single-mode),当轮次在最大轮次限制处结束时,仍在队列中的消息保持排队。Claude Code 不会将其添加到该轮次的最后一次模型调用中。它为该消息启动新轮次,该轮次的最大轮次计数重新开始。预算总额继续在消息间累积,一旦支出达到 `maxBudgetUsd`,同一对话中的后续消息以 `error_max_budget_usd` 结果结束。[`/clear`](/docs/zh-CN/agent-sdk/cost-tracking) 会重新开始预算。225使用 [流式输入](/docs/zh-CN/agent-sdk/streaming-vs-single-mode),当轮次在最大轮次限制处结束时,仍在队列中的消息保持排队。Claude Code 不会将其添加到该轮次的最后一次模型调用中。它为该消息启动新轮次,该轮次的最大轮次计数重新开始。预算总额继续在消息间累积,一旦支出达到 `maxBudgetUsd`,同一对话中的后续消息以 `error_max_budget_usd` 结果结束。[`/clear`](/docs/zh-CN/agent-sdk/cost-tracking) 会重新开始预算。

226 226 

227<h4 id="budget-headroom">

228 预算余量

229</h4>

230 

231Claude Code 在模型响应到达后才将支出与 `max_budget_usd` / `maxBudgetUsd` 上限进行比较,因为每个响应的成本来自 API 随响应返回的 token 用量。达到上限的那个响应仍会完成,并计入 [`total_cost_usd`](/docs/zh-CN/agent-sdk/cost-tracking#get-the-total-cost-of-a-query)。因此,支出最多可能超出上限该响应的成本,再加上此时仍在运行的子代理在停止前产生的任何支出。设置上限时,请为此预留余量。

232 

227<h3 id="effort-level">233<h3 id="effort-level">

228 努力级别234 努力级别

229</h3>235</h3>

Details

78 78 

79您可以在调用 `query()` 时在代码中配置 MCP 服务器,或在通过 [`settingSources`](#from-a-config-file) 加载的 `.mcp.json` 文件中配置。79您可以在调用 `query()` 时在代码中配置 MCP 服务器,或在通过 [`settingSources`](#from-a-config-file) 加载的 `.mcp.json` 文件中配置。

80 80 

81<h3 id="in-code">81<span id="in-code" />

82 在代码中82 

83<h3 id="add-a-server-in-code">

84 在代码中添加服务器

83</h3>85</h3>

84 86 

85在 `mcpServers` 选项中直接传递 MCP 服务器。此示例为 `/Users/me/projects` 启动本地文件系统 MCP 服务器。将该路径替换为您机器上的目录:87在 `mcpServers` 选项中直接传递 MCP 服务器。此示例为 `/Users/me/projects` 启动本地文件系统 MCP 服务器。将该路径替换为您机器上的目录:


135 ```137 ```

136</CodeGroup>138</CodeGroup>

137 139 

138<h3 id="from-a-config-file">140<span id="from-a-config-file" />

139 从配置文件141 

142<h3 id="add-a-server-from-a-config-file">

143 从配置文件添加服务器

140</h3>144</h3>

141 145 

142在您的项目根目录创建一个 `.mcp.json` 文件。当启用 `project` 设置源时,该文件会被加载,默认 `query()` 选项已启用此功能。如果您显式设置 `settingSources`,请包含 `"project"` 以加载此文件。将 `/Users/me/projects` 替换为您机器上的目录:146在您的项目根目录创建一个 `.mcp.json` 文件。当启用 `project` 设置源时,该文件会被加载,默认 `query()` 选项已启用此功能。如果您显式设置 `settingSources`,请包含 `"project"` 以加载此文件。将 `/Users/me/projects` 替换为您机器上的目录:


301 stdio 服务器305 stdio 服务器

302</h3>306</h3>

303 307 

304通过 stdin/stdout 进行通信的本地进程。对于在同一台机器上运行的 MCP 服务器,请使用此方法。对于 `.mcp.json` 形式,请使用 [From a config file](#from-a-config-file) 中显示的相同字段。在代码中,传递命令及其参数。将 `/Users/me/projects` 替换为您机器上的目录:308通过 stdin/stdout 进行通信的本地进程。对于在同一台机器上运行的 MCP 服务器,请使用此方法。对于 `.mcp.json` 形式,请使用[从配置文件添加服务器](#from-a-config-file)中显示的相同字段。在代码中,传递命令及其参数。将 `/Users/me/projects` 替换为您机器上的目录:

305 309 

306<CodeGroup>310<CodeGroup>

307 ```typescript TypeScript hidelines={1,-1} theme={null}311 ```typescript TypeScript hidelines={1,-1} theme={null}

Details

28 迁移步骤28 迁移步骤

29</h2>29</h2>

30 30 

31<h3 id="for-typescript/javascript-projects">31<span id="for-typescript/javascript-projects" />

32 对于 TypeScript/JavaScript 项目32 

33<h3 id="migrate-a-typescript-or-javascript-project">

34 迁移 TypeScript 或 JavaScript 项目

33</h3>35</h3>

34 36 

35**1. 卸载旧包:**37**1. 卸载旧包:**


64 66 

65进行任何必要的代码更改以完成迁移。67进行任何必要的代码更改以完成迁移。

66 68 

67<h3 id="for-python-projects">69<span id="for-python-projects" />

68 对于 Python 项目70 

71<h3 id="migrate-a-python-project">

72 迁移 Python 项目

69</h3>73</h3>

70 74 

71**1. 卸载旧包:**75**1. 卸载旧包:**

Details

146| `auto` | 模型分类批准 | 模型分类器审查 shell 命令和网络请求等操作,允许或阻止它审查的每一个操作。有关可用性和决策顺序,请参阅[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) |146| `auto` | 模型分类批准 | 模型分类器审查 shell 命令和网络请求等操作,允许或阻止它审查的每一个操作。有关可用性和决策顺序,请参阅[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) |

147 147 

148<Warning>148<Warning>

149 **子代理继承:** 子代理在父会话的权限模式下运行,除非您在其[`AgentDefinition`](/docs/zh-CN/agent-sdk/typescript#agentdefinition)上设置 `permissionMode`,且父会话处于 `default`、`dontAsk` 或 `plan` 模式。即使这样,Claude Code 也永远不会应用 `"bypassPermissions"` 值。子代理仅在父会话本身处于 `bypassPermissions` 模式时才在该模式下运行。 `bypassPermissions` 异常需要 Claude Code v2.1.267 或更高版本。149 **子代理继承:** 子代理在父会话的权限模式下运行,除非您在其[`AgentDefinition`](/docs/zh-CN/agent-sdk/typescript#agentdefinition)上设置 `permissionMode`,且父会话处于 `default`、`dontAsk` 或 `plan` 模式。即使这样,Claude Code 也永远不会应用 `"bypassPermissions"` 值,并且仅当该子代理[可以使用自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)时才会应用 `"auto"` 值。子代理仅在父会话本身处于 `bypassPermissions` 模式时才在该模式下运行。 `bypassPermissions` 异常需要 Claude Code v2.1.267 或更高版本。

150 150 

151 子代理可能具有不同的系统提示和比主代理更少受限的行为,因此继承 `bypassPermissions` 会授予它们完整的自主系统访问权限。[任何模式都不自动批准的操作](/docs/zh-CN/permission-modes#actions-no-mode-auto-approves)仍然适用。151 子代理可能具有不同的系统提示和比主代理更少受限的行为,因此继承 `bypassPermissions` 会授予它们完整的自主系统访问权限。[任何模式都不自动批准的操作](/docs/zh-CN/permission-modes#actions-no-mode-auto-approves)仍然适用。

152</Warning>152</Warning>

Details

928| `resume` | `str \| None` | `None` | 要恢复的会话 ID |928| `resume` | `str \| None` | `None` | 要恢复的会话 ID |

929| `session_id` | `str \| None` | `None` | 使用特定的会话 ID 而不是自动生成的。必须是有效的 UUID。不能与 `continue_conversation` 或 `resume` 结合使用,除非也设置了 `fork_session` |929| `session_id` | `str \| None` | `None` | 使用特定的会话 ID 而不是自动生成的。必须是有效的 UUID。不能与 `continue_conversation` 或 `resume` 结合使用,除非也设置了 `fork_session` |

930| `max_turns` | `int \| None` | `None` | 最大 Agent 轮次(工具使用往返) |930| `max_turns` | `int \| None` | `None` | 最大 Agent 轮次(工具使用往返) |

931| `max_budget_usd` | `float \| None` | `None` | 当客户端成本估计达到此 USD 值时停止查询。仅计算调用自身的支出;从恢复的会话恢复的总数不计算。有关准确性注意事项和重置行为,见 [跟踪成本和使用](/docs/zh-CN/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | 当客户端成本估计达到此 USD 值时停止查询。该估计值可能超过此值,因此请[预留余量](/docs/zh-CN/agent-sdk/agent-loop#budget-headroom)。仅计算调用自身的支出;从恢复的会话恢复的总数不计算。有关准确性注意事项和重置行为,见 [跟踪成本和使用](/docs/zh-CN/agent-sdk/cost-tracking) |

932| `disallowed_tools` | `list[str]` | `[]` | 要拒绝的工具。裸名称如 `"Bash"` 从 Claude 的上下文中移除工具。限定规则如 `"Bash(rm *)"` 保持工具可用,并在每个权限模式(包括 `bypassPermissions`)中拒绝匹配的调用,针对[按书写形式](/docs/zh-CN/permissions#bash-rule-limits)的命令。见 [权限](/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules) |932| `disallowed_tools` | `list[str]` | `[]` | 要拒绝的工具。裸名称如 `"Bash"` 从 Claude 的上下文中移除工具。限定规则如 `"Bash(rm *)"` 保持工具可用,并在每个权限模式(包括 `bypassPermissions`)中拒绝匹配的调用,针对[按书写形式](/docs/zh-CN/permissions#bash-rule-limits)的命令。见 [权限](/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules) |

933| `enable_file_checkpointing` | `bool` | `False` | 启用文件更改跟踪以进行回滚。见 [文件检查点功能](/docs/zh-CN/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | 启用文件更改跟踪以进行回滚。见 [文件检查点功能](/docs/zh-CN/agent-sdk/file-checkpointing) |

934| `model` | `str \| None` | `None` | Claude 模型别名或完整模型名称。见 [接受的值和特定于提供商的 ID](/docs/zh-CN/model-config#available-models) |934| `model` | `str \| None` | `None` | Claude 模型别名或完整模型名称。见 [接受的值和特定于提供商的 ID](/docs/zh-CN/model-config#available-models) |


987```987```

988 988 

989* `API_TIMEOUT_MS`:Anthropic 客户端上的每个请求超时时间,以毫秒为单位。默认 `600000`。适用于主循环和所有子代理。989* `API_TIMEOUT_MS`:Anthropic 客户端上的每个请求超时时间,以毫秒为单位。默认 `600000`。适用于主循环和所有子代理。

990* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认 `10`,上限为 `15`。每次重试都有自己的 `API_TIMEOUT_MS` 窗口,因此最坏情况下的实际时间大约是 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避时间。对于需要等待更长时间中断的无人值守运行,设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试瞬时容量错误,并且在 Claude Code v2.1.199 或更高版本上,将其他瞬时错误的默认值提高到 `300` 并移除此变量的上限。990* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认 `10`,上限为 `15`。每次重试都有自己的 `API_TIMEOUT_MS` 窗口。

991 

992 对于需要等待更长时间中断的无人值守运行,设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试瞬时容量错误,并且在 Claude Code v2.1.199 或更高版本上,将其他瞬时错误的默认值提高到 `300` 并移除此变量的上限。

991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:子代理的停滞监视器。当流监视器开启时,默认值为 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 加 5 分钟,即 `600000`,除非您提高该变量。当流监视器关闭时,默认值为 `600000`。在 v2.1.257 之前,默认值始终为 `600000`。993* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:子代理的停滞监视器。当流监视器开启时,默认值为 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 加 5 分钟,即 `600000`,除非您提高该变量。当流监视器关闭时,默认值为 `600000`。在 v2.1.257 之前,默认值始终为 `600000`。

992 994 

993 计时器在每个流事件时重置。停滞时,Claude Code 中止子代理并向父 Agent 报告停滞。对于后台子代理,它也会将任务标记为失败并附加任何部分结果。995 计时器在每个流事件时重置。停滞时,Claude Code 中止子代理并向父 Agent 报告停滞。对于后台子代理,它也会将任务标记为失败并附加任何部分结果。


3327{3329{

3328 "url": str, # 要从中获取内容的 URL3330 "url": str, # 要从中获取内容的 URL

3329 "prompt": str, # 要在获取的内容上运行的提示词3331 "prompt": str, # 要在获取的内容上运行的提示词

3332 "offset": int | None, # 从页面开头跳过的字符数。需要 Python Agent SDK 0.2.164 或更高版本

3330}3333}

3331```3334```

3332 3335 

Details

323 检测子代理调用323 检测子代理调用

324</h2>324</h2>

325 325 

326Claude 通过 Agent 工具调用子代理。要检测何时调用子代理,请检查 `tool_use` 块,其中 `name` 为 `"Agent"`。来自子代理上下文内的消息包含 `parent_tool_use_id` 字段。326Claude 通过 Agent 工具调用子代理。要检测何时调用子代理,请检查 `tool_use` 块,其中 `name` 为 `"Agent"`。

327 

328来自子代理上下文内的消息包含 `parent_tool_use_id` 字段。在 TypeScript 中,子代理生成的每条 assistant 消息和 user 消息还带有 [`agent_id`](/docs/zh-CN/agent-sdk/typescript#sdkassistantmessage):即该子代理的[任务事件](/docs/zh-CN/agent-sdk/typescript#sdktaskstartedmessage)中的 `task_id`。`agent_id` 需要 TypeScript Agent SDK v0.3.292 或更高版本。

327 329 

328<Note>330<Note>

329 该工具在 `tool_use` 块中显示为 `"Agent"`,但在 `system:init` 工具列表中显示为 `"Task"`。在 Claude Code v2.1.63 之前,`tool_use` 块也将其命名为 `"Task"`。为了保持检测在不同 SDK 版本中的工作,请在 `block.name` 中匹配两个值。331 该工具在 `tool_use` 块中显示为 `"Agent"`,但在 `system:init` 工具列表中显示为 `"Task"`。在 Claude Code v2.1.63 之前,`tool_use` 块也将其命名为 `"Task"`。为了保持检测在不同 SDK 版本中的工作,请在 `block.name` 中匹配两个值。


331 333 

332消息结构在不同 SDK 中有所不同。在 Python 中,您可以通过 `message.content` 直接访问内容块。在 TypeScript 中,`SDKAssistantMessage` 包装 Claude API 消息,因此您通过 `message.message.content` 访问内容。334消息结构在不同 SDK 中有所不同。在 Python 中,您可以通过 `message.content` 直接访问内容块。在 TypeScript 中,`SDKAssistantMessage` 包装 Claude API 消息,因此您通过 `message.message.content` 访问内容。

333 335 

334此示例遍历流式消息,记录何时调用子代理以及后续消息来自该子代理执行上下文内的时间。336此示例遍历流式消息,记录何时调用子代理以及后续消息来自该子代理执行上下文内的时间。TypeScript 版本还会为每条带有 `agent_id` 的子代理消息记录该 `agent_id`。

335 337 

336<CodeGroup>338<CodeGroup>

337 ```python Python theme={null}339 ```python Python theme={null}


403 // Check if this message is from within a subagent's context405 // Check if this message is from within a subagent's context

404 if (msg.parent_tool_use_id) {406 if (msg.parent_tool_use_id) {

405 console.log(" (running inside subagent)");407 console.log(" (running inside subagent)");

408 // On assistant and user messages, agent_id matches the task_id

409 // on that subagent's task_started and other task events

410 if (msg.agent_id) {

411 console.log(` agent_id: ${msg.agent_id}`);

412 }

406 }413 }

407 414 

408 if ("result" in message) {415 if ("result" in message) {

Details

569| `includePartialMessages` | `boolean` | `false` | 包含部分消息事件 |569| `includePartialMessages` | `boolean` | `false` | 包含部分消息事件 |

570| `loadTimeoutMs` | `number` | `60000` | *Alpha。* 在恢复物化期间,每次 `sessionStore.load()` 和 `sessionStore.listSubkeys()` 调用的超时时间(毫秒)。如果适配器在此时间窗口内未完成,查询将失败而不是挂起。未设置 `sessionStore` 时忽略 |570| `loadTimeoutMs` | `number` | `60000` | *Alpha。* 在恢复物化期间,每次 `sessionStore.load()` 和 `sessionStore.listSubkeys()` 调用的超时时间(毫秒)。如果适配器在此时间窗口内未完成,查询将失败而不是挂起。未设置 `sessionStore` 时忽略 |

571| `managedSettings` | `Settings` | `undefined` | 由您的宿主进程提供给所生成会话的策略层级设置。在部署了管理员托管设置的机器上,除非管理员优先级最高的托管源设置了 `parentSettingsBehavior: 'merge'`,否则 Claude Code 会忽略这些设置;并且当 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置时,永远不会合并它们。合并的值会经过一个仅限收紧的过滤器;[限制父级设置](/docs/zh-CN/claude-apps-gateway#restrict-parent-settings)介绍了过滤器允许的内容以及 `allowManaged*Only` 锁定。设置了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-CN/env-vars) 的宿主会改为直接从此负载中读取三个键:在 Claude Code v2.1.222 或更高版本中读取其[模型配置](/docs/zh-CN/model-config#restrict-model-selection);在 v2.1.246 或更高版本中,当没有托管源设置 [`modelPricing`](/docs/zh-CN/settings-reference#modelpricing) 时读取该键;在 v2.1.247 或更高版本中读取其 `ENABLE_TOOL_SEARCH` env 条目 |571| `managedSettings` | `Settings` | `undefined` | 由您的宿主进程提供给所生成会话的策略层级设置。在部署了管理员托管设置的机器上,除非管理员优先级最高的托管源设置了 `parentSettingsBehavior: 'merge'`,否则 Claude Code 会忽略这些设置;并且当 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置时,永远不会合并它们。合并的值会经过一个仅限收紧的过滤器;[限制父级设置](/docs/zh-CN/claude-apps-gateway#restrict-parent-settings)介绍了过滤器允许的内容以及 `allowManaged*Only` 锁定。设置了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-CN/env-vars) 的宿主会改为直接从此负载中读取三个键:在 Claude Code v2.1.222 或更高版本中读取其[模型配置](/docs/zh-CN/model-config#restrict-model-selection);在 v2.1.246 或更高版本中,当没有托管源设置 [`modelPricing`](/docs/zh-CN/settings-reference#modelpricing) 时读取该键;在 v2.1.247 或更高版本中读取其 `ENABLE_TOOL_SEARCH` env 条目 |

572| `maxBudgetUsd` | `number` | `undefined` | 当客户端成本估算达到此美元值时停止查询。仅计算本次调用自身的花费;从恢复的会话中还原的总额不计入。有关准确性注意事项和重置行为,请参阅[跟踪成本和用量](/docs/zh-CN/agent-sdk/cost-tracking) |572| `maxBudgetUsd` | `number` | `undefined` | 当客户端成本估算达到此美元值时停止查询。估算值可能超过此值,因此请[留出余量](/docs/zh-CN/agent-sdk/agent-loop#budget-headroom)。仅计算本次调用自身的花费;从恢复的会话中还原的总计不计入。有关准确性注意事项和重置行为,请参阅[跟踪成本和用量](/docs/zh-CN/agent-sdk/cost-tracking) |

573| `maxThinkingTokens` | `number` | `undefined` | *已弃用:* 请改用 `thinking`。思考过程的最大 token 数 |573| `maxThinkingTokens` | `number` | `undefined` | *已弃用:* 请改用 `thinking`。思考过程的最大 token 数 |

574| `maxTurns` | `number` | `undefined` | 最大 agentic 轮次(工具使用往返次数) |574| `maxTurns` | `number` | `undefined` | 最大 agentic 轮次(工具使用往返次数) |

575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服务器配置 |575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服务器配置 |


631```631```

632 632 

633* `API_TIMEOUT_MS`:Anthropic 客户端上的每请求超时时间,以毫秒为单位。默认值为 `600000`。适用于主循环和所有子代理。633* `API_TIMEOUT_MS`:Anthropic 客户端上的每请求超时时间,以毫秒为单位。默认值为 `600000`。适用于主循环和所有子代理。

634* `CLAUDE_CODE_MAX_RETRIES`:API 最大重试次数。默认值为 `10`,上限为 `15`。每次重试都有自己的 `API_TIMEOUT_MS` 时间窗口,因此最坏情况下的实际耗时约为 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避时间。对于需要等待较长中断时间的无人值守运行,请设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试暂时性容量错误,并且在 Claude Code v2.1.199 或更高版本中,会将其他暂时性错误的默认重试次数提高到 `300`,并取消此变量的上限。634* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认值为 `10`,上限为 `15`。每次重试都有各自的 `API_TIMEOUT_MS` 时间窗口。

635 

636 对于需要挺过较长中断的无人值守运行,请设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试临时性容量错误,并且在 Claude Code v2.1.199 或更高版本上,会将其他临时性错误的默认重试次数提高到 `300`,并取消此变量的上限。

635* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:子代理的停滞看门狗。当流看门狗开启时,默认值为 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 加 5 分钟,除非您调高该变量,否则合计为 `600000`。当流看门狗关闭时,默认值为 `600000`。在 v2.1.257 之前,默认值始终为 `600000`。637* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:子代理的停滞看门狗。当流看门狗开启时,默认值为 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 加 5 分钟,除非您调高该变量,否则合计为 `600000`。当流看门狗关闭时,默认值为 `600000`。在 v2.1.257 之前,默认值始终为 `600000`。

636 638 

637 每个流事件都会重置计时器。发生停滞时,Claude Code 会中止该子代理并向父级报告停滞。对于后台子代理,它还会将该任务标记为失败并附上任何部分结果。639 每个流事件都会重置计时器。发生停滞时,Claude Code 会中止该子代理并向父级报告停滞。对于后台子代理,它还会将该任务标记为失败并附上任何部分结果。


1561 parent_tool_use_id: string | null;1563 parent_tool_use_id: string | null;

1562 error?: SDKAssistantMessageError;1564 error?: SDKAssistantMessageError;

1563 aborted?: true;1565 aborted?: true;

1566 agent_id?: string;

1564 timestamp?: string;1567 timestamp?: string;

1565 context_usage?: SDKContextUsage;1568 context_usage?: SDKContextUsage;

1569 usage_report?: SDKUsageReport;

1566 user_message_uuid?: string;1570 user_message_uuid?: string;

1567 user_message_uuids?: string[];1571 user_message_uuids?: string[];

1568 resume_reason?: string;1572 resume_reason?: string;


1580 1584 

1581当中断或中止在流完成前截断助手消息时,`aborted` 为 `true`:消息没有 `stop_reason`,内容可能在单词中间结束。该字段在正常完成的消息上不存在。它需要 Agent SDK v0.3.214 或更高版本。1585当中断或中止在流完成前截断助手消息时,`aborted` 为 `true`:消息没有 `stop_reason`,内容可能在单词中间结束。该字段在正常完成的消息上不存在。它需要 Agent SDK v0.3.214 或更高版本。

1582 1586 

1587`agent_id` 标识生成该消息的子代理,主线程消息中不包含此字段。其值等于该子代理的 [`task_started`](#sdktaskstartedmessage) 及其他任务事件上的 `task_id`,并且在子代理被[恢复](/docs/zh-CN/agent-sdk/subagents#resume-subagents)时保持不变。该字段需要 Agent SDK v0.3.292 或更高版本。

1588 

1589请通过 `agent_id` 将子代理的消息与其任务事件进行匹配,而不是将消息的 `parent_tool_use_id` 与任务事件的 `tool_use_id` 配对。当某个工具调用恢复子代理时,任务事件携带的是该调用的 `tool_use_id`,而消息保留的是最初启动该子代理的工具调用的 `parent_tool_use_id`,因此两者不再匹配。

1590 

1583Claude Code 在该轮的第一条助手消息上设置 `user_message_uuid` 和 `user_message_uuids`,条件在 [`user_message_uuid`](#user_message_uuid) 中。当 Claude Code 重新运行被重启中断的轮时,重新运行的携带这些字段的助手消息也携带 [`resume_reason`](#resume_reason)。1591Claude Code 在该轮的第一条助手消息上设置 `user_message_uuid` 和 `user_message_uuids`,条件在 [`user_message_uuid`](#user_message_uuid) 中。当 Claude Code 重新运行被重启中断的轮时,重新运行的携带这些字段的助手消息也携带 [`resume_reason`](#resume_reason)。

1584 1592 

1585`timestamp` 是消息内容在生成它的进程上完成生成的 ISO 8601 时间。该值来自该机器的时钟,因此仅用于显示,不要按它排序消息。一个 API 轮可以产生多条共享 `message.id` 的助手消息,每条都有自己的 `timestamp`。当字段不存在时,回退到您收到消息的时间。1593`timestamp` 是消息内容在生成它的进程上完成生成的 ISO 8601 时间。该值来自该机器的时钟,因此仅用于显示,不要按它排序消息。一个 API 轮可以产生多条共享 `message.id` 的助手消息,每条都有自己的 `timestamp`。当字段不存在时,回退到您收到消息的时间。

1586 1594 

1587`context_usage` 是 `/context` 报告的结构化副本,类型为 [`SDKContextUsage`](#sdkcontextusage),需要 Agent SDK v0.3.232 或更高版本。当您发送 `/context` 作为提示词时,Claude Code 将报告作为助手消息传递,其 `message.content` 包含 markdown 表格,并将 `context_usage` 附加到同一消息。Claude Code 不在任何其他助手消息上设置该字段,早期版本在没有它的情况下传递 `/context` 表格,因此当字段存在时从字段读取分解,当不存在时回退到 markdown 文本。1595`context_usage` 是 `/context` 报告的结构化副本,类型为 [`SDKContextUsage`](#sdkcontextusage),需要 Agent SDK v0.3.232 或更高版本。当您发送 `/context` 作为提示词时,Claude Code 将报告作为助手消息传递,其 `message.content` 包含 markdown 表格,并将 `context_usage` 附加到同一消息。Claude Code 不在任何其他助手消息上设置该字段,早期版本在没有它的情况下传递 `/context` 表格,因此当字段存在时从字段读取分解,当不存在时回退到 markdown 文本。

1588 1596 

1597`usage_report` 是 `/usage` 报告的结构化副本,类型为 [`SDKUsageReport`](#sdkusagereport),需要 Agent SDK v0.3.273 或更高版本。当您将 `/usage` 作为提示词发送时,Claude Code 会以一条助手消息的形式交付报告,其 `message.content` 包含文本。仅当会话满足以下所有条件时,它才会将 `usage_report` 附加到同一条消息上:

1598 

1599* 会话使用 claude.ai 凭据进行身份验证

1600* 凭据显示已知的套餐类型,或携带 `user:profile` 作用域

1601* 账户未采用按用量计费

1602 

1603以 `CLAUDE_CODE_OAUTH_TOKEN` 传入的 `claude setup-token` 令牌默认不符合条件,因为它只携带 `user:inference` 作用域。其他会话(例如使用 API 密钥的会话)交付的文本不带该字段,较早的版本也是如此。当该字段存在时请从中读取报告,不存在时再回退到文本。

1604 

1589<h3 id="sdkusermessage">1605<h3 id="sdkusermessage">

1590 `SDKUserMessage`1606 `SDKUserMessage`

1591</h3>1607</h3>


1597 type: "user";1613 type: "user";

1598 uuid?: UUID;1614 uuid?: UUID;

1599 session_id?: string;1615 session_id?: string;

1616 agent_id?: string;

1600 message: MessageParam; // From Anthropic SDK1617 message: MessageParam; // From Anthropic SDK

1601 pasted_content?: MessageParam["content"][];1618 pasted_content?: MessageParam["content"][];

1602 parent_tool_use_id: string | null;1619 parent_tool_use_id: string | null;


1636};1653};

1637```1654```

1638 1655 

1656由子代理生成的用户消息(例如其自身某个工具调用的 `tool_result`)会携带 `agent_id`。请参阅 [`SDKAssistantMessage`](#sdkassistantmessage),其中定义了该字段及其版本要求。

1657 

1639在携带 `tool_result` 块的消息上,`tool_use_result` 是工具的结构化输出对象,而不是发送给模型的文本。其结构取决于对应 `tool_use` 块所指定的工具,因此该字段的类型为 `unknown`;内置结构列在[工具输出类型](#tool-output-types)下。以下结果需要超出其所列结构的额外处理:1658在携带 `tool_result` 块的消息上,`tool_use_result` 是工具的结构化输出对象,而不是发送给模型的文本。其结构取决于对应 `tool_use` 块所指定的工具,因此该字段的类型为 `unknown`;内置结构列在[工具输出类型](#tool-output-types)下。以下结果需要超出其所列结构的额外处理:

1640 1659 

1641* `Agent` 工具:`tool_use_result` 为 [`AgentOutput`](#agent-2)。请据此进行渲染,而不是解析 `tool_result` 文本。`completed` 结果的 `content` 包含子代理的报告;对于通过 `SubagentHandback` 工具调用提交报告的子代理,则包含一条关于该交接的简短说明来代替报告。在 Claude Code v2.1.271 或更高版本的[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下,每个产生 `completed` 结果的子代理都以这种方式报告([fork](/docs/zh-CN/sub-agents#fork-the-current-conversation) 除外),Claude 会以来自子代理的单独消息接收报告。1660* `Agent` 工具:`tool_use_result` 为 [`AgentOutput`](#agent-2)。请据此进行渲染,而不是解析 `tool_result` 文本。`completed` 结果的 `content` 包含子代理的报告;对于通过 `SubagentHandback` 工具调用提交报告的子代理,则包含一条关于该交接的简短说明来代替报告。在 Claude Code v2.1.271 或更高版本的[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下,每个产生 `completed` 结果的子代理都以这种方式报告([fork](/docs/zh-CN/sub-agents#fork-the-current-conversation) 除外),Claude 会以来自子代理的单独消息接收报告。


1992 `SDKPartialAssistantMessage`2011 `SDKPartialAssistantMessage`

1993</h3>2012</h3>

1994 2013 

1995流式部分消息(仅当 `includePartialMessages` 为 true 时)。`parent_tool_use_id` 字段始终为 `null`:流事件仅为主会话发出。对于子代理归因,使用完整消息,它们携带 `parent_tool_use_id`,或启用 [`forwardSubagentText`](#options) 以接收子代理文本和思考作为完整消息。2014流式部分消息(仅当 `includePartialMessages` 为 true 时)。

2015 

2016`parent_tool_use_id` 字段始终为 `null`:流事件仅针对主会话发出。要进行子代理归属,请使用完整消息(它们携带 [`agent_id`](#sdkassistantmessage) 和 `parent_tool_use_id`),或启用 [`forwardSubagentText`](#options) 以完整消息的形式接收子代理的文本和思考内容。

1996 2017 

1997```typescript theme={null}2018```typescript theme={null}

1998type SDKPartialAssistantMessage = {2019type SDKPartialAssistantMessage = {


2229* `buffer`:压缩保留2250* `buffer`:压缩保留

2230* `deferred`:Claude Code 保留在窗口外的工具 schema,从使用情况计算中排除,列出以供了解2251* `deferred`:Claude Code 保留在窗口外的工具 schema,从使用情况计算中排除,列出以供了解

2231 2252 

2253<h3 id="sdkusagereport">

2254 `SDKUsageReport`

2255</h3>

2256 

2257`/usage` 报告的结构化形式,作为 `usage_report` 携带在交付 `/usage` 结果的 [`SDKAssistantMessage`](#sdkassistantmessage) 上。Agent SDK v0.3.273 及更高版本导出此类型。此类型为实验性的:其结构可能会发生变化。

2258 

2259```typescript theme={null}

2260type SDKUsageReport = {

2261 session: {

2262 total_cost_usd: number;

2263 total_api_duration_ms: number;

2264 total_duration_ms: number;

2265 total_lines_added: number;

2266 total_lines_removed: number;

2267 model_usage: { [modelName: string]: ModelUsage };

2268 };

2269 rate_limits: {

2270 limits:

2271 | {

2272 kind: string;

2273 group: string;

2274 percent: number;

2275 resets_at: string | null;

2276 scope?: {

2277 model?: { display_name: string } | null;

2278 surface?: { display_name: string } | null;

2279 } | null;

2280 severity: string;

2281 is_active: boolean;

2282 }[]

2283 | null;

2284 extra_usage?: {

2285 is_enabled: boolean;

2286 monthly_limit: number | null;

2287 used_credits: number | null;

2288 utilization: number | null;

2289 currency?: string | null;

2290 } | null;

2291 } | null;

2292};

2293```

2294 

2295顶层字段为 `session` 和 `rate_limits`:

2296 

2297* `session`:Claude Code 的累计成本和用量汇总,读取自与 [`SDKResultMessage`](#sdkresultmessage) 上的 `total_cost_usd` 和 `modelUsage` 相同的账目。每个 `model_usage` 条目都是一个 [`ModelUsage`](#modelusage)。

2298* `rate_limits`:`limits` 中为套餐的用量行,`extra_usage` 中为使用额度的支出。当 Claude Code 无法获取套餐用量时(例如会话的 OAuth 令牌缺少 `user:profile` 作用域),该字段为 `null`。

2299 

2300Claude Code 根据 token 数在本地计算 `session.total_cost_usd`,因此它是估算值,而不是您的套餐实际收取的费用。服务器报告的使用额度支出是单独的 `extra_usage` 块。关于准确性注意事项,请参阅[跟踪成本和用量](/docs/zh-CN/agent-sdk/cost-tracking)。

2301 

2302`limits` 按服务器发送的原样保存服务器的用量行:适用哪些计量器、其作用域、标签、严重程度和顺序都由服务器决定,因此请按原样渲染这些行。

2303 

2304* 空数组表示服务器未报告任何计量器。

2305* `null` 表示 Claude Code 没有可报告的行。

2306 

2307`limits` 的每一行描述一个用量计量器:

2308 

2309| 字段 | 类型 | 描述 |

2310| - | - | - |

2311| `kind` | `string` | 服务器的计量器类型,例如 `session`、`weekly_all` 或 `weekly_scoped`。请以此对行进行分类,切勿依据标签 |

2312| `group` | `string` | 服务器的行分组,例如 `session` 或 `weekly`。行按服务器的顺序分组渲染在其下 |

2313| `percent` | `number` | 窗口已使用的比例,0-100 |

2314| `resets_at` | `string \| null` | 窗口重置时的 ISO 8601 时间戳 |

2315| `scope` | `object \| null` | 可选。限定行所针对的对象(模型或使用入口),附带服务器的显示标签 |

2316| `severity` | `string` | 服务器对该行的判定,用于计量器的颜色,例如 `normal`、`warning` 或 `critical` |

2317| `is_active` | `boolean` | 在服务器选定用于单值指示器显示的行上为 `true` |

2318 

2319在 Agent SDK v0.3.277 之前,该类型将 `severity` 和 `is_active` 声明为可选且可为 null,行到达时可能不带这两个字段。

2320 

2321`extra_usage` 是服务器报告的计费周期内的[使用额度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)支出和上限,当套餐拥有使用额度时存在。金额以 `currency` 的最小单位表示,美元为美分。

2322 

2323* 当此账户没有自己的支出上限时,`monthly_limit` 为 `null`。在 Team 和 Enterprise 套餐上,不要将 `null` 渲染为无限制。

2324* 当使用额度无法用于支付请求时,`is_enabled` 为 `false`。

2325 

2232<h3 id="sdkmessageorigin">2326<h3 id="sdkmessageorigin">

2233 `SDKMessageOrigin`2327 `SDKMessageOrigin`

2234</h3>2328</h3>


3416type WebFetchInput = {3510type WebFetchInput = {

3417 url: string;3511 url: string;

3418 prompt: string;3512 prompt: string;

3513 offset?: number;

3419};3514};

3420```3515```

3421 3516 

3422从 URL 获取内容并使用 AI 模型处理它。3517从 URL 获取内容并使用 AI 模型处理它。

3423 3518 

3519`offset` 是从页面开头跳过的字符数。Claude 设置它以继续读取较长的页面。该字段需要 Agent SDK v0.3.290 或更高版本。

3520 

3424<h3 id="websearch">3521<h3 id="websearch">

3425 WebSearch3522 WebSearch

3426</h3>3523</h3>


5603 task_id: string;5700 task_id: string;

5604 tool_use_id?: string;5701 tool_use_id?: string;

5605 status: "completed" | "failed" | "stopped";5702 status: "completed" | "failed" | "stopped";

5703 reason?: "worker_restart";

5606 output_file: string;5704 output_file: string;

5607 summary: string;5705 summary: string;

5608 ambient?: boolean;5706 ambient?: boolean;


5617};5715};

5618```5716```

5619 5717 

5718当任务因其自身完成、失败或停止以外的原因结束时,会设置 `reason`,该字段需要 Agent SDK v0.3.273 或更高版本。Claude Code 仅在通过 claude.ai 连接的会话中设置它:云端会话(包括在自托管运行器上运行的云端会话)以及 Remote Control 会话。本地 `query()` 调用永远不会设置它。其唯一的值 `worker_restart` 表示运行该任务的 Claude Code 进程已重启。该通知携带状态 `"stopped"`,因此请将该任务视为既未完成也未失败。

5719 

5620当 Claude Code [将耗时较长的 MCP 工具调用移到后台](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)时,该调用的 `tool_result` 块只包含一个占位符,调用的真实结果会在此通知中到达。请使用 `tool_use_id` 将通知与调用匹配。在 `completed` 通知上,`resource_links` 以 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 条目的形式列出工具以引用方式返回的文件,其 50 个链接和 64 KiB 的限制与 [`tool_use_result.resourceLinks`](#sdkusermessage) 相同。当结果没有链接时,以及在非 MCP 工具调用任务的通知上,Claude Code 会省略 `resource_links`。`resource_links` 需要 Agent SDK v0.3.257 或更高版本。5720当 Claude Code [将耗时较长的 MCP 工具调用移到后台](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)时,该调用的 `tool_result` 块只包含一个占位符,调用的真实结果会在此通知中到达。请使用 `tool_use_id` 将通知与调用匹配。在 `completed` 通知上,`resource_links` 以 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 条目的形式列出工具以引用方式返回的文件,其 50 个链接和 64 KiB 的限制与 [`tool_use_result.resourceLinks`](#sdkusermessage) 相同。当结果没有链接时,以及在非 MCP 工具调用任务的通知上,Claude Code 会省略 `resource_links`。`resource_links` 需要 Agent SDK v0.3.257 或更高版本。

5621 5721 

5622Claude Code 会在其发送给模型的每个任务通知前添加一条提示,但带有 [`scheduled-trigger` subkind](#task-notification-subkinds) 标记的投递除外,这类投递改为携带分配任务的框架说明。该提示声明没有发生任何人工输入,因此模型不会将通知视为用户指令或批准。5722Claude Code 会在其发送给模型的每个任务通知前添加一条提示,但带有 [`scheduled-trigger` subkind](#task-notification-subkinds) 标记的投递除外,这类投递改为携带分配任务的框架说明。该提示声明没有发生任何人工输入,因此模型不会将通知视为用户指令或批准。


5775 task_type?: string;5875 task_type?: string;

5776 is_backgrounded?: boolean;5876 is_backgrounded?: boolean;

5777 spawn_depth?: number;5877 spawn_depth?: number;

5878 parent_task_id?: string;

5778 ambient?: boolean;5879 ambient?: boolean;

5779 uuid: UUID;5880 uuid: UUID;

5780 session_id: string;5881 session_id: string;


5792 5893 

5793[恢复的子代理](/docs/zh-CN/agent-sdk/subagents#resume-subagents)始终报告 `is_backgrounded: true`,因为 Claude Code 会在后台运行每个恢复的子代理。当前台任务稍后移到后台时,Claude Code 会在 [`task_updated`](#sdktaskupdatedmessage) 消息中报告新的 `is_backgrounded` 值,而不是发送第二条 `task_started`。5894[恢复的子代理](/docs/zh-CN/agent-sdk/subagents#resume-subagents)始终报告 `is_backgrounded: true`,因为 Claude Code 会在后台运行每个恢复的子代理。当前台任务稍后移到后台时,Claude Code 会在 [`task_updated`](#sdktaskupdatedmessage) 消息中报告新的 `is_backgrounded` 值,而不是发送第二条 `task_started`。

5794 5895 

5896`parent_task_id` 保存启动此任务的子代理的 `task_id`。使用它将每个任务归组到启动它的子代理之下。Claude Code 会在子代理、Bash 和 [Monitor](#monitor) 任务上设置它。该字段需要 Agent SDK v0.3.292 或更高版本。在以下情况下该字段不存在:

5897 

5898* 任务由主线程启动

5899* Claude Code 不再跟踪父任务

5900* 任务由 [teammate](/docs/zh-CN/agent-teams) 或工作流中的 Agent 启动

5901 

5902父任务可能是前台任务,也可能是已经结束的任务,因此请将无法识别的 ID 视为没有父任务。

5903 

5795<h3 id="sdktaskprogressmessage">5904<h3 id="sdktaskprogressmessage">

5796 `SDKTaskProgressMessage`5905 `SDKTaskProgressMessage`

5797</h3>5906</h3>


5848 `SDKBackgroundTasksChangedMessage`5957 `SDKBackgroundTasksChangedMessage`

5849</h3>5958</h3>

5850 5959 

5851每当活动后台任务集合发生变化时发出:任务启动、完成、被终止、前台 Agent 被移到后台,或任务的 `description` 或 `ambient` 字段发生变化。5960每当活动后台任务集合发生变化时发出:任务启动、完成、被终止、前台 Agent 被移到后台,或任务的 `description`、`ambient` 或 `parent_task_id` 字段发生变化。有关每个条目上的 `parent_task_id` 字段,请参阅 [`SDKTaskStartedMessage`](#sdktaskstartedmessage),其中定义了该字段及其版本要求。

5852 5961 

5853`tasks` 数组是完整的活动集合。请用每次的负载替换任何缓存的集合,而不是对 `task_started` 和 `task_notification` 事件进行配对,这样下一次成员变化就会纠正您错过的任何事件。5962`tasks` 数组是完整的活动集合。请用每次的负载替换任何缓存的集合,而不是对 `task_started` 和 `task_notification` 事件进行配对,这样下一次成员变化就会纠正您错过的任何事件。

5854 5963 

5855相对于这些逐任务事件的顺序是未指定的,因此不要将这两个流相互关联。5964当任务结束时,其 [`task_updated`](#sdktaskupdatedmessage) 和 [`task_notification`](#sdktasknotificationmessage) 会先于将其从列表中移除的 `background_tasks_changed` 到达。除此之外,相对于这些逐任务事件的顺序是未指定的。

5856 5965 

5857启动时不会发出任何内容。每当会话的 CLI 进程启动或重启时,请重置为空集合,并由下一次成员变化重新填充。5966启动时不会发出任何内容。每当会话的 CLI 进程启动或重启时,请重置为空集合,并由下一次成员变化重新填充。

5858 5967 


5869 task_type: string;5978 task_type: string;

5870 subagent_type?: string;5979 subagent_type?: string;

5871 description: string;5980 description: string;

5981 parent_task_id?: string;

5872 ambient?: boolean;5982 ambient?: boolean;

5873 }[];5983 }[];

5874 uuid: UUID;5984 uuid: UUID;

Details

36 ```36 ```

37 37 

38 ```typescript TypeScript theme={null}38 ```typescript TypeScript theme={null}

39 async function handleToolRequest(toolName, input, options) {39 import type { CanUseTool } from "@anthropic-ai/claude-agent-sdk";

40 

41 const handleToolRequest: CanUseTool = async (toolName, input, options) => {

40 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }42 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }

41 // 提示用户并返回允许或拒绝43 // 在此提示用户,然后返回允许或拒绝

42 }44 return { behavior: "deny", message: "User declined" };

45 };

43 46 

44 const options = { canUseTool: handleToolRequest };47 const options = { canUseTool: handleToolRequest };

45 ```48 ```


440 // 在您的工具列表中包含 AskUserQuestion443 // 在您的工具列表中包含 AskUserQuestion

441 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],444 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],

442 canUseTool: async (toolName, input) => {445 canUseTool: async (toolName, input) => {

443 // 在此处处理澄清问题446 // 批准每次调用的占位实现。"检测 AskUserQuestion"步骤会替换它。

447 return { behavior: "allow", updatedInput: input };

444 }448 }

445 }449 }

446 })) {450 })) {


763 767 

764 ```typescript TypeScript theme={null}768 ```typescript TypeScript theme={null}

765 import { query } from "@anthropic-ai/claude-agent-sdk";769 import { query } from "@anthropic-ai/claude-agent-sdk";

770 import type { PermissionResult } from "@anthropic-ai/claude-agent-sdk";

766 import * as readline from "readline/promises";771 import * as readline from "readline/promises";

767 772 

768 // 帮助程序在终端中提示用户输入773 // 帮助程序在终端中提示用户输入


783 }788 }

784 789 

785 // 显示 Claude 的问题并收集用户答案790 // 显示 Claude 的问题并收集用户答案

786 async function handleAskUserQuestion(input: any) {791 async function handleAskUserQuestion(input: any): Promise<PermissionResult> {

787 const answers: Record<string, string> = {};792 const answers: Record<string, string> = {};

788 793 

789 for (const q of input.questions) {794 for (const q of input.questions) {

agent-view.md +21 −12

Details

391 391 

392您可以从 Agent 视图分派新的后台会话,将现有的交互式会话发送或复制到后台,或直接从 shell 启动一个。392您可以从 Agent 视图分派新的后台会话,将现有的交互式会话发送或复制到后台,或直接从 shell 启动一个。

393 393 

394<h3 id="from-agent-view">394<span id="from-agent-view" />

395 从 Agent 视图395 

396<h3 id="dispatch-an-agent-from-agent-view">

397 从 Agent 视图分派 Agent

396</h3>398</h3>

397 399 

398在 Agent 视图底部的输入框中输入提示词,然后按 `Enter` 启动新的后台会话。会话会根据提示词自动命名;稍后可以使用 `Ctrl+R` 重命名。400在 Agent 视图底部的输入框中输入提示词,然后按 `Enter` 启动新的后台会话。会话会根据提示词自动命名;稍后可以使用 `Ctrl+R` 重命名。


446 448 

447当 Agent 视图按目录分组时,分派会将提示词发送到所选行的目录,因此您可以选择一个分组并分派到其中,而无需重新输入路径。449当 Agent 视图按目录分组时,分派会将提示词发送到所选行的目录,因此您可以选择一个分组并分派到其中,而无需重新输入路径。

448 450 

449<h3 id="from-inside-a-session">451<span id="from-inside-a-session" />

450 从会话内部452 

453<h3 id="send-or-copy-a-session-to-the-background">

454 将会话发送或复制到后台

451</h3>455</h3>

452 456 

453有两个命令可将工作从您所在的会话移到后台:`/background` 将当前对话发送到后台并释放您的终端,`/fork` 则发送一个副本,同时您继续在原处工作。457有两个命令可将工作从您所在的会话移到后台:`/background` 将当前对话发送到后台并释放您的终端,`/fork` 则发送一个副本,同时您继续在原处工作。


511 515 

512您在会话期间使用 [`/add-dir`](/docs/zh-CN/permissions#additional-directories-grant-file-access-not-configuration) 添加的目录也会继承。继承 `--allow-dangerously-skip-permissions` 会使 `bypassPermissions` 在后台会话中保持可用,但不会授予任何新权限:该模式仍需要 [权限模式、模型和 effort](#permission-mode-model-and-effort) 中所述的一次性交互式接受。516您在会话期间使用 [`/add-dir`](/docs/zh-CN/permissions#additional-directories-grant-file-access-not-configuration) 添加的目录也会继承。继承 `--allow-dangerously-skip-permissions` 会使 `bypassPermissions` 在后台会话中保持可用,但不会授予任何新权限:该模式仍需要 [权限模式、模型和 effort](#permission-mode-model-and-effort) 中所述的一次性交互式接受。

513 517 

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

515 从您的 shell519 

520<h3 id="dispatch-an-agent-from-your-shell">

521 从您的 shell 分派 Agent

516</h3>522</h3>

517 523 

518传递 `--bg` 或其长形式 `--background` 可启动直接进入后台的会话:524传递 `--bg` 或其长形式 `--background` 可启动直接进入后台的会话:


603 609 

604在 git 仓库外,会话直接写入工作目录,彼此之间不隔离,因此请避免分派会编辑相同文件的并行会话。如果您使用其他版本控制系统,请配置 [`WorktreeCreate` hook](/docs/zh-CN/worktrees#non-git-version-control),Claude 会以与 git 相同的方式隔离编辑。610在 git 仓库外,会话直接写入工作目录,彼此之间不隔离,因此请避免分派会编辑相同文件的并行会话。如果您使用其他版本控制系统,请配置 [`WorktreeCreate` hook](/docs/zh-CN/worktrees#non-git-version-control),Claude 会以与 git 相同的方式隔离编辑。

605 611 

606当 hook 在非 git 仓库的目录中失败时,Claude 会跳过该目录的隔离,并就地编辑工作目录。在 git 仓库内,Claude 在编辑前会将其移入 worktree 的会话,在该移动完成之前无法编辑共享检出中的文件。612当 hook 在非 git 仓库的目录中失败时,Claude 会跳过该目录的隔离,并就地编辑工作目录。在 git 仓库内,Claude 在编辑前会将其移入 worktree 的会话,在该移动完成之前无法对共享检出使用 `Edit`、`Write` 或 `NotebookEdit` 工具。

607 613 

608要查找会话的 worktree 路径,请附加到会话并查看其工作目录。614要查找会话的 worktree 路径,请附加到会话并查看其工作目录。

609 615 


825| `claude daemon logs` | 跟踪 supervisor 的日志文件 [`~/.claude/daemon.log`](#where-state-is-stored),在新行到达时将其打印出来,直到您按下 `Ctrl+C` |831| `claude daemon logs` | 跟踪 supervisor 的日志文件 [`~/.claude/daemon.log`](#where-state-is-stored),在新行到达时将其打印出来,直到您按下 `Ctrl+C` |

826| `claude daemon stop --any` | 停止 supervisor 进程及其托管的后台会话。传递 `--keep-workers` 以保持后台会话运行,以便下一个 supervisor 重新连接到它们。下一个 `claude agents` 或 `claude --bg` 启动一个新的 supervisor |832| `claude daemon stop --any` | 停止 supervisor 进程及其托管的后台会话。传递 `--keep-workers` 以保持后台会话运行,以便下一个 supervisor 重新连接到它们。下一个 `claude agents` 或 `claude --bg` 启动一个新的 supervisor |

827 833 

828`claude attach` 和 `claude logs` 可以使用运行中会话名称的一部分代替 ID,例如 `claude logs "auth refactor"`。传递名称需要 Claude Code v2.1.290 或更高版本。834`claude attach` 和 `claude logs` 可以使用会话名称的一部分代替 ID,例如 `claude logs "auth refactor"`。传递名称需要 Claude Code v2.1.290 或更高版本。

829 835 

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

831 将会话列为 JSON837 将会话列为 JSON


979 打开会话说它没有保存的会话记录985 打开会话说它没有保存的会话记录

980</h3>986</h3>

981 987 

982已停止的会话[从另一个对话后台处理](#from-inside-a-session)并在其第一个回复完成之前停止,没有任何可恢复的内容:在该第一个回复完成之前,对话仍然只存在于它被后台处理的会话中。`claude attach` 拒绝打开它,显示 `This session has no saved transcript`。988当您打开一个[从另一个对话后台处理](#from-inside-a-session)的会话,且该会话在运行自己的轮次之前就已停止时,Claude Code 会恢复那个对话。如果 Claude Code 找不到该对话,则会拒绝打开该会话:

989 

990* `claude attach` 打印 `This session has no saved transcript`。

991* Agent 视图在列表下方显示 `Press enter again to restart this session fresh`。

983 992 

984在 Agent 视图中,打开该行会在列表下显示 `Press enter again to restart this session fresh`。在同一行上再次按 `Enter` 来使用空对话重新启动会话,或从 shell 运行 `claude respawn <id>`。993在同一行上再次按 `Enter` 来使用空对话重新启动会话,或从 shell 运行 `claude respawn <id>`。

985 994 

986原始对话完整无损;使用 `claude --resume` 恢复它或继续在其中工作。有关详细信息,请参阅[错误参考](/docs/zh-CN/errors#this-session-has-no-saved-transcript)。995有关详细信息,请参阅[错误参考](/docs/zh-CN/errors#this-session-has-no-saved-transcript)。

987 996 

988<h3 id="the-terminal-host-died-or-the-session-stopped-responding">997<h3 id="the-terminal-host-died-or-the-session-stopped-responding">

989 终端主机已死亡或会话停止响应998 终端主机已死亡或会话停止响应


1095 1104 

1096| 版本 | 更改 |1105| 版本 | 更改 |

1097| - | - |1106| - | - |

1098| v2.1.290 | [`claude attach` 和 `claude logs`](#manage-sessions-from-the-shell) 可以使用正在运行的会话名称的一部分来代替 ID。 |1107| v2.1.290 | [`claude attach` 和 `claude logs`](#manage-sessions-from-the-shell) 可以使用会话名称的一部分来代替 ID。 |

1099| v2.1.290 | `/model`、`/effort`、`/rename` 和 `/usage` 作为[窥视回复](#peek-and-reply)发送给正在工作的会话时会立即运行。 |1108| v2.1.290 | `/model`、`/effort`、`/rename` 和 `/usage` 作为[窥视回复](#peek-and-reply)发送给正在工作的会话时会立即运行。 |

1100| v2.1.290 | 无法投递的[窥视回复](#peek-and-reply)如果以 `/` 开头,或者在会话进程运行期间回答的是带有预定义选项的问题,则不再被保存以待下次重启时发送。 |1109| v2.1.290 | 无法投递的[窥视回复](#peek-and-reply)如果以 `/` 开头,或者在会话进程运行期间回答的是带有预定义选项的问题,则不再被保存以待下次重启时发送。 |

1101| v2.1.288 | `Ctrl+F` 按名称查找会话,`Alt+↑` / `Alt+↓` 在组标题之间跳转。这两者以及 `Ctrl+R` 都可以[重新绑定](/docs/zh-CN/keybindings#agents-actions)。 |1110| v2.1.288 | `Ctrl+F` 按名称查找会话,`Alt+↑` / `Alt+↓` 在组标题之间跳转。这两者以及 `Ctrl+R` 都可以[重新绑定](/docs/zh-CN/keybindings#agents-actions)。 |

chrome.md +39 −2

Details

202and attach logs/session.log to it202and attach logs/session.log to it

203```203```

204 204 

205上传有三个限制:205如果 Claude 拒绝附加文件或上传失败,请检查以下原因:

206 206 

207* **权限**:Claude 只能在会话被允许读取文件时上传文件,因此[权限规则](/docs/zh-CN/settings-reference#permission-settings)拒绝对文件的 `Read` 访问也会阻止上传。207* **权限**:Claude 只能在会话被允许读取文件时上传文件,因此[权限规则](/docs/zh-CN/settings-reference#permission-settings)拒绝对文件的 `Read` 访问也会阻止上传。

208* **大小**:单次上传最多可包含 10 MB 的文件。208* **大小**:单次上传最多可包含 10 MB 的文件。

209* **硬链接**:Claude 拒绝具有多个硬链接的文件,这在 `node_modules` 等包管理器存储中很常见。复制文件并上传副本。209* **硬链接**:Claude 拒绝具有多个硬链接的文件,这在 `node_modules` 等包管理器存储中很常见。复制文件并上传副本。

210* **凭据名称**:如果文件名或所在文件夹是通常用于存放凭据的名称,例如 `.env`、`.pem` 或 `.key` 文件,或 `.ssh` 下的任何内容,Claude 会拒绝该文件。需要 Claude Code v2.1.293 或更高版本。

210 211 

211<h3 id="draft-content-in-google-docs">212<h3 id="draft-content-in-google-docs">

212 在 Google Docs 中起草内容213 在 Google Docs 中起草内容


309 310 

310其他基于 Chromium 的浏览器从其自己的配置目录读取相同的文件,该目录以浏览器命名。例如,macOS 上的 Brave 使用 `~/Library/Application Support/BraveSoftware/Brave-Browser/NativeMessagingHosts/`,在 Windows 上每个浏览器都有自己的注册表项,例如 `HKCU\Software\BraveSoftware\Brave-Browser\NativeMessagingHosts\`。311其他基于 Chromium 的浏览器从其自己的配置目录读取相同的文件,该目录以浏览器命名。例如,macOS 上的 Brave 使用 `~/Library/Application Support/BraveSoftware/Brave-Browser/NativeMessagingHosts/`,在 Windows 上每个浏览器都有自己的注册表项,例如 `HKCU\Software\BraveSoftware\Brave-Browser\NativeMessagingHosts\`。

311 312 

313<h3 id="project-settings-can’t-turn-on-chrome">

314 项目设置无法启用 Chrome

315</h3>

316 

317终端中出现以下警告,表示您正在使用的项目尝试启用 Chrome 集成,但 Claude Code 未允许:

318 

319```text wrap theme={null}

320Claude Code ignored CLAUDE_CODE_ENABLE_CFC in this project's settings: a project can't turn on Claude in Chrome. To turn it on yourself, run /chrome or start with --chrome.

321```

322 

323该项目的 `.claude/settings.json` 或 `.claude/settings.local.json` 在其 `env` 块中将 [`CLAUDE_CODE_ENABLE_CFC`](/docs/zh-CN/env-vars#variables) 设置为 `1`,以启用 Chrome 集成。Claude Code 未应用该设置,因此本会话中 Chrome 集成处于关闭状态,Claude 没有浏览器工具。

324 

325Claude Code 会跳过该设置,因为这些文件存储在项目目录中,而您检出的仓库不得能够将 Claude 连接到您的浏览器。

326 

327您可以照常继续工作。如果您需要浏览器工具,或希望消除该警告,请执行以下操作之一:

328 

329* **立即获取浏览器工具**:退出,然后在 shell 中使用 `claude --chrome` 重新启动。

330* **在后续会话中获取浏览器工具**:在 Claude Code 输入框中运行 `/chrome` 并选择[**默认启用**](#enable-chrome-by-default)。这适用于之后启动的会话,而不是当前正在运行的会话。

331* **在不使用浏览器工具的情况下停止警告**:从项目的设置文件中删除 `CLAUDE_CODE_ENABLE_CFC` 这一行。

332 

312<h3 id="browser-not-responding">333<h3 id="browser-not-responding">

313 浏览器无响应334 浏览器无响应

314</h3>335</h3>


325 346 

326Chrome 扩展程序的 service worker 在扩展会话期间可能会进入空闲状态,这会破坏连接。如果浏览器工具在一段时间不活动后停止工作,请运行 `/chrome` 并选择"重新连接扩展程序"。347Chrome 扩展程序的 service worker 在扩展会话期间可能会进入空闲状态,这会破坏连接。如果浏览器工具在一段时间不活动后停止工作,请运行 `/chrome` 并选择"重新连接扩展程序"。

327 348 

349运行 `/chrome` 时,请查看其 `Status` 行。如果显示"未连接",则表示正在运行的会话自身与 Chrome 的连接已失败。选择"重新连接扩展程序"以重新启动该连接。连接成功后,扩展程序的重新连接页面会在 Chrome 中打开。在 v2.1.290 之前,"重新连接扩展程序"仅会打开该页面,而不会重新启动失败的连接,因此如果在较早版本上浏览器工具未恢复,请更新 Claude Code。

350 

351<h3 id="extension-signed-in-to-a-different-organization">

352 扩展程序登录到了不同的组织

353</h3>

354 

355如果您属于多个 claude.ai 组织,扩展程序必须登录到与 Claude Code 相同的组织。如果两者不同,即使两者使用相同的 claude.ai 账户,Claude 的浏览器工具也会返回"Browser extension is not connected"。

356 

357要查看 Claude Code 登录的是哪个组织,请在 Claude Code 输入框中运行 [`/status`](/docs/zh-CN/commands) 并查看 `Organization` 行。

358 

359<Warning>

360 如果您从扩展程序中注销,将丢失其中保存的快捷方式和定时任务。请先尝试[常见错误消息](#common-error-messages)下的其他修复方法。

361</Warning>

362 

363要更改扩展程序的组织,请在扩展程序的设置中注销,然后重新登录并选择 `/status` 显示的组织。

364 

328<h3 id="windows-specific-issues">365<h3 id="windows-specific-issues">

329 Windows 特定问题366 Windows 特定问题

330</h3>367</h3>


343 380 

344| 错误 | 原因 | 修复 |381| 错误 | 原因 | 修复 |

345| - | - | - |382| - | - | - |

346| "浏览器扩展程序未连接" | 本机消息传递主机无法到达扩展程序,或您的组织的 IP 允许列表拒绝了到 `bridge.claudeusercontent.com` 的连接 | 检查扩展程序登录的 claude.ai 账户是否与 Claude Code 相同,重新启动 Chrome 和 Claude Code,然后运行 `/chrome` 以重新连接。如果您的组织使用 IP 允许列表且错误仍然存在,请参阅[组织 IP 允许列表和代理出口](/docs/zh-CN/network-config#organization-ip-allowlists-and-proxy-egress) |383| "浏览器扩展程序未连接" | 扩展程序未在 Chrome 中安装并运行,扩展程序登录的 claude.ai 账户或组织与 Claude Code 不同,或您的组织的 IP 允许列表拒绝了到 `bridge.claudeusercontent.com` 的连接 | 检查扩展程序登录的 claude.ai 账户和[组织](#extension-signed-in-to-a-different-organization)是否与 Claude Code 相同,重新启动 Chrome 和 Claude Code,然后运行 `/chrome` 以重新连接。如果您的组织使用 IP 允许列表且错误仍然存在,请参阅[组织 IP 允许列表和代理出口](/docs/zh-CN/network-config#organization-ip-allowlists-and-proxy-egress) |

347| 扩展程序在 `/chrome` 中显示"未检测到" | Chrome 扩展程序未安装或已禁用 | 在 `chrome://extensions` 中安装或启用扩展程序 |384| 扩展程序在 `/chrome` 中显示"未检测到" | Chrome 扩展程序未安装或已禁用 | 在 `chrome://extensions` 中安装或启用扩展程序 |

348| "没有可用的标签页" | Claude 在标签页准备好之前尝试操作 | 要求 Claude 创建新标签页并重试 |385| "没有可用的标签页" | Claude 在标签页准备好之前尝试操作 | 要求 Claude 创建新标签页并重试 |

349| "接收端不存在" | 扩展程序 service worker 进入空闲状态 | 运行 `/chrome` 并选择"重新连接扩展程序" |386| "接收端不存在" | 扩展程序 service worker 进入空闲状态 | 运行 `/chrome` 并选择"重新连接扩展程序" |

Details

1237 1237 

1238CLI 将指标、日志和(启用时)跟踪发送到网关,网关将它们逐字中继到每个配置的目的地。导出使用 OpenTelemetry Protocol (OTLP) over HTTP。要跳过中继并让会话直接导出到您的收集器,[在策略中命名收集器](#export-directly-to-your-collector)。请参阅[监控使用](/docs/zh-CN/monitoring-usage)了解 CLI 发出的指标和事件。1238CLI 将指标、日志和(启用时)跟踪发送到网关,网关将它们逐字中继到每个配置的目的地。导出使用 OpenTelemetry Protocol (OTLP) over HTTP。要跳过中继并让会话直接导出到您的收集器,[在策略中命名收集器](#export-directly-to-your-collector)。请参阅[监控使用](/docs/zh-CN/monitoring-usage)了解 CLI 发出的指标和事件。

1239 1239 

1240在通过 `/login` 登录的会话中,CLI 使用从网关颁发的 JWT 读取的已认证用户的身份为每个导出加盖时间戳:`user.id`、`user.email` 和 `user.groups` 属性。每个开发者的成本和使用归因因此无需开发者端配置即可工作。1240在通过 `/login` 登录的会话中,CLI 会为每次导出加上已通过身份验证用户的身份信息,这些信息从网关签发的 JWT 中读取:`user.id`、`user.email` 和 `user.groups` 属性。因此,按开发者的成本和使用量归因无需开发者端进行任何配置。Claude Code 在开发者登录之前记录的事件[不带有此身份信息](/docs/zh-CN/monitoring-usage#standard-attributes)。要了解开发者所属组发生变化时哪个属性会随之更新,请参阅[会话打开期间的组变更](#group-changes-during-an-open-session)。

1241 1241 

1242[Claude Desktop](#claude-desktop-overlay) 和通过网关登录的 Cowork 会话使用 `user.email` 和 `user.groups` 以及 `enduser.id` 为其遥测加盖时间戳,因此您可以使用一个关于 `user.email` 或 `user.groups` 的查询覆盖终端、Desktop 和 Cowork 使用。`user.groups` 是逗号分隔的 IdP 组列表。1242[Claude Desktop](#claude-desktop-overlay) 和通过网关登录的 Cowork 会话使用 `user.email` 和 `user.groups` 以及 `enduser.id` 为其遥测加盖时间戳,因此您可以使用一个关于 `user.email` 或 `user.groups` 的查询覆盖终端、Desktop 和 Cowork 使用。`user.groups` 是逗号分隔的 IdP 组列表。

1243 1243 


1347 1347 

1348Claude Code 也将每个标签复制到每个指标数据点,因此您可以在不索引资源属性的后端中按它过滤指标。要关闭该复制,请参阅[指标基数控制](/docs/zh-CN/monitoring-usage#metrics-cardinality-control)。1348Claude Code 也将每个标签复制到每个指标数据点,因此您可以在不索引资源属性的后端中按它过滤指标。要关闭该复制,请参阅[指标基数控制](/docs/zh-CN/monitoring-usage#metrics-cardinality-control)。

1349 1349 

1350<h4 id="group-changes-during-an-open-session">

1351 会话打开期间的组变更

1352</h4>

1353 

1354终端会话将 `user.groups` 放在 OTLP 资源上,并再次放在每个指标数据点和事件上。如果开发者的组在会话打开期间发生变化,下一次[静默刷新](#session)之后的使用情况对应的数据点和事件会带有新的组。资源会保留旧的组,直到开发者重启 Claude Code,因此请按数据点或事件上的属性进行分组。

1355 

1356如果您在 OpenTelemetry Collector 的 Prometheus remote write 导出器中开启了 `resource_to_telemetry_conversion`,该导出器会用资源的 `user.groups` 替换每个数据点的 `user.groups`,因此每个数据点都显示旧的组。要保留数据点的值,请在该导出器之前从资源中删除 `user.groups`。

1357 

1358此 OpenTelemetry Collector `resource` 处理器会在列出它的管道中删除该属性:

1359 

1360```yaml theme={null}

1361processors:

1362 resource/drop-user-groups:

1363 attributes:

1364 - key: user.groups

1365 action: delete

1366```

1367 

1368将 `resource/drop-user-groups` 添加到指标管道的 `processors` 之后,每个序列都会带有来自其自身数据点的 `user_groups` 标签。

1369 

1350<h4 id="export-directly-to-your-collector">1370<h4 id="export-directly-to-your-collector">

1351 直接导出到您的收集器1371 直接导出到您的收集器

1352</h4>1372</h4>

Details

516 遥测516 遥测

517</h2>517</h2>

518 518 

519网关为您提供每个开发者的使用指标,无需任何每台机器的 OTEL 配置。Claude Code 发出 OpenTelemetry (OTLP) 指标、日志和可选的跟踪;[监控使用情况](/docs/zh-CN/monitoring-usage)涵盖了 CLI 报告的所有内容。在通过 `/login` 登录的会话中,CLI 使用经过身份验证的 IdP 身份属性 `user.id`、`user.email` 和 `user.groups` 为每个导出加盖时间戳,因此使用情况按开发者汇总。519网关为您提供每个开发者的使用指标,无需任何每台机器的 OTEL 配置。Claude Code 发出 OpenTelemetry (OTLP) 指标、日志和可选的跟踪;[监控使用情况](/docs/zh-CN/monitoring-usage)涵盖了 CLI 报告的所有内容。在通过 `/login` 登录的会话中,CLI 使用经过身份验证的 IdP 身份属性 `user.id`、`user.email` 和 `user.groups` [标记每个导出](/docs/zh-CN/monitoring-usage#standard-attributes),因此使用情况按开发者汇总。

520 520 

521网关本身是一个经过身份验证的 OTLP 中继。将 [`telemetry.forward_to`](/docs/zh-CN/claude-apps-gateway-config#telemetry) 与 `listen.public_url` 一起设置,它会将 OTEL 导出器设置推送到每个连接的客户端,并将其 OTLP 流量逐字转发到您列出的每个目标。每个目标独立选择指标、日志和跟踪,默认仅为指标;有关每个信号字段及其敏感性权衡,请参阅 [`telemetry` 参考](/docs/zh-CN/claude-apps-gateway-config#telemetry)。网关不缓冲、聚合或存储遥测数据,因此数据最终的位置完全由收集器的导出器配置决定。521网关本身是一个经过身份验证的 OTLP 中继。将 [`telemetry.forward_to`](/docs/zh-CN/claude-apps-gateway-config#telemetry) 与 `listen.public_url` 一起设置,它会将 OTEL 导出器设置推送到每个连接的客户端,并将其 OTLP 流量逐字转发到您列出的每个目标。每个目标独立选择指标、日志和跟踪,默认仅为指标;有关每个信号字段及其敏感性权衡,请参阅 [`telemetry` 参考](/docs/zh-CN/claude-apps-gateway-config#telemetry)。网关不缓冲、聚合或存储遥测数据,因此数据最终的位置完全由收集器的导出器配置决定。

522 522 

Details

91 从 CLI 来看,会话切换是单向的:您可以使用 `--teleport` 将云端会话拉入终端,但无法将现有的终端会话推送到云端。带有任务描述的 `--cloud` 标志会为您当前的仓库创建新的云端会话;带有 `-p` 和会话 ID 或 claude.ai/code URL 时,它会改为[将消息排队到该现有会话](/docs/zh-CN/claude-code-on-the-web#send-follow-ups-from-the-cli)。[Desktop 应用](/docs/zh-CN/desktop#continue-in-another-surface)可以通过其 **Open in** 菜单,将其 Code 标签页中的本地会话发送到云端。91 从 CLI 来看,会话切换是单向的:您可以使用 `--teleport` 将云端会话拉入终端,但无法将现有的终端会话推送到云端。带有任务描述的 `--cloud` 标志会为您当前的仓库创建新的云端会话;带有 `-p` 和会话 ID 或 claude.ai/code URL 时,它会改为[将消息排队到该现有会话](/docs/zh-CN/claude-code-on-the-web#send-follow-ups-from-the-cli)。[Desktop 应用](/docs/zh-CN/desktop#continue-in-another-surface)可以通过其 **Open in** 菜单,将其 Code 标签页中的本地会话发送到云端。

92</Note>92</Note>

93 93 

94<h3 id="from-terminal-to-cloud">94<span id="from-terminal-to-cloud" />

95 从终端到云95 

96<h3 id="start-a-cloud-session-from-your-terminal">

97 从终端启动云端会话

96</h3>98</h3>

97 99 

98使用 `--cloud` 标志从命令行启动云会话:100使用 `--cloud` 标志从命令行启动云会话:


215 217 

216如果发送失败,请参阅[发送到云端会话时的错误](#errors-when-sending-to-a-cloud-session)。218如果发送失败,请参阅[发送到云端会话时的错误](#errors-when-sending-to-a-cloud-session)。

217 219 

218<h3 id="from-cloud-to-terminal">220<span id="from-cloud-to-terminal" />

219 从云到终端221 

222<h3 id="continue-a-cloud-session-in-your-terminal">

223 在终端中继续云端会话

220</h3>224</h3>

221 225 

222使用以下任何方法将云会话拉入您的终端:226使用以下任何方法将云会话拉入您的终端:


483从 [claude.ai/code](https://claude.ai/code) 重新打开会话以预配新的 VM:487从 [claude.ai/code](https://claude.ai/code) 重新打开会话以预配新的 VM:

484 488 

485* **会恢复**:您的对话历史489* **会恢复**:您的对话历史

486* **不会恢复**:VM 被回收时仍在运行的后台工作,例如子代理和 shell 命令490* **不会恢复**:VM 被回收时仍在运行的后台工作,例如子代理和 shell 命令,以及[自定节奏的 `/loop`](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval) 中待执行的唤醒。要重新启动该循环,请再次运行 `/loop`。

487 491 

488<h2 id="limitations">492<h2 id="limitations">

489 限制493 限制

Details

489* **例程**:当您在项目中要求计划工作时,Claude 创建一个[例程](/docs/zh-CN/routines),作为该项目中的线程运行,并出现在其 **Routines** 标签页上。您在项目外创建的例程继续自己工作。489* **例程**:当您在项目中要求计划工作时,Claude 创建一个[例程](/docs/zh-CN/routines),作为该项目中的线程运行,并出现在其 **Routines** 标签页上。您在项目外创建的例程继续自己工作。

490* **Remote Control**:[Remote Control](/docs/zh-CN/remote-control) 连接 claude.ai 到在您的机器上运行的 Claude Code 会话。当您在项目中要求 Claude 在您的计算机上运行线程时,项目[使用 Remote Control 来执行](#run-a-thread-on-your-own-computer)。490* **Remote Control**:[Remote Control](/docs/zh-CN/remote-control) 连接 claude.ai 到在您的机器上运行的 Claude Code 会话。当您在项目中要求 Claude 在您的计算机上运行线程时,项目[使用 Remote Control 来执行](#run-a-thread-on-your-own-computer)。

491* **本地会话和代理视图**:您在终端、IDE 或桌面应用的本地环境中启动的会话不能添加到项目中。[代理视图](/docs/zh-CN/agent-view)是用于跟踪多个本地会话并排的屏幕,您仍然启动每个会话并自己给它分配任务。491* **本地会话和代理视图**:您在终端、IDE 或桌面应用的本地环境中启动的会话不能添加到项目中。[代理视图](/docs/zh-CN/agent-view)是用于跟踪多个本地会话并排的屏幕,您仍然启动每个会话并自己给它分配任务。

492* **Worktrees**:一个[worktree](/docs/zh-CN/worktrees)为每个本地会话提供其自己的代码库工作副本,因此您机器上的并行会话不会相互覆盖。云线程不需要它们:每个线程将其代码库克隆到其自己的云沙箱中,并在其自己的分支上工作。492* **Worktrees**:一个 [worktree](/docs/zh-CN/worktrees) 为每个本地会话提供其自己的仓库工作副本。云线程不需要它们:每个线程将其仓库克隆到其自己的云沙箱中,并在其自己的分支上工作。

493* **代理团队**:一个[代理团队](/docs/zh-CN/agent-teams)是一个会话,为单个任务启动队友会话,在您的机器上或在云会话内,并以该任务结束。493* **代理团队**:一个[代理团队](/docs/zh-CN/agent-teams)是一个会话,为单个任务启动队友会话,在您的机器上或在云会话内,并以该任务结束。

494* **Subagents**:一个[subagent](/docs/zh-CN/sub-agents)在一个会话内运行,在其自己的上下文窗口中执行一个辅助任务,并向该会话返回摘要。项目的线程是 Claude 启动的整个会话,向项目对话报告,一个线程仍然可以为其自己的辅助任务使用 subagents。494* **Subagents**:一个[subagent](/docs/zh-CN/sub-agents)在一个会话内运行,在其自己的上下文窗口中执行一个辅助任务,并向该会话返回摘要。项目的线程是 Claude 启动的整个会话,向项目对话报告,一个线程仍然可以为其自己的辅助任务使用 subagents。

495* **claude.ai 聊天和 Cowork 中的 Projects**:[早期的 Projects 体验](https://support.claude.com/en/articles/9517075-what-are-projects),对对话和参考文件进行分组,没有线程或协调员。这些项目继续按照今天的方式工作,直到重新设计的体验到达它们。495* **claude.ai 聊天和 Cowork 中的 Projects**:[早期的 Projects 体验](https://support.claude.com/en/articles/9517075-what-are-projects),对对话和参考文件进行分组,没有线程或协调员。这些项目继续按照今天的方式工作,直到重新设计的体验到达它们。

Details

28| `claude auth logout` | 从您的 Anthropic 账户登出 | `claude auth logout` |28| `claude auth logout` | 从您的 Anthropic 账户登出 | `claude auth logout` |

29| `claude auth status` | 以 JSON 格式显示身份验证状态。使用 `--text` 获取人类可读的输出。如果已登录,则以代码 0 退出,如果未登录,则以代码 1 退出。JSON 包含一个 `configDirectory` 字段,命名 CLI 使用的 [配置目录](/docs/zh-CN/claude-directory)。该字段需要 Claude Code v2.1.268 或更高版本。JSON 的 `authMethod` 字段取值为 `none`、`claude.ai`、`oauth_token`、`api_key`、`api_key_helper` 或 `third_party` 之一 | `claude auth status` |29| `claude auth status` | 以 JSON 格式显示身份验证状态。使用 `--text` 获取人类可读的输出。如果已登录,则以代码 0 退出,如果未登录,则以代码 1 退出。JSON 包含一个 `configDirectory` 字段,命名 CLI 使用的 [配置目录](/docs/zh-CN/claude-directory)。该字段需要 Claude Code v2.1.268 或更高版本。JSON 的 `authMethod` 字段取值为 `none`、`claude.ai`、`oauth_token`、`api_key`、`api_key_helper` 或 `third_party` 之一 | `claude auth status` |

30| `claude agents` | 打开 [agent view](/docs/zh-CN/agent-view) 以监控和分派并行后台会话。使用 `--cwd <path>` 仅显示在该目录下启动的会话,或使用 `--json` 将活动会话打印为 JSON 数组以供脚本使用(`--json --all` 也包括已完成的后台会话)。传递 `--permission-mode`、`--model`、`--effort` 或 `--agent` 以设置 [分派会话的默认值](/docs/zh-CN/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如顶级 `claude` 命令。打开 agent view 需要交互式终端 | `claude agents --json` |30| `claude agents` | 打开 [agent view](/docs/zh-CN/agent-view) 以监控和分派并行后台会话。使用 `--cwd <path>` 仅显示在该目录下启动的会话,或使用 `--json` 将活动会话打印为 JSON 数组以供脚本使用(`--json --all` 也包括已完成的后台会话)。传递 `--permission-mode`、`--model`、`--effort` 或 `--agent` 以设置 [分派会话的默认值](/docs/zh-CN/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如顶级 `claude` 命令。打开 agent view 需要交互式终端 | `claude agents --json` |

31| `claude attach <id\|name>` | 在此终端中附加到 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。传递正在运行的会话名称的一部分来代替 ID 需要 Claude Code v2.1.290 或更高版本 | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | 在此终端中附加到 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。传递会话名称的一部分来代替 ID 需要 Claude Code v2.1.290 或更高版本 | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | 以 JSON 格式打印内置 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器规则。使用 `claude auto-mode config` 查看应用了设置的有效配置。`--label <prefix>` 仅打印标签以该前缀开头的规则,不区分大小写匹配。需要 Claude Code v2.1.208 或更高版本 | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | 以 JSON 格式打印内置 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器规则。使用 `claude auto-mode config` 查看应用了设置的有效配置。`--label <prefix>` 仅打印标签以该前缀开头的规则,不区分大小写匹配。需要 Claude Code v2.1.208 或更高版本 | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | 通过从用户设置文件中删除 `autoMode` 部分来恢复默认 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 配置。在写入前提示确认;传递 `-y`/`--yes` 以跳过提示。来自 [托管设置](/docs/zh-CN/server-managed-settings) 或 `--settings` 标志的规则仍然适用。需要 Claude Code v2.1.212 或更高版本。请参阅 [检查默认值和您的有效配置](/docs/zh-CN/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | 通过从用户设置文件中删除 `autoMode` 部分来恢复默认 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 配置。在写入前提示确认;传递 `-y`/`--yes` 以跳过提示。来自 [托管设置](/docs/zh-CN/server-managed-settings) 或 `--settings` 标志的规则仍然适用。需要 Claude Code v2.1.212 或更高版本。请参阅 [检查默认值和您的有效配置](/docs/zh-CN/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | 跟踪后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 的日志文件 `~/.claude/daemon.log`,在新行到达时将其打印出来,直到您按下 `Ctrl+C` | `claude daemon logs` |34| `claude daemon logs` | 跟踪后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 的日志文件 `~/.claude/daemon.log`,在新行到达时将其打印出来,直到您按下 `Ctrl+C` | `claude daemon logs` |


37| `claude daemon stop --any` | 停止后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 及其托管的会话。传递 `--keep-workers` 以保持后台会话运行,以便下一个 supervisor 重新连接到它们。`--any` 确认停止按需 supervisor,这是默认值。使用此命令从 [无响应的 supervisor](/docs/zh-CN/agent-view#agent-view-says-the-background-service-did-not-respond) 恢复 | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | 停止后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 及其托管的会话。传递 `--keep-workers` 以保持后台会话运行,以便下一个 supervisor 重新连接到它们。`--any` 确认停止按需 supervisor,这是默认值。使用此命令从 [无响应的 supervisor](/docs/zh-CN/agent-view#agent-view-says-the-background-service-did-not-respond) 恢复 | `claude daemon stop --any --keep-workers` |

38| `claude doctor` | 从终端打印只读安装和设置诊断,无需启动会话,包括安装健康状况、设置文件验证错误和 Remote Control 资格。对于可以应用修复的会话内设置检查,请运行 [`/doctor`](/docs/zh-CN/commands#all-commands) | `claude doctor` |38| `claude doctor` | 从终端打印只读安装和设置诊断,无需启动会话,包括安装健康状况、设置文件验证错误和 Remote Control 资格。对于可以应用修复的会话内设置检查,请运行 [`/doctor`](/docs/zh-CN/commands#all-commands) | `claude doctor` |

39| `claude import [source]` | 启动交互式会话,运行 [`/import`](/docs/zh-CN/commands#all-commands) 以将来自其他编码 Agent 的配置引入 Claude Code。接受与命令相同的 `--dry-run` 和 `--yes` 选项。在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude Platform 上不可用。当您关闭 [功能标志获取](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching) 时也不可用。需要 Claude Code v2.1.213 或更高版本 | `claude import codex --dry-run` |39| `claude import [source]` | 启动交互式会话,运行 [`/import`](/docs/zh-CN/commands#all-commands) 以将来自其他编码 Agent 的配置引入 Claude Code。接受与命令相同的 `--dry-run` 和 `--yes` 选项。在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude Platform 上不可用。当您关闭 [功能标志获取](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching) 时也不可用。需要 Claude Code v2.1.213 或更高版本 | `claude import codex --dry-run` |

40| `claude logs <id\|name>` | 从 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 打印最近的输出。传递正在运行的会话名称的一部分来代替 ID 需要 Claude Code v2.1.290 或更高版本 | `claude logs 7c5dcf5d` |40| `claude logs <id\|name>` | 从 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 打印最近的输出。传递会话名称的一部分来代替 ID 需要 Claude Code v2.1.290 或更高版本 | `claude logs 7c5dcf5d` |

41| `claude mcp` | 配置 Model Context Protocol (MCP) 服务器 | 请参阅 [Claude Code MCP 文档](/docs/zh-CN/mcp)。 |41| `claude mcp` | 配置 Model Context Protocol (MCP) 服务器 | 请参阅 [Claude Code MCP 文档](/docs/zh-CN/mcp)。 |

42| `claude mcp login <name>` | 运行配置的 MCP 服务器的 OAuth 流程而不打开交互式 `/mcp` 面板。适用于 HTTP、SSE 和 claude.ai 连接器服务器。在 SSH 上添加 `--no-browser` 以打印授权 URL 而不是打开浏览器,然后在提示处粘贴重定向 URL。请参阅 [从命令行进行身份验证](/docs/zh-CN/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |42| `claude mcp login <name>` | 运行配置的 MCP 服务器的 OAuth 流程而不打开交互式 `/mcp` 面板。适用于 HTTP、SSE 和 claude.ai 连接器服务器。在 SSH 上添加 `--no-browser` 以打印授权 URL 而不是打开浏览器。对于 HTTP 或 SSE 服务器,请在提示处粘贴重定向 URL。对于 claude.ai 连接器,请参阅 [从 shell 重新授权连接器](/docs/zh-CN/remote-control#authorize-a-connector-again-from-your-shell)。请参阅 [从命令行进行身份验证](/docs/zh-CN/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

43| `claude mcp logout <name>` | 清除 MCP 服务器的存储 OAuth 凭据 | `claude mcp logout sentry` |43| `claude mcp logout <name>` | 清除 MCP 服务器的存储 OAuth 凭据 | `claude mcp logout sentry` |

44| `claude plugin` | 管理 Claude Code [插件](/docs/zh-CN/plugins/overview)。别名:`claude plugins`。请参阅 [插件参考](/docs/zh-CN/plugins/cli-reference#claude-plugin-commands) 了解子命令 | `claude plugin install code-review@claude-plugins-official` |44| `claude plugin` | 管理 Claude Code [插件](/docs/zh-CN/plugins/overview)。别名:`claude plugins`。请参阅 [插件参考](/docs/zh-CN/plugins/cli-reference#claude-plugin-commands) 了解子命令 | `claude plugin install code-review@claude-plugins-official` |

45| `claude purge [path]` | 删除项目的所有本地 Claude Code 状态:会话记录、任务列表、调试日志、文件编辑历史、提示词历史行和项目在 `~/.claude.json` 中的条目。省略 `[path]` 以从交互式列表中选择。标志:`--dry-run` 预览,`-y`/`--yes` 跳过确认,`-i`/`--interactive` 确认每一项,`--all` 用于每个项目。请参阅 [清除本地数据](/docs/zh-CN/claude-directory#clear-local-data) | `claude purge ~/work/repo --dry-run` |45| `claude purge [path]` | 删除项目的所有本地 Claude Code 状态:会话记录、任务列表、调试日志、文件编辑历史、提示词历史行和项目在 `~/.claude.json` 中的条目。省略 `[path]` 以从交互式列表中选择。标志:`--dry-run` 预览,`-y`/`--yes` 跳过确认,`-i`/`--interactive` 确认每一项,`--all` 用于每个项目。请参阅 [清除本地数据](/docs/zh-CN/claude-directory#clear-local-data) | `claude purge ~/work/repo --dry-run` |


106| `--input-format` | 为 print 模式指定输入格式(选项:`text`、`stream-json`) | `claude -p --output-format json --input-format stream-json` |106| `--input-format` | 为 print 模式指定输入格式(选项:`text`、`stream-json`) | `claude -p --output-format json --input-format stream-json` |

107| `--json-schema` | 在 Agent 完成其工作流后获得与 JSON Schema 匹配的经过验证的 JSON 输出(仅限 print 模式)。请参阅[结构化输出](/docs/zh-CN/agent-sdk/structured-outputs)。Claude Code 在 schema 无效时以错误退出,并接受 `format` 关键字作为注释而不进行客户端验证 | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |107| `--json-schema` | 在 Agent 完成其工作流后获得与 JSON Schema 匹配的经过验证的 JSON 输出(仅限 print 模式)。请参阅[结构化输出](/docs/zh-CN/agent-sdk/structured-outputs)。Claude Code 在 schema 无效时以错误退出,并接受 `format` 关键字作为注释而不进行客户端验证 | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

108| `--maintenance` | 在会话之前使用 `maintenance` 匹配器运行 [Setup hook](/docs/zh-CN/hooks#setup)(仅限 print 模式) | `claude -p --maintenance "query"` |108| `--maintenance` | 在会话之前使用 `maintenance` 匹配器运行 [Setup hook](/docs/zh-CN/hooks#setup)(仅限 print 模式) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | 在停止之前在 API 调用上花费的最大美元金额(仅限 print 模式)。Claude Code 根据其[客户端成本估算](/docs/zh-CN/agent-sdk/cost-tracking#estimates-not-billing)检查上限,该估算可能与您的账单不同。来自[子代理](/docs/zh-CN/sub-agents)的支出计入上限。当您使用 `--continue` 或 `--resume` 返回对话时,[从早期运行恢复的](/docs/zh-CN/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)总数不计入上限。一旦支出达到上限,生成另一个子代理会失败并显示 `Budget limit reached`,Claude Code 会停止仍在运行的后台子代理;上限执行行为需要 Claude Code v2.1.217 或更高版本 | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | 一旦 API 调用的估算支出达到此金额,即停止运行(仅限 print 模式)。Claude Code 根据其[客户端成本估算](/docs/zh-CN/agent-sdk/cost-tracking#estimates-not-billing)检查上限,该估算可能与您的账单不同。来自[子代理](/docs/zh-CN/sub-agents)的支出计入上限。支出可能超过上限,因此请[预留余量](/docs/zh-CN/agent-sdk/agent-loop#budget-headroom)。当您使用 `--continue` 或 `--resume` 返回对话时,[从早期运行恢复的](/docs/zh-CN/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)总数不计入上限。一旦支出达到上限,生成另一个子代理会失败并显示 `Budget limit reached`,Claude Code 会停止仍在运行的后台子代理;上限执行行为需要 Claude Code v2.1.217 或更高版本 | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | 限制 Agent 轮次数(仅限 print 模式)。达到限制时以错误退出。默认无限制。使用 `--input-format stream-json` 时,当限制结束某一轮次时仍在排队的消息会保持排队,并以其自己的限制启动新轮次 | `claude -p --max-turns 3 "query"` |110| `--max-turns` | 限制 Agent 轮次数(仅限 print 模式)。达到限制时以错误退出。默认无限制。使用 `--input-format stream-json` 时,当限制结束某一轮次时仍在排队的消息会保持排队,并以其自己的限制启动新轮次 | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | 从 JSON 文件或字符串加载 MCP 服务器(空格分隔)。当您使用 `-p` 传递此标志时,Claude Code 在运行第一轮之前等待仍待处理的服务器连接,最多等待 [`MCP_TIMEOUT`](/docs/zh-CN/env-vars) 启动超时时间,默认 30 秒;具有[缓存工具列表](/docs/zh-CN/mcp#managing-your-servers)的服务器跳过等待并在首次使用时连接。等待需要 Claude Code v2.1.221 或更高版本 | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | 从 JSON 文件或字符串加载 MCP 服务器(空格分隔)。当您使用 `-p` 传递此标志时,Claude Code 在运行第一轮之前等待仍待处理的服务器连接,最多等待 [`MCP_TIMEOUT`](/docs/zh-CN/env-vars) 启动超时时间,默认 30 秒;具有[缓存工具列表](/docs/zh-CN/mcp#managing-your-servers)的服务器跳过等待并在首次使用时连接。等待需要 Claude Code v2.1.221 或更高版本 | `claude --mcp-config ./mcp.json` |

112| `--model` | 使用[模型别名](/docs/zh-CN/model-config#model-aliases)(如 `sonnet`、`opus`、`haiku` 或 `fable`)或模型的完整名称为当前会话设置模型。覆盖 [`model`](/docs/zh-CN/settings-reference#model) 设置和 [`ANTHROPIC_MODEL`](/docs/zh-CN/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | 使用[模型别名](/docs/zh-CN/model-config#model-aliases)(如 `sonnet`、`opus`、`haiku` 或 `fable`)或模型的完整名称为当前会话设置模型。覆盖 [`model`](/docs/zh-CN/settings-reference#model) 设置和 [`ANTHROPIC_MODEL`](/docs/zh-CN/model-config#environment-variables) | `claude --model claude-sonnet-5` |

Details

307| | 在云端会话中可用 | 原因 |307| | 在云端会话中可用 | 原因 |

308| :- | :- | :- |308| :- | :- | :- |

309| 您的仓库的 `CLAUDE.md` | 是 | 克隆的一部分 |309| 您的仓库的 `CLAUDE.md` | 是 | 克隆的一部分 |

310| 您的仓库的 `.claude/settings.json` hook 和权限规则 | 是,在具有一个仓库的会话中 | 克隆的一部分。具有多个仓库的会话(包括[项目](/docs/zh-CN/claude-projects#what-threads-pick-up-from-your-repositories)线程)在克隆上方启动,不读取它们 |310| 您的仓库的 `.claude/settings.json` hook 和权限规则 | 是,在具有一个仓库的会话中 | 克隆的一部分。对于具有多个仓库的会话,请参阅[它读取哪些设置](/docs/zh-CN/settings#settings-in-cloud-sessions) |

311| 您的仓库的 `.mcp.json` MCP 服务器 | 是,在具有一个仓库的会话中 | 克隆的一部分,从会话的工作目录中找到 |311| 您的仓库的 `.mcp.json` MCP 服务器 | 是,在具有一个仓库的会话中 | 克隆的一部分,从会话的工作目录中找到。对于自托管环境,请参阅[哪个仓库的设置适用](/docs/zh-CN/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

312| 您的仓库的 `.claude/rules/` | 是 | 克隆的一部分 |312| 您的仓库的 `.claude/rules/` | 是 | 克隆的一部分 |

313| 您的仓库的 `.claude/skills/`、`.claude/agents/`、`.claude/commands/` | 是 | 克隆的一部分 |313| 您的仓库的 `.claude/skills/`、`.claude/agents/`、`.claude/commands/` | 是 | 克隆的一部分 |

314| 在您的仓库的 `.claude/settings.json` 中声明的插件和市场 | 否 | 云端会话不会安装仓库在 [`enabledPlugins`](/docs/zh-CN/settings-reference#enabledplugins) 下启用的插件,包括来自它在 [`extraKnownMarketplaces`](/docs/zh-CN/settings-reference#extraknownmarketplaces) 下列出的市场的插件 |314| 在您的仓库的 `.claude/settings.json` 中声明的插件和市场 | 否 | 云端会话不会安装仓库在 [`enabledPlugins`](/docs/zh-CN/settings-reference#enabledplugins) 下启用的插件,包括来自它在 [`extraKnownMarketplaces`](/docs/zh-CN/settings-reference#extraknownmarketplaces) 下列出的市场的插件 |


575 575 

576SessionStart hooks 在云端的行为与本地相同,但有以下注意事项:576SessionStart hooks 在云端的行为与本地相同,但有以下注意事项:

577 577 

578* **每个会话一个存储库**:具有多个存储库的会话不会从任何存储库的 `.claude/settings.json` 加载 hooks,因此您在那里定义的 SessionStart hook 不会运行。请改为使用[设置脚本](#setup-scripts)为这些会话安装依赖项。578* **每个会话一个仓库**:在 Anthropic 托管环境中,具有多个仓库的会话不会从任何仓库的 `.claude/settings.json` 加载 hook,因此您在那里定义的 SessionStart hook 不会运行。请改为使用[设置脚本](#setup-scripts)为这些会话安装依赖项。对于自托管环境,请参阅[适用哪个仓库的设置](/docs/zh-CN/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories)。

579* **没有仅云端的范围**:hooks 在本地和云会话中都运行。要跳过本地运行,请在 `CLAUDE_CODE_REMOTE` 环境变量不为 `true` 时提前退出,就像[依赖项安装脚本](#install-dependencies-with-a-sessionstart-hook)所做的那样。579* **没有仅云端的范围**:hooks 在本地和云会话中都运行。要跳过本地运行,请在 `CLAUDE_CODE_REMOTE` 环境变量不为 `true` 时提前退出,就像[依赖项安装脚本](#install-dependencies-with-a-sessionstart-hook)所做的那样。

580* **需要网络访问**:安装命令需要连接到包注册表。如果您的环境使用 **None** 网络访问,这些 hooks 会失败。**Trusted** 下的[默认允许列表](#default-allowed-domains)涵盖 npm、PyPI、RubyGems 和 crates.io。580* **需要网络访问**:安装命令需要连接到包注册表。如果您的环境使用 **None** 网络访问,这些 hooks 会失败。**Trusted** 下的[默认允许列表](#default-allowed-domains)涵盖 npm、PyPI、RubyGems 和 crates.io。

581* **代理兼容性**:在 Anthropic 托管环境中,所有出站流量都经过[安全代理](#security-proxy),某些包管理器无法与此代理正确配合工作;Bun 是一个已知的例子。在[自托管环境](/docs/zh-CN/self-hosted-environments-deploy#default-deny-egress)中,出站流量改为经过您自己的网络边界。581* **代理兼容性**:在 Anthropic 托管环境中,所有出站流量都经过[安全代理](#security-proxy),某些包管理器无法与此代理正确配合工作;Bun 是一个已知的例子。在[自托管环境](/docs/zh-CN/self-hosted-environments-deploy#default-deny-egress)中,出站流量改为经过您自己的网络边界。

commands.md +1 −1

Details

111| `/login` | 登录您的 Anthropic 账户 |111| `/login` | 登录您的 Anthropic 账户 |

112| `/logout` | 从您的 Anthropic 账户注销 |112| `/logout` | 从您的 Anthropic 账户注销 |

113| `/loop [interval] [prompt]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 在会话保持打开期间重复运行提示词。省略间隔时,Claude 会[自行决定迭代之间的节奏](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)。省略提示词时,Claude 会运行[内置维护提示词](/docs/zh-CN/scheduled-tasks#run-the-built-in-maintenance-prompt)或您的 [`loop.md`](/docs/zh-CN/scheduled-tasks#customize-the-default-prompt-with-loop-md)。示例:`/loop 5m check if the deploy finished`。请参阅[按计划运行提示词](/docs/zh-CN/scheduled-tasks)。别名:`/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 在会话保持打开期间重复运行提示词。省略间隔时,Claude 会[自行决定迭代之间的节奏](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)。省略提示词时,Claude 会运行[内置维护提示词](/docs/zh-CN/scheduled-tasks#run-the-built-in-maintenance-prompt)或您的 [`loop.md`](/docs/zh-CN/scheduled-tasks#customize-the-default-prompt-with-loop-md)。示例:`/loop 5m check if the deploy finished`。请参阅[按计划运行提示词](/docs/zh-CN/scheduled-tasks)。别名:`/proactive` |

114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | 管理 MCP 服务器连接和 OAuth 身份验证。不带参数运行可打开交互式列表,或传递 `reconnect`、`enable` 或 `disable` 以及服务器名称或 `all`,可在不打开列表的情况下更改连接状态。`reconnect all` 会[重试每个失败或需要身份验证的服务器](/docs/zh-CN/mcp#retry-failed-servers-yourself)。也可在非交互模式(`-p`)中使用,在该模式下不带参数运行会输出服务器状态的文本摘要,而不是打开列表;需要 Claude Code v2.1.205 或更高版本 |114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | 管理 MCP 服务器连接和 OAuth 身份验证。不带参数运行可打开交互式列表,或传递 `reconnect`、`enable` 或 `disable` 以及服务器名称或 `all`,可在不打开列表的情况下更改连接状态。`reconnect all` 会[重试每个失败或需要身份验证的服务器](/docs/zh-CN/mcp#retry-failed-servers-yourself)。在非交互模式(`-p`)中,不带参数运行会输出服务器状态的文本摘要,而不是打开列表;需要 Claude Code v2.1.205 或更高版本 |

115| `/memory` | 编辑 `CLAUDE.md` 文件,启用或禁用[自动记忆](/docs/zh-CN/memory#auto-memory),并查看自动记忆条目 |115| `/memory` | 编辑 `CLAUDE.md` 文件,启用或禁用[自动记忆](/docs/zh-CN/memory#auto-memory),并查看自动记忆条目 |

116| `/mobile` | 显示用于下载 Claude 移动应用的二维码。别名:`/ios`、`/android` |116| `/mobile` | 显示用于下载 Claude 移动应用的二维码。别名:`/ios`、`/android` |

117| `/model [model]` | 切换 AI 模型并将其保存为新会话的默认模型。对于支持的模型,使用左/右箭头[调整 effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。不带参数时,打开选择器;在某一行上按 `s` 可仅为当前会话切换。请参阅 [Claude Code 何时会要求您确认切换](/docs/zh-CN/prompt-caching#switching-models)。一旦您确认切换(如果 Claude Code 询问),Claude Code 会应用更改,而无需等待当前回复完成。在 v2.1.242 之前,Claude Code 会根据从 Anthropic 获取的功能标志来决定是在轮次中途运行该命令,还是将其排队直到轮次结束,并且在不[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中(例如在[第三方提供商](/docs/zh-CN/third-party-integrations)上)始终将其排队。也可在非交互模式(`-p`)中通过模型参数(而非选择器)使用,此时仅应用于当前会话,不会保存为默认模型;需要 Claude Code v2.1.205 或更高版本 |117| `/model [model]` | 切换 AI 模型并将其保存为新会话的默认模型。对于支持的模型,使用左/右箭头[调整 effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。不带参数时,打开选择器;在某一行上按 `s` 可仅为当前会话切换。请参阅 [Claude Code 何时会要求您确认切换](/docs/zh-CN/prompt-caching#switching-models)。一旦您确认切换(如果 Claude Code 询问),Claude Code 会应用更改,而无需等待当前回复完成。在 v2.1.242 之前,Claude Code 会根据从 Anthropic 获取的功能标志来决定是在轮次中途运行该命令,还是将其排队直到轮次结束,并且在不[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中(例如在[第三方提供商](/docs/zh-CN/third-party-integrations)上)始终将其排队。也可在非交互模式(`-p`)中通过模型参数(而非选择器)使用,此时仅应用于当前会话,不会保存为默认模型;需要 Claude Code v2.1.205 或更高版本 |

desktop.md +1 −1

Details

396 使用会话并行工作396 使用会话并行工作

397</h3>397</h3>

398 398 

399点击侧边栏中的 **+ New session**,或在 macOS 上按 **Cmd+N**、在 Windows 上按 **Ctrl+N**,即可并行处理多个任务。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 可在侧边栏中循环切换会话。对于 Git 仓库,选择分支名称旁边的 **worktree** 选项,即可使用 [Git worktrees](/docs/zh-CN/worktrees) 为会话提供项目的独立隔离副本,这样一个会话中的更改在您提交之前不会影响其他会话。399点击侧边栏中的 **+ New session**,或在 macOS 上按 **Cmd+N**、在 Windows 上按 **Ctrl+N**,即可并行处理多个任务。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 可在侧边栏中循环切换会话。对于 Git 仓库,选择分支名称旁边的 **worktree** 选项,即可使用 [Git worktrees](/docs/zh-CN/worktrees) 为会话提供项目的独立隔离副本。

400 400 

401要同时查看两个会话,请在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl** 并点击侧边栏中的会话。该会话会在第二个窗格中打开,与您已打开的会话并排显示。分屏处于活跃状态时,点击侧边栏中的另一个会话会替换当前具有焦点的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 可关闭具有焦点的窗格并返回单个会话。401要同时查看两个会话,请在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl** 并点击侧边栏中的会话。该会话会在第二个窗格中打开,与您已打开的会话并排显示。分屏处于活跃状态时,点击侧边栏中的另一个会话会替换当前具有焦点的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 可关闭具有焦点的窗格并返回单个会话。

402 402 

env-vars.md +320 −315

Details

21 21 

22在 shell 中设置的变量仅在该终端会话期间有效,而在设置文件中的变量每次运行 `claude` 时都会应用。22在 shell 中设置的变量仅在该终端会话期间有效,而在设置文件中的变量每次运行 `claude` 时都会应用。

23 23 

24<h3 id="in-your-shell">24<span id="in-your-shell" />

25 在 shell 中25 

26<h3 id="set-variables-in-your-shell">

27 在 shell 中设置变量

26</h3>28</h3>

27 29 

28在启动 `claude` 之前设置变量:30在启动 `claude` 之前设置变量:


78 </Tab>80 </Tab>

79</Tabs>81</Tabs>

80 82 

81<h3 id="in-settings-files">83<span id="in-settings-files" />

82 在设置文件中84 

85<h3 id="set-variables-in-settings-files">

86 在设置文件中设置变量

83</h3>87</h3>

84 88 

85在 `settings.json` 文件中的 `env` 键下添加变量,如果文件不存在则创建它。Claude Code 直接从文件中读取它们,因此无论如何启动 `claude`,它们都会生效。运行中的会话在您保存文件时会将新值和更改的值应用到其环境中,但在启动时读取其变量一次的功能(例如 [OpenTelemetry 监控](/docs/zh-CN/monitoring-usage))会保持其启动值,直到您重新启动。从文件中删除变量不会在运行中的会话中取消设置它;删除在您下次启动 `claude` 时生效。89在 `settings.json` 文件中的 `env` 键下添加变量,如果文件不存在则创建它。Claude Code 直接从文件中读取它们,因此无论如何启动 `claude`,它们都会生效。运行中的会话在您保存文件时会将新值和更改的值应用到其环境中,但在启动时读取其变量一次的功能(例如 [OpenTelemetry 监控](/docs/zh-CN/monitoring-usage))会保持其启动值,直到您重新启动。从文件中删除变量不会在运行中的会话中取消设置它;删除在您下次启动 `claude` 时生效。


120 124 

121环境变量与 CLI 标志和会话内命令的交互方式因功能而异:`--model` 和 `/model` 覆盖 `ANTHROPIC_MODEL`,而 `CLAUDE_CODE_EFFORT_LEVEL` 覆盖 `--effort` 和 `/effort`。当变量与另一个配置源交互时,[变量](#variables) 列表中的其行说明优先级或链接到记录它的页面。125环境变量与 CLI 标志和会话内命令的交互方式因功能而异:`--model` 和 `/model` 覆盖 `ANTHROPIC_MODEL`,而 `CLAUDE_CODE_EFFORT_LEVEL` 覆盖 `--effort` 和 `/effort`。当变量与另一个配置源交互时,[变量](#variables) 列表中的其行说明优先级或链接到记录它的页面。

122 126 

123Claude Code 在启动时读取 shell 环境变量,因此对它们的更改在您下次启动 `claude` 时生效。在设置文件中 `env` 键下设置的变量在文件更改时重新应用到运行中的会话,但 [在设置文件中](#in-settings-files) 描述的仅启动时例外除外。127Claude Code 在启动时读取 shell 环境变量,因此对它们的更改在您下次启动 `claude` 时生效。在设置文件中 `env` 键下设置的变量在文件更改时重新应用到运行中的会话,但 [在设置文件中设置变量](#in-settings-files) 中描述的仅启动时例外除外。

124 128 

125<h2 id="variables">129<h2 id="variables">

126 变量130 变量

127</h2>131</h2>

128 132 

129超时时间、token 预算和重试次数等数值变量除了接受纯数字外,还接受科学计数法和带数字分隔符的写法,但在变量所在行注明仅接受纯数字的情况除外。例如,Claude Code 会将 `2e3` 读取为 2000,将 `64_000` 读取为 64000。在 v2.1.211 之前,这些写法可能会在不提示的情况下设置一个小得多的值,例如 `1e6` 会将超时时间设置为 1。133数值型变量(例如超时时间、token 预算和重试次数)除了接受纯数字外,还接受科学计数法和数字分隔符写法,除非某个变量所在行注明仅接受纯数字。例如,Claude Code 会将 `2e3` 读取为 2000,将 `64_000` 读取为 64000。在 v2.1.211 之前,这些写法可能会静默地设置一个小得多的值,例如 `1e6` 会将超时时间设置为 1。

130 134 

131<Note>135<Note>

132 对于启用或关闭某项行为的变量,设置为 `1`、`true`、`yes` 或 `on` 即可启用,设置为 `0`、`false`、`no` 或 `off` 即可关闭,不区分大小写。136 对于启用或关闭某项行为的变量,设置为 `1`、`true`、`yes` 或 `on` 即可启用,设置为 `0`、`false`、`no` 或 `off` 即可关闭,不区分大小写。

133 137 

134 有些变量只检查是否设置了它们,因此任何非空值(包括 `0`)都会启用该行为,要关闭该行为,需要取消设置该变量或将其设置为空值。以下变量按这种方式工作:138 某些变量只读取您是否设置了它们,因此任何非空值(包括 `0`)都会启用该行为;要关闭该行为,请取消设置该变量或将其设置为空值。以下变量按这种方式工作:

135 139 

136 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`140 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

137 * `DISABLE_TELEMETRY`141 * `DISABLE_TELEMETRY`


140 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`144 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`

141 * `IS_DEMO`145 * `IS_DEMO`

142 146 

143 还有一个变量有其自身的规则:`FORCE_HYPERLINK` 读取的是数字,因此只有 `0` 会关闭它。每个变量所在行也会说明其自身的规则。147 另有一个变量有其自己的规则:`FORCE_HYPERLINK` 读取一个数字,因此只有 `0` 会将其关闭。每个变量所在行也会说明其自身的规则。

144</Note>148</Note>

145 149 

146| 变量 | 用途 |150| 变量 | 用途 |

147| :- | :- |151| :- | :- |

148| `ANTHROPIC_API_KEY` | 作为 `X-Api-Key` 标头发送的 API 密钥。设置后,即使您已登录,也会使用此密钥,而不是您的 Claude Pro、Max、Team 或 Enterprise 订阅。在非交互模式(`-p`)下,只要存在该密钥就始终会使用它。在交互模式下,系统会在该密钥覆盖您的订阅之前提示您批准一次。若要改用您的订阅,请运行 `unset ANTHROPIC_API_KEY` |152| `ANTHROPIC_API_KEY` | 作为 `X-Api-Key` 标头发送的 API 密钥。设置后,即使您已登录,也会使用此密钥,而不是您的 Claude Pro、Max、Team 或 Enterprise 订阅。在非交互模式(`-p`)下,只要存在该密钥就始终使用。在交互模式下,系统会提示您批准该密钥一次,之后它才会覆盖您的订阅。若要改用您的订阅,请运行 `unset ANTHROPIC_API_KEY` |

149| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 标头的自定义值(您在此处设置的值会加上 `Bearer ` 前缀) |153| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 标头的自定义值(您在此设置的值将以 `Bearer ` 为前缀) |

150| `ANTHROPIC_AWS_API_KEY` | [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的工作区 API 密钥,在 AWS Console 中生成。作为 `x-api-key` 发送,优先于 AWS SigV4 |154| `ANTHROPIC_AWS_API_KEY` | 用于 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的工作区 API 密钥,在 AWS Console 中生成。作为 `x-api-key` 发送,优先于 AWS SigV4 |

151| `ANTHROPIC_AWS_BASE_URL` | 覆盖 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 端点 URL。用于自定义区域或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。默认为 `https://aws-external-anthropic.{region}.api.aws`。Claude Code 按[与 Amazon Bedrock 相同的优先级](/docs/zh-CN/amazon-bedrock#3-configure-claude-code)解析区域 |155| `ANTHROPIC_AWS_BASE_URL` | 覆盖 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 端点 URL。用于自定义区域或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。默认为 `https://aws-external-anthropic.{region}.api.aws`。Claude Code 按照[与 Amazon Bedrock 相同的优先级](/docs/zh-CN/amazon-bedrock#3-configure-claude-code)解析区域 |

152| `ANTHROPIC_AWS_WORKSPACE_ID` | [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 必需。在每个请求中作为 `anthropic-workspace-id` 标头发送 |156| `ANTHROPIC_AWS_WORKSPACE_ID` | [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 必需。在每个请求中作为 `anthropic-workspace-id` 标头发送 |

153| `ANTHROPIC_BASE_URL` | 覆盖 API 端点,以便通过代理或网关路由请求。当设置为非第一方主机时,默认禁用 [MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)。如果您的代理会转发 `tool_reference` 块,请设置 `ENABLE_TOOL_SEARCH=true`。从 v2.1.196 起,当此变量指向 `api.anthropic.com` 以外的主机时,[Remote Control](/docs/zh-CN/remote-control#requirements) 会被禁用,与其在 Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 上的行为一致 |157| `ANTHROPIC_BASE_URL` | 覆盖 API 端点,以通过代理或网关路由请求。当设置为非第一方主机时,[MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)默认禁用。如果您的代理会转发 `tool_reference` 块,请设置 `ENABLE_TOOL_SEARCH=true`。自 v2.1.196 起,当此变量指向 `api.anthropic.com` 以外的主机时,[Remote Control](/docs/zh-CN/remote-control#requirements) 会被禁用,与其在 Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 上的行为一致 |

154| `ANTHROPIC_BEDROCK_BASE_URL` | 覆盖 Amazon Bedrock 端点 URL。用于自定义 Amazon Bedrock 端点或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) |158| `ANTHROPIC_BEDROCK_BASE_URL` | 覆盖 Amazon Bedrock 端点 URL。用于自定义 Amazon Bedrock 端点或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) |

155| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | 覆盖 Amazon Bedrock Mantle 端点 URL。请参阅 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint) |159| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | 覆盖 Amazon Bedrock Mantle 端点 URL。请参阅 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint) |

156| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Claude Code 优先尝试的跨区域推理配置文件前缀(`us`、`eu`、`apac`、`jp`、`au` 或 `global`),而不是根据 AWS 区域推导出的前缀。在 AWS GovCloud 区域中会被忽略。需要 Claude Code v2.1.224 或更高版本。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#cross-region-inference-profile-prefixes) |160| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Claude Code 优先尝试的跨区域推理配置文件前缀(`us`、`eu`、`apac`、`jp`、`au` 或 `global`),而不是根据 AWS 区域推导出的前缀。在 AWS GovCloud 区域中会被忽略。需要 Claude Code v2.1.224 或更高版本。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#cross-region-inference-profile-prefixes) |

157| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Amazon Bedrock [服务层级](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html)(`default`、`flex` 或 `priority`)。作为 `X-Amzn-Bedrock-Service-Tier` 标头发送。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#service-tiers) |161| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Amazon Bedrock [服务层级](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html)(`default`、`flex` 或 `priority`)。作为 `X-Amzn-Bedrock-Service-Tier` 标头发送。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#service-tiers) |

158| `ANTHROPIC_BETAS` | 以逗号分隔的额外 `anthropic-beta` 标头值列表,会包含在 API 请求中。Claude Code 已经会发送其所需的 beta 标头;可使用此变量在 Claude Code 添加原生支持之前选择加入某个 [Anthropic API beta](https://platform.claude.com/docs/en/api/beta-headers)。与需要 API 密钥身份验证的 [`--betas` 标志](/docs/zh-CN/cli-reference#cli-flags)不同,此变量适用于所有身份验证方式,包括 Claude.ai 订阅 |162| `ANTHROPIC_BETAS` | 要包含在 API 请求中的额外 `anthropic-beta` 标头值的逗号分隔列表。Claude Code 已经会发送其所需的 beta 标头;使用此变量可在 Claude Code 添加原生支持之前选择启用某个 [Anthropic API beta](https://platform.claude.com/docs/en/api/beta-headers)。与需要 API 密钥身份验证的 [`--betas` 标志](/docs/zh-CN/cli-reference#cli-flags)不同,此变量适用于所有身份验证方式,包括 Claude.ai 订阅 |

159| `ANTHROPIC_CUSTOM_HEADERS` | 要添加到请求中的自定义标头(`Name: Value` 格式,多个标头以换行分隔)。如果名称或值包含 HTTP 标头无法承载的字符,例如弯引号或零宽空格,请求会失败,并给出按位置标识该键值对的错误。需要 Claude Code v2.1.227 或更高版本。[Invalid request header value](/docs/zh-CN/errors#invalid-request-header-value) 列出了确切的字符集以及检查的运行位置。设置凭据、组织或租户、路由或 API 行为标头(例如 `Authorization` 或 `Host`)的值,在由服务器托管设置下发时,属于[需要批准的设置](/docs/zh-CN/server-managed-settings#environment-variables-and-the-approval-dialog)。来自项目或本地设置时,此类值遵循[何时应用 `env` 值的规则](/docs/zh-CN/settings-reference#when-claude-code-applies-env-values) |163| `ANTHROPIC_CUSTOM_HEADERS` | 要添加到请求中的自定义标头(`Name: Value` 格式,多个标头以换行分隔)。如果名称或值包含 HTTP 标头无法承载的字符(例如弯引号或零宽空格),请求将失败,并返回按位置标识该名称/值对的错误。需要 Claude Code v2.1.227 或更高版本。[Invalid request header value](/docs/zh-CN/errors#invalid-request-header-value) 列出了确切的字符集以及检查的运行位置。当服务器托管设置下发时,设置凭据、组织或租户、路由或 API 行为标头(例如 `Authorization` 或 `Host`)的值会被视为[需要批准的设置](/docs/zh-CN/server-managed-settings#environment-variables-and-the-approval-dialog)。来自项目或本地设置时,此类值遵循 [`env` 值何时生效的规则](/docs/zh-CN/settings-reference#when-claude-code-applies-env-values) |

160| `ANTHROPIC_CUSTOM_MODEL_OPTION` | 要在 `/model` 选择器中添加为自定义条目的模型 ID。使用此变量可以让非标准模型或网关专用模型变为可选,而无需替换内置别名。请参阅[模型配置](/docs/zh-CN/model-config#add-a-custom-model-option) |164| `ANTHROPIC_CUSTOM_MODEL_OPTION` | 要作为自定义条目添加到 `/model` 选择器中的模型 ID。使用此变量可使非标准或网关特定的模型可供选择,而无需替换内置别名。请参阅[模型配置](/docs/zh-CN/model-config#add-a-custom-model-option) |

161| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | `/model` 选择器中自定义模型条目的显示描述。未设置时默认为 `Custom model (<model-id>)` |165| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | `/model` 选择器中自定义模型条目的显示描述。未设置时默认为 `Custom model (<model-id>)` |

162| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | `/model` 选择器中自定义模型条目的显示名称。未设置时,如果 Claude Code [能识别该 ID](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities),条目会显示模型名称,否则显示模型 ID |166| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | `/model` 选择器中自定义模型条目的显示名称。未设置时,如果 Claude Code [识别该 ID](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities),条目将显示模型名称,否则显示模型 ID |

163| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | 以逗号分隔的自定义模型所支持的[能力](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |167| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | 自定义模型支持的[功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)的逗号分隔列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

164| `ANTHROPIC_DEFAULT_FABLE_MODEL` | `fable` 别名解析到的模型 ID,也是 Claude Code 在第三方提供商上进行[自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback)时识别为 Fable 模型的 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |168| `ANTHROPIC_DEFAULT_FABLE_MODEL` | `fable` 别名解析到的模型 ID,也是 Claude Code 在第三方提供商上为[自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback)识别为 Fable 模型的 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | `/model` 选择器中固定 Fable 模型的显示描述。未设置时,该行显示以 `Custom Fable model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |169| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | `/model` 选择器中固定的 Fable 模型的显示描述。未设置时,该行显示以 `Custom Fable model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

166| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | `/model` 选择器中固定 Fable 模型的显示名称。未设置时,如果 Claude Code 能识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |170| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | `/model` 选择器中固定的 Fable 模型的显示名称。未设置时,如果 Claude Code 识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

167| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | 以逗号分隔的固定 Fable 模型所支持的[能力](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |171| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | 固定的 Fable 模型支持的[功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)的逗号分隔列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

168| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | `haiku` 别名解析到的模型 ID,也用于[后台功能](/docs/zh-CN/costs#background-token-usage)。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |172| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | `haiku` 别名解析到的模型 ID,也用于[后台功能](/docs/zh-CN/costs#background-token-usage)。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | `/model` 选择器中固定 Haiku 模型的显示描述。未设置时,该行显示以 `Custom Haiku model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |173| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | `/model` 选择器中固定的 Haiku 模型的显示描述。未设置时,该行显示以 `Custom Haiku model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

170| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | `/model` 选择器中固定 Haiku 模型的显示名称。未设置时,如果 Claude Code 能识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |174| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | `/model` 选择器中固定的 Haiku 模型的显示名称。未设置时,如果 Claude Code 识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

171| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | 以逗号分隔的固定 Haiku 模型所支持的[能力](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |175| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | 固定的 Haiku 模型支持的[功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)的逗号分隔列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

172| `ANTHROPIC_DEFAULT_MODEL` | 新会话默认启动时使用的模型。需要 Claude Code v2.1.236 或更高版本。请参阅[为新会话设置默认模型](/docs/zh-CN/model-config#set-a-default-model-for-new-sessions) |176| `ANTHROPIC_DEFAULT_MODEL` | 新会话默认使用的模型。需要 Claude Code v2.1.236 或更高版本。请参阅[为新会话设置默认模型](/docs/zh-CN/model-config#set-a-default-model-for-new-sessions) |

173| `ANTHROPIC_DEFAULT_OPUS_MODEL` | `opus` 别名解析到的模型 ID,也是 `opusplan` 在计划模式激活时使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |177| `ANTHROPIC_DEFAULT_OPUS_MODEL` | `opus` 别名解析到的模型 ID,也是 `opusplan` 在计划模式激活时使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

174| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | `/model` 选择器中固定 Opus 模型的显示描述。未设置时,该行显示以 `Custom Opus model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |178| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | `/model` 选择器中固定的 Opus 模型的显示描述。未设置时,该行显示以 `Custom Opus model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

175| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | `/model` 选择器中固定 Opus 模型的显示名称。未设置时,如果 Claude Code 能识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |179| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | `/model` 选择器中固定的 Opus 模型的显示名称。未设置时,如果 Claude Code 识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

176| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | 以逗号分隔的固定 Opus 模型所支持的[能力](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |180| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | 固定的 Opus 模型支持的[功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)的逗号分隔列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

177| `ANTHROPIC_DEFAULT_SONNET_MODEL` | `sonnet` 别名解析到的模型 ID,也是 `opusplan` 在计划模式未激活时使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |181| `ANTHROPIC_DEFAULT_SONNET_MODEL` | `sonnet` 别名解析到的模型 ID,也是 `opusplan` 在计划模式未激活时使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

178| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | `/model` 选择器中固定 Sonnet 模型的显示描述。未设置时,该行显示以 `Custom Sonnet model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |182| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | `/model` 选择器中固定的 Sonnet 模型的显示描述。未设置时,该行显示以 `Custom Sonnet model` 开头的默认描述。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

179| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | `/model` 选择器中固定 Sonnet 模型的显示名称。未设置时,如果 Claude Code 能识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |183| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | `/model` 选择器中固定的 Sonnet 模型的显示名称。未设置时,如果 Claude Code 识别固定的 ID,该行显示模型名称,否则显示固定的 ID。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

180| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | 以逗号分隔的固定 Sonnet 模型所支持的[能力](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |184| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | 固定的 Sonnet 模型支持的[功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities)的逗号分隔列表,例如 `effort,thinking`。请参阅[模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |

181| `ANTHROPIC_FEDERATION_RULE_ID` | [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的联合规则 ID。当您将其与 `ANTHROPIC_ORGANIZATION_ID` 一起设置时,Claude Code 会选择联合凭据,其优先级高于您的 `/login` 凭据。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |185| `ANTHROPIC_FEDERATION_RULE_ID` | [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的联合规则 ID。当您将其与 `ANTHROPIC_ORGANIZATION_ID` 一起设置时,Claude Code 会选择联合凭据,其优先级高于您的 `/login` 凭据。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |

182| `ANTHROPIC_FOUNDRY_API_KEY` | 用于 Microsoft Foundry 身份验证的 API 密钥(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |186| `ANTHROPIC_FOUNDRY_API_KEY` | 用于 Microsoft Foundry 身份验证的 API 密钥(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |

183| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | 用于 Microsoft Foundry 身份验证的 Bearer 令牌,例如 Microsoft Entra 访问令牌。Claude Code 将其作为 `Authorization: Bearer` 标头发送。优先于 `ANTHROPIC_FOUNDRY_API_KEY` 和 Azure 默认凭据链。请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)。需要 Claude Code v2.1.203 或更高版本 |187| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | 用于 Microsoft Foundry 身份验证的 Bearer 令牌,例如 Microsoft Entra 访问令牌。Claude Code 将其作为 `Authorization: Bearer` 标头发送。优先于 `ANTHROPIC_FOUNDRY_API_KEY` 和 Azure 默认凭据链。请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)。需要 Claude Code v2.1.203 或更高版本 |

184| `ANTHROPIC_FOUNDRY_BASE_URL` | Microsoft Foundry 资源的完整基础 URL(例如 `https://my-resource.services.ai.azure.com/anthropic`)。可替代 `ANTHROPIC_FOUNDRY_RESOURCE`(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |188| `ANTHROPIC_FOUNDRY_BASE_URL` | Microsoft Foundry 资源的完整基础 URL(例如 `https://my-resource.services.ai.azure.com/anthropic`)。可替代 `ANTHROPIC_FOUNDRY_RESOURCE`(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |

185| `ANTHROPIC_FOUNDRY_RESOURCE` | Microsoft Foundry 资源名称(例如 `my-resource`)。Claude Code [会拒绝 URL 或主机名](/docs/zh-CN/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name)。未设置 `ANTHROPIC_FOUNDRY_BASE_URL` 时必需(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |189| `ANTHROPIC_FOUNDRY_RESOURCE` | Microsoft Foundry 资源名称(例如 `my-resource`)。Claude Code [会拒绝 URL 或主机名](/docs/zh-CN/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name)。如果未设置 `ANTHROPIC_FOUNDRY_BASE_URL`,则为必需(请参阅 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)) |

186| `ANTHROPIC_MODEL` | 要使用的模型设置的名称(请参阅[模型配置](/docs/zh-CN/model-config#environment-variables)) |190| `ANTHROPIC_MODEL` | 要使用的模型设置的名称(请参阅[模型配置](/docs/zh-CN/model-config#environment-variables)) |

187| `ANTHROPIC_ORGANIZATION_ID` | [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的组织 ID。请将其与 `ANTHROPIC_FEDERATION_RULE_ID` 一起设置。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |191| `ANTHROPIC_ORGANIZATION_ID` | [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的组织 ID。请将其与 `ANTHROPIC_FEDERATION_RULE_ID` 一起设置。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |

188| `ANTHROPIC_PROFILE` | 用于身份验证的 Anthropic 配置文件名称,例如由 [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) 创建的配置文件,或通过[在没有 API 密钥的情况下登录 Console 账户](/docs/zh-CN/authentication#sign-in-without-an-api-key)创建的配置文件。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |192| `ANTHROPIC_PROFILE` | 用于身份验证的 Anthropic 配置文件名称,例如由 [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) 创建的配置文件,或通过[在没有 API 密钥的情况下登录 Console 账户](/docs/zh-CN/authentication#sign-in-without-an-api-key)创建的配置文件。请参阅[身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |

189| `ANTHROPIC_SMALL_FAST_MODEL` | \[已弃用] [用于后台任务的 Haiku 级模型](/docs/zh-CN/costs)的名称 |193| `ANTHROPIC_SMALL_FAST_MODEL` | \[已弃用] [用于后台任务的 Haiku 级模型](/docs/zh-CN/costs)的名称 |

190| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | 使用 Amazon Bedrock 或 Amazon Bedrock Mantle 时,覆盖 Haiku 级模型的 AWS 区域。在 Amazon Bedrock 上,只有在同时设置了 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 或已弃用的 `ANTHROPIC_SMALL_FAST_MODEL` 时此变量才会生效,因为否则 Amazon Bedrock 会在会话区域中使用[默认 Sonnet 模型或主模型](/docs/zh-CN/amazon-bedrock#4-pin-model-versions)运行后台任务 |194| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | 使用 Amazon Bedrock 或 Amazon Bedrock Mantle 时,覆盖 Haiku 级模型的 AWS 区域。在 Amazon Bedrock 上,仅当同时设置了 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 或已弃用的 `ANTHROPIC_SMALL_FAST_MODEL` 时才会生效,因为否则 Amazon Bedrock 会在会话区域中使用[默认 Sonnet 模型或主模型](/docs/zh-CN/amazon-bedrock#4-pin-model-versions)运行后台任务 |

191| `ANTHROPIC_VERTEX_BASE_URL` | 覆盖 Google Cloud's Agent Platform 端点 URL。用于自定义 Google Cloud's Agent Platform 端点或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。请参阅 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) |195| `ANTHROPIC_VERTEX_BASE_URL` | 覆盖 Google Cloud's Agent Platform 端点 URL。用于自定义 Google Cloud's Agent Platform 端点或通过 [LLM 网关](/docs/zh-CN/llm-gateway)路由时。请参阅 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) |

192| `ANTHROPIC_VERTEX_PROJECT_ID` | Google Cloud's Agent Platform 请求所指向的 GCP 项目 ID。请参阅[配置 GCP 凭据](/docs/zh-CN/google-vertex-ai#3-configure-gcp-credentials) |196| `ANTHROPIC_VERTEX_PROJECT_ID` | Google Cloud's Agent Platform 请求所指向的 GCP 项目 ID。请参阅[配置 GCP 凭据](/docs/zh-CN/google-vertex-ai#3-configure-gcp-credentials) |

193| `ANTHROPIC_WORKSPACE_ID` | [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的工作区 ID。当您的联合规则的作用范围涵盖多个工作区时设置此变量,以便令牌交换知道要定位到哪个工作区 |197| `ANTHROPIC_WORKSPACE_ID` | [工作负载身份联合](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation)的工作区 ID。当您的联合规则的范围涵盖多个工作区时设置此变量,以便令牌交换知道要定位哪个工作区 |

194| `API_FORCE_IDLE_TIMEOUT` | 覆盖 5 分钟的响应体空闲超时,该超时会在没有字节到达时中止流式模型响应。设置为 `0` 可关闭该超时,例如当缓慢的[网关](/docs/zh-CN/llm-gateway)或本地模型在数据块之间暂停超过 5 分钟时;设置为 `1` 可对所有提供商保持启用。未设置时,该超时在以下提供商之外均处于启用状态:直接 Anthropic API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws),以及设置了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock。[流式监视器](/docs/zh-CN/network-config#streaming-idle-watchdogs)独立于此运行,即使您在此处设置 `0`,它们也会中止长时间的静默暂停 |198| `API_FORCE_IDLE_TIMEOUT` | 覆盖 5 分钟的响应体空闲超时,该超时会在没有字节到达时中止流式模型响应。设置为 `0` 可关闭该超时,例如当缓慢的[网关](/docs/zh-CN/llm-gateway)或本地模型在数据块之间暂停超过 5 分钟时;设置为 `1` 可对所有提供商保持启用。未设置时,该超时在直接 Anthropic API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 以及设置了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock 以外的提供商上处于启用状态。[流式看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs)独立于它运行,即使您在此处设置 `0`,也会中止长时间的静默暂停 |

195| `API_TIMEOUT_MS` | API 请求的超时时间,以毫秒为单位(默认值:600000,即 10 分钟;最大值:2147483647)。在慢速网络上请求超时或通过代理路由时,请增大此值。超过最大值的值会使底层计时器溢出,导致请求立即失败 |199| `API_TIMEOUT_MS` | API 请求的超时时间,以毫秒为单位(默认值:600000,即 10 分钟;最大值:2147483647)。当请求在慢速网络上超时或通过代理路由时,请增大此值。超过最大值的值会使底层计时器溢出,导致请求立即失败 |

196| `AWS_BEARER_TOKEN_BEDROCK` | 用于身份验证的 Amazon Bedrock API 密钥(请参阅 [Amazon Bedrock API 密钥](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |200| `AWS_BEARER_TOKEN_BEDROCK` | 用于身份验证的 Amazon Bedrock API 密钥(请参阅 [Amazon Bedrock API 密钥](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

197| `BASH_DEFAULT_TIMEOUT_MS` | 前台 Bash 或 PowerShell 工具命令的默认超时时间,以毫秒为单位(默认值:120000,即 2 分钟)。高于[后台命令默认时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的值会在无人值守的会话中替换该默认值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |201| `BASH_DEFAULT_TIMEOUT_MS` | 前台 Bash 或 PowerShell 工具命令的默认超时时间,以毫秒为单位(默认值:120000,即 2 分钟)。高于[后台命令默认时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的值会在无人值守会话中替换该默认值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |

198| `BASH_MAX_OUTPUT_LENGTH` | Claude Code 读回命令结果中的 bash 输出的最大字符数(默认值:30000;最大值:150000)。如果您设置了 [`bashOutputMaxChars`](/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,Claude Code 会忽略此变量。请参阅[输出限制](/docs/zh-CN/tools-reference#output-limits) |202| `BASH_MAX_OUTPUT_LENGTH` | Claude Code 读回到命令结果中的 bash 输出的最大字符数(默认值:30000;最大值:150000)。如果您设置了 [`bashOutputMaxChars`](/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,Claude Code 会忽略此变量。请参阅[输出限制](/docs/zh-CN/tools-reference#output-limits) |

199| `BASH_MAX_TIMEOUT_MS` | 模型可以为前台 Bash 或 PowerShell 工具命令设置的最大超时时间,以毫秒为单位(默认值:600000,即 10 分钟)。有效上限取此值与 `BASH_DEFAULT_TIMEOUT_MS` 中的较大者。超过 2 小时的有效上限还会成为无人值守会话中[后台命令时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的最大值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |203| `BASH_MAX_TIMEOUT_MS` | 模型可为前台 Bash 或 PowerShell 工具命令设置的最大超时时间,以毫秒为单位(默认值:600000,即 10 分钟)。有效上限取此值与 `BASH_DEFAULT_TIMEOUT_MS` 中的较大者。超过 2 小时的有效上限也会成为无人值守会话中[后台命令时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的最大值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |

200| `BETA_TRACING_ENDPOINT` | 用于[详细 beta 追踪](/docs/zh-CN/monitoring-usage#traces-beta)的 OTLP/HTTP 端点:设置 `ENABLE_BETA_TRACING_DETAILED=1` 后,日志和追踪会发送到该端点,而不是发送到已配置的导出器。请在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |204| `BETA_TRACING_ENDPOINT` | 用于[详细 beta 追踪](/docs/zh-CN/monitoring-usage#traces-beta)的 OTLP/HTTP 端点:设置 `ENABLE_BETA_TRACING_DETAILED=1` 时,日志和追踪会发送到该端点,而不是已配置的导出器。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |

201| `CCR_FORCE_BUNDLE` | 设置为 `1` 可强制 [`claude --cloud`](/docs/zh-CN/claude-code-on-the-web#send-local-repositories-without-github) 打包并上传您的本地仓库,而不是从其远程仓库克隆 |205| `CCR_FORCE_BUNDLE` | 设置为 `1` 可强制 [`claude --cloud`](/docs/zh-CN/claude-code-on-the-web#send-local-repositories-without-github) 打包并上传您的本地仓库,而不是从其远程克隆 |

202| `CLAUDECODE` | 在 Claude Code 生成的子进程(Bash 和 PowerShell 工具、tmux 会话、[hook](/docs/zh-CN/hooks) 命令、[状态栏](/docs/zh-CN/statusline)命令、stdio [MCP 服务器](/docs/zh-CN/mcp)子进程)中设置为 `1`。IDE 扩展也会在其集成终端中设置此变量。用于检测脚本是否在 Claude Code 生成的子进程中运行。若要检查当前进程是否由工具调用或 hook 直接生成,而不是在 Claude Code 启动的 stdio MCP 服务器内部,请改用 `CLAUDE_CODE_CHILD_SESSION` |206| `CLAUDECODE` | 在 Claude Code 生成的子进程(Bash 和 PowerShell 工具、tmux 会话、[hook](/docs/zh-CN/hooks) 命令、[状态栏](/docs/zh-CN/statusline)命令、stdio [MCP 服务器](/docs/zh-CN/mcp)子进程)中设置为 `1`。IDE 扩展也会在其集成终端中设置此变量。用于检测脚本是否在 Claude Code 生成的子进程中运行。若要检查当前进程是否由工具调用或 hook 直接生成,而不是在 Claude Code 启动的 stdio MCP 服务器内部,请改用 `CLAUDE_CODE_CHILD_SESSION` |

203| `CLAUDE_AFK_COUNTDOWN_MS` | 在未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框自动继续之前,屏幕倒计时提前多少毫秒出现。默认值为 `20000`(20 秒),上限为自动继续超时时间。除非启用了自动继续,否则不起作用;请参阅 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置和 `CLAUDE_AFK_TIMEOUT_MS`。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。需要 Claude Code v2.1.198 或更高版本 |207| `CLAUDE_AFK_COUNTDOWN_MS` | 未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框在自动继续前多少毫秒显示屏幕倒计时。默认 `20000`(20 秒),上限为自动继续超时时间。除非启用了自动继续,否则不起作用;请参阅 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置和 `CLAUDE_AFK_TIMEOUT_MS`。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。需要 Claude Code v2.1.198 或更高版本 |

204| `CLAUDE_AFK_TIMEOUT_MS` | 未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框在空闲多少毫秒后无需您参与即自动继续。自动继续默认关闭;可通过 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置选择启用。此变量是用于演示和自动化测试的覆盖项:设置后,它优先于该设置,即使该设置未设置或为 `never`,也会启用自动继续。设置为 `0` 不会关闭超时,而是会立即关闭对话框。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。在 v2.1.200 之前,自动继续默认启用,超时时间为 `60000`(60 秒)。需要 Claude Code v2.1.198 或更高版本 |208| `CLAUDE_AFK_TIMEOUT_MS` | 未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框在空闲多少毫秒后无需您参与即自动继续。自动继续默认关闭;可通过 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置选择启用。此变量是用于演示和自动化测试的覆盖项:设置后,它优先于该设置,即使该设置未设置或为 `never`,也会启用自动继续。设置 `0` 不会关闭超时,而是会立即关闭对话框。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。在 v2.1.200 之前,自动继续默认启用,超时时间为 `60000`(60 秒)。需要 Claude Code v2.1.198 或更高版本 |

205| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 设置为 `1` 可禁用所有内置[子代理](/docs/zh-CN/sub-agents)类型,例如 Explore 和 Plan。仅适用于非交互模式(`-p` 标志)。适用于希望从空白状态开始的 SDK 用户。这还会移除 `general-purpose`,即 Agent 工具调用省略 `subagent_type` 时 Claude Code 运行的子代理。此后此类调用会失败并报错 [`subagent_type is required`](/docs/zh-CN/errors#subagent-type-is-required) |209| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 设置为 `1` 可禁用所有内置[子代理](/docs/zh-CN/sub-agents)类型,例如 Explore 和 Plan。仅适用于非交互模式(`-p` 标志)。适用于希望从空白状态开始的 SDK 用户。这也会移除 `general-purpose`,即当 Agent 工具调用省略 `subagent_type` 时 Claude Code 运行的子代理。此类调用随后会失败并显示 [`subagent_type is required`](/docs/zh-CN/errors#subagent-type-is-required) |

206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 设置为 `1` 可跳过 SDK 创建的 MCP 服务器中工具名称的 `mcp__<server>__` 前缀。工具使用其原始名称。仅限 SDK 使用 |210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 设置为 `1` 可跳过 SDK 创建的 MCP 服务器中工具名称的 `mcp__<server>__` 前缀。工具使用其原始名称。仅限 SDK 使用 |

207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 子代理的停滞超时时间,以毫秒为单位。默认值为 `600000`(10 分钟);如果您在流式监视器启用时提高了 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,默认值也会随之提高,详见[处理缓慢或停滞的 API 响应](/docs/zh-CN/agent-sdk/typescript#handle-slow-or-stalled-api-responses)。计时器会在每个流式进度事件时重置;如果在该时间窗口内没有进度到达,Claude Code 会中止该子代理并向父级报告停滞 |211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 子代理的停滞超时时间,以毫秒为单位。在 Claude Code v2.1.286 或更高版本上也涵盖[工作流 Agent](/docs/zh-CN/workflows#when-an-agent-stalls-and-restarts)。默认 `600000`(10 分钟);如果您在流式看门狗开启时提高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,默认值会随之提高,如[处理缓慢或停滞的 API 响应](/docs/zh-CN/agent-sdk/typescript#handle-slow-or-stalled-api-responses)所述 |

208| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 设置触发自动压缩时自动压缩窗口的百分比(1-100)。使用较低的值(如 `50`)可以更早压缩;该变量无法提高阈值,因此高于默认百分比的值会被忽略。它仅适用于[在达到模型上下文限制之前进行压缩](/docs/zh-CN/model-config#context-window-and-auto-compaction)的会话。同时适用于主对话和子代理 |212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 设置触发自动压缩时自动压缩窗口的百分比(1-100)。使用较低的值(如 `50`)可更早压缩;该变量无法提高阈值,因此高于默认百分比的值会被忽略。它仅适用于[在达到模型上下文限制之前进行压缩](/docs/zh-CN/model-config#context-window-and-auto-compaction)的会话。同时适用于主对话和子代理 |

209| `CLAUDE_AUTO_BACKGROUND_TASKS` | 设置为 `1` 可强制启用长时间运行的 Agent 任务的自动后台化。启用后,子代理运行约两分钟后会被移至后台。在 Claude Code v2.1.212 或更高版本中,还会在非交互模式下启用[长时间 MCP 工具调用的自动后台化](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls) |213| `CLAUDE_AUTO_BACKGROUND_TASKS` | 设置为 `1` 可强制启用长时间运行的 Agent 任务的自动后台化。启用后,子代理在运行约两分钟后会被移至后台。在 Claude Code v2.1.212 或更高版本上,还会在非交互模式下启用[长时间 MCP 工具调用的自动后台化](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls) |

210| `CLAUDE_AX_PREPARK_MS` | 在[屏幕阅读器模式](/docs/zh-CN/accessibility)下,Claude Code 在写入新行或已更改的行之前等待的毫秒数。默认值为 `0`,因此 Claude Code 不会等待。在 v2.1.287 之前,默认值为 `50`。Claude Code 将等待上限设为 `5000`。需要 Claude Code v2.1.233 或更高版本 |214| `CLAUDE_AX_PREPARK_MS` | 在[屏幕阅读器模式](/docs/zh-CN/accessibility)下,Claude Code 在写入新行或已更改的行之前等待的毫秒数。默认 `0`,因此 Claude Code 不会等待。在 v2.1.287 之前,默认值为 `50`。Claude Code 将等待时间上限设为 `5000`。需要 Claude Code v2.1.233 或更高版本 |

211| `CLAUDE_AX_SCREEN_READER` | 设置为 `1` 可呈现对屏幕阅读器友好的输出:不带装饰性边框或动画的纯文本。设置为 `0` 可强制关闭屏幕阅读器模式,即使 [`axScreenReader`](/docs/zh-CN/settings-reference#axscreenreader) 为 `true`。[`--ax-screen-reader`](/docs/zh-CN/cli-reference#cli-flags) 标志优先。需要 Claude Code v2.1.181 或更高版本 |215| `CLAUDE_AX_SCREEN_READER` | 设置为 `1` 可渲染适合屏幕阅读器的输出:不带装饰性边框或动画的纯文本。设置为 `0` 可强制关闭屏幕阅读器模式,即使 [`axScreenReader`](/docs/zh-CN/settings-reference#axscreenreader) 为 `true`。[`--ax-screen-reader`](/docs/zh-CN/cli-reference#cli-flags) 标志优先。需要 Claude Code v2.1.181 或更高版本 |

212| `CLAUDE_AX_STARTUP_QUIET_MS` | 在[屏幕阅读器模式](/docs/zh-CN/accessibility)下,Claude Code 在启动确认行之后推迟首次界面渲染的毫秒数,以便您的屏幕阅读器在新输出打断之前完整朗读该行。默认值为 `3000`。设置为 `0` 可立即渲染。Claude Code 将推迟时间上限设为 `600000`(10 分钟)。您的第一次按键会提前结束推迟。需要 Claude Code v2.1.217 或更高版本 |216| `CLAUDE_AX_STARTUP_QUIET_MS` | 在[屏幕阅读器模式](/docs/zh-CN/accessibility)下,Claude Code 在启动确认行之后暂缓首次界面渲染的毫秒数,以便您的屏幕阅读器在新输出打断之前完整朗读该行。默认 `3000`。设置 `0` 可立即渲染。Claude Code 将暂缓时间上限设为 `600000`(10 分钟)。您的第一次按键会提前结束暂缓。需要 Claude Code v2.1.217 或更高版本 |

213| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主会话中每个 Bash 或 PowerShell 命令执行后返回原始工作目录 |217| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主会话中每个 Bash 或 PowerShell 命令执行后返回原始工作目录 |

214| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | 字节级流式空闲监视器的超时时间,以毫秒为单位;设置后,对于该监视器,它优先于 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,并且不改变事件级监视器。Claude Code 将此变量限制在 10 秒到 30 分钟之间。需要 Claude Code v2.1.210 或更高版本 |218| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | 字节级流式空闲看门狗的超时时间,以毫秒为单位;设置后,它在该看门狗上优先于 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`,且不改变事件级看门狗。Claude Code 会将此变量限制在 10 秒到 30 分钟之间。需要 Claude Code v2.1.210 或更高版本 |

215| `CLAUDE_CLIENT_PRESENCE_FILE` | 一个文件的路径,由外部工具(例如屏幕锁定监听器)在您解锁屏幕时创建、在您锁定屏幕时删除。当该文件存在时,Claude Code 会跳过 [Remote Control 移动推送通知](/docs/zh-CN/remote-control#mobile-push-notifications),这样您在积极使用计算机时就不会收到推送。当该文件不存在或无法读取时,通知会照常发送。Claude Code 在每次触发推送的事件时检查该文件一次,而不是轮询它。需要 Claude Code v2.1.181 或更高版本 |219| `CLAUDE_CLIENT_PRESENCE_FILE` | 一个文件的路径,该文件由外部工具(例如锁屏监听器)在您解锁屏幕时创建、在您锁定屏幕时删除。当该文件存在时,Claude Code 会跳过 [Remote Control 移动推送通知](/docs/zh-CN/remote-control#mobile-push-notifications),这样您在积极使用电脑时就不会收到推送。当该文件不存在或不可读时,通知会照常发送。Claude Code 在每次触发推送的事件发生时检查一次该文件,而不是轮询它。需要 Claude Code v2.1.181 或更高版本 |

216| `CLAUDE_CODE_ACCESSIBILITY` | 设置为 `1` 可保持原生终端光标可见,并禁用反色文本光标指示器。这使 macOS Zoom 等屏幕放大器能够跟踪光标位置 |220| `CLAUDE_CODE_ACCESSIBILITY` | 设置为 `1` 可保持原生终端光标可见,并禁用反色文本光标指示器。使 macOS 缩放等屏幕放大工具能够跟踪光标位置 |

217| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | 设置为 `1` 可从通过 `--add-dir` 指定的目录加载记忆文件。会加载 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。默认情况下,附加目录不会加载记忆文件 |221| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | 设置为 `1` 可从通过 `--add-dir` 指定的目录加载记忆文件。加载 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。默认情况下,附加目录不会加载记忆文件 |

218| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中每一帧都重绘整个屏幕,而不是发送增量更新。如果全屏模式显示过时或错位的文本片段,请使用此变量。在 Windows 上,Claude Code 会为后台会话和 [Agent 视图](/docs/zh-CN/agent-view)自动启用此功能 |222| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中每帧重绘整个屏幕,而不是发送增量更新。如果全屏模式显示过时或错位的文本片段,请使用此变量。在 Windows 上,Claude Code 会为后台会话和 [Agent 视图](/docs/zh-CN/agent-view)自动启用此功能 |

219| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | 设置为 `1` 可在每个请求中发送 [effort](/docs/zh-CN/model-config#adjust-effort-level) 参数,即使 Claude Code 未将该模型 ID 识别为支持 effort。当通过以自定义标识符提供模型的 [LLM 网关](/docs/zh-CN/llm-gateway)或第三方提供商路由时,请使用此变量。在 API 层面拒绝 effort 参数的模型(包括 Claude 3 模型、Sonnet 4.0 和 4.5、Opus 4.0 和 4.1 以及 Haiku 4.5)仍会被排除,因此请求不会失败 |223| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | 设置为 `1` 可在每个请求中发送 [effort](/docs/zh-CN/model-config#adjust-effort-level) 参数,即使 Claude Code 未将该模型 ID 识别为支持 effort。在通过 [LLM 网关](/docs/zh-CN/llm-gateway)或以自定义标识符提供模型的第三方提供商路由时使用。在 API 层面拒绝 effort 参数的模型(包括 Claude 3 模型、Sonnet 4.0 和 4.5、Opus 4.0 和 4.1 以及 Haiku 4.5)仍会被排除,以免请求失败 |

220| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 刷新凭据的间隔,以毫秒为单位(使用 [`apiKeyHelper`](/docs/zh-CN/settings-reference#apikeyhelper) 时) |224| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 刷新凭据的时间间隔,以毫秒为单位(使用 [`apiKeyHelper`](/docs/zh-CN/settings-reference#apikeyhelper) 时) |

221| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | 设置为 `0` 可阻止 Claude Code 在发布新的 [Artifact](/docs/zh-CN/artifacts#create-an-artifact) 时自动打开浏览器 |225| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | 设置为 `0` 可阻止 Claude Code 在发布新的 [Artifact](/docs/zh-CN/artifacts#create-an-artifact) 时自动打开浏览器 |

222| `CLAUDE_CODE_ARTIFACT_COMMENTS` | 设置为 `0` 可阻止 Claude 读取和回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)。当 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 已[关闭 Artifact](/docs/zh-CN/artifacts#availability) 时不起作用。需要 Claude Code v2.1.221 或更高版本 |226| `CLAUDE_CODE_ARTIFACT_COMMENTS` | 设置为 `0` 可阻止 Claude 读取和回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)。当 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 已[关闭 Artifact](/docs/zh-CN/artifacts#availability) 时不起作用。需要 Claude Code v2.1.221 或更高版本 |

223| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | 设置为 `0` 可阻止 Claude [自行回复发送给它的评论](/docs/zh-CN/artifacts#let-claude-reply-to-comments-on-its-own)。需要 Claude Code v2.1.228 或更高版本 |227| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | 设置为 `0` 可阻止 Claude [自行回复发送给它的评论](/docs/zh-CN/artifacts#let-claude-reply-to-comments-on-its-own)。需要 Claude Code v2.1.228 或更高版本 |

224| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 设置为 `0` 可从系统提示词开头省略[归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block),该块携带客户端版本和提示词指纹。无论如何设置,直接连接 Anthropic API 时的缓存都不受影响。在某些直接连接的设置中,即使您设置了 `0`,Claude Code 仍会在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器请求中保留该块。请在[系统提示词归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block)中查看这涵盖哪些连接和凭据。在 v2.1.181 之前,该块在自定义基础 URL 和 Microsoft Foundry 连接上包含每个请求的 token,因此在这些版本上,当您的 LLM 网关基于请求体进行缓存或将请求转发给第三方提供商时,或者当您直接连接 Microsoft Foundry 时,请将其设置为 `0` |228| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 设置为 `0` 可从系统提示词开头省略[归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block),该块包含客户端版本和提示词指纹。无论哪种方式,直接连接到 Anthropic API 时的缓存都不受影响。在某些直接连接设置中,即使您设置了 `0`,Claude Code 也会在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器请求中保留该块。请在[系统提示词归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block)中查看此情况涵盖哪些连接和凭据。在 v2.1.181 之前,该块在自定义基础 URL 和 Microsoft Foundry 连接上包含一个按请求变化的 token,因此在这些版本上,当您的 LLM 网关基于请求体进行缓存或将请求转发给第三方提供商时,或者当您直接连接到 Microsoft Foundry 时,请将其设置为 `0` |

225| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 已在 v2.1.283 中移除。请改用 `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` |229| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 已在 v2.1.283 中移除。请改用 `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` |

226| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 以 token 为单位设置[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window),范围为 `100000` 到 `1000000`。仅接受纯整数,例如 `500000`:像 `500k` 这样的值会被读取为 `500`,并被限制到 100K 的最小值。有效窗口还会以模型的上下文窗口为上限。优先于 `/autocompact` 命令、`--autocompact` 标志和 `autoCompactWindow` 设置。状态栏的 `used_percentage` 始终以模型的完整上下文窗口为基准,因此一旦设置了此变量,该百分比就不再表示何时进行压缩 |230| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 以 token 为单位设置[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window),范围为 `100000` 到 `1000000`。仅接受纯整数,例如 `500000`:像 `500k` 这样的值会被读取为 `500`,并被限制为 100K 的最小值。有效窗口的上限还受模型上下文窗口限制。优先于 `/autocompact` 命令、`--autocompact` 标志和 `autoCompactWindow` 设置。状态栏的 `used_percentage` 始终以模型的完整上下文窗口为基准进行衡量,因此一旦设置此变量,该百分比将不再指示何时会运行压缩 |

227| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆盖自动 [IDE 连接](/docs/zh-CN/vs-code)。默认情况下,在受支持 IDE 的集成终端中启动时,Claude Code 会自动连接。设置为 `false` 可阻止此行为。设置为 `true` 可在自动检测失败时(例如 tmux 遮蔽了父终端时)强制尝试连接。优先于 [`autoConnectIde`](/docs/zh-CN/settings-reference#autoconnectide) 全局配置设置 |231| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆盖自动 [IDE 连接](/docs/zh-CN/vs-code)。默认情况下,在受支持 IDE 的集成终端中启动时,Claude Code 会自动连接。设置为 `false` 可阻止此行为。设置为 `true` 可在自动检测失败时强制尝试连接,例如当 tmux 遮蔽了父终端时。优先于 [`autoConnectIde`](/docs/zh-CN/settings-reference#autoconnectide) 全局配置设置 |

228| `CLAUDE_CODE_AUTO_MODE_SERVER` | 控制 Claude Code 是否请求服务器[审查自动模式操作](/docs/zh-CN/permission-modes#server-side-classifier-review)。设置为 `0` 可改用 Claude Code 自身的分类器请求。在直接连接 Anthropic API 时,需要 v2.1.281 或更高版本。链接的章节列出了在该变量未设置时哪些会话会请求服务器,以及从哪个版本开始。需要 Claude Code v2.1.271 或更高版本 |232| `CLAUDE_CODE_AUTO_MODE_SERVER` | 控制 Claude Code 是否请求服务器[审查自动模式操作](/docs/zh-CN/permission-modes#server-side-classifier-review)。设置为 `0` 可改用 Claude Code 自身的分类器请求。在直接连接到 Anthropic API 时,需要 v2.1.281 或更高版本。链接的章节列出了在未设置该变量时哪些会话会请求服务器,以及从哪个版本开始。需要 Claude Code v2.1.271 或更高版本 |

229| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Claude Code 等待 AWS 默认凭据提供程序链生成凭据的时间(以毫秒为单位),超时后请求会失败并报错 [`AWS default-chain credential resolve timed out`](/docs/zh-CN/errors#aws-default-chain-credential-resolve-timed-out)(默认值:`60000`)。当您的凭据链中某个步骤确实需要更长时间时(例如通过 `aws-vault` 等包装器进行带 MFA 的基于浏览器的 SSO 登录),请提高此值。适用于 Amazon Bedrock、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |233| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Claude Code 等待 AWS 默认凭据提供程序链生成凭据的时间(毫秒),超时后请求将失败并显示 [`AWS default-chain credential resolve timed out`](/docs/zh-CN/errors#aws-default-chain-credential-resolve-timed-out)(默认值:`60000`)。当链中的某个步骤确实需要更长时间时(例如通过 `aws-vault` 等包装器进行带 MFA 的基于浏览器的 SSO 登录),请提高此值。适用于 Amazon Bedrock、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |

230| `CLAUDE_CODE_BASH_EDIT_DIFF` | 设置为 `0` 可关闭 [Bash 命令运行期间所更改文件的 diff](/docs/zh-CN/hooks#bash),设置为 `1` 可在每种权限模式下记录它。优先于 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置。需要 Claude Code v2.1.269 或更高版本 |234| `CLAUDE_CODE_BASH_EDIT_DIFF` | 设置为 `0` 可关闭 [Bash 命令运行期间更改的文件的 diff](/docs/zh-CN/hooks#bash),设置为 `1` 可在每种权限模式下记录该 diff。优先于 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置。需要 Claude Code v2.1.269 或更高版本 |

231| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | 设置为 `0` 可使非交互会话在每个轮次结束时向其宿主报告空闲状态,即使后台工作仍在运行。默认情况下,当后台 Agent 或[工作流](/docs/zh-CN/workflows)运行等后台工作仍在进行时,会话在轮次结束后会继续报告运行状态。这可以防止监视该状态的宿主(例如远程会话列表)在工作进行中宣布 Claude 正在等待您的输入。后台 shell 命令(例如开发服务器)不会保持运行状态。运行状态默认行为和 `0` 选择退出需要 Claude Code v2.1.269 或更高版本;在更早的版本上,请设置 `1` 以保持运行状态 |235| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | 设置为 `0` 可使非交互会话在每个轮次结束时向其宿主报告空闲状态,即使后台工作仍在运行。默认情况下,当后台工作(例如后台 Agent 或[工作流](/docs/zh-CN/workflows)运行)仍处于活动状态时,会话在轮次结束后会持续报告运行状态。这可以防止监视该状态的宿主(例如远程会话列表)在工作进行中宣布 Claude 正在等待您的输入。后台 shell 命令(例如开发服务器)不会保持运行状态。运行状态默认行为和 `0` 退出选项需要 Claude Code v2.1.269 或更高版本;在更早的版本上,设置 `1` 可保持运行状态 |

232| `CLAUDE_CODE_BRIDGE_SESSION_ID` | 当会话有活动的 [Remote Control](/docs/zh-CN/remote-control) 连接时,在 Bash 工具和 [hook 命令](/docs/zh-CN/hooks)子进程中自动设置,并在连接结束时移除。其值为 `session_` 形式的会话 ID,与会话的 `claude.ai/code` URL 中出现的标识符相同,因此脚本可以链接回运行它的会话。需要 Claude Code v2.1.199 或更高版本。在[云端会话](/docs/zh-CN/claude-code-on-the-web)中,请改为读取 `CLAUDE_CODE_REMOTE_SESSION_ID` |236| `CLAUDE_CODE_BRIDGE_SESSION_ID` | 当会话具有活动的 [Remote Control](/docs/zh-CN/remote-control) 连接时,在 Bash 工具和 [hook 命令](/docs/zh-CN/hooks)子进程中自动设置,并在连接结束时移除。该值是 `session_` 形式的会话 ID,与会话的 `claude.ai/code` URL 中出现的标识符相同,因此脚本可以链接回运行它的会话。需要 Claude Code v2.1.199 或更高版本。在[云端会话](/docs/zh-CN/claude-code-on-the-web)中,请改为读取 `CLAUDE_CODE_REMOTE_SESSION_ID` |

233| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | 设置为 `0` 可使 Claude Code 将 `0x08` 字节(也写作 `^H`)读取为普通 Backspace,设置为 `1` 可将其读取为 Ctrl+Backspace。任一值都会替换平台默认行为。默认情况下,Claude Code 在 Windows 上将其读取为 Ctrl+Backspace(`TERM_PROGRAM` 为 `mintty` 或 `TERM` 为 `cygwin` 时除外),在 macOS 和 Linux 上将其读取为普通 Backspace。在 [Backspace 会删除整个单词](/docs/zh-CN/terminal-config#fix-backspace-deleting-a-whole-word-on-windows)的 Windows 终端中,请设置为 `0` |237| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | 设置为 `0` 可使 Claude Code 将 `0x08` 字节(也写作 `^H`)读取为普通 Backspace,设置为 `1` 则将其读取为 Ctrl+Backspace。任一值都会替换平台默认值。默认情况下,Claude Code 在 Windows 上将其读取为 Ctrl+Backspace(`TERM_PROGRAM` 为 `mintty` 或 `TERM` 为 `cygwin` 时除外),在 macOS 和 Linux 上将其读取为普通 Backspace。在 [Backspace 会删除整个单词](/docs/zh-CN/terminal-config#fix-backspace-deleting-a-whole-word-on-windows)的 Windows 终端中请设置 `0` |

234| `CLAUDE_CODE_CERT_STORE` | 以逗号分隔的 TLS 连接 CA 证书来源列表。`bundled` 是 Claude Code 附带的 Mozilla CA 集合。`system` 是操作系统信任存储,仅在具有 `tls.getCACertificates` 的运行时上读取:原生二进制文件,或 npm 安装时的 Node 22.15 或更高版本。请参阅 [CA 证书存储](/docs/zh-CN/network-config#ca-certificate-store)。默认值为 `bundled,system` |238| `CLAUDE_CODE_CERT_STORE` | TLS 连接的 CA 证书来源的逗号分隔列表。`bundled` 是随 Claude Code 附带的 Mozilla CA 集。`system` 是操作系统信任存储,仅在具有 `tls.getCACertificates` 的运行时上读取:原生二进制文件,或 npm 安装方式下的 Node 22.15 或更高版本。请参阅 [CA 证书存储](/docs/zh-CN/network-config#ca-certificate-store)。默认为 `bundled,system` |

235| `CLAUDE_CODE_CHILD_SESSION` | 在 Claude Code 通过 Bash、PowerShell 和 Monitor 工具、[hook](/docs/zh-CN/hooks) 命令以及[状态栏](/docs/zh-CN/statusline)命令生成的子进程中设置为 `1`。不会为 stdio [MCP 服务器](/docs/zh-CN/mcp)子进程设置,因为这些子进程是长期存在的,其生命周期超过生成它们的会话。与 `CLAUDECODE` 不同,此变量仅由 Claude Code 本身在启动子进程时设置,IDE 扩展不会设置,因此它能够可靠地区分嵌套会话与在 IDE 集成终端中启动的顶层 `claude`。以这种方式启动的嵌套交互式 `claude` TUI 会自动从 `--resume`、`--continue`、上箭头历史记录和 `claude agents` 列表中排除。非交互式 `claude -p` 会话仍会持久保存。设置 `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` 可覆盖此排除行为。需要 Claude Code v2.1.172 或更高版本 |239| `CLAUDE_CODE_CHILD_SESSION` | 在 Claude Code 通过 Bash、PowerShell 和 Monitor 工具、[hook](/docs/zh-CN/hooks) 命令以及[状态栏](/docs/zh-CN/statusline)命令生成的子进程中设置为 `1`。不会为 stdio [MCP 服务器](/docs/zh-CN/mcp)子进程设置,因为这些子进程长期运行,生命周期长于生成它们的会话。与 `CLAUDECODE` 不同,此变量仅由 Claude Code 本身在启动子进程时设置,而不会由 IDE 扩展设置,因此它能可靠地区分嵌套会话与在 IDE 集成终端中启动的顶层 `claude`。以这种方式启动的嵌套交互式 `claude` TUI 会自动从 `--resume`、`--continue`、上箭头历史记录和 `claude agents` 列表中排除。非交互式 `claude -p` 会话仍会持久化。设置 `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` 可覆盖此排除。需要 Claude Code v2.1.172 或更高版本 |

236| `CLAUDE_CODE_CLIENT_CERT` | 用于 mTLS 身份验证的客户端证书文件路径 |240| `CLAUDE_CODE_CLIENT_CERT` | 用于 mTLS 身份验证的客户端证书文件路径 |

237| `CLAUDE_CODE_CLIENT_KEY` | 用于 mTLS 身份验证的客户端私钥文件路径 |241| `CLAUDE_CODE_CLIENT_KEY` | 用于 mTLS 身份验证的客户端私钥文件路径 |

238| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密的 CLAUDE\_CODE\_CLIENT\_KEY 的密码短语(可选) |242| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密的 CLAUDE\_CODE\_CLIENT\_KEY 的密码(可选) |

239| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 已在 v2.1.186 中移除,现在不起任何作用。以前用于为流式 API 请求的连接、TLS 和响应标头阶段设置单独的超时时间。请使用 `API_TIMEOUT_MS` 设置每个请求的超时时间。关于流式请求的响应标头阶段,请参阅 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |243| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 已在 v2.1.186 中移除,现在不起任何作用。以前用于为流式 API 请求的连接、TLS 和响应标头阶段单独设置超时时间。请使用 `API_TIMEOUT_MS` 设置每个请求的超时时间。有关流式请求的响应标头阶段,请参阅 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

240| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆盖调试日志文件路径。尽管名称如此,这是一个文件路径,而不是目录。需要通过 `--debug`、`/debug` 或 `DEBUG` 环境变量单独启用调试模式:仅设置此变量不会启用日志记录。[`--debug-file`](/docs/zh-CN/cli-reference#cli-flags) 标志可同时完成这两项。默认为 `~/.claude/debug/<session-id>.txt` |244| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆盖调试日志文件路径。尽管名称如此,这是一个文件路径,而不是目录。需要通过 `--debug`、`/debug` 或 `DEBUG` 环境变量单独启用调试模式:仅设置此变量不会启用日志记录。[`--debug-file`](/docs/zh-CN/cli-reference#cli-flags) 标志可同时完成这两项操作。默认为 `~/.claude/debug/<session-id>.txt` |

241| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 写入调试日志文件的最低日志级别。取值:`verbose`、`debug`(默认)、`info`、`warn`、`error`。设置为 `verbose` 可包含大量诊断信息,例如完整的状态栏命令输出;或提高到 `error` 以减少干扰信息 |245| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 写入调试日志文件的最低日志级别。取值:`verbose`、`debug`(默认)、`info`、`warn`、`error`。设置为 `verbose` 可包含大量诊断信息,例如完整的状态栏命令输出;或提高到 `error` 以减少干扰信息 |

242| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 可关闭 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context)支持。Claude Code 会从模型选择器中移除 `[1m]` 模型变体,并将默认以 1M 窗口运行的模型限制为 200K 窗口。请参阅[关闭 1M 上下文](/docs/zh-CN/model-config#turn-off-1m-context)。适用于有合规要求的企业环境。关于它在更正无法识别的 `[1m]` 模型 ID 的窗口方面的作用,请参阅[更正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |246| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 可关闭 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context)支持。Claude Code 会从模型选择器中移除 `[1m]` 模型变体,并将默认使用 1M 窗口运行的模型限制为 200K 窗口。请参阅[关闭 1M 上下文](/docs/zh-CN/model-config#turn-off-1m-context)。适用于有合规要求的企业环境。有关其在纠正无法识别的 `[1m]` 模型 ID 的窗口方面的作用,请参阅[纠正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

243| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | 设置为 `1` 可在 Opus 4.6 和 Sonnet 4.6 上禁用[自适应推理](/docs/zh-CN/model-config#adjust-effort-level),并回退到由 `MAX_THINKING_TOKENS` 控制的固定思考预算。对始终使用自适应推理的 [Fable 模型](/docs/zh-CN/model-config#extended-thinking)、Sonnet 5 及更高版本、Haiku 5.5 或 Opus 4.7 及更高版本不起作用 |247| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | 设置为 `1` 可在 Opus 4.6 和 Sonnet 4.6 上禁用[自适应推理](/docs/zh-CN/model-config#adjust-effort-level),并回退到由 `MAX_THINKING_TOKENS` 控制的固定思考预算。对 [Fable 模型](/docs/zh-CN/model-config#extended-thinking)、Sonnet 5 及更高版本、Haiku 5.5 或 Opus 4.7 及更高版本不起作用,这些模型始终使用自适应推理 |

244| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | 设置为 `1` 可阻止 Claude Code 跨管理员来源按键合并[托管设置](/docs/zh-CN/managed-settings#precedence-within-the-managed-tier)的 `env` 块,这样只有优先级最高的来源的整个 `env` 块生效,与 v2.1.223 之前相同。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块下发的副本。需要 Claude Code v2.1.223 或更高版本 |248| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | 设置为 `1` 可阻止 Claude Code 跨管理员来源按键合并[托管设置](/docs/zh-CN/managed-settings#precedence-within-the-managed-tier) `env` 块,从而仅应用最高优先级来源的整个 `env` 块,与 v2.1.223 之前相同。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.223 或更高版本 |

245| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | 设置为 `1` 可禁用 [advisor 工具](/docs/zh-CN/advisor)。`/advisor` 命令将不可用,任何已配置的 `advisorModel` 都会被忽略,`--advisor` 标志会被接受但不起作用,因此传递该标志的现有脚本可以继续正常运行而不会报错 |249| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | 设置为 `1` 可禁用 [advisor 工具](/docs/zh-CN/advisor)。`/advisor` 命令将不可用,任何已配置的 `advisorModel` 都会被忽略,`--advisor` 标志会被接受但不起作用,因此传递该标志的现有脚本可以继续运行而不会出错 |

246| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | 设置为 `1` 可关闭[后台 Agent 和 Agent 视图](/docs/zh-CN/agent-view):`claude agents`、`--bg`、`/background` 以及按需启动的 supervisor。等同于 [`disableAgentView`](/docs/zh-CN/settings-reference#disableagentview) 设置 |250| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | 设置为 `1` 可关闭[后台 Agent 和 Agent 视图](/docs/zh-CN/agent-view):`claude agents`、`--bg`、`/background` 以及按需启动的 supervisor。等同于 [`disableAgentView`](/docs/zh-CN/settings-reference#disableagentview) 设置 |

247| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | 设置为 `1` 可禁用[全屏渲染](/docs/zh-CN/fullscreen)并使用经典的主屏幕渲染器。对话会保留在终端的原生回滚缓冲区中,因此 `Cmd+f` 和 tmux 复制模式照常工作。优先于 `CLAUDE_CODE_NO_FLICKER` 和 [`tui`](/docs/zh-CN/settings-reference#tui) 设置。您也可以使用 `/tui default` 进行切换。不适用于从 [Agent 视图](/docs/zh-CN/agent-view)打开的后台会话,这些会话始终使用全屏渲染 |251| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | 设置为 `1` 可禁用[全屏渲染](/docs/zh-CN/fullscreen)并使用经典的主屏幕渲染器。对话保留在终端的原生回滚缓冲区中,因此 `Cmd+f` 和 tmux 复制模式可照常工作。优先于 `CLAUDE_CODE_NO_FLICKER` 和 [`tui`](/docs/zh-CN/settings-reference#tui) 设置。您也可以使用 `/tui default` 进行切换。不适用于从 [Agent 视图](/docs/zh-CN/agent-view)打开的后台会话,这些会话始终使用全屏渲染 |

248| `CLAUDE_CODE_DISABLE_ARTIFACT` | 设置为 `1` 可关闭 [Artifact](/docs/zh-CN/artifacts) 工具,该工具会将会话输出作为 claude.ai 上的私有网页发布。一旦设置此变量,任何设置文件都无法重新启用该工具。若要改为通过设置文件关闭该工具,请将 [`enableArtifact`](/docs/zh-CN/settings-reference#enableartifact) 设置为 `false`;已弃用的 [`disableArtifact`](/docs/zh-CN/settings-reference#disableartifact) 键也可以关闭它 |252| `CLAUDE_CODE_DISABLE_ARTIFACT` | 设置为 `1` 可关闭 [Artifact](/docs/zh-CN/artifacts) 工具,该工具会将会话输出作为私有网页发布到 claude.ai。一旦设置,任何设置文件都无法重新启用该工具。若要改为从设置文件关闭该工具,请将 [`enableArtifact`](/docs/zh-CN/settings-reference#enableartifact) 设置为 `false`;已弃用的 [`disableArtifact`](/docs/zh-CN/settings-reference#disableartifact) 键也可将其关闭 |

249| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 设置为 `1` 可禁用附件处理。使用 `@` 语法的文件引用会作为纯文本发送,而不会展开为文件内容。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |253| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 设置为 `1` 可禁用附件处理。使用 `@` 语法提及的文件会作为纯文本发送,而不会展开为文件内容。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |

250| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | 设置为 `1` 可使 Claude Code 进程自行运行其 [`gcpAuthRefresh`](/docs/zh-CN/settings-reference#gcpauthrefresh) 或 [`awsAuthRefresh`](/docs/zh-CN/settings-reference#awsauthrefresh) 命令,而不是在另一个进程运行该命令时等待。需要 Claude Code v2.1.286 或更高版本 |254| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | 设置为 `1` 可使 Claude Code 进程自行运行其 [`gcpAuthRefresh`](/docs/zh-CN/settings-reference#gcpauthrefresh) 或 [`awsAuthRefresh`](/docs/zh-CN/settings-reference#awsauthrefresh) 命令,而不是在另一个进程运行该命令时等待。需要 Claude Code v2.1.286 或更高版本 |

251| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | 设置为 `1` 可禁用[自动记忆](/docs/zh-CN/memory#auto-memory)。设置为 `0` 可强制启用自动记忆,即使 `--bare` 模式或 [`autoMemoryEnabled: false`](/docs/zh-CN/settings-reference#automemoryenabled) 原本会禁用它。禁用后,Claude 不会创建或加载自动记忆文件 |255| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | 设置为 `1` 可禁用[自动记忆](/docs/zh-CN/memory#auto-memory)。设置为 `0` 可强制启用自动记忆,即使 `--bare` 模式或 [`autoMemoryEnabled: false`](/docs/zh-CN/settings-reference#automemoryenabled) 原本会禁用它。禁用后,Claude 不会创建或加载自动记忆文件 |

252| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 设置为 `1` 可禁用所有后台任务功能,包括 Bash 和子代理工具上的 `run_in_background` 参数、自动后台化以及 Ctrl+B 快捷键 |256| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 设置为 `1` 可禁用所有后台任务功能,包括 Bash 和子代理工具上的 `run_in_background` 参数、自动后台化以及 Ctrl+B 快捷键 |

253| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | 设置为 `1` 可阻止 Claude Code 将缺少 `Content-Type` 标头或该标头为空的 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 流式响应视为 Amazon Bedrock 的二进制事件流。默认情况下,Claude Code 会假定是网关从一个原本未修改的响应中删除了该标头,因此会解码响应体,流式输出也能继续工作。仅当网关还会将流重新以服务器发送事件的形式发出时才设置此变量;此时 Claude Code 会将没有标头的响应体作为服务器发送事件读取。需要 Claude Code v2.1.239 或更高版本 |257| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | 设置为 `1` 可阻止 Claude Code 将缺少 `Content-Type` 标头或该标头为空的 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 流式响应视为 Amazon Bedrock 的二进制事件流。默认情况下,Claude Code 假定网关从一个未经其他修改的响应中丢弃了该标头,因此会解码响应体,流式传输得以继续工作。仅当网关还会将流重新作为服务器发送事件输出时才设置此变量;Claude Code 随后会将没有该标头的响应体作为服务器发送事件读取。需要 Claude Code v2.1.239 或更高版本 |

254| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | 设置为 `1` 可跳过对 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 流式响应是否携带 `application/vnd.amazon.eventstream` content-type 的检查。未设置此变量时,如果响应携带不同的 content-type,Claude Code 会使请求失败并给出指明该类型的错误,这表示[网关或代理正在转换响应](/docs/zh-CN/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy)。请将网关配置为原样转发 `Content-Type` 标头和响应体,而不是设置此变量。需要 Claude Code v2.1.208 或更高版本 |258| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | 设置为 `1` 可跳过对 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 流式响应是否带有 `application/vnd.amazon.eventstream` content-type 的检查。未设置此变量时,如果响应带有不同的 content-type,Claude Code 会使请求失败,并显示指明该类型的错误,这表示[网关或代理正在转换响应](/docs/zh-CN/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy)。请配置网关以原样转发 `Content-Type` 标头和响应体,而不是设置此变量。需要 Claude Code v2.1.208 或更高版本 |

255| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 后,当 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 停止、重启或更新[后台会话](/docs/zh-CN/agent-view)的进程时,会停止该会话正在运行的后台 shell 命令、动态工作流以及(从 v2.1.198 起)后台子代理,而不是将它们移交给该会话的下一个进程。仅影响这种移交:使用 `←` 或 [`/background`](/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时仍会延续进行中的工作,而 `CLAUDE_DISABLE_ADOPT` 会同时关闭这两者。需要 Claude Code v2.1.196 或更高版本 |259| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 可在 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 停止、重启或更新该会话的进程时,停止[后台会话](/docs/zh-CN/agent-view)正在运行的后台 shell 命令、动态工作流以及(自 v2.1.198 起)后台子代理,而不是将它们移交给该会话的下一个进程。仅影响该移交:使用 `←` 或 [`/background`](/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时,仍会转移进行中的工作,而 `CLAUDE_DISABLE_ADOPT` 会同时关闭这两者。需要 Claude Code v2.1.196 或更高版本 |

256| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | 设置为 `1` 可阻止 Claude Code 在内存压力下终止[后台 shell 命令](/docs/zh-CN/interactive-mode#background-bash-commands)。默认情况下,在 macOS 和 Linux 上,当操作系统报告严重内存压力,且会话已空闲 30 分钟、没有正在运行的轮次或子代理时,Claude Code 会终止后台 shell。Windows 没有内存压力信号,因此此变量在 Windows 上不起作用。需要 Claude Code v2.1.193 或更高版本 |260| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | 设置为 `1` 可阻止 Claude Code 在内存压力下终止[后台 shell 命令](/docs/zh-CN/interactive-mode#background-bash-commands)。默认情况下,在 macOS 和 Linux 上,当操作系统报告严重内存压力,且会话已空闲 30 分钟、没有轮次或子代理在运行时,Claude Code 会终止后台 shell。Windows 没有内存压力信号,因此此变量在 Windows 上不起作用。需要 Claude Code v2.1.193 或更高版本 |

257| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | 设置为 `1` 可禁用 Claude Code 附带的 [skill](/docs/zh-CN/skills) 和工作流:随附 skill 和工作流会被完全移除,而 `/init` 等内置命令仍可输入,但会对模型隐藏。`/doctor` 与内置命令一样仍可输入;请改用 `DISABLE_DOCTOR_COMMAND` 隐藏它。来自插件、`.claude/skills/` 和 `.claude/commands/` 的 skill 不受影响。等同于 [`disableBundledSkills`](/docs/zh-CN/settings-reference#disablebundledskills) 设置 |261| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | 设置为 `1` 可禁用 Claude Code 随附的 [skill](/docs/zh-CN/skills) 和工作流:随附 skill 和工作流会被完全移除,而 `/init` 等内置命令仍可输入,但会对模型隐藏。`/doctor` 与内置命令一样仍可输入;请改用 `DISABLE_DOCTOR_COMMAND` 将其隐藏。来自插件、`.claude/skills/` 和 `.claude/commands/` 的 skill 不受影响。等同于 [`disableBundledSkills`](/docs/zh-CN/settings-reference#disablebundledskills) 设置 |

258| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | 设置为 `1` 可保留 [Claude in Chrome](/docs/zh-CN/chrome) 浏览器工具,同时省略系统提示词中的 Chrome 部分和 `/claude-in-chrome` [随附 skill](/docs/zh-CN/skills#bundled-skills)。适用于嵌入 Claude Code 并提供自己的浏览器指引的宿主。需要 Claude Code v2.1.257 或更高版本 |262| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | 设置为 `1` 可保留 [Claude in Chrome](/docs/zh-CN/chrome) 浏览器工具可用,同时省略系统提示词中的 Chrome 部分以及 `/claude-in-chrome` [随附 skill](/docs/zh-CN/skills#bundled-skills)。适用于嵌入 Claude Code 并提供自己的浏览器指导的宿主。需要 Claude Code v2.1.257 或更高版本 |

259| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | 设置为 `1` 可阻止将任何 CLAUDE.md 记忆文件加载到上下文中,包括用户、项目和自动记忆文件 |263| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | 设置为 `1` 可阻止将任何 CLAUDE.md 记忆文件加载到上下文中,包括用户、项目和自动记忆文件 |

260| `CLAUDE_CODE_DISABLE_CRON` | 设置为 `1` 可禁用[定时任务](/docs/zh-CN/scheduled-tasks)。`/loop` skill 和 cron 工具将不可用,任何已安排的任务都会停止触发,包括在会话中途已在运行的任务 |264| `CLAUDE_CODE_DISABLE_CRON` | 设置为 `1` 可禁用[定时任务](/docs/zh-CN/scheduled-tasks)。`/loop` skill 和 cron 工具将不可用,任何已安排的任务都会停止触发,包括在会话中途已经在运行的任务 |

261| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | 设置为 `1` 可关闭[关键路径删除](/docs/zh-CN/permission-modes#critical-paths)提示的时间限制。此后在 `auto` 模式下,Claude Code 会将这些删除操作发送给分类器;在 `bypassPermissions` 模式下,提示会等待您的回答。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块下发的副本。需要 Claude Code v2.1.281 或更高版本 |265| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | 设置为 `1` 可关闭[关键路径删除](/docs/zh-CN/permission-modes#critical-paths)提示的时间限制。随后在 `auto` 模式下,Claude Code 会改为将这些删除操作发送给分类器;在 `bypassPermissions` 模式下,提示会等待您的回答。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.281 或更高版本 |

262| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 设置为 `1` 可从 API 请求中去除预发布的 `anthropic-beta` 请求标头、与之配对的请求体字段,以及 `defer_loading` 和 `eager_input_streaming` 等 beta 工具 schema 字段。当代理网关因 `anthropic-beta` 标头报 `Unexpected value(s)` 错误或报 `Extra inputs are not permitted` 错误而拒绝请求时,请使用此变量。[禁用预发布功能](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities)列出了该变量会移除的内容(包括 [MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search))以及 Claude Code 仍会发送的内容 |266| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 设置为 `1` 可从 API 请求中移除预发布的 `anthropic-beta` 请求标头、与其配对的请求体字段,以及 `defer_loading` 和 `eager_input_streaming` 等 beta 工具架构字段。当代理网关因 `anthropic-beta` 标头返回 `Unexpected value(s)` 错误或返回 `Extra inputs are not permitted` 错误而拒绝请求时使用。[禁用预发布功能](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities)列出了该变量移除的内容(包括 [MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search))以及 Claude Code 仍会发送的内容 |

263| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | 设置为 `1` 可禁用内置的 [Explore 和 Plan 子代理](/docs/zh-CN/sub-agents#built-in-subagents)。Claude 会改用其搜索工具或通用子代理进行探索,[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)会直接读取文件,而不是启动 Explore 和 Plan Agent。名为 `Explore` 或 `Plan` 的自定义子代理不受影响。若要在 Agent SDK 或非交互模式中移除所有内置子代理类型,请改用 `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`。需要 Claude Code v2.1.198 或更高版本 |267| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | 设置为 `1` 可禁用内置的 [Explore 和 Plan 子代理](/docs/zh-CN/sub-agents#built-in-subagents)。Claude 会改用其搜索工具或 general-purpose 子代理进行探索,[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)会直接读取文件,而不是启动 Explore 和 Plan Agent。名为 `Explore` 或 `Plan` 的自定义子代理不受影响。若要在 Agent SDK 或非交互模式下移除所有内置子代理类型,请改用 `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`。需要 Claude Code v2.1.198 或更高版本 |

264| `CLAUDE_CODE_DISABLE_FAST_MODE` | 设置为 `1` 可禁用[快速模式](/docs/zh-CN/fast-mode) |268| `CLAUDE_CODE_DISABLE_FAST_MODE` | 设置为 `1` 可禁用[快速模式](/docs/zh-CN/fast-mode) |

265| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | 设置为 `1` 可禁用"How is Claude doing?"会话质量调查。当设置了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,调查也会被禁用,除非 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` 重新选择启用。若要设置采样率而不是直接禁用,请使用 [`feedbackSurveyRate`](/docs/zh-CN/settings-reference#feedbacksurveyrate) 设置。请参阅[会话质量调查](/docs/zh-CN/data-usage#session-quality-surveys) |269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | 设置为 `1` 可禁用 "How is Claude doing?" 会话质量调查。当设置了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,调查也会被禁用,除非 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` 重新选择启用。若要设置采样率而不是完全禁用,请使用 [`feedbackSurveyRate`](/docs/zh-CN/settings-reference#feedbacksurveyrate) 设置。请参阅[会话质量调查](/docs/zh-CN/data-usage#session-quality-surveys) |

266| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 设置为 `1` 可禁用文件[检查点功能](/docs/zh-CN/checkpointing)。`/rewind` 命令将无法恢复代码更改。覆盖 [`fileCheckpointingEnabled`](/docs/zh-CN/settings-reference#filecheckpointingenabled) 设置 |270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 设置为 `1` 可禁用文件[检查点功能](/docs/zh-CN/checkpointing)。`/rewind` 命令将无法恢复代码更改。覆盖 [`fileCheckpointingEnabled`](/docs/zh-CN/settings-reference#filecheckpointingenabled) 设置 |

267| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | 设置为 `1` 可从 Claude 的上下文中移除内置的提交和 PR 工作流指令以及 git 状态快照。适用于使用您自己的 git 工作流 skill 的情况。设置后优先于 [`includeGitInstructions`](/docs/zh-CN/settings-reference#includegitinstructions) 设置 |271| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | 设置为 `1` 可从 Claude 的上下文中移除内置的提交和 PR 工作流说明以及 git 状态快照。在使用您自己的 git 工作流 skill 时很有用。设置后优先于 [`includeGitInstructions`](/docs/zh-CN/settings-reference#includegitinstructions) 设置 |

268| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | 设置为 `1` 可阻止 Claude Code 读取通过 `-c` 传递给 shell 的脚本(例如 `bash -c 'rm -rf ~'`)来检查[关键路径](/docs/zh-CN/permission-modes#removals-inside-nested-commands-and-inline-scripts)删除。Claude Code 仍会检查这些脚本中的 shell 变量和位置参数目标,其他关键路径检查也会继续运行。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块下发的副本。需要 Claude Code v2.1.288 或更高版本 |272| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | 设置为 `1` 可阻止 Claude Code 读取通过 `-c` 传递给 shell 的脚本(例如 `bash -c 'rm -rf ~'`)以检查[关键路径](/docs/zh-CN/permission-modes#removals-inside-nested-commands-and-inline-scripts)删除。Claude Code 仍会检查这些脚本中的 shell 变量和位置参数目标,其他关键路径检查也会继续运行。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.288 或更高版本 |

269| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | 设置为 `1` 可阻止在 Anthropic API 上将 Opus 4.0 和 4.1 自动重新映射到当前 Opus 版本。适用于您有意固定使用旧模型的情况。该重新映射不会在 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 上运行 |273| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | 设置为 `1` 可阻止在 Anthropic API 上将 Opus 4.0 和 4.1 自动重新映射到当前 Opus 版本。在您有意固定使用较旧模型时使用。该重新映射不会在 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 上运行 |

270| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | 设置为 `1` 可阻止 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#when-a-model-is-disabled-mid-session) 和 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai#when-a-model-is-disabled-mid-session) 上的 Claude Code 在您的账户于会话中途失去对会话模型的访问权限时切换到较旧的模型;被拒绝的请求会立即失败。您配置的[备用模型链](/docs/zh-CN/model-config#fallback-model-chains)仍会在该拒绝发生时切换,并且[启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks)仍会在启动时回退。需要 Claude Code v2.1.285 或更高版本 |274| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | 设置为 `1` 可阻止 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#when-a-model-is-disabled-mid-session) 和 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai#when-a-model-is-disabled-mid-session) 上的 Claude Code 在您的账户于会话中途失去对会话模型的访问权限时切换到较旧的模型;被拒绝的请求会立即失败。您配置的[备用模型链](/docs/zh-CN/model-config#fallback-model-chains)仍会在该拒绝发生时切换,[启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks)仍会在启动时回退。需要 Claude Code v2.1.285 或更高版本 |

271| `CLAUDE_CODE_DISABLE_MOUSE` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用鼠标跟踪。使用 `PgUp` 和 `PgDn` 的键盘滚动仍然有效。使用此变量可保留终端的原生选中即复制行为 |275| `CLAUDE_CODE_DISABLE_MOUSE` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用鼠标跟踪。使用 `PgUp` 和 `PgDn` 的键盘滚动仍然有效。使用此变量可保留终端原生的选中即复制行为 |

272| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用点击、拖动和悬停处理,同时保留鼠标滚轮滚动。当您希望滚轮在 Claude Code 中有效,但不希望点击定位光标、展开工具输出或打开链接时,请使用此变量。两者都设置时,`CLAUDE_CODE_DISABLE_MOUSE` 优先。需要 Claude Code v2.1.195 或更高版本 |276| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用点击、拖动和悬停处理,同时保留鼠标滚轮滚动。当您希望滚轮滚动在 Claude Code 中正常工作,但不希望点击定位光标、展开工具输出或打开链接时使用。同时设置两者时,`CLAUDE_CODE_DISABLE_MOUSE` 优先。需要 Claude Code v2.1.195 或更高版本 |

273| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | 设置为 `1` 可阻止 Claude Code 在 API 请求因连接级错误(例如连接重置或 TLS 握手错误)失败时重新读取 [mTLS 客户端证书和密钥](/docs/zh-CN/network-config#mtls-authentication)。禁用重新加载后,Claude Code 仅在下次应用设置时或下次启动时加载轮换后的文件。需要 Claude Code v2.1.232 或更高版本 |277| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | 设置为 `1` 可阻止 Claude Code 在 API 请求因连接级错误(例如连接重置或 TLS 握手错误)失败时重新读取 [mTLS 客户端证书和密钥](/docs/zh-CN/network-config#mtls-authentication)。禁用重新加载后,Claude Code 仅在下次应用设置时或下次启动时加载轮换后的文件。需要 Claude Code v2.1.232 或更高版本 |

274| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | 设置为任何非空值(例如 `1`)可禁用非必要的网络流量:自动更新、遥测、错误报告、`/feedback` 命令、[Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)、发行说明、[PR 和 MR 状态徽章](/docs/zh-CN/interactive-mode#pr-review-status)检查,以及[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)检查等可用性检查。它还会停止[插件 `command` 来源的后台运行](/docs/zh-CN/plugins/loading#when-a-command-source-re-runs),这些是本地命令而不是网络流量,但它们可能会触发依赖安装。**与大多数开关类变量不同,将其设置为 `0` 或 `false` 仍会禁用此类流量**;取消设置该变量才能重新允许。还会禁用功能标志获取,这会使 [Remote Control](/docs/zh-CN/remote-control#requirements) 以及其他[需要功能标志获取的功能](#features-that-need-feature-flag-fetching)不可用。官方插件市场的自动安装不在此范围内;请使用 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` 禁用它。不影响[网关模型发现](/docs/zh-CN/llm-gateway-connect#add-gateway-models-to-the-model-picker),后者有其自己的选择启用方式 |278| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | 设置为任何非空值(例如 `1`)可禁用非必要的网络流量:自动更新、遥测、错误报告、`/feedback` 命令、[Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)、发行说明、[PR 和 MR 状态徽章](/docs/zh-CN/interactive-mode#pr-review-status)检查,以及可用性检查(例如[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)检查)。它还会停止[插件 `command` 来源的后台运行](/docs/zh-CN/plugins/loading#when-a-command-source-re-runs):这些运行属于本地命令而非网络流量,但由于它们可能触发依赖安装,因此也会被停止。**将其设置为 `0` 或 `false` 仍会禁用此流量**,这与大多数开关变量不同;取消设置该变量即可重新允许。还会禁用功能标志获取,这会使 [Remote Control](/docs/zh-CN/remote-control#requirements) 以及其他[需要功能标志获取的功能](#features-that-need-feature-flag-fetching)不可用。官方插件市场自动安装不在此范围内;请使用 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` 将其禁用。不影响[网关模型发现](/docs/zh-CN/llm-gateway-connect#add-gateway-models-to-the-model-picker),后者有其自己的选择启用机制 |

275| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | 设置为 `1` 可在流式请求中途失败时禁用非流式回退。流式错误会改为传递到重试层。当代理或网关导致回退产生重复的工具执行时很有用 |279| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | 设置为 `1` 可在流式请求中途失败时禁用非流式回退。流式错误会改为传播到重试层。当代理或网关导致回退产生重复的工具执行时很有用 |

276| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | 设置为 `1` 可使 `PushNotification` 工具即使在您正在终端中输入或终端处于焦点时也发送桌面通知。默认情况下,当该工具检测到最近的键盘活动或终端焦点时,会同时跳过桌面通知和[移动推送](/docs/zh-CN/remote-control#mobile-push-notifications)。此变量仅禁用该本地检查,因此当服务器检测到您处于活动状态时,仍可以抑制移动推送。需要 Claude Code v2.1.193 或更高版本 |280| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | 设置为 `1` 可在您正在终端中输入或终端处于焦点状态时仍发送 `PushNotification` 工具的桌面通知。默认情况下,当该工具检测到最近的键盘活动或终端焦点时,会同时跳过桌面通知和[移动推送](/docs/zh-CN/remote-control#mobile-push-notifications)。此变量仅禁用该本地检查,因此当服务器检测到您处于活跃状态时,仍可能抑制移动推送。需要 Claude Code v2.1.193 或更高版本 |

277| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 设置为 `1` 可禁用官方插件市场的自动注册。Claude Code 在即将注册该市场时读取此变量,通常是在机器首次交互式启动期间。如果此时设置了该变量,Claude Code 会永久跳过注册。之后取消设置该变量不会撤销此跳过。您可以随时运行 `claude plugin marketplace add anthropics/claude-plugins-official` 来注册该市场 |281| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 设置为 `1` 可禁用官方插件市场的自动注册。Claude Code 会在即将注册该市场时读取此变量,通常是在机器首次交互式启动期间。如果此时已设置该变量,Claude Code 会永久跳过注册。之后取消设置该变量不会撤销该跳过。随时运行 `claude plugin marketplace add anthropics/claude-plugins-official` 即可注册该市场 |

278| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | 设置为 `1` 可阻止 Claude Code 在将未回答的权限请求发送到 Agent SDK 的 `canUseTool` 回调的会话中运行您的[针对未回答权限请求的 `Notification` hook](/docs/zh-CN/hooks#notification),Claude Desktop 和 VS Code 扩展就是以这种方式托管 Claude Code 的。在终端会话中不起作用。需要 Claude Code v2.1.233 或更高版本 |282| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | 设置为 `1` 可阻止 Claude Code 运行您的[针对未回答权限请求的 `Notification` hook](/docs/zh-CN/hooks#notification),适用于 Claude Code 将这些请求发送到 Agent SDK 的 `canUseTool` 回调的会话,Claude Desktop 和 VS Code 扩展正是以这种方式托管 Claude Code。在终端会话中不起作用。需要 Claude Code v2.1.233 或更高版本 |

279| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 设置为 `1` 可跳过从系统范围的托管 skill 目录加载 skill。适用于不应加载运维人员预置 skill 的容器或 CI 会话 |283| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 设置为 `1` 可跳过从系统范围的托管 skill 目录加载 skill。适用于不应加载运维人员预置 skill 的容器或 CI 会话 |

280| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | 设置为 `1` 可关闭 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)的一项检查,该检查会拒绝在[系统路径](/docs/zh-CN/permission-modes#remove-item-in-powershell)(例如驱动器根目录或您的主目录)上使用 `cmd` 内置命令 `rd`、`rmdir`、`del` 和 `erase`。Claude Code 会忽略设置文件 `env` 块中的此变量。需要 Claude Code v2.1.283 或更高版本 |284| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | 设置为 `1` 可关闭 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)的一项检查,该检查会拒绝在[系统路径](/docs/zh-CN/permission-modes#remove-item-in-powershell)(例如驱动器根目录或您的主目录)上使用 `cmd` 内置命令 `rd`、`rmdir`、`del` 和 `erase`。Claude Code 会忽略设置文件 `env` 块中的此变量。需要 Claude Code v2.1.283 或更高版本 |

281| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | 设置为 `1` 可关闭[安全分类器标记请求时的自动模型切换](/docs/zh-CN/model-config#automatic-model-fallback),即 [`switchModelsOnFlag`](/docs/zh-CN/settings-reference#switchmodelsonflag) 设置所控制的行为 |285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | 设置为 `1` 可关闭[安全分类器标记请求时的自动模型切换](/docs/zh-CN/model-config#automatic-model-fallback),即由 [`switchModelsOnFlag`](/docs/zh-CN/settings-reference#switchmodelsonflag) 设置控制的行为 |

282| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | 设置为 `1` 可阻止 Claude Code 发送结构化输出的 `output_config.format` 字段及与之配对的 `anthropic-beta` 值,适用于上游会拒绝这些内容的 [LLM 网关](/docs/zh-CN/llm-gateway-protocol#feature-pass-through)。这会保留 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities) 所关闭的其他预发布功能。需要 Claude Code v2.1.288 或更高版本 |286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | 设置为 `1` 可阻止 Claude Code 发送结构化输出 `output_config.format` 字段及与其配对的 `anthropic-beta` 值,适用于上游会拒绝它们的 [LLM 网关](/docs/zh-CN/llm-gateway-protocol#feature-pass-through)。这会保留 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities) 会关闭的其他预发布功能。需要 Claude Code v2.1.288 或更高版本 |

283| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | 设置为 `1` 可关闭对目标完全来自命令替换输出的递归 `rm`(例如 `rm -rf "$(pwd)"`)的[关键路径](/docs/zh-CN/permission-modes#critical-paths)检查。其他关键路径检查会继续运行。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块下发的副本。需要 Claude Code v2.1.281 或更高版本 |287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | 设置为 `1` 可关闭针对目标完全是命令替换输出的递归 `rm`(例如 `rm -rf "$(pwd)"`)的[关键路径](/docs/zh-CN/permission-modes#critical-paths)检查。其他关键路径检查会继续运行。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.281 或更高版本 |

284| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 设置为 `1` 可禁用基于对话上下文的终端标题自动更新。这也会跳过用于[生成会话标题](/docs/zh-CN/sessions#name-your-sessions)的后台小型/快速模型请求 |288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 设置为 `1` 可禁用根据对话上下文自动更新终端标题。这也会跳过用于[生成会话标题](/docs/zh-CN/sessions#name-your-sessions)的后台小型/快速模型请求 |

285| `CLAUDE_CODE_DISABLE_THINKING` | 设置为 `1` 可从 API 请求中完全省略 `thinking` 参数。这是为拒绝该参数的代理和网关提供的兼容性选项。在默认进行思考的模型上,省略该参数意味着模型仍可能进行思考。若要在 Anthropic API 上显式禁用[扩展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),请改用 `MAX_THINKING_TOKENS=0`。这两个变量都无法在 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型上关闭思考,这些模型无法关闭思考。在[第三方提供商](/docs/zh-CN/third-party-integrations)上,`MAX_THINKING_TOKENS=0` 同样会省略该参数,因此这两个变量在那里的行为相同 |289| `CLAUDE_CODE_DISABLE_THINKING` | 设置为 `1` 可从 API 请求中完全省略 `thinking` 参数。这是针对会拒绝该参数的代理和网关的兼容性选项。在默认进行思考的模型上,省略该参数意味着模型仍可能进行思考。若要在 Anthropic API 上明确禁用[扩展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),请改用 `MAX_THINKING_TOKENS=0`。这两个变量都无法在 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型上关闭思考,这些模型不能关闭思考。在[第三方提供商](/docs/zh-CN/third-party-integrations)上,`MAX_THINKING_TOKENS=0` 同样会省略该参数,因此这两个变量在那里的行为相同 |

286| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | 设置为 `1` 可在 Claude Code 无法识别模型 ID(例如 [LLM 网关](/docs/zh-CN/llm-gateway)别名)时跳过主动[自动压缩](/docs/zh-CN/costs#reduce-token-usage)。未设置此变量时,Claude Code 会按其为该 ID 假定的上下文窗口进行压缩。`CLAUDE_CODE_MAX_CONTEXT_TOKENS` 则可以更正假定的窗口;关于各变量的适用情况,请参阅[更正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。需要 Claude Code v2.1.223 或更高版本 |290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | 设置为 `1` 可在 Claude Code 无法识别模型 ID(例如 [LLM 网关](/docs/zh-CN/llm-gateway)别名)时跳过主动[自动压缩](/docs/zh-CN/costs#reduce-token-usage)。未设置此变量时,Claude Code 会在其为该 ID 假定的上下文窗口处进行压缩。`CLAUDE_CODE_MAX_CONTEXT_TOKENS` 可以改为纠正假定的窗口;有关每个变量的适用情况,请参阅[纠正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。需要 Claude Code v2.1.223 或更高版本 |

287| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用虚拟滚动,并渲染会话记录中的每条消息。如果在全屏模式下滚动时,本应显示消息的位置出现空白区域,请使用此变量 |291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用虚拟滚动,并渲染会话记录中的每条消息。如果在全屏模式下滚动时,本应显示消息的位置出现空白区域,请使用此变量 |

288| `CLAUDE_CODE_DISABLE_WEB_FETCH` | 设置为 `1` 可关闭 [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 工具。[WebSearch](/docs/zh-CN/tools-reference#websearch-tool-behavior) 工具仍然可用。需要 Claude Code v2.1.285 或更高版本 |292| `CLAUDE_CODE_DISABLE_WEB_FETCH` | 设置为 `1` 可关闭 [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 工具。[WebSearch](/docs/zh-CN/tools-reference#websearch-tool-behavior) 工具仍然可用。需要 Claude Code v2.1.285 或更高版本 |

289| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | 设置为 `1` 可在 Windows 上直接启动 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)命令,而不是通过 `cmd.exe` 启动器启动。默认情况下,该启动器使[在后台运行](/docs/zh-CN/tools-reference#background-commands)的 PowerShell 命令能够[延续到会话的下一个进程](/docs/zh-CN/agent-view#the-supervisor-process),例如在您[将会话转入后台](/docs/zh-CN/agent-view#from-inside-a-session)时。如果设置了该变量,后台运行的 PowerShell 命令会在会话进程退出时停止。Bash 命令不受影响。需要 Claude Code v2.1.269 或更高版本 |293| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | 设置为 `1` 可在 Windows 上直接启动 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)命令,而不是通过 `cmd.exe` 启动器。默认情况下,该启动器允许[在后台运行](/docs/zh-CN/tools-reference#background-commands)的 PowerShell 命令[延续到会话的下一个进程](/docs/zh-CN/agent-view#the-supervisor-process),例如当您[将会话转入后台](/docs/zh-CN/agent-view#from-inside-a-session)时。如果设置了该变量,转入后台的 PowerShell 命令会在会话进程退出时停止。Bash 命令不受影响。需要 Claude Code v2.1.269 或更高版本 |

290| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 可禁用[工作流](/docs/zh-CN/workflows#turn-workflows-off)。等同于 [`disableWorkflows`](/docs/zh-CN/settings-reference#disableworkflows) 设置 |294| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 可禁用[工作流](/docs/zh-CN/workflows#turn-workflows-off)。等同于 [`disableWorkflows`](/docs/zh-CN/settings-reference#disableworkflows) 设置 |

291| `CLAUDE_CODE_EFFORT_LEVEL` | 为受支持的模型设置 effort 级别。取值:`low`、`medium`、`high`、`xhigh`、`max`,或 `auto` 以使用模型默认值。可用级别取决于模型。优先于 `--effort`、`/effort` 以及 `modelSettings` 和 `effortLevel` 设置。[`maxEffortLevel`](/docs/zh-CN/settings-reference#maxeffortlevel) 上限仍然适用。请参阅[调整 effort 级别](/docs/zh-CN/model-config#adjust-effort-level) |295| `CLAUDE_CODE_EFFORT_LEVEL` | 为受支持的模型设置 effort 级别。取值:`low`、`medium`、`high`、`xhigh`、`max`,或 `auto`(使用模型默认值)。可用级别取决于模型。优先于 `--effort`、`/effort` 以及 `modelSettings` 和 `effortLevel` 设置。[`maxEffortLevel`](/docs/zh-CN/settings-reference#maxeffortlevel) 上限仍然适用。请参阅[调整 effort 级别](/docs/zh-CN/model-config#adjust-effort-level) |

292| `CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS` | 设置为 `1` 可将携带会话状态的 [`session_state_changed`](/docs/zh-CN/agent-sdk/typescript#sdksessionstatechangedmessage) 消息添加到消息流中。需要使用 [Agent SDK](/docs/zh-CN/agent-sdk/overview),或同时使用 `--print`、`--output-format stream-json` 和 `--verbose` |296| `CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS` | 设置为 `1` 可在消息流中添加携带会话状态的 [`session_state_changed`](/docs/zh-CN/agent-sdk/typescript#sdksessionstatechangedmessage) 消息。需要使用 [Agent SDK](/docs/zh-CN/agent-sdk/overview),或同时使用 `--print`、`--output-format stream-json` 和 `--verbose` |

293| `CLAUDE_CODE_ENABLE_AUTO_MODE` | 为兼容旧版本而保留,不产生任何效果。自动模式在所有提供商上默认可用,包括 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 以及已登录的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 会话。在 v2.1.158 至 v2.1.206 中,需要将其设置为 `1` 才能在这些提供商上使用[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) |297| `CLAUDE_CODE_ENABLE_AUTO_MODE` | 为兼容旧版本而保留,不产生任何效果。自动模式在所有提供商上默认可用,包括 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 以及已登录的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 会话。在 v2.1.158 至 v2.1.206 中,需要将此变量设置为 `1` 才能在这些提供商上使用[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) |

294| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆盖[会话回顾](/docs/zh-CN/interactive-mode#session-recap)的可用性。设置为 `0` 可强制关闭回顾,无论 `/config` 开关如何。设置为 `1` 可在 [`awaySummaryEnabled`](/docs/zh-CN/settings-reference#awaysummaryenabled) 为 `false` 时强制开启回顾。优先于该设置和 `/config` 开关 |298| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆盖[会话回顾](/docs/zh-CN/interactive-mode#session-recap)的可用性。设置为 `0` 可强制关闭回顾,无论 `/config` 开关如何。设置为 `1` 可在 [`awaySummaryEnabled`](/docs/zh-CN/settings-reference#awaysummaryenabled) 为 `false` 时强制开启回顾。优先于该设置和 `/config` 开关 |

295| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 设置为 `1` 可在[非交互模式](/docs/zh-CN/headless)下后台安装完成后,于轮次边界刷新插件状态。默认关闭,因为刷新会在会话中途更改系统提示词,导致该轮次的[提示缓存](/docs/zh-CN/prompt-caching)失效 |299| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 设置为 `1` 可在后台安装完成后,于[非交互模式](/docs/zh-CN/headless)下在轮次边界刷新插件状态。默认关闭,因为刷新会在会话中途更改系统提示词,从而使该轮次的[提示缓存](/docs/zh-CN/prompt-caching)失效 |

296| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | 设置为 `1` 可在发往 Anthropic 的非必要流量被阻止时,将 "How is Claude doing?" 会话质量调查路由到您自己的 [OpenTelemetry 收集器](/docs/zh-CN/monitoring-usage)。调查评分仅作为 OTEL 事件发送到您配置的收集器。在此模式下,不会向 Anthropic 发送任何调查数据。仅在设置了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时适用,否则不产生任何效果。`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 和组织产品反馈策略优先 |300| `CLAUDE_CODE_ENABLE_CFC` | 设置为 `1` 可在启动 CLI 会话时开启 [Chrome 集成](/docs/zh-CN/chrome),设置为 `0` 则在启动时关闭。优先于 [`claudeInChromeDefaultEnabled`](/docs/zh-CN/settings-reference#claudeinchromedefaultenabled) 设置。`--chrome` 和 `--no-chrome` 标志优先于两者。Claude Code [会忽略项目设置和本地设置中的 `1`](/docs/zh-CN/chrome#project-settings-can’t-turn-on-chrome) |

297| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具调用输入是否在 Claude 生成时从 API 流式传输。关闭时,较大的工具输入(例如长文件写入)只有在 Claude 完成生成后才会到达,这可能看起来像是卡住了。在 Anthropic API 上默认启用。在 Amazon Bedrock 和 Google Cloud's Agent Platform 上,在部署的容器支持的情况下按模型启用。设置为 `0` 可选择退出。通过 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 经由代理路由时,设置为 `1` 可强制开启。在 Microsoft Foundry 和[网关](/docs/zh-CN/llm-gateway)连接上默认关闭 |301| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | 设置为 `1` 可在发往 Anthropic 的非必要流量被阻止时,将"How is Claude doing?"会话质量调查路由到您自己的 [OpenTelemetry 收集器](/docs/zh-CN/monitoring-usage)。调查评分仅作为 OTEL 事件发送到您配置的收集器。在此模式下,不会向 Anthropic 发送任何调查数据。仅在设置了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时适用,否则不产生任何效果。`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 和组织的产品反馈策略优先 |

298| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 当 `ANTHROPIC_BASE_URL` 指向与 Anthropic 兼容的网关(例如 LiteLLM、Kong 或内部代理)时,设置为 `1` 可从网关的 `/v1/models` 端点填充 `/model` 选择器。默认关闭,因为否则由共享 API 密钥支持的网关会向每个用户显示该密钥可访问的所有模型。发现的模型仍会经过会话收到的 [`availableModels`](/docs/zh-CN/settings-reference#availablemodels) 允许列表过滤;请通过 [MDM 或托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)下发该列表,因为[网关配置不支持服务器托管下发](/docs/zh-CN/server-managed-settings#platform-availability) |302| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具调用输入是否在 Claude 生成时从 API 流式传输。关闭此功能时,较大的工具输入(例如较长的文件写入)只有在 Claude 完成生成后才会到达,这看起来可能像是卡住了。在 Anthropic API 上默认启用。在 Amazon Bedrock 和 Google Cloud's Agent Platform 上,会在已部署容器支持时按模型启用。设置为 `0` 可选择退出。通过 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 经代理路由时,设置为 `1` 可强制开启。在 Microsoft Foundry 和[网关](/docs/zh-CN/llm-gateway)连接上默认关闭 |

303| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 当 `ANTHROPIC_BASE_URL` 指向与 Anthropic 兼容的网关(例如 LiteLLM、Kong 或内部代理)时,设置为 `1` 可从网关的 `/v1/models` 端点填充 `/model` 选择器。默认关闭,因为否则由共享 API 密钥支持的网关会向每个用户显示该密钥可访问的所有模型。发现的模型仍会按会话收到的 [`availableModels`](/docs/zh-CN/settings-reference#availablemodels) 允许列表进行过滤;请通过 [MDM 或托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)下发该列表,因为[服务器托管下发在网关配置上不可用](/docs/zh-CN/server-managed-settings#platform-availability) |

299| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 已在 v2.1.142 中移除,当时[快速模式](/docs/zh-CN/fast-mode)的默认模型从 Opus 4.6 改为 Opus 4.7 |304| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 已在 v2.1.142 中移除,当时[快速模式](/docs/zh-CN/fast-mode)的默认模型从 Opus 4.6 改为 Opus 4.7 |

300| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 设置为 `false` 可关闭提示词建议,即出现在输入框中的灰色预测内容。优先于 [`promptSuggestionEnabled`](/docs/zh-CN/settings-reference#promptsuggestionenabled) 设置,即 `/config` 中 **Prompt suggestions** 开关所写入的设置。当您的账户接近或达到用量限制时,Claude Code 也会[暂停建议](/docs/zh-CN/interactive-mode#when-claude-code-skips-suggestions)。设置为 `true` 可使建议保持开启,直到您达到限制。需要 Claude Code v2.1.238 或更高版本。请参阅[提示词建议](/docs/zh-CN/interactive-mode#prompt-suggestions) |305| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 设置为 `false` 可关闭提示词建议,即输入框中显示的灰色预测内容。优先于 [`promptSuggestionEnabled`](/docs/zh-CN/settings-reference#promptsuggestionenabled) 设置,`/config` 中的 **Prompt suggestions** 开关写入的正是该设置。当您的账户接近或达到用量限制时,Claude Code 也会[暂停建议](/docs/zh-CN/interactive-mode#when-claude-code-skips-suggestions)。设置为 `true` 可让建议保持开启,直到达到限制。需要 Claude Code v2.1.238 或更高版本。请参阅[提示词建议](/docs/zh-CN/interactive-mode#prompt-suggestions) |

301| `CLAUDE_CODE_ENABLE_TASKS` | 选择 Claude Code 在[具备任务跟踪工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中提供哪种任务跟踪工具。默认情况下,Claude Code 提供 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`。设置为 `0` 可改用旧版 `TodoWrite` 工具。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |306| `CLAUDE_CODE_ENABLE_TASKS` | 选择 Claude Code 在[具备任务跟踪工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中提供哪些任务跟踪工具。默认情况下,Claude Code 提供 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`。设置为 `0` 可改为使用旧版 `TodoWrite` 工具。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |

302| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 可启用用于指标和日志记录的 OpenTelemetry 数据收集。配置 OTel 导出器之前必须设置。请在您的 shell、用户设置或托管设置中设置。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage) |307| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 可启用用于指标和日志的 OpenTelemetry 数据收集。配置 OTel 导出器之前必须设置此变量。请在 shell、用户设置或托管设置中设置。在[项目设置和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage) |

303| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | 设置为 `1` 可在所有模型上获得任务跟踪工具。未设置时,Claude Code 默认仅在 [Task 工具可用性](/docs/zh-CN/tools-reference#task-tool-availability)下列出的模型上提供这些工具。`CLAUDE_CODE_ENABLE_TASKS` 仍用于选择 Task 工具或 `TodoWrite`。需要 Claude Code v2.1.233 或更高版本 |308| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | 设置为 `1` 可在所有模型上获得任务跟踪工具。如果不设置,Claude Code 默认仅在 [Task 工具可用性](/docs/zh-CN/tools-reference#task-tool-availability)中列出的模型上提供这些工具。`CLAUDE_CODE_ENABLE_TASKS` 仍然决定使用 Task 工具还是 `TodoWrite`。需要 Claude Code v2.1.233 或更高版本 |

304| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查询循环空闲后自动退出前等待的时间(毫秒)。适用于使用 SDK 模式的自动化工作流和脚本 |309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查询循环进入空闲状态后、自动退出前等待的时间(毫秒)。适用于使用 SDK 模式的自动化工作流和脚本 |

305| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 设置为 `1` 可启用 [agent team](/docs/zh-CN/agent-teams)。agent team 为实验性功能,默认禁用 |310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 设置为 `1` 可启用 [agent team](/docs/zh-CN/agent-teams)。agent team 为实验性功能,默认禁用 |

306| `CLAUDE_CODE_EXTRA_BODY` | 要合并到每个 API 请求体顶层的 JSON 对象。适用于传递 Claude Code 未直接公开的特定于提供商的参数。在您的 shell 中导出的值也适用于您通过 `claude agents` 或 `--bg` 分派的[后台会话](/docs/zh-CN/agent-view)。在 v2.1.206 之前,后台会话会忽略 shell 导出的值,而使用后台监督进程继承的副本 |311| `CLAUDE_CODE_EXTRA_BODY` | 要合并到每个 API 请求体顶层的 JSON 对象。适用于传递 Claude Code 未直接公开的提供商特定参数。在 shell 中导出的值也会应用于您通过 `claude agents` 或 `--bg` 分派的[后台会话](/docs/zh-CN/agent-view)。在 v2.1.206 之前,后台会话会忽略 shell 导出的值,而使用后台监管进程所继承的副本 |

307| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆盖文件读取的默认 token 限制。当您需要完整读取较大文件时很有用 |312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆盖文件读取的默认 token 限制。适用于需要完整读取较大文件的情况 |

308| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 设置为 `1` 可强制保留会话记录、提示词历史并进行 `claude agents` 注册,即使此 `claude` 是从另一个 Claude Code 会话内部启动的。当继承的 `CLAUDE_CODE_CHILD_SESSION` 值(例如来自 `screen` 会话,或最初由 Claude Code 的 Bash 工具启动的后台启动器)导致真正的顶层会话被误判为嵌套会话时使用。自 v2.1.178 起,Claude Code 会自动检测 tmux 的情况并忽略继承的标记,因此 tmux 不再需要此变量。在 v2.1.169 及更早版本中同样有效;在 v2.1.170 和 v2.1.171 中无效,因为这两个版本移除了它所覆盖的嵌套会话检测 |313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 设置为 `1` 可强制持久化会话记录、提示词历史并注册到 `claude agents`,即使此 `claude` 是从另一个 Claude Code 会话内部启动的。当继承的 `CLAUDE_CODE_CHILD_SESSION` 值(例如来自 `screen` 会话,或最初由 Claude Code 的 Bash 工具启动的后台启动器)导致真正的顶层会话被误判为嵌套会话时使用。从 v2.1.178 起,Claude Code 会自动检测 tmux 的情况并忽略继承的标记,因此 tmux 不再需要此变量。在 v2.1.169 及更早版本中同样有效;在 v2.1.170 和 v2.1.171 中不起作用,因为这两个版本移除了它所覆盖的嵌套会话检测 |

309| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 当您的终端支持删除线但未被自动检测到时(例如通过 SSH 且未转发 `TERM_PROGRAM`),设置为 `1` 可强制将 Claude 回复中的 `~~text~~` 渲染为删除线。如果不设置,未被检测到的终端会显示字面的 `~~` 标记,而不是将文本渲染为删除线。需要 Claude Code v2.1.186 或更高版本 |314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 当终端支持删除线但未被自动检测到时(例如通过 SSH 连接且未转发 `TERM_PROGRAM`),设置为 `1` 可强制将 Claude 回复中的 `~~text~~` 渲染为删除线。如果不设置,未被检测到的终端会显示字面的 `~~` 标记,而不是将文本渲染为删除线。需要 Claude Code v2.1.186 或更高版本 |

310| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 当您的终端支持 DEC 私有模式 2026 [同步输出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)但未被自动检测到时,设置为 `1` 可强制启用。适用于实现了 BSU/ESU 但不响应能力探测的模拟器,例如 Emacs `eat`。在 tmux 下无效。与切换到[全屏渲染](/docs/zh-CN/fullscreen)的 `CLAUDE_CODE_NO_FLICKER` 不同,此变量不会更改渲染器 |315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 当终端支持但未被自动检测到时,设置为 `1` 可强制启用 DEC 私有模式 2026 [同步输出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。适用于实现了 BSU/ESU 但不响应能力探测的模拟器,例如 Emacs `eat`。在 tmux 下无效。与切换到[全屏渲染](/docs/zh-CN/fullscreen)的 `CLAUDE_CODE_NO_FLICKER` 不同,此变量不会更改渲染器 |

311| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 当您的终端使用 Unicode 占位符绘制 kitty 图形协议图像但未被自动检测到时,设置为 `1` 可将 [mod `Image` 元素](/docs/zh-CN/plugins/mods/reference#elements)绘制为图片。请参阅 [Claude Code 会检测哪些终端](/docs/zh-CN/plugins/mods/gallery#image-and-client),以及为什么它在 tmux 或 screen 中无效 |316| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 当终端使用 Unicode 占位符绘制 kitty 图形协议图像但未被自动检测到时,设置为 `1` 可将 [mod `Image` 元素](/docs/zh-CN/plugins/mods/reference#elements)绘制为图片。请参阅 [Claude Code 会检测哪些终端](/docs/zh-CN/plugins/mods/gallery#image-and-client),以及为什么它在 tmux 或 screen 中无济于事 |

312| `CLAUDE_CODE_FORK_SUBAGENT` | 控制[分叉模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off),该模式允许 Claude 自行生成[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation),默认仅在交互式会话中开启。设置为 `1` 可在 `claude -p` 和 Agent SDK 中也开启,设置为 `0` 可在所有类型的会话中关闭。无论分叉模式是否开启,您都可以运行 `/subtask`。交互式默认值需要 Claude Code v2.1.232 或更高版本;在更早的版本中,请将该变量设置为 `1` 以开启分叉模式 |317| `CLAUDE_CODE_FORK_SUBAGENT` | 控制[分叉模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off),该模式允许 Claude 自行生成[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation),默认仅在交互式会话中开启。设置为 `1` 可同时在 `claude -p` 和 Agent SDK 中开启,设置为 `0` 则在所有类型的会话中关闭。无论分叉模式是否开启,您都可以运行 `/subtask`。交互式会话中的默认开启需要 Claude Code v2.1.232 或更高版本;在更早的版本中,将该变量设置为 `1` 可开启分叉模式 |

313| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 设置为 `1` 可在 `claude -p --output-format stream-json` 输出中发出[子代理](/docs/zh-CN/sub-agents)文本和思考块,与 [`--forward-subagent-text`](/docs/zh-CN/cli-reference#cli-flags) 标志的行为相同。当调用 `claude` 的工具框架无法自行传递该标志时,请使用该变量。该标志在非交互模式且使用 stream-json 输出以外的情况下会报错退出,而该变量在这些情况下会被忽略,以便在进程范围内设置时嵌套调用仍能正常工作。需要 Claude Code v2.1.211 或更高版本 |318| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 设置为 `1` 可在 `claude -p --output-format stream-json` 输出中发出[子代理](/docs/zh-CN/sub-agents)的文本和思考块,行为与 [`--forward-subagent-text`](/docs/zh-CN/cli-reference#cli-flags) 标志相同。当调用 `claude` 的外部框架无法自行传递该标志时,请使用此变量。该标志在"使用 stream-json 输出的非交互模式"之外会报错退出,而此变量在这些情况下会被忽略,因此在进程范围内设置时,嵌套调用仍能正常工作。需要 Claude Code v2.1.211 或更高版本 |

314| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 设置为 `1` 可在自定义代理或第三方提供商(例如 Amazon Bedrock 或 Claude Platform on AWS)上发送[网关提示标头](/docs/zh-CN/llm-gateway-protocol#gateway-hint-headers),例如 `x-claude-code-request-class` 和 `x-claude-code-compaction`。设置为 `0` 可在所有连接上停止发送这些标头,包括直接连接到 Anthropic API 的情况(Claude Code 默认在此情况下发送)。需要 Claude Code v2.1.273 或更高版本 |319| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 设置为 `1` 可在自定义代理或第三方提供商(例如 Amazon Bedrock 或 Claude Platform on AWS)上发送[网关提示标头](/docs/zh-CN/llm-gateway-protocol#gateway-hint-headers),例如 `x-claude-code-request-class` 和 `x-claude-code-compaction`。设置为 `0` 可在所有连接上停止发送这些标头,包括直接连接到 Anthropic API 的情况(Claude Code 默认会在此类连接上发送这些标头)。需要 Claude Code v2.1.273 或更高版本 |

315| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | 由 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` 开启的[网关模型发现](/docs/zh-CN/llm-gateway-protocol#model-discovery)请求的超时时间(毫秒)(默认:`3000`)。当您的网关在启动时需要超过三秒才能响应 `/v1/models` 时,请调高该值。仅接受纯数字;`0`、负值及其他写法会保留默认值。需要 Claude Code v2.1.269 或更高版本 |320| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | 由 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` 开启的[网关模型发现](/docs/zh-CN/llm-gateway-protocol#model-discovery)请求的超时时间(毫秒,默认:`3000`)。当您的网关在启动时需要超过三秒才能响应 `/v1/models` 时,请调高此值。仅接受纯数字;`0`、负值和其他写法会保留默认值。需要 Claude Code v2.1.269 或更高版本 |

316| `CLAUDE_CODE_GIT_BASH_PATH` | 仅限 Windows:Git Bash 可执行文件(`bash.exe`)的路径。当 Git Bash 已安装但不在您的 PATH 中时使用。如果该路径不存在,或文件名不是 `bash.exe`、`sh.exe`、`bash` 或 `sh`,Claude Code 会忽略该变量并像未设置一样自动检测 Git Bash,同时记录一条使用 `--debug` 可见的警告。在 v2.1.219 之前,路径不存在时 Claude Code 会在启动时退出,并且会将任何现有文件用作 shell,而不检查它是否为 bash 或 sh。请参阅 [Windows 设置](/docs/zh-CN/setup#set-up-on-windows) |321| `CLAUDE_CODE_GIT_BASH_PATH` | 仅限 Windows:Git Bash 可执行文件(`bash.exe`)的路径。当已安装 Git Bash 但它不在 PATH 中时使用。如果该路径不存在,或文件名不是 `bash.exe`、`sh.exe`、`bash` 或 `sh`,Claude Code 会忽略此变量并像未设置一样自动检测 Git Bash,同时记录一条可通过 `--debug` 查看的警告。在 v2.1.219 之前,路径不存在时 Claude Code 会在启动时退出,并且会将任何现有文件用作 shell,而不检查它是否为 bash 或 sh。请参阅 [Windows 设置](/docs/zh-CN/setup#set-up-on-windows) |

317| `CLAUDE_CODE_GLOB_HIDDEN` | 设置为 `false` 可在 Claude 调用 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior)时从结果中排除点文件。默认包含。不影响 `@` 文件自动补全、`ls`、Grep 或 Read |322| `CLAUDE_CODE_GLOB_HIDDEN` | 设置为 `false` 可在 Claude 调用 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior)时从结果中排除点文件。默认包含。不影响 `@` 文件自动补全、`ls`、Grep 或 Read |

318| `CLAUDE_CODE_GLOB_NO_IGNORE` | 设置为 `false` 可让 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior)遵循 `.gitignore` 模式。默认情况下,Glob 返回所有匹配的文件,包括被 gitignore 忽略的文件。不影响 `@` 文件自动补全,后者有自己的 [`respectGitignore` 设置](/docs/zh-CN/settings-reference#respectgitignore) |323| `CLAUDE_CODE_GLOB_NO_IGNORE` | 设置为 `false` 可使 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior)遵循 `.gitignore` 模式。默认情况下,Glob 会返回所有匹配的文件,包括被 gitignore 忽略的文件。不影响 `@` 文件自动补全,后者有自己的 [`respectGitignore` 设置](/docs/zh-CN/settings-reference#respectgitignore) |

319| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 工具文件发现的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上为 60 秒 |324| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 工具文件发现的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上为 60 秒 |

320| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | 后台工作可以让活动目标等待多少分钟,之后 Claude Code 会[要求 Claude 检查它](/docs/zh-CN/goal#background-work-defers-evaluation)。默认 `30`。设置为 `0` 可关闭检查。请以纯数字给出整分钟数,最大为 `10080`,即一周。Claude Code 会将任何其他值视为未设置并使用默认值。需要 Claude Code v2.1.234 或更高版本 |325| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | 后台工作可以让活动目标等待多少分钟,超过后 Claude Code 会[要求 Claude 检查该目标](/docs/zh-CN/goal#background-work-defers-evaluation)。默认为 `30`。设置为 `0` 可关闭检查。请以纯数字给出整数分钟数,最大为 `10080`,即一周。Claude Code 会将其他任何值视为未设置并使用默认值。需要 Claude Code v2.1.234 或更高版本 |

321| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | 设置为 `0` 可关闭发送到 `api.anthropic.com` 的 Claude API、遥测和 [Artifact](/docs/zh-CN/artifacts) 发布请求体的 gzip 压缩。默认情况下,Claude Code 会在直接连接上压缩较大的请求体,而当您通过代理发送请求、配置客户端证书或设置 `NODE_EXTRA_CA_CERTS` 时会跳过压缩。如果 Claude Code 无法检测到的 [TLS 检查代理](/docs/zh-CN/network-config#ca-certificate-store)错误处理了压缩请求,请使用 `0` |326| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | 设置为 `0` 可关闭对发送到 `api.anthropic.com` 的 Claude API、遥测和 [Artifact](/docs/zh-CN/artifacts) 发布请求体的 gzip 压缩。默认情况下,Claude Code 会在直接连接时压缩较大的请求体,而在您通过代理发送请求、配置客户端证书或设置 `NODE_EXTRA_CA_CERTS` 时跳过压缩。如果 Claude Code 无法检测到的 [TLS 检查代理](/docs/zh-CN/network-config#ca-certificate-store)无法正确处理压缩请求,请使用 `0` |

322| `CLAUDE_CODE_HIDE_CWD` | 设置为 `1` 可在启动徽标中隐藏工作目录。适用于路径会暴露您的操作系统用户名的屏幕共享或录屏场景 |327| `CLAUDE_CODE_HIDE_CWD` | 设置为 `1` 可在启动徽标中隐藏工作目录。适用于路径会暴露您操作系统用户名的屏幕共享或录制场景 |

323| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆盖用于连接 IDE 扩展的主机地址。默认情况下,Claude Code 会自动检测正确的地址,包括 WSL 到 Windows 的路由 |328| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆盖用于连接 IDE 扩展的主机地址。默认情况下,Claude Code 会自动检测正确的地址,包括 WSL 到 Windows 的路由 |

324| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 可跳过 IDE 扩展的自动安装。等同于将 [`autoInstallIdeExtension`](/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |329| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 可跳过 IDE 扩展的自动安装。等同于将 [`autoInstallIdeExtension`](/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |

325| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 设置为 `1` 可在连接期间跳过 IDE 锁文件条目的验证。当 IDE 正在运行但自动连接找不到它时使用 |330| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 设置为 `1` 可在连接时跳过对 IDE 锁文件条目的验证。当 IDE 正在运行但自动连接仍找不到它时使用 |

326| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 在 Agent 工具拒绝再生成一个子代理之前,一个会话中可以同时运行的[子代理](/docs/zh-CN/sub-agents#concurrent-subagent-limit)数量(默认:20)。接受纯数字形式的正整数;其他任何值都会被忽略,因此该变量可以调整上限,但不能禁用它。需要 Claude Code v2.1.217 或更高版本 |331| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 一个会话中最多可同时运行多少个[子代理](/docs/zh-CN/sub-agents#concurrent-subagent-limit),超过后 Agent 工具将拒绝再生成新的子代理(默认:20)。接受以纯数字表示的正整数;其他值会被忽略,因此此变量可以调整上限,但不能禁用它。需要 Claude Code v2.1.217 或更高版本 |

327| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | 覆盖 Claude Code 为当前模型假定的上下文窗口大小。自 v2.1.193 起,其应用方式取决于 Claude Code 如何解析模型 ID;请参阅[为网关或自定义模型 ID 修正窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。当通过 `ANTHROPIC_BASE_URL` 路由到某个模型,而其上下文窗口与其名称对应的内置大小不匹配时使用 |332| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | 覆盖 Claude Code 为当前模型假定的上下文窗口大小。从 v2.1.193 起,其应用方式取决于 Claude Code 如何解析模型 ID;请参阅[为网关或自定义模型 ID 更正窗口大小](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id)。当通过 `ANTHROPIC_BASE_URL` 路由到某个模型,而其上下文窗口与其名称对应的内置大小不匹配时使用 |

328| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Claude Code 发送给模型的每个 MCP 工具描述和每个 MCP 服务器指令的最大长度(字符数)(默认:2048)。Claude Code 会[截断更长的文本](/docs/zh-CN/mcp#for-mcp-server-authors)。接受纯数字形式的正整数。其他任何值都会被忽略并使用默认值。需要 Claude Code v2.1.280 或更高版本 |333| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Claude Code 发送给模型的每个 MCP 工具描述和每个 MCP 服务器指令的最大长度(字符数,默认:2048)。Claude Code 会[截断更长的文本](/docs/zh-CN/mcp#for-mcp-server-authors)。接受以纯数字表示的正整数。其他值会被忽略并应用默认值。需要 Claude Code v2.1.280 或更高版本 |

329| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 设置大多数请求的最大输出 token 数。默认值和上限因模型而异;请参阅[最大输出 token](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison)。Claude Code 会将超过模型上限的值降至上限。对于 Claude Code 无法解析为已知模型的模型 ID,默认值为 32000,上限为 128000。增大此值会减少触发[自动压缩](/docs/zh-CN/costs#reduce-token-usage)之前可用的有效上下文窗口 |334| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 设置大多数请求的最大输出 token 数。默认值和上限因模型而异;请参阅[最大输出 token](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison)。如果设置的值超过模型上限,Claude Code 会将其降至上限。对于 Claude Code 无法解析为已知模型的模型 ID,默认值为 32000,上限为 128000。增大此值会减少触发[自动压缩](/docs/zh-CN/costs#reduce-token-usage)之前可用的有效上下文窗口 |

330| `CLAUDE_CODE_MAX_RETRIES` | 覆盖失败 API 请求的重试次数(默认:10)。自 v2.1.186 起上限为 15;自 v2.1.199 起,`CLAUDE_CODE_RETRY_WATCHDOG` 会提高默认值并移除上限。对于需要等待较长中断的无人值守会话,请改为设置 `CLAUDE_CODE_RETRY_WATCHDOG` |335| `CLAUDE_CODE_MAX_RETRIES` | 覆盖失败 API 请求的重试次数(默认:10)。从 v2.1.186 起上限为 15;从 v2.1.199 起,`CLAUDE_CODE_RETRY_WATCHDOG` 会提高默认值并取消上限。对于需要等待更长时间服务中断的无人值守会话,请改为设置 `CLAUDE_CODE_RETRY_WATCHDOG` |

331| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | 已在 v2.1.224 中移除,现在不起任何作用。以前用于限制 Claude 在一个会话中可通过 Agent 工具生成的[子代理](/docs/zh-CN/sub-agents)总数(默认:200);超出上限的生成会失败并显示 `Subagent spawn limit reached`。[并发子代理限制](/docs/zh-CN/sub-agents#concurrent-subagent-limit)和[深度限制](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)仍然适用 |336| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | 已在 v2.1.224 中移除,现在不起作用。此前用于限制 Claude 在一个会话中可通过 Agent 工具生成的[子代理](/docs/zh-CN/sub-agents)总数(默认:200);超过上限时生成会失败并显示 `Subagent spawn limit reached`。[并发子代理限制](/docs/zh-CN/sub-agents#concurrent-subagent-limit)和[深度限制](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)仍然适用 |

332| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | 主对话之下允许的[子代理层数](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)(默认:3)。在默认值下,子代理可以生成自己的子代理,而第三层的子代理不能再继续生成;设置为 `1` 可关闭嵌套。在 v2.1.217 至 v2.1.218 中,默认值为 1,因此除非您提高限制,否则子代理无法生成自己的子代理;v2.1.219 将默认值提高到 3。接受纯数字形式的正整数;其他任何值都会被忽略,因此该限制可以调整但不能移除。需要 Claude Code v2.1.217 或更高版本 |337| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | 主对话之下允许的[子代理层数](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)(默认:3)。在默认值下,子代理可以生成自己的子代理,而位于第三层的子代理不能再继续生成;设置为 `1` 可关闭嵌套。在 v2.1.217 至 v2.1.218 中,默认值为 1,因此除非您提高限制,否则子代理无法生成自己的子代理;v2.1.219 将默认值提高到 3。接受以纯数字表示的正整数;其他值会被忽略,因此该限制可以调整,但不能移除。需要 Claude Code v2.1.217 或更高版本 |

333| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可并行执行的只读工具和子代理的最大数量(默认:10)。更高的值会提高并行度,但会消耗更多资源 |338| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可并行执行的只读工具和子代理的最大数量(默认:10)。值越高,并行度越高,但消耗的资源也越多 |

334| `CLAUDE_CODE_MAX_TURNS` | 在未传递显式限制时限制 agentic 轮次数。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),两者都设置时后者优先。非正整数的值会在启动时被拒绝并报错,而不会被视为无上限 |339| `CLAUDE_CODE_MAX_TURNS` | 在未传递显式限制时,限制 agentic 轮次的数量。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),两者都设置时后者优先。非正整数的值会在启动时被拒绝并报错,而不是被视为无上限 |

335| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-CN/tools-reference#session-search-limit) 调用次数上限(默认:200)。当 Claude 达到上限时,后续 WebSearch 调用会返回一条通知,告知它使用已收集的信息继续。接受没有上限的正整数。其他任何值都会被忽略并使用默认值,因此该上限可以提高但不能关闭。需要 Claude Code v2.1.212 或更高版本 |340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-CN/tools-reference#session-search-limit) 调用次数上限(默认:200)。当 Claude 达到上限后,后续 WebSearch 调用会返回一条通知,告知它使用已收集的信息继续。接受任意正整数,没有最大值限制。其他值会被忽略并应用默认值,因此该上限可以提高,但不能关闭。需要 Claude Code v2.1.212 或更高版本 |

336| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 可在启动 stdio MCP 服务器时仅使用安全的基线环境加上服务器配置的 `env`,而不是继承您的 shell 环境 |341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 可在启动 stdio MCP 服务器时仅提供安全的基线环境加上服务器配置的 `env`,而不是继承您的 shell 环境 |

337| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在运行的 MCP 工具调用[转为后台任务](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)之前经过的时间(毫秒)(默认:120000,即 2 分钟)。设置为 `0` 可关闭自动转入后台。需要 Claude Code v2.1.212 或更高版本 |342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在运行的 MCP 工具调用在经过多长时间(毫秒)后[转为后台任务](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)(默认:120000,即 2 分钟)。设置为 `0` 可关闭自动转入后台。需要 Claude Code v2.1.212 或更高版本 |

338| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非交互](/docs/zh-CN/headless)会话的第一轮等待仍在连接中的 MCP 服务器的时长(毫秒),用于替代默认的[第一轮等待](/docs/zh-CN/agent-sdk/mcp#connection-timing)。设置后,等待涵盖所有待连接的服务器。设置为 `0` 可跳过等待。无论该值如何,[`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 服务器都会保留自己的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更高版本 |343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非交互](/docs/zh-CN/headless)会话的第一轮等待仍在连接中的 MCP 服务器的时长(毫秒),用于替代默认的[首轮等待](/docs/zh-CN/agent-sdk/mcp#connection-timing)。设置后,该等待涵盖所有待连接的服务器。设置为 `0` 可跳过等待。无论该值如何,[`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 服务器都会保留其自身的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更高版本 |

339| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | MCP 工具调用的空闲超时时间(毫秒)。当 stdio、HTTP、SSE、WebSocket 或 [claude.ai 连接器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai) MCP 服务器在这段时间内未发送任何响应或进度通知时,工具调用会中止并报错,而不是等待整体的 `MCP_TOOL_TIMEOUT`。覆盖各传输方式的默认值:网络服务器为 300000(5 分钟),stdio 服务器为 1800000(30 分钟)。设置为 `0` 可禁用空闲检查。低于 1000 的值会被提高到一秒,并且该值的上限为有效的 `MCP_TOOL_TIMEOUT`。`.mcp.json` 中至少为 1000 的单服务器 `timeout` 会将该服务器的空闲窗口提高到至少 `timeout` 值。不适用于 IDE 服务器或 SDK 进程内服务器。需要 Claude Code v2.1.187 或更高版本。在 v2.1.203 之前,stdio 服务器不受空闲超时限制 |344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | MCP 工具调用的空闲超时时间(毫秒)。当 stdio、HTTP、SSE、WebSocket 或 [claude.ai 连接器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai) MCP 服务器在这段时间内既没有发送响应也没有发送进度通知时,工具调用会报错中止,而不是等待整体的 `MCP_TOOL_TIMEOUT`。覆盖各传输方式的默认值:网络服务器为 300000(5 分钟),stdio 服务器为 1800000(30 分钟)。设置为 `0` 可禁用空闲检查。低于 1000 的值会被提高到一秒,且该值的上限为生效的 `MCP_TOOL_TIMEOUT`。`.mcp.json` 中至少为 1000 的单服务器 `timeout` 会将该服务器的空闲窗口提高到至少等于 `timeout` 值。不适用于 IDE 服务器或 SDK 进程内服务器。需要 Claude Code v2.1.187 或更高版本。在 v2.1.203 之前,stdio 服务器不受空闲超时限制 |

340| `CLAUDE_CODE_MESSAGING_SOCKET` | 由 Claude Code 设置,而不是由您设置:在绑定了[收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)的会话中,Claude Code 在绑定套接字时会将该套接字的路径导出到 hook 和 Bash 命令。在启动时即开启消息传递的会话中,Claude Code 会在任何 hook 运行之前绑定套接字。本机上的其他会话会将消息投递到此路径。每个会话导出自己的套接字,而不是从父会话继承的套接字,到达该套接字的消息会经过会话的[入站控制](/docs/zh-CN/cross-session-messaging#control-inbound-messages)。设置中的 `env` 块无法设置它。需要 Claude Code v2.1.224 或更高版本 |345| `CLAUDE_CODE_MESSAGING_SOCKET` | 由 Claude Code 设置,而非由您设置:在绑定了[收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)的会话中,Claude Code 在绑定套接字时会将该套接字的路径导出给 hook 和 Bash 命令。在启动时即开启消息功能的会话中,Claude Code 会在任何 hook 运行之前绑定套接字。本机上的其他会话会将消息投递到此路径。每个会话导出自己的套接字,而不是从父会话继承的套接字,到达该套接字的消息会经过该会话的[入站控制](/docs/zh-CN/cross-session-messaging#control-inbound-messages)。设置中的 `env` 块无法设置此变量。需要 Claude Code v2.1.224 或更高版本 |

341| `CLAUDE_CODE_MESSAGING_TOKEN` | 由 Claude Code 设置,而不是由您设置:在绑定了[收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)的会话中,Claude Code 会将此每会话令牌与 `CLAUDE_CODE_MESSAGING_SOCKET` 一起导出到 hook 和 Bash 命令。向套接字发送消息的脚本可以将 `{"type":"auth","token":"<token>"}` 作为第一行发送,以证明其属于该会话。在原生 Windows 上,Claude Code 要求必须发送此行,并会关闭任何未以有效此行开头的连接。[自有子进程规则](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)说明了 Claude Code 何时会参考该令牌。每个会话导出自己的令牌,绝不会是从父会话继承的令牌。设置中的 `env` 块无法设置它。需要 Claude Code v2.1.228 或更高版本 |346| `CLAUDE_CODE_MESSAGING_TOKEN` | 由 Claude Code 设置,而非由您设置:在绑定了[收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)的会话中,Claude Code 会将此会话专属令牌与 `CLAUDE_CODE_MESSAGING_SOCKET` 一起导出给 hook 和 Bash 命令。向该套接字发送消息的脚本可以将 `{"type":"auth","token":"<token>"}` 作为第一行发送,以证明它属于该会话。在原生 Windows 上,Claude Code 要求发送此行,并会关闭任何未以有效认证行开头的连接。[自有子进程规则](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket)说明了 Claude Code 何时会检查该令牌。每个会话导出自己的令牌,绝不会使用从父会话继承的令牌。设置中的 `env` 块无法设置此变量。需要 Claude Code v2.1.228 或更高版本 |

342| `CLAUDE_CODE_NATIVE_CURSOR` | 设置为 `1` 可在输入插入点显示终端自身的光标,而不是绘制的方块。该光标遵循终端的闪烁、形状和焦点设置。设置为 `0` 与不设置该变量效果相同,因此在终端自身光标已开启的会话中,它不会恢复绘制的方块 |347| `CLAUDE_CODE_NATIVE_CURSOR` | 设置为 `1` 可在输入插入点显示终端自身的光标,而不是绘制的方块。该光标会遵循终端的闪烁、形状和焦点设置。设置为 `0` 与不设置该变量效果相同,因此在终端自身光标已开启的会话中,它不会恢复绘制的方块 |

343| `CLAUDE_CODE_NEW_INIT` | 设置为 `1` 可让 `/init` 运行交互式设置流程。该流程会先询问要生成哪些文件(包括 CLAUDE.md、skill 和 hook),然后再探索代码库并写入这些文件。未设置此变量时,`/init` 会自动生成 CLAUDE.md 而不进行询问 |348| `CLAUDE_CODE_NEW_INIT` | 设置为 `1` 可让 `/init` 运行交互式设置流程。该流程会在探索代码库并写入文件之前,询问要生成哪些文件,包括 CLAUDE.md、skill 和 hook。如果不设置此变量,`/init` 会自动生成 CLAUDE.md 而不进行询问 |

344| `CLAUDE_CODE_NONBLOCKING_STDOUT` | 设置为 `1` 可通过第二个非阻塞文件描述符写入终端输出,这样停止读取的终端(例如已暂停的 tmux control-mode 窗格或停滞的 SSH 连接)就无法在会话中途冻结 Claude Code。在 stdout 为终端时适用于 macOS、Linux 和 WSL。需要 Claude Code v2.1.261 或更高版本 |349| `CLAUDE_CODE_NONBLOCKING_STDOUT` | 设置为 `1` 可通过第二个非阻塞文件描述符写入终端输出,这样停止读取的终端(例如已暂停的 tmux 控制模式窗格或停滞的 SSH 连接)就不会在会话中途冻结 Claude Code。在 stdout 为终端时适用于 macOS、Linux 和 WSL。需要 Claude Code v2.1.261 或更高版本 |

345| `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES` | 限制 Claude Code 重新发送超时的[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)的次数。设置为 `0` 时,请求会在第一次超时时失败。有关超时时间,请参阅[调整重试行为](/docs/zh-CN/errors#tune-retry-behavior)。需要 Claude Code v2.1.285 或更高版本 |350| `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES` | 限制 Claude Code 重新发送超时的[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)的次数。设置为 `0` 时,请求在第一次超时时即失败。有关超时时间,请参阅[调整重试行为](/docs/zh-CN/errors#tune-retry-behavior)。需要 Claude Code v2.1.285 或更高版本 |

346| `CLAUDE_CODE_NO_FLICKER` | 设置为 `1` 可启用[全屏渲染](/docs/zh-CN/fullscreen),这是一项研究预览功能,可减少闪烁并在长对话中保持内存占用平稳。覆盖 [`tui`](/docs/zh-CN/settings-reference#tui) 设置;您也可以使用 `/tui fullscreen` 进行切换 |351| `CLAUDE_CODE_NO_FLICKER` | 设置为 `1` 可启用[全屏渲染](/docs/zh-CN/fullscreen),这是一项研究预览功能,可减少闪烁并在长对话中保持内存占用平稳。覆盖 [`tui`](/docs/zh-CN/settings-reference#tui) 设置;您也可以使用 `/tui fullscreen` 进行切换 |

347| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | 用于 Claude.ai 身份验证的 OAuth 刷新令牌。设置后,`claude auth login` 会直接交换此令牌,而不是打开浏览器。需要 `CLAUDE_CODE_OAUTH_SCOPES`。适用于在自动化环境中配置身份验证 |352| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | 用于 Claude.ai 身份验证的 OAuth 刷新令牌。设置后,`claude auth login` 会直接交换此令牌,而不是打开浏览器。需要同时设置 `CLAUDE_CODE_OAUTH_SCOPES`。适用于在自动化环境中预配身份验证 |

348| `CLAUDE_CODE_OAUTH_SCOPES` | 签发刷新令牌时所用的 OAuth 作用域,以空格分隔,例如 `"user:profile user:inference user:sessions:claude_code"`。设置 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 时必需 |353| `CLAUDE_CODE_OAUTH_SCOPES` | 颁发刷新令牌时使用的以空格分隔的 OAuth 作用域,例如 `"user:profile user:inference user:sessions:claude_code"`。设置 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 时必需 |

349| `CLAUDE_CODE_OAUTH_TOKEN` | 用于 claude.ai 身份验证的 OAuth 访问令牌。是 SDK 和自动化环境中 `/login` 的替代方案。优先于钥匙串中存储的凭据。使用 [`claude setup-token`](/docs/zh-CN/authentication#generate-a-long-lived-token) 生成。除非您运行 [`/login`](/docs/zh-CN/authentication#authentication-precedence),否则 Claude Code 会在整个会话中使用您设置的令牌。要替换过期的令牌,请生成新令牌并重新启动 |354| `CLAUDE_CODE_OAUTH_TOKEN` | 用于 claude.ai 身份验证的 OAuth 访问令牌。是 SDK 和自动化环境中 `/login` 的替代方案。优先于钥匙串中存储的凭据。可使用 [`claude setup-token`](/docs/zh-CN/authentication#generate-a-long-lived-token) 生成。除非您运行 [`/login`](/docs/zh-CN/authentication#authentication-precedence),否则 Claude Code 会在整个会话中使用您设置的令牌。要替换过期的令牌,请生成新令牌并重新启动 |

350| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | 已在 v2.1.160 中移除,现在不起任何作用。以前用于将[快速模式](/docs/zh-CN/fast-mode)固定到 Claude Opus 4.6,而不是当前默认模型。Opus 4.6 已不再支持快速模式 |355| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | 已在 v2.1.160 中移除,现在不起作用。此前用于将[快速模式](/docs/zh-CN/fast-mode)固定到 Claude Opus 4.6,而不是当前默认模型。Opus 4.6 不再支持快速模式 |

351| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | 承载内容的 OpenTelemetry 属性(模型响应、工具内容、系统提示词、原始 API 请求体)的最大长度,包括截断标记,以 UTF-16 代码单元计(默认:61440,即 60 KB)。仅当您的遥测后端接受大于 64 KB 的属性值时才调高该值,或调低该值以减少遥测量。需要 Claude Code v2.1.214 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage) |356| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | 承载内容的 OpenTelemetry 属性(模型响应、工具内容、系统提示词、原始 API 正文)的最大长度,包含截断标记,以 UTF-16 代码单元计(默认:61440,即 60 KB)。仅当您的遥测后端接受大于 64 KB 的属性值时才调高此值,也可以调低此值以减少遥测数据量。需要 Claude Code v2.1.214 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage) |

352| `CLAUDE_CODE_OTEL_DIAG_STDERR` | 设置为 `1` 可将 OpenTelemetry 导出器诊断错误写入 stderr。默认情况下,这些错误仅在使用 `--debug` 时显示,因此配置错误的导出器(例如 Prometheus 端口冲突)在其他情况下会静默失败。需要 Claude Code v2.1.179 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage) |357| `CLAUDE_CODE_OTEL_DIAG_STDERR` | 设置为 `1` 可将 OpenTelemetry 导出器的诊断错误写入 stderr。默认情况下,这些错误仅在使用 `--debug` 时显示,因此配置错误的导出器(例如 Prometheus 端口冲突)否则会静默失败。需要 Claude Code v2.1.179 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage) |

353| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待处理 OpenTelemetry span 的超时时间(毫秒)(默认:5000)。请参阅[监控](/docs/zh-CN/monitoring-usage) |358| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待处理 OpenTelemetry span 的超时时间(毫秒,默认:5000)。请参阅[监控](/docs/zh-CN/monitoring-usage) |

354| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态 OpenTelemetry 标头的间隔(毫秒)(默认:1740000 / 29 分钟)。请参阅[动态标头](/docs/zh-CN/monitoring-usage#dynamic-headers) |359| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态 OpenTelemetry 标头的间隔(毫秒,默认:1740000 / 29 分钟)。请参阅[动态标头](/docs/zh-CN/monitoring-usage#dynamic-headers) |

355| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 导出器在关闭时完成的超时时间(毫秒)(默认:2000)。如果指标在退出时丢失,请调高该值。请参阅[监控](/docs/zh-CN/monitoring-usage) |360| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 导出器在关闭时完成操作的超时时间(毫秒,默认:2000)。如果退出时指标丢失,请调高此值。请参阅[监控](/docs/zh-CN/monitoring-usage) |

356| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | 当 API 以 `529` 过载错误拒绝请求时,[自动重试](/docs/zh-CN/errors#tune-retry-behavior)之间指数退避的起始延迟(毫秒),用于替代默认的 500。当 API 容量已满时,调高该值可将重试分散到更长的时间窗口内。请以纯数字给出 500 到 32000 之间的整毫秒数;Claude Code 会将任何其他值视为未设置。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1`,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送时,不产生任何效果。需要 Claude Code v2.1.292 或更高版本 |361| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | 对于被 API 以 `529` 过载错误拒绝的请求,[自动重试](/docs/zh-CN/errors#tune-retry-behavior)之间指数退避的起始延迟(毫秒),用于替代默认的 500。当 API 达到容量上限时,调高此值可将重试分散到更长的时间窗口内。请以纯数字给出 500 到 32000 之间的整数毫秒数;Claude Code 会将其他任何值视为未设置。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1` 时,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送的时,此变量不起作用。需要 Claude Code v2.1.292 或更高版本 |

357| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 设置为 `1` 可让 Claude Code 在有新版本可用时在后台运行您的包管理器的升级命令。适用于 Homebrew 和 WinGet 安装。其他包管理器仍会显示升级命令而不运行它。请参阅[自动更新](/docs/zh-CN/setup#auto-updates) |362| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 设置为 `1` 可让 Claude Code 在有新版本可用时于后台运行包管理器的升级命令。适用于 Homebrew 和 WinGet 安装。其他包管理器仍会显示升级命令而不运行它。请参阅[自动更新](/docs/zh-CN/setup#auto-updates) |

358| `CLAUDE_CODE_PERFORCE_MODE` | 设置为 `1` 可启用感知 Perforce 的写保护。设置后,如果目标文件缺少所有者写入位(Perforce 会在同步的文件上清除该位,直到 `p4 edit` 将其打开),Edit、Write 和 NotebookEdit 会失败并给出 `p4 edit <file>` 提示。这可防止 Claude Code 绕过 Perforce 变更跟踪 |363| `CLAUDE_CODE_PERFORCE_MODE` | 设置为 `1` 可启用感知 Perforce 的写保护。设置后,如果目标文件缺少所有者写入位,Edit、Write 和 NotebookEdit 会失败并给出 `p4 edit <file>` 提示;Perforce 会清除已同步文件的该位,直到 `p4 edit` 将其打开。这可以防止 Claude Code 绕过 Perforce 变更跟踪 |

359| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆盖插件根目录。尽管名称如此,它设置的是父目录,而不是缓存本身:市场和插件缓存位于此路径下的子目录中。默认为 `~/.claude/plugins` |364| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆盖插件根目录。尽管名称如此,此变量设置的是父目录,而非缓存本身:市场和插件缓存位于此路径下的子目录中。默认为 `~/.claude/plugins` |

360| `CLAUDE_CODE_PLUGIN_DIRS` | 要为会话加载的插件目录,每个目录的加载方式与 [`--plugin-dir`](/docs/zh-CN/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) 标志相同。在 Unix 上用 `:` 分隔多个路径,在 Windows 上用 `;` 分隔。每个路径都应为绝对路径或以 `~` 开头,因为 Claude Code 会跳过相对路径。需要 Claude Code v2.1.280 或更高版本。请参阅[为单个会话加载插件](/docs/zh-CN/plugins/create#load-a-directory-or-archive-for-one-session) |365| `CLAUDE_CODE_PLUGIN_DIRS` | 要为会话加载的插件目录,每个目录的加载方式与 [`--plugin-dir`](/docs/zh-CN/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) 标志相同。在 Unix 上用 `:` 分隔多个路径,在 Windows 上用 `;` 分隔。每个路径都应为绝对路径或以 `~` 开头,因为 Claude Code 会跳过相对路径。需要 Claude Code v2.1.280 或更高版本。请参阅[为单个会话加载插件](/docs/zh-CN/plugins/create#load-a-directory-or-archive-for-one-session) |

361| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | 控制 Claude Code 是否在 [mod](/docs/zh-CN/plugins/mods/overview) 的文件发生变化时重新加载该 mod。重新加载适用于您使用 `--plugin-dir` 从目录加载的 mod,并且在交互式会话中默认开启。设置为 `1` 可在非交互式会话中也开启,设置为 `0` 可在所有会话中关闭。需要 Claude Code v2.1.287 或更高版本。请参阅 [mod 设置和环境变量](/docs/zh-CN/plugins/mods/reference#settings-and-environment-variables) |366| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | 控制 Claude Code 是否在 [mod](/docs/zh-CN/plugins/mods/overview) 的文件发生变化时重新加载该 mod。重新加载适用于您通过 `--plugin-dir` 从目录加载的 mod,在交互式会话中默认开启。设置为 `1` 可同时在非交互式会话中开启,设置为 `0` 则在所有会话中关闭。需要 Claude Code v2.1.287 或更高版本。请参阅 [mod 设置和环境变量](/docs/zh-CN/plugins/mods/reference#settings-and-environment-variables) |

362| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 克隆或刷新插件市场的超时时间(毫秒)(默认:120000)。对于大型仓库或较慢的网络连接,请调高此值。请参阅 [Git 克隆超时](/docs/zh-CN/plugins/troubleshooting#git-clone-timed-out-after-120s) |367| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 克隆或刷新插件市场的超时时间(毫秒,默认:120000)。对于大型仓库或较慢的网络连接,请调高此值。请参阅 [Git clone timed out](/docs/zh-CN/plugins/troubleshooting#git-clone-timed-out-after-120s) |

363| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 设置为 `1` 可在市场刷新无法访问远程或无法通过远程身份验证时,跳过重新克隆尝试并继续使用现有的市场检出。适用于重新克隆会以同样方式失败的离线或隔离网络环境。请参阅[市场更新在离线环境中失败](/docs/zh-CN/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |368| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 设置为 `1` 可在市场刷新无法访问远程仓库或无法通过其身份验证时,跳过重新克隆尝试并继续使用现有的市场检出副本。适用于重新克隆同样会失败的离线或气隙环境。请参阅[市场更新在离线环境中失败](/docs/zh-CN/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

364| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 设置为 `1` 可通过 HTTPS 而不是 SSH 克隆 GitHub `owner/repo` 简写来源。适用于插件安装和更新,以及 `/plugin marketplace add` 和 `update`。适用于 CI 运行器、容器或任何未为 `github.com` 配置 SSH 密钥的环境 |369| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 设置为 `1` 可通过 HTTPS 而非 SSH 克隆 GitHub `owner/repo` 简写来源。适用于插件安装和更新,以及 `/plugin marketplace add` 和 `update`。适用于 CI 运行器、容器或任何没有为 `github.com` 配置 SSH 密钥的环境 |

365| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一个或多个只读插件种子目录的路径,在 Unix 上以 `:` 分隔,在 Windows 上以 `;` 分隔。使用它可将预填充的插件目录打包到容器镜像中。Claude Code 会在启动时从这些目录注册市场,并使用预缓存的插件而无需重新克隆。请参阅[为容器预填充插件](/docs/zh-CN/plugins/org#seed-containers-and-ci) |370| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一个或多个只读插件种子目录的路径,在 Unix 上用 `:` 分隔,在 Windows 上用 `;` 分隔。可用于将预填充的插件目录打包到容器镜像中。Claude Code 会在启动时从这些目录注册市场,并直接使用预缓存的插件而无需重新克隆。请参阅[为容器预填充插件](/docs/zh-CN/plugins/org#seed-containers-and-ci) |

366| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 设置为 `1` 可阻止 Claude Code 在为工具调用、hook 和状态栏命令启动 PowerShell 时传递 `-ExecutionPolicy Bypass`,转而遵循计算机的有效执行策略。默认情况下,Claude Code 会在进程作用域绕过执行策略,以便 `.ps1` 脚本和模块导入能在默认为 Restricted 的 Windows 安装上正常工作。无论此设置如何,进程作用域的绕过都不会覆盖组策略 `MachinePolicy` 或 `UserPolicy` |371| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 设置为 `1` 可阻止 Claude Code 在为工具调用、hook 和状态栏命令启动 PowerShell 时传递 `-ExecutionPolicy Bypass`,转而遵循计算机的有效执行策略。默认情况下,Claude Code 会在进程作用域绕过执行策略,以便 `.ps1` 脚本和模块导入能在默认为 Restricted 的 Windows 安装上正常工作。无论此设置如何,进程作用域的绕过永远不会覆盖组策略 `MachinePolicy` 或 `UserPolicy` |

367| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | 在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless#background-tasks-at-exit)下,最后一轮之后空闲等待后台工作(例如子代理和工作流)的上限(毫秒)。每当 Claude 用一轮来处理后台结果时,空闲等待都会重新开始计时。默认:`600000`,即 10 分钟。当空闲等待达到上限时,Claude Code 会停止等待剩余的后台任务。由主对话启动且正在运行的后台命令会使运行持续到上限之后。设置为 `0` 可无限期等待。需要 Claude Code v2.1.182 或更高版本 |372| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | 在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless#background-tasks-at-exit)下,最后一轮之后空闲等待后台工作(例如子代理和工作流)的时间上限(毫秒)。每当 Claude 进行一轮以处理后台结果时,空闲等待都会重新计时。默认:`600000`,即 10 分钟。当空闲等待达到上限时,Claude Code 会停止等待剩余的后台任务。由主对话启动且仍在运行的后台命令会使运行在超过该上限后仍保持开启。设置为 `0` 可无限期等待。需要 Claude Code v2.1.182 或更高版本 |

368| `CLAUDE_CODE_PROCESS_WRAPPER` | 通过以 argv 前缀形式给出的企业启动器(例如 `/opt/corp/launcher`)来启动 Claude Code 从其自身二进制文件启动的进程,例如托管 [agent view](/docs/zh-CN/agent-view) 会话的后台服务。请在用户设置或[托管设置](/docs/zh-CN/managed-settings)的 `env` 块中设置,而不是作为 shell 导出,以便分离的后台服务能够继承它;项目设置和本地设置无法设置它。等同于 [`processWrapper` 设置](/docs/zh-CN/settings-reference#processwrapper),该设置需要 Claude Code v2.1.210 或更高版本;两者都设置时此变量优先。VS Code 扩展通过其 `claudeProcessWrapper` 设置单独配置自己的启动器。在 Windows 上会被忽略。有关值格式、启动器覆盖的范围以及启动器必须满足的约定,请参阅[在企业启动器后运行 Claude Code](/docs/zh-CN/corporate-launcher)。需要 Claude Code v2.1.208 或更高版本 |373| `CLAUDE_CODE_PROCESS_WRAPPER` | 通过以 argv 前缀形式给出的企业启动器(例如 `/opt/corp/launcher`)来启动 Claude Code 从自身二进制文件启动的进程,例如托管 [agent view](/docs/zh-CN/agent-view) 会话的后台服务。请在用户设置或[托管设置](/docs/zh-CN/managed-settings)的 `env` 块中设置,而不是作为 shell 导出,以便分离的后台服务能够继承它;项目设置和本地设置无法设置此变量。等同于 [`processWrapper` 设置](/docs/zh-CN/settings-reference#processwrapper),该设置需要 Claude Code v2.1.210 或更高版本;两者都设置时此变量优先。VS Code 扩展通过其 `claudeProcessWrapper` 设置单独配置自己的启动器。在 Windows 上会被忽略。有关值的格式、启动器涵盖的范围以及启动器必须满足的约定,请参阅[在企业启动器后运行 Claude Code](/docs/zh-CN/corporate-launcher)。需要 Claude Code v2.1.208 或更高版本 |

369| `CLAUDE_CODE_PROJECT_DIR_NAME` | 与 `CLAUDE_CONFIG_DIR` 一起设置,用于选择 Claude Code 存储该会话的会话记录和自动记忆的 `projects/` 目录名称,以替代从工作目录路径派生的名称。例如,使用 `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` 启动 Claude Code 会将它们存储在 `/srv/tenant-a/projects/work/` 下。当 `CLAUDE_CONFIG_DIR` 未设置时,Claude Code 会忽略此变量,并且只从您启动 `claude` 的环境中读取它,绝不会从[设置文件 `env` 块](#in-settings-files)中读取。请参阅[自行命名项目目录](/docs/zh-CN/sessions#name-the-project-directory-yourself)。需要 Claude Code v2.1.234 或更高版本 |374| `CLAUDE_CODE_PROJECT_DIR_NAME` | 与 `CLAUDE_CONFIG_DIR` 一起设置,用于选择 Claude Code 存放该会话的会话记录和自动记忆所用的 `projects/` 目录名,以代替根据工作目录路径派生的名称。例如,使用 `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` 启动 Claude Code 会将它们存储在 `/srv/tenant-a/projects/work/` 下。未设置 `CLAUDE_CONFIG_DIR` 时,Claude Code 会忽略此变量,并且只从您启动 `claude` 的环境中读取它,绝不会从[设置文件的 `env` 块](#in-settings-files)中读取。请参阅[自行命名项目目录](/docs/zh-CN/sessions#name-the-project-directory-yourself)。需要 Claude Code v2.1.234 或更高版本 |

370| `CLAUDE_CODE_PROMPT_CACHE_TTL` | 设置为 `5m` 或 `1h`(Claude Code 仅接受这两个值),为主对话选择[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime):包括您的交互式、`-p` 和 SDK 轮次,以及与之内联运行的辅助程序。优先于 `promptCacheTtl` 设置和 `ENABLE_PROMPT_CACHING_1H`,而 `FORCE_PROMPT_CACHING_5M` 会覆盖它。API 对 1 小时缓存写入按更高费率计费。需要 Claude Code v2.1.242 或更高版本 |375| `CLAUDE_CODE_PROMPT_CACHE_TTL` | 设置为 `5m` 或 `1h`(Claude Code 仅接受这两个值),以选择主对话的[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime):包括您的交互式、`-p` 和 SDK 轮次,以及与它们内联运行的辅助程序。优先于 `promptCacheTtl` 设置和 `ENABLE_PROMPT_CACHING_1H`,而 `FORCE_PROMPT_CACHING_5M` 会覆盖它。API 对 1 小时缓存写入按更高费率计费。需要 Claude Code v2.1.242 或更高版本 |

371| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | 设置为 `1` 可在 `ANTHROPIC_BASE_URL` 指向自定义代理时传播 W3C 追踪上下文。传播涵盖模型请求和 HTTP MCP 请求上的 `traceparent` 标头,以及 Bash、PowerShell 和 hook 子进程的 `TRACEPARENT` 环境变量。默认情况下,仅在直接连接到 Anthropic API 时才启用传播。在 v2.1.152 中添加。请参阅[追踪(beta)](/docs/zh-CN/monitoring-usage#traces-beta) |376| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | 设置为 `1` 可在 `ANTHROPIC_BASE_URL` 指向自定义代理时传播 W3C 跟踪上下文。传播范围包括模型和 HTTP MCP 请求上的 `traceparent` 标头,以及 Bash、PowerShell 和 hook 子进程的 `TRACEPARENT` 环境变量。默认情况下,仅在直接连接到 Anthropic API 时才启用传播。在 v2.1.152 中添加。请参阅[跟踪(beta)](/docs/zh-CN/monitoring-usage#traces-beta) |

372| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | 由嵌入 Claude Code 并代为管理模型提供商路由的宿主平台设置。设置后,Claude Code 会忽略设置文件中的提供商选择、端点和身份验证变量,例如 `CLAUDE_CODE_USE_BEDROCK`、`ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`,因此用户设置无法覆盖宿主的路由。Claude Code 还会忽略[托管设置](/docs/zh-CN/managed-settings)中的模型选择键,例如 `model`、`fallbackModel` 和 `modelOverrides`,无论由哪个托管来源下发,因此宿主的模型配置优先于过时的托管模型固定。Claude Code 还会忽略托管 `env` 块中的模型选择变量,例如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列;托管设置中的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表仍然适用,除非宿主提供了自己的允许列表。Claude Code 还会跳过它在第三方提供商(例如 Amazon Bedrock、Claude Platform on AWS、Google Cloud's Agent Platform 和 Microsoft Foundry)上原本会应用的自动遥测退出,因此遥测遵循标准的 `DISABLE_TELEMETRY` 退出方式。请参阅[按 API 提供商划分的默认行为](/docs/zh-CN/data-usage#default-behaviors-by-api-provider) |377| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | 由嵌入 Claude Code 并代为管理模型提供商路由的宿主平台设置。设置后,Claude Code 会忽略设置文件中的提供商选择、端点和身份验证变量,例如 `CLAUDE_CODE_USE_BEDROCK`、`ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`,因此用户设置无法覆盖宿主的路由。Claude Code 还会忽略[托管设置](/docs/zh-CN/managed-settings)中的模型选择键,例如 `model`、`fallbackModel` 和 `modelOverrides`,无论它们由哪个托管来源下发,因此宿主的模型配置优先于过时的托管模型固定设置。Claude Code 还会忽略托管 `env` 块中的模型选择变量,例如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列;托管设置中的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表仍然适用,除非宿主提供了自己的允许列表。Claude Code 还会跳过它在第三方提供商(例如 Amazon Bedrock、Claude Platform on AWS、Google Cloud's Agent Platform 和 Microsoft Foundry)上原本会应用的自动遥测退出,因此遥测遵循标准的 `DISABLE_TELEMETRY` 退出方式。请参阅[按 API 提供商划分的默认行为](/docs/zh-CN/data-usage#default-behaviors-by-api-provider) |

373| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 设置为 `1` 可允许代理而不是调用方执行 DNS 解析。适用于应由代理处理主机名解析的环境,需主动启用 |378| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 设置为 `1` 可允许由代理而非调用方执行 DNS 解析。适用于应由代理处理主机名解析的环境,需主动启用 |

374| `CLAUDE_CODE_REMOTE` | 当 Claude Code 作为[云端会话](/docs/zh-CN/claude-code-on-the-web)运行时自动设置为 `true`。可从 hook 或设置脚本中读取它,以检测您是否处于云端会话中 |379| `CLAUDE_CODE_REMOTE` | 当 Claude Code 作为[云端会话](/docs/zh-CN/claude-code-on-the-web)运行时自动设置为 `true`。可在 hook 或环境设置脚本中读取此变量,以检测是否处于云端会话中 |

375| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在[云端会话](/docs/zh-CN/claude-code-on-the-web)中自动设置为当前会话的 ID。读取它可构建指回会话记录的链接。请参阅[将输出链接回会话](/docs/zh-CN/cloud-environments#link-output-back-to-the-session) |380| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在[云端会话](/docs/zh-CN/claude-code-on-the-web)中自动设置为当前会话的 ID。读取此变量可构造返回会话记录的链接。请参阅[将输出链接回会话](/docs/zh-CN/cloud-environments#link-output-back-to-the-session) |

376| `CLAUDE_CODE_RESTRICTED` | 设置为 `1` 可在受限模式下启动会话,与传递 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 相同。Claude Code 会忽略设置文件 `env` 块中的此变量。需要 Claude Code v2.1.248 或更高版本 |381| `CLAUDE_CODE_RESTRICTED` | 设置为 `1` 可在受限模式下启动会话,与传递 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 相同。Claude Code 会忽略设置文件 `env` 块中的此变量。需要 Claude Code v2.1.248 或更高版本 |

377| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 设置为 `1` 可在上一个会话于轮次中途结束时自动恢复。在 SDK 模式下使用,使模型无需 SDK 重新发送提示词即可继续。要关闭此功能,请取消设置该变量或将其设置为 `0`。对于 VS Code 聊天面板,请参阅[重新加载后继续对话](/docs/zh-CN/vs-code#continue-conversations-after-a-reload) |382| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 设置为 `1` 可在上一个会话于某轮次中途结束时自动恢复。在 SDK 模式下使用,使模型无需 SDK 重新发送提示词即可继续。要关闭此功能,请取消设置该变量或将其设置为 `0`。对于 VS Code 聊天面板,请参阅[重新加载后继续对话](/docs/zh-CN/vs-code#continue-conversations-after-a-reload) |

378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 对于在轮次中途结束的会话,恢复时自动继续所允许的最后一条会话记录消息的最大时长(毫秒)。当最后一条消息早于此界限时,Claude Code 会跳过 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 自动恢复及其 `CLAUDE_CODE_RESUME_PROMPT` 继续消息,会话以空闲状态启动,由您显式继续。未设置或为 `0` 表示无界限,但最后一个请求因 API 错误而失败的轮次仅在该错误发生不到六小时时才会恢复。正值会限制所有轮次,包括上述轮次;负值或非数字值会应用一小时的界限。长时间运行的 Agent 的启动脚本可以设置此项,以免针对旧会话记录重启时重新运行过时的提示词。当 Claude Code 重启一个从交互式会话继承对话的已崩溃 [agent view](/docs/zh-CN/agent-view) 会话时,会自行设置一小时的界限。需要 Claude Code v2.1.211 或更高版本 |383| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 对于在某轮次中途结束的会话,恢复时允许自动继续的最后一条会话记录消息的最大时长(毫秒)。当最后一条消息早于此界限时,Claude Code 会跳过 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 自动恢复及其 `CLAUDE_CODE_RESUME_PROMPT` 继续消息,会话以空闲状态启动,由您显式继续。未设置或为 `0` 表示没有界限,但最后一个请求因 API 错误而失败的轮次只有在该错误发生不到六小时时才会恢复。正值会限制所有轮次,包括这类轮次;负值或非数字值会应用一小时的界限。长时间运行的 Agent 的启动脚本可以设置此变量,以免针对旧会话记录重新启动时重新运行过时的提示词。当 Claude Code 重新启动一个已崩溃、且其对话继承自交互式会话的 [agent view](/docs/zh-CN/agent-view) 会话时,会自行设置一小时的界限。需要 Claude Code v2.1.211 或更高版本 |

379| `CLAUDE_CODE_RESUME_PROMPT` | 覆盖 Claude Code 发送给 Claude 的继续消息,适用于 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 继续被中断的轮次而不是重新发送其提示词时,或您使用 `-p` 恢复[延迟的工具调用](/docs/zh-CN/hooks#defer-a-tool-call-for-later)时。默认为 `Continue from where you left off.`。空字符串会使用默认值 |384| `CLAUDE_CODE_RESUME_PROMPT` | 覆盖 Claude Code 发送给 Claude 的继续消息:当 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 继续被中断的轮次而非重新发送其提示词时,或当您使用 `-p` 恢复[延迟的工具调用](/docs/zh-CN/hooks#defer-a-tool-call-for-later)时,都会发送此消息。默认为 `Continue from where you left off.`。空字符串将使用默认值 |

380| `CLAUDE_CODE_RETRY_WATCHDOG` | 对于评估框架、CI 作业或远程工作器等无人值守会话,请设置为 `1`。会无限期重试 `429` 和 `529` 容量错误,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次尝试后失败。当标准速度请求收到报告支出限额或使用额度耗尽的 `429` 时,Claude Code 会立即失败,即使它来自按计划重置的[网关支出上限](/docs/zh-CN/errors#spend-limit-reached)。在 v2.1.239 之前,watchdog 会无限期重试这些错误。对于快速模式请求,请参阅[处理速率限制](/docs/zh-CN/fast-mode#handle-rate-limits)。watchdog 在两次尝试之间最多退避 5 分钟,或者当响应包含速率限制重置时间时等到限制重置,因此遇到用量限制的会话会等待剩余的时间窗口结束。在 v2.1.199 或更高版本上,它还会将其他瞬态错误(例如服务器错误、超时和连接断开)的默认重试次数提高到 300,约合三小时的退避时间,并在您显式设置 `CLAUDE_CODE_MAX_RETRIES` 时移除其 15 次的上限。需要 Claude Code v2.1.186 或更高版本 |385| `CLAUDE_CODE_RETRY_WATCHDOG` | 对于评估测试框架、CI 作业或远程工作进程等无人值守会话,请设置为 `1`。会无限期重试 `429` 和 `529` 容量错误,而不是在尝试 `CLAUDE_CODE_MAX_RETRIES` 次后失败。当标准速度请求收到报告支出限额或使用额度耗尽的 `429` 时,Claude Code 会立即失败,即使该错误来自按计划重置的[网关支出上限](/docs/zh-CN/errors#spend-limit-reached)也是如此。在 v2.1.239 之前,看门狗会无限期重试这些错误。对于快速模式请求,请参阅[处理速率限制](/docs/zh-CN/fast-mode#handle-rate-limits)。看门狗在两次尝试之间最多退避 5 分钟;当响应带有速率限制重置时间时,则会一直等到限制重置,因此达到用量限制的会话会等待剩余的时间窗口结束。在 v2.1.199 或更高版本中,它还会将其他临时性错误(例如服务器错误、超时和连接中断)的默认重试次数提高到 300(大约三小时的退避),并且如果您显式设置了 `CLAUDE_CODE_MAX_RETRIES`,还会取消该变量 15 次的上限。需要 Claude Code v2.1.186 或更高版本 |

381| `CLAUDE_CODE_SAFE_MODE` | 设置为 `1` 可在安全模式下启动:CLAUDE.md、skill、插件、hook、MCP 服务器、自定义命令和 Agent、输出样式、工作流、自定义主题、自定义快捷键、状态栏和文件建议命令、LSP 服务器以及自动记忆均不会加载,用于对损坏的配置进行故障排除。托管设置策略仍然适用,包括策略配置的 hook、状态栏和文件建议命令;托管插件、托管 skill、托管 CLAUDE.md 和策略配置的 MCP 服务器则不会加载。等同于传递 [`--safe-mode`](/docs/zh-CN/cli-reference#cli-flags)。直接生成的子进程会继承该变量 |386| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | 设置 `CLAUDE_CODE_RETRY_WATCHDOG` 时,每个 API 请求在等待 `429` 和 `529` 错误上所花费的最长时间(毫秒)。这段时间用完后,下一个此类错误将结束该请求。请以纯数字给出正整数,例如 `1800000` 表示 30 分钟。未设置时,等待没有限制。需要 Claude Code v2.1.295 或更高版本 |

382| `CLAUDE_CODE_SCRIPT_CAPS` | 当设置了 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 时,用于限制特定脚本在每个会话中可被调用次数的 JSON 对象。键是与命令文本匹配的子字符串;值是整数调用上限。例如,`{"deploy.sh": 2}` 允许 `deploy.sh` 最多被调用两次。匹配基于子字符串,因此 `./scripts/deploy.sh $(evil)` 之类的 shell 展开技巧仍会计入上限。不会检测通过 `xargs` 或 `find -exec` 进行的运行时扇出;这是一项纵深防御控制 |387| `CLAUDE_CODE_SAFE_MODE` | 设置为 `1` 可在安全模式下启动:CLAUDE.md、skill、插件、hook、MCP 服务器、自定义命令和 Agent、输出样式、工作流、自定义主题、自定义快捷键、状态栏和文件建议命令、LSP 服务器以及自动记忆都不会加载,用于排查损坏的配置。托管设置策略仍然适用,包括策略配置的 hook、状态栏和文件建议命令;托管插件、托管 skill、托管 CLAUDE.md 和策略配置的 MCP 服务器则不会加载。等同于传递 [`--safe-mode`](/docs/zh-CN/cli-reference#cli-flags)。直接生成的子进程会继承此变量 |

383| `CLAUDE_CODE_SCROLL_SPEED` | 设置[全屏渲染](/docs/zh-CN/fullscreen#mouse-wheel-scrolling)中的鼠标滚轮滚动倍数。接受不超过 20 的任意正值,包括低于 1 的小数值(例如 `0.5`),以便在已放大滚轮事件的终端中减慢加速的触控板和滚轮滚动。如果您的终端每格发送一个滚轮事件且不进行放大,请设置为 `3` 以与 `vim` 保持一致。在 JetBrains IDE 终端中会被忽略,Claude Code 在那里使用自己的滚动处理 |388| `CLAUDE_CODE_SCRIPT_CAPS` | 设置 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 时,用于限制每个会话中特定脚本可被调用次数的 JSON 对象。键是与命令文本进行匹配的子字符串;值是整数调用限制。例如,`{"deploy.sh": 2}` 允许 `deploy.sh` 最多被调用两次。匹配基于子字符串,因此像 `./scripts/deploy.sh $(evil)` 这样的 shell 扩展技巧仍会计入上限。无法检测通过 `xargs` 或 `find -exec` 进行的运行时扇出;这是一项纵深防御控制措施 |

384| `CLAUDE_CODE_SEND_FEEDBACK` | 设置为 `0` 可为会话关闭[由 Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)。设置为 `1` 可在您的账户已具备访问权限的情况下开启;该变量本身无法授予访问权限,其他关闭反馈的开关(例如 `DISABLE_FEEDBACK_COMMAND` 和 [`feedbackDrafts`](/docs/zh-CN/settings-reference#feedbackdrafts) 设置的 `off` 值)仍然适用 |389| `CLAUDE_CODE_SCROLL_SPEED` | 设置[全屏渲染](/docs/zh-CN/fullscreen#mouse-wheel-scrolling)中的鼠标滚轮滚动倍数。接受最大为 20 的任意正值,包括小于 1 的小数值(例如 `0.5`),以便在已经放大滚轮事件的终端中减慢加速的触控板和滚轮滚动。如果您的终端每个刻度发送一个滚轮事件且不放大,设置为 `3` 可与 `vim` 保持一致。在 JetBrains IDE 终端中会被忽略,因为 Claude Code 在其中使用自己的滚动处理 |

385| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆盖 [SessionEnd](/docs/zh-CN/hooks#sessionend) hook 的时间预算(毫秒)。该值也是每个未设置自身 `timeout` 的 hook 的超时时间。适用于会话退出、`/clear` 以及通过交互式 `/resume` 切换会话。默认情况下预算为 1.5 秒,会自动提高到设置文件中配置的最高单个 hook `timeout`,最多 60 秒。插件提供的 hook 上的超时时间不会提高预算 |390| `CLAUDE_CODE_SEND_FEEDBACK` | 设置为 `0` 可为会话关闭 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)。设置为 `1` 可在您的账户已具有访问权限的情况下将其开启;此变量本身无法授予访问权限,其他关闭反馈的开关(例如 `DISABLE_FEEDBACK_COMMAND` 和 [`feedbackDrafts`](/docs/zh-CN/settings-reference#feedbackdrafts) 设置的 `off` 值)仍然适用 |

386| `CLAUDE_CODE_SESSION_ID` | 在 Bash 和 PowerShell 工具子进程、[hook 命令](/docs/zh-CN/hooks)子进程以及 stdio [MCP 服务器](/docs/zh-CN/mcp)子进程中自动设置为当前会话 ID。对于 Bash、PowerShell 和 hook,它与 hook JSON 输入中的 `session_id` 字段一致,并在 `/clear` 时更新。MCP 服务器子进程会保留其启动时的 ID。使用 `--resume <session-id>` 时,它会收到恢复的 ID,与 hook 和 Bash 一致。使用不带显式 ID 的 `--continue` 或 `--resume` 时,它可能会收到初始启动 ID。用于将脚本和外部工具与启动它们的 Claude Code 会话关联起来 |391| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆盖 [SessionEnd](/docs/zh-CN/hooks#sessionend) hook 的时间预算(毫秒)。该值也是每个未设置自身 `timeout` 的 hook 的超时时间。适用于会话退出、`/clear` 以及通过交互式 `/resume` 切换会话。默认预算为 1.5 秒,并会自动提高到设置文件中配置的最高单个 hook `timeout`,最多 60 秒。插件提供的 hook 上的超时不会提高预算 |

387| `CLAUDE_CODE_SHELL` | 设置 Claude Code 用于运行 Bash 工具命令的 shell。接受 `bash` 或 `zsh` 二进制文件的路径,例如 `/opt/homebrew/bin/bash`。不支持 `fish` 等其他 shell。如果该值不是可用的 `bash` 或 `zsh` 路径,Claude Code 会忽略它并回退到自动检测。自动检测会在您的 `$SHELL` 指向 `bash` 或 `zsh` 时使用它,否则会在您的 `PATH` 和标准安装位置中先选择找到的第一个可用的 `zsh`,然后是 `bash` |392| `CLAUDE_CODE_SESSION_ID` | 在 Bash 和 PowerShell 工具子进程、[hook 命令](/docs/zh-CN/hooks)子进程以及 stdio [MCP 服务器](/docs/zh-CN/mcp)子进程中自动设置为当前会话 ID。对于 Bash、PowerShell 和 hook,此值与 hook JSON 输入中的 `session_id` 字段一致,并会在 `/clear` 时更新。MCP 服务器子进程会保留其启动时的 ID。使用 `--resume <session-id>` 时,它会收到恢复的 ID,与 hook 和 Bash 一致。使用 `--continue` 或不带显式 ID 的 `--resume` 时,它可能会改为收到初始启动时的 ID。可用于将脚本和外部工具与启动它们的 Claude Code 会话关联起来 |

388| `CLAUDE_CODE_SHELL_PREFIX` | 包装 Claude Code 所启动的 shell 命令的命令前缀:Bash 工具调用、[hook](/docs/zh-CN/hooks) 命令、[状态栏](/docs/zh-CN/statusline)命令以及 stdio [MCP 服务器](/docs/zh-CN/mcp)启动命令。PowerShell hook 和 exec 形式的 hook 不使用该前缀运行。适用于日志记录或审计。设置诸如 `/path/to/logger.sh` 的裸可执行文件路径时,每个命令会以 `/path/to/logger.sh '<command>'` 的形式运行。包装器在 `$1` 中以单个经 shell 引用的参数形式接收命令行,因此包装器必须用 shell 重新求值 `$1`,例如 `exec bash -c "$1"`。将 `$1` 视为裸可执行文件路径会破坏传递诸如 `npx -y <package>` 之类参数的 stdio MCP 服务器。对于 Bash 工具调用,`$1` 包含 Claude Code 组装的完整 shell 调用,包括环境设置,而不仅仅是 Claude 运行的命令 |393| `CLAUDE_CODE_SHELL` | 设置 Claude Code 运行 Bash 工具命令所用的 shell。接受 `bash` 或 `zsh` 二进制文件的路径,例如 `/opt/homebrew/bin/bash`。不支持 `fish` 等其他 shell。如果该值不是可用的 `bash` 或 `zsh` 路径,Claude Code 会忽略它并回退到自动检测。自动检测会在您的 `$SHELL` 指向 `bash` 或 `zsh` 时使用它,否则会在 `PATH` 和标准安装位置中选取找到的第一个可用的 `zsh`,其次是 `bash` |

389| `CLAUDE_CODE_SIMPLE` | 设置为 `1` 可使用最小的系统提示词运行,并且只提供 Bash、文件读取和文件编辑工具。来自 `--mcp-config` 的 MCP 工具仍然可用。禁用对 hook、skill、自定义命令、子代理、已安装插件、MCP 服务器、自动记忆和 CLAUDE.md 的自动发现。您通过 `--add-dir` 传递的目录中的 skill 仍会加载。不会读取 OAuth 令牌和钥匙串凭据,因此 Anthropic 身份验证必须来自 `ANTHROPIC_API_KEY` 或 `--settings` 中的 `apiKeyHelper`。等同于传递 [`--bare`](/docs/zh-CN/headless#start-faster-with-bare-mode) |394| `CLAUDE_CODE_SHELL_PREFIX` | 包装 Claude Code 所启动 shell 命令的命令前缀:Bash 工具调用、[hook](/docs/zh-CN/hooks) 命令、[状态栏](/docs/zh-CN/statusline)命令以及 stdio [MCP 服务器](/docs/zh-CN/mcp)启动命令。PowerShell hook 和 exec 形式的 hook 运行时不带前缀。适用于日志记录或审计。设置像 `/path/to/logger.sh` 这样的纯可执行文件路径时,每个命令会以 `/path/to/logger.sh '<command>'` 的形式运行。包装器会在 `$1` 中以单个经 shell 引用的参数接收命令行,因此包装器必须使用 shell 重新求值 `$1`,例如 `exec bash -c "$1"`。将 `$1` 视为纯可执行文件路径会破坏传递 `npx -y <package>` 等参数的 stdio MCP 服务器。对于 Bash 工具调用,`$1` 包含 Claude Code 组装的完整 shell 调用(包括环境设置),而不仅仅是 Claude 运行的命令 |

390| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 在 Claude Code 的完整系统提示词与带有简略工具描述的较短系统提示词之间进行选择。未设置时,Haiku 4.5、Sonnet 5、Opus 4.7 以及这些系列中的更早模型默认使用完整提示词,更新的模型使用较短的提示词。设置为 `1` 可在任何模型上使用较短的提示词。设置为 `0`、`false`、`no` 或 `off` 可在任何模型上使用完整提示词,即使实验或服务器配置原本会选择较短的提示词。两种提示词都会保留完整的工具集、hook、MCP 服务器和 CLAUDE.md 发现 |395| `CLAUDE_CODE_SIMPLE` | 设置为 `1` 可使用最简系统提示词运行,并且仅提供 Bash、文件读取和文件编辑工具。来自 `--mcp-config` 的 MCP 工具仍然可用。禁用对 hook、skill、自定义命令、子代理、已安装插件、MCP 服务器、自动记忆和 CLAUDE.md 的自动发现。通过 `--add-dir` 传入的目录中的 skill 仍会加载。不会读取 OAuth 令牌和钥匙串凭据,因此 Anthropic 身份验证必须来自 `ANTHROPIC_API_KEY` 或 `--settings` 中的 `apiKeyHelper`。等同于传递 [`--bare`](/docs/zh-CN/headless#start-faster-with-bare-mode) |

391| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳过 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的客户端身份验证,适用于自行对请求签名的网关 |396| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 在 Claude Code 的完整系统提示词和带有简略工具描述的较短系统提示词之间进行选择。未设置时,Haiku 4.5、Sonnet 5、Opus 4.7 以及这些系列中更早的模型默认使用完整提示词,更新的模型则使用较短的提示词。设置为 `1` 可在任何模型上使用较短的提示词。设置为 `0`、`false`、`no` 或 `off` 可在任何模型上使用完整提示词,即使实验或服务器配置原本会选择较短的提示词。两种提示词都保留完整的工具集、hook、MCP 服务器和 CLAUDE.md 发现 |

392| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | 设置为 `1` 可关闭从 AWS 默认凭据提供程序链解析的凭据的进程内缓存,使 Claude Code 在每个 API 请求时都解析该链。关闭缓存后,基于 SSO 的配置文件会在每个请求时从 IAM Identity Center 请求凭据。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |397| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳过 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的客户端身份验证,适用于自行对请求进行签名的网关 |

393| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | 跳过 Amazon Bedrock 的 AWS 身份验证(例如,在使用 LLM 网关时) |398| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | 设置为 `1` 可关闭对从 AWS 默认凭据提供程序链解析出的凭据的进程内缓存,使 Claude Code 在每个 API 请求时都重新解析该链。关闭缓存后,基于 SSO 的配置文件会在每个请求时向 IAM Identity Center 请求凭据。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |

394| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | 设置为 `1` 可将失败的[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)可用性检查视为可用,适用于阻止该检查直接请求 `api.anthropic.com` 的网络。Claude Code 仍会遵循 "disabled by your organization" 响应 |399| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | 跳过 Amazon Bedrock 的 AWS 身份验证(例如,使用 LLM 网关时) |

395| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 设置为 `1` 可跳过客户端[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)可用性检查,适用于拦截该检查请求而非拒绝它的代理。当您的组织已禁用快速模式时,API 仍会拒绝快速模式请求 |400| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | 设置为 `1` 可将失败的[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)可用性检查视为可用,适用于阻止该检查直接请求 `api.anthropic.com` 的网络。Claude Code 仍会遵循"disabled by your organization"响应 |

396| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | 跳过 Microsoft Foundry 的 Azure 身份验证,适用于注入自己的 `Authorization` 标头的代理或网关。Claude Code 发送请求时不附带 Azure 凭据,并保留您提供的 `Authorization` 标头,例如通过 `ANTHROPIC_CUSTOM_HEADERS` 提供的标头。设置了 `ANTHROPIC_FOUNDRY_API_KEY` 或 `ANTHROPIC_FOUNDRY_AUTH_TOKEN` 时会被忽略。在 v2.1.203 之前,此变量会导致 Microsoft Foundry 客户端无法发送请求,除非同时设置了 API 密钥 |401| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 设置为 `1` 可跳过客户端的[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)可用性检查,适用于拦截该检查请求而非拒绝它的代理。当您的组织禁用了快速模式时,API 仍会拒绝快速模式请求 |

397| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳过 Amazon Bedrock Mantle 的 AWS 身份验证(例如,在使用 LLM 网关时) |402| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | 跳过 Microsoft Foundry 的 Azure 身份验证,适用于注入自有 `Authorization` 标头的代理或网关。Claude Code 会在不带 Azure 凭据的情况下发送请求,并保留您提供的 `Authorization` 标头(例如通过 `ANTHROPIC_CUSTOM_HEADERS` 提供)。设置了 `ANTHROPIC_FOUNDRY_API_KEY` 或 `ANTHROPIC_FOUNDRY_AUTH_TOKEN` 时会被忽略。在 v2.1.203 之前,除非同时设置了 API 密钥,否则此变量会导致 Microsoft Foundry 客户端无法发送请求 |

398| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 和 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) 上的[启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks)会在本机上记住它们发现您的账户无法调用的模型,最长保留一天。设置为 `1` 可关闭这一记忆。需要 Claude Code v2.1.285 或更高版本 |403| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳过 Amazon Bedrock Mantle 的 AWS 身份验证(例如,使用 LLM 网关时) |

404| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 和 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) 上的[启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks)会在本机上记住它们发现您的账户无法调用的模型,最长保留一天。设置为 `1` 可关闭此记忆功能。需要 Claude Code v2.1.285 或更高版本 |

399| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | 设置为 `1` 可跳过将提示词历史和会话记录写入磁盘。设置此变量后启动的会话不会出现在 `--resume`、`--continue` 或上箭头历史中。适用于临时的脚本化会话 |405| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | 设置为 `1` 可跳过将提示词历史和会话记录写入磁盘。设置此变量后启动的会话不会出现在 `--resume`、`--continue` 或上箭头历史中。适用于临时的脚本化会话 |

400| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | 跳过 Google Cloud's Agent Platform 的 Google 身份验证(例如,在使用 LLM 网关时) |406| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | 跳过 Google Cloud's Agent Platform 的 Google 身份验证(例如,使用 LLM 网关时) |

401| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | 设置为 `1` 可让以 `--output-format stream-json` 启动的会话在遇到原本仅以 stderr 输出结束的启动失败时,写入一条[说明 Claude Code 拒绝启动原因的结果消息](/docs/zh-CN/agent-sdk/typescript#startup_failure_reason)。需要 Claude Code v2.1.274 或更高版本 |407| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | 设置为 `1` 可让使用 `--output-format stream-json` 启动的会话,在原本仅以 stderr 输出结束的启动失败情况下,写入一条[说明 Claude Code 拒绝启动原因的结果消息](/docs/zh-CN/agent-sdk/typescript#startup_failure_reason)。需要 Claude Code v2.1.274 或更高版本 |

402| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | [Stop](/docs/zh-CN/hooks#stop) 或 [SubagentStop](/docs/zh-CN/hooks#subagentstop) hook 可连续阻止轮次结束的最大次数,超过后 Claude Code 会覆盖它并仍然结束该轮次(默认:8)。设置为 `0` 可禁用该上限。如果您的 hook 确实需要更多迭代才能解决,请调高此值 |408| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | [Stop](/docs/zh-CN/hooks#stop) 或 [SubagentStop](/docs/zh-CN/hooks#subagentstop) hook 可连续阻止轮次结束的最大次数,超过后 Claude Code 会覆盖它并强制结束该轮次(默认:8)。设置为 `0` 可禁用此上限。如果您的 hook 确实需要更多迭代才能完成,请调高此值 |

403| `CLAUDE_CODE_SUBAGENT_MODEL` | 未通过其他方式分配模型的[子代理](/docs/zh-CN/sub-agents#choose-a-model)、[agent team](/docs/zh-CN/agent-teams#specify-teammates-and-models) 队友和[工作流](/docs/zh-CN/workflows) Agent 的默认模型。接受诸如 `haiku` 的别名或完整模型名称。有两个来源优先于它:Claude 生成 Agent 时传递的模型,以及 Agent 定义中的 `model` 字段(包括 `inherit`)。要改变这一点,请设置 [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model)。有关完整顺序,请参阅[选择模型](/docs/zh-CN/sub-agents#choose-a-model)。将其设置为 `inherit` 与不设置相同。在 v2.1.251 之前,此变量会同时覆盖每次调用的模型和定义中的 `model` 字段 |409| `CLAUDE_CODE_SUBAGENT_MODEL` | 未通过其他方式指定模型的[子代理](/docs/zh-CN/sub-agents#choose-a-model)、[agent team](/docs/zh-CN/agent-teams#specify-teammates-and-models) 队友以及[工作流](/docs/zh-CN/workflows) Agent 所使用的默认模型。接受 `haiku` 等别名或完整模型名称。有两个来源优先于它:Claude 生成 Agent 时传递的模型,以及 Agent 定义中的 `model` 字段(包括 `inherit`)。要改变这一点,请设置 [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model)。完整顺序请参阅[选择模型](/docs/zh-CN/sub-agents#choose-a-model)。将其设置为 `inherit` 与不设置相同。在 v2.1.251 之前,此变量会同时覆盖每次调用的模型和定义中的 `model` 字段 |

404| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | 设置为 `1` 可将同一个模型强制用于子代理、队友和工作流 Agent。[让每个子代理使用同一模型](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model)说明了具体是哪个模型。需要 Claude Code v2.1.257 或更高版本 |410| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | 设置为 `1` 可将同一个模型强制应用于子代理、队友和工作流 Agent。[在同一个模型上运行所有子代理](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model)说明了具体是哪个模型。需要 Claude Code v2.1.257 或更高版本 |

405| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | 设置为 `5m` 或 `1h`(Claude Code 仅接受这两个值),为主对话之外的请求(例如[子代理](/docs/zh-CN/sub-agents)、工作流和后台工作)选择[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime)。优先于 `subagentPromptCacheTtl` 设置和 `ENABLE_PROMPT_CACHING_1H`,而 `FORCE_PROMPT_CACHING_5M` 会覆盖它。API 对 1 小时缓存写入按更高费率计费。需要 Claude Code v2.1.242 或更高版本 |411| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | 设置为 `5m` 或 `1h`(Claude Code 仅接受这两个值),以选择主对话之外请求的[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime),例如[子代理](/docs/zh-CN/sub-agents)、工作流和后台工作。优先于 `subagentPromptCacheTtl` 设置和 `ENABLE_PROMPT_CACHING_1H`,而 `FORCE_PROMPT_CACHING_5M` 会覆盖它。API 对 1 小时缓存写入按更高费率计费。需要 Claude Code v2.1.242 或更高版本 |

406| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 设置为 `1` 可从 Claude Code 启动的子进程(例如 Bash 命令、hook 和 stdio MCP 服务器)的环境中剥离凭据。清理会通过变量名或变量值识别凭据,并保留 GitHub 令牌和代理设置。请参阅[子进程环境清理会移除哪些内容](#what-the-subprocess-environment-scrub-removes)。配置了 `allowed_non_write_users` 时,`claude-code-action` 会自动设置此项 |412| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 设置为 `1` 可从 Claude Code 启动的子进程(例如 Bash 命令、hook 和 stdio MCP 服务器)的环境中剥离凭据。清理会根据变量名或变量值识别凭据,并保留 GitHub 令牌和代理设置。请参阅[子进程环境清理会移除哪些内容](#what-the-subprocess-environment-scrub-removes)。配置 `allowed_non_write_users` 时,`claude-code-action` 会自动设置此变量 |

407| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非交互模式下(`-p` 标志)设置为 `1`,可在第一次查询之前等待插件安装完成。如果不设置,插件会在后台安装,可能在第一轮中不可用。可与 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 结合使用以限制等待时间 |413| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非交互模式(`-p` 标志)下设置为 `1`,可在第一次查询之前等待插件安装完成。否则,插件会在后台安装,可能在第一轮中不可用。与 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 结合使用可限制等待时间 |

408| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步插件安装的超时时间(毫秒)。超时后,Claude Code 会在没有插件的情况下继续并记录一条错误。无默认值:未设置此变量时,同步安装会一直等到完成 |414| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步插件安装的超时时间(毫秒)。超时后,Claude Code 会在没有插件的情况下继续并记录错误。没有默认值:如果不设置此变量,同步安装会一直等待直到完成 |

409| `CLAUDE_CODE_SYNC_SKILLS` | 在使用 `-p` 标志的非交互模式下设置为 `1`,可让 Claude Code 在该次运行中下载为您的 claude.ai 账户启用的 skill,并在运行第一次查询之前等待获取其列表,最长等待 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`。需要 claude.ai 身份验证。使用 claude.ai 账户登录的终端会话无需此变量即可[同步这些 skill](/docs/zh-CN/skills#where-synced-skills-load),因此仅当 `-p` 运行在第一次查询时就需要您当前的 skill 时才设置它 |415| `CLAUDE_CODE_SYNC_SKILLS` | 在使用 `-p` 标志的非交互模式下设置为 `1`,可让 Claude Code 在该次运行中下载为您的 claude.ai 账户启用的 skill,并在运行第一次查询之前等待其列表,最长等待 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`。需要 claude.ai 身份验证。使用 claude.ai 账户登录的终端会话无需此变量即可[同步这些 skill](/docs/zh-CN/skills#where-synced-skills-load),因此仅当某次 `-p` 运行需要在第一次查询时就使用您当前的 skill 时才设置它 |

410| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | 当基于 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 构建的应用重新加载 skill 时,在会话中途运行的 skill 重新同步的超时时间(毫秒)(默认:30000)。超时后,重新加载会使用已到达的 skill 继续,剩余的下载会在后台完成 |416| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | 当基于 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 构建的应用重新加载 skill 时,会话中途运行的 skill 重新同步的超时时间(毫秒,默认:30000)。超时后,重新加载会使用已到达的 skill 继续,其余下载在后台完成 |

411| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 设置 `CLAUDE_CODE_SYNC_SKILLS` 时,第一次查询等待初始 skill 列表的超时时间(毫秒)(默认:5000)。超时后,第一次查询会使用已到达的 skill 运行。无论哪种情况,下载都会在后台完成,并且 Claude 在调用某个 skill 时会等待该 skill 下载完成 |417| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 设置 `CLAUDE_CODE_SYNC_SKILLS` 时,第一次查询等待初始 skill 列表的超时时间(毫秒,默认:5000)。超时后,第一次查询会使用已到达的 skill 运行。无论哪种情况,下载都会在后台完成,并且 Claude 在调用某个 skill 时会等待该 skill 下载完成 |

412| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 设置为 `false` 可禁用 diff 输出中的语法高亮。当颜色干扰您的终端设置时很有用。要同时禁用代码块和文件预览中的高亮,请使用 [`syntaxHighlightingDisabled`](/docs/zh-CN/settings-reference#syntaxhighlightingdisabled) 设置 |418| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 设置为 `false` 可禁用 diff 输出中的语法高亮。适用于颜色干扰终端设置的情况。要同时禁用代码块和文件预览中的高亮,请使用 [`syntaxHighlightingDisabled`](/docs/zh-CN/settings-reference#syntaxhighlightingdisabled) 设置 |

413| `CLAUDE_CODE_TASK_LIST_ID` | 在会话之间共享任务列表。在多个 Claude Code 实例中设置相同的 ID,即可在[具备 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中协同使用共享任务列表。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |419| `CLAUDE_CODE_TASK_LIST_ID` | 在多个会话之间共享任务列表。在[具备 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中,在多个 Claude Code 实例中设置相同的 ID,即可围绕共享任务列表进行协调。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |

414| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | 以毫秒为单位覆盖非交互式会话在退出时等待其 [agent team](/docs/zh-CN/agent-teams) 完成拆除的时长。接受 1000 到 60000;超出范围的值会被忽略,并使用默认值 10000。需要 Claude Code v2.1.206 或更高版本 |420| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | 覆盖非交互式会话在退出时等待其 [agent team](/docs/zh-CN/agent-teams) 完成拆除的时长(毫秒)。接受 1000 到 60000;超出范围的值会被忽略并应用默认值 10000。需要 Claude Code v2.1.206 或更高版本 |

415| `CLAUDE_CODE_TMPDIR` | 覆盖用于内部临时文件的临时目录。Claude Code 在 Unix 上会将 `/claude-{uid}/` 附加到此路径,在 Windows 上则附加 `/claude/`。默认:macOS 上为 `/tmp`,Linux 和 Windows 上为 `os.tmpdir()`。在 macOS 和 Linux 上,当您的覆盖值是较长路径时,[沙箱隔离](/docs/zh-CN/sandboxing)的 Bash 子进程会收到系统默认目录下一个较短的备用 `$TMPDIR`,因为某些工具在临时路径过长时会失败。未沙箱隔离的 Bash 命令会在您的 shell 设置了 `$TMPDIR` 时继承它。在原生 Windows 上,当您的 shell 未设置 `$TMPDIR` 时,引用 `$TMPDIR` 的 Bash 命令会收到您的覆盖值,或在您未设置覆盖值时收到 `%TEMP%`。Claude Code 自身的临时文件始终使用您的覆盖值。请在您的 shell、用户设置或托管设置中设置。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |421| `CLAUDE_CODE_TMPDIR` | 覆盖用于内部临时文件的临时目录。Claude Code 在 Unix 上会向此路径追加 `/claude-{uid}/`,在 Windows 上追加 `/claude/`。默认:macOS 上为 `/tmp`,Linux 和 Windows 上为 `os.tmpdir()`。在 macOS 和 Linux 上,当您的覆盖值是较长的路径时,[沙箱化](/docs/zh-CN/sandboxing)的 Bash 子进程会收到位于系统默认目录下的较短备用 `$TMPDIR`,因为某些工具在临时路径过长时会失败。未沙箱化的 Bash 命令会在您的 shell 设置了 `$TMPDIR` 时继承它。在原生 Windows 上,当您的 shell 未设置 `$TMPDIR` 时,引用 `$TMPDIR` 的 Bash 命令会收到您的覆盖值;如果您未设置覆盖值,则收到 `%TEMP%`。Claude Code 自身的临时文件始终使用您的覆盖值。请在 shell、用户设置或托管设置中设置。在[项目设置和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |

416| `CLAUDE_CODE_TMUX_TRUECOLOR` | 设置为任意非空值(例如 `1`)可允许在 tmux 中输出 24 位真彩色。**将其设置为 `0` 或 `false` 仍会允许真彩色**,这与大多数开关变量不同;取消设置该变量可恢复 256 色限制。默认情况下,当设置了 `$TMUX` 时,Claude Code 会限制为 256 色,因为除非进行配置,否则 tmux 不会透传真彩色转义序列。请在将 `set -ga terminal-overrides ',*:Tc'` 添加到您的 `~/.tmux.conf` 后设置此项。有关其他 tmux 设置,请参阅[终端配置](/docs/zh-CN/terminal-config) |422| `CLAUDE_CODE_TMUX_TRUECOLOR` | 设置为任意非空值(例如 `1`)可在 tmux 中允许 24 位真彩色输出。**设置为 `0` 或 `false` 仍会允许真彩色**,这与大多数开/关变量不同;取消设置该变量可恢复 256 色限制。默认情况下,当设置了 `$TMUX` 时,Claude Code 会限制为 256 色,因为除非经过配置,否则 tmux 不会透传真彩色转义序列。请在 `~/.tmux.conf` 中添加 `set -ga terminal-overrides ',*:Tc'` 之后再设置此变量。有关其他 tmux 设置,请参阅[终端配置](/docs/zh-CN/terminal-config) |

417| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | 在 Linux 和 WSL 上,设置为以逗号分隔的进程类型列表,Claude Code 会将这些类型的进程[排除在工具内存上限之外](/docs/zh-CN/tools-reference#memory-limit-on-linux-and-wsl),例如 `mcp` 或 `lsp`。设置为 `none` 可对所有类型设置上限,设置为 `all-new` 则仅对 Bash、PowerShell 和 Monitor 工具命令设置上限。无论您列出什么,Claude Code 都会将 Bash、PowerShell 和 Monitor 工具命令保持在上限之下。需要 Claude Code v2.1.246 或更高版本 |423| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | 在 Linux 和 WSL 上,设置为以逗号分隔的进程类型列表,例如 `mcp` 或 `lsp`,Claude Code 会将这些类型的进程[排除在工具内存上限之外](/docs/zh-CN/tools-reference#memory-limit-on-linux-and-wsl)。设置为 `none` 可对所有类型施加上限,设置为 `all-new` 则仅对 Bash、PowerShell 和 Monitor 工具命令施加上限。无论您列出什么,Claude Code 都会让 Bash、PowerShell 和 Monitor 工具命令受上限约束。需要 Claude Code v2.1.246 或更高版本 |

418| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | 在 Linux 和 WSL 上,设置为诸如 `4G` 的大小,以[限制 Bash 和 PowerShell 工具命令可使用的内存](/docs/zh-CN/tools-reference#memory-limit-on-linux-and-wsl),在 v2.1.246 或更高版本上也包括 Monitor 工具命令。请以纯数字书写大小,单独使用表示字节数,或带上 `K`、`M`、`G` 或 `T` 后缀。设置为 `0` 或 `off` 可关闭上限。一旦 Claude Code 启动的第一个进程已开启或关闭上限,更改后的值将在您下次启动 `claude` 时生效。需要 Claude Code v2.1.233 或更高版本 |424| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | 在 Linux 和 WSL 上,设置为 `4G` 等大小可[限制 Bash 和 PowerShell 工具命令可使用的内存](/docs/zh-CN/tools-reference#memory-limit-on-linux-and-wsl),在 v2.1.246 或更高版本中还包括 Monitor 工具命令。请以纯数字书写大小,单独使用表示字节数,或带上 `K`、`M`、`G` 或 `T` 后缀。设置为 `0` 或 `off` 可关闭上限。一旦 Claude Code 启动的第一个进程开启或关闭了上限,更改后的值将在您下次启动 `claude` 时生效。需要 Claude Code v2.1.233 或更高版本 |

419| `CLAUDE_CODE_TRANSCRIPT_LOCAL_GC` | 设置为 `1` 可限制长时间运行的 `-p` 或 Agent SDK 会话的[会话记录文件](/docs/zh-CN/sessions#where-transcripts-are-stored)的增长大小。每次压缩后,一旦文件大于 5 MB,Claude Code 就会移除该次压缩之前的历史。无论文件是否被裁剪,恢复会话都会还原相同的对话。请在您启动 Claude Code 的环境中设置它,因为设置中的 `env` 块无法开启它。需要 Claude Code v2.1.287 或更高版本 |425| `CLAUDE_CODE_TRANSCRIPT_LOCAL_GC` | 设置为 `1` 可限制长时间运行的 `-p` 或 Agent SDK 会话的[会话记录文件](/docs/zh-CN/sessions#where-transcripts-are-stored)的增长大小。每次压缩后,一旦文件大于 5 MB,Claude Code 就会删除该次压缩之前的历史记录。无论文件是否被裁剪,恢复会话都会还原相同的对话。请在启动 Claude Code 的环境中设置此变量,因为设置中的 `env` 块无法开启它。需要 Claude Code v2.1.287 或更高版本 |

420| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Claude Code 取消转发给远程客户端(例如 [Remote Control](/docs/zh-CN/remote-control) 或 SDK 宿主)的对话框,或取消[被暂扣的跨会话消息](/docs/zh-CN/cross-session-messaging#control-inbound-messages)的批准对话框之前的截止时间(毫秒);权限提示和 `AskUserQuestion` 问题使用各自的流程,不受其约束。在 Claude Code v2.1.236 或更高版本上,它还会限制可能处于无人值守运行状态的会话中途出现的 [Fable 使用额度同意提示](/docs/zh-CN/model-config#fable-and-usage-credits)。[控制入站消息](/docs/zh-CN/cross-session-messaging#control-inbound-messages)和[非交互式会话](/docs/zh-CN/cross-session-messaging#non-interactive-sessions)涵盖了完整的暂扣消息过期规则,包括截止时间不适用的情况。覆盖 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 设置。`0` 或负值会禁用截止时间。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |426| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Claude Code 取消其转发给远程客户端(例如 [Remote Control](/docs/zh-CN/remote-control) 或 SDK 主机)的对话框,或取消[被暂扣的跨会话消息](/docs/zh-CN/cross-session-messaging#control-inbound-messages)的批准对话框之前的截止时间(毫秒);权限提示和 `AskUserQuestion` 问题使用各自的流程,不受此变量控制。在 Claude Code v2.1.236 或更高版本中,它还会限制可能处于无人值守运行状态的会话中途出现的 [Fable 使用额度同意提示](/docs/zh-CN/model-config#fable-and-usage-credits)。[控制入站消息](/docs/zh-CN/cross-session-messaging#control-inbound-messages)和[非交互会话](/docs/zh-CN/cross-session-messaging#non-interactive-sessions)介绍了完整的暂扣消息过期规则,包括截止时间不适用的情况。覆盖 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 设置。`0` 或负值会禁用截止时间。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略 |

421| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) |427| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) |

422| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) |428| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) |

423| `CLAUDE_CODE_USE_FOUNDRY` | 使用 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry) |429| `CLAUDE_CODE_USE_FOUNDRY` | 使用 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry) |

424| `CLAUDE_CODE_USE_MANTLE` | 使用 Amazon Bedrock [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint) |430| `CLAUDE_CODE_USE_MANTLE` | 使用 Amazon Bedrock [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint) |

425| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | 设置为 `1` 以使用 Node.js 文件 API 而非 ripgrep 来发现自定义命令、子代理和输出样式。如果捆绑的 ripgrep 二进制文件在您的环境中不可用或被阻止,请设置此项。不影响 Grep 或文件搜索工具 |431| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | 设置为 `1` 可使用 Node.js 文件 API 而非 ripgrep 来发现自定义命令、子代理和输出样式。如果捆绑的 ripgrep 二进制文件在您的环境中不可用或被阻止,请设置此变量。不影响 Grep 或文件搜索工具 |

426| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | 控制 PowerShell 工具。在未安装 Git Bash 的 Windows 上,该工具会自动启用;设置为 `0` 可将其禁用。在已安装 Git Bash 的 Windows 上,对于 claude.ai 和 Console 账户,该工具默认开启;设置为 `1` 可在 Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 会话中启用它,设置为 `0` 则将其关闭。在 Linux、macOS 和 WSL 上,设置为 `1` 可启用它,这需要 `PATH` 中有 `pwsh`。在 Windows 上启用后,Claude 可以原生运行 PowerShell 命令,而无需通过 Git Bash 路由。请参阅 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool) |432| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | 控制 PowerShell 工具。在未安装 Git Bash 的 Windows 上,该工具会自动启用;设置为 `0` 可将其禁用。在安装了 Git Bash 的 Windows 上,该工具对 claude.ai 和 Console 账户默认开启;设置为 `1` 可在 Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 会话中启用它,设置为 `0` 可将其关闭。在 Linux、macOS 和 WSL 上,设置为 `1` 可启用它,这要求 `PATH` 中有 `pwsh`。在 Windows 上启用后,Claude 可以原生运行 PowerShell 命令,而无需通过 Git Bash 转发。请参阅 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool) |

427| `CLAUDE_CODE_USE_VERTEX` | 使用 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) |433| `CLAUDE_CODE_USE_VERTEX` | 使用 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) |

428| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | 设置为 [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 缓存每个已获取 URL 的响应的毫秒数。默认值为 `900000`,即 15 分钟。仅接受纯数字;`0`、小数或任何其他写法都会保持默认值。Claude Code 每次启动时读取一次该值,因此在设置的 `env` 块中所做的更改将在您下次启动 `claude` 时生效。需要 Claude Code v2.1.233 或更高版本 |434| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | 设置为 [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 缓存每个已获取 URL 响应的毫秒数。默认值为 `900000`,即 15 分钟。仅接受纯数字;`0`、小数或任何其他写法都会保持默认值。Claude Code 每次启动时读取一次该值,因此在设置的 `env` 块中所做的更改会在您下次启动 `claude` 时生效。需要 Claude Code v2.1.233 或更高版本 |

429| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 等待页面下载(包括其跟随的任何重定向)的时长上限,以毫秒为单位。到时仍未完成的下载将因截止时间错误而失败。默认值为 `300000`,即五分钟。设置为 `0` 可取消该限制。仅接受纯数字;小数或任何其他写法都会保持默认值。需要 Claude Code v2.1.268 或更高版本 |435| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | [WebFetch](/docs/zh-CN/tools-reference#webfetch-tool-behavior) 等待页面下载完成(包括其跟随的任何重定向)的时间上限(毫秒)。到时仍未完成的下载会以截止时间错误失败。默认值为 `300000`,即五分钟。设置为 `0` 可取消该限制。仅接受纯数字;小数或任何其他写法都会保持默认值。需要 Claude Code v2.1.268 或更高版本 |

430| `CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR` | 会话的 [WebSearch 限制](/docs/zh-CN/tools-reference#session-search-limit)的补充速率,以每小时调用次数计。在交互式终端会话中默认值为 `100`。在[非交互](/docs/zh-CN/headless)会话中默认值为 `0`,即关闭补充。仅接受纯数字;任何其他写法均视为未设置。需要 Claude Code v2.1.290 或更高版本 |436| `CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR` | 会话的 [WebSearch 限制](/docs/zh-CN/tools-reference#session-search-limit)的补充速率,单位为每小时调用次数。在交互式终端会话中默认值为 `100`。在[非交互](/docs/zh-CN/headless)会话中默认值为 `0`,即关闭补充。仅接受纯数字;任何其他写法都视为未设置。需要 Claude Code v2.1.290 或更高版本 |

431| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | 当 `CLAUDE_AUTO_BACKGROUND_TASKS` 设置为 `1` 时,Claude Code 在每次提醒 Claude 检查仍在运行的[后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)之前等待的时长。接受一个或多个以逗号分隔的等待时间,以整秒为单位,范围为 `1` 到 `86400`,例如 `600` 或 `600,1800,3600`。每个值是下一次提醒之前的等待时间,最后一个值会重复使用。仅接受纯数字;任何其他值或写法均视为未设置。未设置时不会发送提醒。需要 Claude Code v2.1.283 或更高版本 |437| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | 当 `CLAUDE_AUTO_BACKGROUND_TASKS` 设置为 `1` 时,Claude Code 每次提醒 Claude 检查仍在运行的[后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)之前等待的时长。接受一个或多个以逗号分隔的等待时间,单位为整秒,范围为 `1` 到 `86400`,例如 `600` 或 `600,1800,3600`。每个值是下一次提醒之前的等待时间,最后一个值会重复使用。仅接受纯数字;任何其他值或写法都视为未设置。未设置时不会有提醒。需要 Claude Code v2.1.283 或更高版本 |

432| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | 单次[工作流](/docs/zh-CN/workflows)运行同时执行的 Agent 数量,范围为 `1` 到 `256`。默认情况下,一次运行最多同时执行 16 个 Agent,当 Claude Code 可用的 CPU 较少时会更少;排队的 `agent()` 调用会等待空闲槽位。每个运行中 Agent 的会话记录都保留在 Claude Code 的内存中,因此较高的值会增加内存使用。仅接受纯数字;超出范围的值和其他写法会保持默认值。需要 Claude Code v2.1.269 或更高版本 |438| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | 单次[工作流](/docs/zh-CN/workflows)运行同时执行的 Agent 数量,范围为 `1` 到 `256`。默认情况下,一次运行最多同时执行 16 个 Agent,当 Claude Code 可用的 CPU 较少时数量会更少;排队的 `agent()` 调用会等待空闲槽位。每个正在运行的 Agent 的会话记录都保存在 Claude Code 的内存中,因此值越高,内存使用量越大。仅接受纯数字;超出范围的值和其他写法都会保持默认值。需要 Claude Code v2.1.269 或更高版本 |

433| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | [工作流](/docs/zh-CN/workflows) Agent 在发送自己的第一个请求之前,等待具有相同前缀的同级 Agent 的第一个响应开始的时长上限,以毫秒为单位。当扇出启动多个共享[提示缓存前缀](/docs/zh-CN/workflows#prompt-caching-in-a-fan-out)的 Agent 时,Claude Code 会将除第一个之外的所有 Agent 最多保留这么长时间,以便其余 Agent 读取已缓存的前缀,而不是各自在未缓存的情况下处理它。默认值为 `5000`。设置为 `0` 可禁用等待。设置了 `DISABLE_PROMPT_CACHING` 时,Agent 从不等待。需要 Claude Code v2.1.229 或更高版本 |439| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | [工作流](/docs/zh-CN/workflows) Agent 在发送自己的第一个请求之前,等待具有相同前缀的同级 Agent 的第一个响应开始的时间上限(毫秒)。当扇出启动多个共享同一[提示缓存前缀](/docs/zh-CN/workflows#prompt-caching-in-a-fan-out)的 Agent 时,Claude Code 会让除第一个 Agent 之外的所有 Agent 最多等待这么长时间,以便其余 Agent 读取已缓存的前缀,而不是各自在未缓存的情况下处理它。默认值为 `5000`。设置为 `0` 可禁用等待。设置了 `DISABLE_PROMPT_CACHING` 时,Agent 从不等待。需要 Claude Code v2.1.229 或更高版本 |

434| `CLAUDE_CONFIG_DIR` | 覆盖配置目录(默认:`~/.claude`)。所有设置、会话历史和插件都存储在此路径下。关于凭据,请参阅 [Claude Code 存储凭据的位置](/docs/zh-CN/authentication#credential-management)。适用于并行运行多个账户:例如 `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`。在您的 shell、用户设置或托管设置中设置它。在设置文件中,请写入[绝对路径](#in-settings-files)。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略 |440| `CLAUDE_CONFIG_DIR` | 覆盖配置目录(默认:`~/.claude`)。所有设置、会话历史和插件都存储在此路径下。关于凭据,请参阅 [Claude Code 存储凭据的位置](/docs/zh-CN/authentication#credential-management)。适用于同时运行多个账户:例如 `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`。请在 shell、用户设置或托管设置中设置它。在设置文件中,请写入[绝对路径](#in-settings-files)。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略 |

435| `CLAUDE_DISABLE_ADOPT` | 设置为 `1` 后,当您按 `←` 或使用 [`/background`](/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时,会停止正在进行的后台工作,而不是将其延续。Claude Code 会在转入后台前请您确认,然后停止原本会延续的任务。需要 Claude Code v2.1.195 或更高版本 |441| `CLAUDE_DISABLE_ADOPT` | 设置为 `1` 后,当您按 `←` 或使用 [`/background`](/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时,会停止进行中的后台工作,而不是将其延续。Claude Code 会在转入后台之前请您确认,然后停止原本会被延续的任务。需要 Claude Code v2.1.195 或更高版本 |

436| `CLAUDE_EFFORT` | 在 Bash 工具子进程和 hook 命令中自动设置为子进程启动时生效的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。与传递给 [hook](/docs/zh-CN/hooks) 的 `effort.level` 字段一致。仅在当前模型支持 effort 参数时设置 |442| `CLAUDE_EFFORT` | 在 Bash 工具子进程和 hook 命令中自动设置为子进程启动时生效的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。与传递给 [hook](/docs/zh-CN/hooks) 的 `effort.level` 字段一致。仅在当前模型支持 effort 参数时设置 |

437| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 设置为 `1` 以强制启用字节级流式空闲看门狗,或设置为 `0` 以强制禁用它。`0` 还会在运行[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)的连接上关闭该截止时间。未设置时,看门狗默认对直连 Anthropic API 和 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的连接启用,也对通过 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 访问的[网关](/docs/zh-CN/gateways)连接上的流式响应启用;在 v2.1.222 之前,它不会在这些网关连接上运行,因此即使 keep-alive ping 正在到达,事件级看门狗也可能在那里报告停滞。关于超时以及各计时器如何相互作用,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 设置为 `1` 可强制启用字节级流式空闲看门狗,设置为 `0` 可强制禁用它。`0` 还会在运行[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)的连接上关闭该截止时间。未设置时,该看门狗默认在直连 Anthropic API 和 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的连接上启用,并对通过 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 访问的[网关](/docs/zh-CN/gateways)连接上的流式响应启用;在 v2.1.222 之前,它不会在这些网关连接上运行,因此即使 keep-alive ping 持续到达,事件级看门狗也可能在那里报告停滞。关于超时时间以及各计时器如何相互作用,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |

438| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 设置为 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 响应上启用字节级流式空闲看门狗,这也会在 Bedrock 流式请求上启用[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)。默认关闭。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置超时时间 |444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 设置为 `1` 可在 Amazon Bedrock `vnd.amazon.eventstream` 响应上启用字节级流式空闲看门狗,这也会在 Bedrock 流式请求上启用[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)。默认关闭。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置超时时间 |

439| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 设置为 `0` 以强制禁用事件级流式空闲看门狗,或设置为 `1` 以强制启用它。未设置时,看门狗对所有提供商默认开启。在 v2.1.196 之前,未设置时的默认值在直连 Anthropic API 上由服务器控制,在其他提供商上则为关闭。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置超时时间;关于与此看门狗同时运行的其他停滞计时器,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 设置为 `0` 可强制禁用事件级流式空闲看门狗,设置为 `1` 可强制启用它。未设置时,该看门狗对所有提供商默认开启。在 v2.1.196 之前,未设置时的默认值在直连 Anthropic API 上由服务器控制,在其他提供商上为关闭。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置超时时间;关于与其同时运行的其他停滞计时器,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |

440| `CLAUDE_ENV_FILE` | shell 脚本的路径,Claude Code 会在同一 shell 进程中于每个 Bash 命令之前运行其内容,因此文件中的导出对该命令可见。用于在命令之间保持 virtualenv 或 conda 的激活状态。也会由 [SessionStart](/docs/zh-CN/hooks#persist-environment-variables)、[Setup](/docs/zh-CN/hooks#setup)、[CwdChanged](/docs/zh-CN/hooks#cwdchanged) 和 [FileChanged](/docs/zh-CN/hooks#filechanged) hook 动态填充 |446| `CLAUDE_ENV_FILE` | shell 脚本的路径,Claude Code 会在同一 shell 进程中于每个 Bash 命令之前运行该脚本的内容,因此文件中的导出对命令可见。用于在多个命令之间保持 virtualenv 或 conda 的激活状态。也会由 [SessionStart](/docs/zh-CN/hooks#persist-environment-variables)、[Setup](/docs/zh-CN/hooks#setup)、[CwdChanged](/docs/zh-CN/hooks#cwdchanged) 和 [FileChanged](/docs/zh-CN/hooks#filechanged) hook 动态填充 |

441| `CLAUDE_JOB_DIR` | 由 Claude Code 在每个[后台会话](/docs/zh-CN/agent-view)中设置为该会话的 `~/.claude/jobs/<id>` 目录。该会话运行的 shell 命令会继承它。请将临时文件写入 [`$CLAUDE_JOB_DIR/tmp`](/docs/zh-CN/agent-view#where-state-is-stored)。Claude 在该处的 `Write` 和 `Edit` 调用不会请求权限,并且该目录会在会话被删除时移除 |447| `CLAUDE_JOB_DIR` | 由 Claude Code 在每个[后台会话](/docs/zh-CN/agent-view)中设置为该会话的 `~/.claude/jobs/<id>` 目录。会话运行的 shell 命令会继承它。请将临时文件写入 [`$CLAUDE_JOB_DIR/tmp`](/docs/zh-CN/agent-view#where-state-is-stored)。Claude 在该位置的 `Write` 和 `Edit` 调用不会提示请求权限,且该目录会在会话被删除时一并移除 |

442| `CLAUDE_PID` | Claude Code 在其生成的子进程(Bash 和 PowerShell 工具命令以及 hook 命令)中将此变量设置为其自身的进程 ID。在 Linux 上,Bash 工具的 shell 集成会使用它来拒绝会匹配 Claude Code 进程本身的 `pkill` 模式;请参阅[错误参考](/docs/zh-CN/errors#pkill-pattern-matches-the-claude-code-process)。您可以在自己的脚本中读取它,以有意识地识别父 Claude Code 进程或向其发送信号。需要 Claude Code v2.1.214 或更高版本 |448| `CLAUDE_PID` | Claude Code 会在其生成的子进程(Bash 和 PowerShell 工具命令以及 hook 命令)中将此变量设置为自身的进程 ID。在 Linux 上,Bash 工具的 shell 集成会使用它来拒绝会匹配 Claude Code 进程本身的 `pkill` 模式;请参阅[错误参考](/docs/zh-CN/errors#pkill-pattern-matches-the-claude-code-process)。您可以在自己的脚本中读取它,以有意识地识别父 Claude Code 进程或向其发送信号。需要 Claude Code v2.1.214 或更高版本 |

443| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 未提供显式名称时,自动生成的 [Remote Control](/docs/zh-CN/remote-control) 会话名称的前缀。默认为您机器的主机名,生成类似 `myhost-graceful-unicorn` 的名称。`--remote-control-session-name-prefix` CLI 标志可为单次调用设置相同的值 |449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 未提供显式名称时,自动生成的 [Remote Control](/docs/zh-CN/remote-control) 会话名称的前缀。默认为您机器的主机名,生成的名称类似 `myhost-graceful-unicorn`。`--remote-control-session-name-prefix` CLI 标志可为单次调用设置相同的值 |

444| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | 在运行[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)的连接上,流式请求第一个响应字节的截止时间,以毫秒为单位。关于 Claude Code 如何限制该值、为大型请求体额外增加的时间,以及未设置时如何选择截止时间,请参阅 [No response from API](/docs/zh-CN/errors#no-response-from-api)。需要 Claude Code v2.1.242 或更高版本 |450| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | 在运行[首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs)的连接上,流式请求第一个响应字节的截止时间(毫秒)。关于 Claude Code 如何限定该值、为较大请求体额外增加的时间,以及未设置此变量时如何选择截止时间,请参阅 [No response from API](/docs/zh-CN/errors#no-response-from-api)。需要 Claude Code v2.1.242 或更高版本 |

445| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 事件级和字节级流式空闲看门狗关闭停滞连接之前的超时时间,以毫秒为单位。显式设置此变量时,最小值为 `300000`(5 分钟);较低的值会被静默提升,以容纳扩展思考的停顿和代理缓冲,字节级看门狗将该值上限设为 30 分钟。对于字节级看门狗,`CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 优先于此变量。关于各看门狗在未设置时的默认值,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |451| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 事件级和字节级流式空闲看门狗关闭停滞连接之前的超时时间(毫秒)。显式设置此变量时,最小值为 `300000`(5 分钟);较低的值会被静默提升至该值,以容纳扩展思考停顿和代理缓冲,且字节级看门狗会将该值上限设为 30 分钟。对于字节级看门狗,`CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 优先于此变量。关于各看门狗在未设置时的默认值,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |

446| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | 已在 v2.1.260 中移除,现在不起任何作用。以前用于限制[子代理](/docs/zh-CN/sub-agents)启动的[后台 shell 命令](/docs/zh-CN/interactive-mode#background-bash-commands)可运行的时长,以毫秒为单位,默认值为 60 分钟。请参阅[后台命令生命周期规则](/docs/zh-CN/tools-reference#background-commands) |452| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | 已在 v2.1.260 中移除,现在不起任何作用。此前用于限制[子代理](/docs/zh-CN/sub-agents)启动的[后台 shell 命令](/docs/zh-CN/interactive-mode#background-bash-commands)可运行的时长(毫秒),默认为 60 分钟。请参阅[后台命令生命周期规则](/docs/zh-CN/tools-reference#background-commands) |

447| `DEBUG` | 设置为 `1` 以启用调试模式,等同于使用 [`--debug`](/docs/zh-CN/cli-reference#cli-flags) 启动。调试日志写入 `~/.claude/debug/<session-id>.txt`,或写入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 设置的路径。只有真值 `1`、`true`、`yes` 和 `on` 会启用调试模式,因此为其他工具设置的命名空间模式(如 `DEBUG=express:*`)不会触发它 |453| `DEBUG` | 设置为 `1` 可启用调试模式,等同于使用 [`--debug`](/docs/zh-CN/cli-reference#cli-flags) 启动。调试日志会写入 `~/.claude/debug/<session-id>.txt`,或写入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 设置的路径。只有真值 `1`、`true`、`yes` 和 `on` 才会启用调试模式,因此为其他工具设置的命名空间模式(如 `DEBUG=express:*`)不会触发它 |

448| `DISABLE_AUTOUPDATER` | 设置为 `1` 以禁用自动后台更新。手动 `claude update` 仍然有效。使用 `DISABLE_UPDATES` 可同时阻止两者 |454| `DISABLE_AUTOUPDATER` | 设置为 `1` 可禁用自动后台更新。手动 `claude update` 仍然有效。使用 `DISABLE_UPDATES` 可同时阻止两者 |

449| `DISABLE_AUTO_COMPACT` | 设置为 `1` 以禁用接近上下文限制时的自动压缩。手动 `/compact` 命令仍然可用。适用于您希望明确控制何时进行压缩的情况。覆盖 [`autoCompactEnabled`](/docs/zh-CN/settings-reference#autocompactenabled) 设置 |455| `DISABLE_AUTO_COMPACT` | 设置为 `1` 可禁用接近上下文限制时的自动压缩。手动 `/compact` 命令仍然可用。适用于您希望明确控制何时进行压缩的情况。覆盖 [`autoCompactEnabled`](/docs/zh-CN/settings-reference#autocompactenabled) 设置 |

450| `DISABLE_COMPACT` | 设置为 `1` 以禁用所有压缩:包括自动压缩和手动 `/compact` 命令 |456| `DISABLE_COMPACT` | 设置为 `1` 可禁用所有压缩:包括自动压缩和手动 `/compact` 命令 |

451| `DISABLE_COST_WARNINGS` | 设置为 `1` 以禁用费用警告消息 |457| `DISABLE_COST_WARNINGS` | 设置为 `1` 可禁用费用警告消息 |

452| `DISABLE_DOCTOR_COMMAND` | 设置为 `1` 以隐藏 [`/doctor`](/docs/zh-CN/commands#all-commands) 环境配置检查 skill 及其 `/checkup` 别名。适用于用户不应在会话中运行环境配置诊断的托管部署。不影响 `claude doctor` 终端命令。在 v2.1.205 之前,此变量会隐藏 `/doctor` 诊断界面命令 |458| `DISABLE_DOCTOR_COMMAND` | 设置为 `1` 可隐藏 [`/doctor`](/docs/zh-CN/commands#all-commands) 设置检查 skill 及其 `/checkup` 别名。适用于不应让用户在会话中运行设置诊断的托管部署。不影响 `claude doctor` 终端命令。在 v2.1.205 之前,此变量会隐藏 `/doctor` 诊断界面命令 |

453| `DISABLE_ERROR_REPORTING` | 设置为任意非空值(例如 `1`)以选择退出错误报告。**与大多数开关变量不同,将其设置为 `0` 或 `false` 仍会选择退出**;取消设置该变量可重新开启错误报告 |459| `DISABLE_ERROR_REPORTING` | 设置为任意非空值(例如 `1`)可选择退出错误报告。与大多数开/关变量不同,**将其设置为 `0` 或 `false` 仍会选择退出**;取消设置该变量即可重新开启错误报告 |

454| `DISABLE_EXTRA_USAGE_COMMAND` | 设置为 `1` 以隐藏 `/usage-credits` 命令,该命令允许用户购买超出速率限制的额外用量 |460| `DISABLE_EXTRA_USAGE_COMMAND` | 设置为 `1` 可隐藏允许用户购买超出速率限制的额外用量的 `/usage-credits` 命令 |

455| `DISABLE_FEEDBACK_COMMAND` | 设置为 `1` 以禁用 `/feedback` 命令和 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)。还会禁用通过同一路径报告的 `/bug` 和 `/share`;在 v2.1.212 之前,它们是 `/feedback` 的别名,因此该命令在所有名称下都会被禁用。也接受旧名称 `DISABLE_BUG_COMMAND` |461| `DISABLE_FEEDBACK_COMMAND` | 设置为 `1` 可禁用 `/feedback` 命令和 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)。同时还会禁用通过同一路径报告的 `/bug` 和 `/share`;在 v2.1.212 之前,它们是 `/feedback` 的别名,因此该命令在所有名称下都会被禁用。也接受旧名称 `DISABLE_BUG_COMMAND` |

456| `DISABLE_GROWTHBOOK` | 设置为 `1` 或 `true` 以禁用 GrowthBook 功能标志获取,并对每个标志使用代码默认值。这会使 [Remote Control](/docs/zh-CN/remote-control#requirements) 和其他[需要获取功能标志的功能](#features-that-need-feature-flag-fetching)不可用。将其设置为 `0` 或 `false` 会保持获取开启。除非同时设置了 `DISABLE_TELEMETRY`,否则遥测事件日志记录保持开启 |462| `DISABLE_GROWTHBOOK` | 设置为 `1` 或 `true` 可禁用 GrowthBook 功能标志获取,并对每个标志使用代码中的默认值。这会使 [Remote Control](/docs/zh-CN/remote-control#requirements) 以及其他[需要获取功能标志的功能](#features-that-need-feature-flag-fetching)不可用。设置为 `0` 或 `false` 会保持获取开启。除非同时设置了 `DISABLE_TELEMETRY`,否则遥测事件日志记录保持开启 |

457| `DISABLE_INSTALLATION_CHECKS` | 设置为 `1` 以禁用安装警告。仅在手动管理安装位置时使用,因为这可能会掩盖标准安装中的问题 |463| `DISABLE_INSTALLATION_CHECKS` | 设置为 `1` 可禁用安装警告。仅在手动管理安装位置时使用,因为这可能会掩盖标准安装中的问题 |

458| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | 设置为 `1` 以隐藏 `/install-github-app` 命令。使用第三方提供商(Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry)时已隐藏 |464| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | 设置为 `1` 可隐藏 `/install-github-app` 命令。使用第三方提供商(Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry)时已默认隐藏 |

459| `DISABLE_INTERLEAVED_THINKING` | 设置为 `1` 以阻止发送 interleaved-thinking beta 标头。当您的 LLM 网关或提供商不支持[交错思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking)时很有用 |465| `DISABLE_INTERLEAVED_THINKING` | 设置为 `1` 可阻止发送 interleaved-thinking beta 标头。适用于您的 LLM 网关或提供商不支持[交错思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking)的情况 |

460| `DISABLE_LOGIN_COMMAND` | 设置为 `1` 以隐藏 `/login` 命令。当身份验证通过 API 密钥或 `apiKeyHelper` 在外部处理时很有用 |466| `DISABLE_LOGIN_COMMAND` | 设置为 `1` 可隐藏 `/login` 命令。适用于身份验证通过 API 密钥或 `apiKeyHelper` 在外部处理的情况 |

461| `DISABLE_LOGOUT_COMMAND` | 设置为 `1` 以隐藏 `/logout` 命令 |467| `DISABLE_LOGOUT_COMMAND` | 设置为 `1` 可隐藏 `/logout` 命令 |

462| `DISABLE_PROMPT_CACHING` | 设置为 `1` 以对所有模型禁用[提示缓存](/docs/zh-CN/prompt-caching#disable-prompt-caching)(优先于按模型的设置) |468| `DISABLE_PROMPT_CACHING` | 设置为 `1` 可为所有模型禁用[提示缓存](/docs/zh-CN/prompt-caching#disable-prompt-caching)(优先于按模型的设置) |

463| `DISABLE_PROMPT_CACHING_FABLE` | 设置为 `1` 以对 Fable 模型禁用提示缓存 |469| `DISABLE_PROMPT_CACHING_FABLE` | 设置为 `1` 可为 Fable 模型禁用提示缓存 |

464| `DISABLE_PROMPT_CACHING_HAIKU` | 设置为 `1` 以对[默认 Haiku 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存,无论其在何处运行 |470| `DISABLE_PROMPT_CACHING_HAIKU` | 设置为 `1` 可为[默认 Haiku 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存,无论其在何处运行 |

465| `DISABLE_PROMPT_CACHING_OPUS` | 设置为 `1` 以对[默认 Opus 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存 |471| `DISABLE_PROMPT_CACHING_OPUS` | 设置为 `1` 可为[默认 Opus 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存 |

466| `DISABLE_PROMPT_CACHING_SONNET` | 设置为 `1` 以对[默认 Sonnet 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存 |472| `DISABLE_PROMPT_CACHING_SONNET` | 设置为 `1` 可为[默认 Sonnet 模型](/docs/zh-CN/prompt-caching#disable-prompt-caching)禁用提示缓存 |

467| `DISABLE_TELEMETRY` | 设置为任意非空值(例如 `1`)以选择退出遥测。**与大多数开关变量不同,将其设置为 `0` 或 `false` 仍会选择退出**;取消设置该变量可重新开启遥测。遥测事件不包含用户数据,例如代码、文件路径或 Bash 命令。还会禁用[功能标志获取](#features-that-need-feature-flag-fetching)。请参阅[为您的组织关闭遥测](/docs/zh-CN/managed-settings#turn-telemetry-off-for-your-organization) |473| `DISABLE_TELEMETRY` | 设置为任意非空值(例如 `1`)可选择退出遥测。与大多数开/关变量不同,**将其设置为 `0` 或 `false` 仍会选择退出**;取消设置该变量即可重新开启遥测。遥测事件不包含代码、文件路径或 Bash 命令等用户数据。同时还会禁用[功能标志获取](#features-that-need-feature-flag-fetching)。请参阅[为您的组织关闭遥测](/docs/zh-CN/managed-settings#turn-telemetry-off-for-your-organization) |

468| `DISABLE_UPDATES` | 设置为 `1` 以阻止所有更新,包括手动 `claude update` 和 `claude install`。比 `DISABLE_AUTOUPDATER` 更严格。适用于通过您自己的渠道分发 Claude Code 且用户不应自行更新的情况 |474| `DISABLE_UPDATES` | 设置为 `1` 可阻止所有更新,包括手动 `claude update` 和 `claude install`。比 `DISABLE_AUTOUPDATER` 更严格。适用于通过您自己的渠道分发 Claude Code 且用户不应自行更新的情况 |

469| `DISABLE_UPGRADE_COMMAND` | 设置为 `1` 以隐藏 `/upgrade` 命令 |475| `DISABLE_UPGRADE_COMMAND` | 设置为 `1` 可隐藏 `/upgrade` 命令 |

470| `DO_NOT_TRACK` | 设置为 `1` 以选择退出遥测,效果与 `DISABLE_TELEMETRY` 相同,包括对[功能标志获取](#features-that-need-feature-flag-fetching)的影响。Claude Code 将此变量作为标准布尔值读取,因此 `0` 会保持遥测开启;Claude Code 遵循此变量,是因为它是许多开发者 CLI 都认可的跨工具约定 |476| `DO_NOT_TRACK` | 设置为 `1` 可选择退出遥测,效果与 `DISABLE_TELEMETRY` 相同,包括对[功能标志获取](#features-that-need-feature-flag-fetching)的影响。Claude Code 将此变量作为标准布尔值读取,因此 `0` 会保持遥测开启;Claude Code 遵循它,是因为它是许多开发者 CLI 认可的跨工具约定 |

471| `ENABLE_BETA_TRACING_DETAILED` | 设置为 `1`,并将 `BETA_TRACING_ENDPOINT` 设置为您的 OTLP/HTTP 收集器端点,以开启[详细 beta 追踪](/docs/zh-CN/monitoring-usage#traces-beta),它会添加携带内容的 span 属性和 `claude_code.hook` span。交互式 CLI 会话还要求您的组织已被列入该 beta 的允许列表。这两个变量在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中都会被忽略 |477| `ENABLE_BETA_TRACING_DETAILED` | 设置为 `1`,并将 `BETA_TRACING_ENDPOINT` 设置为您的 OTLP/HTTP 收集器端点,即可开启[详细 beta 追踪](/docs/zh-CN/monitoring-usage#traces-beta),它会添加包含内容的 span 属性以及 `claude_code.hook` span。交互式 CLI 会话还要求您的组织已被列入该 beta 的允许名单。这两个变量在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中都会被忽略 |

472| `ENABLE_CLAUDEAI_MCP_SERVERS` | 设置为 `false` 以阻止 Claude Code 获取 [claude.ai MCP 服务器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)。对已登录用户默认启用。要按项目或按组织禁用,请改为在设置中设置 [`disableClaudeAiConnectors`](/docs/zh-CN/settings-reference#disableclaudeaiconnectors) |478| `ENABLE_CLAUDEAI_MCP_SERVERS` | 设置为 `false` 可阻止 Claude Code 获取 [claude.ai MCP 服务器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)。对已登录用户默认启用。如需按项目或按组织禁用,请改为在设置中设置 [`disableClaudeAiConnectors`](/docs/zh-CN/settings-reference#disableclaudeaiconnectors) |

473| `ENABLE_PROMPT_CACHING_1H` | 设置为 `1` 以请求 1 小时的[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime),而不是默认的 5 分钟。适用于 API 密钥、[Amazon Bedrock](/docs/zh-CN/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai)、[Microsoft Foundry](/docs/zh-CN/microsoft-foundry) 和 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 用户。在包含用量范围内的订阅用户会在[主对话](/docs/zh-CN/prompt-caching#which-ttl-each-request-gets)上自动获得 1 小时 TTL。使用[使用额度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)的订阅用户可以设置此变量以保持 1 小时 TTL。1 小时缓存写入按更高费率计费。要改为按请求类别选择 TTL,请使用 `CLAUDE_CODE_PROMPT_CACHE_TTL` 和 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`,它们优先于此变量 |479| `ENABLE_PROMPT_CACHING_1H` | 设置为 `1` 可请求 1 小时的[提示缓存 TTL](/docs/zh-CN/prompt-caching#cache-lifetime),而不是默认的 5 分钟。适用于 API 密钥、[Amazon Bedrock](/docs/zh-CN/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai)、[Microsoft Foundry](/docs/zh-CN/microsoft-foundry) 和 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 用户。在包含用量范围内的订阅用户会在[主对话](/docs/zh-CN/prompt-caching#which-ttl-each-request-gets)上自动获得 1 小时 TTL。正在使用[使用额度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)的订阅用户可以设置此变量以保留 1 小时 TTL。1 小时缓存写入按更高费率计费。如需改为按请求类别选择 TTL,请使用 `CLAUDE_CODE_PROMPT_CACHE_TTL` 和 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`,它们优先于此变量 |

474| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。请改用 `ENABLE_PROMPT_CACHING_1H` |480| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。请改用 `ENABLE_PROMPT_CACHING_1H` |

475| `ENABLE_TOOL_SEARCH` | 控制 [MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)。未设置时,Claude Code 默认延迟加载所有 MCP 工具。但在早于 Claude 4.5 代的 Google Cloud's Agent Platform 模型上、在托管于 Azure 的 Microsoft Foundry 部署上,以及当 `ANTHROPIC_BASE_URL` 指向非第一方主机时,它仍会预先加载这些工具。`true` 始终延迟加载并发送 beta 标头,但上述 Agent Platform 模型和 Microsoft Foundry 部署除外;在不支持 `tool_reference` 的代理上,请求会失败。`auto` 会在工具定义占上下文 10% 以内时预先加载。`auto:N` 设置自定义阈值,例如 `auto:5` 表示 5%。`false` 会预先加载所有工具。设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` 时,您自行设置的值会被忽略。在 v2.1.221 之前,除非您将此变量设置为 `true`,否则 Claude Code 会对 Google Cloud's Agent Platform 上的所有模型禁用工具搜索 |481| `ENABLE_TOOL_SEARCH` | 控制 [MCP 工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)。未设置时,Claude Code 默认延迟加载所有 MCP 工具。但在 Google Cloud's Agent Platform 上早于 Claude 4.5 代的模型、托管在 Azure 上的 Microsoft Foundry 部署,以及 `ANTHROPIC_BASE_URL` 指向非第一方主机时,它仍会预先加载这些工具。`true` 始终延迟加载并发送 beta 标头,但上述 Agent Platform 模型和 Microsoft Foundry 部署除外;在不支持 `tool_reference` 的代理上,请求会失败。`auto` 在工具定义占上下文 10% 以内时预先加载。`auto:N` 设置自定义阈值,例如 `auto:5` 表示 5%。`false` 预先加载所有工具。设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` 时,您自行设置的值会被忽略。在 v2.1.221 之前,除非您将此变量设置为 `true`,否则 Claude Code 会在 Google Cloud's Agent Platform 上为所有模型禁用工具搜索 |

476| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 设置为任意非空值(例如 `1`),使 Claude Code 在未配置备用模型时,对所有模型在反复出现过载错误时停止重试。**与大多数开关变量不同,将其设置为 `0` 或 `false` 仍会启用此行为**;取消设置该变量可恢复默认重试行为。如果不设置,当您使用 API 密钥或[第三方提供商](/docs/zh-CN/third-party-integrations)而非 Claude 订阅进行身份验证时,Claude Code 仅对其识别为 Opus、Fable 或 Mythos 的模型以这种方式停止重试。在 Claude Code v2.1.160 或更高版本上,Claude Code 会在任何主模型反复出现过载错误时切换到您配置的[备用模型链](/docs/zh-CN/model-config#fallback-model-chains),因此此变量不影响切换到备用模型 |482| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 设置为任意非空值(例如 `1`),可在未配置备用模型时,让 Claude Code 对所有模型在重复出现过载错误时停止重试。与大多数开/关变量不同,**将其设置为 `0` 或 `false` 仍会启用此行为**;取消设置该变量即可恢复默认的重试行为。如果不设置此变量,当您使用 API 密钥或[第三方提供商](/docs/zh-CN/third-party-integrations)而非 Claude 订阅进行身份验证时,Claude Code 仅在其识别为 Opus、Fable 或 Mythos 的模型上以这种方式停止重试。在 Claude Code v2.1.160 或更高版本中,对于任何主模型,Claude Code 都会在重复出现过载错误时切换到您配置的[备用模型链](/docs/zh-CN/model-config#fallback-model-chains),因此此变量不影响切换到备用模型 |

477| `FORCE_AUTOUPDATE_PLUGINS` | 设置为 `1` 以强制插件自动更新,即使主自动更新程序已通过 `DISABLE_AUTOUPDATER` 禁用 |483| `FORCE_AUTOUPDATE_PLUGINS` | 设置为 `1` 可在主自动更新程序已通过 `DISABLE_AUTOUPDATER` 禁用时仍强制插件自动更新 |

478| `FORCE_HYPERLINK` | 设置为 `1` 以在终端支持但未被自动检测到时启用可点击的 OSC 8 超链接,或设置为 `0` 以禁用它们。未设置时,Claude Code 仅在检测到终端支持时启用超链接。Claude Code 将此值解析为数字而非布尔值,因此 `false`、`no` 或 `off` 等值会启用超链接而不是禁用它们。即使 Claude Code 无法检测到终端支持(例如通过 SSH 时),页脚的 [PR 或合并请求徽章](/docs/zh-CN/interactive-mode#pr-review-status)也会渲染为超链接。设置为 `0` 可将该徽章渲染为纯文本 |484| `FORCE_HYPERLINK` | 设置为 `1` 可在您的终端支持可点击的 OSC 8 超链接但未被自动检测到时启用它们,设置为 `0` 可禁用它们。未设置时,Claude Code 仅在检测到终端支持时启用超链接。Claude Code 将此值解析为数字而非布尔值,因此 `false`、`no` 或 `off` 之类的值会启用超链接,而不是禁用它们。即使 Claude Code 无法检测到终端支持(例如通过 SSH 时),页脚的 [PR 或合并请求徽章](/docs/zh-CN/interactive-mode#pr-review-status)也会渲染为超链接。设置为 `0` 可将该徽章渲染为纯文本 |

479| `FORCE_PROMPT_CACHING_5M` | 设置为 `1` 以强制使用 5 分钟提示缓存 TTL,即使原本会应用 1 小时 TTL。覆盖 `CLAUDE_CODE_PROMPT_CACHE_TTL`、`CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`、`ENABLE_PROMPT_CACHING_1H` 以及 `promptCacheTtl` 和 `subagentPromptCacheTtl` 设置 |485| `FORCE_PROMPT_CACHING_5M` | 设置为 `1` 可强制使用 5 分钟的提示缓存 TTL,即使原本会应用 1 小时 TTL。覆盖 `CLAUDE_CODE_PROMPT_CACHE_TTL`、`CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`、`ENABLE_PROMPT_CACHING_1H` 以及 `promptCacheTtl` 和 `subagentPromptCacheTtl` 设置 |

480| `HTTP_PROXY` | 为网络连接指定 HTTP 代理服务器 |486| `HTTP_PROXY` | 为网络连接指定 HTTP 代理服务器 |

481| `HTTPS_PROXY` | 为网络连接指定 HTTPS 代理服务器 |487| `HTTPS_PROXY` | 为网络连接指定 HTTPS 代理服务器 |

482| `IS_DEMO` | 设置为任意非空值(例如 `1`)以启用演示模式:在标题栏和 `/status` 输出中隐藏您的电子邮件和组织名称,并跳过新手引导。**与大多数开关变量不同,将其设置为 `0` 或 `false` 仍会启用演示模式**;取消设置该变量可将其关闭。在直播或录制会话时很有用 |488| `IS_DEMO` | 设置为任意非空值(例如 `1`)可启用演示模式:在标题栏和 `/status` 输出中隐藏您的电子邮件和组织名称,并跳过新手引导。与大多数开/关变量不同,**将其设置为 `0` 或 `false` 仍会启用演示模式**;取消设置该变量即可将其关闭。适用于直播或录制会话 |

483| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具响应中允许的最大 token 数(默认:25000)。当输出超过 10,000 个 token 时,Claude Code 会显示警告。声明了 [`anthropic/maxResultSizeChars`](/docs/zh-CN/mcp#raise-the-limit-for-a-specific-tool) 的工具会改为对文本内容使用该字符限制,但这些工具的图像内容仍受此变量约束。对于没有该注解的工具,超过 50,000 个字符的成功文本结果无论此变量如何设置,都会被[保存到文件](/docs/zh-CN/mcp#mcp-output-limits-and-warnings) |489| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具响应中允许的最大 token 数(默认:25000)。当输出超过 10,000 个 token 时,Claude Code 会显示警告。声明了 [`anthropic/maxResultSizeChars`](/docs/zh-CN/mcp#raise-the-limit-for-a-specific-tool) 的工具会改为对文本内容使用该字符限制,但这些工具返回的图像内容仍受此变量约束。对于没有该注解的工具,超过 50,000 个字符的成功文本结果无论此变量如何设置都会被[保存到文件](/docs/zh-CN/mcp#mcp-output-limits-and-warnings) |

484| `MAX_STRUCTURED_OUTPUT_RETRIES` | 在使用 `-p` 标志的非交互模式下,当模型的响应未通过 [`--json-schema`](/docs/zh-CN/cli-reference#cli-flags) 验证时,Claude Code 允许的尝试次数;在失败尝试达到该次数且没有有效输出后,运行将失败。当[工作流](/docs/zh-CN/workflows)子代理的结构化输出未通过验证时,也适用相同的上限。默认为 5,即一次首次尝试加四次重试 |490| `MAX_STRUCTURED_OUTPUT_RETRIES` | 在使用 `-p` 标志的非交互模式下,模型响应未能通过 [`--json-schema`](/docs/zh-CN/cli-reference#cli-flags) 验证时,Claude Code 允许的尝试次数;达到该次数仍未得到有效输出时,运行失败。当[工作流](/docs/zh-CN/workflows)子代理的结构化输出验证失败时,同样适用此上限。默认为 5,即一次首次尝试加四次重试 |

485| `MAX_THINKING_TOKENS` | [扩展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)的固定 token 预算。Claude Code 将其上限设为比请求的最大输出 token 数少一个 token,且不低于 1,024。关于该限制如何设置,请参阅 `CLAUDE_CODE_MAX_OUTPUT_TOKENS`。未设置且启用思考时,具有[自适应推理](/docs/zh-CN/model-config#adjust-effort-level)的模型会自行选择思考深度,其他模型则使用该上限。设置为 `0` 可在 Anthropic API 上禁用思考,但 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 模型除外,这些模型无法关闭思考。在[第三方提供商](/docs/zh-CN/third-party-integrations)上,`0` 会改为省略 `thinking` 参数。在 Anthropic API 上关闭思考时,对于 Claude Code 已知[不接受该组合](/docs/zh-CN/errors#effort-isnt-available-with-thinking-turned-off)的模型(例如 Opus 5),Claude Code 会发送 effort `high` 而不是更高的级别。对于正值,Claude Code 在自适应推理模型上会忽略该数字本身,除非 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 关闭了自适应推理 |491| `MAX_THINKING_TOKENS` | [扩展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)的固定 token 预算。Claude Code 将其上限设为比请求的最大输出 token 数少一个 token,且从不低于 1,024。关于该限制如何设置,请参阅 `CLAUDE_CODE_MAX_OUTPUT_TOKENS`。未设置且思考已启用时,支持[自适应推理](/docs/zh-CN/model-config#adjust-effort-level)的模型会自行选择思考深度,其他模型则使用该上限。在 Anthropic API 上设置为 `0` 可禁用思考,但 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 模型除外,这些模型无法关闭思考。在[第三方提供商](/docs/zh-CN/third-party-integrations)上,`0` 会改为省略 `thinking` 参数。在 Anthropic API 上关闭思考时,对于 Claude Code 已知[不接受该组合](/docs/zh-CN/errors#effort-isnt-available-with-thinking-turned-off)的模型(例如 Opus 5),Claude Code 会发送 effort `high` 而不是更高的级别。对于正值,Claude Code 在自适应推理模型上会忽略该数值本身,除非 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 关闭了自适应推理 |

486| `MCP_CLIENT_SECRET` | 适用于需要[预配置凭据](/docs/zh-CN/mcp#use-pre-configured-oauth-credentials)的 MCP 服务器的 OAuth 客户端密钥。使用 `--client-secret` 添加服务器时可避免交互式提示 |492| `MCP_CLIENT_SECRET` | 用于需要[预配置凭据](/docs/zh-CN/mcp#use-pre-configured-oauth-credentials)的 MCP 服务器的 OAuth 客户端密钥。可避免在使用 `--client-secret` 添加服务器时出现交互式提示 |

487| `MCP_CONNECTION_NONBLOCKING` | 控制启动时是否在第一次查询之前等待 MCP 服务器连接。MCP 启动默认是非阻塞的:服务器在后台连接,其工具在连接完成后变为可用。设置为 `0` 可使 Claude Code 在第一次查询之前等待服务器连接。配置了 [`alwaysLoad: true`](/docs/zh-CN/mcp#exempt-a-server-from-deferral) 的服务器无论如何仍会让启动等待,除非从[发现缓存](/docs/zh-CN/mcp#server-status-detail)提供,因为在构建第一个提示词时必须已存在其工具。在非交互模式(`-p`)下且未使用 `--input-format stream-json` 时,无论此变量如何设置,Claude Code 也会在第一个轮次之前等待仍处于等待中的服务器。当您显式传递 [`--mcp-config`](/docs/zh-CN/cli-reference#cli-flags) 时,等待的截止时间更长;有关已缓存服务器的例外情况,请参阅该标志的条目 |493| `MCP_CONNECTION_NONBLOCKING` | 控制启动时是否在第一个查询之前等待 MCP 服务器连接。MCP 启动默认是非阻塞的:服务器在后台连接,其工具在连接完成后即可使用。设置为 `0` 可让 Claude Code 在第一个查询之前等待服务器连接。配置了 [`alwaysLoad: true`](/docs/zh-CN/mcp#exempt-a-server-from-deferral) 的服务器无论如何仍会让启动等待(从[发现缓存](/docs/zh-CN/mcp#server-status-detail)提供时除外),因为构建第一个提示词时必须存在其工具。在未使用 `--input-format stream-json` 的非交互模式(`-p`)下,无论此变量如何设置,Claude Code 也会在第一轮之前等待仍处于待定状态的服务器。当您显式传入 [`--mcp-config`](/docs/zh-CN/cli-reference#cli-flags) 时,等待的截止时间更长;关于已缓存服务器的例外情况,请参阅该标志的条目 |

488| `MCP_CONNECT_TIMEOUT_MS` | 阻塞式 MCP 启动在对工具列表生成快照之前等待连接批次的时长,以毫秒为单位(默认:5000)。适用于 `MCP_CONNECTION_NONBLOCKING=0` 时或标记为 [`alwaysLoad: true`](/docs/zh-CN/mcp#exempt-a-server-from-deferral) 的服务器。到达截止时间时仍处于等待中的服务器会继续在后台连接。与 `MCP_TIMEOUT` 不同,后者限制的是单个服务器的连接尝试 |494| `MCP_CONNECT_TIMEOUT_MS` | 阻塞式 MCP 启动在为工具列表创建快照之前等待连接批次的时长(毫秒,默认:5000)。在 `MCP_CONNECTION_NONBLOCKING=0` 时或对标记为 [`alwaysLoad: true`](/docs/zh-CN/mcp#exempt-a-server-from-deferral) 的服务器适用。截止时仍处于待定状态的服务器会在后台继续连接。与 `MCP_TIMEOUT` 不同,后者限制的是单个服务器的连接尝试 |

489| `MCP_DISCOVERY_CACHE` | 开启或关闭 [MCP 发现缓存](/docs/zh-CN/mcp#server-status-detail)。缓存开启时,您之前使用过的远程 HTTP 或 SSE 服务器可以显示 [`cached` 状态](/docs/zh-CN/mcp#server-status-detail),并且 Claude Code 会在其第一次工具调用时而不是在启动时连接它。除非逐步推出已为您的账户启用了缓存,否则缓存默认关闭。设置为 `1` 可将其开启,设置为 `0` 则即使逐步推出已启用也保持关闭。在 v2.1.238 之前,缓存默认开启。`cached` 状态需要 Claude Code v2.1.221 或更高版本 |495| `MCP_DISCOVERY_CACHE` | 开启或关闭 [MCP 发现缓存](/docs/zh-CN/mcp#server-status-detail)。缓存开启时,您之前使用过的远程 HTTP 或 SSE 服务器可以显示 [`cached` 状态](/docs/zh-CN/mcp#server-status-detail),并且 Claude Code 会在其第一次工具调用时而不是启动时连接它。除非逐步推出已为您的账户启用该缓存,否则缓存默认关闭。设置为 `1` 可将其开启,设置为 `0` 可在推出已启用它时仍保持关闭。在 v2.1.238 之前,该缓存默认开启。`cached` 状态需要 Claude Code v2.1.221 或更高版本 |

490| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | [发现缓存](/docs/zh-CN/mcp#server-status-detail)条目的最长有效期,以秒为单位(默认:14400,即 4 小时)。在某次启动时,如果条目已超过该时长,Claude Code 会丢弃它并在启动时连接服务器,就像缓存关闭时一样。Claude Code 将该值上限设为 7 天。在 v2.1.238 之前,默认值为 86400,即 24 小时,且 Claude Code 不限制该值 |496| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | [发现缓存](/docs/zh-CN/mcp#server-status-detail)条目的最长存在时间(秒)(默认:14400,即 4 小时)。在启动时如果条目早于该时间,Claude Code 会丢弃它并在启动时连接服务器,与缓存关闭时的行为相同。Claude Code 将该值上限设为 7 天。在 v2.1.238 之前,默认值为 86400,即 24 小时,且 Claude Code 不对该值设上限 |

491| `MCP_DISCOVERY_CACHE_STRIKES` | 在某次启动时,如果[发现缓存](/docs/zh-CN/mcp#server-status-detail)条目已超过 `MCP_DISCOVERY_CACHE_TTL_S`,Claude Code 会在后台刷新它。此变量设置在 Claude Code 丢弃该条目并改为在下次启动时连接服务器之前,允许连续失败的刷新次数(默认:1)。如果您的网络连接偶尔中断,请调高此值,以免一次刷新失败就丢弃该条目。需要 Claude Code v2.1.238 或更高版本 |497| `MCP_DISCOVERY_CACHE_STRIKES` | 在启动时如果某个[发现缓存](/docs/zh-CN/mcp#server-status-detail)条目早于 `MCP_DISCOVERY_CACHE_TTL_S`,Claude Code 会在后台刷新它。此变量设置在 Claude Code 丢弃该条目并改为在下次启动时连接服务器之前,允许连续失败的刷新次数(默认:1)。如果您的网络连接偶尔中断,请调高此值,以免一次失败的刷新就丢弃该条目。需要 Claude Code v2.1.238 或更高版本 |

492| `MCP_DISCOVERY_CACHE_TTL_S` | Claude Code 在不刷新的情况下使用[发现缓存](/docs/zh-CN/mcp#server-status-detail)条目的秒数(默认:900)。在某次启动时,如果条目已超过该时长,Claude Code 仍会使用它,但会在后台刷新。一旦条目超过 `MCP_DISCOVERY_CACHE_MAX_STALE_S`,Claude Code 会改为丢弃它。Claude Code 将该值上限设为 `MCP_DISCOVERY_CACHE_MAX_STALE_S`,其默认为 4 小时。在 v2.1.238 之前,Claude Code 不限制该值 |498| `MCP_DISCOVERY_CACHE_TTL_S` | Claude Code 在不刷新的情况下使用[发现缓存](/docs/zh-CN/mcp#server-status-detail)条目的秒数(默认:900)。在启动时如果条目早于该时间,Claude Code 仍会使用它,但会在后台刷新它。一旦条目早于 `MCP_DISCOVERY_CACHE_MAX_STALE_S`,Claude Code 会改为丢弃它。Claude Code 将该值上限设为 `MCP_DISCOVERY_CACHE_MAX_STALE_S`,默认为 4 小时。在 v2.1.238 之前,Claude Code 不对该值设上限 |

493| `MCP_OAUTH_CALLBACK_PORT` | OAuth 重定向回调的固定端口,可在使用[预配置凭据](/docs/zh-CN/mcp#use-pre-configured-oauth-credentials)添加 MCP 服务器时替代 `--callback-port` |499| `MCP_OAUTH_CALLBACK_PORT` | OAuth 重定向回调的固定端口,在使用[预配置凭据](/docs/zh-CN/mcp#use-pre-configured-oauth-credentials)添加 MCP 服务器时可作为 `--callback-port` 的替代方案 |

494| `MCP_PROTOCOL_NEGOTIATION` | 仅在 [v2 MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes)上生效,控制 Claude Code 是否探测服务器对 MCP 协议修订版 2026-07-28 的支持。设置为 `auto` 可探测 HTTP、claude.ai 连接器和 stdio 服务器,设置为 `legacy` 则不探测任何服务器。未设置该变量时,Claude Code 会探测 [MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes)中所述的服务器。任何其他值都会被忽略,并在调试日志中写入警告。需要 Claude Code v2.1.221 或更高版本 |500| `MCP_PROTOCOL_NEGOTIATION` | 仅在 [v2 MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes)上,控制 Claude Code 是否探测服务器是否支持 MCP 协议修订版 2026-07-28。设置为 `auto` 可探测 HTTP、claude.ai 连接器和 stdio 服务器,设置为 `legacy` 则不探测任何服务器。未设置该变量时,Claude Code 会探测 [MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes)中所述的服务器。任何其他值都会被忽略,并在调试日志中记录警告。需要 Claude Code v2.1.221 或更高版本 |

495| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 启动期间并行连接的远程 MCP 服务器(HTTP/SSE)的最大数量(默认:20) |501| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 启动期间并行连接的远程 MCP 服务器(HTTP/SSE)的最大数量(默认:20) |

496| `MCP_SDK_GENERATION` | 固定此进程用于连接 MCP 服务器的 [MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes):`v1` 基于 MCP TypeScript SDK 1.x 构建,`v2` 基于 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 构建。未设置该变量时,从该部分列出的版本开始,Claude Code 使用 v2。在 Claude Code v2.1.221 或更高版本上,v2 运行时会检查 MCP OAuth 服务器在其授权响应中返回的颁发者,不匹配时会以一个以 `Issuer mismatch in authorization response` 开头的错误使登录失败。v1 运行时不会执行此检查。如果您设置了无法识别的值,Claude Code 会忽略它并在调试日志中写入警告。Claude Code 每个进程读取一次该值。需要 Claude Code v2.1.218 或更高版本 |502| `MCP_SDK_GENERATION` | 固定此进程连接 MCP 服务器所使用的 [MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes):`v1` 基于 MCP TypeScript SDK 1.x 构建,`v2` 基于 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 构建。未设置该变量时,Claude Code 从该部分列出的版本开始使用 v2。在 Claude Code v2.1.221 或更高版本中,v2 运行时会检查 MCP OAuth 服务器在其授权响应中返回的颁发者,若不匹配,则登录失败并显示以 `Issuer mismatch in authorization response` 开头的错误。v1 运行时不执行此检查。如果您设置了无法识别的值,Claude Code 会忽略它并在调试日志中写入警告。Claude Code 每个进程读取一次该值。需要 Claude Code v2.1.218 或更高版本 |

497| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 启动期间并行连接的本地 MCP 服务器(stdio)的最大数量(默认:3) |503| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 启动期间并行连接的本地 MCP 服务器(stdio)的最大数量(默认:3) |

498| `MCP_TIMEOUT` | MCP 服务器启动的超时时间,以毫秒为单位(默认:30000,即 30 秒) |504| `MCP_TIMEOUT` | MCP 服务器启动的超时时间(毫秒,默认:30000,即 30 秒) |

499| `MCP_TOOL_TIMEOUT` | MCP 工具执行的超时时间,以毫秒为单位(默认:100000000,约 28 小时)。对于 HTTP、SSE 或 claude.ai 连接器服务器,每个请求默认还会在 60 秒后超时;将此变量或按服务器的 `timeout` 设置为高于 60000 可提高该单请求限制。较低的值仍会缩短整体工具执行超时时间,但单请求限制保持为 60 秒。Stdio 和 WebSocket 服务器没有单请求计时器。`.mcp.json` 中按服务器的 `timeout` 字段会针对该服务器覆盖此变量。按服务器的 `timeout` 至少为 1000 时,还会设置该服务器工具调用的最小空闲窗口,因此 `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` 永远不会更早中止它们;此下限需要 Claude Code v2.1.203 或更高版本。对于环境变量,低于 1000 的值会被提升为一秒;对于按服务器的字段,低于 1000 的值会被忽略 |505| `MCP_TOOL_TIMEOUT` | MCP 工具执行的超时时间(毫秒,默认:100000000,约 28 小时)。对于 HTTP、SSE 或 claude.ai 连接器服务器,每个请求默认还会在 60 秒后超时;将此变量或按服务器的 `timeout` 设置为大于 60000 可提高该单请求限制。较低的值仍会缩短整体工具执行超时时间,但单请求限制保持为 60 秒。stdio 和 WebSocket 服务器没有单请求计时器。`.mcp.json` 中按服务器的 `timeout` 字段会为该服务器覆盖此值。至少为 1000 的按服务器 `timeout` 还会为该服务器的工具调用设置最小空闲窗口,因此 `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` 永远不会更早地中止它们;此下限需要 Claude Code v2.1.203 或更高版本。对于环境变量,低于 1000 的值会被提升至一秒;对于按服务器字段,低于 1000 的值会被忽略 |

500| `NO_PROXY` | 直接发出请求、绕过代理的域名和 IP 列表 |506| `NO_PROXY` | 请求将绕过代理直接发送到的域名和 IP 列表 |

501| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | 标准 OpenTelemetry SDK 对属性值长度的限制。Claude Code 将携带内容的遥测属性上限设为此值与 `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` 中的较小者,以使截断标记保持在 SDK 限制之内。Claude Code 以相同方式读取 `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` 和 `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` 变体,所有已设置值中最小的那个适用于所有信号。需要 Claude Code v2.1.214 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#common-configuration-variables) |507| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | 标准 OpenTelemetry SDK 的属性值长度限制。Claude Code 会将包含内容的遥测属性限制在此值与 `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` 中较小者以内,以便截断标记保持在 SDK 限制之内。Claude Code 以相同方式读取 `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` 和 `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` 变体,已设置值中最小的那个适用于所有信号。需要 Claude Code v2.1.214 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#common-configuration-variables) |

502| `OTEL_LOG_ASSISTANT_RESPONSES` | 设置为 `1` 以在 `assistant_response` OpenTelemetry 日志事件中包含模型的回复文本。未设置时,Claude Code 会改用 `OTEL_LOG_USER_PROMPTS` 的值。设置为 `0` 可在设置了 `OTEL_LOG_USER_PROMPTS` 时仍保持回复被隐去。在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。需要 Claude Code v2.1.193 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#assistant-response-event) |508| `OTEL_LOG_ASSISTANT_RESPONSES` | 设置为 `1` 可在 `assistant_response` OpenTelemetry 日志事件中包含模型的回复文本。未设置时,Claude Code 会改用 `OTEL_LOG_USER_PROMPTS` 的值。设置为 `0` 可在设置了 `OTEL_LOG_USER_PROMPTS` 时仍保持回复被遮盖。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略。需要 Claude Code v2.1.193 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#assistant-response-event) |

503| `OTEL_LOG_MANAGED_SETTINGS` | 设置为 `1` 以将脱敏后的托管设置以及脱敏前设置的 SHA-256 摘要添加到 `managed_settings_resolved` OpenTelemetry 日志事件中。默认禁用。在您的 shell、用户设置或托管设置中设置它;项目或本地设置中的值不会开启它。需要 Claude Code v2.1.274 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#managed-settings-resolved-event) |509| `OTEL_LOG_MANAGED_SETTINGS` | 设置为 `1` 可将遮盖后的托管设置以及遮盖前设置的 SHA-256 摘要添加到 `managed_settings_resolved` OpenTelemetry 日志事件中。默认禁用。请在 shell、用户设置或托管设置中设置它;项目或本地设置中的值不会将其开启。需要 Claude Code v2.1.274 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage#managed-settings-resolved-event) |

504| `OTEL_LOG_RAW_API_BODIES` | 将 Anthropic Messages API 请求和响应 JSON 作为 `api_request_body` / `api_response_body` 日志事件发出。设置为 `1` 可内联发出在内容限制处截断的正文,或设置为 `file:<dir>` 将未截断的正文写入磁盘并改为发出 `body_ref` 路径。`CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` 用于配置内容限制,默认为 60 KB。默认禁用;正文包含完整的对话历史。在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage#api-request-body-event) |510| `OTEL_LOG_RAW_API_BODIES` | 将 Anthropic Messages API 请求和响应 JSON 作为 `api_request_body` / `api_response_body` 日志事件发出。设置为 `1` 可内联发出在内容限制处截断的正文,设置为 `file:<dir>` 可将未截断的正文写入磁盘并改为发出 `body_ref` 路径。`CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` 配置内容限制,默认为 60 KB。默认禁用;正文包含完整的对话历史。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage#api-request-body-event) |

505| `OTEL_LOG_TOOL_CONTENT` | 设置为 `1` 以在 `tool.output` OpenTelemetry span 事件中包含工具内容。span 属性在[各自的开关](/docs/zh-CN/monitoring-usage#new-context-gates)下携带工具内容。需要[追踪](/docs/zh-CN/monitoring-usage#traces-beta)。默认禁用以保护敏感数据。在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage#tool-output-span-event) |511| `OTEL_LOG_TOOL_CONTENT` | 设置为 `1` 可在 `tool.output` OpenTelemetry span 事件中包含工具内容。span 属性在[各自的开关](/docs/zh-CN/monitoring-usage#new-context-gates)下携带工具内容。需要[追踪](/docs/zh-CN/monitoring-usage#traces-beta)。默认禁用以保护敏感数据。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage#tool-output-span-event) |

506| `OTEL_LOG_TOOL_DETAILS` | 设置为 `1` 以在 OpenTelemetry 指标、追踪和日志中包含工具输入参数;MCP 服务器名称;用户编写的工作流名称;工具失败时的原始错误字符串;`api_refusal` 事件上的拒绝 `category`;[费用和 token 指标](/docs/zh-CN/monitoring-usage#cost-counter)上真实的 Agent、skill、插件和 MCP 服务器名称;以及其他工具详细信息。默认禁用以保护 PII。在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage) |512| `OTEL_LOG_TOOL_DETAILS` | 设置为 `1` 可在 OpenTelemetry 指标、追踪和日志中包含工具输入参数;MCP 服务器名称;用户编写的工作流名称;工具失败时的原始错误字符串;`api_refusal` 事件上的拒绝 `category`;[费用和 token 指标](/docs/zh-CN/monitoring-usage#cost-counter)上真实的 Agent、skill、插件和 MCP 服务器名称;以及其他工具详细信息。默认禁用以保护 PII。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage) |

507| `OTEL_LOG_USER_PROMPTS` | 设置为 `1` 以在 OpenTelemetry 追踪和日志中包含用户提示词文本。默认禁用(提示词会被隐去)。在您的 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage) |513| `OTEL_LOG_USER_PROMPTS` | 设置为 `1` 可在 OpenTelemetry 追踪和日志中包含用户提示词文本。默认禁用(提示词会被遮盖)。请在 shell、用户设置或托管设置中设置它。在[项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中被忽略,但该部分所述的关闭值除外。请参阅[监控](/docs/zh-CN/monitoring-usage) |

508| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 设置为 `false` 以从指标属性中排除账户 UUID(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage) |514| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 设置为 `false` 可从指标属性中排除账户 UUID(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage) |

509| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | 设置为 `true` 以在指标属性中包含会话入口点(默认:排除)。在 v2.1.152 中添加。请参阅[监控](/docs/zh-CN/monitoring-usage) |515| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | 设置为 `true` 可在指标属性中包含会话入口点(默认:排除)。在 v2.1.152 中添加。请参阅[监控](/docs/zh-CN/monitoring-usage) |

510| `OTEL_METRICS_INCLUDE_REPOSITORY` | 设置为 `true` 以使用标识会话所在仓库的 `vcs.*` 属性标记 OpenTelemetry 指标和事件(默认:排除)。需要 Claude Code v2.1.269 或更高版本。请参阅[仓库属性](/docs/zh-CN/monitoring-usage#repository-attributes) |516| `OTEL_METRICS_INCLUDE_REPOSITORY` | 设置为 `true` 可为 OpenTelemetry 指标和事件添加标识会话所在仓库的 `vcs.*` 属性(默认:排除)。需要 Claude Code v2.1.269 或更高版本。请参阅[仓库属性](/docs/zh-CN/monitoring-usage#repository-attributes) |

511| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | 从 v2.1.161 起,Claude Code 会将 `OTEL_RESOURCE_ATTRIBUTES` 键附加到指标数据点标签上。设置为 `false` 可排除它们(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage#multi-team-organization-support) |517| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | 自 v2.1.161 起,Claude Code 会将 `OTEL_RESOURCE_ATTRIBUTES` 键附加到指标数据点标签上。设置为 `false` 可排除它们(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage#multi-team-organization-support) |

512| `OTEL_METRICS_INCLUDE_SESSION_ID` | 设置为 `false` 以从指标属性中排除会话 ID(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage) |518| `OTEL_METRICS_INCLUDE_SESSION_ID` | 设置为 `false` 可从指标属性中排除会话 ID(默认:包含)。请参阅[监控](/docs/zh-CN/monitoring-usage) |

513| `OTEL_METRICS_INCLUDE_VERSION` | 设置为 `true` 以在指标属性中包含 Claude Code 版本(默认:排除)。请参阅[监控](/docs/zh-CN/monitoring-usage) |519| `OTEL_METRICS_INCLUDE_VERSION` | 设置为 `true` 可在指标属性中包含 Claude Code 版本(默认:排除)。请参阅[监控](/docs/zh-CN/monitoring-usage) |

514| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | 覆盖向 [Skill 工具](/docs/zh-CN/skills#control-who-invokes-a-skill)显示的 skill 元数据的字符预算。该预算按上下文窗口的 1% 动态调整,备用值为 8,000 个字符。保留旧名称以实现向后兼容 |520| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | 覆盖向 [Skill 工具](/docs/zh-CN/skills#control-who-invokes-a-skill)显示的 skill 元数据的字符预算。该预算按上下文窗口的 1% 动态调整,回退值为 8,000 个字符。保留旧名称以实现向后兼容 |

515| `TASK_MAX_OUTPUT_LENGTH` | 已在 v2.1.277 中移除,现在与其所限定大小的 `TaskOutput` 工具一同不再起任何作用。以前用于设置 `TaskOutput` 工具保留的[后台任务](/docs/zh-CN/tools-reference#background-commands)输出的最大字符数。Claude 现在改用 `Read` 读取后台任务的输出文件 |521| `TASK_MAX_OUTPUT_LENGTH` | 已在 v2.1.277 中与其所限定大小的 `TaskOutput` 工具一同移除,现在不起任何作用。此前用于设置 `TaskOutput` 工具保留的[后台任务](/docs/zh-CN/tools-reference#background-commands)输出的最大字符数。Claude 现在改用 `Read` 读取后台任务的输出文件 |

516| `USE_BUILTIN_RIPGREP` | 设置为 `0` 以使用系统安装的 `rg`,而不是 Claude Code 附带的 `rg` |522| `USE_BUILTIN_RIPGREP` | 设置为 `0` 可使用系统安装的 `rg`,而不是 Claude Code 自带的 `rg` |

517| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.5 Haiku 的区域 |523| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.5 Haiku 的区域 |

518| `VERTEX_REGION_CLAUDE_3_5_SONNET` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.5 Sonnet 的区域 |524| `VERTEX_REGION_CLAUDE_3_5_SONNET` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.5 Sonnet 的区域 |

519| `VERTEX_REGION_CLAUDE_3_7_SONNET` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.7 Sonnet 的区域 |525| `VERTEX_REGION_CLAUDE_3_7_SONNET` | 使用 Google Cloud's Agent Platform 时覆盖 Claude 3.7 Sonnet 的区域 |


535| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Haiku 4.5 的区域 |541| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Haiku 4.5 的区域 |

536| `VERTEX_REGION_CLAUDE_HAIKU_5_5` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Haiku 5.5 的区域。在 v2.1.293 中添加 |542| `VERTEX_REGION_CLAUDE_HAIKU_5_5` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Haiku 5.5 的区域。在 v2.1.293 中添加 |

537 543 

538还支持标准 OpenTelemetry 导出器变量(`OTEL_METRICS_EXPORTER`、`OTEL_LOGS_EXPORTER`、`OTEL_EXPORTER_OTLP_ENDPOINT`、`OTEL_EXPORTER_OTLP_PROTOCOL`、`OTEL_EXPORTER_OTLP_HEADERS`、`OTEL_METRIC_EXPORT_INTERVAL`、`OTEL_RESOURCE_ATTRIBUTES` 以及特定于信号的变体)。有关配置详细信息,请参阅[监控](/docs/zh-CN/monitoring-usage)。544同样支持标准 OpenTelemetry 导出器变量(`OTEL_METRICS_EXPORTER`、`OTEL_LOGS_EXPORTER`、`OTEL_EXPORTER_OTLP_ENDPOINT`、`OTEL_EXPORTER_OTLP_PROTOCOL`、`OTEL_EXPORTER_OTLP_HEADERS`、`OTEL_METRIC_EXPORT_INTERVAL`、`OTEL_RESOURCE_ATTRIBUTES` 以及特定信号的变体)。有关配置详细信息,请参阅[监控](/docs/zh-CN/monitoring-usage)。

539 545 

540请在您的 shell、用户设置或托管设置中设置 `CLAUDE_CODE_ENABLE_TELEMETRY` 以及用于开启导出、选择导出目标或捕获内容的 OpenTelemetry 变量。Claude Code [会在项目和本地设置中忽略它们](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env),但该部分所述的关闭值除外。`OTEL_RESOURCE_ATTRIBUTES` 以及导出间隔、超时和压缩变量(例如 `OTEL_METRIC_EXPORT_INTERVAL`)在项目和本地设置中仍然生效。546请在 shell、用户设置或托管设置中设置 `CLAUDE_CODE_ENABLE_TELEMETRY` 以及用于开启导出、选择导出目标或捕获内容的 OpenTelemetry 变量。Claude Code [会在项目和本地设置中忽略它们](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env),但该部分所述的关闭值除外。`OTEL_RESOURCE_ATTRIBUTES` 以及导出间隔、超时和压缩相关变量(例如 `OTEL_METRIC_EXPORT_INTERVAL`)在项目和本地设置中仍然适用。

541 547 

542<h2 id="what-the-subprocess-environment-scrub-removes">548<h2 id="what-the-subprocess-environment-scrub-removes">

543 子进程环境清理会移除哪些内容549 子进程环境清理会移除哪些内容


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

591* 阅读或回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)597* 阅读或回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)

592* 让 Claude 读取[其他组织的公开 Artifact](/docs/zh-CN/artifacts#read-an-artifact-shared-with-you)598* 让 Claude 读取[其他组织的公开 Artifact](/docs/zh-CN/artifacts#read-an-artifact-shared-with-you)

593* 让 Claude Code 针对 [MCP 协议修订版 2026-07-28](/docs/zh-CN/mcp#mcp-client-runtimes) 探测 claude.ai 连接器服务器,除非您设置了 `MCP_PROTOCOL_NEGOTIATION=auto`

594* 在安装了 Git Bash 的 Windows 上,为 claude.ai 和 Console 账户默认获得 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool);除非您设置了 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`,否则 Claude Code 会通过 Git Bash 执行 shell 命令。在未安装 Git Bash 的 Windows 上,该工具保持启用599* 在安装了 Git Bash 的 Windows 上,为 claude.ai 和 Console 账户默认获得 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool);除非您设置了 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`,否则 Claude Code 会通过 Git Bash 执行 shell 命令。在未安装 Git Bash 的 Windows 上,该工具保持启用

595* 获得 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior),该功能由 Claude Code 通过获取的标志启用600* 获得 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior),该功能由 Claude Code 通过获取的标志启用

596* 让 Claude [将大段粘贴内容视为粘贴而非键入的文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 占位符背后的内容将以无标记形式传给 Claude601* 让 Claude [将大段粘贴内容视为粘贴而非键入的文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 占位符背后的内容将以无标记形式传给 Claude

errors.md +10 −55

Details

189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |

190| `` Details: `[reasoning_extraction]` `` | [请求错误](#safeguards-flagged-a-request-for-claudes-reasoning) |190| `` Details: `[reasoning_extraction]` `` | [请求错误](#safeguards-flagged-a-request-for-claudes-reasoning) |

191| `API Error: Output blocked by content filtering policy` | [请求错误](#output-blocked-by-content-filtering-policy) |191| `API Error: Output blocked by content filtering policy` | [请求错误](#output-blocked-by-content-filtering-policy) |

192| `Installation was killed before it could finish (exit code 137)` | [安装错误](#installation-was-killed-before-it-could-finish) |192| `Installation was killed before it could finish (exit code 137)` | [安装和登录故障排除](/docs/zh-CN/troubleshoot-install#installation-was-killed-before-it-could-finish) |

193| `The connection dropped while downloading the update` | [安装错误](#the-connection-dropped-while-downloading-the-update) |193| `The connection dropped while downloading the update` | [安装和登录故障排除](/docs/zh-CN/troubleshoot-install#the-connection-dropped-while-downloading-the-update) |

194| `Download timed out: exceeded the total deadline` | [安装错误](#the-connection-dropped-while-downloading-the-update) |194| `Download timed out: exceeded the total deadline` | [安装和登录故障排除](/docs/zh-CN/troubleshoot-install#the-connection-dropped-while-downloading-the-update) |

195| `--bg and --print conflict` | [命令行错误](#conflict-between-bg-and-print) |195| `--bg and --print conflict` | [命令行错误](#conflict-between-bg-and-print) |

196| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [命令行错误](#conflict-between-a-system-prompt-flag-and-its-file-form) |196| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [命令行错误](#conflict-between-a-system-prompt-flag-and-its-file-form) |

197| `Cloud sessions cannot be created from a --restricted session` | [命令行错误](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [命令行错误](#cloud-sessions-cannot-be-created-from-a-restricted-session) |


261| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin 错误](#claude-code-refuses-the-marketplace-name) |261| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin 错误](#claude-code-refuses-the-marketplace-name) |

262| `Marketplace "<name>" is already added from a different source` | [Plugin 错误](#marketplace-is-already-added-from-a-different-source) |262| `Marketplace "<name>" is already added from a different source` | [Plugin 错误](#marketplace-is-already-added-from-a-different-source) |

263| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin 错误](#marketplace-name-is-another-spelling-of-a-reserved-name) |263| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin 错误](#marketplace-name-is-another-spelling-of-a-reserved-name) |

264| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |

264| `Marketplace "<name>" is added but ignored` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#marketplace-is-added-but-ignored) |265| `Marketplace "<name>" is added but ignored` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#marketplace-is-added-but-ignored) |

265| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#marketplace-is-added-but-ignored) |266| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#marketplace-is-added-but-ignored) |

266| `references ${user_config.*} in a shell-form command` | [Plugin 错误](#plugin-command-references-user-config) |267| `references ${user_config.*} in a shell-form command` | [Plugin 错误](#plugin-command-references-user-config) |


269| `Plugin archive integrity check failed` | [Plugin 错误](#plugin-archive-integrity-check-failed) |270| `Plugin archive integrity check failed` | [Plugin 错误](#plugin-archive-integrity-check-failed) |

270| `An npm plugin source must name a registry package` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#an-npm-plugin-source-must-name-a-registry-package) |271| `An npm plugin source must name a registry package` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#an-npm-plugin-source-must-name-a-registry-package) |

271| `The packages it lists are not installed` / `The packages it lists were not installed, because` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#the-packages-it-lists-are-not-installed) |272| `The packages it lists are not installed` / `The packages it lists were not installed, because` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#the-packages-it-lists-are-not-installed) |

273| `does not load (...), so Claude Code ignores the whole file` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#does-not-load-so-claude-code-ignores-the-whole-file) |

272| `path escapes plugin directory` | [Plugin 错误](#path-escapes-plugin-directory) |274| `path escapes plugin directory` | [Plugin 错误](#path-escapes-plugin-directory) |

273| `path could not be checked` | [Plugin 错误](#path-could-not-be-checked) |275| `path could not be checked` | [Plugin 错误](#path-could-not-be-checked) |

274| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin 错误](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |276| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin 错误](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |


279| `"<plugin>" was not uninstalled: it is still switched on in <file>` | [Plugin 错误](#plugin-was-not-uninstalled) |281| `"<plugin>" was not uninstalled: it is still switched on in <file>` | [Plugin 错误](#plugin-was-not-uninstalled) |

280| `"<plugin>" was not uninstalled: <file> is there and could not be read` | [Plugin 错误](#plugin-was-not-uninstalled) |282| `"<plugin>" was not uninstalled: <file> is there and could not be read` | [Plugin 错误](#plugin-was-not-uninstalled) |

281| `Plugin "<plugin>" was not uninstalled: installed_plugins.json` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read) |283| `Plugin "<plugin>" was not uninstalled: installed_plugins.json` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read) |

284| `Plugin directory does not exist: <path>` | [Plugin 故障排除](/docs/zh-CN/plugins/troubleshooting#plugin-directory-does-not-exist) |

282| `Error: No such tool available: <tool name>` | [工具错误](#no-such-tool-available) |285| `Error: No such tool available: <tool name>` | [工具错误](#no-such-tool-available) |

283| `would be spawned with zero tools — refusing` | [工具错误](#agent-would-be-spawned-with-zero-tools) |286| `would be spawned with zero tools — refusing` | [工具错误](#agent-would-be-spawned-with-zero-tools) |

284| `File is covered by a Read deny rule in your permission settings` | [工具错误](#file-is-covered-by-a-read-deny-rule) |287| `File is covered by a Read deny rule in your permission settings` | [工具错误](#file-is-covered-by-a-read-deny-rule) |


386* 在 Claude 完成思考之后、但在开始任何文本或工具调用之前到达的服务器错误或过载响应。Claude Code 会在该点重试服务器错误最多两次。在 v2.1.284 之前,Claude Code 会在该点以该错误结束轮次。389* 在 Claude 完成思考之后、但在开始任何文本或工具调用之前到达的服务器错误或过载响应。Claude Code 会在该点重试服务器错误最多两次。在 v2.1.284 之前,Claude Code 会在该点以该错误结束轮次。

387* 连接断开。当连接在请求过程中途断开,且 Claude 尚未完成其响应的任何部分(包括其思考过程)时,Claude Code 会使用相同的退避重新发送请求,轮次继续进行,即使某些文本已经开始流式传输。当连接在 Claude 完成思考之后但在开始任何文本或工具调用之前断开时,Claude Code 改为快速连续重新发送请求最多两次,如果连接在该点继续断开,则以 `Connection lost before a response was produced` 结束轮次。390* 连接断开。当连接在请求过程中途断开,且 Claude 尚未完成其响应的任何部分(包括其思考过程)时,Claude Code 会使用相同的退避重新发送请求,轮次继续进行,即使某些文本已经开始流式传输。当连接在 Claude 完成思考之后但在开始任何文本或工具调用之前断开时,Claude Code 改为快速连续重新发送请求最多两次,如果连接在该点继续断开,则以 `Connection lost before a response was produced` 结束轮次。

388* Claude Code 检测到的连接在您的计算机进入睡眠状态时在请求过程中途被破坏。Claude Code 将其计为上述规则下的断开连接;一旦重试标签命名了具体原因,它会读作 `Connection lost while your computer was asleep`,如果轮次在 Claude 完成思考之后但在任何文本或工具调用之前结束,消息会读作 `Your computer went to sleep before a response was produced`。391* Claude Code 检测到的连接在您的计算机进入睡眠状态时在请求过程中途被破坏。Claude Code 将其计为上述规则下的断开连接;一旦重试标签命名了具体原因,它会读作 `Connection lost while your computer was asleep`,如果轮次在 Claude 完成思考之后但在任何文本或工具调用之前结束,消息会读作 `Your computer went to sleep before a response was produced`。

389* 停滞的响应流,当响应头已到达但 Claude 响应的任何部分都未到达,或当 Claude 完成思考但尚未开始任何文本或工具调用时:Claude Code 中止停滞连接并最多重新发送一次请求,不计入上述 10 次尝试预算。如果响应在 Claude 完成思考之后但在任何文本或工具调用之前第二次停滞,Claude Code 以 `The response stalled before a response was produced` 结束轮次。392* 停滞的响应流,当响应头已到达但 Claude 响应的任何部分都未到达,或当 Claude 完成思考但尚未开始任何文本或工具调用时:Claude Code 中止停滞连接,并最多再以流式方式发送一次请求。如果响应在 Claude 完成思考之后但在任何文本或工具调用之前第二次停滞,Claude Code 以 `The response stalled before a response was produced` 结束轮次。

390* 流式请求 API 从未用响应头回答,在 [first-byte deadline runs](/docs/zh-CN/network-config#streaming-idle-watchdogs) 的连接上:Claude Code 在截止时间中止它,并在重试预算内每个模型请求最多重新发送一次,然后如果该尝试也未得到回答,则以 [No response from API](#no-response-from-api) 结束轮次。在其他连接上,请求等待 `API_TIMEOUT_MS`。当您设置 `CLAUDE_CODE_RETRY_WATCHDOG` 时,一次重试上限不适用。393* 流式请求 API 从未用响应头回答,在 [first-byte deadline runs](/docs/zh-CN/network-config#streaming-idle-watchdogs) 的连接上:Claude Code 在截止时间中止它,并在重试预算内每个模型请求最多重新发送一次,然后如果该尝试也未得到回答,则以 [No response from API](#no-response-from-api) 结束轮次。在其他连接上,请求等待 `API_TIMEOUT_MS`。当您设置 `CLAUDE_CODE_RETRY_WATCHDOG` 时,一次重试上限不适用。

391* 在 Claude 完成思考或开始任何文本或工具调用之前,被 API 输出内容过滤器拦截的流式响应。Claude Code 会在重试预算内重新发送一次请求,如果过滤器也拦截了第二次响应,则显示 [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy)。394* 在 Claude 完成思考或开始任何文本或工具调用之前,被 API 输出内容过滤器拦截的流式响应。Claude Code 会在重试预算内重新发送一次请求,如果过滤器也拦截了第二次响应,则显示 [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy)。

392* 临时 429 节流,但不是网关的支出限制 `429`,这不是节流;请参阅 [Spend limit reached](#spend-limit-reached)。395* 临时 429 节流,但不是网关的支出限制 `429`,这不是节流;请参阅 [Spend limit reached](#spend-limit-reached)。


2910* 重新表述您的上一条消息或采取不同的方法2913* 重新表述您的上一条消息或采取不同的方法

2911* 要回退到触发拦截的轮次之前的检查点,请按 Esc 两次或运行 `/rewind`。请参阅[检查点](/docs/zh-CN/checkpointing)2914* 要回退到触发拦截的轮次之前的检查点,请按 Esc 两次或运行 `/rewind`。请参阅[检查点](/docs/zh-CN/checkpointing)

2912 2915 

2913<h2 id="installation-errors">

2914 安装错误

2915</h2>

2916 

2917这些错误在安装或更新 Claude Code 时出现,来自 [安装脚本](/docs/zh-CN/setup#install-claude-code)、`claude install` 或 `claude update`。对于安装过程中的 `command not found`、PATH、权限和 TLS 问题,请参阅 [排查安装和登录问题](/docs/zh-CN/troubleshoot-install)。

2918 

2919<h3 id="installation-was-killed-before-it-could-finish">

2920 安装在完成前被中止

2921</h3>

2922 

2923当 `claude install` 步骤被信号终止时,安装脚本会报告。在 Linux 上,退出代码 137 表示进程收到了 SIGKILL,在低内存主机上通常是内核内存不足 (OOM) 杀手。脚本打印此说明并以代码 137 退出:

2924 

2925```text theme={null}

2926Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.

2927Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.

2928```

2929 

2930对于任何其他致命信号,以及 macOS 上的退出代码 137,脚本打印 `Installation was killed before it could finish (exit code <N>)`,其中包含实际的退出代码,并省略内存不足的说明。该消息来自 macOS 和 Linux 使用的安装脚本,该脚本也涵盖 WSL 内的安装;本机 Windows 安装脚本永远不会打印它。在 v2.1.200 之前,脚本仅以 shell 的裸 `Killed` 行退出。

2931 

2932**应该做什么:**

2933 

2934* 停止其他进程以释放内存,然后重新运行安装程序

2935* 添加交换空间或移至更大的实例。有关交换文件命令,请参阅 [在低内存 Linux 服务器上安装被中止](/docs/zh-CN/troubleshoot-install#install-killed-on-low-memory-linux-servers)。

2936 

2937<h3 id="the-connection-dropped-while-downloading-the-update">

2938 下载更新时连接断开

2939</h3>

2940 

2941与下载服务器的连接在 `claude install` 或 `claude update` 获取 Claude Code 二进制文件时关闭,重试也没有恢复。当连接断开、传输停滞或下载的文件校验和失败时,Claude Code 会重试下载,总共最多尝试三次。已完成的 HTTP 错误(例如 404)不会重试,因为服务器已经响应。在 v2.1.202 之前,单个断开的连接会立即导致下载失败,并显示裸错误 `aborted`,而不是重试。

2942 

2943```text theme={null}

2944The connection dropped while downloading the update (attempt 3/3: aborted). Check your network — proxies sometimes cut off large downloads.

2945```

2946 

2947括号中的文本命名失败的尝试和底层网络错误。`claude update` 在 stderr 上以 `Error: Failed to install native update` 开头的消息。

2948 

2949保持连接但在 10 分钟内未完成的下载失败,显示 `Download timed out: exceeded the total deadline`。Claude Code 不会重试超时的下载,因为连接速度太慢而无法在截止时间内完成,在立即重试时也不会完成。以下步骤适用于两条消息。

2950 

2951代理或网关可以在长传输完成前关闭它,而 Claude Code 二进制文件是一个大型下载。

2952 

2953**应该做什么:**

2954 

2955* 再次运行 `claude update`。在网络状况良好的情况下,下载通常在下一次运行时成功。对于超时消息,从更快或限制较少的网络再次运行它。

2956* 如果您的网络需要代理,请在运行安装程序或 `claude update` 之前设置 `HTTPS_PROXY`。请参阅 [检查网络连接](/docs/zh-CN/troubleshoot-install#check-network-connectivity)。

2957* 如果公司代理持续关闭传输,请要求您的网络团队允许从 `downloads.claude.ai` 进行完整下载。请参阅 [网络访问要求](/docs/zh-CN/network-config#network-access-requirements)。

2958* 从您的 shell 运行 `claude doctor` 以进行安装诊断

2959 

2960<h2 id="command-line-errors">2916<h2 id="command-line-errors">

2961 命令行错误2917 命令行错误

2962</h2>2918</h2>


4064 Marketplace 已从不同的来源添加4020 Marketplace 已从不同的来源添加

4065</h3>4021</h3>

4066 4022 

4067您通过[`/plugin install <plugin> --marketplace <source>`](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command)确认添加了 marketplace,Claude Code 从该来源获取的目录将自己命名为与您已从不同来源添加的 marketplace 相同。Claude Code 保留现有的 marketplace 而不是替换它,插件未安装。4023您在会话中或从 shell 中,通过[安装命令上的`--marketplace <source>`](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command)指定了一个新的市场来源。Claude Code 从该来源获取的目录与您已从不同来源添加的市场同名。Claude Code 保留现有的市场而不是替换它,插件未安装。

4068 4024 

4069```text theme={null}4025```text theme={null}

4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.4026Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


4817 此会话没有保存的会话记录4773 此会话没有保存的会话记录

4818</h3>4774</h3>

4819 4775 

4820您附加到一个停止的[后台会话](/docs/zh-CN/agent-view),该会话从另一个对话中用 `←` 或 `/background` 后台化,并在其第一个回复完成之前停止。在该第一个回复完成之前,对话仍然仅存在于后台化它的会话中,因此 `claude attach` 拒绝启动停止的会话,而不是在相同的会话 ID 下开始空白对话。消息以此会话的 `claude respawn` 命令结尾:4776您附加到一个通过 `←` 或 `/background` [移至后台](/docs/zh-CN/agent-view#from-inside-a-session)的会话,该会话在运行自己的轮次之前就已停止。Claude Code 找不到您将其移出的那个对话,因此该会话没有可恢复的内容。消息以此会话的 `claude respawn` 命令结尾:

4821 4777 

4822```text theme={null}4778```text theme={null}

4823This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4779This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.


4827 4783 

4828**要做什么:**4784**要做什么:**

4829 4785 

4830* 您后台化的对话是完整的:使用 [`claude --resume`](/docs/zh-CN/sessions) 恢复它或继续在其中工作4786* 要重新启动停止的会话,请使用消息中的 ID 运行 `claude respawn <id>`,或在 Agent 视图中的其行上按 `Enter` 两次

4831* 要无论如何启动停止的会话,请使用消息中的 ID 运行 `claude respawn <id>`,或在 Agent 视图中的其行上按 `Enter` 两次

4832* 如果会话确实完成了回复,您仍然在 v2.1.214 之前的版本上看到此拒绝,`~/.claude/projects` 中的不可读文件夹可能会使会话记录扫描错过保存的对话;更新到 v2.1.214 或更高版本,它在扫描期间容忍不可读的文件夹4787* 如果会话确实完成了回复,您仍然在 v2.1.214 之前的版本上看到此拒绝,`~/.claude/projects` 中的不可读文件夹可能会使会话记录扫描错过保存的对话;更新到 v2.1.214 或更高版本,它在扫描期间容忍不可读的文件夹

4833 4788 

4834<h3 id="this-session-is-running-in-another-terminal">4789<h3 id="this-session-is-running-in-another-terminal">

glossary.md +2 −2

Details

465 465 

466一个命令 `/teleport`,将云 Claude Code 会话拉入您的本地终端。Claude 获取分支、加载对话历史并从云会话的最后状态恢复。反向方向是 `--cloud`,它将本地任务发送到云上运行。466一个命令 `/teleport`,将云 Claude Code 会话拉入您的本地终端。Claude 获取分支、加载对话历史并从云会话的最后状态恢复。反向方向是 `--cloud`,它将本地任务发送到云上运行。

467 467 

468了解更多:[从云到终端](/docs/zh-CN/claude-code-on-the-web#from-cloud-to-terminal)468了解更多:[在终端中继续云端会话](/docs/zh-CN/claude-code-on-the-web#from-cloud-to-terminal)

469 469 

470<h3 id="tool">470<h3 id="tool">

471 Tool471 Tool


511 Worktree isolation511 Worktree isolation

512</h3>512</h3>

513 513 

514一个隔离模式,在 `.claude/worktrees/` 下的单独 git worktree 中运行 Claude,使用 `-w` 标志或 subagent 配置中的 `isolation: worktree` 启用。更改保留在单独分支的单独目录中,因此并行代理不会覆盖彼此的文件。514一个隔离模式,在 `.claude/worktrees/` 下的单独 git worktree 中运行 Claude,使用 `-w` 标志或子代理配置中的 `isolation: worktree` 启用。更改保留在单独目录中的单独分支上,因此每个并行 Agent 都各自编辑自己的文件副本。

515 515 

516了解更多:[使用 git worktrees 运行并行会话](/docs/zh-CN/worktrees)516了解更多:[使用 git worktrees 运行并行会话](/docs/zh-CN/worktrees)

517 517 

goal.md +1 −1

Details

127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

128```128```

129 129 

130使用默认文本输出时,在运行结束前不会打印任何内容,所以运行许多回合的目标可能看起来卡住了。添加 `--output-format stream-json --verbose` 以在循环运行时发出每条消息。130使用默认文本输出时,Claude 的最终回复会在循环结束时打印,因此运行许多轮次的目标可能看起来卡住了。添加 `--output-format stream-json --verbose` 以在循环运行时输出每条消息。

131 131 

132使用 Ctrl+C 中断进程以在条件满足之前停止非交互式目标。132使用 Ctrl+C 中断进程以在条件满足之前停止非交互式目标。

133 133 

headless.md +24 −22

Details

20 基本用法20 基本用法

21</h2>21</h2>

22 22 

23在任何 `claude` 命令中添加 `-p`(或 `--print`)标志以非交互方式运行它。并非每个 [CLI 选项](/docs/zh-CN/cli-reference) 都与 `-p` 兼容。Claude Code 拒绝 `--bg`,并在任务描述中拒绝 `--cloud`,会报错说明冲突;`--cloud` 与会话 ID 和 `-p` 一起使用时,会 [将消息排队到该云会话](/docs/zh-CN/claude-code-on-the-web#send-follow-ups-from-the-cli) 并退出。你通常会与 `-p` 结合使用的选项包括:23在任何 `claude` 命令中添加 `-p`(或 `--print`)标志以非交互方式运行它。并非每个 [CLI 选项](/docs/zh-CN/cli-reference) 都能与 `-p` 组合使用。Claude Code 会拒绝 `--bg`,也会拒绝带有任务描述的 `--cloud`,并报错说明冲突;而 `--cloud` 与会话 ID 和 `-p` 一起使用时,会 [将消息排队到该云端会话](/docs/zh-CN/claude-code-on-the-web#send-follow-ups-from-the-cli) 并退出。经常与 `-p` 结合使用的选项包括:

24 24 

25* `--continue` 用于 [继续对话](#continue-conversations)25* `--continue` 用于 [继续对话](#continue-conversations)

26* `--allowedTools` 用于 [自动批准工具](#auto-approve-tools)26* `--allowedTools` 用于 [自动批准工具](#auto-approve-tools)

27* `--output-format` 用于 [获取结构化输出](#get-structured-output)27* `--output-format` 用于 [获取结构化输出](#get-structured-output)

28 28 

29此示例向 Claude 询问有关你的代码库的问题并打印响应:29此示例向 Claude 询问有关您的代码库的问题并打印回复:

30 30 

31```bash theme={null}31```bash theme={null}

32claude -p "What does the auth module do?"32claude -p "What does the auth module do?"

33```33```

34 34 

35Claude Code 在成功时以代码 0 退出,在运行失败时以非零代码退出,因此你的脚本可以根据退出状态进行分支。如果你传递无效标志,Claude Code 会在运行开始前向 stderr 报告错误。当运行内部发生故障(例如缺少身份验证)时,Claude Code 会将故障作为结果打印到 stdout。35Claude Code 在成功时以代码 0 退出,在运行失败时以非零代码退出,因此您的脚本可以根据退出状态进行分支。如果您传递无效标志,Claude Code 会在运行开始前向 stderr 报告错误。当运行内部发生故障(例如缺少身份验证)时,Claude Code 会将故障作为结果打印到 stdout。

36 36 

37<h3 id="start-faster-with-bare-mode">37<h3 id="start-faster-with-bare-mode">

38 使用裸模式更快启动38 使用 bare 模式更快启动

39</h3>39</h3>

40 40 

41添加 `--bare` 以通过跳过 hooks、skills、自定义命令、[subagents](/docs/zh-CN/sub-agents)、已安装的插件、MCP 服务器、自动内存和 CLAUDE.md 的自动发现来减少启动时间。没有它,`claude -p` 会加载交互式会话相同的 [context](/docs/zh-CN/how-claude-code-works#the-context-window),包括在工作目录或 `~/.claude` 中配置的任何内容。41添加 `--bare` 可以跳过 hook、skill、自定义命令、[子代理](/docs/zh-CN/sub-agents)、已安装的插件、MCP 服务器、自动记忆和 CLAUDE.md 的自动发现,从而减少启动时间。如果不使用它,`claude -p` 会加载与交互式会话相同的 [上下文](/docs/zh-CN/how-claude-code-works#the-context-window),包括在工作目录或 `~/.claude` 中配置的任何内容。

42 42 

43裸模式对于 CI 和脚本很有用,你需要在每台机器上获得相同的结果。队友的 `~/.claude` 中的 hook 或项目的 `.mcp.json` 中的 MCP 服务器不会运行,因为裸模式永远不会读取它们。你用 `--add-dir` 命名的目录是一个部分例外:裸模式从其 `.claude/skills/` 文件夹加载 skills,但仍然跳过其 `.claude/commands/` 和 `.claude/agents/` 文件夹。[来自其他目录的 Skills](/docs/zh-CN/skills#skills-from-additional-directories) 涵盖了加载和不加载的内容。43bare 模式适用于需要在每台机器上获得相同结果的 CI 和脚本。队友的 `~/.claude` 中的 hook 或项目的 `.mcp.json` 中的 MCP 服务器不会运行,因为 bare 模式从不读取它们。您用 `--add-dir` 指定的目录是一个部分例外:bare 模式会从其 `.claude/skills/` 文件夹加载 skill,但仍然跳过其 `.claude/commands/` 和 `.claude/agents/` 文件夹。[来自其他目录的 Skills](/docs/zh-CN/skills#skills-from-additional-directories) 介绍了哪些内容会加载、哪些不会加载。

44 44 

45没有 `--bare`,`-p` 会话会运行项目的 `.claude/settings.json` 中的 hooks 并连接其 `.mcp.json` 中的服务器,即使在你从未信任的文件夹中也是如此。`-p` 会话不显示工作区信任对话框和每个服务器的批准提示。[在你信任文件夹之前运行的内容](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder) 涵盖了 `-p` 下每种类型的存储库内容以及如何将其排除在外。45如果不使用 `--bare`,`-p` 会话会运行项目的 `.claude/settings.json` 中的 hook 并连接其 `.mcp.json` 中的服务器,即使在您从未信任过的文件夹中也是如此。`-p` 会话不会显示工作区信任对话框,也不会显示逐个服务器的批准提示。[在您信任文件夹之前运行的内容](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder) 介绍了 `-p` 下每种仓库内容以及如何将其排除在外。

46 46 

47此示例在裸模式下运行一次性摘要任务,并预先批准 Read 工具,以便调用完成而无需权限提示。运行前设置 `ANTHROPIC_API_KEY`,因为裸模式不使用你的订阅登录:47此示例在 bare 模式下运行一次性摘要任务,并预先批准 Read 工具,以便调用无需权限提示即可完成。运行前请设置 `ANTHROPIC_API_KEY`,因为 bare 模式不使用您的订阅登录:

48 48 

49```bash theme={null}49```bash theme={null}

50claude --bare -p "Summarize README.md" --allowedTools "Read"50claude --bare -p "Summarize README.md" --allowedTools "Read"

51```51```

52 52 

53在裸模式下,Claude Code 永远不会读取 OAuth 凭证或系统密钥链。对于 Anthropic API,在环境中设置 `ANTHROPIC_API_KEY`,使用在 [Claude Console](https://platform.claude.com) 中创建的密钥,或在 `--settings` JSON 中提供 `apiKeyHelper`。Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 继续照常读取它们自己的提供商凭证。53在 bare 模式下,Claude Code 从不读取 OAuth 凭据或系统密钥链。对于 Anthropic API,请在环境中设置 `ANTHROPIC_API_KEY`(使用在 [Claude Console](https://platform.claude.com) 中创建的密钥),或在 `--settings` JSON 中提供 `apiKeyHelper`。Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 会继续照常读取各自的提供商凭据。

54 54 

55在裸模式下,Claude 可以访问 Bash、文件读取和文件编辑工具。使用标志传递你需要的任何 context:55在 bare 模式下,Claude 可以使用 Bash、文件读取和文件编辑工具。请使用标志传递您需要的任何上下文:

56 56 

57| 要加载 | 使用 |57| 要加载的内容 | 使用 |

58| - | - |58| - | - |

59| 系统提示添加 | `--append-system-prompt`, `--append-system-prompt-file` |59| 系统提示词附加内容 | `--append-system-prompt`, `--append-system-prompt-file` |

60| 设置 | `--settings <file-or-json>` |60| 设置 | `--settings <file-or-json>` |

61| MCP 服务器 | `--mcp-config <file-or-json>` |61| MCP 服务器 | `--mcp-config <file-or-json>` |

62| [自定义 Agent](/docs/zh-CN/sub-agents#choose-the-subagent-scope) | `--agents <file-or-json>` |62| [自定义 Agent](/docs/zh-CN/sub-agents#choose-the-subagent-scope) | `--agents <file-or-json>` |

63| 一个插件 | `--plugin-dir <path>`, `--plugin-url <url>` |63| 插件 | `--plugin-dir <path>`, `--plugin-url <url>` |

64 64 

65bare 模式还会限制会话运行期间发生的事情:65bare 模式还会限制会话运行期间发生的事情:

66 66 


84 84 

85运行会等待后台工作,例如后台命令、子代理和工作流、Monitor 监视以及待处理的 `/loop` 唤醒:85运行会等待后台工作,例如后台命令、子代理和工作流、Monitor 监视以及待处理的 `/loop` 唤醒:

86 86 

87* **[后台命令](/docs/zh-CN/tools-reference#background-commands)**:对于主对话启动的命令(例如开发服务器或监视构建),运行会等待,直到该命令退出或达到其 [时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)。随后 Claude 会根据结果再进行一轮,该轮次的结果成为运行的最后结果,也就是 `text` 和 `json` 输出所打印的结果。在命令运行期间,10 分钟上限不会结束等待。87* **[后台命令](/docs/zh-CN/tools-reference#background-commands)**:对于主对话启动的命令(例如开发服务器或监视构建),运行会等待,直到该命令退出或达到其 [时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)。随后 Claude 会根据结果再进行一轮。在命令运行期间,10 分钟上限不会结束等待。

88* **后台[子代理](/docs/zh-CN/sub-agents)和工作流**:运行会保持打开状态,直到该工作完成,因为其结果是最终输出的一部分。88* **后台[子代理](/docs/zh-CN/sub-agents)和工作流**:运行会保持打开状态,直到该工作完成,因为其结果是最终输出的一部分。

89* **[Monitor](/docs/zh-CN/tools-reference#monitor-tool) 监视**:运行会等待,直到监视超时或 10 分钟上限结束等待,以先发生者为准。在等待期间,Claude 会继续响应监视报告的内容。默认情况下,监视在 Claude 启动后五分钟超时。89* **[Monitor](/docs/zh-CN/tools-reference#monitor-tool) 监视**:运行会等待,直到监视超时或 10 分钟上限结束等待,以先发生者为准。在等待期间,Claude 会继续响应监视报告的内容。默认情况下,监视在 Claude 启动后五分钟超时。

90* **待处理的唤醒**:在以文本形式而非通过 `--input-format stream-json` 传递提示词的运行中,如果 Claude 已安排 [自定节奏的 `/loop` 唤醒](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval),运行会等待每次唤醒触发并执行其迭代,直到 [循环结束](/docs/zh-CN/scheduled-tasks#stop-a-loop),即使超过 10 分钟上限也是如此。90* **待处理的唤醒**:在以文本形式而非通过 `--input-format stream-json` 传递提示词的运行中,如果 Claude 已安排 [自定节奏的 `/loop` 唤醒](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval),运行会等待每次唤醒触发并执行其迭代,直到 [循环结束](/docs/zh-CN/scheduled-tasks#stop-a-loop),即使超过 10 分钟上限也是如此。

91 91 

92如果运行达到其 [`--max-budget-usd`](/docs/zh-CN/cli-reference#cli-flags) 上限,Claude Code 会停止剩余的后台工作,而不是继续等待。92如果运行达到其 [`--max-budget-usd`](/docs/zh-CN/cli-reference#cli-flags) 上限,Claude Code 会停止剩余的后台工作,而不是继续等待。

93 93 

94当后台工作启动新的轮次时,使用默认的 `text` 输出时运行会打印每一轮的结果,使用 `json` 输出时则打印最后一轮的结果。在 v2.1.295 之前,使用 `text` 输出时运行也只打印最后一轮的结果。

95 

94<h3 id="stop-a-run-with-sigterm">96<h3 id="stop-a-run-with-sigterm">

95 使用 SIGTERM 停止运行97 使用 SIGTERM 停止运行

96</h3>98</h3>

97 99 

98如果你使用 SIGTERM 停止 `claude -p` 运行,例如使用 `kill` 或从进程监督程序,Claude Code 以代码 143 退出。Claude Code 将正在进行的转向保持未完成状态,并且不为其记录任何结果。要改为结束转向,请发送 SIGINT,或在停止进程之前调用 Agent SDK 的 `interrupt()`。100如果您使用 SIGTERM 停止 `claude -p` 运行(例如使用 `kill` 或通过进程监督程序),Claude Code 会以代码 143 退出。Claude Code 会让正在进行的轮次保持未完成状态,并且不为其记录任何结果。如果要结束该轮次,请在停止进程之前发送 SIGINT,或调用 Agent SDK 的 `interrupt()`。

99 101 

100在 SIGTERM 上,Claude Code 终止仍在运行的任何 Bash 命令的进程树。Claude Code 然后运行 [`SessionEnd` hooks](/docs/zh-CN/hooks#sessionend) 并退出。退出时,Claude Code 不启动新的工具调用,不发送新的模型请求,也不运行除 `SessionEnd` 之外的任何 hook。如果运行在信号到达时处于命令中间或等待权限提示的答案,Claude Code 按如下方式处理该步骤:102收到 SIGTERM 时,Claude Code 会终止仍在运行的任何 Bash 命令的进程树。然后 Claude Code 运行 [`SessionEnd` hook](/docs/zh-CN/hooks#sessionend) 并退出。在退出过程中,Claude Code 不会启动新的工具调用,不会发送新的模型请求,也不会运行除 `SessionEnd` 之外的任何 hook。如果信号到达时运行正在执行命令或等待权限提示,Claude Code 会按如下方式处理该步骤:

101 103 

102* **运行命令**:Claude Code 在会话中将命令记录为已杀死。104* **正在运行命令**:Claude Code 会在会话中将该命令记录为已终止。

103* **等待权限提示的答案**:如果你向进程发送 SIGTERM,Claude Code 会将提示保持未回答状态。如果你的程序通过 Agent SDK 关闭会话,SDK 会在发送任何信号之前结束 Claude Code 的输入,Claude Code 会在输入结束后立即取消提示。105* **正在等待权限提示的答复**:如果您向进程发送 SIGTERM,Claude Code 会让该提示保持未答复状态。如果您的程序通过 Agent SDK 关闭会话,SDK 会在发送任何信号之前结束 Claude Code 的输入,而 Claude Code 会在输入结束后立即取消该提示。

104 106 

105当你 [恢复会话](#continue-conversations) 时,Claude Code 将中断的转向保持原样,你的下一个提示驱动对话。要让 Claude Code 在恢复时继续中断的转向,请设置 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/zh-CN/env-vars)。107当您 [恢复会话](#continue-conversations) 时,Claude Code 会保留被中断的轮次原样,由您的下一个提示词推动对话。如果希望 Claude Code 在恢复时继续被中断的轮次,请设置 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/zh-CN/env-vars)。

106 108 

107<h3 id="if-the-working-directory-is-deleted">109<h3 id="if-the-working-directory-is-deleted">

108 如果工作目录被删除110 如果工作目录被删除

109</h3>111</h3>

110 112 

111如果 `claude -p` 或 Agent SDK 会话的工作目录在会话中间被删除,会话继续运行。当转向在目录缺失时启动时,Claude Code 在 `stream-json` 输出中发出 [警告消息](/docs/zh-CN/agent-sdk/typescript#sdkinformationalmessage),shell 命令失败,直到目录再次存在。113如果 `claude -p` 或 Agent SDK 会话的工作目录在会话进行中被删除,会话会继续运行。当某个轮次在目录缺失时开始,Claude Code 会在 `stream-json` 输出中发出 [警告消息](/docs/zh-CN/agent-sdk/typescript#sdkinformationalmessage),并且 shell 命令会失败,直到该目录重新存在。

112 114 

113<h2 id="examples">115<h2 id="examples">

114 示例116 示例


262| `type` | `"system"` | 消息类型 |264| `type` | `"system"` | 消息类型 |

263| `subtype` | `"api_retry"` | 将其标识为重试事件 |265| `subtype` | `"api_retry"` | 将其标识为重试事件 |

264| `attempt` | 整数 | 当前尝试次数,从 1 开始 |266| `attempt` | 整数 | 当前尝试次数,从 1 开始 |

265| `max_retries` | 整数 | 允许的总重试次数,对于此失败的原因可能少于会话范围的预算 |267| `max_retries` | 整数 | 针对此失败原因允许的总重试次数 |

266| `retry_delay_ms` | 整数 | 毫秒直到下一次尝试 |268| `retry_delay_ms` | 整数 | 毫秒直到下一次尝试 |

267| `error_status` | 整数或 null | 失败尝试的 HTTP 状态代码,或 `null` 当尝试从 API 没有获得 HTTP 响应时 |269| `error_status` | 整数或 null | 失败尝试的 HTTP 状态代码,或 `null` 当尝试从 API 没有获得 HTTP 响应时 |

268| `no_response` | 对象,可选 | 仅当失败的尝试 [及时没有获得响应头](/docs/zh-CN/errors#no-response-from-api) 时存在。`waited_ms` 是该尝试等待的时间,`retry_wait_ms` 是重试将等待的时间。在这些事件中,`max_retries` 反映此原因通常获得的一次重试,而不是会话范围的预算。需要 Claude Code v2.1.261 或更高版本 |270| `no_response` | 对象,可选 | 仅当失败的尝试 [未及时获得响应头](/docs/zh-CN/errors#no-response-from-api) 时存在。`waited_ms` 是该尝试等待的时间,`retry_wait_ms` 是重试将等待的时间。需要 Claude Code v2.1.261 或更高版本 |

269| `error` | 字符串 | 错误类别:`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`rate_limit`、`overloaded`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |271| `error` | 字符串 | 错误类别:`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`rate_limit`、`overloaded`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |

270| `uuid` | 字符串 | 唯一事件标识符 |272| `uuid` | 字符串 | 唯一事件标识符 |

271| `session_id` | 字符串 | 事件所属的会话 |273| `session_id` | 字符串 | 事件所属的会话 |

hipaa-setup.md +3 −0

Details

139}139}

140```140```

141 141 

142如需包含沙箱隔离、网络允许列表、凭据保护和本地数据保留的更完整 `managed-settings.json`,请参阅[设置示例仓库](https://github.com/anthropics/claude-code/tree/main/examples/settings)中的 `settings-hipaa.json` 和 `README-hipaa.md`。

143 

142<h4 id="what-each-key-does">144<h4 id="what-each-key-does">

143 每个键的作用145 每个键的作用

144</h4>146</h4>


306 308 

307* [为符合 HIPAA 要求的组织设置 Cowork(本地模式)](https://claude.com/docs/cowork/hipaa-setup)309* [为符合 HIPAA 要求的组织设置 Cowork(本地模式)](https://claude.com/docs/cowork/hipaa-setup)

308* [部署托管设置](/docs/zh-CN/managed-settings)310* [部署托管设置](/docs/zh-CN/managed-settings)

311* [HIPAA 设置示例](https://github.com/anthropics/claude-code/tree/main/examples/settings)

309* [企业网络配置](/docs/zh-CN/network-config)312* [企业网络配置](/docs/zh-CN/network-config)

310* [零数据保留](/docs/zh-CN/zero-data-retention)313* [零数据保留](/docs/zh-CN/zero-data-retention)

311* [法律与合规](/docs/zh-CN/legal-and-compliance)314* [法律与合规](/docs/zh-CN/legal-and-compliance)

hooks.md +124 −35

Details

476| `async` | 否 | 如果为 `true`,在后台运行而不阻止。请参阅 [在后台运行 hooks](#run-hooks-in-the-background) |476| `async` | 否 | 如果为 `true`,在后台运行而不阻止。请参阅 [在后台运行 hooks](#run-hooks-in-the-background) |

477| `asyncRewake` | 否 | 如果为 `true`,在后台运行并在退出代码 2 时唤醒 Claude。hook 的 stderr 或 stdout(如果 stderr 为空)显示给 Claude 作为 [系统提醒](/docs/zh-CN/glossary#system-reminder),以便它可以对长时间运行的后台失败做出反应 |477| `asyncRewake` | 否 | 如果为 `true`,在后台运行并在退出代码 2 时唤醒 Claude。hook 的 stderr 或 stdout(如果 stderr 为空)显示给 Claude 作为 [系统提醒](/docs/zh-CN/glossary#system-reminder),以便它可以对长时间运行的后台失败做出反应 |

478| `shell` | 否 | 用于此 hook 的 shell。接受 `"bash"` 或 `"powershell"`。默认为 `"bash"`,或在未安装 Git Bash 时在 Windows 上默认为 `"powershell"`。设置 `"powershell"` 在 Windows 上通过 PowerShell 运行命令。不需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL`,因为 hooks 直接生成 PowerShell。设置 `args` 时被忽略 |478| `shell` | 否 | 用于此 hook 的 shell。接受 `"bash"` 或 `"powershell"`。默认为 `"bash"`,或在未安装 Git Bash 时在 Windows 上默认为 `"powershell"`。设置 `"powershell"` 在 Windows 上通过 PowerShell 运行命令。不需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL`,因为 hooks 直接生成 PowerShell。设置 `args` 时被忽略 |

479| `onFailure` | 否 | hook 失败时对该操作的处理方式:`"continue"`(默认值)或 `"block"`。请参阅 [在 hook 失败时阻止操作](#block-the-action-when-a-hook-fails)。需要 Claude Code v2.1.295 或更高版本 |

479 480 

480<a id="exec-form-and-shell-form" />481<a id="exec-form-and-shell-form" />

481 482 


533| `url` | 是 | 发送 POST 请求的 URL |534| `url` | 是 | 发送 POST 请求的 URL |

534| `headers` | 否 | 其他 HTTP 标头作为键值对。值支持使用 `$VAR_NAME` 或 `${VAR_NAME}` 语法的环境变量插值。仅解析 `allowedEnvVars` 中列出的变量 |535| `headers` | 否 | 其他 HTTP 标头作为键值对。值支持使用 `$VAR_NAME` 或 `${VAR_NAME}` 语法的环境变量插值。仅解析 `allowedEnvVars` 中列出的变量 |

535| `allowedEnvVars` | 否 | 可能被插值到标头值中的环境变量名称列表。对未列出变量的引用被替换为空字符串。任何环境变量插值都需要 |536| `allowedEnvVars` | 否 | 可能被插值到标头值中的环境变量名称列表。对未列出变量的引用被替换为空字符串。任何环境变量插值都需要 |

537| `onFailure` | 否 | hook 失败时对该操作的处理方式:`"continue"`(默认值)或 `"block"`。请参阅 [在 hook 失败时阻止操作](#block-the-action-when-a-hook-fails)。需要 Claude Code v2.1.295 或更高版本 |

536 538 

537Claude Code 将 hook 的 [JSON 输入](#hook-input-and-output) 作为 POST 请求体发送,`Content-Type: application/json`。响应体使用与命令 hooks 相同的 [JSON 输出格式](#json-output)。539Claude Code 将 hook 的 [JSON 输入](#hook-input-and-output) 作为 POST 请求体发送,`Content-Type: application/json`。响应体使用与命令 hooks 相同的 [JSON 输出格式](#json-output)。

538 540 


821 退出码输出823 退出码输出

822</h3>824</h3>

823 825 

824来自 hook 命令的退出码告诉 Claude Code 该操作是否应继续、被阻止或被忽略。退出码不单独起作用。Claude Code 从 stdout 读取 [JSON 输出字段](#json-output),无论退出码是什么(不仅仅是 0),对于使用标准决策模型的事件,通过 schema 验证的解析对象与退出码一起生效。退出 2 的阻止是 JSON 无法覆盖的唯一结果。826hook 的退出码告诉 Claude Code 是否继续执行触发该 hook 的操作,例如工具调用或提示词。运行结束时有以下三种结果之一:

825 827 

826两个表负责说明每个事件的例外:[每个事件的退出码 2 行为](#exit-code-2-behavior-per-event)说明退出码对每个事件的作用,[决策控制](#decision-control)说明每个事件接受哪些决策字段。通用字段如 `systemMessage` 在大多数事件中工作,并在 [JSON 输出](#json-output)表中列出。828* **成功**:hook 以 0 退出。Claude Code 应用 hook 打印的任何 [JSON 输出](#json-output)字段,除非这些字段阻止或拒绝该操作,否则操作继续进行。

829* **阻止错误**:hook 以 2 退出。在[可以阻止的事件](#exit-code-2-behavior-per-event)上,Claude Code 停止该操作。

830* **非阻止错误**:hook 以任何其他代码退出,或以其他方式失败,例如无法启动或打印无效 JSON。操作继续进行,在 `PreToolUse` 等事件上,您会在会话记录中看到 `<hook name> hook error` 通知。如果希望失败的 hook 阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

831 

832hook 打印到 stdout 的内容可能会改变结果。例如,如果 `PreToolUse` hook 以 1 退出但打印了通过验证的 JSON,则该运行是成功的,由 JSON 字段决定后续行为。要确定 hook 在 `PreToolUse` 等事件上的结果,请将其打印到 stdout 的内容与第一列匹配,并将其退出码与表头匹配:

833 

834| Stdout | 退出 0 | 退出 2 | 任何其他退出码 |

835| :- | :- | :- | :- |

836| 通过 [schema 验证](#json-output)的 JSON 对象 | 成功。字段生效 | 阻止错误。Claude Code 仍读取字段,但它们无法覆盖阻止 | 成功。Claude Code 忽略退出码,仅由字段决定。设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails) 时,这算作失败 |

837| [无法解析](#exit-code-0)或未通过 schema 验证的 JSON | 非阻止错误。通知带有解析或验证消息 | 阻止错误。您的 stderr 作为原因 | 非阻止错误。通知带有解析或验证消息 |

838| [纯文本](#exit-code-0)或无输出 | 成功 | 阻止错误。您的 stderr 作为原因 | 非阻止错误。通知带有您的 stderr 的第一行 |

839 

840某些事件有自己的规则:

841 

842* **`WorktreeCreate`**:任何非零退出码都会使 worktree 创建失败,无论您的 JSON 说什么。

843* **`WorktreeRemove`**:任何非零退出码会在目录之后仍然存在时使 worktree 移除失败。

844* **`Stop`、`SubagentStop`、`TaskCompleted` 以及插件的 `UserPromptSubmit` hook**:当 hook 以 2 退出、stdout 上无内容且其 stderr 表明某个文件缺失(例如 `No such file or directory`)时,Claude Code 将该运行视为非阻止错误。

845* **`Elicitation` 和 `ElicitationResult`**:Claude Code 在 hook 以 0 退出时应用您的 `hookSpecificOutput`,在任何其他退出码上忽略它。

846* **丢弃 hook 输出的事件,如 `StopFailure`**:Claude Code 在任何退出码上都忽略您的 JSON,但 `terminalSequence` 等副作用字段除外,它们仍会触发。

847 

848要查看退出码 2 对您的事件有何作用,请参阅[每个事件的退出码 2 行为](#exit-code-2-behavior-per-event)。要查看它接受哪些决策字段,请参阅[决策控制](#decision-control)。

827 849 

828<h4 id="exit-code-0">850<h4 id="exit-code-0">

829 退出码 0851 退出码 0


835 857 

836Claude Code 是否将您的 stdout 读取为 [JSON 输出](#json-output)或纯文本取决于它如何开始和结束,忽略周围的空白:858Claude Code 是否将您的 stdout 读取为 [JSON 输出](#json-output)或纯文本取决于它如何开始和结束,忽略周围的空白:

837 859 

838* **以 `{` 开始并以 `}` 结束**:Claude Code 将其解析为 JSON。当输出是两行或更多行,每行本身都解析为 JSON,且没有行是设置字段的 [JSON 输出](#json-output)对象时,Claude Code 将整个输出视为纯文本。当其中一行确实设置了字段时,整个输出是解析失败,如下所述。860* **以 `{` 开始并以 `}` 结束**:Claude Code 将其解析为 JSON。当输出是两行或更多行,每行本身都解析为 JSON,且没有行是设置字段的 [JSON 输出](#json-output)对象时,Claude Code 将整个输出视为纯文本。当其中一行确实设置了字段时,整个输出是解析失败。

839* **以 `{` 开始但不以 `}` 结束**:Claude Code 将其视为纯文本。861* **以 `{` 开始但不以 `}` 结束**:Claude Code 将其视为纯文本。

840* **以其他任何内容开始**:Claude Code 将其视为纯文本,即使它是 JSON 数组或带引号的 JSON 字符串也是如此。862* **以其他任何内容开始**:Claude Code 将其视为纯文本,即使它是 JSON 数组或带引号的 JSON 字符串也是如此。

841 863 

842对于使用标准决策模型的事件,退出 0 且解析对象未通过 schema 验证是非阻止错误:操作继续,会话记录显示 `<hook name> hook error` 通知,带有验证消息。在除 2 以外的任何退出码上都会发生相同情况,而[退出 2 仍然阻止](#exit-code-2)。864当 Claude Code 尝试将您的 stdout 解析为 JSON 但无法解析,或解析后的对象未通过 [schema 验证](#json-output)时,该运行是[非阻止错误](#exit-code-output)。`<hook name> hook error` 通知带有解析或验证消息。在添加纯文本 stdout 作为上下文的事件上,Claude Code 不会添加它未能解析的 stdout。

843 

844对于使用标准决策模型的事件,当 Claude Code 尝试将您的 stdout 解析为 JSON 且无法解析时,它在除 2 外的每个退出码上报告非阻止错误。会话记录显示 `<hook name> hook error` 通知,带有解析消息。在添加纯文本 stdout 作为上下文的事件上,Claude Code 不添加文本。在 v2.1.248 之前,Claude Code 将该 stdout 视为纯文本。

845 865 

846来自退出 0 的 hook 的 stderr 仅进入调试日志,从不进入会话记录,Claude 从不看到它。要自己读取它,请启用[调试日志](#debug-hooks)。要从 `PostToolUse` 或 `PostToolUseFailure` hook 向 Claude 显示警告,请改为退出 2,以便 [Claude 看到 stderr](#exit-code-2-behavior-per-event),即使工具已经运行。866Claude 从不看到以 0 退出的 hook 的 stderr。要在 `PreToolUse` 等事件上自己读取它,请启用[调试日志](#debug-hooks)。要从 `PostToolUse` 或 `PostToolUseFailure` hook 向 Claude 显示警告,请改为退出 2,以便 [Claude 看到 stderr](#exit-code-2-behavior-per-event),即使工具已经运行。

847 867 

848<h4 id="exit-code-2">868<h4 id="exit-code-2">

849 退出码 2869 退出码 2

850</h4>870</h4>

851 871 

852退出 2 表示阻止错误。在[可以阻止的事件](#exit-code-2-behavior-per-event)上,无论您是否打印 JSON,退出 2 都会阻止:即使 JSON `permissionDecision` 为 `"allow"` 也无法覆盖它。Claude Code 仍然读取 stdout 上的任何有效 [JSON 输出](#json-output)。在 `Elicitation` 和 `ElicitationResult` 上,退出 2 的 hook 的 `hookSpecificOutput` 被忽略。872以代码 2 退出以阻止操作。在[可以阻止的事件](#exit-code-2-behavior-per-event)上,Claude Code 会停止该操作:例如,`PreToolUse` hook 会阻止工具调用,`UserPromptSubmit` hook 会拒绝提示词。

853 873 

854阻止消息是您的 JSON 阻止决策中的原因(如果它做出了阻止决策),否则是您的 stderr 文本。阻止的作用因事件而异:`PreToolUse` 阻止工具调用,`UserPromptSubmit` 拒绝提示词,等等。[每个事件的退出码 2 行为](#exit-code-2-behavior-per-event)列出每个事件的效果,每个事件的部分说明消息去向。874随阻止一起提供的消息是 hook 的 stderr。如果 hook 还打印了做出阻止决策的 JSON,Claude Code 会改用该决策的原因。

855 875 

856退出 2 的 hook 同时打印未通过 [JSON 输出](#json-output) schema 验证的 JSON 时仍然阻止:Claude Code 使用 stderr 作为阻止原因,并在调试日志中记录验证失败。在 v2.1.214 之前,Claude Code 将该组合视为非阻止错误,操作继续。876即使 hook 打印了 JSON,退出 2 也会阻止:

877 

878* **通过 schema 验证的 JSON**:Claude Code 仍读取 [JSON 输出](#json-output)字段,但它们无法覆盖阻止。即使 `permissionDecision` 为 `"allow"`,也不会放行操作。在 `Elicitation` 和 `ElicitationResult` 上,以 2 退出的 hook 的 `hookSpecificOutput` 被忽略。

879* **未通过 schema 验证的 JSON**:hook 仍然阻止。Claude Code 使用您的 stderr 作为阻止原因,并在调试日志中记录验证失败。

857 880 

858此脚本通过退出 2 阻止 `rm` 命令,并将所有其他命令留给正常权限流程:881此脚本通过退出 2 阻止 `rm` 命令,并将所有其他命令留给正常权限流程:

859 882 


871exit 0 # No decision: the normal permission flow applies894exit 0 # No decision: the normal permission flow applies

872```895```

873 896 

897将此脚本注册为 `Bash` 上的 `PreToolUse` hook 后,以 `rm` 开头的命令会被阻止,Claude 会收到 hook 的 stderr 作为工具的错误,前缀为事件名称、工具名称和 hook 的命令:

898 

899```text theme={null}

900PreToolUse:Bash hook error: [${CLAUDE_PROJECT_DIR}/.claude/hooks/no-rm.sh]: Blocked: rm commands are not allowed

901```

902 

874<h4 id="other-exit-codes">903<h4 id="other-exit-codes">

875 其他退出码904 其他退出码

876</h4>905</h4>

877 906 

878对于大多数 hook 事件,任何其他退出码本身不会阻止。发生什么取决于您的 stdout:907当 hook 以 0 或 2 以外的代码退出,并且向 stdout 打印纯文本或不打印任何内容时,该运行是[非阻止错误](#exit-code-output)。您会在会话记录中看到 `<hook name> hook error` 通知,带有 `Failed with non-blocking status code:` 和 hook stderr 的第一行。例如,当 `Bash` 上的 `PreToolUse` hook 向 stderr 打印 `something broke` 并以 1 退出时,`PreToolUse:Bash hook error` 通知带有以下行:

879 908 

880* 使用通过 schema 验证的解析对象时,对于使用标准决策模型的事件,Claude Code 忽略退出码,仅由 JSON 决定结果:909```text theme={null}

881 * 事件支持的每个字段都会生效,包括 `permissionDecision`、`additionalContext`、`updatedInput` 和 `systemMessage`,hook 不被报告为错误。910Failed with non-blocking status code: something broke

882 * [决策控制](#decision-control)列出每个事件的决策字段;通用字段如 `systemMessage` 遵循 [JSON 输出](#json-output)表。911```

883* 使用未通过 schema 验证的解析对象时,对于使用标准决策模型的事件,它与[退出 0 时](#exit-code-0)相同,是非阻止错误:操作继续,`<hook name> hook error` 通知带有验证消息。

884* 使用 Claude Code [尝试解析为 JSON](#exit-code-0) 但无法解析的 stdout 时,对于使用标准决策模型的事件,Claude Code 报告与退出 0 时相同的非阻止错误。操作继续,通知带有解析消息。

885* 使用 Claude Code [视为纯文本](#exit-code-0)的 stdout,或使用空 stdout 时,对于大多数 hook 事件是非阻止错误:操作继续,会话记录显示 `<hook name> hook error` 通知,后跟 stderr 的第一行,前缀为 `Failed with non-blocking status code:`。要捕获完整 stderr,请启用[调试日志](#debug-hooks)。

886 912 

887标准决策模型之外的事件在[每个事件表](#exit-code-2-behavior-per-event)中保留自己的行:`WorktreeCreate` 在任何非零退出时都会使创建失败,无论您的 JSON 说什么;完全丢弃 hook 输出的事件(如 `StopFailure`)在每个退出码上都忽略您的 JSON,但 `terminalSequence` 等副作用字段除外,它们仍会触发。913要捕获完整的 stderr 而不仅是第一行,请启用[调试日志](#debug-hooks)。

888 914 

889无法启动的 hook 也归入相同的非阻止类别。当脚本路径不存在或不可执行时,shell 以某个代码(如 127)退出,您会看到相同的通知,带有解释器的消息,例如 `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`。对于大多数 hook 事件,操作继续。当您设置策略 hook 时,请在其第一次运行时留意此通知:`settings.json` 中拼写错误的路径会使该关卡被悄无声息地禁用。915无法启动的 hook 也是非阻止错误。在 shell 形式下,当脚本路径不存在或不可执行时,shell 以某个代码(如 127)退出,通知带有解释器的消息,例如 `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`。当您设置策略 hook 时,请在其第一次运行时留意此通知,因为 `settings.json` 中拼写错误的路径意味着该 hook 从不运行。要改为阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

890 916 

891<Warning>917<Warning>

892 对于大多数 hook 事件,退出码 2 是唯一仅凭退出码即可阻止的退出码。如果 stdout 上没有有效 JSON,Claude Code 将退出码 1 视为非阻止错误并继续操作,即使 1 是传统的 Unix 失败代码。如果您的 hook 旨在强制执行策略,请使用 `exit 2`。worktree 事件不同:来自 `WorktreeCreate` 的任何非零退出码都会中止 worktree 创建,来自 `WorktreeRemove` 的任何非零退出码会在目录之后仍然存在时使 worktree 移除失败。918 如果 stdout 上没有有效 JSON,Claude Code 将退出码 1 视为非阻止错误,即使 1 是传统的 Unix 失败代码。如果您的 hook 旨在强制执行策略,请使用 `exit 2`。

893</Warning>919</Warning>

894 920 

895<h4 id="timeouts">921<h4 id="timeouts">


900 926 

901在 [`PreModelSwitch`](#premodelswitch) 上,因超时被取消的 hook 会阻止模型切换。在 `PreToolUse` 上,两类 hook 的行为不同:927在 [`PreModelSwitch`](#premodelswitch) 上,因超时被取消的 hook 会阻止模型切换。在 `PreToolUse` 上,两类 hook 的行为不同:

902 928 

903* 超时的 `command`、`http` 或 `mcp_tool` hook 不阻止工具调用。调用通过正常[权限流程](/docs/zh-CN/permissions)继续,因此不要指望停滞的 hook 充当关卡。929* 超时的 `command`、`http` 或 `mcp_tool` hook 不阻止工具调用。调用通过正常[权限流程](/docs/zh-CN/permissions)继续,因此不要指望停滞的 hook 充当关卡。要在 `command` 或 `http` hook 超时时阻止调用,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

904* 超过其超时时间的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会[阻止工具调用](#pretooluse)。930* 超过其超时时间的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会[阻止工具调用](#pretooluse)。

905 931 

932<h4 id="block-the-action-when-a-hook-fails">

933 hook 失败时阻止操作

934</h4>

935 

936在大多数事件上,当 hook 失败或超时时,Claude Code 仍会执行该操作,因此路径错误或脚本崩溃的策略 hook 会放行一切。要改为阻止操作,请在 `command` 或 `http` hook 上设置 `"onFailure": "block"`。默认值为 `"continue"`。需要 Claude Code v2.1.295 或更高版本。

937 

938`.claude/settings.json` 中的这个 `PreToolUse` hook 会在每个 Bash 命令之前运行一个项目脚本,如果脚本失败则阻止该命令:

939 

940```json theme={null}

941{

942 "hooks": {

943 "PreToolUse": [

944 {

945 "matcher": "Bash",

946 "hooks": [

947 {

948 "type": "command",

949 "command": "node",

950 "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/check-command.js"],

951 "onFailure": "block"

952 }

953 ]

954 }

955 ]

956 }

957}

958```

959 

960要测试它,请让 `check-command.js` 保持缺失状态,并让 Claude 运行一个 Bash 命令,例如 `ls`。Claude Code 会阻止该调用,错误中包含 `failed; blocking because onFailure is "block"`,后跟 node 自身的错误输出(此处截取为一行):

961 

962```text theme={null}

963PreToolUse:Bash hook error: [node ${CLAUDE_PROJECT_DIR}/.claude/hooks/check-command.js]: failed; blocking because onFailure is "block"

964Error: Cannot find module '/path/to/project/.claude/hooks/check-command.js'

965```

966 

967超时后,消息显示 `timed out` 而不是 `failed`。如果未设置 `onFailure`,同样缺失的脚本是非阻止错误,`ls` 会运行。

968 

969以下每种情况都算作失败:

970 

971* **无法启动**:命令 hook 无法启动,例如因为脚本或可执行文件不存在

972* **0 或 2 以外的退出码**:对于命令 hook,即使它打印了允许操作的 JSON(如 `permissionDecision: "allow"`),也算作失败。要返回 JSON 决策,请以 0 退出

973* **HTTP 错误**:HTTP hook 的连接失败,或响应状态不是 2xx

974* **超时**:hook 达到其 [`timeout`](#common-fields)

975* **无效输出**:JSON 输出[无法解析](#exit-code-0)或未通过 [schema 验证](#json-output)。对于 HTTP hook,既不为空也不是 JSON 对象的 2xx 响应体也算。命令 hook 的纯文本 stdout 不算失败

976 

977设置 `"block"` 后,失败的效果与[该事件上退出码 2 的效果](#exit-code-2-behavior-per-event)相同,但 `PermissionRequest` 除外,在该事件上它会拒绝请求。例如,`PreToolUse` 失败会阻止工具调用,`UserPromptSubmit` 失败会阻止提示词。

978 

979该字段对以下 hook 无效:

980 

981* **`Stop`、`SubagentStop`、`TaskCompleted` 和 `TeammateIdle` hook**:这些事件上的退出码 2 会让 Claude 回去继续工作,而 Claude 无法修复无法运行的 hook

982* **后台命令 hook**:设置了 [`async` 或 `asyncRewake`](#run-hooks-in-the-background) 的命令 hook

983 

906<h4 id="exit-code-2-behavior-per-event">984<h4 id="exit-code-2-behavior-per-event">

907 每个事件的退出码 2 行为985 每个事件的退出码 2 行为

908</h4>986</h4>


960* **连接失败**:非阻止错误,执行继续1038* **连接失败**:非阻止错误,执行继续

961* **超时**:hook 被取消,如[超时](#timeouts)下所述1039* **超时**:hook 被取消,如[超时](#timeouts)下所述

962 1040 

963与命令 hook 不同,HTTP hook 无法仅通过状态码发出阻止错误信号。要阻止工具调用或拒绝权限,请返回 2xx 响应,其 JSON 响应体包含相应的决策字段。1041HTTP hook 无法仅通过状态码发出阻止错误信号:非 2xx 状态或连接失败是[非阻止错误](#exit-code-output)。要阻止工具调用或拒绝权限,请返回 2xx 响应,其 JSON 响应体包含相应的决策字段。要在请求失败或返回非 2xx 状态时阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

964 1042 

965<h3 id="json-output">1043<h3 id="json-output">

966 JSON 输出1044 JSON 输出


1237 SessionStart 决策控制1315 SessionStart 决策控制

1238</h4>1316</h4>

1239 1317 

1240Claude Code 会将其[视为纯文本](#exit-code-0)的 stdout 添加到 Claude 的上下文中。除所有 hook 都可用的 [JSON 输出字段](#json-output)外,您还可以返回以下事件专属字段:1318SessionStart hook 可以为 Claude 添加上下文、提供第一条用户消息、设置会话标题、监视文件以及重新加载 skill。除所有 hook 都可用的 [JSON 输出字段](#json-output)外,为每项功能返回相应字段:

1241 1319 

1242| 字段 | 描述 |1320| 字段 | 描述 |

1243| :- | :- |1321| :- | :- |

1244| `additionalContext` | 在对话开始时、第一个提示词之前添加到 Claude 上下文中的字符串。关于文本的传递方式以及应放入的内容,请参阅[为 Claude 添加上下文](#add-context-for-claude) |1322| `additionalContext` | 在对话开始时、第一个提示词之前添加到 Claude 上下文中的字符串。关于文本的传递方式以及应放入的内容,请参阅[为 Claude 添加上下文](#add-context-for-claude) |

1245| `initialUserMessage` | 用作会话第一条用户消息的字符串。适用于使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless),此时即使未提供提示词,它也会成为第一个轮次。如果提供了提示词,该提示词将作为下一个轮次跟随其后。与附加到现有轮次的 `additionalContext` 不同,此字段会创建轮次 |1323| `initialUserMessage` | 在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless)下,用作会话第一条用户消息的字符串。即使您未传入提示词,它也会成为第一轮。您传入的提示词会作为下一轮紧随其后 |

1246| `sessionTitle` | 设置会话标题,效果与 `/rename` 相同。可用于根据启动文件夹、git 分支或 worktree 名称自动命名会话。当 `source` 为 `"startup"`、`"resume"` 或 `"fork"` 时生效;在 `"clear"` 和 `"compact"` 时被忽略 |1324| `sessionTitle` | 设置会话标题,效果与 `/rename` 相同。在 `source` 为 `"startup"`、`"resume"` 或 `"fork"` 时生效 |

1247| `watchPaths` | 在此会话期间监视 [FileChanged](#filechanged) 事件的绝对路径数组 |1325| `watchPaths` | 在此会话期间监视 [FileChanged](#filechanged) 事件的绝对路径数组 |

1248| `reloadSkills` | 布尔值。为 `true` 时,Claude Code 会在 SessionStart hook 完成后重新扫描 [skill](/docs/zh-CN/skills) 和命令目录,使 hook 安装的 skill 在同一会话中(从第一个提示词开始)即可使用 |1326| `reloadSkills` | 布尔值。为 `true` 时,Claude Code 会在 SessionStart hook 完成后重新扫描 [skill](/docs/zh-CN/skills) 和命令目录。请参阅[重新加载 hook 安装的 skill](#reload-skills-that-a-hook-installs) |

1327 

1328以下输出添加上下文并为会话命名:

1249 1329 

1250```json theme={null}1330```json theme={null}

1251{1331{


1257}1337}

1258```1338```

1259 1339 

1260由于对于此事件,纯 stdout 已经会传达给 Claude,因此仅加载上下文的 hook 可以直接打印到 stdout,而无需构建 JSON。当您需要将上下文与 `sessionTitle` 等其他字段结合使用时,请使用 JSON 形式。1340仅添加上下文的 hook 可以直接打印内容而无需构建 JSON,因为 Claude Code 会将 SessionStart hook 的[纯文本 stdout](#exit-code-0) 添加到 Claude 的上下文中。

1341 

1342如果您的插件的 SessionStart hook 提供 `initialUserMessage` 或 `sessionTitle`,请在会话开始前安装该插件。对于在 SessionStart hook 运行之后才完成安装的插件,Claude Code 会忽略这两个字段。

1343 

1344<h4 id="reload-skills-that-a-hook-installs">

1345 重新加载 hook 安装的 skill

1346</h4>

1347 

1348要使 SessionStart hook 安装的 skill 在同一会话中可用,请返回 `reloadSkills`。skill 发现通常在 SessionStart hook 完成之前运行,因此如果不这样做,hook 写入 `~/.claude/skills/` 或 `.claude/skills/` 的文件在第一个提示词运行时可能缺失。

1261 1349 

1262当 SessionStart hook 安装或更新 skill 时,请使用 `reloadSkills`。skill 发现通常在 SessionStart hook 完成之前运行,因此 hook 写入 `~/.claude/skills/` 或 `.claude/skills/` 的文件否则只会在下一个会话中出现。此示例同步一个共享的 skill 仓库并请求重新扫描:1350此示例同步共享的 skill 仓库并请求重新扫描:

1263 1351 

1264```bash theme={null}1352```bash theme={null}

1265#!/bin/bash1353#!/bin/bash


1270echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1358echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1271```1359```

1272 1360 

1273仓库 URL 只是一个占位符;请将其替换为您自己的 skill 仓库。使用占位符时,clone 会失败并向 stderr 打印一条 `fatal:` 消息。以 0 退出的 SessionStart hook 的 stderr 仅供参考,因此 `reloadSkills` 请求仍然有效。1361仓库 URL 是占位符。请将其替换为您自己的 skill 仓库。

1274 1362 

1275<h4 id="persist-environment-variables">1363<h4 id="persist-environment-variables">

1276 持久化环境变量1364 持久化环境变量


1419 1507 

1420对于 `command`、`http` 和 `mcp_tool` 类型,`UserPromptSubmit` hook 的默认超时时间为 30 秒,短于这些类型在大多数其他事件上 600 秒的默认值。由于此 hook 在每个提示词之前运行,并且在完成前会阻塞模型处理,卡住的 hook 会使会话停滞。如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。1508对于 `command`、`http` 和 `mcp_tool` 类型,`UserPromptSubmit` hook 的默认超时时间为 30 秒,短于这些类型在大多数其他事件上 600 秒的默认值。由于此 hook 在每个提示词之前运行,并且在完成前会阻塞模型处理,卡住的 hook 会使会话停滞。如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。

1421 1509 

1422除了使用 [`async: true`](#run-hooks-in-the-background) 运行的 command hook 外,达到超时的 `UserPromptSubmit` command、HTTP 或 MCP 工具 hook 会被取消,其输出(包括任何 `additionalContext`)会被丢弃。提示词仍会传达给 Claude,只是不带该上下文。会话记录中会显示一条通知,指明该 hook、触发的超时时间,以及输出已被丢弃。1510除了使用 [`async: true`](#run-hooks-in-the-background) 运行的 command hook 之外,达到超时的 `UserPromptSubmit` command、HTTP 或 MCP 工具 hook 都会被取消,其输出(包括任何 `additionalContext`)会被丢弃。提示词仍会在没有该上下文的情况下传达给 Claude。若要改为阻止该提示词,请在 command 或 HTTP hook 上设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。会话记录中会显示一条通知,指明该 hook、触发的超时以及输出已被丢弃。

1423 1511 

1424`UserPromptSubmit` 上的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 达到超时时,会阻止该提示词,并显示一条指明该 hook 和超时时间的消息,因为此处的回调可能充当不能失败放行的策略关卡。会话会继续。在 v2.1.208 之前,该事件上的回调超时会以执行错误结束该轮次。1512`UserPromptSubmit` 上的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 达到超时时,会阻止该提示词,并显示一条指明该 hook 和超时时间的消息,因为此处的回调可能充当不能失败放行的策略关卡。会话会继续。在 v2.1.208 之前,该事件上的回调超时会以执行错误结束该轮次。

1425 1513 


1860| :- | :- | :- | :- |1948| :- | :- | :- | :- |

1861| `url` | string | `"https://example.com/api"` | 要获取内容的 URL |1949| `url` | string | `"https://example.com/api"` | 要获取内容的 URL |

1862| `prompt` | string | `"Extract the API endpoints"` | 对获取到的内容运行的提示词 |1950| `prompt` | string | `"Extract the API endpoints"` | 对获取到的内容运行的提示词 |

1951| `offset` | number | `100000` | 可选,从页面开头跳过的字符数。Claude 会设置它以继续读取较长的页面。需要 Claude Code v2.1.290 或更高版本 |

1863 1952 

1864<h5 id="websearch">1953<h5 id="websearch">

1865 WebSearch1954 WebSearch


2112| `message` | 仅用于 `"deny"`:告诉 Claude 权限被拒绝的原因 |2201| `message` | 仅用于 `"deny"`:告诉 Claude 权限被拒绝的原因 |

2113| `interrupt` | 仅用于 `"deny"`:如果为 `true`,则停止 Claude |2202| `interrupt` | 仅用于 `"deny"`:如果为 `true`,则停止 Claude |

2114 2203 

2115以 2 退出但不带 `decision` 对象的 hook 不会改变权限流程,其 stderr 会被丢弃。只有 `decision` 对象才能授予或拒绝请求。2204以退出码 2 退出但未提供 `decision` 对象的 hook 不会改变权限流程,其 stderr 会被丢弃。要授予或拒绝请求,请返回 `decision` 对象。

2116 2205 

2117```json theme={null}2206```json theme={null}

2118{2207{


2678 TaskCreated 决策控制2767 TaskCreated 决策控制

2679</h4>2768</h4>

2680 2769 

2681TaskCreated hook 可以通过两种方式阻止创建。无论哪种方式,Claude Code 都会删除该任务,并将您的消息作为工具错误返回给 Claude。Claude Code 会忽略此事件中的 `continue: false`,Claude 会继续工作。2770TaskCreated hook 可以通过退出码 2 或 JSON 决策来阻止创建。无论哪种方式,Claude Code 都会删除该任务,并将您的消息作为工具的错误返回给 Claude。Claude Code 会忽略来自此事件的 `continue: false`,Claude 会继续工作。

2682 2771 

2683* **退出码 2**:Claude Code 将 stderr 文本作为消息返回。2772* **退出码 2**:Claude Code 将 stderr 文本作为消息返回。

2684* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 将 `reason` 作为消息返回。2773* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 将 `reason` 作为消息返回。


3560 3649 

3561无论决策如何,Claude Code 都会向用户显示您的 hook 返回的任何 `systemMessage`,因此用于报告成本的 hook 可以返回 `{"systemMessage": "..."}` 并以 0 退出。3650无论决策如何,Claude Code 都会向用户显示您的 hook 返回的任何 `systemMessage`,因此用于报告成本的 hook 可以返回 `{"systemMessage": "..."}` 并以 0 退出。

3562 3651 

3563未在超时时间内响应的 PreModelSwitch hook 会阻止切换。相比之下,在 [PreToolUse](#timeouts) 上,超时的命令 hook 会让工具调用继续进行。此事件的默认超时时间为 30 秒。`PreModelSwitch` 仅运行 `command`、`http` 和 `mcp_tool` hook,因此 `prompt` 和 `agent` 的默认值不适用。3652在超时之前未响应的 PreModelSwitch hook 会阻止切换。关于超时对其他事件的影响,请参阅[超时](#timeouts)。此事件的默认超时时间为 30 秒。`PreModelSwitch` 仅运行 `command`、`http` 和 `mcp_tool` hook,因此 `prompt` 和 `agent` 的默认值不适用。

3564 3653 

3565以 0 或 2 以外的代码退出且未打印 JSON 决策的 hook 不会阻止切换:Claude Code 会显示其 stderr 并应用切换,如[其他退出码](#other-exit-codes)中所述。3654以 0 或 2 以外的代码退出且未打印 JSON 决策的 hook 属于非阻塞错误,如[其他退出码](#other-exit-codes)中所述。

3566 3655 

3567<h3 id="postmodelswitch">3656<h3 id="postmodelswitch">

3568 PostModelSwitch3657 PostModelSwitch


4278异步 hooks 与同步 hooks 相比有额外的约束:4367异步 hooks 与同步 hooks 相比有额外的约束:

4279 4368 

4280* Hook 输出在下一个对话轮次传递。如果会话空闲,响应等待直到下一个用户交互。例外:退出代码为 2 的 `asyncRewake` hook 即使在会话空闲时也会立即唤醒 Claude。4369* Hook 输出在下一个对话轮次传递。如果会话空闲,响应等待直到下一个用户交互。例外:退出代码为 2 的 `asyncRewake` hook 即使在会话空闲时也会立即唤醒 Claude。

4281* 每次执行创建一个单独的后台进程。同一异步 hook 的多个触发之间没有去重。4370* 每次执行创建一个单独的后台进程。

4282 4371 

4283<h2 id="security-considerations">4372<h2 id="security-considerations">

4284 安全考虑4373 安全考虑

hooks-guide.md +14 −11

Details

242 242 

243要测试 hook,请要求 Claude 向 JavaScript 文件添加一行带有单引号字符串的代码,然后打开该文件:使用 Prettier 的默认设置,hook 会将它们重写为双引号。243要测试 hook,请要求 Claude 向 JavaScript 文件添加一行带有单引号字符串的代码,然后打开该文件:使用 Prettier 的默认设置,hook 会将它们重写为双引号。

244 244 

245当 hook 成功时,Claude Code 在对话中不显示任何内容。要确认 hook 已运行,请检查编辑的文件是否已重新格式化,或参阅[调试技术](#debug-techniques)。245当 hook 成功时,Claude Code 在对话中不显示任何内容。要确认 hook 已运行,请检查编辑的文件是否已重新格式化,或参阅[检查 hook 执行了什么](#check-what-a-hook-did)。

246 246 

247要重新格式化特定文件,无论它如何更改,包括当 `Bash` 命令重写它时,请改用 [FileChanged](/docs/zh-CN/hooks#filechanged) hook。247要重新格式化特定文件,无论它如何更改,包括当 `Bash` 命令重写它时,请改用 [FileChanged](/docs/zh-CN/hooks#filechanged) hook。

248 248 


979}979}

980```980```

981 981 

982端点应使用与命令 hooks 相同的 [输出格式](/docs/zh-CN/hooks#json-output) 返回 JSON 响应体。要阻止工具调用,返回 2xx 响应,包含适当的 `hookSpecificOutput` 字段。HTTP 状态代码本身无法阻止操作。982您的端点使用与命令 hook 相同的[输出格式](/docs/zh-CN/hooks#json-output)返回 JSON 响应体,Claude Code 还会检查响应状态:

983 

984* **2xx 状态**:要阻止工具调用,请在响应体中返回相应的 `hookSpecificOutput` 字段。

985* **任何其他状态,或请求失败**:Claude Code 会报告[非阻塞错误](/docs/zh-CN/hooks#exit-code-output)并允许操作继续。要让失败的端点阻止该操作,请在 hook 上设置 [`onFailure: "block"`](/docs/zh-CN/hooks#block-the-action-when-a-hook-fails)。

983 986 

984标头值支持使用 `$VAR_NAME` 或 `${VAR_NAME}` 语法的环境变量插值。仅解析 `allowedEnvVars` 数组中列出的变量;所有其他 `$VAR` 引用保持为空。987标头值支持使用 `$VAR_NAME` 或 `${VAR_NAME}` 语法的环境变量插值。仅解析 `allowedEnvVars` 数组中列出的变量;所有其他 `$VAR` 引用保持为空。

985 988 


1103 1106 

1104当你的 hook 返回 `permissionDecision` 或 `additionalContext` 在顶级而不是在 `hookSpecificOutput` 内部时,JSON 仍然解析,Claude Code 忽略错误放置的字段而不报告错误。要查看它忽略了哪些字段,使用 `claude --debug` 启动 Claude Code 并在[调试日志](/docs/zh-CN/hooks#debug-hooks)中搜索 `Hook JSON output had unrecognized keys`。1107当你的 hook 返回 `permissionDecision` 或 `additionalContext` 在顶级而不是在 `hookSpecificOutput` 内部时,JSON 仍然解析,Claude Code 忽略错误放置的字段而不报告错误。要查看它忽略了哪些字段,使用 `claude --debug` 启动 Claude Code 并在[调试日志](/docs/zh-CN/hooks#debug-hooks)中搜索 `Hook JSON output had unrecognized keys`。

1105 1108 

1106<h3 id="debug-techniques">1109<h3 id="check-what-a-hook-did">

1107 调试技术1110 检查 hook 的执行结果

1108</h3>1111</h3>

1109 1112 

1110按 `Ctrl+O` 打开成绩单视图以检查 hook 运行的结果:1113按 `Ctrl+O` 打开会话记录视图,查找 hook 的结果:

1111 1114 

1112* **成功运行**:你看不到任何内容,除非 hook 的 JSON 显示某些内容,例如 `systemMessage` 或 Stop hook 反馈。1115* **成功**:您看不到任何内容,除非 hook 的 JSON 显示了某些内容,例如 `systemMessage` 或 Stop hook 反馈。

1113 * 要确认 hook 已运行,检查其效果,例如重新格式化的文件,或按如下所述打开调试日志并再次触发 hook1116 * 要确认 hook 已运行,请检查其效果,例如被重新格式化的文件

1114* **阻止错误**:在大多数事件上,你会看到 hook 的反馈。当 hook 的 JSON 做出阻止决策时,反馈是该决策的原因;否则它是 hook 的 stderr。在少数事件上,例如 `ConfigChange` 和 `Elicitation`,阻止不会显示消息。1117* **阻止错误**:在大多数事件上,您会看到随阻止一起返回的消息,例如 `Blocked: rm commands are not allowed`。在少数事件上,例如 `ConfigChange` 和 `Elicitation`,您不会看到消息。[退出码 2](/docs/zh-CN/hooks#exit-code-2) 介绍了该消息的来源。

1115* **非阻止错误**:操作继续进行,你会看到 `<hook name> hook error` 通知,其中包含简短说明,例如 stderr 的第一行,前缀为 `Failed with non-blocking status code:`,或 JSON 验证或解析消息。1118* **非阻止错误**:您会看到 `<hook name> hook error` 通知,其中包含简短说明,例如 `Failed with non-blocking status code:` 之后的 stderr 第一行,或 JSON 验证或解析消息。操作会继续进行。

1116 1119 

1117哪些退出代码和 JSON 组合产生每个结果,包括每个事件的例外,在参考的[退出代码输出](/docs/zh-CN/hooks#exit-code-output)部分中定义。1120要查询特定退出码和 stdout 对应的结果(包括各事件的例外情况),请参阅参考文档中的[退出码输出](/docs/zh-CN/hooks#exit-code-output)。

1118 1121 

1119有关完整的执行详情,包括哪些 hooks 匹配、它们的退出代码、stdout 和 stderr,请阅读调试日志。使用 `claude --debug-file /tmp/claude.log` 启动 Claude Code 以写入已知路径,然后在另一个终端中 `tail -f /tmp/claude.log`。如果你启动时没有该标志,在会话中运行 `/debug` 以启用日志记录并找到日志路径。1122有关完整的执行详情,包括 hook 的退出码、stdout 和 stderr,请阅读调试日志。使用 `claude --debug-file /tmp/claude.log` 启动 Claude Code 以写入已知路径,然后在另一个终端中运行 `tail -f /tmp/claude.log`。如果您启动时没有使用该标志,请在会话中运行 `/debug` 以启用日志记录并找到日志路径。

1120 1123 

1121<h2 id="learn-more">1124<h2 id="learn-more">

1122 了解更多1125 了解更多

Details

216| `^` | 第一个非空白字符 |216| `^` | 第一个非空白字符 |

217| `gg` | 输入开始 |217| `gg` | 输入开始 |

218| `G` | 最后一行的行首 |218| `G` | 最后一行的行首 |

219| `f{char}` | 跳转到下一个字符出现位置 |219| `f{char}` | 跳转到当前行中该字符的下一个出现位置 |

220| `F{char}` | 跳转到上一个字符出现位置 |220| `F{char}` | 跳转到当前行中该字符的上一个出现位置 |

221| `t{char}` | 跳转到下一个字符出现位置之前 |221| `t{char}` | 跳转到当前行中该字符的下一个出现位置之前 |

222| `T{char}` | 跳转到上一个字符出现位置之后 |222| `T{char}` | 跳转到当前行中该字符的上一个出现位置之后 |

223| `;` | 重复上一个 f/F/t/T 动作 |223| `;` | 重复上一个 f/F/t/T 动作 |

224| `,` | 反向重复上一个 f/F/t/T 动作 |224| `,` | 反向重复上一个 f/F/t/T 动作 |

225| `/` | 打开反向历史搜索,与 `Ctrl+R` 相同。空搜索提示显示提示:按 `Esc` 然后 `i` 然后 `/` 来打开命令菜单 |225| `/` | 打开反向历史搜索,与 `Ctrl+R` 相同。空搜索提示显示提示:按 `Esc` 然后 `i` 然后 `/` 来打开命令菜单 |


239| `dd` | 删除行 |239| `dd` | 删除行 |

240| `D` | 删除到行尾 |240| `D` | 删除到行尾 |

241| `dw`/`de`/`db` | 删除单词/到末尾/向后 |241| `dw`/`de`/`db` | 删除单词/到末尾/向后 |

242| `df{char}`/`dt{char}` | 删除到并包括,或删除到下一个字符出现位置 |242| `df{char}`/`dt{char}` | 删除到当前行中该字符的下一个出现位置(包括或不包括该字符) |

243| `dj`/`dk` | 删除当前行和下方或上方的行 |243| `dj`/`dk` | 删除当前行和下方或上方的行 |

244| `dgg`/`dG` | 从当前行删除到第一行或最后一行 |244| `dgg`/`dG` | 从当前行删除到第一行或最后一行 |

245| `d0`/`c0`/`y0` | 从光标删除、更改或复制回行首。需要 Claude Code v2.1.281 或更高版本 |245| `d0`/`c0`/`y0` | 从光标删除、更改或复制回行首。需要 Claude Code v2.1.281 或更高版本 |


852 问题参考链接852 问题参考链接

853</h2>853</h2>

854 854 

855当 Claude 提到一个问题为 `owner/repo#123` 时,只要你的终端支持超链接,你就可以点击该参考来打开它。如果 Claude Code 没有检测到你的终端支持超链接,请设置 [`FORCE_HYPERLINK`](/docs/zh-CN/env-vars) 为 `1` 来打开链接,或设置为 `0` 来保持参考为纯文本。855当 Claude 以 `owner/repo#123` 的形式提到一个问题时,只要您的终端支持超链接,您就可以点击该参考来打开它。如果 Claude Code 没有检测到您的终端支持超链接,请将 [`FORCE_HYPERLINK`](/docs/zh-CN/env-vars) 设置为 `1` 来启用链接,或设置为 `0` 来保持参考为纯文本。

856 856 

857你只能获得两部分 `owner/repo#123` 形式的链接。这些保持为纯文本:857只有两部分的 `owner/repo#123` 形式才会生成链接。以下情况保持为纯文本:

858 858 

859* 一个单独的 `#123`859* 单独的 `#123`

860* 一个嵌套的 GitLab 路径,例如 `group/subgroup/project#123`860* 嵌套的 GitLab 路径,例如 `group/subgroup/project#123`

861* 代码跨度或代码块内的任何参考861* 代码跨度或代码块内的任何参考

862* 长度超过约 1,000 行或 100,000 个字符的回复中的任何参考

862 863 

863Claude Code 根据它从你的 git remote 识别的仓库主机来构建链接,而不是根据参考命名的仓库:864Claude Code 根据它从您的 git remote 识别出的仓库主机来构建链接,而不是根据参考所指定的仓库:

864 865 

865| 你的仓库的主机 | `owner/repo#123` 链接到 |866| 您的仓库的主机 | `owner/repo#123` 链接到 |

866| :- | :- |867| :- | :- |

867| github.com、GitHub Enterprise 主机或下面未列出的任何主机 | `https://<host>/owner/repo/issues/123` |868| github.com、GitHub Enterprise 主机或下面未列出的任何主机 | `https://<host>/owner/repo/issues/123` |

868| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |869| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |

jetbrains.md +8 −4

Details

55 使用55 使用

56</h2>56</h2>

57 57 

58<h3 id="from-your-ide">58<span id="from-your-ide" />

59 从您的 IDE59 

60<h3 id="run-claude-code-from-your-ide">

61 从您的 IDE 运行 Claude Code

60</h3>62</h3>

61 63 

62从 IDE 的集成终端运行 `claude`,所有集成功能都将处于活跃状态。64从 IDE 的集成终端运行 `claude`,所有集成功能都将处于活跃状态。

63 65 

64<h3 id="from-external-terminals">66<span id="from-external-terminals" />

65 从外部终端67 

68<h3 id="connect-from-an-external-terminal">

69 从外部终端连接

66</h3>70</h3>

67 71 

68在任何外部终端中使用 `/ide` 命令将 Claude Code 连接到您的 JetBrains IDE 并激活所有功能:72在任何外部终端中使用 `/ide` 命令将 Claude Code 连接到您的 JetBrains IDE 并激活所有功能:

Details

79 79 

80Jamf、Iru、Intune 和组策略的入门模板在[MDM 示例存储库](https://github.com/anthropics/claude-code/tree/main/examples/mdm)中。80Jamf、Iru、Intune 和组策略的入门模板在[MDM 示例存储库](https://github.com/anthropics/claude-code/tree/main/examples/mdm)中。

81 81 

82如果您的组织已应用 [HIPAA 配置](/docs/zh-CN/hipaa-setup#deploy-managed-settings),请参阅[设置示例仓库](https://github.com/anthropics/claude-code/tree/main/examples/settings)中的 `settings-hipaa.json` 和 `README-hipaa.md`,获取更完整的 `managed-settings.json`,其中包含沙箱隔离、网络允许列表、凭据保护和本地数据保留。

83 

82对于托管 MCP 服务器,您通过 `managed-mcp.json` 与这些中的任何一个一起部署或通过 [`managedMcpServers`](/docs/zh-CN/settings-reference#managedmcpservers) 密钥提供,请参阅[托管 MCP 配置](/docs/zh-CN/managed-mcp)。84对于托管 MCP 服务器,您通过 `managed-mcp.json` 与这些中的任何一个一起部署或通过 [`managedMcpServers`](/docs/zh-CN/settings-reference#managedmcpservers) 密钥提供,请参阅[托管 MCP 配置](/docs/zh-CN/managed-mcp)。

83 85 

84<h3 id="where-and-when-a-policy-applies">86<h3 id="where-and-when-a-policy-applies">

mcp.md +18 −10

Details

181 181 

182每一个都是 [安装 MCP 服务器](#installing-mcp-servers) 中四个选项之一接受的输入。找到您下面拥有的形状,将其转换为 Claude Code 接受的命令。除非您添加 `--scope project` 或 `--scope user`,否则每个命令都写入 [本地作用域](#local-scope)。182每一个都是 [安装 MCP 服务器](#installing-mcp-servers) 中四个选项之一接受的输入。找到您下面拥有的形状,将其转换为 Claude Code 接受的命令。除非您添加 `--scope project` 或 `--scope user`,否则每个命令都写入 [本地作用域](#local-scope)。

183 183 

184<h4 id="from-a-url">184<span id="from-a-url" />

185 从 URL185 

186<h4 id="add-a-server-from-a-url">

187 从 URL 添加服务器

186</h4>188</h4>

187 189 

188URL 表示服务器是远程的。对于 `https://` 端点,使用 `--transport http` 添加它,或在说明说端点使用 SSE 时遵循 [选项 2](#option-2-add-a-remote-sse-server)。对于 `wss://` 端点,改为使用 [选项 4](#option-4-add-a-remote-websocket-server),因为 `--transport` 不接受 `ws`:190URL 表示服务器是远程的。对于 `https://` 端点,使用 `--transport http` 添加它,或在说明说端点使用 SSE 时遵循 [选项 2](#option-2-add-a-remote-sse-server)。对于 `wss://` 端点,改为使用 [选项 4](#option-4-add-a-remote-websocket-server),因为 `--transport` 不接受 `ws`:


193 195 

194如果说明还提供 API 密钥或令牌标头,请使用 `--header` 传递它,如 [选项 1](#option-1-add-a-remote-http-server) 所示。196如果说明还提供 API 密钥或令牌标头,请使用 `--header` 传递它,如 [选项 1](#option-1-add-a-remote-http-server) 所示。

195 197 

196<h4 id="from-an-npx-uvx-or-binary-command">198<span id="from-an-npx-uvx-or-binary-command" />

197 从 `npx`、`uvx` 或二进制命令199 

200<h4 id="add-a-server-from-an-npx-uvx-or-binary-command">

201 从 `npx`、`uvx` 或二进制命令添加服务器

198</h4>202</h4>

199 203 

200启动命令表示服务器作为本地 stdio 进程运行。将整个命令放在 `--` 之后,以便 Claude Code 将标志(如 `-y`)传递给启动服务器的命令,而不是将它们读取为自己的选项。使用 `--env` 传递说明要求的任何环境变量,在服务器名称之后和 `--` 之前:204启动命令表示服务器作为本地 stdio 进程运行。将整个命令放在 `--` 之后,以便 Claude Code 将标志(如 `-y`)传递给启动服务器的命令,而不是将它们读取为自己的选项。使用 `--env` 传递说明要求的任何环境变量,在服务器名称之后和 `--` 之前:


205 209 

206[选项 3](#option-3-add-a-local-stdio-server) 完整涵盖 `--` 分隔符。210[选项 3](#option-3-add-a-local-stdio-server) 完整涵盖 `--` 分隔符。

207 211 

208<h4 id="from-an-mcpservers-json-block">212<span id="from-an-mcpservers-json-block" />

209 从 `mcpServers` JSON 块213 

214<h4 id="add-a-server-from-an-mcpservers-json-block">

215 从 `mcpServers` JSON 块添加服务器

210</h4>216</h4>

211 217 

212为另一个 MCP 客户端(例如 Claude Desktop)编写的 `mcpServers` 块使用 Claude Code 读取的包装器键和条目形状。将 `mcpServers` 内的对象(而不是包装器)传递给 `claude mcp add-json`。两种条目需要先修复:218为另一个 MCP 客户端(例如 Claude Desktop)编写的 `mcpServers` 块使用 Claude Code 读取的包装器键和条目形状。将 `mcpServers` 内的对象(而不是包装器)传递给 `claude mcp add-json`。两种条目需要先修复:


367 373 

368在 v2 上,Claude Code 还会:374在 v2 上,Claude Code 还会:

369 375 

370* 询问 HTTP 和 stdio 服务器是否支持较新的修订版,并与支持的服务器一起使用它。在获取功能标志的会话中,它还会询问 claude.ai 连接器服务器。它与 v1 一样连接到其他所有服务器。376* 询问 HTTP、stdio 和 claude.ai 连接器服务器是否支持较新的修订版,并与支持的服务器一起使用它。它与 v1 一样连接到其他所有服务器。

371* 通过 [它保持打开的流](#notification-streams-on-the-v2-runtime) 从使用较新修订版的服务器接收 `list_changed` 通知。377* 通过 [它保持打开的流](#notification-streams-on-the-v2-runtime) 从使用较新修订版的服务器接收 `list_changed` 通知。

372* 不注册在较新修订版上连接的 [频道](#push-messages-with-channels) 服务器,因为该修订版无法携带频道消息。378* 不注册在较新修订版上连接的 [频道](#push-messages-with-channels) 服务器,因为该修订版无法携带频道消息。

373* 当授权响应指明意外的发行者时,使 [MCP OAuth 登录](#authenticate-with-remote-mcp-servers) 失败。379* 当授权响应指明意外的发行者时,使 [MCP OAuth 登录](#authenticate-with-remote-mcp-servers) 失败。


891 从命令行进行身份验证897 从命令行进行身份验证

892</h3>898</h3>

893 899 

894`claude mcp login <name>` 命令直接从您的 shell 运行配置的服务器的 OAuth 流程,因此您不需要在会话内打开 `/mcp` 面板。900`claude mcp login <name>` 命令直接从您的 shell 运行配置的服务器的 OAuth 流程,因此您不需要在会话内打开 `/mcp` 面板。对于 claude.ai 连接器,请按照 [从 shell 再次授权连接器](/docs/zh-CN/remote-control#authorize-a-connector-again-from-your-shell) 操作。

895 901 

896```bash theme={null}902```bash theme={null}

897claude mcp login sentry903claude mcp login sentry


1581 工具搜索在 Microsoft Foundry [部署在 Azure 上的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上不受支持,这些部署在服务器端拒绝它:Claude Code 检测到拒绝并为该部署改为预先加载 MCP 工具。[`ENABLE_TOOL_SEARCH`](#configure-tool-search) 无法覆盖此设置,因为拒绝来自部署本身。1587 工具搜索在 Microsoft Foundry [部署在 Azure 上的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上不受支持,这些部署在服务器端拒绝它:Claude Code 检测到拒绝并为该部署改为预先加载 MCP 工具。[`ENABLE_TOOL_SEARCH`](#configure-tool-search) 无法覆盖此设置,因为拒绝来自部署本身。

1582</Note>1588</Note>

1583 1589 

1584<h3 id="for-mcp-server-authors">1590<span id="for-mcp-server-authors" />

1585 对于 MCP 服务器作者1591 

1592<h3 id="tool-search-for-mcp-server-authors">

1593 面向 MCP 服务器作者的工具搜索

1586</h3>1594</h3>

1587 1595 

1588如果您正在构建 MCP 服务器,启用工具搜索后,服务器说明字段会变得更加有用。服务器说明帮助 Claude 理解何时搜索您的工具,类似于 [skills](/docs/zh-CN/skills) 的工作方式。1596如果您正在构建 MCP 服务器,启用工具搜索后,服务器说明字段会变得更加有用。服务器说明帮助 Claude 理解何时搜索您的工具,类似于 [skills](/docs/zh-CN/skills) 的工作方式。

Details

599 599 

600在通过 `/login` 登录到[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)的会话中,CLI 会使用已认证身份标记导出:`user.id` 是 IdP 主体,`user.email` 是已登录的电子邮件,`user.groups` 以逗号分隔的字符串形式携带 IdP 组成员身份。每个导出还携带 `identity.source: gateway-oidc`。网关身份最后应用,因此通过 `OTEL_RESOURCE_ATTRIBUTES` 设置的 `user.*` 和 `identity.*` 键在这些会话上被忽略。600在通过 `/login` 登录到[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)的会话中,CLI 会使用已认证身份标记导出:`user.id` 是 IdP 主体,`user.email` 是已登录的电子邮件,`user.groups` 以逗号分隔的字符串形式携带 IdP 组成员身份。每个导出还携带 `identity.source: gateway-oidc`。网关身份最后应用,因此通过 `OTEL_RESOURCE_ATTRIBUTES` 设置的 `user.*` 和 `identity.*` 键在这些会话上被忽略。

601 601 

602<Note>

603 Claude Code 在开发者登录之前记录的事件不携带网关身份。当 Claude Code 以未登录网关的状态打开会话时(例如在[网关结束登录](/docs/zh-CN/errors#cloud-gateway-session-expired)之后),登录前记录的启动事件会携带匿名 `user.id`,且不含 `identity.source`。这些事件包括 [`managed_settings_resolved`](#managed-settings-resolved-event)、[`plugin_loaded`](#plugin-loaded-event) 和 [`mcp_server_connection`](#mcp-server-connection-event)。

604</Note>

605 

602对于通过网关连接的 Claude Desktop 和 Cowork 会话上的身份属性,请参阅[网关 `telemetry` 参考](/docs/zh-CN/claude-apps-gateway-config#telemetry)。606对于通过网关连接的 Claude Desktop 和 Cowork 会话上的身份属性,请参阅[网关 `telemetry` 参考](/docs/zh-CN/claude-apps-gateway-config#telemetry)。

603 607 

604事件另外包括以下属性。这些永远不会附加到指标,因为它们会导致无限的基数:608事件另外包括以下属性。这些永远不会附加到指标,因为它们会导致无限的基数:


917* `error`:错误消息921* `error`:错误消息

918* `status_code`:HTTP 状态代码作为数字。对于非 HTTP 错误(如连接失败)不存在。922* `status_code`:HTTP 状态代码作为数字。对于非 HTTP 错误(如连接失败)不存在。

919* `duration_ms`:请求持续时间(以毫秒为单位)923* `duration_ms`:请求持续时间(以毫秒为单位)

920* `attempt`:进行的总尝试次数,包括初始请求(`1` 表示没有重试发生)924* `attempt`:已进行的尝试次数,包括初始请求。[检测重试耗尽](#detect-retry-exhaustion)说明了计数何时重新开始

921* `request_id`:API 请求 ID,例如 `"req_011..."`,在[事件关联属性](#event-correlation-attributes)下描述。925* `request_id`:API 请求 ID,例如 `"req_011..."`,在[事件关联属性](#event-correlation-attributes)下描述。

922* `client_request_id`:作为 `x-client-request-id` 请求头发送的客户端生成的 UUID。即使在超时或连接错误等失败从未产生服务器 `request_id` 时也可用;请参阅[事件关联属性](#event-correlation-attributes)表了解何时存在。需要 Claude Code v2.1.214 或更高版本926* `client_request_id`:作为 `x-client-request-id` 请求头发送的客户端生成的 UUID。即使在超时或连接错误等失败从未产生服务器 `request_id` 时也可用;请参阅[事件关联属性](#event-correlation-attributes)表了解何时存在。需要 Claude Code v2.1.214 或更高版本

923* `speed`:`"fast"` 或 `"normal"`,指示快速模式是否活跃927* `speed`:`"fast"` 或 `"normal"`,指示快速模式是否活跃


1190 1194 

1191当 Claude Code 解析提示中的 `@` 提及时记录。并非每个提及都发出事件:早期退出路径如权限拒绝、超大文件、PDF 参考附件和目录列表失败返回而不记录。1195当 Claude Code 解析提示中的 `@` 提及时记录。并非每个提及都发出事件:早期退出路径如权限拒绝、超大文件、PDF 参考附件和目录列表失败返回而不记录。

1192 1196 

1197每次 Claude Code 读取提示词时,对于 `mention_type` 为 `"agent"` 的事件最多记录 100 个,对于 `"mcp_resource"` 也最多记录 100 个。超出任一限制的提及仍会被解析,但不会发出事件。

1198 

1193**事件名称**:`claude_code.at_mention`1199**事件名称**:`claude_code.at_mention`

1194 1200 

1195**属性**:1201**属性**:


1528 1534 

1529Claude Code 在内部重试失败的 API 请求,仅在放弃后才发出单个 `claude_code.api_error` 事件,因此事件本身是该请求的终端信号。中间重试尝试不会作为单独的事件记录。1535Claude Code 在内部重试失败的 API 请求,仅在放弃后才发出单个 `claude_code.api_error` 事件,因此事件本身是该请求的终端信号。中间重试尝试不会作为单独的事件记录。

1530 1536 

1531事件上的 `attempt` 属性记录进行的总尝试次数。`CLAUDE_CODE_MAX_RETRIES` 默认为 10,上限为 15。在 v2.1.199 或更高版本上,您可以设置 `CLAUDE_CODE_RETRY_WATCHDOG` 来提高默认值并移除上限。1537事件上的 `attempt` 属性记录尝试次数。`CLAUDE_CODE_MAX_RETRIES` 默认为 10,上限为 15。在 v2.1.199 或更高版本上,您可以设置 `CLAUDE_CODE_RETRY_WATCHDOG` 来提高默认值并移除上限。

1532 1538 

1533当请求在瞬时错误上耗尽所有重试时,`attempt` 等于该有效限制加一:默认为 11,除非设置了看门狗,否则永远不超过 16。较低的值表示不可重试的错误,例如 `400` 响应,或具有自己较小重试预算的原因。例如,Claude Code 最多重试两次加载 AWS 或 Google Cloud 凭证的失败。1539当请求在瞬时错误上耗尽所有重试时,`attempt` 最多等于该有效限制加一:默认为 11。

1540 

1541较低的值仍可能表示重试已耗尽:每次 Claude Code 在流式传输失败后重新发出请求时,`attempt` 都会从 `1` 重新开始计数。

1534 1542 

1535要区分从一个恢复的会话与停滞的会话,按 `session.id` 分组事件,并检查错误后是否存在更晚的 `api_request` 事件。1543要区分从一个恢复的会话与停滞的会话,按 `session.id` 分组事件,并检查错误后是否存在更晚的 `api_request` 事件。

1536 1544 


1699 1707 

1700您选择的指标、日志和跟踪后端决定了您可以执行的分析类型:1708您选择的指标、日志和跟踪后端决定了您可以执行的分析类型:

1701 1709 

1702<h3 id="for-metrics">1710<span id="for-metrics" />

1703 对于指标1711 

1712<h3 id="backends-for-metrics">

1713 用于指标的后端

1704</h3>1714</h3>

1705 1715 

1706* **时间序列数据库**:速率计算、聚合指标1716* **时间序列数据库**:速率计算、聚合指标

1707* **列式存储**:复杂查询、唯一用户分析1717* **列式存储**:复杂查询、唯一用户分析

1708* **全功能可观测性平台**:高级查询、可视化、警报1718* **全功能可观测性平台**:高级查询、可视化、警报

1709 1719 

1710<h3 id="for-events/logs">1720<span id="for-events/logs" />

1711 对于事件/日志1721 

1722<h3 id="backends-for-events-and-logs">

1723 用于事件和日志的后端

1712</h3>1724</h3>

1713 1725 

1714* **日志聚合系统**:全文搜索、日志分析1726* **日志聚合系统**:全文搜索、日志分析

1715* **列式存储**:结构化事件分析1727* **列式存储**:结构化事件分析

1716* **全功能可观测性平台**:指标和事件之间的关联1728* **全功能可观测性平台**:指标和事件之间的关联

1717 1729 

1718<h3 id="for-traces">1730<span id="for-traces" />

1719 对于跟踪1731 

1732<h3 id="backends-for-traces">

1733 用于跟踪的后端

1720</h3>1734</h3>

1721 1735 

1722选择支持分布式跟踪存储和 span 关联的后端:1736选择支持分布式跟踪存储和 span 关联的后端:

Details

91| `-y, --yes` | 接受显示的安装命令,不出现 `Run this command now?` 提示。在 Claude Code 会话内运行命令时(例如从 Bash 工具或 hook 运行)会被忽略。需要 Claude Code v2.1.229 或更高版本 |91| `-y, --yes` | 接受显示的安装命令,不出现 `Run this command now?` 提示。在 Claude Code 会话内运行命令时(例如从 Bash 工具或 hook 运行)会被忽略。需要 Claude Code v2.1.229 或更高版本 |

92| `--accept-command <sha256>` | 代替 `-y`,接受之前某次 [`--json` 运行](#plugin-json-result)在 `shownCommand` 中报告了其 `sha256` 的显示安装命令。不能与 `-y` 组合使用。请参阅[接受显示的安装命令](#accept-a-displayed-install-command)。需要 Claude Code v2.1.271 或更高版本 |92| `--accept-command <sha256>` | 代替 `-y`,接受之前某次 [`--json` 运行](#plugin-json-result)在 `shownCommand` 中报告了其 `sha256` 的显示安装命令。不能与 `-y` 组合使用。请参阅[接受显示的安装命令](#accept-a-displayed-install-command)。需要 Claude Code v2.1.271 或更高版本 |

93| `--json` | 将结果作为一个 JSON 对象打印在 stdout 的最后一行,而不是人类可读的消息,供脚本使用。请参阅 [JSON 结果格式](#plugin-json-result)。需要 Claude Code v2.1.268 或更高版本 |93| `--json` | 将结果作为一个 JSON 对象打印在 stdout 的最后一行,而不是人类可读的消息,供脚本使用。请参阅 [JSON 结果格式](#plugin-json-result)。需要 Claude Code v2.1.268 或更高版本 |

94| `--marketplace <source>` | 从位于 `<source>` 的市场安装以裸名称指定的 `<plugin>`,如果您尚未添加该市场,则先添加它。请参阅[通过一条命令添加市场并安装](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command)。需要 Claude Code v2.1.292 或更高版本 |

94 95 

95在 shell 中运行 `claude plugin install --help`,可查看您的版本支持的所有选项。96在 shell 中运行 `claude plugin install --help`,可查看您的版本支持的所有选项。

96 97 

Details

185 185 

186您可以通过三种方式为单个会话加载插件:使用 `--plugin-dir` 从磁盘上的目录或 `.zip` 存档,使用 `--plugin-url` 从 URL,或从环境变量(当您无法添加标志时)。每个插件仅为该会话加载,不会为其写入任何内容到您的设置中。当您在会话期间编辑插件的文件时,运行 `/reload-plugins` 以加载更改。186您可以通过三种方式为单个会话加载插件:使用 `--plugin-dir` 从磁盘上的目录或 `.zip` 存档,使用 `--plugin-url` 从 URL,或从环境变量(当您无法添加标志时)。每个插件仅为该会话加载,不会为其写入任何内容到您的设置中。当您在会话期间编辑插件的文件时,运行 `/reload-plugins` 以加载更改。

187 187 

188<h4 id="from-a-directory-or-zip">188<span id="from-a-directory-or-zip" />

189 从目录或 `.zip`189 

190<h4 id="load-a-plugin-from-a-directory-or-zip">

191 从目录或 `.zip` 加载插件

190</h4>192</h4>

191 193 

192当您从 shell 启动 `claude` 时,使用插件的根目录或其 `.zip` 存档传递 `--plugin-dir`。重复该标志以加载多个插件:194当您从 shell 启动 `claude` 时,使用插件的根目录或其 `.zip` 存档传递 `--plugin-dir`。重复该标志以加载多个插件:


196```198```

197 199 

198<h4 id="load-a-folder-of-plugins">200<h4 id="load-a-folder-of-plugins">

199 从插件文件夹201 加载插件文件夹

200</h4>202</h4>

201 203 

202要从一个地方加载多个插件,请传递一个包含它们的文件夹,例如 `--plugin-dir ./plugins`。加载插件文件夹需要 Claude Code v2.1.265 或更高版本。204要从一个地方加载多个插件,请传递一个包含它们的文件夹,例如 `--plugin-dir ./plugins`。加载插件文件夹需要 Claude Code v2.1.265 或更高版本。


212 214 

213会话中会为这些更改中的每一个显示一条消息。如果在对话中间加载或卸载插件会[使提示缓存失效](/docs/zh-CN/prompt-caching#enabling-or-disabling-a-plugin),则更改会被保留,消息会告诉您运行 `/reload-plugins` 以应用它。215会话中会为这些更改中的每一个显示一条消息。如果在对话中间加载或卸载插件会[使提示缓存失效](/docs/zh-CN/prompt-caching#enabling-or-disabling-a-plugin),则更改会被保留,消息会告诉您运行 `/reload-plugins` 以应用它。

214 216 

215<h4 id="fetch-an-archive-from-a-url-for-one-session">217<span id="fetch-an-archive-from-a-url-for-one-session" />

216 从 URL218 

219<h4 id="load-a-plugin-from-a-url">

220 从 URL 加载插件

217</h4>221</h4>

218 222 

219当您从 shell 启动 `claude` 时,使用 `.zip` 存档的地址传递 `--plugin-url`,例如您的 CI 发布的构建工件:223当您从 shell 启动 `claude` 时,使用 `.zip` 存档的地址传递 `--plugin-url`,例如您的 CI 发布的构建工件:


228 232 

229如果 Claude Code 无法获取存档或存档无效,它会在没有插件的情况下启动,并记录一个插件加载错误,您可以在 `/plugin` 管理器的**错误**选项卡中查看。233如果 Claude Code 无法获取存档或存档无效,它会在没有插件的情况下启动,并记录一个插件加载错误,您可以在 `/plugin` 管理器的**错误**选项卡中查看。

230 234 

231<h4 id="from-an-environment-variable">235<span id="from-an-environment-variable" />

232 从环境变量236 

237<h4 id="load-plugins-from-an-environment-variable">

238 从环境变量加载插件

233</h4>239</h4>

234 240 

235要在无法添加 `--plugin-dir` 标志的会话中加载插件,请在 [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/zh-CN/env-vars#variables) 环境变量中列出它们的绝对路径。Claude Code 将每个路径作为 `--plugin-dir` 路径加载。这些插件除了您使用 `--plugin-dir` 传递的任何插件外还会加载。[项目和本地设置无法设置此变量](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)。`CLAUDE_CODE_PLUGIN_DIRS` 需要 Claude Code v2.1.280 或更高版本。241要在无法添加 `--plugin-dir` 标志的会话中加载插件,请在 [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/zh-CN/env-vars#variables) 环境变量中列出它们的绝对路径。Claude Code 将每个路径作为 `--plugin-dir` 路径加载。这些插件除了您使用 `--plugin-dir` 传递的任何插件外还会加载。[项目和本地设置无法设置此变量](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)。`CLAUDE_CODE_PLUGIN_DIRS` 需要 Claude Code v2.1.280 或更高版本。

Details

413 用户如何接受 headersHelper 命令413 用户如何接受 headersHelper 命令

414</h3>414</h3>

415 415 

416用户每次自己安装或更新该一个插件时接受插件条目的命令。他们从 `/plugin` 中的插件自己的视图或使用 `claude plugin install` 或 `claude plugin update` 执行此操作。Claude Code 显示命令和存档 URL,并仅在用户接受后运行命令。416用户每次单独安装或更新该插件时,都需要接受插件条目的命令。Claude Code 会显示命令和存档 URL,并仅在用户接受后运行命令。

417 

418用户可以在终端中的 Claude Code 会话内、在未运行会话的 shell 中,或在 VS Code 扩展中安装或更新插件:

419 

420* **终端会话**:从 `/plugin` 中该插件自己的视图。

421* **Shell**:使用 `claude plugin install` 或 `claude plugin update`。

422* **VS Code 扩展**:从 [**Manage plugins** 对话框](/docs/zh-CN/vs-code#manage-plugins),需要扩展版本 2.1.290 或更高版本。

417 423 

418在非交互式 shell 中,传递 [`--yes`](/docs/zh-CN/plugins/cli-reference#plugin-install) 以接受命令。要仅接受之前 `--json` 运行显示的命令,传递 [`--accept-command`](/docs/zh-CN/plugins/cli-reference#plugin-install) 与运行报告的 `sha256`。424在非交互式 shell 中,传递 [`--yes`](/docs/zh-CN/plugins/cli-reference#plugin-install) 以接受命令。要仅接受之前 `--json` 运行显示的命令,传递 [`--accept-command`](/docs/zh-CN/plugins/cli-reference#plugin-install) 与运行报告的 `sha256`。

419 425 

420Claude Code 仅运行它显示的命令,对于它显示的存档 URL。如果条目的命令或存档 URL 在中间改变,Claude Code 拒绝安装或更新。查询字符串中的更改单独不计数。426Claude Code 仅针对它显示的存档 URL 运行它显示的命令。如果条目的命令或存档 URL 在此期间发生了变化,Claude Code 会拒绝安装或更新。仅查询字符串的更改不计在内,但在 VS Code 扩展中或使用 `--accept-command` 时除外。

421 427 

422<h3 id="installs-and-updates-that-refuse-the-command-instead-of-asking">428<h3 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

423 拒绝命令而不是询问的安装和更新429 拒绝命令而不是询问的安装和更新

Details

189 189 

190* **Scope**:默认为用户范围。传递 `--scope project` 或 `--scope local` 以更改它。190* **Scope**:默认为用户范围。传递 `--scope project` 或 `--scope local` 以更改它。

191* **When the plugins load**:它安装的插件在您下次启动 Claude Code 时加载,或当您在已打开的会话中运行 `/reload-plugins` 时加载。191* **When the plugins load**:它安装的插件在您下次启动 Claude Code 时加载,或当您在已打开的会话中运行 `/reload-plugins` 时加载。

192* **The marketplace must be added first**:在没有人打开交互式 Claude Code 会话的机器上,官方市场未注册,因此从它安装的脚本在安装前运行 `claude plugin marketplace add anthropics/claude-plugins-official`。192* **The marketplace on a new machine**:在还没有人打开过交互式 Claude Code 会话的机器上,官方市场未注册,因此从它安装的脚本在安装前运行 `claude plugin marketplace add anthropics/claude-plugins-official`。请参阅[从 shell 添加和安装](#add-and-install-from-your-shell)。

193 193 

194```bash theme={null}194```bash theme={null}

195claude plugin install formatter@your-org --scope project195claude plugin install formatter@your-org --scope project


232 Add a marketplace and install in one command232 Add a marketplace and install in one command

233</h3>233</h3>

234 234 

235要从您尚未添加的市场安装插件,请在 Claude Code 会话中运行 `/plugin install` 并使用 `--marketplace` 命名市场来源。需要 Claude Code v2.1.275 或更高版本。235要从您尚未添加的市场安装插件,请在安装命令中使用 `--marketplace` 命名市场来源,可以在会话中或从 shell 中执行。来源采用 [the same forms as `/plugin marketplace add`](#add-a-marketplace),例如 GitHub `owner/repo`、git URL 或本地路径。单独给出插件名称,不带 `@marketplace` 后缀。

236 

237<h4 id="add-and-install-in-a-session">

238 Add and install in a session

239</h4>

240 

241在 Claude Code 会话中运行 `/plugin install`,并指定插件和来源。需要 Claude Code v2.1.275 或更高版本。在会话中,来源不能包含空格。

236 242 

237```text theme={null}243```text theme={null}

238/plugin install deploy-helper --marketplace your-org/plugins244/plugin install deploy-helper --marketplace your-org/plugins

239```245```

240 246 

241来源采用 [the same forms as `/plugin marketplace add`](#add-a-marketplace),例如 GitHub `owner/repo`、git URL 或本地路径,除了它不能包含空格。单独给出插件名称,不带 `@marketplace` 后缀。

242 

243如果您尚未添加该市场,Claude Code 显示它解析的来源并要求您在添加前确认。一旦添加了市场,插件的详细信息打开,您选择 [installation scope](#install-a-plugin)。如果来源与您已添加的市场匹配,Claude Code 跳过确认并在该市场中打开插件的详细信息。247如果您尚未添加该市场,Claude Code 显示它解析的来源并要求您在添加前确认。一旦添加了市场,插件的详细信息打开,您选择 [installation scope](#install-a-plugin)。如果来源与您已添加的市场匹配,Claude Code 跳过确认并在该市场中打开插件的详细信息。

244 248 

249<h4 id="add-and-install-from-your-shell">

250 Add and install from your shell

251</h4>

252 

253在 shell 中,无需启动会话,运行 `claude plugin install` 并指定插件和来源。需要 Claude Code v2.1.292 或更高版本。

254 

255```bash theme={null}

256claude plugin install deploy-helper --marketplace your-org/plugins

257```

258 

259shell 命令添加市场时没有确认步骤。您已从该来源添加的市场会被重用。新市场会经过与 `claude plugin marketplace add` 相同的 [organization policy checks](/docs/zh-CN/plugins/org#restrict-what-users-can-install) 后添加,并且即使您传递 `--scope project`,也会在您的用户设置中声明。

260 

261如果您尚未添加该市场,该命令会打印 `Successfully added marketplace: <name> (declared in user settings)`,然后[安装插件](#install-from-your-shell)。

262 

245<h3 id="add-a-private-marketplace">263<h3 id="add-a-private-marketplace">

246 Add a private marketplace264 Add a private marketplace

247</h3>265</h3>

Details

185| 将 `official` 放在 `claude` 或 `anthropic` 旁边,例如 `official-claude-tools` | 错误 |185| 将 `official` 放在 `claude` 或 `anthropic` 旁边,例如 `official-claude-tools` | 错误 |

186| 在其他任何地方有 `claude`、`anthropic` 或 `anthropics` 作为整个单词,例如 `mcp-for-claude` | 警告 |186| 在其他任何地方有 `claude`、`anthropic` 或 `anthropics` 作为整个单词,例如 `mcp-for-claude` | 警告 |

187 187 

188错误读作 `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`,警告读作 `Plugin name "<name>" reads as one of Anthropic's own`。`claude plugin init` 和 `claude plugin tag` 拒绝引发错误的名称。仅这些命令检查名称。Claude Code 仍然安装和加载其名称被拒绝的 plugin。188错误读作 `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`,警告读作 `Plugin name "<name>" reads as one of Anthropic's own`。`claude plugin init` 和 `claude plugin tag` 拒绝引发错误的名称。Claude Code 仍然安装和加载其名称被拒绝的插件。

189 189 

190<h3 id="displayname">190<h3 id="displayname">

191 `displayName`191 `displayName`

Details

64 64 

65| 字段 | 类型 | 描述 |65| 字段 | 类型 | 描述 |

66| :- | :- | :- |66| :- | :- | :- |

67| `name` | string | 市场标识符:字母、数字、`.`、`_` 和 `-`,以字母或数字开头,且不含 `..`。`claude plugin validate` 会使任何其他名称验证失败,因为 Claude Code 无法从使用此类名称的市场安装插件。用户安装插件时,会在 [插件 ID](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from)(例如 `my-plugin@my-marketplace`)中的 `@` 之后输入该名称。请参阅 [保留名称](#reserved-names) |67| `name` | string | 市场标识符:字母、数字、`.`、`_` 和 `-`,以字母或数字开头,且不含 `..`。`claude plugin validate` 会使任何其他名称验证失败,因为 Claude Code [无法从使用此类名称的市场安装插件](/docs/zh-CN/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name)。用户安装插件时,会在 [插件 ID](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from)(例如 `my-plugin@my-marketplace`)中的 `@` 之后输入该名称。请参阅 [保留名称](#reserved-names) |

68| `owner` | object | 维护者信息。`name` 是必需的;`email` 和 `url` 是可选的 |68| `owner` | object | 维护者信息。`name` 是必需的;`email` 和 `url` 是可选的 |

69| `plugins` | array | [插件条目](#plugin-entries)。每个条目单独验证,因此一个无效条目不会导致 marketplace 失败 |69| `plugins` | array | [插件条目](#plugin-entries)。每个条目单独验证,因此一个无效条目不会导致 marketplace 失败 |

70| `$schema` | string | JSON Schema URL 用于编辑器自动完成。在加载时忽略 |70| `$schema` | string | JSON Schema URL 用于编辑器自动完成。在加载时忽略 |

Details

138| `$.mcp.call` | 在连接的 MCP 服务器上调用工具,在会话的权限规则下 |138| `$.mcp.call` | 在连接的 MCP 服务器上调用工具,在会话的权限规则下 |

139| `$.model.complete` | 使用用户的计划或 API 密钥进行模型调用 |139| `$.model.complete` | 使用用户的计划或 API 密钥进行模型调用 |

140| `$.prompt.submit` | 提交提示,可以将其作为用户自己的话语发送 |140| `$.prompt.submit` | 提交提示,可以将其作为用户自己的话语发送 |

141| `$.session.send` | 发送另一个会话或子代理的 Claude 读取的消息 |141| `$.session.send` | 发送另一个会话、子代理或[队友](/docs/zh-CN/agent-teams)的 Claude 读取的消息 |

142 142 

143在 `hooks:` 行中,[`tool.call`](/docs/zh-CN/plugins/mods/reference#tools) 和 [`prompt.submit`](/docs/zh-CN/plugins/mods/reference#prompts-and-what-claude-reads) 意味着 mod 看到每个工具调用和每个提示,并可以更改它们。[`session.append`](/docs/zh-CN/plugins/mods/reference#session) 意味着 mod 可以在存储之前重写对话的每一行。[`ui.render{component=AskUserQuestion}`](/docs/zh-CN/plugins/mods/interface#change-what-claude-code-already-draws) 意味着 mod 可以重新绘制 Claude 用来询问用户问题的对话框。`tool.check` 意味着 mod 可以在权限提示出现之前批准或拒绝工具调用。[了解默认情况下会发生什么](#know-what-happens-by-default)列出了您的哪些规则和 hooks 优先于其答案。143在 `hooks:` 行中,[`tool.call`](/docs/zh-CN/plugins/mods/reference#tools) 和 [`prompt.submit`](/docs/zh-CN/plugins/mods/reference#prompts-and-what-claude-reads) 意味着 mod 看到每个工具调用和每个提示,并可以更改它们。[`session.append`](/docs/zh-CN/plugins/mods/reference#session) 意味着 mod 可以在存储之前重写对话的每一行。[`ui.render{component=AskUserQuestion}`](/docs/zh-CN/plugins/mods/interface#change-what-claude-code-already-draws) 意味着 mod 可以重新绘制 Claude 用来询问用户问题的对话框。`tool.check` 意味着 mod 可以在权限提示出现之前批准或拒绝工具调用。[了解默认情况下会发生什么](#know-what-happens-by-default)列出了您的哪些规则和 hooks 优先于其答案。

144 144 

Details

79 调用模型79 调用模型

80</h2>80</h2>

81 81 

82mod 可以向模型提出自己的问题,在对话之外,用于排序或总结文本等小工作。`$.model.complete` 使用您的会话凭据向模型发送一个提示,并解析为回复。它没有对话历史。82mod 可以向模型发送自己的请求,用于分类或总结文本等小任务。`$.model.complete` 单独发送您的提示词,而 `$.model.fork({ prompt })` 发送当前对话,并将您的提示词附加在末尾。

83 

84下表比较了每种请求包含的内容:

85 

86| 请求中的内容 | `$.model.complete` | `$.model.fork` |

87| :- | :- | :- |

88| 模型 | 您传入的 `model` | 会话的模型 |

89| 系统提示词 | 一个简短的[归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block),然后是您传入的 `system`(如果有) | 会话的系统提示词 |

90| 消息 | 一条用户消息,即您的 `prompt` | 迄今为止的对话,然后是作为用户消息的您的 `prompt` |

91| CLAUDE.md 和其他项目上下文 | 不包含 | 包含,与对话的最后一个请求相同 |

92| 工具 | 无 | Claude 的工具,但模型无法调用它们 |

93 

94fork 会重复对话的最后一个请求,因此在对话仍处于缓存中时,Claude API 会从[提示缓存](/docs/zh-CN/prompt-caching)中提供其大部分内容。

95 

96这两种调用都使用会话的凭据,因此费用计入用户的套餐、API 密钥或云提供商。[您的构建的类型](/docs/zh-CN/plugins/mods/create#get-the-types-for-your-build)记录了每个 `$.model` 方法。

97 

98<h3 id="send-one-prompt">

99 发送单个提示词

100</h3>

101 

102向 `$.model.complete` 传入 `model` 和 `prompt`。`prompt` 会成为用户消息。要向模型提供指令(例如角色或输出格式),还需传入 `system`,它会成为系统提示词。

83 103 

84此 hook 通过要求小型模型标记在其后键入的文本来回答 `/triage` 命令([注册为命令](#add-a-command)):104此 hook 通过要求小型模型标记在其后键入的文本来回答 `/triage` 命令([注册为命令](#add-a-command)):

85 105 


100})120})

101```121```

102 122 

103当您运行 `/triage the export button does nothing` 时,mod 将该文本发送到模型并打印其答案,例如 `Label: bug`。Claude 的对话不是请求的一部分。当模型不回答时,标签是 `unknown`。123当您运行 `/triage the export button does nothing` 时,mod 将该文本发送到模型并打印其答案,例如 `Label: bug`。当模型不回答时,标签是 `unknown`。

124 

125Claude API 失败不会拒绝调用,因此请检查 `r.isAnswered`,并在其为 `false` 时读取 `r.reason`。对于 Claude Code 不会发送的请求,例如您的组织阻止的模型,调用会被拒绝。

126 

127[您的构建的类型](/docs/zh-CN/plugins/mods/create#get-the-types-for-your-build)列出了其他选项,例如 `effort`,[限制](/docs/zh-CN/plugins/mods/reference#limits)给出了 `maxTokens` 的默认值。

128 

129<h3 id="use-prompt-caching">

130 使用提示缓存

131</h3>

132 

133`$.model.complete` 支持 Claude API 的[提示缓存](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)。API 会缓存请求的开头部分(称为前缀),直到您设置的[缓存断点](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints)为止。当每次调用都以相同的长静态内容(例如指令或参考资料)开头时,请在该内容的末尾设置断点。之后的调用就会从缓存中读取这部分内容,而无需为其支付完整的输入价格。

134 

135要设置断点,请将 `prompt` 作为 `{ text }` 块的数组而不是字符串传入,并在静态内容的最后一个块上添加 `cache: true`。Claude Code 会使用 API 的 `cache_control` 字段发送该块。`system` 也接受相同的数组形式。要在两者之间做出选择,请参阅[在 `prompt` 和 `system` 之间选择](#choose-between-prompt-and-system)。

136 

137<Note>

138 块数组需要 Claude Code v2.1.292 或更高版本。早期版本会拒绝 `prompt` 中的数组,并报出以 `takes { model, prompt } (host check)` 结尾的错误,而 `system` 中的数组则会被排除在请求之外。

139</Note>

140 

141此版本的 [`/triage` hook](#send-one-prompt) 在要标记的文本之前发送一组较长的标记规则,并在规则之后设置断点。`RULES` 是您自己定义的字符串:

142 

143```javascript theme={null}

144on('command.run', { command: 'triage' }, async ($, e) => {

145 const r = await $.model.complete({

146 model: 'haiku',

147 prompt: [

148 // 每次调用都相同,因此构成缓存的前缀

149 { text: RULES, cache: true },

150 // 每次调用都会变化,因此放在断点之后

151 { text: e.args },

152 ],

153 })

154 return { text: 'Label: ' + (r.isAnswered ? r.text.trim() : 'unknown') }

155})

156```

157 

158TTL 和断点数量有以下限制:

159 

160* **TTL**:缓存条目在最后一次使用后持续五分钟。TTL 来自用户的 Claude Code 设置,而不是来自调用。如需一小时,请将 [`subagentPromptCacheTtl`](/docs/zh-CN/prompt-caching#choose-the-ttl-yourself) 设置为 `1h`。

161* **每个请求的断点数**:API 接受[最多四个](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#when-to-use-multiple-breakpoints),再多一个则会在 `r.reason` 中返回 `api-error`

162 

163<h4 id="choose-between-prompt-and-system">

164 在 `prompt` 和 `system` 之间选择

165</h4>

166 

167除非您确定请求直接发送到 Claude API,否则请将各调用共享的静态内容放在 `prompt` 的开头:

168 

169* **使用 API 密钥或 Claude 订阅直接发送到 Claude API**:两个字段都可以

170* **通过 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock)、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai)、[Microsoft Foundry](/docs/zh-CN/microsoft-foundry) 或 [LLM 网关](/docs/zh-CN/llm-gateway)发送**:使用 `prompt`。Claude Code 会在系统提示词开头添加一个[归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block),其指纹来自用户消息的开头。`api.anthropic.com` 端点会在缓存之前去除该块。其他端点则会将其作为提示词的一部分接收,因此当 `prompt` 的开头不同时,`system` 中的断点可能无法命中。

171* **在其他人运行的 mod 中**:使用 `prompt`,因为您无法选择他们的提供商

172 

173在前缀中,`system` 位于 `prompt` 之前,因此 `prompt` 中的断点也会覆盖 `system`,而 `system` 不同的调用将无法命中缓存。

104 174 

105Claude API 失败不会拒绝调用,因此检查 `r.isAnswered`,当其为 `false` 时读取 `r.reason`。对于 Claude Code 不会发送的请求,调用会拒绝,例如您的组织阻止的模型。[您的构建的类型](/docs/zh-CN/plugins/mods/create#get-the-types-for-your-build)列出其他选项,例如 `effort`,[限制](/docs/zh-CN/plugins/mods/reference#limits)给出 `maxTokens` 默认值。175<h4 id="check-for-cache-hits">

176 检查缓存命中

177</h4>

106 178 

107`$.model.fork({ prompt })` 改为在当前对话上提出一个问题,使用相同的模型和系统提示,因此 Claude API 从提示缓存为大部分内容提供服务。179`$.model.complete` 的结果包含一个 `usage` 对象,其中带有 API 的[缓存字段](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#tracking-cache-performance)。`usage.cache_creation_input_tokens` 统计调用写入缓存的 token 数,`usage.cache_read_input_tokens` 统计调用从缓存读取的 token 数。预期第一次调用会产生写入,而在 TTL 内的后续调用会产生读取。

108 180 

109这些调用使用用户的计划或 API 密钥。181如果每次调用都在写入而没有任何读取,则说明各调用之间的前缀不同,或者调用间隔超过了 TTL。关于前缀不同的情况,请参阅[在 `prompt` 和 `system` 之间选择](#choose-between-prompt-and-system)。

182 

183如果在模型已回答的调用中两个字段都保持为零,则说明没有缓存任何内容。请逐一检查以下原因:

184 

185* **前缀太短**:API 不会缓存短于模型[最小长度](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations)的前缀,并且不会返回错误

186* **提示缓存已禁用**:当某个 [`DISABLE_PROMPT_CACHING` 变量](/docs/zh-CN/prompt-caching#disable-prompt-caching)适用于该模型时,Claude Code 会移除断点并以不缓存的方式发送文本

187* **您的网关去除了 `cache_control`**:网关可能会[移除该字段但仍返回成功](/docs/zh-CN/prompt-caching#where-the-cache-lives)

188* **另一个 mod 重写了文本的开头**:此时 Claude Code 会[不带断点发送文本](#what-a-model-complete-hook-receives)

189 

190<h3 id="what-a-model-complete-hook-receives">

191 `model.complete` hook 接收的内容

192</h3>

193 

194如果您通过 hook 监听 [`model.complete`](/docs/zh-CN/plugins/mods/reference#mods-api-calls) 事件来检查或更改其他 mod 的请求,请从以下字段读取文本:

195 

196* **`e.prompt`**:始终是字符串。当调用方传入数组时,它是各块文本按顺序拼接的结果。

197* **`e.system`**:以相同方式构建的字符串,当调用方未传入 `system` 时则不存在

198* **`e.promptBlocks` 和 `e.systemBlocks`**:调用方的数组,当调用方为相应字段传入数组时才存在

199 

200Claude Code 会发送您的 hook 传给 `next` 的字符串,并使用您随之传入的数组来放置[缓存断点](#use-prompt-caching)。它会保留仍与字符串开头匹配的前导块及其断点,并以不带断点的方式发送字符串的其余部分。例如,`next({ ...e, prompt: e.prompt + NOTE })` 会保留调用方的断点,而更改 `prompt` 开头的 hook 会移除这些断点。

110 201 

111<h2 id="run-work-in-the-background">202<h2 id="run-work-in-the-background">

112 在后台运行工作203 在后台运行工作


140| 调用 | 用户看到的内容 |231| 调用 | 用户看到的内容 |

141| :- | :- |232| :- | :- |

142| `$.ui.status(text)` | 提示下的一行,保持不变直到您更改它。它以 `⚠` 和 mod 的名称开头,如 `⚠ my-mod: checks: 3 passing`。 |233| `$.ui.status(text)` | 提示下的一行,保持不变直到您更改它。它以 `⚠` 和 mod 的名称开头,如 `⚠ my-mod: checks: 3 passing`。 |

143| `$.ui.toast(text)` | 右上角的一条 toast 通知,mod 的名称在文本上方,几秒后消失 |234| `$.ui.toast(text)` | 一条带有 mod 名称的 toast 通知,几秒后消失。在[全屏渲染](/docs/zh-CN/fullscreen)中,它是右上角的一个框;在经典渲染器中,它是提示下右侧的一行。 |

144| `$.ui.log(text)` | 成绩单中的一条暗线,Claude 不读取。它以 `●` 和 mod 的名称开头,如 `● my-mod: build finished`。 |235| `$.ui.log(text)` | 成绩单中的一条暗线,Claude 不读取。它以 `●` 和 mod 的名称开头,如 `● my-mod: build finished`。 |

145 236 

146<h3 id="start-a-turn-from-a-background-job">237<h3 id="start-a-turn-from-a-background-job">


159 在会话之间发送和接收消息250 在会话之间发送和接收消息

160</h2>251</h2>

161 252 

162mod 可以向您的另一个会话或此会话的子代理之一发送纯文本消息,并观察到达和离开的消息。`$.session.send({ to, text })` 发送一个,与 SendMessage 工具进行相同的传递。`to` 是 `{ sessionId }` 用于会话,`{ agentId }` 用于来自 `$.agent.list()` 的子代理,或接收消息来自的字符串地址。调用在消息排队后解析,带有 `{ isDelivered: true }`。当没有传递任何内容时,它使用 `{ isDelivered: false, reason }` 解析,`reason` 说明原因。253mod 可以向您的另一个会话、此会话的子代理之一或其 [agent team](/docs/zh-CN/agent-teams) 中的队友发送纯文本消息,还可以观察到达和离开的消息。

254 

255要发送消息,请调用 `$.session.send({ to, text })`,它与 SendMessage 工具进行相同的传递。根据消息的接收者设置 `to`:

256 

257* **您的另一个会话**:`{ sessionId }`

258* **子代理或队友**:`{ agentId }`,使用来自 `$.agent.list()` 的 id

259* **您收到的某条消息的发送者**:该消息来源的字符串地址

260 

261调用在消息排队后解析,带有 `{ isDelivered: true }`。当没有传递任何内容时,它使用 `{ isDelivered: false, reason }` 解析,`reason` 说明原因。

163 262 

164此 hook 通过要求您在其后键入的 id 的会话获取状态来回答 `/ping` 命令([注册为命令](#add-a-command)):263此 hook 通过要求您在其后键入的 id 的会话获取状态来回答 `/ping` 命令([注册为命令](#add-a-command)):

165 264 

Details

281 获取你的版本的类型定义281 获取你的版本的类型定义

282</h3>282</h3>

283 283 

284每次 Claude Code 从你传递给 `--plugin-dir` 的目录加载或重新加载 mod,或 mod [Claude 为你编写](#ask-claude-for-a-mod)时,它会将 TypeScript 声明文件(以 `.d.ts` 结尾)写入 mod 目录内的 `.claude-plugin/types/`。它们描述你正在运行的 Claude Code 版本中的确切事件、mods API 方法和元素,所以你的编辑器可以自动完成和类型检查你的 hooks。要在线浏览声明,请阅读 Claude Code 仓库中的 [`mods/types/claude-code.d.ts`](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts),其第一行命名了写入它的版本。该目录包含这些文件:284当 Claude Code 在交互式会话中从 `--plugin-dir` 加载 mod,或加载 [Claude 为您编写](#ask-claude-for-a-mod)的 mod 时,它会将 TypeScript 声明文件写入 mod 的 `.claude-plugin/types/` 目录。这些文件描述了您正在运行的 Claude Code 版本中的确切事件、mods API 方法和元素,因此您的编辑器可以对您的 hook 进行自动补全和类型检查。该目录包含以下文件:

285 285 

286| 路径 | 它声明的内容 |286| 路径 | 它声明的内容 |

287| :- | :- |287| :- | :- |

Details

145 145 

146在 Claude 编辑或写入 `.mdx` 文件后,会话记录中会出现一行暗色文本,注明该文件名。对于其他类型的文件,或者被拒绝或失败的调用,不会记录任何内容。Claude 对该调用的认知不会改变,因为该 hook 返回的是它收到的结果。146在 Claude 编辑或写入 `.mdx` 文件后,会话记录中会出现一行暗色文本,注明该文件名。对于其他类型的文件,或者被拒绝或失败的调用,不会记录任何内容。Claude 对该调用的认知不会改变,因为该 hook 返回的是它收到的结果。

147 147 

148要更改调用,请将更改后的参数传给 `next`。要重试调用,请再次调用 `next(e)`:如果 hook 在第一次结果中看到 `isError`,可以再次运行该工具并返回那次的结果。要自行响应调用,请在不调用 `next` 的情况下返回一个带有 `result` 字段的对象,例如 `{ result: 'Skipped by my-mod' }`。这样做时,不会出现权限提示,工具也不会运行,因此您返回的结果就是 Claude 对所发生情况的全部了解。148您的 hook 还可以更改调用、重试调用、自行响应调用或扣留其结果:

149 

150* **更改调用**:将更改后的参数传给 `next`。

151* **重试调用**:再次调用 `next(e)`。如果 hook 在第一次结果中看到 `isError`,可以再次运行该工具并返回那次的结果。

152* **自行响应调用**:在不调用 `next` 的情况下返回一个带有 `result` 字段的对象;对于内置工具,请让 `result` 的结构与该工具自身结果在[适用于您构建版本的类型](/docs/zh-CN/plugins/mods/create#get-the-types-for-your-build)中的结构一致。不会出现权限提示,工具也不会运行,因此您返回的结果就是 Claude 对所发生情况的全部了解。

153* **向 Claude 扣留结果**:在 `await next(e)` 之后返回 `{ deny: reason }`。Claude 读取的是您的原因,而不是 `next` 返回的内容。如果工具已运行,deny 会阻止 Claude 看到其结果,但不会撤销工具所做的任何操作。如果工具已运行并成功,原因会跟在诸如 `Bash ran, and a plugin withheld its result:` 的说明之后。

149 154 

150您组织的[托管设置](/docs/zh-CN/server-managed-settings)中的 hook 会在任何 mod 的 `tool.call` hook 之前运行,并且其中任一 hook 的阻止都是最终决定。155您组织的[托管设置](/docs/zh-CN/server-managed-settings)中的 hook 会在任何 mod 的 `tool.call` hook 之前运行,并且其中任一 hook 的阻止都是最终决定。

151 156 


225 230 

226| 要执行的操作 | 返回的内容 |231| 要执行的操作 | 返回的内容 |

227| :- | :- |232| :- | :- |

228| 改写提示词。会话记录中的消息会显示新文本。 | `next({ ...e, text: newText })` |233| 改写提示词。会话记录和您的[提示词历史](/docs/zh-CN/interactive-mode#command-history)会显示新文本。 | `next({ ...e, text: newText })` |

229| 在提示词之后添加只有 Claude 读取的文本 | `next({ ...e, context: [...(e.context ?? []), extraText] })` |234| 在提示词之后添加只有 Claude 读取的文本 | `next({ ...e, context: [...(e.context ?? []), extraText] })` |

230| 阻止发送提示词 | `{ drop: 'the reason' }` |235| 阻止发送提示词 | `{ drop: 'the reason' }` |

231 236 


245 250 

246当您发送诸如 `open a PR for this change` 之类的提示词时,您的消息在会话记录中看起来不变,而 Claude 还会在其后读取诸如 `Current branch: feature/auth` 的一行。未提及 Pull Request 的提示词会原样通过,且不会运行 `git`。251当您发送诸如 `open a PR for this change` 之类的提示词时,您的消息在会话记录中看起来不变,而 Claude 还会在其后读取诸如 `Current branch: feature/auth` 的一行。未提及 Pull Request 的提示词会原样通过,且不会运行 `git`。

247 252 

248要阻止提示词,请在不调用 `next` 的情况下返回 `{ drop: 'the reason' }`。如果您的 hook 在其 `next(e)` 调用已放行提示词之后返回 `drop`,轮次仍会运行,并且该 hook 会[失败](#handle-a-hook-that-fails),错误消息中包含 `a drop after its next() was answered`。253要阻止提示词,请在不调用 `next` 的情况下返回 `{ drop: 'the reason' }`。文本会返回到用户的提示词输入框中,用户会看到 `Prompt dropped by a hook:` 后跟您的原因,因此请以用户为对象撰写原因。如果您的 hook 在其 `next(e)` 调用已放行提示词之后返回 `drop`,轮次仍会运行,并且该 hook 会[失败](#handle-a-hook-that-fails),错误消息中包含 `a drop after its next() was answered`。

249 254 

250[其他事件](/docs/zh-CN/plugins/mods/reference#prompts-and-what-claude-reads)涵盖了 Claude 读取的其余内容:`prompt.section` 用于系统提示词的每个部分,`prompt.context` 用于随第一条消息发送的上下文,`skill.prompt` 用于 skill 的文本。这些 hook 产生的文本如果在请求之间发生变化,会[使提示缓存失效](/docs/zh-CN/prompt-caching)。255[其他事件](/docs/zh-CN/plugins/mods/reference#prompts-and-what-claude-reads)涵盖了 Claude 读取的其余内容:`prompt.section` 用于系统提示词的每个部分,`prompt.context` 用于随第一条消息发送的上下文,`skill.prompt` 用于 skill 的文本。这些 hook 产生的文本如果在请求之间发生变化,会[使提示缓存失效](/docs/zh-CN/prompt-caching)。

251 256 


281 286 

282`result.usage` 保存 Claude API 为某个请求报告的 token 计数,以及作出回答的 `model`:`input_tokens`、`output_tokens`、`cache_read_input_tokens` 和 `cache_creation_input_tokens`。该 hook 也会针对子代理的请求运行,因此如果您只想处理主对话,请检查 `e.agentId`。287`result.usage` 保存 Claude API 为某个请求报告的 token 计数,以及作出回答的 `model`:`input_tokens`、`output_tokens`、`cache_read_input_tokens` 和 `cache_creation_input_tokens`。该 hook 也会针对子代理的请求运行,因此如果您只想处理主对话,请检查 `e.agentId`。

283 288 

289要查看 API 在请求期间自行运行的工具调用(例如对 [advisor 工具](/docs/zh-CN/advisor)的调用),请读取 `result.serverToolUses`。Claude Code 不会运行这些调用,因此不会为它们触发任何 `tool.call` 或 `tool.check` hook。当响应中没有此类调用时,该字段不存在;该字段需要 Claude Code v2.1.290 或更高版本。

290 

284<h3 id="hook-the-settings-hook-events">291<h3 id="hook-the-settings-hook-events">

285 处理设置 hook 事件292 处理设置 hook 事件

286</h3>293</h3>


369* **`tool.check`**:返回 `{ decision: 'deny', reason: 'the reason' }`376* **`tool.check`**:返回 `{ decision: 'deny', reason: 'the reason' }`

370* **`plugin.register`**:返回 `{ refuse: 'the reason' }`,如[在检查失败时拒绝 mod](/docs/zh-CN/plugins/mods/admin#refuse-mods-when-your-check-fails) 所示377* **`plugin.register`**:返回 `{ refuse: 'the reason' }`,如[在检查失败时拒绝 mod](/docs/zh-CN/plugins/mods/admin#refuse-mods-when-your-check-fails) 所示

371 378 

379在 `tool.call` 中,在 `next` 解析后返回的 `deny` 会[向 Claude 隐瞒该结果](#guard-or-change-a-tool-call)。

380 

372<h2 id="next-steps">381<h2 id="next-steps">

373 后续步骤382 后续步骤

374</h2>383</h2>

Details

10 10 

11此地图显示 mod 可以在终端会话中的绘制位置:11此地图显示 mod 可以在终端会话中的绘制位置:

12 12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Claude Code 终端会话的地图。mod 可以在右侧添加窗格作为侧边栏,在会话记录的右上角添加 toast,在会话记录中添加日志行,在输入框上方添加条带,以及在输入框下方添加状态栏。mod 可以重绘消息、工具调用行和加载指示器。输入框是 Claude Code 自己的。" width="600" height="336" data-path="images/mods-screen-map.svg" />13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="全屏渲染模式下 Claude Code 终端会话的地图。mod 可以在右侧添加窗格作为侧边栏,在会话记录的右上角添加 toast,在会话记录中添加日志行,在输入框上方添加条带,以及在输入框下方添加状态栏。mod 可以重绘消息、工具调用行和加载指示器。输入框是 Claude Code 自己的。" width="600" height="336" data-path="images/mods-screen-map.svg" />

14 14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Claude Code 终端会话的地图。mod 可以在右侧添加窗格作为侧边栏,在会话记录的右上角添加 toast,在会话记录中添加日志行,在输入框上方添加条带,以及在输入框下方添加状态栏。mod 可以重绘消息、工具调用行和加载指示器。输入框是 Claude Code 自己的。" width="600" height="336" data-path="images/mods-screen-map-dark.svg" />15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="全屏渲染模式下 Claude Code 终端会话的地图。mod 可以在右侧添加窗格作为侧边栏,在会话记录的右上角添加 toast,在会话记录中添加日志行,在输入框上方添加条带,以及在输入框下方添加状态栏。mod 可以重绘消息、工具调用行和加载指示器。输入框是 Claude Code 自己的。" width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 16 

17在较窄的终端中,窗格位于输入框上方而不是会话记录旁边。17在较窄的终端中,窗格位于输入框上方而不是会话记录旁边。

18 18 


324| `title` | 打开多个窗格时窗格的选项卡标签 |324| `title` | 打开多个窗格时窗格的选项卡标签 |

325| `focus` | 请求[键盘焦点](#know-which-keys-your-mod-can-receive) |325| `focus` | 请求[键盘焦点](#know-which-keys-your-mod-can-receive) |

326| `closeOnEscape` | 使 Esc 关闭窗格 |326| `closeOnEscape` | 使 Esc 关闭窗格 |

327| `holdToasts` | 暂缓显示 toast(来自 [`$.ui.toast`](/docs/zh-CN/plugins/mods/api#show-something-without-starting-a-turn) 的小通知),直到窗格关闭 |327| `holdToasts` | 在终端中,当此窗格是正在显示的窗格时暂缓显示 toast。请参阅[在对话框后暂缓显示 toast](#hold-toasts-behind-a-dialog)。 |

328| `rows` | 当窗格位于输入框上方时请求的高度。默认值为空间的三分之一。 |328| `rows` | 当窗格位于输入框上方时请求的高度。默认值为空间的三分之一。 |

329| `columns` | 当窗格位于会话记录旁边时请求的宽度 |329| `columns` | 当窗格位于会话记录旁边时请求的宽度 |

330 330 


337 337 

338要让命令在 Claude 工作时打开窗格,请在[注册命令](/docs/zh-CN/plugins/mods/api#add-a-command)时添加 `immediate: true`。如果不添加,在轮次进行期间输入的命令会等待轮次结束。338要让命令在 Claude 工作时打开窗格,请在[注册命令](/docs/zh-CN/plugins/mods/api#add-a-command)时添加 `immediate: true`。如果不添加,在轮次进行期间输入的命令会等待轮次结束。

339 339 

340<h4 id="hold-toasts-behind-a-dialog">

341 在对话框后暂缓显示 toast

342</h4>

343 

344当窗格是用户作答后即离开的对话框时,请向 `$.ui.open` 传递 `holdToasts: true`,这样在用户做决定时不会出现 toast。在终端中,只要该窗格是正在显示的窗格,暂缓就会持续,在此期间触发的 toast 会等到暂缓结束后再显示。

345 

346除了您的 mod 通过 [`$.ui.toast`](/docs/zh-CN/plugins/mods/api#show-something-without-starting-a-turn) 触发的 toast 外,Claude Code 还会暂缓其他 mod 的 toast 以及它自己的短时通知。对于保持打开的窗格,请不要设置该字段,以便用户能继续看到这些通知。

347 

340<h4 id="when-a-pane-waits-for-a-wider-terminal">348<h4 id="when-a-pane-waits-for-a-wider-terminal">

341 当窗格等待更宽的终端时349 当窗格等待更宽的终端时

342</h4>350</h4>

Details

64| :- | :- | :- |64| :- | :- | :- |

65| [`tool.call`](/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) | 工具即将运行 | `next(e)`、`{ deny: reason }` 或 `{ result }` |65| [`tool.call`](/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) | 工具即将运行 | `next(e)`、`{ deny: reason }` 或 `{ result }` |

66| [`tool.check`](/docs/zh-CN/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code 在 `tool.call` 和 `PreToolUse` hook 之后决定是否允许运行某个工具调用。`next(e)` 解析为规则、权限模式和这些 hook 得出的决定。 | `{ decision }`,其值为 `allow`、`ask` 或 `deny` |66| [`tool.check`](/docs/zh-CN/plugins/mods/events#where-settings-hooks-run-in-the-order) | Claude Code 在 `tool.call` 和 `PreToolUse` hook 之后决定是否允许运行某个工具调用。`next(e)` 解析为规则、权限模式和这些 hook 得出的决定。 | `{ decision }`,其值为 `allow`、`ask` 或 `deny` |

67| `tool.describe` | 每个工具一次,在其描述首次发送给 Claude 时 | `{ description }`,可选择将 `isDeferred` 设为 `true` 以将该工具置于[工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)之后,或设为 `false` 以预先加载它 |67| `tool.describe` | 每个工具一次,在其描述首次发送给 Claude 时。对于 MCP 工具,当 Claude 通过[工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)加载它时会再触发一次,此时 `e.description` 设为 Claude 针对已加载工具读取的文本。 | `{ description }`,可选择将 `isDeferred` 设为 `true` 以将该工具置于工具搜索之后,或设为 `false` 以预先加载它 |

68 68 

69<h4 id="agent-and-organization-fields-on-tool-check">69<h4 id="agent-and-organization-fields-on-tool-check">

70 `tool.check` 上的 Agent 和组织字段70 `tool.check` 上的 Agent 和组织字段


133| `session.end` | 会话结束,或运行 `/clear`、`/resume` 或 `/branch` 时。`e.reason` 为 `clear`、`resume`、`logout`、`prompt_input_exit` 或 `other`。`/branch` 报告为 `resume`。 | `next(e)` |133| `session.end` | 会话结束,或运行 `/clear`、`/resume` 或 `/branch` 时。`e.reason` 为 `clear`、`resume`、`logout`、`prompt_input_exit` 或 `other`。`/branch` 报告为 `resume`。 | `next(e)` |

134| `session.compact` | 对话即将被压缩 | `{ skip: reason }` |134| `session.compact` | 对话即将被压缩 | `{ skip: reason }` |

135| [`session.receive`](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions) | 一条消息从另一个 Agent 或会话到达,或即将发往另一个 Agent 或会话。请参阅[在会话之间发送和接收消息](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions)。 | `receive` 返回 `{ consumed: reason }`,`send` 返回 `{ isDelivered: false, reason }` |135| [`session.receive`](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions) | 一条消息从另一个 Agent 或会话到达,或即将发往另一个 Agent 或会话。请参阅[在会话之间发送和接收消息](/docs/zh-CN/plugins/mods/api#send-and-receive-messages-between-sessions)。 | `receive` 返回 `{ consumed: reason }`,`send` 返回 `{ isDelivered: false, reason }` |

136| `session.append` | 对话保留的每一行一次,例如提示词、响应块、工具结果或通知,在存储之前触发 | `next({ ...e, message })` 以重写该行的 `content` |136| `session.append` | 对话保留的每一行一次,例如提示词、响应块、工具结果或通知,在存储之前触发 | 带有更改后 `message.content` 的 `next({ ...e, message })`,用于重写该行的文本块或其中 `tool_result` 块的 `content` |

137| `session.attach`, `session.detach` | 另一个应用连接到会话或从会话断开 | `next(e)` |137| `session.attach`, `session.detach` | 另一个应用连接到会话或从会话断开 | `next(e)` |

138| `session.measure` | 每个轮次之后,以及套餐限制的已用百分比发生变化时 | `next(e)` |138| `session.measure` | 每个轮次之后,以及套餐限制的已用百分比发生变化时 | `next(e)` |

139 139 


209| [`$.ui`](/docs/zh-CN/plugins/mods/interface#pick-where-to-draw) | `resolve`、`invalidate`、`open`、`close`、`panes`、`focus`、`scroll`、`toast`、`status`、`log`、`notice`、`ask`、`copy`、`selection`、`blit` |209| [`$.ui`](/docs/zh-CN/plugins/mods/interface#pick-where-to-draw) | `resolve`、`invalidate`、`open`、`close`、`panes`、`focus`、`scroll`、`toast`、`status`、`log`、`notice`、`ask`、`copy`、`selection`、`blit` |

210| [`$.command`](/docs/zh-CN/plugins/mods/api#add-a-command) | `register`、`run`、`list` |210| [`$.command`](/docs/zh-CN/plugins/mods/api#add-a-command) | `register`、`run`、`list` |

211| [`$.tool`](/docs/zh-CN/plugins/mods/api#add-a-tool) | `register`、`call`、`check`、`list` |211| [`$.tool`](/docs/zh-CN/plugins/mods/api#add-a-tool) | `register`、`call`、`check`、`list` |

212| `$.agent` | `register`、`spawn`、`list` |212| `$.agent` | `register`、`spawn`、`list`。`list()` 返回此会话的子代理和队友,每项都带有 `status`,其值为 `pending`、`running`、`waiting`、`idle`、`completed`、`failed` 或 `killed` 之一,其中 `idle` 和 `waiting` 需要 Claude Code v2.1.289 或更高版本。 |

213| [`$.model`](/docs/zh-CN/plugins/mods/api#call-a-model) | `complete`、`fork`、`classify` |213| [`$.model`](/docs/zh-CN/plugins/mods/api#call-a-model) | `complete`、`fork`、`classify` |

214| [`$.prompt`](/docs/zh-CN/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`、`read`、`fill`、`suggest`、`compose`。Claude 读取来自 `submit({ text })` 的文本时,前面会有一句指明您的 mod 为发送者的话。`submit({ text, asUser: true })` 将文本作为用户自己的话发送,不带那句话。 |214| [`$.prompt`](/docs/zh-CN/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`、`read`、`fill`、`suggest`、`compose`。Claude 读取来自 `submit({ text })` 的文本时,前面会有一句指明您的 mod 为发送者的话。`submit({ text, asUser: true })` 将文本作为用户自己的话发送,不带那句话。 |

215| `$.turn` | `abort` |215| `$.turn` | `abort` |


317| `$.process.run` 超时时间 | 默认 30 秒,最长 10 分钟 |317| `$.process.run` 超时时间 | 默认 30 秒,最长 10 分钟 |

318| `$.model.complete` `maxTokens` | 默认 1024,最多 64,000 或模型的输出上限 |318| `$.model.complete` `maxTokens` | 默认 1024,最多 64,000 或模型的输出上限 |

319| `$.fs.read` 和 `$.fs.write` | 单个文件 4 MiB |319| `$.fs.read` 和 `$.fs.write` | 单个文件 4 MiB |

320| hook 的 `drop` 原因或 `config.set` 的 `deny` 原因 | 4,096 个字符。更长的原因会被截去末尾部分,drop 或 deny 仍然生效。截断需要 Claude Code v2.1.292 或更高版本;在更早的版本中,该 hook 会改为[失败](/docs/zh-CN/plugins/mods/events#handle-a-hook-that-fails)。 |

320| 单个树中的文本 | 仅绘制前 100,000 个字符 |321| 单个树中的文本 | 仅绘制前 100,000 个字符 |

321| `Code` 的 `language` 或 `path`、`Select` 选项的 `value`,或 `Client` 的 `module` | 10,000 个字符。如果其中任何一项超出此长度,Claude Code 会[在该位置绘制其自身的版本](/docs/zh-CN/plugins/mods/interface#build-a-tree-from-elements)。 |322| `Code` 的 `language` 或 `path`、`Select` 选项的 `value`,或 `Client` 的 `module` | 10,000 个字符。如果其中任何一项超出此长度,Claude Code 会[在该位置绘制其自身的版本](/docs/zh-CN/plugins/mods/interface#build-a-tree-from-elements)。 |

322| `Link` 的 `href` | 2,048 个字符。更长的 `href` 会导致整个树无法绘制。 |323| `Link` 的 `href` | 2,048 个字符。更长的 `href` 会导致整个树无法绘制。 |


325| `$.ui.invalidate('ui.render')` 重绘 | 限制为每秒 10 次;在终端中,对于可见窗格、展开区域以及输入框下方的提示行,限制为每秒 30 次。更早到达的调用会被合并。 |326| `$.ui.invalidate('ui.render')` 重绘 | 限制为每秒 10 次;在终端中,对于可见窗格、展开区域以及输入框下方的提示行,限制为每秒 30 次。更早到达的调用会被合并。 |

326| `$.ui.toast` | 显示 4 秒,除非您传入 `{ timeoutMs }` |327| `$.ui.toast` | 显示 4 秒,除非您传入 `{ timeoutMs }` |

327| 非用户主动打开的窗格 | 从终端第 144 列起放置;用户打开过一次后,从第 110 列起放置 |328| 非用户主动打开的窗格 | 从终端第 144 列起放置;用户打开过一次后,从第 110 列起放置 |

329| 在 hook 模块的单个文件中相互嵌套的作用域(如函数、代码块和循环) | 2,000 |

328| 命令、工具、子代理类型和窗格名称 | 字母、数字、`_` 和 `-`,最多 64 个字符 |330| 命令、工具、子代理类型和窗格名称 | 字母、数字、`_` 和 `-`,最多 64 个字符 |

329| 单个 `claude plugin test` 测试 | 5 秒,除非该测试设置了 `timeoutMs` |331| 单个 `claude plugin test` 测试 | 5 秒,除非该测试设置了 `timeoutMs` |

330 332 

Details

110* `returned neither { value } nor { deny }`:mods API 调用的 stub 返回了一个裸值,这会导致测试失败110* `returned neither { value } nor { deny }`:mods API 调用的 stub 返回了一个裸值,这会导致测试失败

111* `no implementation for` 后跟一个名称:您的 mod 进行了该调用,没有 stub 回答它111* `no implementation for` 后跟一个名称:您的 mod 进行了该调用,没有 stub 回答它

112 112 

113工具包还导出内存中的 mocks,为您回答整个命名空间。`mock.clock(on)` 回答 [`$.clock`](/docs/zh-CN/plugins/mods/api#run-work-in-the-background),`mock.store(on, { count: 7 })` 从以这些条目开始的存储中回答 `$.store`,`mock.env(on, { CI: 'true' })` 从这些变量中回答 `$.env.get`。`mock.clock` 返回一个您的测试可以推进的 mock 时钟,因此计时器的测试不会等待。`mock.store` 返回 nothing,因此要检查您的 mod 保存了什么,请自己编写两个 `store` stubs,如 [drawing test](#test-a-drawing) 所做的那样。113工具包还导出现成的 mocks,用于时钟、存储、环境变量以及追加到对话中的行:

114 

115* **`mock.clock(on)`**:回答 [`$.clock`](/docs/zh-CN/plugins/mods/api#run-work-in-the-background),并返回一个您的测试可以推进的 mock 时钟,因此计时器的测试不会等待。

116* **`mock.store(on, { count: 7 })`**:从以这些条目开始的存储中回答 `$.store`。它不返回任何内容,因此要检查您的 mod 保存了什么,请自己编写两个 `store` stubs,如 [drawing test](#test-a-drawing) 所做的那样。

117* **`mock.env(on, { CI: 'true' })`**:从这些变量中回答 `$.env.get`。

118* **`mock.session(on)`**:返回一个 mock 会话,其 `appended()` 方法按从旧到新的顺序列出您的 mod 通过 [`$.session.append`](/docs/zh-CN/plugins/mods/reference#session) 添加的行;需要 Claude Code v2.1.293 或更高版本。

114 119 

115<h3 id="follow-the-test-kit’s-rules">120<h3 id="follow-the-test-kit’s-rules">

116 遵循测试工具包的规则121 遵循测试工具包的规则


168 查看 stub 返回的内容173 查看 stub 返回的内容

169</h3>174</h3>

170 175 

171您的 mod 在测试中进行的每个 mods API 调用都需要一个 stub 来回答,除了工具包自己回答的少数几个:[`$.ui.invalidate`](/docs/zh-CN/plugins/mods/interface#redraw-when-something-changes) 和 [`$.state`](/docs/zh-CN/plugins/mods/interface#keep-state) 调用。对于 `$.clock` 调用,使用 `mock.clock(on)`,否则您的 mod 的 `$.clock.now()` 会失败并显示 `no implementation for clock.now`。176您的 mod 在测试中进行的每个 mods API 调用都需要一个 stub 来回答,除了工具包自己回答的少数几个:[`$.ui.invalidate`](/docs/zh-CN/plugins/mods/interface#redraw-when-something-changes)、[`$.state`](/docs/zh-CN/plugins/mods/interface#keep-state) 和 `$.session.append` 调用。对于 `$.clock` 调用,使用 `mock.clock(on)`,否则您的 mod 的 `$.clock.now()` 会失败并显示 `no implementation for clock.now`。

172 177 

173此表列出了 mods 最常使用的。第一列是您的 mod 进行的调用或它使用 `next(e)` 传递的事件。第二列是传递给 `on` 的函数,使用该名称,因此 `$.store.get` 行变成 `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`。stub 中的 `'...'` 标记您需要填写的文本:178此表列出了 mods 最常使用的。第一列是您的 mod 进行的调用或它使用 `next(e)` 传递的事件。第二列是传递给 `on` 的函数,使用该名称,因此 `$.store.get` 行变成 `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`。stub 中的 `'...'` 标记您需要填写的文本:

174 179 

Details

116 116 

117设置或更改值。该行的末尾命名其在 `settings.json` 中的 `pluginConfigs` 条目。117设置或更改值。该行的末尾命名其在 `settings.json` 中的 `pluginConfigs` 条目。

118 118 

119<h3 id="code-nested-too-deep-to-scan-more-than-2000-scopes">

120 `code nested too deep to scan: more than 2000 scopes`

121</h3>

122 

123该行以 mod 的名称开头,然后是 `hooks module did not load:`、文件,以及 `code nested too deep to scan: more than 2000 scopes`。hook 模块中的文件不能将作用域(例如函数、块和循环)嵌套超过 [2,000 层](/docs/zh-CN/plugins/mods/reference#limits)。[`claude plugin validate`](/docs/zh-CN/plugins/mods/create#check-what-claude-code-reads-from-your-mod) 会报告相同的原因。

124 

125重写代码,减少其作用域的嵌套深度。

126 

119<h3 id="no-mod-loads-in-a-directory-you-opened-for-the-first-time">127<h3 id="no-mod-loads-in-a-directory-you-opened-for-the-first-time">

120 没有 mod 在您首次打开的目录中加载128 没有 mod 在您首次打开的目录中加载

121</h3>129</h3>


132 140 

133启动时不使用该标志。141启动时不使用该标志。

134 142 

143<h3 id="claude-code-stops-asking-to-enable-hot-reloading">

144 Claude Code 不再询问是否启用热重载

145</h3>

146 

147Claude 在交互式会话中编写了 mod,但没有任何内容加载,而且 Claude Code 不再询问[是否启用热重载](/docs/zh-CN/plugins/mods/create#ask-claude-for-a-mod)。如果该问题有三次在未选择任何答案的情况下结束,热重载将保持关闭。例如,当您设置了 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 并且在您回答之前时间已到时,问题就会以这种方式结束。该设置在此适用,是因为 Claude Code 使用与 [`AskUserQuestion` 相同的问题对话框](/docs/zh-CN/tools-reference#question-auto-continue-timeout)进行询问。您自己关闭的问题不计入这三次。

148 

149要运行该 mod,请[将其目录从 mods 文件夹中复制出来](/docs/zh-CN/plugins/mods/create#use-the-mod-in-other-sessions),然后在 shell 中使用 `--plugin-dir` 启动新会话,例如 `claude --plugin-dir ~/mods/git-branch`。

150 

135<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">151<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">

136 hook 被跳过或 mod 被卸载152 hook 被跳过或 mod 被卸载

137</h2>153</h2>


209 绘图不出现或不响应225 绘图不出现或不响应

210</h2>226</h2>

211 227 

212mod 已加载,其窗格、带或控件的行为不符合您的预期。228mod 已加载,其窗格、带、toast 或控件的行为不符合您的预期。

213 229 

214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">230<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

215 窗格或带为空或显示 Claude Code 的常规内容231 窗格或带为空或显示 Claude Code 的常规内容


247 263 

248从命令或按钮打开窗格,或检查调用的 `isPlaced` 结果。请参阅 [在正确的时间打开窗格](/docs/zh-CN/plugins/mods/interface#open-a-pane-at-the-right-time)。264从命令或按钮打开窗格,或检查调用的 `isPlaced` 结果。请参阅 [在正确的时间打开窗格](/docs/zh-CN/plugins/mods/interface#open-a-pane-at-the-right-time)。

249 265 

266<h3 id="a-toast-doesn’t-appear">

267 toast 不出现

268</h3>

269 

270您的 mod 在交互式终端会话中调用了 [`$.ui.toast`](/docs/zh-CN/plugins/mods/api#show-something-without-starting-a-turn),但您没有看到该 toast。要确认调用已运行,请在[调试日志](#read-the-debug-log)中查找包含您的 mod 名称和 toast 文本的行,如 `$.ui.toast (first-mod): build finished`。然后检查以下原因:

271 

272* **缺少该调用对应的行**:查找说明 Claude Code 拒绝该调用原因的行,如 `first-mod: $.ui.toast dropped: timeoutMs is a whole number of ms, 1 to 60000`。

273* **某个窗格正在暂缓 toast**:您的 mod 或其他 mod 在打开当前显示的窗格时传递了 [`holdToasts`](/docs/zh-CN/plugins/mods/interface#hold-toasts-behind-a-dialog)。关闭该窗格即可结束暂缓。如果该窗格是您的且需要保持打开,请从其 `$.ui.open` 调用中移除 `holdToasts`,然后重新打开该窗格。

274* **toast 位于输入框下方**:在[经典渲染器](/docs/zh-CN/fullscreen#enable-fullscreen-rendering)中,请查看输入框下方的右侧。该处的 toast 是以 mod 名称开头的一行文字,而不是右上角的方框。

275* **您的 mod 发出了更新的 toast**:在经典渲染器中,来自您的 mod 的更新 toast 可能会取代正在显示或等待显示的 toast。调试日志中会有针对较早 toast 的另一行:如果该 toast 当时正在显示,该行以 `gave way, cut short` 结尾;如果它从未出现,则以 `gave way, unseen` 结尾。要同时显示两条消息,请将它们放在一个 toast 中。

276* **toast 在绘制前超时**:在全屏渲染中,Claude Code 一次最多绘制三个 toast,因此 toast 可能在绘制之前就已超时。调试日志中会有针对该 toast 的另一行,以 `left the stack, never drawn` 结尾。当您的 mod 同时发出多个 toast 时,请将这些消息放在一个 toast 中。

277 

278在 v2.1.290 之前,如果某个 toast 是在 Claude Code 为您的 mod 显示上一个 toast 后两秒内发出的,Claude Code 会丢弃该 toast,且调试日志中针对被丢弃 toast 的行会显示 `within 2000ms of the last; dropped`。

279 

250<h3 id="hotkeys-do-nothing">280<h3 id="hotkeys-do-nothing">

251 热键不起作用281 热键不起作用

252</h3>282</h3>

Details

110}110}

111```111```

112 112 

113在您的 shell 中,在推送前在存储库中运行 `claude plugin validate .` 以检查文件。113在您的 shell 中,推送前在仓库中运行 `claude plugin validate .`。有关该运行检查的内容,请参阅[验证目录](/docs/zh-CN/plugins/cli-reference#validate-a-directory)。

114 114 

115[创建市场](/docs/zh-CN/plugins/create-marketplace)涵盖了一个存储库中有多个插件的布局。115[创建市场](/docs/zh-CN/plugins/create-marketplace)涵盖了一个存储库中有多个插件的布局。

116 116 


129* 添加市场一次:`claude plugin marketplace add your-org/your-marketplace`,其中参数是 GitHub `owner/repo` 简写、URL 或路径129* 添加市场一次:`claude plugin marketplace add your-org/your-marketplace`,其中参数是 GitHub `owner/repo` 简写、URL 或路径

130* 安装插件:`claude plugin install deploy-helper@your-marketplace`130* 安装插件:`claude plugin install deploy-helper@your-marketplace`

131* 或从会话内同时执行两者:`/plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.275 或更高版本。请参阅[在一个命令中添加市场和安装](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command)131* 或从会话内同时执行两者:`/plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.275 或更高版本。请参阅[在一个命令中添加市场和安装](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command)

132* 或在 shell 中用一个命令同时执行两者:`claude plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.292 或更高版本

132 133 

133<h3 id="ship-updates-to-users">134<h3 id="ship-updates-to-users">

134 向用户发布更新135 向用户发布更新

Details

163 `Invalid marketplace source format`163 `Invalid marketplace source format`

164</h3>164</h3>

165 165 

166您运行了 `/plugin marketplace add <source>` 或 `claude plugin marketplace add <source>`,Claude Code 回复 `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`。166您运行了 `/plugin marketplace add <source>`、`claude plugin marketplace add <source>` 或 `claude plugin install <plugin> --marketplace <source>`,Claude Code 回复 `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`。

167 167 

168Claude Code 接受以下形式之一的源:168Claude Code 接受以下形式之一的源:

169 169 


237* **您拥有市场**:将文件放在该位置并重新添加市场237* **您拥有市场**:将文件放在该位置并重新添加市场

238* **其他人托管它**:向所有者询问他们发布的确切源238* **其他人托管它**:向所有者询问他们发布的确切源

239 239 

240<h3 id="cannot-install-plugins-from-a-marketplace-with-this-name">

241 `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name`

242</h3>

243 

244您添加了一个市场,但其 `marketplace.json` 中的 [`name`](/docs/zh-CN/plugins/marketplace-reference#top-level-fields) 不能作为 [插件 ID](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from)(例如 `my-plugin@my-marketplace`)中 `@` 之后的部分。Claude Code 拒绝添加,且不注册任何内容。

245 

246消息的其余部分说明了名称的规则。在此示例中,`_internal` 以 `_` 开头,违反了该规则:

247 

248```text theme={null}

249Cannot add marketplace "_internal": Claude Code cannot install plugins from a marketplace with this name. Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. The name is set by "name" in the marketplace's marketplace.json; ask its maintainer to change it.

250```

251 

252为市场指定符合该规则的名称,然后再次添加:

253 

254* **您拥有市场**:更改 `marketplace.json` 中的 `name`,例如改为 `internal-tools`

255* **其他人托管它**:请所有者更改名称

256 

257在 v2.1.295 之前,Claude Code 会将此示例中的添加报告为成功。

258 

240<h3 id="ssh-authentication-failed-or-https-authentication-failed">259<h3 id="ssh-authentication-failed-or-https-authentication-failed">

241 `SSH authentication failed` 或 `HTTPS authentication failed`260 `SSH authentication failed` 或 `HTTPS authentication failed`

242</h3>261</h3>


568 `Marketplace "<name>" is already added from a different source`587 `Marketplace "<name>" is already added from a different source`

569</h3>588</h3>

570 589 

571您通过 [`/plugin install <plugin> --marketplace <source>`](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command) 确认添加市场,Claude Code 从该源获取的目录与您已从不同源添加的市场具有相同的名称。Claude Code 保留现有市场而不是替换它,插件未安装。590您在会话中或从 shell 中,通过 [安装命令上的 `--marketplace <source>`](/docs/zh-CN/plugins/install#add-a-marketplace-and-install-in-one-command) 指定了一个新的市场源。Claude Code 从该源获取的目录与您已从不同源添加的市场具有相同的名称。Claude Code 保留现有市场而不是替换它,插件未安装。

572 591 

573完整消息如下所示:592完整消息如下所示:

574 593 


786 805 

787Claude Code 将不可用的记录复制到 `.set-aside` 文件中并将其从列表中删除。Claude Code 永远不会读回副本,副本在 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays) 计划上老化。806Claude Code 将不可用的记录复制到 `.set-aside` 文件中并将其从列表中删除。Claude Code 永远不会读回副本,副本在 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays) 计划上老化。

788 807 

808<h3 id="does-not-load-so-claude-code-ignores-the-whole-file">

809 `does not load (...), so Claude Code ignores the whole file`

810</h3>

811 

812命令已成功执行。警告中指明的设置文件存在错误,因此在您修复之前,Claude Code 会忽略整个文件,包括命令写入其中的任何内容。

813 

814修复警告中指明的错误。对于 Claude Code 不接受的值,[修复损坏的设置文件](/docs/zh-CN/settings#fix-a-broken-settings-file) 说明了修复方法。然后,如果命令所做的更改已不在文件中,请再次运行该命令。

815 

816该警告出现在您的 shell 中 `claude plugin install`、`enable`、`disable` 或 `claude plugin marketplace add` 的成功行之后:

817 

818```text theme={null}

819⚠ /home/user/.claude/settings.json does not load (its "permissions" is not valid), so Claude Code ignores the whole file, including anything this command wrote there. Fix the file, then run this command again if its change is missing. If a newer Claude Code wrote the file, update Claude Code instead.

820```

821 

822括号中的文本指明了错误:

823 

824* **`its "<key>" is not valid`**:引号中的设置项包含 Claude Code 不接受的值。在 [设置参考](/docs/zh-CN/settings-reference) 中查找该设置项可接受的值。当多个值无效时,文本会指明第一个设置项并统计其他设置项的数量,例如 `its "permissions" and 1 other value are not valid`。

825* **`it is not a JSON object`**:文件的顶层不是 JSON 对象,例如顶层为数组的文件。

826 

789<h3 id="a-plugin-you-disabled-still-loads">827<h3 id="a-plugin-you-disabled-still-loads">

790 `Disabled in ~/.claude/settings.json but still loads`828 `Disabled in ~/.claude/settings.json but still loads`

791</h3>829</h3>


812 850 

813如果您的组织为您预安装插件,它通过托管设置而不是这样做。请参阅 [预安装和要求插件](/docs/zh-CN/plugins/org#pre-install-and-require-plugins)。851如果您的组织为您预安装插件,它通过托管设置而不是这样做。请参阅 [预安装和要求插件](/docs/zh-CN/plugins/org#pre-install-and-require-plugins)。

814 852 

853<h3 id="a-plugin-stays-installed-after-plugin-uninstall-on-windows">

854 在 Windows 上执行 `plugin uninstall` 后插件仍保持安装

855</h3>

856 

857在 Windows 上,您在项目或本地作用域运行 `claude plugin uninstall` 并报告成功,但 `claude plugin list` 或 `/plugin` 仍然列出该插件。

858 

859`installed_plugins.json` 为该项目文件夹保存了该插件的两条安装记录,每条记录对文件夹路径的写法不同,而一次卸载只会删除其中一条。要进行检查,请在您的 shell 中运行 `claude plugin list --json`。该插件剩余的行中,`projectPath` 对文件夹的写法与您运行卸载的位置不同,例如 `C:\work\app` 被写为 `c:\work\app`。

860 

861在同一文件夹中,使用相同的 `--scope` 再次运行相同的卸载命令。第二次运行在其自身的路径写法下找不到记录,因此会删除另一种写法下的记录。对于项目作用域的安装:

862 

863```shell theme={null}

864claude plugin uninstall <name>@<marketplace> --scope project

865```

866 

867然后再次运行 `claude plugin list --json`,确认该行已消失。

868 

869在 v2.1.295 之前,第二次运行会失败并显示 `Plugin "<name>" is not installed in project scope`。请运行 `claude update`,然后再次运行卸载。

870 

815<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">871<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">

816 `Failed to load hooks from <path>` 和不触发的 hooks872 `Failed to load hooks from <path>` 和不触发的 hooks

817</h3>873</h3>


835 891 

836如果 stderr 显示插件的路径在空格处被截断,hook 的 shell 形式命令在引号外使用 `${CLAUDE_PLUGIN_ROOT}`,安装路径包含空格。将变量用双引号包装或使用 [exec 形式](/docs/zh-CN/hooks#exec-form-and-shell-form)。要找到未引用的变量,请在插件的目录上运行 `claude plugin validate` 并查找其 [引用警告](/docs/zh-CN/plugins/manifest-reference#quoting-and-path-separators)。892如果 stderr 显示插件的路径在空格处被截断,hook 的 shell 形式命令在引号外使用 `${CLAUDE_PLUGIN_ROOT}`,安装路径包含空格。将变量用双引号包装或使用 [exec 形式](/docs/zh-CN/hooks#exec-form-and-shell-form)。要找到未引用的变量,请在插件的目录上运行 `claude plugin validate` 并查找其 [引用警告](/docs/zh-CN/plugins/manifest-reference#quoting-and-path-separators)。

837 893 

894如果通知内容为 `Failed to run: Plugin directory does not exist: <path>`,请参阅 [`Plugin directory does not exist`](#plugin-directory-does-not-exist)。

895 

838对于任何其他错误,从插件目录自己运行 hook 的命令以查看完整输出,或使用 [调试日志](/docs/zh-CN/hooks#debug-hooks) 捕获完整 stderr。896对于任何其他错误,从插件目录自己运行 hook 的命令以查看完整输出,或使用 [调试日志](/docs/zh-CN/hooks#debug-hooks) 捕获完整 stderr。

839 897 

840<h4 id="a-plugin-hook-blocks-a-tool-call-or-prompt">898<h4 id="a-plugin-hook-blocks-a-tool-call-or-prompt">


869 </Step>927 </Step>

870</Steps>928</Steps>

871 929 

930<h3 id="plugin-directory-does-not-exist">

931 `Plugin directory does not exist: <path>`

932</h3>

933 

934即使消息提示重新安装,也请先在 Claude Code 输入框中运行 `/reload-plugins`。当您的会话加载插件 hook 所用的目录已从磁盘上消失时,插件的 hook 会失败并显示 `Failed to run: Plugin directory does not exist: <path> (<plugin> — run /plugin to reinstall)`,且该 hook 不会运行。[`Plugin directory not found at path: <path>`](#plugin-directory-not-found-at-path) 是另一条消息,与市场条目有关。

935 

936重新加载会从插件的当前目录加载其 hook。对于每个 hook 事件和命令,该失败在每个会话中只显示一次,因此 hook 不再报错并不能确认问题已修复。请改为阅读重新加载的输出:

937 

938* **`Reloaded:` 且没有错误行**:插件的 hook 不再指向缺失的目录

939* **`N errors during load. Run /plugin for details.`**:在 `/plugin` 中打开 **Errors** 选项卡,并按照本页中针对其显示的消息的条目操作

940* **以 `Run /reload-plugins --force to apply.` 结尾的行**:没有重新加载任何内容,hook 会继续失败。请在 Claude Code 输入框中运行 `/reload-plugins --force`

941 

872<h3 id="invalid-mcp-server-config-for-and-mcp-servers-that-dont-start">942<h3 id="invalid-mcp-server-config-for-and-mcp-servers-that-dont-start">

873 `Invalid MCP server config for "<server>"` 和不启动的 MCP 服务器943 `Invalid MCP server config for "<server>"` 和不启动的 MCP 服务器

874</h3>944</h3>


1063 1133 

1064您运行了 `claude plugin validate <path>`,或在会话中运行了 `/plugin validate <path>`,它打印了 `Found N errors` 和 `Validation failed`,然后以代码 1 退出。1134您运行了 `claude plugin validate <path>`,或在会话中运行了 `/plugin validate <path>`,它打印了 `Found N errors` 和 `Validation failed`,然后以代码 1 退出。

1065 1135 

1066验证器读取您指定路径处的清单:插件目录为 `.claude-plugin/plugin.json`,市场目录为 `.claude-plugin/marketplace.json`。对于市场,它会在条目自身清单中的问题前加上条目索引,例如 `plugins[1] plugin.json → json: ...`。1136验证器读取您指定路径处的清单:插件目录为 `.claude-plugin/plugin.json`,市场目录为 `.claude-plugin/marketplace.json`,同时包含两者的目录则两者都读取。对于市场,它会在条目自身清单中的问题前加上条目索引,例如 `plugins[1] plugin.json → json: ...`。在 v2.1.289 之前,Claude Code 仅将同时包含两者的目录作为市场进行验证。

1067 1137 

1068下表涵盖会导致验证停止的消息,以及两个警告 `No frontmatter block found` 和 `Unknown field '<key>'`,这两个警告仅在传递 `--strict` 时才会导致验证停止。其他警告(例如缺少描述)未列出。1138下表涵盖会导致验证停止的消息,以及两个警告 `No frontmatter block found` 和 `Unknown field '<key>'`,这两个警告仅在传递 `--strict` 时才会导致验证停止。其他警告(例如缺少描述)未列出。

1069 1139 

remote-control.md +53 −20

Details

364 限制364 限制

365</h2>365</h2>

366 366 

367* **每个交互式进程只能有一个远程会话**:在服务器模式之外,每个 Claude Code 实例一次只支持一个远程会话。使用[服务器模式](#start-a-remote-control-session)从单个进程运行多个并发会话。367* **每个交互式进程仅支持一个远程会话**:在服务器模式之外,每个 Claude Code 实例一次仅支持一个远程会话。使用[服务器模式](#start-a-remote-control-session)可从单个进程运行多个并发会话。

368* **本地进程必须保持运行**:Remote Control 作为本地进程运行。如果您关闭终端、退出 Desktop 应用或 VS Code,或以其他方式停止 `claude` 进程,会话将离线,直到您[将其恢复](#resume-sessions-after-stopping-the-server)。如果您在远程机器上的终端中运行 `claude`,请在 `tmux` 或 `screen` 中启动它,以便在断开 SSH 连接后会话仍保持运行。368* **本地进程必须保持运行**:Remote Control 作为本地进程运行。如果您关闭终端、退出 Desktop 应用或 VS Code,或以其他方式停止 `claude` 进程,会话将离线,直到您[将其恢复](#resume-sessions-after-stopping-the-server)。如果您在远程机器的终端中运行 `claude`,请在 `tmux` 或 `screen` 中启动它,以便在断开 SSH 连接后会话仍保持运行。

369* **服务器模式中的崩溃会话**:如果由 `claude remote-control` 提供的会话崩溃,请从连接的设备向其发送消息。Claude Code 会再次提供它。您不必重启服务器。需要 Claude Code v2.1.238 或更高版本。369* **服务器模式下崩溃的会话**:如果由 `claude remote-control` 提供服务的会话崩溃,请从已连接的设备向其发送一条消息。Claude Code 会重新为其提供服务。您无需重启服务器。需要 Claude Code v2.1.238 或更高版本。

370* **已连接会话上的 HTTP 403 拒绝**:一旦交互式会话连接,当您的机器和 Anthropic 服务器之间的某个地方返回 HTTP 403 时(在 VPN 或网络更改后可能发生),Claude Code 会重试最多三分钟。如果拒绝持续更长时间,Claude Code 会断开连接,原因会说明是什么拒绝了:网络边缘,或您自己网络上的代理、VPN 或防火墙。370* **已连接会话上的 HTTP 403 拒绝**:交互式会话连接后,如果您的机器与 Anthropic 服务器之间的某个环节以 HTTP 403 响应(例如在 VPN 或网络变更之后可能发生),Claude Code 会持续重试最多三分钟。如果拒绝持续时间更长,Claude Code 将断开连接,并在原因中指明拒绝的来源:网络边缘,或您自身网络上的代理、VPN 或防火墙。

371* **扩展网络中断**:如果您的机器处于唤醒状态但无法到达网络,接下来的操作取决于模式:371* **长时间网络中断**:如果您的机器处于唤醒状态但无法访问网络,后续操作取决于所用模式:

372 * **服务器模式**:Claude Code 在大约 10 分钟后放弃,`claude remote-control` 进程退出。再次运行 `claude remote-control` 以启动新会话。372 * **服务器模式**:Claude Code 大约 10 分钟后放弃,`claude remote-control` 进程退出。再次运行 `claude remote-control` 以启动新会话。

373 * **交互式会话**:继续在本地工作。Claude Code 会在中断期间持续重试,并在网络恢复时自动重新连接。373 * **交互式会话**:继续在本地工作。Claude Code 会在中断期间持续重试,并在网络恢复时自动重新连接。

374* **未能下载的附件**:如果您从手机或浏览器附加的文件无法下载到您的机器,Claude 仍会收到您的消息以及已下载的文件。Claude Code 会在消息中添加一条说明(例如 `[1 of 3 attachments did not arrive]`)来代替缺失的文件。374* **无法下载的附件**:如果您从手机或浏览器附加的文件无法下载到您的机器,Claude 仍会收到您的消息以及已下载的文件。Claude Code 会在消息中添加一条说明(例如 `[1 of 3 attachments did not arrive]`)来代替缺失的文件。

375* **存在心跳失败**:如果交互式会话断开连接并显示 `could not reach the Remote Control server for about 30 minutes`,运行 `/remote-control` 以重新连接。375* **在线状态心跳失败**:如果交互式会话因 `could not reach the Remote Control server for about 30 minutes` 而断开连接,请运行 `/remote-control` 重新连接。

376* **转发的对话过期**:Claude Code 会保持权限提示和 `AskUserQuestion` 问题打开,直到您回答它们。当 Claude Code 将另一种对话转发到远程会话时,例如安全拒绝后显示的模型选择提示,默认情况下它会等待五分钟,然后关闭对话并继续使用对话的无操作默认值。设置 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 以调整或禁用截止时间。需要 Claude Code v2.1.224 或更高版本。376* **转发的对话框会过期**:Claude Code 会保持权限提示和 `AskUserQuestion` 问题处于打开状态,直到您作答。当 Claude Code 将其他类型的对话框转发到远程会话时(例如安全拒绝后显示的模型选择提示),默认会等待五分钟,然后关闭该对话框并按对话框的无操作默认值继续。设置 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 可调整或禁用该期限。需要 Claude Code v2.1.224 或更高版本。

377* **Fable 使用额度同意提示未转发**:Claude Code 仅在会话运行的地方显示中途[Fable 使用额度同意提示](/docs/zh-CN/model-config#fable-and-usage-credits),而不是在您的设备上。当会话在终端中运行且那里没有人在 Claude Code 关闭提示之前回答时,该轮结束而不发送请求;请参阅[确认提示未被回答](/docs/zh-CN/errors#the-prompt-to-confirm-went-unanswered)。377* **Fable 使用额度同意提示不会被转发**:Claude Code 仅在会话运行的位置显示会话中途的 [Fable 使用额度同意提示](/docs/zh-CN/model-config#fable-and-usage-credits),而不会在您的设备上显示。当会话在终端中运行,且在 Claude Code 关闭该提示之前无人在终端作答时,该轮次将结束而不发送请求;请参阅[确认提示未得到回应](/docs/zh-CN/errors#the-prompt-to-confirm-went-unanswered)。

378* **某些命令仅限本地**:仅在终端界面中运行的命令,例如 `/plugin` 或 `/resume`,仅从本地 CLI 工作,无论您是否传递参数。从移动或网络输入 `/claude-api` 时,它同样不可用。Claude 仍可在那里[自行加载该 skill](/docs/zh-CN/skills#work-on-claude-api-projects)。以下命令可从移动和网络使用:378* **部分命令仅限本地使用**:仅在终端界面中运行的命令(例如 `/plugin` 或 `/resume`)只能从本地 CLI 使用,无论是否传递参数。从移动端或 Web 端输入 `/claude-api` 时同样不可用。Claude 在那里仍可以[自行加载该 skill](/docs/zh-CN/skills#work-on-claude-api-projects)。以下命令可在移动端和 Web 端使用:

379 * 文本输出命令:`/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`。`/usage-credits` 打印计费 URL 而不是打开浏览器。`/reload-plugins` 仅在会话在交互式终端中运行时工作;没有交互式终端的会话会拒绝它。379 * 文本输出命令:`/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`。`/usage-credits` 会打印计费 URL,而不是打开浏览器。`/reload-plugins` 仅在会话运行于交互式终端中时有效;没有交互式终端的会话会拒绝执行该命令。

380 * `/model`、`/effort`、`/fast`、`/color` 和 `/rename`:将值作为参数传递,例如 `/model sonnet` 或 `/effort high`。从移动和网络,`/model` 和 `/effort` 将参数用于代替终端选择器或滑块。380 * `/model`、`/effort`、`/fast`、`/color` 和 `/rename`:将值作为参数传递,例如 `/model sonnet` 或 `/effort high`。在移动端和 Web 端,`/model` 和 `/effort` 接受参数,以代替终端中的选择器或滑块。

381 * `/mcp`:从移动应用,返回服务器状态的文本摘要而不是打开选择器。在网络上,`/mcp` 单独打开 [claude.ai 连接器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai) 的目录而不是返回摘要。`reconnect`、`enable` 和 `disable` [子命令](/docs/zh-CN/commands#all-commands)可从两者工作。`/mcp reconnect` 不带服务器名称时会重试每个已失败或需要身份验证的服务器。381 * `/mcp`:在移动应用中,返回服务器状态的文本摘要,而不是打开选择器。在 Web 端,单独使用 `/mcp` 会打开 [claude.ai 连接器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)目录,而不是返回摘要。当会话运行于交互式终端中时,`reconnect`、`enable` 和 `disable` [子命令](/docs/zh-CN/commands#all-commands)在两端均可使用。不带服务器名称的 `/mcp reconnect` 会重试所有失败或需要身份验证的服务器。要在不使用选择器的情况下授权 claude.ai 连接器,请参阅[从 shell 重新授权连接器](#authorize-a-connector-again-from-your-shell)。

382 * `/config`:从移动应用,传递 `key=value` 以设置设置,或不带参数运行它以列出您可以设置的键。在网络上,`/config` 打开您的设置的 Claude Code 部分,并忽略命令后的文本。382 * `/config`:在移动应用中,传递 `key=value` 可更改设置项,或不带参数运行以列出可设置的键。在 Web 端,`/config` 会改为打开您设置中的 Claude Code 部分,并忽略命令后的文本。

383 * 在 Team 和 Enterprise 上,从移动或网络的 `/usage-credits` 不会向您的管理员发送[使用额度请求](/docs/zh-CN/costs#add-usage-credits-to-your-subscription)。发送需要仅在交互式 CLI 中出现的确认,因此命令告诉您改为在那里运行它。383 * 在 Team 和 Enterprise 版本中,从移动端或 Web 端运行 `/usage-credits` 不会[向您的管理员发送使用额度请求](/docs/zh-CN/costs#add-usage-credits-to-your-subscription)。发送请求需要一个仅在交互式 CLI 中出现的确认,因此该命令会提示您改为在 CLI 中运行。

384 * `/autocompact`,从 v2.1.221:将窗口大小作为参数传递,例如 `/autocompact 500k`。不带参数,它打印当前窗口大小作为文本,而不是打开命令在终端会话中显示的对话。384 * `/autocompact`,自 v2.1.221 起:将窗口大小作为参数传递,例如 `/autocompact 500k`。不带参数时,它会以文本形式打印当前窗口大小,而不是打开该命令在终端会话中显示的对话框。

385 * `/advisor`,从 v2.1.260:将模型作为参数传递,例如 `/advisor opus`,或传递 `off` 以关闭顾问。两种形式仅适用于当前会话,并保持您保存的默认值不变。不带参数,它打印当前顾问作为文本,而不是打开选择器。385 * `/advisor`,自 v2.1.260 起:将模型作为参数传递,例如 `/advisor opus`,或传递 `off` 以关闭 advisor。两种形式都仅应用于当前会话,不会更改您保存的默认值。不带参数时,它会以文本形式打印当前的 advisor,而不是打开选择器。

386 * `/output-style`,从 v2.1.269:将样式名称作为参数传递,例如 `/output-style concise`,或不带参数运行它以列出样式。从移动和网络,您只能列出和选择[内置样式](/docs/zh-CN/output-styles#built-in-output-styles)。要使用[自定义样式](/docs/zh-CN/output-styles#create-a-custom-output-style),在会话本身中选择它。386 * `/output-style`,自 v2.1.269 起:将样式名称作为参数传递,例如 `/output-style concise`,或不带参数运行以列出样式。在移动端和 Web 端,您只能列出和选择[内置样式](/docs/zh-CN/output-styles#built-in-output-styles)。要使用[自定义样式](/docs/zh-CN/output-styles#create-a-custom-output-style),请在会话本身中选择它。

387 * `/focus`,从 v2.1.281:将 `on` 或 `off` 作为参数传递,例如 `/focus on`,或不带参数运行它以切换[焦点视图](/docs/zh-CN/commands#all-commands)。两种形式仅适用于当前会话,并保持您保存的选择不变。387 * `/focus`,自 v2.1.281 起:将 `on` 或 `off` 作为参数传递,例如 `/focus on`,或不带参数运行以切换[专注视图](/docs/zh-CN/commands#all-commands)。两种形式都仅应用于当前会话,不会更改您保存的选择。

388 

389<h2 id="authorize-a-connector-again-from-your-shell">

390 从 shell 重新授权连接器

391</h2>

392 

393当您通过 Remote Control 操作的会话中某个 claude.ai 连接器需要身份验证时,移动应用或网页端无法使用 `/mcp` 面板。请在运行该会话的机器上通过终端获取授权链接,然后在您正在使用的设备上打开该链接。您无法从移动应用或网页端运行该命令。从那里发送的以 `!` 开头的内容会作为消息发送给 Claude,而不会在 [shell 模式](/docs/zh-CN/interactive-mode#shell-mode-with-prefix)中运行。

394 

395<Steps>

396 <Step title="获取授权链接">

397 在运行该会话的机器上的终端中(例如通过 SSH),运行 `claude mcp login` 并附上用引号括起的连接器名称。连接器名称以 `claude.ai` 开头,例如 Slack 连接器的名称为 `claude.ai Slack`。以下命令获取 Slack 连接器的链接:

398 

399 ```bash theme={null}

400 claude mcp login "claude.ai Slack" --no-browser

401 ```

402 

403 该命令会输出一个 claude.ai 链接后退出。在浏览器中打开该链接,并在 claude.ai 上完成授权。`--no-browser` 可防止该命令在那台机器上打开浏览器,因为那台机器可能并不是您正在使用的设备。

404 </Step>

405 

406 <Step title="在会话中使用连接器">

407 启动一个新会话,或在已运行的会话中重新连接该连接器:

408 

409 * **新会话**:授权后启动的会话会自动连接到该连接器,无需任何额外步骤。

410 * **正在运行的会话**:在 Claude Code 提示符处,或从移动应用或网页端,运行 `/mcp reconnect` 并附上相同的名称(不加引号)。要确认您的会话是否接受从那里发送的该命令,请参阅[哪些命令可在移动端和网页端使用](#limitations)中的 `/mcp` 条目。

411 

412 以下命令重新连接 Slack 连接器:

413 

414 ```text theme={null}

415 /mcp reconnect claude.ai Slack

416 ```

417 

418 在终端中,Claude Code 会输出 `Successfully reconnected to claude.ai Slack`。在移动应用或网页端,回复为 `Reconnected "claude.ai Slack".`

419 </Step>

420</Steps>

388 421 

389<h2 id="troubleshooting">422<h2 id="troubleshooting">

390 故障排除423 故障排除

Details

191 抖动191 抖动

192</h3>192</h3>

193 193 

194为了避免每个会话在同一个挂钟时刻击中 API,调度程序会向触发时间添加一个确定性偏移:194定时任务的实际运行时间可能与其计划时间不同。如果每个会话的任务都严格按计划运行,许多任务会在同一时刻调用 API,因此 Claude Code 会调整每个任务的运行时间。重复任务会延后运行,而安排在整点或半点的一次性任务会稍微提前运行。

195 195 

196* 重复任务最多在计划时间之后 30 分钟触发(或对于运行频率超过每小时的任务,最多为间隔的一半)。为 `:00` 计划的每小时作业可能在 `:00` 到 `:30` 之间的任何时间触发。196<h4 id="how-late-a-recurring-task-runs">

197* 为小时顶部或底部计划的一次性任务最多提前 90 秒触发。197 重复任务会延后多久运行

198</h4>

198 199 

199偏移是从任务 ID 派生的,所以相同的任务总是获得相同的偏移。如果精确的时间很重要,选择不是 `:00` 或 `:30` 的分钟,例如 `3 9 * * *` 而不是 `0 9 * * *`,一次性抖动将不适用。200当您创建重复任务时,Claude Code 会为其分配一个固定的延迟,并将该延迟添加到每次运行中。该延迟是根据任务 ID 计算得出的,因此同一任务每次都会延后相同的分钟数运行,包括在会话空闲且没有其他任何内容运行时。

201 

202运行越频繁的任务获得的延迟越短,任务可获得的最长延迟为 30 分钟。以下是一些常见计划的延迟范围:

203 

204| 任务运行频率 | 延迟范围 |

205| :- | :- |

206| 每 10 分钟 | 0 到 5 分钟 |

207| 每 30 分钟 | 0 到 15 分钟 |

208| 每小时,或频率更低(例如每天) | 0 到 30 分钟 |

209 

210例如,`7,37 * * * *` 将任务安排在 `:07` 和 `:37` 运行,两者相隔 30 分钟,因此其延迟介于 0 到 15 分钟之间。如果该任务的延迟为 14 分钟,它会在每小时的 `:21` 和 `:51` 运行。将计划更改为其他分钟会改变运行时间,但仍会在其基础上添加延迟。

211 

212<h4 id="when-a-one-shot-task-runs-early">

213 一次性任务何时提前运行

214</h4>

215 

216安排在 `:00` 或 `:30` 的一次性任务最多会提前 90 秒运行。Claude Code 不会调整安排在其他任何分钟的一次性任务,因此当时间很重要时,请避开整点和半点进行安排:使用 `3 9 * * *` 而不是 `0 9 * * *`。

200 217 

201<h3 id="seven-day-expiry">218<h3 id="seven-day-expiry">

202 七天过期219 七天过期

Details

74 74 

75您可以通过 [添加自己的规则](#add-your-own-rules) 来扩展每一层。内置检查无法单独删除,但您可以 [独立禁用每一层](#disable-or-uninstall)。75您可以通过 [添加自己的规则](#add-your-own-rules) 来扩展每一层。内置检查无法单独删除,但您可以 [独立禁用每一层](#disable-or-uninstall)。

76 76 

77<h3 id="on-each-file-edit">77<span id="on-each-file-edit" />

78 在每次文件编辑时78 

79<h3 id="checks-on-each-file-edit">

80 每次文件编辑时的检查

79</h3>81</h3>

80 82 

81当 Claude 写入文件时,该插件会扫描新内容中的已知危险模式。这是一个没有模型调用的模式匹配,因此不会增加使用成本。83当 Claude 写入文件时,该插件会扫描新内容中的已知危险模式。这是一个没有模型调用的模式匹配,因此不会增加使用成本。


91 93 

92您可以使用 `security-patterns.yaml` 文件 [向此层添加自己的模式](#add-custom-per-edit-patterns)。94您可以使用 `security-patterns.yaml` 文件 [向此层添加自己的模式](#add-custom-per-edit-patterns)。

93 95 

94<h3 id="at-the-end-of-each-turn">96<span id="at-the-end-of-each-turn" />

95 在每个回合结束时97 

98<h3 id="checks-at-the-end-of-each-turn">

99 每个轮次结束时的检查

96</h3>100</h3>

97 101 

98一个回合是 Claude 响应的一轮:您发送消息,Claude 工作并回复,回合结束。在每个回合之后,该插件计算工作树中在回合期间更改的所有内容的 git diff,包括来自 Claude 的编辑工具、Bash 命令和子代理的更改,并将其发送到专注于安全的单独 Claude 审查。审查在后台运行,因此 Claude 的回复不会延迟。如果审查发现问题,Claude 会被重新提示发现的问题并作为后续行动解决它们。102一个回合是 Claude 响应的一轮:您发送消息,Claude 工作并回复,回合结束。在每个回合之后,该插件计算工作树中在回合期间更改的所有内容的 git diff,包括来自 Claude 的编辑工具、Bash 命令和子代理的更改,并将其发送到专注于安全的单独 Claude 审查。审查在后台运行,因此 Claude 的回复不会延迟。如果审查发现问题,Claude 会被重新提示发现的问题并作为后续行动解决它们。


107 111 

108您可以在会话中直接看到发现和 Claude 的解决方案。审查涵盖每个回合最多 30 个更改的文件,在最多连续三次后才会让步给您。112您可以在会话中直接看到发现和 Claude 的解决方案。审查涵盖每个回合最多 30 个更改的文件,在最多连续三次后才会让步给您。

109 113 

110<h3 id="on-each-commit-or-push-claude-makes">114<span id="on-each-commit-or-push-claude-makes" />

111 在 Claude 进行的每次提交或推送时115 

116<h3 id="checks-on-each-commit-or-push-claude-makes">

117 Claude 每次提交或推送时的检查

112</h3>118</h3>

113 119 

114当 Claude 通过其 Bash 工具运行 `git commit` 或 `git push` 时,该插件在后台运行对更改的更深层代理审查。此审查读取周围代码,包括调用者、清理程序和相关文件,以决定发现是否真实,然后再报告它。额外的上下文可以降低在隔离时看起来危险但在您的代码库中是安全的模式上的误报。120当 Claude 通过其 Bash 工具运行 `git commit` 或 `git push` 时,该插件在后台运行对更改的更深层代理审查。此审查读取周围代码,包括调用者、清理程序和相关文件,以决定发现是否真实,然后再报告它。额外的上下文可以降低在隔离时看起来危险但在您的代码库中是安全的模式上的误报。

Details

403 403 

404* 位于标准系统路径的企业作用域[托管 MCP 文件](/docs/zh-CN/managed-mcp):Linux 运行器主机上为 `/etc/claude-code/managed-mcp.json`,macOS 主机上为 `/Library/Application Support/ClaudeCode/managed-mcp.json`。适用于只允许加载管理员列出的服务器的锁定机群。有关优先级规则,请参阅[使用 managed-mcp.json 进行独占控制](/docs/zh-CN/managed-mcp#exclusive-control-with-managed-mcp-json)。当运行器主机上存在此文件时,Claude Code 会跳过 Anthropic 控制平面下发给会话的 MCP 服务器(包括 claude.ai 连接器),并在会话子进程的 stderr 上以警告形式列出它们的名称,运行器会以 `debug` 日志级别记录这些警告。在 v2.1.229 之前,这些会话会在启动时退出并显示 `You cannot dynamically configure MCP servers when an enterprise MCP config is present`。404* 位于标准系统路径的企业作用域[托管 MCP 文件](/docs/zh-CN/managed-mcp):Linux 运行器主机上为 `/etc/claude-code/managed-mcp.json`,macOS 主机上为 `/Library/Application Support/ClaudeCode/managed-mcp.json`。适用于只允许加载管理员列出的服务器的锁定机群。有关优先级规则,请参阅[使用 managed-mcp.json 进行独占控制](/docs/zh-CN/managed-mcp#exclusive-control-with-managed-mcp-json)。当运行器主机上存在此文件时,Claude Code 会跳过 Anthropic 控制平面下发给会话的 MCP 服务器(包括 claude.ai 连接器),并在会话子进程的 stderr 上以警告形式列出它们的名称,运行器会以 `debug` 日志级别记录这些警告。在 v2.1.229 之前,这些会话会在启动时退出并显示 `You cannot dynamically configure MCP servers when an enterprise MCP config is present`。

405* 运行器主机上[托管设置](/docs/zh-CN/managed-settings)中的 [`managedMcpServers`](/docs/zh-CN/settings-reference#managedmcpservers) 键:提供 HTTP 和 SSE 服务器,但不进行独占控制,因此来自其他来源的服务器仍会加载。需要 Claude Code v2.1.259 或更高版本。405* 运行器主机上[托管设置](/docs/zh-CN/managed-settings)中的 [`managedMcpServers`](/docs/zh-CN/settings-reference#managedmcpservers) 键:提供 HTTP 和 SSE 服务器,但不进行独占控制,因此来自其他来源的服务器仍会加载。需要 Claude Code v2.1.259 或更高版本。

406* `<repo>/.mcp.json`:项目作用域。将该文件提交到仓库;其中的服务器在云端会话中会被自动批准。406* `<repo>/.mcp.json`:项目作用域。将该文件提交到仓库;其中的服务器在云端会话中会被自动批准。在包含多个仓库的会话中,[最多只会加载一个仓库的该文件](#repository-settings-in-sessions-with-several-repositories)。

407 407 

408当您的组织启用了连接器下发时,Anthropic 的控制平面会通过服务器提供的 MCP 配置,将您在 claude.ai 上配置的连接器下发到以交互方式创建的会话,请求经由 `api.anthropic.com` 路由。以编程方式创建的会话(例如 [CLI 调度](/docs/zh-CN/self-hosted-environments-testing#run-the-test-loop))不会接收连接器下发;请改为通过本节列出的任何其他来源为它们提供 MCP 服务器。子进程的 OAuth 令牌不带有直接获取连接器的作用域,因此子进程本身不会尝试获取;下发由服务器驱动。408当您的组织启用了连接器下发时,Anthropic 的控制平面会通过服务器提供的 MCP 配置,将您在 claude.ai 上配置的连接器下发到以交互方式创建的会话,请求经由 `api.anthropic.com` 路由。以编程方式创建的会话(例如 [CLI 调度](/docs/zh-CN/self-hosted-environments-testing#run-the-test-loop))不会接收连接器下发;请改为通过本节列出的任何其他来源为它们提供 MCP 服务器。子进程的 OAuth 令牌不带有直接获取连接器的作用域,因此子进程本身不会尝试获取;下发由服务器驱动。

409 409 


542exit 0542exit 0

543```543```

544 544 

545钩子在会话结束前提示 Claude 提交并推送,当目录不是 git 存储库或没有远程时保持沉默。545该 hook 在会话结束前提示 Claude 提交并推送,当目录不是 git 仓库或没有远程时保持沉默。对于包含多个仓库的会话,请参阅 [`$CLAUDE_PROJECT_DIR` 指向的内容](#repository-settings-in-sessions-with-several-repositories)。

546 546 

547<h2 id="permissions-and-tool-approval">547<h2 id="permissions-and-tool-approval">

548 权限和工具批准548 权限和工具批准


571 571 

572设置 `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` 可从其他路径获取初始内容,或将其指向空目录以禁用初始内容填充。572设置 `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` 可从其他路径获取初始内容,或将其指向空目录以禁用初始内容填充。

573 573 

574仓库中提交的 `.claude/settings.json` 会作为项目设置叠加在其上。会话还会从运行器镜像中的标准系统路径读取 [`managed-settings.json`](/docs/zh-CN/settings#where-settings-live)。其中的键是否与[服务器托管设置](/docs/zh-CN/server-managed-settings)一起应用,取决于 [Claude Code 如何合并托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources):默认情况下,当您的组织下发了任何服务器托管的键时,会话会忽略运行器镜像中的该文件,但 [Claude Code 从每个管理员来源读取的键](/docs/zh-CN/managed-settings#keys-read-from-every-admin-source)除外,例如 `env` 块、沙箱锁定、沙箱二进制路径和 `forceRemoteSettingsRefresh`。请参阅[设置优先级](/docs/zh-CN/settings#settings-precedence)。574仓库中提交的 `.claude/settings.json` 会作为项目设置叠加在其上。在包含多个仓库的会话中,[最多只有一个仓库的文件生效](#repository-settings-in-sessions-with-several-repositories)。会话还会从运行器镜像中的标准系统路径读取 [`managed-settings.json`](/docs/zh-CN/settings#where-settings-live)。其中的键是否与[服务器托管设置](/docs/zh-CN/server-managed-settings)一起应用,取决于 [Claude Code 如何合并托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources):默认情况下,当您的组织下发了任何服务器托管的键时,会话会忽略运行器镜像中的该文件,但 [Claude Code 从每个管理员来源读取的键](/docs/zh-CN/managed-settings#keys-read-from-every-admin-source)除外,例如 `env` 块、沙箱锁定、沙箱二进制路径和 `forceRemoteSettingsRefresh`。请参阅[设置优先级](/docs/zh-CN/settings#settings-precedence)。

575 575 

576当 Anthropic 的控制平面为会话提供 [Claude Code hook](/docs/zh-CN/hooks) 时,运行器会将它们与您自己的配置并行安装,而不是覆盖您的配置。需要 Claude Code v2.1.229 或更高版本。576当 Anthropic 的控制平面为会话提供 [Claude Code hook](/docs/zh-CN/hooks) 时,运行器会将它们与您自己的配置并行安装,而不是覆盖您的配置。需要 Claude Code v2.1.229 或更高版本。

577 577 


583 583 

584运行器对主机 `~/.claude/` 的快照不包含 `projects/` 目录。自动记忆的默认存储位置就在该目录下。如果您将记忆文件放在那里,运行器不会将它们填充到会话中,它们也不会启用自动记忆。584运行器对主机 `~/.claude/` 的快照不包含 `projects/` 目录。自动记忆的默认存储位置就在该目录下。如果您将记忆文件放在那里,运行器不会将它们填充到会话中,它们也不会启用自动记忆。

585 585 

586<h3 id="repository-settings-in-sessions-with-several-repositories">

587 包含多个仓库的会话中的仓库设置

588</h3>

589 

590在包含多个仓库的会话中,Claude Code 从会话启动所在的目录读取项目设置,因此最多只有一个仓库的 `.claude/settings.json` 作为项目设置生效。在其他仓库的文件中定义的 hook 不会运行,其中的拒绝规则不会生效,其 `env` 也不会被设置。

591 

592* **`--capacity 1`(默认值)并使用内置检出**:会话在其仓库列表中的第一个仓库中启动。该仓库的 `.claude/settings.json` 作为项目设置生效,其 `.mcp.json` 会被加载,而其他仓库的则不会。

593* **`--capacity` 大于 1,或使用 [`checkout` hook](#checkout)**:会话在包含各检出内容的按会话目录中启动。没有任何仓库的 `.claude/settings.json` 作为项目设置生效,没有任何仓库的 `.mcp.json` 会被加载,并且 hook 命令中的 [`$CLAUDE_PROJECT_DIR`](/docs/zh-CN/hooks#reference-scripts-by-path) 是该目录,而不是某个检出目录。

594 

595无论会话在何处启动,每个仓库的 `CLAUDE.md` 和 skill 都会被加载。运行器将每个仓库作为[附加目录](/docs/zh-CN/permissions#additional-directories-grant-file-access-not-configuration)传递给 Claude Code,因此 Claude Code 还会从每个仓库的 `.claude/settings.json` 中读取 `enabledPlugins` 和 `extraKnownMarketplaces` 键。

596 

597要在每个会话中运行某个 hook 或应用某条权限规则,请将其放在运行器主机上的 `~/.claude/settings.json` 中。无论会话在何处启动,运行器都会[将该主机文件填充到每个会话中](#how-each-session’s-config-is-assembled)。在 `Read` 或 `Edit` 规则中,请将路径写为以 `//` 开头的绝对路径或以 `~/` 开头的相对于主目录的[模式](/docs/zh-CN/permissions#read-and-edit),因为其他模式会以设置来源或当前目录为锚点。

598 

586<h3 id="repository-committed-permission-rules">599<h3 id="repository-committed-permission-rules">

587 仓库中提交的权限规则600 仓库中提交的权限规则

588</h3>601</h3>

Details

87 87 

88 由于 hooks 执行 shell 命令,交互式会话中的用户在 Claude Code 应用它们之前会看到[安全批准对话框](#security-approval-dialogs)。88 由于 hooks 执行 shell 命令,交互式会话中的用户在 Claude Code 应用它们之前会看到[安全批准对话框](#security-approval-dialogs)。

89 89 

90 要配置 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器,使其了解您的组织信任的存储库、存储桶和域,以相同的方式传递 `autoMode` 块;有关 `autoMode` 条目如何影响分类器阻止的内容以及关于 `environment`、`allow`、`soft_deny` 和 `hard_deny` 字段的重要警告,请参阅[配置 auto mode](/docs/zh-CN/auto-mode-config)。90 要配置[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器,使其了解您的组织信任的存储库、存储桶和域,以相同的方式传递 `autoMode` 块;有关 `autoMode` 条目如何影响分类器阻止的内容以及关于 `environment`、`allow`、`soft_deny` 和 `hard_deny` 字段的重要警告,请参阅[配置自动模式](/docs/zh-CN/auto-mode-config)。

91 </Step>91 </Step>

92 92 

93 <Step title="保存并部署">93 <Step title="保存并部署">

94 保存您的更改。Claude Code 客户端在下次启动或每小时轮询周期时接收更新的设置。94 保存您的更改。Claude Code 客户端在下次启动或每小时轮询周期时接收更新的设置。

95 

96 编辑器会根据已发布的 Claude Code 设置 JSON schema 检查您的 JSON。如果在可解析的 JSON 中发现问题,它会显示警告并更改保存按钮的标签。当已保存设置时,标签为 **Update with errors**;当尚未保存任何设置时,标签为 **Add with errors**。该按钮仍然会保存,因为 schema 警告不会阻止保存。

97 

98 该 schema [可能落后于最新版本](/docs/zh-CN/settings#edit-a-settings-file),因此编辑器可能会标记[设置参考](/docs/zh-CN/settings-reference#all-settings)中已记录的键或值。Claude Code 会接收您保存的键和值,并在加载它们时运行[自己的验证](#invalid-entries-in-delivered-settings)。

95 </Step>99 </Step>

96</Steps>100</Steps>

97 101 

settings.md +41 −41

Details

400 设置文件及其影响范围400 设置文件及其影响范围

401</h2>401</h2>

402 402 

403Claude Code 从四个文件读取设置,组织也可以从 claude.ai 控制台提供托管设置。每个来源都有一个作用域:设置所适用的人员和项目范围,可能是仅限于您、项目中的所有人,或组织中的所有人。403Claude Code 从四个文件读取设置,组织也可以从 claude.ai 控制台提供托管设置。每个来源都有一个作用域:保存在其中的设置所适用的人员和项目范围,可能是仅限于您、项目中的所有人,或组织中的所有人。

404 404 

405| 作用域 | 文件 | 影响范围 | 用途 |405| 作用域 | 文件 | 影响范围 | 用途 |

406| :- | :- | :- | :- |406| :- | :- | :- | :- |

407| 用户 | `~/.claude/settings.json` | 你在这台机器上的每个项目中 | 个人偏好:主题、编辑器模式、默认模型、你自己的权限规则 |407| 用户 | `~/.claude/settings.json` | 您在这台机器上的每个项目 | 个人偏好:主题、编辑器模式、默认模型、您自己的权限规则 |

408| 共享项目 | `.claude/settings.json` | 包含该文件的文件夹中的所有人。在 git 仓库中,提交它以便队友获得 | 团队权限、hooks、plugins 和项目需要的环境变量 |408| 共享项目 | `.claude/settings.json` | 在包含该文件的文件夹中工作的所有人。在 git 仓库中,提交该文件以便队友获得它 | 团队权限、hook、插件以及项目所需的环境变量 |

409| 项目本地 | `.claude/settings.local.json` | 仅在这个项目中的你。Claude Code 在创建文件时将其排除在 git 之外;如果你手动创建,请自己添加到 `.gitignore` | 单个项目的个人覆盖,以及在共享前的测试 |409| 项目本地 | `.claude/settings.local.json` | 仅限您,且仅在这一个项目中。Claude Code 在创建该文件时会将其排除在 git 之外;如果您手动创建,请自行将其添加到 `.gitignore` | 针对单个项目的个人覆盖,以及共享前的测试 |

410| 托管 | `managed-settings.json` 和其他[托管来源](/docs/zh-CN/managed-settings#delivery-mechanisms) | 您的组织部署到的所有人;[设置优先级](#settings-precedence)说明了哪些内容可以覆盖它 | 安全策略和合规要求 |410| 托管 | `managed-settings.json` 和其他[托管来源](/docs/zh-CN/managed-settings#delivery-mechanisms) | 您的组织部署到的所有人;[设置优先级](#settings-precedence)说明了哪些内容可以覆盖它 | 安全策略和合规要求 |

411 411 

412在"文件"列中,`~/.claude` 是你主目录中的 `.claude` 文件夹,而单独的 `.claude` 是项目内的 `.claude` 文件夹。412在"文件"列中,`~/.claude` 是您主目录中的 `.claude` 文件夹,而单独的 `.claude` 是项目内的 `.claude` 文件夹。

413 413 

414<span id="where-each-file-applies" />414<span id="where-each-file-applies" />

415 415 


419 比较每个设置文件的作用域419 比较每个设置文件的作用域

420</h3>420</h3>

421 421 

422假设你在机器上有三个项目:`website/`、`api/` 和 `acme-app/`,一个队友有他们自己的 `acme-app/` 克隆,你在 `acme-app/` 上启动了一个[云会话](#settings-in-cloud-sessions)。422假设您的机器上有三个项目:`website/`、`api/` 和 `acme-app/`,一位队友有自己的 `acme-app/` 克隆,并且您在 `acme-app/` 上启动了一个[云端会话](#settings-in-cloud-sessions)。

423 423 

424下面的图表显示当你从这些文件夹启动 Claude Code 时,设置应用在哪些文件夹中。点击一个设置文件查看它到达的文件夹。424下图显示了当您从这些文件夹启动 Claude Code 时,设置会在哪些文件夹中生效。点击某个设置文件即可查看它覆盖到的文件夹。

425 425 

426<SettingsScope />426<SettingsScope />

427 427 

428* **`~/.claude/settings.json`**:你机器上的每个项目,以及队友机器上或云会话中都没有428* **`~/.claude/settings.json`**:您机器上的每个项目,而队友的机器上和云端会话中都不会生效

429* **`acme-app/.claude/settings.json`**:你的 `acme-app/`。只有当你将文件提交到版本控制时,它才会到达你队友的克隆和云会话;在此之前,它就像任何其他磁盘上的文件一样,其他人没有它429* **`acme-app/.claude/settings.json`**:您的 `acme-app/`。只有当您将该文件提交到版本控制后,它才会覆盖到队友的克隆和云端会话;在此之前,它只是您磁盘上的一个普通文件,其他人都没有它

430* **`acme-app/.claude/settings.local.json`**:仅你的 `acme-app/`。Claude Code 第一次写入文件时将其添加到你的全局 git 排除项中,因此它不会进入你的提交;如果你手动创建文件,[自己添加到 `.gitignore`](#keep-personal-settings-out-of-a-repository)430* **`acme-app/.claude/settings.local.json`**:仅您的 `acme-app/`。Claude Code 第一次写入该文件时会将其添加到您的全局 git 排除项中,因此它不会进入您的提交;如果您手动创建该文件,请[自行将其添加到 `.gitignore`](#keep-personal-settings-out-of-a-repository)

431* **托管设置**,无论是 `managed-settings.json` 文件、MDM 策略,还是来自 claude.ai 控制台的[服务器托管设置](/docs/zh-CN/server-managed-settings):你的组织部署到的每台机器上的每个项目,或你使用组织账户登录的地方。只有服务器托管设置到达云会话431* **托管设置**,无论是 `managed-settings.json` 文件、MDM 策略,还是来自 claude.ai 控制台的[服务器托管设置](/docs/zh-CN/server-managed-settings):您的组织部署到的每台机器上的每个项目,或您使用组织账户登录的每台机器上的每个项目。只有服务器托管设置会覆盖到云端会话

432 432 

433<span id="which-files-you-have" />433<span id="which-files-you-have" />

434 434 

435<h3 id="find-or-create-your-settings-files">435<h3 id="find-or-create-your-settings-files">

436 查找或创建你的设置文件436 查找或创建设置文件

437</h3>437</h3>

438 438 

439安装 Claude Code 不会创建任何设置文件。如果你的机器或项目已经有一个,它来自以下来源之一:439安装 Claude Code 不会创建任何设置文件。如果您的机器或项目中已经有设置文件,它来自以下来源之一:

440 440 

441* **托管**:你的组织部署它。你不创建或编辑它。441* **托管**:由您的组织部署。您无需创建或编辑它。

442* **共享项目**:已经使用 Claude Code 的项目可能已提交一个。如果没有,在项目文件夹中的 `.claude/settings.json` 创建一个。442* **共享项目**:已经使用 Claude Code 的项目可能已提交了该文件。如果没有,请在项目文件夹中的 `.claude/settings.json` 创建它。

443* **用户**和**项目本地**:自己创建它们,或让 Claude Code 创建它们。当你在 `/config` 菜单中更改存储在用户设置中的选项(如主题)时,它会写入 `~/.claude/settings.json`,当你在权限提示上给予常设批准(如对 Bash 命令的"是的,不要再问")时,它会写入 `.claude/settings.local.json`。一些 `/config` 选项,包括**显示提示**,保存到 `.claude/settings.local.json` 而不是用户文件。443* **用户**和**项目本地**:您可以自行创建,也可以让 Claude Code 创建。当您第一次在 `/config` 菜单中更改存储在用户设置中的选项(例如主题)时,它会写入 `~/.claude/settings.json`;当您第一次在权限提示上给予常设批准(例如对 Bash 命令选择"Yes, and don't ask again")时,它会写入 `.claude/settings.local.json`。少数 `/config` 选项(包括 **Show tips**)会保存到 `.claude/settings.local.json`,而不是用户文件。

444 444 

445<Info>445<Info>

446 在 Windows 上,`~/.claude` 表示 `%USERPROFILE%\.claude`。要将主目录文件保存在其他地方,设置 [`CLAUDE_CONFIG_DIR`](/docs/zh-CN/env-vars);Claude Code 然后将你的设置、会话历史和 plugins 存储在那里。446 在 Windows 上,`~/.claude` 表示 `%USERPROFILE%\.claude`。要将主目录中的文件保存在其他位置,请设置 [`CLAUDE_CONFIG_DIR`](/docs/zh-CN/env-vars);Claude Code 随后会将您的设置、会话历史和插件存储在该位置。

447</Info>447</Info>

448 448 

449Claude Code 还保留第五个文件 [`~/.claude.json`](/docs/zh-CN/claude-directory#ce-claude-json),它为自己写入;你不需要编辑它。它保存你的登录会话、[MCP server](/docs/zh-CN/mcp) 配置、每个项目的状态(如信任决定),以及 `/config` 为你写入的[全局配置键](/docs/zh-CN/settings-reference#global-config-settings)。449Claude Code 还会保留第五个文件 [`~/.claude.json`](/docs/zh-CN/claude-directory#ce-claude-json),由它自行写入;您无需编辑它。该文件保存您的登录会话、[MCP 服务器](/docs/zh-CN/mcp)配置、每个项目的状态(例如信任决定),以及 `/config` 为您写入的[全局配置键](/docs/zh-CN/settings-reference#global-config-settings)。

450 450 

451<h3 id="share-settings-with-your-team">451<h3 id="share-settings-with-your-team">

452 与你的团队共享设置452 与团队共享设置

453</h3>453</h3>

454 454 

455提交 `.claude/settings.json` 以便克隆仓库的每个人都获得相同的权限、hooks 和 plugins。每个队友仍然可以在他们自己的 `.claude/settings.local.json` 中为自己覆盖它,因此个人例外不需要提交。有关完整的团队文件,请参阅[团队的共享设置](/docs/zh-CN/settings-example#a-teams-shared-settings)。455提交 `.claude/settings.json`,以便克隆仓库的每个人都获得相同的权限、hook 和插件。每位队友仍可以在自己的 `.claude/settings.local.json` 中为自己覆盖它,因此个人例外无需提交。有关完整的团队文件,请参阅[团队的共享设置](/docs/zh-CN/settings-example#a-teams-shared-settings)。

456 456 

457你提交的一些内容等待每个队友[信任文件夹](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust),少数键永远不会从仓库文件生效;[排查不适用的设置](#common-cases)涵盖两者。457您提交的部分内容要等到每位队友[信任该文件夹](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)后才会生效,还有少数键永远不会从仓库文件中生效;[排查不生效的设置](#common-cases)涵盖了这两种情况。

458 458 

459<span id="local-settings-file" />459<span id="local-settings-file" />

460 460 


468 将个人设置保留在仓库之外468 将个人设置保留在仓库之外

469</h3>469</h3>

470 470 

471要在一个项目中为自己更改设置而不为队友更改,请在项目内的 `.claude/settings.local.json` 中保存它。Claude Code 在提交的 `.claude/settings.json` 上应用该文件,因此如果你的团队文件设置 `"model": "claude-sonnet-5"` 而你想要 Opus,在你的本地文件中放入 `"model": "claude-opus-5-5"`,只有你的会话会改变。471要在某个项目中仅为自己更改设置而不影响队友,请将其保存在项目内的 `.claude/settings.local.json` 中。Claude Code 会在已提交的 `.claude/settings.json` 之上应用该文件,因此如果团队文件设置了 `"model": "claude-sonnet-5"` 而您想使用 Opus,请在本地文件中放入 `"model": "claude-opus-5-5"`,这样只有您的会话会发生变化。

472 472 

473Claude Code 也会写入此文件,将其保留在你的提交之外,并应用其允许规则而无需信任步骤:473Claude Code 也会写入此文件,将其排除在您的提交之外,并且无需信任步骤即可应用其允许规则:

474 474 

475* **Claude Code 也会写入它。** 当 Claude 要求运行 Bash 命令的权限,你选择"是的,不要再问"时,Claude Code 将该[权限批准](/docs/zh-CN/permissions#permission-system)保存为此处的 `allow` 规则。475* **Claude Code 也会写入它。** 当 Claude 请求运行 Bash 命令的权限而您选择"Yes, and don't ask again"时,Claude Code 会将该[权限批准](/docs/zh-CN/permissions#permission-system)作为 `allow` 规则保存在此处。

476* **除非你手动创建,否则你不需要 gitignore 它。** Claude Code 第一次在不已忽略它的 git 仓库中写入文件时,它会将 `**/.claude/settings.local.json` 添加到你的全局 git 排除文件中,因此该文件在每个仓库中都不会进入你的提交。该文件是 `core.excludesFile`(当你的全局 git 配置将其设置为绝对路径或 `~` 前缀路径时);否则是 `$XDG_CONFIG_HOME/git/ignore`,或当 `XDG_CONFIG_HOME` 未设置时是 `~/.config/git/ignore`。如果你手动创建了文件,Claude Code 还没有写入它,请自己添加到 `.gitignore`。476* **您无需自行将其加入 gitignore,除非您是手动创建的。** Claude Code 第一次在尚未忽略该文件的 git 仓库中写入它时,会将 `**/.claude/settings.local.json` 添加到您的全局 git 排除文件中,因此该文件在每个仓库中都不会进入您的提交。当您的全局 git 配置将 `core.excludesFile` 设置为绝对路径或以 `~` 开头的路径时,该排除文件就是 `core.excludesFile`;否则为 `$XDG_CONFIG_HOME/git/ignore`,或在未设置 `XDG_CONFIG_HOME` 时为 `~/.config/git/ignore`。如果您手动创建了该文件且 Claude Code 尚未写入它,请自行将其添加到 `.gitignore`。

477* **当文件保持未跟踪时,其允许规则不等待信任。** 因为文件是你的而不是仓库的,Claude Code 应用其 `allow` 规则而无需它对提交文件要求的[工作区信任](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)步骤。如果文件被 git 跟踪,信任步骤也适用于它;请参阅[当你的本地设置文件需要信任](/docs/zh-CN/permissions#when-your-local-settings-file-needs-trust)。477* **只要文件保持未跟踪状态,其允许规则就无需等待信任。** 由于该文件属于您而不属于仓库,Claude Code 会应用其 `allow` 规则,而无需经过已提交文件所要求的[工作区信任](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)步骤。如果该文件被 git 跟踪,信任步骤同样适用于它;请参阅[本地设置文件何时需要信任](/docs/zh-CN/permissions#when-your-local-settings-file-needs-trust)。

478 478 

479<span id="where-claude-code-looks-for-each-file" />479<span id="where-claude-code-looks-for-each-file" />

480 480 


483<span id="local-allow-rules-dont-wait-for-workspace-trust" />483<span id="local-allow-rules-dont-wait-for-workspace-trust" />

484 484 

485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">

486 Claude Code 在 git 仓库中保留本地文件的位置486 Claude Code 在 git 仓库中保存本地文件的位置

487</h4>487</h4>

488 488 

489当 Claude 要求运行 Bash 命令的权限,你选择"是的,不要再问"时,Claude Code 将该批准保存为 `.claude/settings.local.json` 中的 `allow` 规则。如果你在 git 仓库的子目录中启动 Claude Code,它会在仓库根目录读取和写入该文件,并在整个仓库中应用批准。在[worktree](/docs/zh-CN/worktrees) 中,它使用主检出根目录处的文件。489当 Claude 请求运行 Bash 命令的权限而您选择"Yes, and don't ask again"时,Claude Code 会将该批准作为 `allow` 规则保存在 `.claude/settings.local.json` 中。如果您在 git 仓库的子目录中启动 Claude Code,它会在仓库根目录读取和写入该文件,并在整个仓库中应用该批准。在 [worktree](/docs/zh-CN/worktrees) 中,它使用主检出根目录下的文件。

490 490 

491两条规则限定根位置:491有两条规则对根目录位置加以限定:

492 492 

493* **当文件与 `.claude/settings.json` 保持在一起时**:在 git 仓库之外,当仓库根是你的主目录时,在 Windows 上,或当仓库根或其 `.git` 或 `.claude` 条目不由你的用户拥有时。493* **文件改为与 `.claude/settings.json` 放在一起的情况**:在 git 仓库之外、仓库根目录是您的主目录时、在 Windows 上,或者仓库根目录或其 `.git` 或 `.claude` 条目不归您的用户所有时。

494* **文件中的路径不在仓库根处锚定**:以 `/` 开头的权限规则或相对沙箱路径[在会话的主工作目录处锚定](/docs/zh-CN/permissions#read-and-edit)。494* **文件中的路径不以仓库根目录为锚点**:以 `/` 开头的权限规则或相对沙箱路径改为[以会话的主工作目录为锚点](/docs/zh-CN/permissions#read-and-edit)。

495 495 

496在 v2.1.211 之前,Claude Code 将文件保留在启动目录中。它仍然读取早期版本在根文件旁边留下的文件;当两者设置相同的键时,根的值适用,两个文件的权限规则都适用。Agent SDK 的 [`resolveSettings()`](/docs/zh-CN/agent-sdk/typescript#resolvesettings) 助手始终从启动目录读取文件。496在 v2.1.211 之前,Claude Code 将该文件保存在启动目录中。它仍会读取早期版本留在那里的文件,并与根目录文件一同读取;当两者设置了相同的键时,以根目录文件的值为准,而两个文件中的权限规则都会生效。Agent SDK 的 [`resolveSettings()`](/docs/zh-CN/agent-sdk/typescript#resolvesettings) 辅助函数始终从启动目录读取该文件。

497 497 

498Claude Code 从会话的[主工作目录](/docs/zh-CN/permissions#working-directories)读取共享的 `.claude/settings.json`,因此要使用在仓库根处提交的文件,请从那里启动 Claude Code。在你[使用 `/cd` 移动会话](/docs/zh-CN/permissions#move-the-session-to-another-directory)后,Claude Code 改为从新目录读取两个项目文件,按相同规则放置本地文件。从你移动到的目录读取它们需要 Claude Code v2.1.246 或更高版本。498Claude Code 从会话的[主工作目录](/docs/zh-CN/permissions#working-directories)读取共享的 `.claude/settings.json`,因此要使用提交在仓库根目录的文件,请从那里启动 Claude Code。在您[使用 `/cd` 移动会话](/docs/zh-CN/permissions#move-the-session-to-another-directory)后,Claude Code 会改为从新目录读取这两个项目文件,并按相同规则放置本地文件。从您移动到的目录读取它们需要 Claude Code v2.1.246 或更高版本。

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


508<span id="settings-your-organization-manages" />508<span id="settings-your-organization-manages" />

509 509 

510<h3 id="check-what-your-organization-enforces">510<h3 id="check-what-your-organization-enforces">

511 检查你的组织强制执行的内容511 检查组织强制执行的内容

512</h3>512</h3>

513 513 

514如果你的组织管理 Claude Code,某些设置是为你决定的,你在自己的文件中放入的任何内容都不会改变它们。要查看哪些,运行 `/status`:`Setting sources` 行命名适用于你的托管来源。托管设置在这台机器上 Claude Code 运行的任何地方都适用;[开发人员可以更改的内容](/docs/zh-CN/managed-settings#what-a-developer-can-change)涵盖本地管理员权限和 Claude Code 以外的工具。514如果您的组织管理 Claude Code,某些设置已由组织为您决定,您在自己的文件中放入的任何内容都无法更改它们。要查看是哪些设置,请运行 `/status`:`Setting sources` 行会列出适用于您的托管来源。托管设置在这台机器上 Claude Code 运行的任何位置都会生效;[开发人员可以更改的内容](/docs/zh-CN/managed-settings#what-a-developer-can-change)介绍了本地管理员权限以及 Claude Code 以外的工具。

515 515 

516托管设置通过托管设置页面上的[交付机制](/docs/zh-CN/managed-settings#delivery-mechanisms)到达你,最常见的是:516托管设置通过托管设置页面上介绍的[交付机制](/docs/zh-CN/managed-settings#delivery-mechanisms)送达您,最常见的是:

517 517 

518* [服务器托管设置](/docs/zh-CN/server-managed-settings),Claude Code 从 claude.ai 管理控制台或自托管的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 获取518* [服务器托管设置](/docs/zh-CN/server-managed-settings),由 Claude Code 从 claude.ai 管理控制台或自托管的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 获取

519* MDM 或操作系统级别的策略,以及系统目录中的 `managed-settings.json` 文件519* MDM 或操作系统级别的策略,以及系统目录中的 `managed-settings.json` 文件

520* 嵌入主机(如 Claude Desktop),通过 SDK `managedSettings` 选项;请参阅[从嵌入主机控制策略](/docs/zh-CN/managed-settings#parent-settings-from-embedding-hosts)520* 嵌入主机(例如 Claude Desktop),通过 SDK `managedSettings` 选项提供;请参阅[从嵌入主机控制策略](/docs/zh-CN/managed-settings#parent-settings-from-embedding-hosts)

521 521 

522在在 Claude Desktop 应用中在你的机器上运行的 [Cowork](https://claude.com/docs/cowork/overview) 会话中,Claude Code 不会从 claude.ai 管理控制台获取服务器托管设置,它读取部署到你的设备的策略,除非你的组织的 Claude Desktop 配置设置 `requireCoworkFullVmSandbox`。[策略应用的位置和时间](/docs/zh-CN/managed-settings#where-and-when-a-policy-applies)涵盖 Cowork 和云会话。522在 Claude Desktop 应用中于您的机器上运行的 [Cowork](https://claude.com/docs/cowork/overview) 会话中,Claude Code 不会从 claude.ai 管理控制台获取服务器托管设置,并且会读取部署到您设备上的策略,除非您组织的 Claude Desktop 配置设置了 `requireCoworkFullVmSandbox`。[策略的生效位置和时间](/docs/zh-CN/managed-settings#where-and-when-a-policy-applies)介绍了 Cowork 和云端会话的情况。

523 523 

524如果你是管理员,[为你的组织设置 Claude Code](/docs/zh-CN/admin-setup) 介绍了选择要强制执行的内容,[部署托管设置](/docs/zh-CN/managed-settings)涵盖交付以及如何确认策略生效。524如果您是管理员,[为组织设置 Claude Code](/docs/zh-CN/admin-setup) 将引导您选择要强制执行的内容,[部署托管设置](/docs/zh-CN/managed-settings)介绍了交付方式以及如何确认策略已生效。有关 claude.ai 管理控制台中托管设置编辑器可能显示的警告,请参阅[配置服务器托管设置](/docs/zh-CN/server-managed-settings#configure-server-managed-settings)。

525 525 

526<h2 id="change-a-setting">526<h2 id="change-a-setting">

527 更改设置527 更改设置


809 809 

810[云会话](/docs/zh-CN/claude-code-on-the-web)在[云环境](/docs/zh-CN/cloud-environments)中运行在您的存储库的新克隆上,而不是在您的机器上。这改变了哪些设置到达它:810[云会话](/docs/zh-CN/claude-code-on-the-web)在[云环境](/docs/zh-CN/cloud-environments)中运行在您的存储库的新克隆上,而不是在您的机器上。这改变了哪些设置到达它:

811 811 

812* **共享项目设置** (`.claude/settings.json`):在一个存储库的会话中读取,因为该文件是克隆的一部分,会话在其中启动。在那里提交设置以在这些会话中应用它。具有多个存储库的会话在克隆上方启动,因此从每个存储库的 `.claude/settings.json` 仅读取 `enabledPlugins` 和 `extraKnownMarketplaces` 键,而不是权限规则、hooks、`env` 或其他键。这些两个键声明的市场和插件仍然[不在云会话中加载](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)。812* **共享项目设置**(`.claude/settings.json`):在只有一个仓库的会话中会被读取,因为该文件是克隆的一部分,且会话在其中启动。将设置提交到该文件中,即可在这些会话中应用。在 Anthropic 托管的环境中,包含多个仓库的会话会在各克隆的上层目录启动,并且只从每个仓库的 `.claude/settings.json` 中读取 `enabledPlugins` 和 `extraKnownMarketplaces` 这两个键,而不会读取权限规则、hook、`env` 或其他键。这两个键所声明的市场和插件仍然[不会在云端会话中加载](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)。对于自托管环境,请参阅[应用哪个仓库的设置](/docs/zh-CN/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories)。

813* **用户和项目本地设置** (`~/.claude/settings.json` 和 `.claude/settings.local.json`):不读取。两者都保持在您的机器上,本地文件不在克隆中。813* **用户和项目本地设置** (`~/.claude/settings.json` 和 `.claude/settings.local.json`):不读取。两者都保持在您的机器上,本地文件不在克隆中。

814* **托管设置**:您设备上的 `managed-settings.json` 文件或 MDM 配置文件不会到达云会话。您组织的[服务器管理设置](/docs/zh-CN/server-managed-settings)会;[表面覆盖](/docs/zh-CN/model-config#surface-coverage)列出哪些云会话接收它们。[自托管环境](/docs/zh-CN/self-hosted-environments)也读取其运行器镜像中的托管设置文件。[Claude Code 如何组合托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)说该文件何时适用。814* **托管设置**:您设备上的 `managed-settings.json` 文件或 MDM 配置文件不会到达云会话。您组织的[服务器管理设置](/docs/zh-CN/server-managed-settings)会;[表面覆盖](/docs/zh-CN/model-config#surface-coverage)列出哪些云会话接收它们。[自托管环境](/docs/zh-CN/self-hosted-environments)也读取其运行器镜像中的托管设置文件。[Claude Code 如何组合托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)说该文件何时适用。

815* **`/config`**:在您的浏览器中的 claude.ai/code,打开您的 claude.ai 设置的 Claude Code 部分而不是更改值。要为云会话更改设置,在环境上设置[环境变量](/docs/zh-CN/cloud-environments#set-environment-variables),或在具有一个存储库的会话中,将键提交到该存储库的 `.claude/settings.json`。815* **`/config`**:在您的浏览器中的 claude.ai/code,打开您的 claude.ai 设置的 Claude Code 部分而不是更改值。要为云会话更改设置,在环境上设置[环境变量](/docs/zh-CN/cloud-environments#set-environment-variables),或在具有一个存储库的会话中,将键提交到该存储库的 `.claude/settings.json`。

setup.md +20 −10

Details

638 638 

639要删除 Claude Code,请按照您的安装方法的说明进行操作。如果之后 `claude` 仍然运行,您可能有第二个安装或来自较旧安装程序的遗留 shell 别名。请参阅[检查冲突的安装](/docs/zh-CN/troubleshoot-install#check-for-conflicting-installations)以查找并删除它。639要删除 Claude Code,请按照您的安装方法的说明进行操作。如果之后 `claude` 仍然运行,您可能有第二个安装或来自较旧安装程序的遗留 shell 别名。请参阅[检查冲突的安装](/docs/zh-CN/troubleshoot-install#check-for-conflicting-installations)以查找并删除它。

640 640 

641<h3 id="native-installation">641<span id="native-installation" />

642 原生安装642 

643<h3 id="uninstall-a-native-installation">

644 卸载原生安装

643</h3>645</h3>

644 646 

645删除 Claude Code 二进制文件和版本文件:647删除 Claude Code 二进制文件和版本文件:


660 </Tab>662 </Tab>

661</Tabs>663</Tabs>

662 664 

663<h3 id="homebrew-installation">665<span id="homebrew-installation" />

664 Homebrew 安装666 

667<h3 id="uninstall-with-homebrew">

668 使用 Homebrew 卸载

665</h3>669</h3>

666 670 

667删除您安装的 Homebrew cask。如果您安装了稳定版 cask:671删除您安装的 Homebrew cask。如果您安装了稳定版 cask:


676brew uninstall --cask claude-code@latest680brew uninstall --cask claude-code@latest

677```681```

678 682 

679<h3 id="winget-installation">683<span id="winget-installation" />

680 WinGet 安装684 

685<h3 id="uninstall-with-winget">

686 使用 WinGet 卸载

681</h3>687</h3>

682 688 

683删除 WinGet 包:689删除 WinGet 包:


686winget uninstall Anthropic.ClaudeCode692winget uninstall Anthropic.ClaudeCode

687```693```

688 694 

689<h3 id="apt-/-dnf-/-apk">695<span id="apt-/-dnf-/-apk" />

690 apt / dnf / apk696 

697<h3 id="uninstall-with-apt-dnf-or-apk">

698 使用 apt、dnf 或 apk 卸载

691</h3>699</h3>

692 700 

693删除包和存储库配置:701删除包和存储库配置:


716 </Tab>724 </Tab>

717</Tabs>725</Tabs>

718 726 

719<h3 id="npm">727<span id="npm" />

720 npm728 

729<h3 id="uninstall-with-npm">

730 使用 npm 卸载

721</h3>731</h3>

722 732 

723删除全局 npm 包:733删除全局 npm 包:

skills.md +2 −0

Details

94| `migrate` | 将您现有的 Claude API 代码更新到更新的模型 | 早于 v2.1.221 |94| `migrate` | 将您现有的 Claude API 代码更新到更新的模型 | 早于 v2.1.221 |

95| `upgrade` | 跨主要版本移动您的项目的 Anthropic SDK 依赖项,目前是 Python `anthropic` 包从 0.x 到 1.x | v2.1.236 或更高版本 |95| `upgrade` | 跨主要版本移动您的项目的 Anthropic SDK 依赖项,目前是 Python `anthropic` 包从 0.x 到 1.x | v2.1.236 或更高版本 |

96| `managed-agents-onboard` | 逐步完成创建新的托管代理 | 早于 v2.1.221 |96| `managed-agents-onboard` | 逐步完成创建新的托管代理 | 早于 v2.1.221 |

97| `managed-agents-onboard <url>` | 构建该 URL 所指页面描述的 Managed Agent,例如 [Managed Agents 文档](https://platform.claude.com/docs/en/managed-agents/overview)中的某个页面 | v2.1.290 或更高版本 |

98| `managed-agents-onboard <quickstart-name>` | 构建 Console 的某个快速入门模板,例如 `deep-researcher`。如果您提供的单个词不是模板名称,Claude 会列出有效的名称 | v2.1.290 或更高版本 |

97| `prompt-audit` | 标记为旧模型编写的指令在您的提示、技能和工具描述中,并提议修复作为差异 | v2.1.221 或更高版本 |99| `prompt-audit` | 标记为旧模型编写的指令在您的提示、技能和工具描述中,并提议修复作为差异 | v2.1.221 或更高版本 |

98| `cost-optimize` | 分析您的项目的 Claude API 支出去向,并提议从提示缓存、修剪不需要的输入和输出令牌、批处理、工作量和模型选择等选项中节省成本,一次一个更改 | v2.1.247 或更高版本 |100| `cost-optimize` | 分析您的项目的 Claude API 支出去向,并提议从提示缓存、修剪不需要的输入和输出令牌、批处理、工作量和模型选择等选项中节省成本,一次一个更改 | v2.1.247 或更高版本 |

99| `build-eval` | 为您的 Claude 驱动的应用构建评估集 | v2.1.259 或更高版本 |101| `build-eval` | 为您的 Claude 驱动的应用构建评估集 | v2.1.259 或更高版本 |

sub-agents.md +4 −2

Details

609主对话的权限模式决定 Claude Code 是否使用您设置的值:609主对话的权限模式决定 Claude Code 是否使用您设置的值:

610 610 

611* 当主对话在 `bypassPermissions`、`acceptEdits` 或 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 时,subagent 在该相同模式中运行,Claude Code 忽略您设置的 `permissionMode`。在自动模式下,分类器使用主对话的块和允许规则评估 subagent 的工具调用。当 subagent 完成时,分类器也会在报告被传递之前审查其工作和最终报告,如 [How auto mode handles subagents](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 所述。611* 当主对话在 `bypassPermissions`、`acceptEdits` 或 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 时,subagent 在该相同模式中运行,Claude Code 忽略您设置的 `permissionMode`。在自动模式下,分类器使用主对话的块和允许规则评估 subagent 的工具调用。当 subagent 完成时,分类器也会在报告被传递之前审查其工作和最终报告,如 [How auto mode handles subagents](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 所述。

612* 当主对话在 `default`、`dontAsk` 或 `plan` 模式时,subagent 在您设置的权限模式中运行,除了 `bypassPermissions`。声明 `bypassPermissions` 的 subagent 改为保持主对话的模式。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更高版本。612* 当主对话处于 `default`、`dontAsk` 或 `plan` 模式时,子代理会在您设置的权限模式下运行。在以下情况下,它会改为保持主对话的权限模式:

613 * 您设置了 `bypassPermissions`。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更高版本。

614 * 您设置了 `auto`,但子代理[无法使用自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode),例如某个设置文件设置了 [`disableAutoMode`](/docs/zh-CN/settings-reference#disableautomode),或子代理的模型不支持自动模式。

613 615 

614`permissionMode` 接受这些值,以及 `manual` 作为 `default` 的别名:616`permissionMode` 接受这些值,以及 `manual` 作为 `default` 的别名:

615 617 


640Implement API endpoints. Follow the conventions and patterns from the preloaded skills.642Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

641```643```

642 644 

643每个列出的技能的完整内容被注入到 subagent 的上下文中。此字段控制哪些技能被预加载,而不是 subagent 可以访问哪些技能:没有它,subagent 仍然可以在执行期间通过 Skill 工具发现和调用项目、用户和 plugin 技能。要防止 subagent 完全调用技能,请从 [`tools`](#available-tools) 列表中省略 `Skill` 或将其添加到 `disallowedTools`。645每个列出的 skill 的完整内容会在启动时注入到子代理的上下文中,最多为列表中前 32 个不同的名称。此字段控制预加载哪些 skill,而不是子代理可以访问哪些 skill:即使没有此字段,子代理仍然可以在执行期间通过 Skill 工具发现和调用项目、用户和插件 skill。要完全阻止子代理调用 skill,请从 [`tools`](#available-tools) 列表中省略 `Skill`,或将其添加到 `disallowedTools`。

644 646 

645您无法预加载设置了 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill) 的 skill,因为预加载的来源与 Claude 可以调用的 skill 集合相同。这包括内置的 `/verify` skill,Claude 无法自行运行它。647您无法预加载设置了 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill) 的 skill,因为预加载的来源与 Claude 可以调用的 skill 集合相同。这包括内置的 `/verify` skill,Claude 无法自行运行它。

646 648 

Details

666 666 

667* WebFetch 拒绝 `localhost` 和任何其他没有点的主机名,例如裸露的内网名称,在发出请求之前。它返回的[错误](/docs/zh-CN/errors#webfetch-cannot-fetch-localhost)告诉 Claude 通过 Bash 使用 `curl` 到达本地服务器。667* WebFetch 拒绝 `localhost` 和任何其他没有点的主机名,例如裸露的内网名称,在发出请求之前。它返回的[错误](/docs/zh-CN/errors#webfetch-cannot-fetch-localhost)告诉 Claude 通过 Bash 使用 `curl` 到达本地服务器。

668* HTTP URL 会自动升级到 HTTPS。668* HTTP URL 会自动升级到 HTTPS。

669* 大型页面在处理前会被截断到固定的字符限制。669* WebFetch 每次调用最多读取页面内容的 100,000 个字符。在 Claude Code v2.1.290 或更高版本上,对于更长的页面,结果会告知 Claude 有多少内容未被读取,以便 Claude 可以获取下一部分。

670* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。670* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。

671* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。671* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。

672* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。672* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。

Details

6 6 

7> 修复安装或登录 Claude Code 时出现的命令未找到、PATH、权限、网络和身份验证错误。7> 修复安装或登录 Claude Code 时出现的命令未找到、PATH、权限、网络和身份验证错误。

8 8 

9如果安装失败或无法登录,请在下面找到您的错误。有关 Claude Code 正常工作后的运行时问题,请参阅 [Troubleshooting](/docs/zh-CN/troubleshooting)。有关配置问题(例如设置未应用或 hooks 未触发),请参阅 [Debug your configuration](/docs/zh-CN/debug-your-config)。9如果安装失败或无法登录,请在下面找到您的错误。有关 Claude Code 正常工作后的运行时问题,请参阅[故障排除](/docs/zh-CN/troubleshooting)。有关配置问题(例如设置未应用或 hook 未触发),请参阅[调试您的配置](/docs/zh-CN/debug-your-config)。

10 10 

11<h2 id="find-your-error">11<h2 id="find-your-error">

12 查找您的错误12 查找您的错误


17| 您看到的内容 | 解决方案 |17| 您看到的内容 | 解决方案 |

18| :- | :- |18| :- | :- |

19| `command not found: claude` 或 `'claude' is not recognized` | [修复您的 PATH](#command-not-found-claude-after-installation) |19| `command not found: claude` 或 `'claude' is not recognized` | [修复您的 PATH](#command-not-found-claude-after-installation) |

20| `Native installation exists but ... is not in your PATH` | [将安装目录添加到您的 PATH](#verify-your-path) |

21| `where.exe claude` 返回 `INFO: Could not find files for the given pattern(s).` | [检查 Claude Code 是否已安装](#check-for-conflicting-installations) |

22| `zsh: permission denied: /Users/you/.zshrc` 或 `bash: /home/you/.bashrc: Permission denied` | [使您的 shell 配置文件可写](#permission-denied-when-adding-to-your-path) |

20| `syntax error near unexpected token '<'` | [安装脚本返回 HTML](#install-script-returns-html-instead-of-a-shell-script) |23| `syntax error near unexpected token '<'` | [安装脚本返回 HTML](#install-script-returns-html-instead-of-a-shell-script) |

24| CMD 中出现 `< was unexpected at this time` | [安装脚本返回 HTML](#install-script-returns-html-instead-of-a-shell-script) |

25| `The term 'System.Xml.XmlDocument' is not recognized` | [安装脚本返回 HTML](#install-script-returns-html-instead-of-a-shell-script) |

21| `curl: (22) The requested URL returned error: 403` | [安装脚本返回 403](#install-script-returns-html-instead-of-a-shell-script) |26| `curl: (22) The requested URL returned error: 403` | [安装脚本返回 403](#install-script-returns-html-instead-of-a-shell-script) |

22| `curl: (23)` 或 `curl: (56) Failure writing output to destination` | [检查连接或使用替代安装程序](#curl-56-failure-writing-output-to-destination) |27| `curl: (23)` 或 `curl: (56) Failure writing output to destination` | [检查连接或使用替代安装程序](#curl-56-failure-writing-output-to-destination) |

23| Linux 上安装期间 `Killed`,或 `Installation was killed before it could finish (exit code 137)` | [释放内存或添加交换空间](#install-killed-on-low-memory-linux-servers) |28| Linux 上安装期间出现 `Killed` | [释放内存或添加交换空间](#install-killed-on-low-memory-linux-servers) |

29| `Installation was killed before it could finish` | [释放内存,然后重新运行安装程序](#installation-was-killed-before-it-could-finish) |

24| 安装期间 `Raw mode is not supported` | [重新运行安装程序](#raw-mode-is-not-supported-during-install) |30| 安装期间 `Raw mode is not supported` | [重新运行安装程序](#raw-mode-is-not-supported-during-install) |

25| 安装期间 `EACCES: permission denied` | [修复安装目录的权限](#permission-errors-during-installation) |31| 安装期间 `EACCES: permission denied` | [修复安装目录的权限](#permission-errors-during-installation) |

26| `TLS connect error` 或 `SSL/TLS secure channel` | [更新 CA 证书](#tls-or-ssl-connection-errors) |32| `TLS connect error` 或 `SSL/TLS secure channel` | [更新 CA 证书](#tls-or-ssl-connection-errors) |

33| `CRYPT_E_NO_REVOCATION_CHECK` 或 `CRYPT_E_REVOCATION_OFFLINE` | [绕过被阻止的吊销检查](#tls-or-ssl-connection-errors) |

27| `Failed to fetch version` 或无法访问下载服务器 | [检查网络和代理设置](#check-network-connectivity) |34| `Failed to fetch version` 或无法访问下载服务器 | [检查网络和代理设置](#check-network-connectivity) |

35| `The connection dropped while downloading the update` 或 `Download timed out: exceeded the total deadline` | [再次运行更新或设置您的代理](#the-connection-dropped-while-downloading-the-update) |

28| `irm is not recognized` 或 `The token '&&' is not a valid statement separator` | [对您的 shell 使用正确的命令](#wrong-install-command-on-windows) |36| `irm is not recognized` 或 `The token '&&' is not a valid statement separator` | [对您的 shell 使用正确的命令](#wrong-install-command-on-windows) |

29| `Cask 'claude-code' is unavailable: No Cask with this name exists` | [更新 Homebrew](#homebrew-cask-unavailable-or-outdated) |37| `Cask 'claude-code' is unavailable: No Cask with this name exists` | [更新 Homebrew](#homebrew-cask-unavailable-or-outdated) |

38| `Cask 'claude-code@latest' is not installed` | [升级您已安装的 cask](#cask-is-not-installed) |

30| `'bash' is not recognized as the name of a cmdlet` | [使用 Windows 安装程序命令](#wrong-install-command-on-windows) |39| `'bash' is not recognized as the name of a cmdlet` | [使用 Windows 安装程序命令](#wrong-install-command-on-windows) |

31| `A parameter cannot be found that matches parameter name 'fsSL'` | [使用 Windows 安装程序命令](#wrong-install-command-on-windows) |40| `A parameter cannot be found that matches parameter name 'fsSL'` | [使用 Windows 安装程序命令](#wrong-install-command-on-windows) |

32| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [安装 shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |41| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [安装 shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |


50| `OAuth error` 或 `403 Forbidden` | [修复身份验证](#login-and-authentication) |59| `OAuth error` 或 `403 Forbidden` | [修复身份验证](#login-and-authentication) |

51| `Claude Code access has not been granted for this account` | [获取包含 Claude Code 的角色](#claude-code-access-has-not-been-granted-for-this-account) |60| `Claude Code access has not been granted for this account` | [获取包含 Claude Code 的角色](#claude-code-access-has-not-been-granted-for-this-account) |

52| 设置期间 `Unable to connect to Anthropic services` | 请参阅[错误参考](/docs/zh-CN/errors#unable-to-connect-to-anthropic-services)中的 Unable to connect to Anthropic services |61| 设置期间 `Unable to connect to Anthropic services` | 请参阅[错误参考](/docs/zh-CN/errors#unable-to-connect-to-anthropic-services)中的 Unable to connect to Anthropic services |

53| `Could not load the default credentials` 或 `Could not load credentials from any providers` | [Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭证](#bedrock-agent-platform-or-foundry-credentials-not-loading) |62| `Could not load the default credentials` 或 `Could not load credentials from any providers` | [Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据](#bedrock-agent-platform-or-foundry-credentials-not-loading) |

54| `ChainedTokenCredential authentication failed` 或 `CredentialUnavailableError` | [Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭证](#bedrock-agent-platform-or-foundry-credentials-not-loading) |63| `ChainedTokenCredential authentication failed` 或 `CredentialUnavailableError` | [Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据](#bedrock-agent-platform-or-foundry-credentials-not-loading) |

55| `API Error: 500`、`529 Overloaded`、`429` 或上面未列出的其他 4xx 和 5xx 错误 | 请参阅[错误参考](/docs/zh-CN/errors) |64| `API Error: 500`、`529 Overloaded`、`429` 或上面未列出的其他 4xx 和 5xx 错误 | 请参阅[错误参考](/docs/zh-CN/errors) |

56 65 

57如果您的问题未列出,请按照下面的诊断检查来缩小原因范围。66如果您的问题未列出,请按照下面的诊断检查来缩小原因范围。


125 134 

126如果安装成功但运行 `claude` 时出现 `command not found` 或 `not recognized` 错误,安装目录不在您的 PATH 中。您的 shell 在 PATH 中列出的目录中搜索程序,安装程序在 macOS/Linux 上将 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。135如果安装成功但运行 `claude` 时出现 `command not found` 或 `not recognized` 错误,安装目录不在您的 PATH 中。您的 shell 在 PATH 中列出的目录中搜索程序,安装程序在 macOS/Linux 上将 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。

127 136 

137安装程序会检测到这种情况,并在其输出的 `Setup notes:` 下报告:在 macOS 和 Linux 上为 `Native installation exists but ~/.local/bin is not in your PATH.`,在 Windows 上为 `Native installation exists but C:\Users\you\.local\bin is not in your PATH.`。它会随该说明打印修复方法,但不会自行更改 PATH。

138 

128<Note>139<Note>

129 [VS Code 扩展](/docs/zh-CN/vs-code)不会将 `claude` 放在此位置。它在扩展目录内捆绑了一个私有的 CLI 副本,用于其自己的聊天面板,不会将其添加到 PATH。如果您仅安装了扩展,`~/.local/bin/claude` 将不存在。运行[独立安装](/docs/zh-CN/setup)以从终端使用 `claude`,然后继续下面的步骤。140 [VS Code 扩展](/docs/zh-CN/vs-code)不会将 `claude` 放在此位置。它在扩展目录内捆绑了一个私有的 CLI 副本,用于其自己的聊天面板,不会将其添加到 PATH。如果您仅安装了扩展,`~/.local/bin/claude` 将不存在。运行[独立安装](/docs/zh-CN/setup)以从终端使用 `claude`,然后继续下面的步骤。

130</Note>141</Note>

131 142 

132通过列出您的 PATH 条目并过滤 `local/bin` 来检查安装目录是否在您的 PATH 中:143首先检查程序是否存在,然后检查其所在文件夹是否在您的 PATH 中。PATH 修复是永久性的,因此只需执行一次。选择您平台对应的选项卡并在相应环境中运行其中的命令:在 macOS 和 Linux 上使用终端,在 Windows 上使用 PowerShell 或命令提示符。

133 144 

134<Tabs>145<Tabs>

135 <Tab title="macOS/Linux">146 <Tab title="macOS/Linux">

147 检查安装程序是否已将程序放置到位:

148 

149 ```bash theme={null}

150 ls -la ~/.local/bin/claude

151 ```

152 

153 * **`No such file or directory`**:没有本机安装。如果您尚未通过其他方式(例如 npm、Homebrew 或 Linux 包管理器)安装 Claude Code,请[安装 Claude Code](/docs/zh-CN/setup#install-claude-code)。如果您通过其他方式安装了它,请参阅[检查冲突的安装](#check-for-conflicting-installations)。

154 * **显示该文件的列表信息**:程序已存在。接下来检查您的 PATH。

155 

156 列出您的 PATH 条目并过滤出安装文件夹:

157 

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

137 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"159 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

138 ```160 ```

139 161 

140 如果这打印 `/Users/you/.local/bin` 或 `/home/you/.local/bin`,该目录在您的 PATH 中,您可以跳到[检查冲突的安装](#check-for-conflicting-installations)。如果没有输出,请将其添加到您的 shell 配置。162 如果这打印 `/Users/you/.local/bin` 或 `/home/you/.local/bin`,该目录在您的 PATH 中,您可以跳到[检查冲突的安装](#check-for-conflicting-installations)。如果没有输出,请使用对应您 shell 的两条命令将其添加到您的 shell 配置中。`echo` 命令会为每个新终端保存该设置,`source` 则将其应用到当前窗口。`echo` 命令成功时不会打印任何内容。

141 163 

142 对于 Zsh(macOS 上的默认值):164 对于 Zsh(macOS 上的默认值):

143 165 


146 source ~/.zshrc168 source ~/.zshrc

147 ```169 ```

148 170 

149 对于 Bash(大多数 Linux 发行版上的默认值):171 对于 Linux 上的 Bash(大多数发行版上的默认值):

150 172 

151 ```bash theme={null}173 ```bash theme={null}

152 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc174 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc


162 184 

163 或者,关闭并重新打开您的终端。185 或者,关闭并重新打开您的终端。

164 186 

187 如果 `echo` 命令打印 `permission denied`,请参阅[添加到 PATH 时出现 `permission denied`](#permission-denied-when-adding-to-your-path)。

188 

165 对于其他 shell(如 fish 或 Nushell),使用您的 shell 自己的配置语法将 `~/.local/bin` 添加到您的 PATH,然后重启您的终端。189 对于其他 shell(如 fish 或 Nushell),使用您的 shell 自己的配置语法将 `~/.local/bin` 添加到您的 PATH,然后重启您的终端。

166 190 

167 验证修复是否有效:191 验证修复是否有效:


169 ```bash theme={null}193 ```bash theme={null}

170 claude --version194 claude --version

171 ```195 ```

196 

197 如果仍然找不到 `claude`,请检查以下原因:

198 

199 * **终端在更改之前就已打开**:已经打开的窗口会保留其旧的 PATH,而编辑器内的终端从编辑器获取其 PATH。请打开一个新窗口,或退出并重新打开编辑器。

200 * **该行未被保存**:运行 `grep -n '.local/bin' ~/.zshrc`,并使用您的 shell 对应的文件名。如果该行存在,它会打印该行及其行号。如果没有打印任何内容,请再次运行这两条 PATH 命令。

201 * **该行被写入了另一个 shell 的文件**:运行 `echo $0` 查看您的 shell,然后运行对应该 shell 的两条 PATH 命令。

172 </Tab>202 </Tab>

173 203 

174 <Tab title="Windows PowerShell">204 <Tab title="Windows PowerShell">

205 检查安装程序是否已将程序放置到位:

206 

207 ```powershell theme={null}

208 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

209 ```

210 

211 * **`False`**:没有本机安装。如果您尚未通过其他方式(例如 npm 或 WinGet)安装 Claude Code,请[安装 Claude Code](/docs/zh-CN/setup#install-claude-code)。如果您通过其他方式安装了它,请参阅[检查冲突的安装](#check-for-conflicting-installations)。

212 * **`True`**:程序已存在。接下来检查您的 PATH。

213 

214 列出您的 PATH 条目并过滤出安装文件夹:

215 

175 ```powershell theme={null}216 ```powershell theme={null}

176 $env:PATH -split ';' | Select-String '\.local\\bin'217 $env:PATH -split ';' | Select-String '\.local\\bin'

177 ```218 ```

178 219 

179 如果没有输出,请将安装目录添加到您的用户 PATH:220 如果这打印 `C:\Users\you\.local\bin`,该目录在您的 PATH 中,您可以跳到[检查冲突的安装](#check-for-conflicting-installations)。如果没有输出,请将安装目录添加到您的用户 PATH:

180 221 

181 ```powershell theme={null}222 ```powershell theme={null}

182 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')223 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')


190 ```powershell theme={null}231 ```powershell theme={null}

191 claude --version232 claude --version

192 ```233 ```

234 

235 如果在新终端中仍然找不到 `claude`,请检查以下原因:

236 

237 * **终端运行在编辑器内**:它从编辑器获取其 PATH,因此请退出并重新打开编辑器。

238 * **更改未被保存**:运行 `[Environment]::GetEnvironmentVariable('PATH', 'User')`,并在其打印的 PATH 中查找 `.local\bin`。如果缺失,请再次运行这两条命令。

193 </Tab>239 </Tab>

194 240 

195 <Tab title="Windows CMD">241 <Tab title="Windows CMD">

242 检查安装程序是否已将程序放置到位:

243 

244 ```batch theme={null}

245 dir "%USERPROFILE%\.local\bin\claude.exe"

246 ```

247 

248 * **`File Not Found` 或 `The system cannot find the path specified.`**:没有本机安装。如果您尚未通过其他方式(例如 npm 或 WinGet)安装 Claude Code,请[安装 Claude Code](/docs/zh-CN/setup#install-claude-code)。如果您通过其他方式安装了它,请参阅[检查冲突的安装](#check-for-conflicting-installations)。

249 * **显示 `claude.exe` 的列表信息**:程序已存在。接下来检查您的 PATH。

250 

251 列出您的 PATH 条目并过滤出安装文件夹:

252 

196 ```batch theme={null}253 ```batch theme={null}

197 echo %PATH% | findstr /i "local\bin"254 echo %PATH% | findstr /i "local\bin"

198 ```255 ```


204 ```batch theme={null}261 ```batch theme={null}

205 claude --version262 claude --version

206 ```263 ```

264 

265 如果在新终端中仍然找不到 `claude`,编辑器内的终端会从编辑器获取其 PATH,因此也请退出并重新打开编辑器。

207 </Tab>266 </Tab>

208</Tabs>267</Tabs>

209 268 


221 which -a claude280 which -a claude

222 ```281 ```

223 282 

224 如果这不打印任何内容,您的 PATH 上还没有 `claude`。返回到[验证您的 PATH](#verify-your-path)。283 如果这打印 `claude not found`、一行 `no claude in` 或不打印任何内容,则您的 PATH 上没有 `claude`。接下来的检查会显示是否安装了 `claude`。

225 284 

226 检查 `claude` 二进制文件可以来自的三个位置。`~/.local/bin/claude` 是本机安装程序,`~/.claude/local/` 是由较旧版本的 Claude Code 创建的旧版本本地 npm 安装,npm 全局列表显示 `-g` 安装:285 检查 `claude` 二进制文件可以来自的三个位置。`~/.local/bin/claude` 是本机安装程序,`~/.claude/local/` 是由较旧版本的 Claude Code 创建的旧版本本地 npm 安装,npm 全局列表显示 `-g` 安装:

227 286 


240 ```bash theme={null}299 ```bash theme={null}

241 npm -g ls @anthropic-ai/claude-code 2>/dev/null300 npm -g ls @anthropic-ai/claude-code 2>/dev/null

242 ```301 ```

302 

303 如果 `ls -la ~/.local/bin/claude` 打印了 `No such file or directory`,则没有本机安装。如果您尚未通过其他方式(例如 npm、Homebrew 或 Linux 包管理器)安装 Claude Code,请[安装 Claude Code](/docs/zh-CN/setup#install-claude-code)。如果 `~/.local/bin/claude` 存在但 `which -a claude` 未列出它,则该文件夹不在您的 PATH 中:请参阅[验证您的 PATH](#verify-your-path)。

243 </Tab>304 </Tab>

244 305 

245 <Tab title="Windows PowerShell">306 <Tab title="Windows PowerShell">


249 where.exe claude310 where.exe claude

250 ```311 ```

251 312 

313 如果这打印 `INFO: Could not find files for the given pattern(s).`,则您的 PATH 上没有 `claude`。

314 

252 检查本机安装程序是否放置了二进制文件:315 检查本机安装程序是否放置了二进制文件:

253 316 

254 ```powershell theme={null}317 ```powershell theme={null}

255 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"318 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

256 ```319 ```

320 

321 * **`True`**:本机安装存在。如果 `where.exe` 未找到任何内容,则其所在文件夹不在您的 PATH 中:请参阅[验证您的 PATH](#verify-your-path)。

322 * **`False`**:没有本机安装。如果您尚未通过其他方式(例如 npm 或 WinGet)安装 Claude Code,请[安装 Claude Code](/docs/zh-CN/setup#install-claude-code)。

257 </Tab>323 </Tab>

258</Tabs>324</Tabs>

259 325 


368 安装脚本返回 HTML 而不是 shell 脚本434 安装脚本返回 HTML 而不是 shell 脚本

369</h3>435</h3>

370 436 

371运行安装命令时,您可能会看到以下错误之一:437当安装命令下载到的内容不是安装脚本时,该命令会失败并出现以下错误之一。

438 

439**Bash 或 Zsh**:错误会引用返回页面的第一行。

372 440 

373```text theme={null}441```text theme={null}

374bash: line 1: syntax error near unexpected token `<'442bash: line 1: syntax error near unexpected token `<'

375bash: line 1: `<!DOCTYPE html>'443bash: line 1: `<!DOCTYPE html>'

376```444```

377 445 

378在 PowerShell 上,同样的问题表现为指向返回页面的解析错误,`iex` 尝试将 HTML 和 CSS 作为 PowerShell 运行:446**PowerShell,解析错误**:错误指向返回的页面,`iex` 尝试将 HTML 和 CSS 作为 PowerShell 运行。

379 447 

380```text theme={null}448```text theme={null}

381iex : At line:1 char:2310449iex : At line:1 char:2310


386 454 

387措辞因 PowerShell 版本和系统语言而异:您可能会看到 `Missing expression after unary operator '--'` 或带有 `ParseException` 的 `ParserError`。引用文本中的 HTML 标签或 CSS 标识此失败。如果您改用 `-OutFile install.ps1` 下载,保存的文件是同一网页,所以这也无法帮助。455措辞因 PowerShell 版本和系统语言而异:您可能会看到 `Missing expression after unary operator '--'` 或带有 `ParseException` 的 `ParserError`。引用文本中的 HTML 标签或 CSS 标识此失败。如果您改用 `-OutFile install.ps1` 下载,保存的文件是同一网页,所以这也无法帮助。

388 456 

389根据请求的路由方式,您可能会看到 403 错误且没有 HTML 正文:457**PowerShell,`System.Xml.XmlDocument`**:错误会指出此类型,而不是引用页面。

458 

459```text theme={null}

460System.Xml.XmlDocument : The term 'System.Xml.XmlDocument' is not recognized as the name of a cmdlet, function, script

461file, or operable program.

462```

463 

464当 `irm` 能将响应解析为 XML 时,它会返回 XML 对象而不是文本,随后 `iex` 会尝试将该对象的类型名称作为命令运行。安装脚本是 PowerShell 代码,无法解析为 XML,因此此错误同样意味着响应不是该脚本。类型名称周围的措辞因 PowerShell 版本和系统语言而异,但 `System.Xml.XmlDocument` 本身保持不变,因此请根据类型名称进行匹配。

465 

466**CMD**:您会看到此错误,后跟返回页面的 HTML。

467 

468```text theme={null}

469< was unexpected at this time.

470 

471C:\Users\you><!DOCTYPE html>...

472```

473 

474第一行以您的系统语言显示,因此请查找其后的 HTML。

475 

476**没有页面的 403**:根据请求的路由方式,curl 会报告 403 状态且没有 HTML 正文。

390 477 

391```text theme={null}478```text theme={null}

392curl: (22) The requested URL returned error: 403479curl: (22) The requested URL returned error: 403

393```480```

394 481 

395这些都意味着安装 URL 返回了 HTML 页面或错误状态,而不是安装脚本。如果 HTML 页面显示"应用在该地区不可用",则 Claude Code 在您的国家/地区不可用。请参阅[支持的国家/地区](https://www.anthropic.com/supported-countries)。482这些都意味着安装 URL 返回了网页、XML 文档或错误状态,而不是安装脚本。如果错误输出引用了"App unavailable in region",则 Claude Code 在您的国家/地区不可用。请参阅[支持的国家/地区](https://www.anthropic.com/supported-countries)。

396 483 

397没有正文的单纯 403 通常有相同的原因,但也可能来自公司代理或防火墙阻止下载。如果您在支持的国家/地区但仍然看到 403,请在尝试下面的替代安装程序之前完成[检查网络连接](#check-network-connectivity),因为这些安装程序访问相同的主机。484没有正文的单纯 403 通常有相同的原因,但也可能来自公司代理或防火墙阻止下载。如果您在支持的国家/地区但仍然看到 403,请在尝试下面的替代安装程序之前完成[检查网络连接](#check-network-connectivity),因为这些安装程序访问相同的主机。

398 485 


400 487 

401**解决方案:**488**解决方案:**

402 489 

4031. **使用替代安装方法**:4901. **几分钟后重试**:该问题通常是临时的。等待并重新尝试原始命令。

491 

4922. **使用替代安装方法**:与本机安装不同,Homebrew 或 WinGet 安装[默认不会自动更新](/docs/zh-CN/setup#auto-updates)。

404 493 

405 在 macOS 上,通过 Homebrew 安装:494 在 macOS 上,通过 Homebrew 安装:

406 495 


416 505 

417 然后运行 `claude --version` 确认:该命令打印版本号,例如 `2.1.211 (Claude Code)`。如果 shell 报告找不到 `claude`,请打开新的终端窗口并重试:您安装的会话保留其旧的 `PATH`。506 然后运行 `claude --version` 确认:该命令打印版本号,例如 `2.1.211 (Claude Code)`。如果 shell 报告找不到 `claude`,请打开新的终端窗口并重试:您安装的会话保留其旧的 `PATH`。

418 507 

4192. **几分钟后重试**:该问题通常是临时的。等待并重新尝试原始命令。

420 

421<h3 id="command-not-found-claude-after-installation">508<h3 id="command-not-found-claude-after-installation">

422 安装后 `command not found: claude`509 安装后 `command not found: claude`

423</h3>510</h3>


435 522 

436否则,请参阅[验证您的 PATH](#verify-your-path) 了解每个平台上的修复。523否则,请参阅[验证您的 PATH](#verify-your-path) 了解每个平台上的修复。

437 524 

525<h3 id="permission-denied-when-adding-to-your-path">

526 添加到 PATH 时出现 `permission denied`

527</h3>

528 

529如果将 `~/.local/bin` 添加到 PATH 的 `echo` 命令打印 `zsh: permission denied: /Users/you/.zshrc` 或 `bash: /home/you/.bashrc: Permission denied`,说明您的用户无法写入该文件,且未保存任何内容。在终端中检查该文件的所有者,将 `~/.zshrc` 替换为您的 shell 对应的文件名:

530 

531```bash theme={null}

532ls -l ~/.zshrc

533```

534 

535输出的第三个字段即为所有者。

536 

537* **所有者是其他用户,例如 `root`**:使用 `sudo chown $(whoami) ~/.zshrc` 获取所有权,这需要管理员权限。

538* **所有者是您自己**:该文件为只读。使用 `chmod u+w ~/.zshrc` 使其可写。

539 

540然后再次运行[验证您的 PATH](#verify-your-path) 中适用于您的 shell 的两条 PATH 命令。

541 

438<h3 id="curl-56-failure-writing-output-to-destination">542<h3 id="curl-56-failure-writing-output-to-destination">

439 `curl: (56) Failure writing output to destination`543 `curl: (56) Failure writing output to destination`

440</h3>544</h3>

441 545 

442`curl ... | bash` 命令下载脚本并将其管道传输到 Bash 以执行。此错误以及相关的 `curl: (23) Failure writing output to destination` 意味着 Bash 没有收到完整的脚本。退出代码 56 表示下载本身被中断,退出代码 23 表示 curl 无法将其接收的内容写入管道,通常是因为 Bash 提前退出。546`curl ... | bash` 命令下载脚本并将其管道传输到 Bash 以执行。此错误以及相关的 `curl: (23) Failure writing output to destination` 意味着 Bash 没有收到完整的脚本。退出码 56 表示下载本身被中断,退出码 23 表示 curl 无法将其接收的内容写入管道,通常是因为 Bash 提前退出。

443 547 

444使用[检查网络连接](#check-network-connectivity)中的检查来测试您是否可以访问 `downloads.claude.ai`。如果您访问了服务器,原始失败可能是间歇性的;重试安装命令。您也可以[尝试替代安装方法](/docs/zh-CN/setup#install-claude-code)。548使用[检查网络连接](#check-network-connectivity)中的检查来测试您是否可以访问 `downloads.claude.ai`。如果您访问了服务器,原始失败可能是间歇性的;重试安装命令。您也可以[尝试替代安装方法](/docs/zh-CN/setup#install-claude-code)。

445 549 


456 560 

457如果 Homebrew 安装的 Claude Code 版本比您预期的要旧,通常是相同的过时索引导致的。`claude-code` cask 跟踪稳定频道,通常比最新版本晚约一周;对于最新版本,请改为运行 `brew install --cask claude-code@latest`。请参阅[配置发布频道](/docs/zh-CN/setup#configure-release-channel)了解两个 cask 之间的区别。561如果 Homebrew 安装的 Claude Code 版本比您预期的要旧,通常是相同的过时索引导致的。`claude-code` cask 跟踪稳定频道,通常比最新版本晚约一周;对于最新版本,请改为运行 `brew install --cask claude-code@latest`。请参阅[配置发布频道](/docs/zh-CN/setup#configure-release-channel)了解两个 cask 之间的区别。

458 562 

563<h3 id="cask-is-not-installed">

564 `Cask 'claude-code@latest' is not installed`

565</h3>

566 

567Homebrew 提供两个 cask:`claude-code` 和 `claude-code@latest`。当已安装的不是该 cask 时运行 `brew upgrade --cask claude-code@latest`,会打印 `Error: Cask 'claude-code@latest' is not installed.`。要查看您安装了哪个 cask,请在终端中运行:

568 

569```bash theme={null}

570brew list --cask | grep claude-code

571```

572 

573升级它打印出的 cask。如果没有打印任何内容,则两个 cask 均未安装。

574 

459<h3 id="tls-or-ssl-connection-errors">575<h3 id="tls-or-ssl-connection-errors">

460 TLS 或 SSL 连接错误576 TLS 或 SSL 连接错误

461</h3>577</h3>


467* PowerShell 的 `Could not create SSL/TLS secure channel`583* PowerShell 的 `Could not create SSL/TLS secure channel`

468* PowerShell 的 `Could not establish trust relationship for the SSL/TLS secure channel`584* PowerShell 的 `Could not establish trust relationship for the SSL/TLS secure channel`

469 585 

586对于 `CRYPT_E_NO_REVOCATION_CHECK` 或 `CRYPT_E_REVOCATION_OFFLINE`,请直接转到第 4 步。

587 

470**解决方案:**588**解决方案:**

471 589 

4721. **更新您的系统 CA 证书**:5901. **更新您的系统 CA 证书**:


479 597 

480 在 macOS 上,系统 curl 使用 Keychain 信任存储;更新 macOS 本身会更新根证书。598 在 macOS 上,系统 curl 使用 Keychain 信任存储;更新 macOS 本身会更新根证书。

481 599 

4822. **在 Windows 上,在运行安装程序之前在 PowerShell 中启用 TLS 1.2**:6002. **在 Windows PowerShell 5.1 中启用 TLS 1.2**:

483 ```powershell theme={null}601 ```powershell theme={null}

484 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12602 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

603 ```

604 然后在同一窗口中运行安装程序:

605 ```powershell theme={null}

485 irm https://claude.ai/install.ps1 | iex606 irm https://claude.ai/install.ps1 | iex

486 ```607 ```

487 608 


537 658 

538安装程序无法访问下载服务器。这通常意味着 `downloads.claude.ai` 在您的网络上被阻止。请参阅[检查网络连接](#check-network-connectivity)。659安装程序无法访问下载服务器。这通常意味着 `downloads.claude.ai` 在您的网络上被阻止。请参阅[检查网络连接](#check-network-connectivity)。

539 660 

661<h3 id="the-connection-dropped-while-downloading-the-update">

662 The connection dropped while downloading the update

663</h3>

664 

665在 `claude install` 或 `claude update` 获取 Claude Code 二进制文件期间,与下载服务器的连接被关闭,且重试未能恢复。当连接中断、传输停滞或下载的文件未通过校验和检查时,Claude Code 会重试下载,总共最多尝试三次。已完成的 HTTP 错误(例如 404)不会重试,因为服务器已经作出了响应。在 v2.1.202 之前,单次连接中断会立即导致下载失败,并仅显示错误 `aborted`,而不会重试。

666 

667```text theme={null}

668The connection dropped while downloading the update (attempt 3/3: aborted). Check your network — proxies sometimes cut off large downloads.

669```

670 

671括号中的文本指出了失败的是哪一次尝试以及底层网络错误。`claude update` 会在 stderr 上于该消息之前打印 `Error: Failed to install native update`。

672 

673保持连接但未在 10 分钟内完成的下载则会失败并显示 `Download timed out: exceeded the total deadline`。Claude Code 不会重试超时的下载,因为一个慢到无法在截止时间内完成的连接,立即重试也同样无法完成。以下步骤适用于这两条消息。

674 

675代理或网关可能会在长时间传输完成之前将其关闭,而 Claude Code 二进制文件是一个较大的下载。

676 

677**处理方法:**

678 

679* 再次运行 `claude update`。在其他方面正常的网络上,下一次运行时下载通常会成功。对于超时消息,请从更快或限速更少的网络再次运行。

680* 如果您的网络需要代理,请在运行安装程序或 `claude update` 之前设置 `HTTPS_PROXY`。请参阅[检查网络连接](#check-network-connectivity)。

681* 如果公司代理不断关闭传输,请要求您的网络团队允许从 `downloads.claude.ai` 完整下载。请参阅[网络访问要求](/docs/zh-CN/network-config#network-access-requirements)。

682* 从您的 shell 运行 `claude doctor` 以获取安装诊断信息

683 

540<h3 id="wrong-install-command-on-windows">684<h3 id="wrong-install-command-on-windows">

541 Windows 上的错误安装命令685 Windows 上的错误安装命令

542</h3>686</h3>


682 826 

6833. **使用更大的实例**,如果可能的话。Claude Code 需要至少 4 GB 的 RAM。8273. **使用更大的实例**,如果可能的话。Claude Code 需要至少 4 GB 的 RAM。

684 828 

829<h3 id="installation-was-killed-before-it-could-finish">

830 Installation was killed before it could finish

831</h3>

832 

833安装脚本会在 `claude install` 步骤被信号终止时进行报告。在 Linux 上,退出码 137 表示进程收到了 SIGKILL,在低内存主机上这通常是内核内存不足 (OOM) 杀手所致。脚本会打印此说明并以代码 137 退出:

834 

835```text theme={null}

836Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.

837Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.

838```

839 

840对于任何其他致命信号,以及 macOS 上的退出码 137,脚本会打印带有实际退出码的 `Installation was killed before it could finish (exit code <N>)`,并省略内存不足的说明。该消息来自 macOS 和 Linux 使用的安装脚本,该脚本也涵盖 WSL 内的安装;本机 Windows 安装脚本从不打印它。在 v2.1.200 之前,脚本退出时只显示 shell 的单独一行 `Killed`。

841 

842**处理方法:**

843 

844* 停止其他进程以释放内存,然后重新运行安装程序

845* 添加交换空间或换用更大的实例。有关交换文件命令,请参阅[在低内存 Linux 服务器上安装被杀死](#install-killed-on-low-memory-linux-servers)。

846 

685<h3 id="install-hangs-in-docker">847<h3 id="install-hangs-in-docker">

686 在 Docker 中安装挂起848 在 Docker 中安装挂起

687</h3>849</h3>


775 937 

776**如果 `CLAUDE_CODE_GIT_BASH_PATH` 设置为正确的路径且文件存在**但 Claude Code 仍然不使用它,请首先检查文件的名称。Claude Code 仅接受名为 `bash.exe`、`sh.exe`、`bash` 或 `sh` 的文件;对于任何其他名称,例如 Git for Windows 的 `git-bash.exe` 启动程序,它会忽略该变量并自动检测 Git Bash,就像它未设置一样,记录 `--debug` 可见的警告。不存在的路径会获得相同的回退和警告。在 v2.1.219 之前,Claude Code 使用任何现有文件作为 shell,而不检查其名称,当路径不存在时在启动时以 `Claude Code was unable to find CLAUDE_CODE_GIT_BASH_PATH path` 退出。938**如果 `CLAUDE_CODE_GIT_BASH_PATH` 设置为正确的路径且文件存在**但 Claude Code 仍然不使用它,请首先检查文件的名称。Claude Code 仅接受名为 `bash.exe`、`sh.exe`、`bash` 或 `sh` 的文件;对于任何其他名称,例如 Git for Windows 的 `git-bash.exe` 启动程序,它会忽略该变量并自动检测 Git Bash,就像它未设置一样,记录 `--debug` 可见的警告。不存在的路径会获得相同的回退和警告。在 v2.1.219 之前,Claude Code 使用任何现有文件作为 shell,而不检查其名称,当路径不存在时在启动时以 `Claude Code was unable to find CLAUDE_CODE_GIT_BASH_PATH path` 退出。

777 939 

778如果文件的名称正确,端点安全软件(如 AppLocker、组策略软件限制策略或 EDR 代理)可能会干扰。要求您的 IT 团队在您的端点保护策略中将 `claude.exe` 和它生成的进程(包括 `cmd.exe` 和 `bash.exe`)列入白名单。940如果文件的名称正确,端点安全软件(如 AppLocker、组策略软件限制策略或 EDR Agent)可能会干扰。要求您的 IT 团队在您的端点保护策略中将 `claude.exe` 和它生成的进程(包括 `cmd.exe` 和 `bash.exe`)加入允许列表。

779 941 

780<h3 id="claude-code-does-not-support-32-bit-windows">942<h3 id="claude-code-does-not-support-32-bit-windows">

781 Claude Code 不支持 32 位 Windows943 Claude Code 不支持 32 位 Windows


817 ```bash theme={null}979 ```bash theme={null}

818 apk add libgcc libstdc++ ripgrep980 apk add libgcc libstdc++ ripgrep

819 ```981 ```

820 在 Alpine 上,`ripgrep` 在社区存储库中。如果 `apk` 报告包丢失,请参阅 [Alpine Linux 设置](/docs/zh-CN/setup#alpine-linux-and-musl-based-distributions)。982 在 Alpine 上,`ripgrep` 在社区仓库中。如果 `apk` 报告包丢失,请参阅 [Alpine Linux 设置](/docs/zh-CN/setup#alpine-linux-and-musl-based-distributions)。

821 983 

822<h3 id="illegal-instruction">984<h3 id="illegal-instruction">

823 `Illegal instruction`985 `Illegal instruction`

Details

11| 症状 | 转到 |11| 症状 | 转到 |

12| :- | :- |12| :- | :- |

13| `command not found`、安装失败、PATH 问题、`EACCES`、TLS 错误 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install) |13| `command not found`、安装失败、PATH 问题、`EACCES`、TLS 错误 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install) |

14| 更新或安装下载失败,显示 `The connection dropped while downloading the update` 或 `aborted` | [错误参考](/docs/zh-CN/errors#the-connection-dropped-while-downloading-the-update) |14| 更新或安装下载失败,显示 `The connection dropped while downloading the update` 或 `aborted` | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install#the-connection-dropped-while-downloading-the-update) |

15| 登录循环、OAuth 错误、`403 Forbidden`、"organization disabled"、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install#login-and-authentication) |15| 登录循环、OAuth 错误、`403 Forbidden`、"organization disabled"、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install#login-and-authentication) |

16| 设置未应用、hooks 未触发、MCP 服务器未加载 | [调试您的配置](/docs/zh-CN/debug-your-config) |16| 设置未应用、hooks 未触发、MCP 服务器未加载 | [调试您的配置](/docs/zh-CN/debug-your-config) |

17| 会话以自动模式启动,或 Claude 编辑文件并运行命令而不询问 | [会话启动的模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in) |17| 会话以自动模式启动,或 Claude 编辑文件并运行命令而不询问 | [会话启动的模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in) |

ultrareview.md +6 −6

Details

56 审查拉取请求56 审查拉取请求

57</h3>57</h3>

58 58 

59要审查 GitHub 拉取请求而不是本地分支,请传递 PR 编号:59要审查 `github.com` 上的拉取请求而不是本地分支,请传递 PR 编号:

60 60 

61```text theme={null}61```text theme={null}

62/code-review ultra 123462/code-review ultra 1234


64 64 

65该命令也接受 `#1234`、`PR 1234` 和粘贴的 PR URL;粘贴的 URL 必须指向您当前目录中的存储库。65该命令也接受 `#1234`、`PR 1234` 和粘贴的 PR URL;粘贴的 URL 必须指向您当前目录中的存储库。

66 66 

67在 PR 模式下,云沙箱直接从主机克隆拉取请求,而不是捆绑您的本地工作树。PR 模式适用于 `github.com` 上的存储库以及 Owner 已连接到 Claude Code 的 [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server) 实例。67PR 模式需要 `github.com` 上的仓库。对于 [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server) 实例上的仓库,请运行不带 PR 编号的 `/code-review ultra` 来审查您的本地分支。

68 68 

69对于 `github.com` 上的存储库,沙箱使用连接到您的 Claude 账户的 GitHub 账户进行克隆,因此该账户必须能够读取 PR 的存储库。69在 PR 模式下,云沙箱从 `github.com` 克隆拉取请求,而不是上传您的工作树。它使用连接到您的 Claude 账户的 GitHub 账户,因此该账户需要对仓库具有读取权限。

70 70 

71运行 [`/web-setup`](/docs/zh-CN/web-quickstart#connect-from-your-terminal) 将您的 GitHub CLI 登录连接到您的 Claude 账户。71运行 [`/web-setup`](/docs/zh-CN/web-quickstart#connect-from-your-terminal) 将您的 GitHub CLI 登录连接到您的 Claude 账户。

72 72 


74 将发现发布到拉取请求74 将发现发布到拉取请求

75</h3>75</h3>

76 76 

77在 Claude Code v2.1.227 或更高版本上,当您在 `github.com` 上审查拉取请求时,您可以让 Claude 将完成的发现作为来自您自己 GitHub 账户的单个纯文本评论发布到 PR。该评论不是审查或批准,并以"由 Claude Code 生成"的说明结尾。当您审查分支或 GitHub Enterprise Server 拉取请求时,Claude Code 仅在您的会话中显示发现。77在 Claude Code v2.1.227 或更高版本上,当您在 `github.com` 上审查拉取请求时,您可以让 Claude 将完成的发现作为来自您自己 GitHub 账户的单个纯文本评论发布到 PR。该评论不是审查或批准,并以"由 Claude Code 生成"的说明结尾。当您审查分支时,Claude Code 仅在您的会话中显示发现。

78 78 

79Claude Code 永远不会发布,除非您在该运行中选择,`--no-post` 是默认值。发布是您为每次运行做出的选择:79Claude Code 永远不会发布,除非您在该运行中选择,`--no-post` 是默认值。发布是您为每次运行做出的选择:

80 80 


106当 Claude Code 的文本超过一个单词且不是分支名称或 PR 引用时,它将您的文本视为说明。它将单个单词读取为分支名称或 PR 引用,因此拼写错误的分支名称会从[针对不同的基础进行审查](#review-against-a-different-base)获得最接近分支的错误,而不是使用说明启动。如果您的文本将 PR 引用与其他单词结合,如 `check PR 123 again`,Claude Code 也不会启动;它会要求您重新运行仅使用 PR 编号来审查该 PR,或不使用引用来审查您的当前分支。106当 Claude Code 的文本超过一个单词且不是分支名称或 PR 引用时,它将您的文本视为说明。它将单个单词读取为分支名称或 PR 引用,因此拼写错误的分支名称会从[针对不同的基础进行审查](#review-against-a-different-base)获得最接近分支的错误,而不是使用说明启动。如果您的文本将 PR 引用与其他单词结合,如 `check PR 123 again`,Claude Code 也不会启动;它会要求您重新运行仅使用 PR 编号来审查该 PR,或不使用引用来审查您的当前分支。

107 107 

108<Tip>108<Tip>

109 如果您的存储库太大而无法捆绑,Claude Code 会提示您改用 PR 模式。推送您的分支并打开草稿 PR,然后运行 `/code-review ultra <PR-number>`。109 如果您的仓库太大而无法捆绑,Claude Code 会提示您改用 PR 模式。对于 `github.com` 上的仓库,推送您的分支并打开草稿 PR,然后运行 `/code-review ultra <PR-number>`。

110</Tip>110</Tip>

111 111 

112<h3 id="diff-limits-and-fallbacks">112<h3 id="diff-limits-and-fallbacks">


173claude ultrareview origin/main173claude ultrareview origin/main

174```174```

175 175 

176不带参数时,该子命令会审查当前分支与默认分支之间的 diff;当不存在合并基准时,会执行与 `/code-review ultra` 相同的[回退到整个仓库审查](#diff-limits-and-fallbacks)。传入 PR 编号可审查对应的 Pull Request,传入基准分支则以该分支为基准进行审查;[基准分支的处理方式](#review-against-a-different-base)与交互式命令一致。176不带参数时,该子命令会审查当前分支与默认分支之间的 diff;当不存在合并基准时,会执行与 `/code-review ultra` 相同的[回退到整个仓库审查](#diff-limits-and-fallbacks)。传入 PR 编号可[审查 `github.com` 上的 Pull Request](#review-a-pull-request),传入基准分支则以该分支为基准进行审查;[基准分支的处理方式](#review-against-a-different-base)与交互式命令一致。

177 177 

178运行该子命令即表示您同意回退到整个仓库审查,并同意计费和条款确认提示,因此运行会直接开始,无需等待输入。只有您亲自运行才算作同意。如果改由 Claude 替您运行该子命令(例如通过 Bash 工具),Claude Code 会拒绝执行整个仓库审查。178运行该子命令即表示您同意回退到整个仓库审查,并同意计费和条款确认提示,因此运行会直接开始,无需等待输入。只有您亲自运行才算作同意。如果改由 Claude 替您运行该子命令(例如通过 Bash 工具),Claude Code 会拒绝执行整个仓库审查。

179 179 

vs-code.md +2 −0

Details

166* **书签**:将鼠标悬停在某条回复上并点击 **Bookmark response** 即可保存它,或在已保存的回复上点击 **Remove bookmark** 将其移除。166* **书签**:将鼠标悬停在某条回复上并点击 **Bookmark response** 即可保存它,或在已保存的回复上点击 **Remove bookmark** 将其移除。

167 167 

168 要查看已保存的回复,请打开 Bookmarks 面板:点击 Claude Code 面板顶部的书签图标,在命令菜单的 Context 部分中选择 **Bookmarks**,或输入 `/bookmarks`。需要 Claude Code v2.1.286 或更高版本。168 要查看已保存的回复,请打开 Bookmarks 面板:点击 Claude Code 面板顶部的书签图标,在命令菜单的 Context 部分中选择 **Bookmarks**,或输入 `/bookmarks`。需要 Claude Code v2.1.286 或更高版本。

169* **Claude 发送给您的文件**:当会话连接到 [Remote Control](/docs/zh-CN/remote-control#start-a-remote-control-session) 且 Claude 使用 [`SendUserFile` 工具](/docs/zh-CN/tools-reference)向您发送文件时,对话中会显示一行,例如 **Sent report.md, chart.png**。点击文件名即可在编辑器中打开该文件。

169* **上下文指示器**:输入框会显示您已使用了 Claude 上下文窗口的多少。Claude 会在需要时自动压缩,您也可以手动运行 `/compact`。170* **上下文指示器**:输入框会显示您已使用了 Claude 上下文窗口的多少。Claude 会在需要时自动压缩,您也可以手动运行 `/compact`。

170* **提示缓存时钟**:上下文指示器旁边的时钟图标会估算对话的[提示缓存](/docs/zh-CN/prompt-caching)在过期前还剩多少时间。它会从缓存的五分钟或一小时[生命周期](/docs/zh-CN/prompt-caching#cache-lifetime)开始倒计时,每次使用缓存的响应都会重新开始倒计时。除压缩外,[使缓存失效的操作](/docs/zh-CN/prompt-caching#actions-that-invalidate-the-cache)不会重置时钟,因此在您切换模型后它仍可能显示剩余分钟数。171* **提示缓存时钟**:上下文指示器旁边的时钟图标会估算对话的[提示缓存](/docs/zh-CN/prompt-caching)在过期前还剩多少时间。它会从缓存的五分钟或一小时[生命周期](/docs/zh-CN/prompt-caching#cache-lifetime)开始倒计时,每次使用缓存的响应都会重新开始倒计时。除压缩外,[使缓存失效的操作](/docs/zh-CN/prompt-caching#actions-that-invalidate-the-cache)不会重置时钟,因此在您切换模型后它仍可能显示剩余分钟数。

171 * 在倒计时结束之前,图标会显示剩余分钟数,例如 **12m**。172 * 在倒计时结束之前,图标会显示剩余分钟数,例如 **12m**。


597| `useCtrlEnterToSend` | `false` | 使用 Ctrl/Cmd+Enter 而不是 Enter 来发送提示 |598| `useCtrlEnterToSend` | `false` | 使用 Ctrl/Cmd+Enter 而不是 Enter 来发送提示 |

598| `scrollToBottomOnSend` | `true` | 当您发送消息时,将对话滚动到底部。关闭时,对话保持在您离开的位置。需要 Claude Code v2.1.275 或更高版本 |599| `scrollToBottomOnSend` | `true` | 当您发送消息时,将对话滚动到底部。关闭时,对话保持在您离开的位置。需要 Claude Code v2.1.275 或更高版本 |

599| `showMessageTimestamps` | `true` | 显示每条消息的发送时间。日期行会标记日期变更的位置。需要 Claude Code v2.1.284 或更高版本。在 v2.1.290 之前,默认值为 `false` |600| `showMessageTimestamps` | `true` | 显示每条消息的发送时间。日期行会标记日期变更的位置。需要 Claude Code v2.1.284 或更高版本。在 v2.1.290 之前,默认值为 `false` |

601| `spinnerVerbs` | `{"mode": "append", "verbs": []}` | 设置轮次运行期间对话加载指示器轮换显示的动词,使用与 CLI 的 [`spinnerVerbs`](/docs/zh-CN/settings-reference#spinnerverbs) 相同的 `mode` 和 `verbs` 字段。 |

600| `enableNewConversationShortcut` | `false` | 启用 Cmd/Ctrl+N 来开始新对话 |602| `enableNewConversationShortcut` | `false` | 启用 Cmd/Ctrl+N 来开始新对话 |

601| `enableReopenClosedSessionShortcut` | `true` | 使用 Cmd/Ctrl+Shift+T 重新打开最近关闭的 Claude 会话标签页。当最后关闭的标签页不是 Claude 会话时,快捷键会运行 VS Code 的正常重新打开关闭编辑器命令。 |603| `enableReopenClosedSessionShortcut` | `true` | 使用 Cmd/Ctrl+Shift+T 重新打开最近关闭的 Claude 会话标签页。当最后关闭的标签页不是 Claude 会话时,快捷键会运行 VS Code 的正常重新打开关闭编辑器命令。 |

602| `archiveInactiveSessions` | `14` | 在无活动的这么多天后[自动存档会话](#resume-past-conversations):`1`、`2`、`7` 或 `14`。设置为 `0` 以关闭。需要 Claude Code v2.1.265 或更高版本 |604| `archiveInactiveSessions` | `14` | 在无活动的这么多天后[自动存档会话](#resume-past-conversations):`1`、`2`、`7` 或 `14`。设置为 `0` 以关闭。需要 Claude Code v2.1.265 或更高版本 |

workflows.md +27 −1

Details

354 354 

355主体是带有顶级 `await` 的纯 JavaScript。`agent()` 生成一个子代理,`pipeline()` 为列表中的每个项目运行一个,`parallel()` 同时运行一组代理任务并等待所有任务完成。355主体是带有顶级 `await` 的纯 JavaScript。`agent()` 生成一个子代理,`pipeline()` 为列表中的每个项目运行一个,`parallel()` 同时运行一组代理任务并等待所有任务完成。

356 356 

357如果您在运行中途停止 `agent()` 调用或它遇到不可恢复的 API 错误,则 `agent()` 调用解析为 `null`。`pipeline()` 在结果数组中保留每个 `null`,这就是为什么示例以 `.filter(Boolean)` 结尾以删除这些条目。357如果您在运行中途停止 `agent()` 调用或它遇到不可恢复的 API 错误,则 `agent()` 调用解析为 `null`。`pipeline()` 在结果数组中保留每个 `null`,这就是为什么示例以 `.filter(Boolean)` 结尾以删除这些条目,其中包括[每次尝试都停滞的 Agent](#when-an-agent-stalls-and-restarts) 所占的位置。

358 358 

359在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中,您的脚本传递给 `agent()` 的提示不会计为您的请求,当分类器审查该子代理的操作时,因为 Claude Code 将其标记为脚本计算的文本。359在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中,您的脚本传递给 `agent()` 的提示不会计为您的请求,当分类器审查该子代理的操作时,因为 Claude Code 将其标记为脚本计算的文本。

360 360 


463* 限制在 24 小时内重置。每周限制可能重置得更远。463* 限制在 24 小时内重置。每周限制可能重置得更远。

464* 运行还没有等待过两次。当它第三次达到限制时,代理会失败。464* 运行还没有等待过两次。当它第三次达到限制时,代理会失败。

465 465 

466<h3 id="when-an-agent-stalls-and-restarts">

467 当 Agent 停滞并重启时

468</h3>

469 

470如果某个 Agent 的输出停止到达足够长的时间,它会使用相同的提示词重新开始。在 [`/workflows`](#watch-the-run) 中,其名称会添加 `(retry 1)` 后缀,其详细信息会显示 `attempt 2 (stalled)`。重启是自动的,因此您无需执行任何操作。

471 

472新的尝试在开始时不带有停滞尝试的会话记录。停滞尝试已更改的文件保持更改状态,其消耗的 token 仍计入运行的总量。停滞窗口是 Claude Code 在结束尝试之前等待 Agent 输出的时长。Agent 等待其自身工具调用或等待[用量限制重置](#when-a-run-hits-your-usage-limit)所花费的时间不计入停滞窗口。

473 

474一个 Agent 最多重启五次,包括您使用 `r` 请求的任何重启。如果第六次尝试也停滞,`agent()` 调用会失败,错误的开头会说明原因:

475 

476* `agent stalled on all 6 attempts`:每次尝试在整个窗口内都没有输出。如果 Agent 的工作使其保持静默这么长时间,请延长窗口

477* `agent lost its reply on all 6 attempts`:每次尝试的响应流都变为静默,Claude Code 放弃了等待。延长停滞窗口没有帮助,因为[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs)先结束了响应,而 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 设置该看门狗的超时时间

478* `agent abandoned after 6 attempts`:各次尝试以不同方式结束,错误会按顺序列出这些方式

479 

480要在窗口结束前给 Agent 更多时间来产生输出:

481 

482* **单个 Agent**:在其 `agent()` 调用中以毫秒为单位传入 `stallMs`,例如 `agent(prompt, { stallMs: 1800000 })` 表示 30 分钟

483* **所有 Agent**:设置 [`CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`](/docs/zh-CN/env-vars#variables),它也适用于工作流之外的子代理

484 

485失败后运行是否继续取决于您的脚本如何调用该 Agent:

486 

487* **在 [`parallel()` 或 `pipeline()`](#what-the-saved-script-looks-like) 内部**:运行继续,用 `null` 代替该 Agent 的结果

488* **直接 await**:运行以该错误结束

489 

490要重试,请要求 Claude 重新启动工作流。[暂停后恢复](#resume-after-a-pause)介绍了哪些内容会再次运行。

491 

466<h3 id="cost">492<h3 id="cost">

467 成本493 成本

468</h3>494</h3>

worktrees.md +1 −1

Details

104* **Git 重定向**:Claude Code 阻止将 git 重定向到主检出的 Bash 或 Monitor 命令。重定向可以通过 `git -C`、`--git-dir`、`GIT_DIR` 或 `GIT_WORK_TREE` 变量,或在运行 git 之前 `cd` 到主检出来进行。104* **Git 重定向**:Claude Code 阻止将 git 重定向到主检出的 Bash 或 Monitor 命令。重定向可以通过 `git -C`、`--git-dir`、`GIT_DIR` 或 `GIT_WORK_TREE` 变量,或在运行 git 之前 `cd` 到主检出来进行。

105* **命令形状**:当 Claude Code 无法从命令文本验证命令运行的任何 git 保持在 worktree 内时,它会阻止 Bash 或 Monitor 命令。例如,当命令名称在运行时计算、语法无法解析,或当诸如 `${!name}` 或 `${ command; }` 之类的扩展可能运行文本中未明确说明的命令时,就会发生这种情况。Claude Code 告诉 Claude 如何重写被拒绝的命令,例如将其分割成普通的单独命令。您无法关闭此检查。105* **命令形状**:当 Claude Code 无法从命令文本验证命令运行的任何 git 保持在 worktree 内时,它会阻止 Bash 或 Monitor 命令。例如,当命令名称在运行时计算、语法无法解析,或当诸如 `${!name}` 或 `${ command; }` 之类的扩展可能运行文本中未明确说明的命令时,就会发生这种情况。Claude Code 告诉 Claude 如何重写被拒绝的命令,例如将其分割成普通的单独命令。您无法关闭此检查。

106 106 

107这些检查读取编辑所针对的路径、命令运行所在的目录以及命令的文本。它们都不会跟踪 shell 命令写入了哪些文件,因此,在主检出中写入文件但并未在那里运行 git 的命令(例如 `cp` 或 shell 重定向)不会被这些检查拒绝。Claude Code 会像对待任何其他 shell 命令一样对待该命令,因此它是直接运行还是向您发出提示,取决于您的[权限模式](/docs/zh-CN/permission-modes)和规则。107这些检查读取编辑所针对的路径、命令运行所在的目录以及命令的文本。它们都不会跟踪 shell 命令写入了哪些文件,因此,在主检出中写入文件但并未在那里运行 git 的命令(例如 `cp` 或 shell 重定向)不会被这些检查拒绝。Claude Code 会像对待任何其他 shell 命令一样,依据您的[权限](/docs/zh-CN/permissions)和[沙箱隔离](/docs/zh-CN/sandboxing)设置来处理该命令。

108 108 

109检查适用于您启动 Claude Code 的存储库。它们也涵盖链接的 worktree 链接自的主检出。对于 PowerShell 命令,Claude Code 仅应用工作目录检查。109检查适用于您启动 Claude Code 的存储库。它们也涵盖链接的 worktree 链接自的主检出。对于 PowerShell 命令,Claude Code 仅应用工作目录检查。

110 110