SpyBara
Go Premium

Documentation 2026-10-02 22:59 UTC to 2026-10-03 06:58 UTC

44 files changed +1,330 −1,166. View all changes and history on the product overview
2026
Sat 3 08:00 Fri 2 22:59 Thu 1 23:59
Details

145某些行为不适应屏幕阅读器模式:145某些行为不适应屏幕阅读器模式:

146 146 

147* 屏幕阅读器模式在屏幕阅读器运行时不会自动打开。147* 屏幕阅读器模式在屏幕阅读器运行时不会自动打开。

148* Claude Code 不会宣布通过除了使用 `Shift+Tab` 循环以外的任何方式进行的权限模式更改,例如从命令进入[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)。148* Claude Code 不会宣布通过命令进行的权限模式更改,例如使用 `/plan` 进入[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)。

149* 使用 `claude attach` 或从代理视图附加到[后台会话](/docs/zh-CN/agent-view)会进入终端的备用屏幕,该屏幕没有本机滚动缓冲区。这与[其他附加会话的行为相同](/docs/zh-CN/fullscreen)。要退出,请在空提示上按左箭头,或如果对话框有焦点,请按 Ctrl+Z。149* 使用 `claude attach` 或从代理视图附加到[后台会话](/docs/zh-CN/agent-view)会进入终端的备用屏幕,该屏幕没有本机滚动缓冲区。这与[其他附加会话的行为相同](/docs/zh-CN/fullscreen)。要退出,请在空提示上按左箭头,或如果对话框有焦点,请按 Ctrl+Z。

150* Claude Code 在退出时打印的摘要中宣布成本,而不是每轮。150* Claude Code 在退出时打印的摘要中宣布成本,而不是每轮。

151* 屏幕阅读器模式不改变带有 `-p` 标志的[非交互模式](/docs/zh-CN/headless)。非交互模式已经写入纯文本,并且仍然是脚本编写的替代方案。151* 屏幕阅读器模式不改变带有 `-p` 标志的[非交互模式](/docs/zh-CN/headless)。非交互模式已经写入纯文本,并且仍然是脚本编写的替代方案。

Details

154| `PostToolUse` | 是 | 是 | 工具执行结果 | 将所有文件更改记录到审计跟踪 |154| `PostToolUse` | 是 | 是 | 工具执行结果 | 将所有文件更改记录到审计跟踪 |

155| `PostToolUseFailure` | 是 | 是 | 工具执行失败 | 处理或记录工具错误 |155| `PostToolUseFailure` | 是 | 是 | 工具执行失败 | 处理或记录工具错误 |

156| `PostToolBatch` | 否 | 是 | 一整批工具调用解决,每批一次,在下一个模型调用之前 | 为整个批次注入约定 |156| `PostToolBatch` | 否 | 是 | 一整批工具调用解决,每批一次,在下一个模型调用之前 | 为整个批次注入约定 |

157| `UserPromptSubmit` | 是 | 是 | 用户提示提交 | 将额外上下文注入到提示中 |157| [`UserPromptSubmit`](/docs/zh-CN/hooks#userpromptsubmit) | 是 | 是 | 提交提示词,包括 Claude Code 自行发起的轮次 | 将额外上下文注入到提示词中 |

158| [`UserPromptExpansion`](/docs/zh-CN/hooks#userpromptexpansion) | 否 | 是 | 用户输入的命令或 MCP 提示在到达 Claude 之前扩展为提示。当 Claude 自己调用 skill 时不会触发 | 阻止命令直接调用或在输入 skill 时添加上下文 |158| [`UserPromptExpansion`](/docs/zh-CN/hooks#userpromptexpansion) | 否 | 是 | 用户输入的命令或 MCP 提示在到达 Claude 之前扩展为提示。当 Claude 自己调用 skill 时不会触发 | 阻止命令直接调用或在输入 skill 时添加上下文 |

159| `MessageDisplay` | 否 | 是 | 助手消息包含文本完成,每条消息一次,包含完整消息文本 | 编辑或重新格式化显示的文本而不改变记录 |159| `MessageDisplay` | 否 | 是 | 助手消息包含文本完成,每条消息一次,包含完整消息文本 | 编辑或重新格式化显示的文本而不改变记录 |

160| `Stop` | 是 | 是 | 代理执行停止 | 在退出前保存会话状态 |160| `Stop` | 是 | 是 | 代理执行停止 | 在退出前保存会话状态 |

Details

2241 "PreToolUse", # Called before tool execution2241 "PreToolUse", # Called before tool execution

2242 "PostToolUse", # Called after tool execution2242 "PostToolUse", # Called after tool execution

2243 "PostToolUseFailure", # Called when a tool execution fails2243 "PostToolUseFailure", # Called when a tool execution fails

2244 "UserPromptSubmit", # Called when user submits a prompt2244 "UserPromptSubmit", # Called when a prompt is submitted

2245 "Stop", # Called when stopping execution2245 "Stop", # Called when stopping execution

2246 "SubagentStop", # Called when a subagent stops2246 "SubagentStop", # Called when a subagent stops

2247 "PreCompact", # Called before message compaction2247 "PreCompact", # Called before message compaction


2443| 字段 | 类型 | 描述 |2443| 字段 | 类型 | 描述 |

2444| :- | :- | :- |2444| :- | :- | :- |

2445| `hook_event_name` | `Literal["UserPromptSubmit"]` | 始终为 "UserPromptSubmit" |2445| `hook_event_name` | `Literal["UserPromptSubmit"]` | 始终为 "UserPromptSubmit" |

2446| `prompt` | `str` | 用户提交的提示 |2446| `prompt` | `str` | 提交的提示词 |

2447 2447 

2448<h3 id="stophookinput">2448<h3 id="stophookinput">

2449 `StopHookInput`2449 `StopHookInput`

Details

275| `options.version` | `string` | 可选版本字符串 |275| `options.version` | `string` | 可选版本字符串 |

276| `options.instructions` | `string` | 可选服务器说明,从 `initialize` 返回并作为 MCP 说明块呈现给模型 |276| `options.instructions` | `string` | 可选服务器说明,从 `initialize` 返回并作为 MCP 说明块呈现给模型 |

277| `options.tools` | `Array<SdkMcpToolDefinition>` | 使用 [`tool()`](#tool) 创建的工具定义数组 |277| `options.tools` | `Array<SdkMcpToolDefinition>` | 使用 [`tool()`](#tool) 创建的工具定义数组 |

278| `options.alwaysLoad` | `boolean` | 当为 `true` 时,来自此服务器的每个工具都保留在初始提示中,永远不会在[工具搜索](/docs/zh-CN/agent-sdk/tool-search)后延迟。与 [`tool()`](#tool) 中的每个工具 `alwaysLoad` 结合 |278| `options.alwaysLoad` | `boolean` | 当为 `true` 时,来自此服务器的每个工具都保留在初始提示词中,而不是被延迟到[工具搜索](/docs/zh-CN/agent-sdk/tool-search)之后。与 [`tool()`](#tool) 中的每个工具 `alwaysLoad` 结合 |

279| `options.timeout` | `number` | 此服务器的工具调用超时(毫秒)。Claude Code 将其应用于此服务器以代替 [`MCP_TOOL_TIMEOUT`](/docs/zh-CN/env-vars)。传递至少 1000 的整数。Claude Code 忽略其他值。需要 TypeScript Agent SDK v0.3.248 或更高版本 |279| `options.timeout` | `number` | 此服务器的工具调用超时(毫秒)。Claude Code 将其应用于此服务器以代替 [`MCP_TOOL_TIMEOUT`](/docs/zh-CN/env-vars)。传递至少 1000 的整数。Claude Code 忽略其他值。需要 TypeScript Agent SDK v0.3.248 或更高版本 |

280 280 

281<h3 id="listsessions">281<h3 id="listsessions">

agent-teams.md +1 −1

Details

91* **Enter**:打开所选队友的记录并直接向其发送消息91* **Enter**:打开所选队友的记录并直接向其发送消息

92* **Escape**:清除选择。当你正在查看队友的记录时,Escape 会中断该队友的当前轮次92* **Escape**:清除选择。当你正在查看队友的记录时,Escape 会中断该队友的当前轮次

93 93 

94从 v2.1.199 开始,当任何队友或子 agent 仍在工作时,空闲队友的行会保留在面板中,因此你可以选择它来查看其记录或向其分配更多工作。一旦面板中的每个 agent 都处于空闲状态,空闲行会在 30 秒后隐藏,并在队友的下一轮时重新出现;队友在隐藏时仍然保持运行并可寻址。在 v2.1.181 到 v2.1.198 中,空闲行在其自己的轮次结束后 30 秒隐藏,即使其他队友仍在工作;v2.1.181 之前的版本不隐藏空闲行。94当任何队友或子代理仍在工作时,空闲队友的行会保留在面板中,因此您可以选择它来查看其会话记录或向其分配更多工作。一旦面板中的每个 Agent 都处于空闲状态,空闲行会在 30 秒后隐藏,并在队友的下一轮次时重新出现;队友在隐藏时仍然保持运行并可寻址。

95 95 

96当超过三个队友同时处于空闲状态时,前三个之外的行会折叠成一行,计数折叠的队友,例如当五个处于空闲状态时显示 `2 idle agents`。选择它并按 Enter 展开折叠的行,或按 Esc 再次折叠它们。工作中的队友、失败的队友和你正在查看的队友始终保持自己的行。96当超过三个队友同时处于空闲状态时,前三个之外的行会折叠成一行,计数折叠的队友,例如当五个处于空闲状态时显示 `2 idle agents`。选择它并按 Enter 展开折叠的行,或按 Esc 再次折叠它们。工作中的队友、失败的队友和你正在查看的队友始终保持自己的行。

97 97 

champion-kit.md +6 −6

Details

50可重用技术的例子:50可重用技术的例子:

51 51 

52* "我了解到 @-提及目录有效。将其指向 `@src/components/` 并询问哪些缺少测试,这暴露了我忽略的两个。"52* "我了解到 @-提及目录有效。将其指向 `@src/components/` 并询问哪些缺少测试,这暴露了我忽略的两个。"

53* "Plan mode (`Shift+Tab`) 显示在进行任何编辑之前将触及哪些文件,这就是为什么我对在共享代码上使用它感到满意。"53* "计划模式(`Shift+Tab`)会先列出拟议的更改,这就是为什么我放心在共享代码上使用它。"

54* "我配置了一个 Stop hook,以便在长任务完成时收到桌面通知。配置在线程中。"54* "我配置了一个 Stop hook,以便在长任务完成时收到桌面通知。配置在线程中。"

55* "运行 `/init` 从存储库生成 `CLAUDE.md`,这样助手就不会再次询问我们的约定。"55* "运行 `/init` 从存储库生成 `CLAUDE.md`,这样助手就不会再次询问我们的约定。"

56 56 


86```86```

87 87 

88```text theme={null}88```text theme={null}

89Plan mode 是我对在重要代码上使用它感到满意的原因。按 Shift+Tab 直到你看到89计划模式是我放心在重要代码上使用它的原因。按 Shift+Tab 直到看到 "plan";

90"plan";它准确地列出了它打算触及的文件,然后再改变任何东西。90它会列出拟议的更改,而不会编辑您的源代码。

91```91```

92 92 

93<h2 id="be-the-person-people-ask">93<h2 id="be-the-person-people-ask">


122| 问题 | 建议的回应 | 后续资源 |122| 问题 | 建议的回应 | 后续资源 |

123| - | - | - |123| - | - | - |

124| "我应该首先在什么上尝试它?" | 推荐一个真实但有限的任务,最好是一个你一直在推迟的错误或琐事,因为它很繁琐而不是困难。 | [Common workflows](/docs/zh-CN/common-workflows) |124| "我应该首先在什么上尝试它?" | 推荐一个真实但有限的任务,最好是一个你一直在推迟的错误或琐事,因为它很繁琐而不是困难。 | [Common workflows](/docs/zh-CN/common-workflows) |

125| "我如何相信它处理我的代码?" | 介绍 plan mode:按 `Shift+Tab` 循环进入它,Claude 准确地提议它打算改变什么,在用户批准之前不会修改任何东西。 | [Permissions](/docs/zh-CN/permissions) |125| "我怎么能放心让它处理我的代码?" | 介绍计划模式:按 `Shift+Tab` 循环切换进入该模式,Claude 会进行研究并提出更改建议,而不会编辑您的源代码。 | [Permissions](/docs/zh-CN/permissions) |

126| "设置值得付出努力吗?" | 安装大约需要两分钟,在终端中运行,不需要 IDE 扩展。运行一次 `/init` 足以开始工作。 | [Quickstart](/docs/zh-CN/quickstart) |126| "设置值得付出努力吗?" | 安装大约需要两分钟,在终端中运行,不需要 IDE 扩展。运行一次 `/init` 足以开始工作。 | [Quickstart](/docs/zh-CN/quickstart) |

127| "它产生了不正确的结果。" | 鼓励他们将失败提供给 Claude。粘贴错误消息或失败的测试远比重新表述原始请求更有效。 | [Common workflows](/docs/zh-CN/common-workflows) |127| "它产生了不正确的结果。" | 鼓励他们将失败提供给 Claude。粘贴错误消息或失败的测试远比重新表述原始请求更有效。 | [Common workflows](/docs/zh-CN/common-workflows) |

128| "它不理解我们的代码库约定。" | 建议运行 `/init` 生成 `CLAUDE.md` 文件,然后添加团队的约定、测试命令和任何应该避免的目录。 | [Memory](/docs/zh-CN/memory) |128| "它不理解我们的代码库约定。" | 建议运行 `/init` 生成 `CLAUDE.md` 文件,然后添加团队的约定、测试命令和任何应该避免的目录。 | [Memory](/docs/zh-CN/memory) |


195| 顾虑 | 建议的回应 | 提供的证据 |195| 顾虑 | 建议的回应 | 提供的证据 |

196| - | - | - |196| - | - | - |

197| "我没有它会更快。" | 这对于这个人日常编写的代码可能是真的。建议在他们倾向于避免的工作上尝试它:遗留文件、不熟悉的服务或测试脚手架,其中杠杆最高。 | 以两种方式计时一个繁琐的任务并比较。 |197| "我没有它会更快。" | 这对于这个人日常编写的代码可能是真的。建议在他们倾向于避免的工作上尝试它:遗留文件、不熟悉的服务或测试脚手架,其中杠杆最高。 | 以两种方式计时一个繁琐的任务并比较。 |

198| "我不相信 AI 接触生产代码。" | 同意没有变化应该在未读的情况下登陆。Plan mode 结合正常的 diff 审查意味着没有应用工程师没有检查的东西,与任何拉取请求相同的标准。 | 在真实文件上演示 plan mode。 |198| "我不相信 AI 接触生产代码。" | 同意任何更改都不应在未经审阅的情况下合入。建议使用计划模式先查看拟议的更改,然后按照与任何 Pull Request 相同的标准审查 diff。 | 在真实文件上演示计划模式。 |

199| "它会使初级工程师变弱。" | 使用得当,它是一个有效的解释器。鼓励初级工程师在要求它改变任何东西之前要求 Claude 解释一个文件及其调用站点。 | 一起运行"解释 @file 以及它从哪里被调用"。 |199| "它会使初级工程师变弱。" | 使用得当,它是一个有效的解释器。鼓励初级工程师在要求它改变任何东西之前要求 Claude 解释一个文件及其调用站点。 | 一起运行"解释 @file 以及它从哪里被调用"。 |

200| "我尝试过一次,它产生了幻觉。" | 这通常是上下文问题而不是模型问题。@-提及相关文件、运行 `/init` 和提供实际错误输出通常会解决它。 | 用适当的 `@` 上下文重新运行他们的原始提示。 |200| "我尝试过一次,它产生了幻觉。" | 这通常是上下文问题而不是模型问题。@-提及相关文件、运行 `/init` 和提供实际错误输出通常会解决它。 | 用适当的 `@` 上下文重新运行他们的原始提示。 |

201| "我们没有时间学习另一个工具。" | Claude Code 是一个终端命令而不是一个平台。如果它在第一个会话中没有返回价值,将其搁置是合理的。 | 两分钟的安装,然后是一个真实的错误。 |201| "我们没有时间学习另一个工具。" | Claude Code 是一个终端命令而不是一个平台。如果它在第一个会话中没有返回价值,将其搁置是合理的。 | 两分钟的安装,然后是一个真实的错误。 |


209| 技术 | 如何应用它 |209| 技术 | 如何应用它 |

210| - | - |210| - | - |

211| 提供正确的上下文 | 使用 `@file` 或 `@directory/` 引用,或直接粘贴错误或日志输出。提供相关上下文比精心设计的提示更有效。 |211| 提供正确的上下文 | 使用 `@file` 或 `@directory/` 引用,或直接粘贴错误或日志输出。提供相关上下文比精心设计的提示更有效。 |

212| 在编辑前审查计划 | 按 `Shift+Tab` 进入 Plan Mode。Claude 将在执行之前描述预期的更改以供你批准。 |212| 在编辑前审查计划 | 按 `Shift+Tab` 进入计划模式。Claude 会进行调研并提出更改建议,而不会编辑您的源代码。 |

213| 教它你的存储库 | 运行 `/init` 生成 `CLAUDE.md` 文件,然后添加你的约定、测试命令和任何不应该修改的目录。参见 [Memory](/docs/zh-CN/memory)。 |213| 教它你的存储库 | 运行 `/init` 生成 `CLAUDE.md` 文件,然后添加你的约定、测试命令和任何不应该修改的目录。参见 [Memory](/docs/zh-CN/memory)。 |

214| 重用工作流 | 在 `.claude/skills/<name>/` 中保存 `SKILL.md` 文件以创建整个团队可以使用的 `/name` 技能。参见 [Skills](/docs/zh-CN/skills)。 |214| 重用工作流 | 在 `.claude/skills/<name>/` 中保存 `SKILL.md` 文件以创建整个团队可以使用的 `/name` 技能。参见 [Skills](/docs/zh-CN/skills)。 |

215| 在长任务期间保持知情 | 配置一个 Stop hook 以在长时间运行的任务完成时收到桌面通知。参见 [Hooks](/docs/zh-CN/hooks-guide)。 |215| 在长任务期间保持知情 | 配置一个 Stop hook 以在长时间运行的任务完成时收到桌面通知。参见 [Hooks](/docs/zh-CN/hooks-guide)。 |

channels.md +1 −1

Details

349 349 

350如果您设置空数组,您会阻止所有 channel 插件从允许列表中,但 `--dangerously-load-development-channels` 仍可以为本地测试绕过该阻止。要完全阻止 channels,包括开发标志,请改为保持 `channelsEnabled` 未设置。350如果您设置空数组,您会阻止所有 channel 插件从允许列表中,但 `--dangerously-load-development-channels` 仍可以为本地测试绕过该阻止。要完全阻止 channels,包括开发标志,请改为保持 `channelsEnabled` 未设置。

351 351 

352此设置需要 `channelsEnabled: true`。如果用户将不在您列表中的插件传递给 `--channels`,Claude Code 会正常启动,但 channel 不会注册,启动通知会解释该插件不在组织的批准列表中。如果您在 v2 MCP 客户端运行时将 `MCP_PROTOCOL_NEGOTIATION` 设置为 `auto`,channel 也可能无法注册,因为 Claude Code [不会注册协商协议修订版本 2026-07-28 的 channel 服务器](/docs/zh-CN/mcp#push-messages-with-channels)。352此设置需要 `channelsEnabled: true`。如果用户将不在您列表中的插件传递给 `--channels`,Claude Code 会正常启动,但 channel 不会注册,启动通知会解释该插件不在组织的批准列表中。在 v2 MCP 客户端运行时上,channel 也可能无法注册,因为 Claude Code [不会注册协商协议修订版本 2026-07-28 的 channel 服务器](/docs/zh-CN/mcp#push-messages-with-channels)。

353 353 

354<h2 id="research-preview">354<h2 id="research-preview">

355 研究预览355 研究预览

chrome.md +1 −1

Details

130在 VS Code 会话中,Claude Code 是否在浏览器操作前询问您,取决于该会话连接到您浏览器的方式:130在 VS Code 会话中,Claude Code 是否在浏览器操作前询问您,取决于该会话连接到您浏览器的方式:

131 131 

132* **您键入了 `@browser`**:扩展程序会批准 Claude Code 原本会询问您的每个浏览器操作。132* **您键入了 `@browser`**:扩展程序会批准 Claude Code 原本会询问您的每个浏览器操作。

133* **[Enabled by default](#enable-chrome-by-default) 设置在启动时建立了连接**:在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,Claude Code 会在浏览器操作前询问您,直到您在该会话中键入 `@browser`。133* **[Enabled by default](#enable-chrome-by-default) 设置在启动时建立了连接**:在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,对于您尚未允许的网站,Claude Code 会在浏览器操作前询问您,直到您在该会话中键入 `@browser`。

134 134 

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

136 Plan Mode 中的浏览器工具136 Plan Mode 中的浏览器工具

Details

79| 字段 | 必需 | 描述 |79| 字段 | 必需 | 描述 |

80| - | - | - |80| - | - | - |

81| `issuer` | 是 | OIDC 发现基础。必须在 `/.well-known/openid-configuration` 提供发现。在生产中使用 HTTPS;网关接受 `http://` 发行者。环回发行者(如 `http://localhost:8081`)被[SSRF 防护](/docs/zh-CN/claude-apps-gateway-deploy#threat-model-summary)拒绝,除非在网关的环境中设置了 `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`。 |81| `issuer` | 是 | OIDC 发现基础。必须在 `/.well-known/openid-configuration` 提供发现。在生产中使用 HTTPS;网关接受 `http://` 发行者。环回发行者(如 `http://localhost:8081`)被[SSRF 防护](/docs/zh-CN/claude-apps-gateway-deploy#threat-model-summary)拒绝,除非在网关的环境中设置了 `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`。 |

82| `client_id` / `client_secret` | 是 | 来自您的 OAuth 客户端注册 |82| `client_id` | 是 | 来自您的 OAuth 客户端注册 |

83| `client_secret` | 除非 `token_endpoint_auth_method` 为 `private_key_jwt` | 来自您的 OAuth 客户端注册。使用[证书客户端身份验证](#certificate-client-authentication)时省略此项。 |

83| `allowed_email_domains` | 否 | 拒绝 `email` 声明不在这些域之一中的 id\_tokens,不区分大小写。针对多租户 IdP 配置错误的深度防御。独立于此设置,`email_verified` 声明明确为 `false` 的 id\_token 总是被拒绝。 |84| `allowed_email_domains` | 否 | 拒绝 `email` 声明不在这些域之一中的 id\_tokens,不区分大小写。针对多租户 IdP 配置错误的深度防御。独立于此设置,`email_verified` 声明明确为 `false` 的 id\_token 总是被拒绝。 |

84| `allowed_groups` | 否 | 限制登录仅限于这些 IdP 组的成员,与 `groups_claim` 匹配。处于允许的电子邮件域但不在这些组中的用户被拒绝。需要 IdP 发出组声明。匹配是对该声明中的值的精确、区分大小写的字符串比较,网关不展开嵌套组:要允许子组的成员,在此列出子组或配置 IdP 发出扁平化成员资格。 |85| `allowed_groups` | 否 | 限制登录仅限于这些 IdP 组的成员,与 `groups_claim` 匹配。处于允许的电子邮件域但不在这些组中的用户被拒绝。需要 IdP 发出组声明。匹配是对该声明中的值的精确、区分大小写的字符串比较,网关不展开嵌套组:要允许子组的成员,在此列出子组或配置 IdP 发出扁平化成员资格。 |

85| `groups_claim` | 否 | 哪个 id\_token 声明携带组成员资格。默认 `groups`。Microsoft Entra 在 `roles` 下发出应用角色。接受平面键或 RFC 6901 JSON 指针(如 `/resource_access/gateway/roles`)用于嵌套声明。 |86| `groups_claim` | 否 | 哪个 id\_token 声明携带组成员资格。默认 `groups`。Microsoft Entra 在 `roles` 下发出应用角色。接受平面键或 RFC 6901 JSON 指针(如 `/resource_access/gateway/roles`)用于嵌套声明。 |


91| `userinfo_fallback` | 否 | 当 id\_token 省略电子邮件或组时,从 `/userinfo` 获取它们。Keycloak 轻量级访问令牌、Okta 组织服务器和 ADFS 最小令牌需要。id\_token 保持权威;userinfo 仅填补空白。默认 `false`。 |92| `userinfo_fallback` | 否 | 当 id\_token 省略电子邮件或组时,从 `/userinfo` 获取它们。Keycloak 轻量级访问令牌、Okta 组织服务器和 ADFS 最小令牌需要。id\_token 保持权威;userinfo 仅填补空白。默认 `false`。 |

92| `use_pkce` | 否 | 在授权请求上发送 PKCE (S256) 质询。默认 `true`。仅当您的 IdP 为此机密客户端拒绝 PKCE 时设置 `false`。 |93| `use_pkce` | 否 | 在授权请求上发送 PKCE (S256) 质询。默认 `true`。仅当您的 IdP 为此机密客户端拒绝 PKCE 时设置 `false`。 |

93| `clock_skew_seconds` | 否 | 验证 id\_token 时间声明时容忍时钟漂移。默认 `0`,严格。如果您在登录后立即看到"令牌已过期/尚未有效"错误,请提高以应对主机/IdP 时钟偏差。 |94| `clock_skew_seconds` | 否 | 验证 id\_token 时间声明时容忍时钟漂移。默认 `0`,严格。如果您在登录后立即看到"令牌已过期/尚未有效"错误,请提高以应对主机/IdP 时钟偏差。 |

94| `token_endpoint_auth_method` | 否 | 覆盖令牌端点身份验证方法。接受 `client_secret_basic` 或 `client_secret_post`。默认自动协商。 |95| `token_endpoint_auth_method` | 否 | 网关向 IdP 令牌端点进行身份验证的方式:`client_secret_basic`、`client_secret_post`,或用于[证书客户端身份验证](#certificate-client-authentication)的 `private_key_jwt`。默认情况下,网关根据 IdP 公布的内容从两种 `client_secret` 方法中选择一种。 |

96| `client_assertion` | 使用 `private_key_jwt` 时 | 包含 `private_key_pem` 和 `certificate_pem` 的块:用于[证书客户端身份验证](#certificate-client-authentication)的私钥和证书。需要 v2.1.284 或更高版本。 |

95| `id_token_signed_response_alg` | 否 | 预期的 id\_token 签名算法。默认 `RS256`。为使用 ES256、PS256 或 EdDSA 签名的 IdP 设置。 |97| `id_token_signed_response_alg` | 否 | 预期的 id\_token 签名算法。默认 `RS256`。为使用 ES256、PS256 或 EdDSA 签名的 IdP 设置。 |

96| `additional_authorized_parties` | 否 | 除 `client_id` 外要接受的额外 `azp` 值,用于 Keycloak 代理和令牌交换流 |98| `additional_authorized_parties` | 否 | 除 `client_id` 外要接受的额外 `azp` 值,用于 Keycloak 代理和令牌交换流 |

97| `discovery_url` | 否 | 从此 URL 获取发现文档而不是从 `issuer` 派生,用于代理后面重写发行者主机的 IdP。路径必须包含 `/.well-known/`。 |99| `discovery_url` | 否 | 从此 URL 获取发现文档而不是从 `issuer` 派生,用于代理后面重写发行者主机的 IdP。路径必须包含 `/.well-known/`。 |


99| `form_action_origins` | 否 | `/device` 页面的 `Content-Security-Policy: form-action` 指令的其他源。网关已允许 `'self'` 和发现的 `authorization_endpoint` 源,但 Chrome 对整个重定向链强制执行 `form-action`。如果您的 IdP 通过第二个主机重定向,如 Azure AD 联合到 ADFS、中心辐射 Okta 或公司 SSO 拦截器,列出授权请求可能重定向通过的每个源。 |101| `form_action_origins` | 否 | `/device` 页面的 `Content-Security-Policy: form-action` 指令的其他源。网关已允许 `'self'` 和发现的 `authorization_endpoint` 源,但 Chrome 对整个重定向链强制执行 `form-action`。如果您的 IdP 通过第二个主机重定向,如 Azure AD 联合到 ADFS、中心辐射 Okta 或公司 SSO 拦截器,列出授权请求可能重定向通过的每个源。 |

100| `ca_cert_pem` | 否 | PEM 编码的 CA 证书本身,不是文件的路径。它仅替换 IdP 请求的系统信任存储。要加载挂载的文件,请写 `${file:/etc/gateway/idp-ca.pem}`。用于公司 PKI 后面的 Keycloak 或 Dex。 |102| `ca_cert_pem` | 否 | PEM 编码的 CA 证书本身,不是文件的路径。它仅替换 IdP 请求的系统信任存储。要加载挂载的文件,请写 `${file:/etc/gateway/idp-ca.pem}`。用于公司 PKI 后面的 Keycloak 或 Dex。 |

101 103 

104<h4 id="certificate-client-authentication">

105 证书客户端身份验证

106</h4>

107 

108如果您的身份提供商使用证书而不是客户端密钥对 OAuth 客户端进行身份验证(如 Microsoft Entra 使用证书凭据),请设置 `token_endpoint_auth_method: private_key_jwt`。需要网关服务器上的 Claude Code v2.1.284 或更高版本。

109 

110使用此配置时,网关不发送任何密钥。当开发人员登录时以及网关每次刷新其会话时,网关使用由证书私钥签名的短期 JWT 向 IdP 的令牌端点进行身份验证。该 JWT 使用 RS256 签名,并通过 `x5t` 和 `x5t#S256` 指纹标头而不是 `kid` 来标识证书。您的 IdP 必须能够按指纹找到已注册的证书。

111 

112<Steps>

113 <Step title="创建密钥和证书">

114 创建一个至少 2048 位的未加密 RSA 私钥(PKCS#8 或 PKCS#1 PEM 格式),并为其创建证书。对于任何不满足这些条件的密钥,网关都会拒绝启动。以下 `openssl` 命令会创建这样的密钥以及有效期为一年的自签名证书:

115 

116 ```bash theme={null}

117 openssl req -x509 -newkey rsa:2048 -nodes -keyout idp-client.key -out idp-client.crt -days 365 -subj "/CN=claude-gateway"

118 ```

119 

120 它会将 `idp-client.key` 和 `idp-client.crt` 写入当前目录。将这两个文件复制或挂载到网关可以读取的位置。第 3 步中的示例使用 `/etc/gateway/`。

121 </Step>

122 

123 <Step title="将证书上传到 IdP">

124 将证书(而不是私钥)上传到 IdP 上网关的应用注册。

125 </Step>

126 

127 <Step title="将密钥和证书添加到 gateway.yaml">

128 在 `client_assertion` 块中向网关提供私钥和证书。省略 `client_secret`,因为当它与 `private_key_jwt` 一起设置时,网关会拒绝启动。以下 `oidc` 块使用证书向 Microsoft Entra 租户对网关进行身份验证:

129 

130 ```yaml theme={null}

131 oidc:

132 issuer: https://login.microsoftonline.com/<tenant-id>/v2.0

133 client_id: <application-id>

134 token_endpoint_auth_method: private_key_jwt

135 client_assertion:

136 private_key_pem: ${file:/etc/gateway/idp-client.key}

137 certificate_pem: ${file:/etc/gateway/idp-client.crt}

138 ```

139 

140 这两个值都是 PEM 内容,而不是文件路径,因此请像示例那样使用 `${file:/path}` 加载挂载的文件。除非 `certificate_pem` 是单个 PEM 证书(不含证书链的其余部分)且其公钥与 `private_key_pem` 匹配,否则网关会拒绝启动。

141 </Step>

142 

143 <Step title="重启网关并检查启动日志">

144 重启网关,并在启动日志中找到以下行:

145 

146 ```text theme={null}

147 [gateway] 2026-10-01T23:07:40.512Z info oidc: client authentication private_key_jwt; certificate CN=claude-gateway, SHA-1 thumbprint DE92821854EE8BAA1D98C758FAA04AABE80B9F57, expires Oct 1 23:07:31 2027 GMT

148 ```

149 

150 将该 SHA-1 指纹与 IdP 为您上传的证书显示的指纹进行比较。如果证书已过期或尚未生效,网关仍会启动,但会记录一条警告,说明在您替换证书之前登录和刷新都将失败。要确认 IdP 接受该证书,请让一位开发人员通过网关登录。

151 </Step>

152</Steps>

153 

154<h4 id="rotate-the-client-certificate">

155 轮换客户端证书

156</h4>

157 

158网关在启动时读取一次密钥和证书,因此更改后的文件仅在重启后生效。请按以下顺序轮换,以确保任何令牌请求都不会出示 IdP 中不存在的证书:

159 

1601. 将新证书与旧证书一起上传到 IdP。

1612. 替换 `gateway.yaml` 加载的密钥和证书文件,然后重启网关。

1623. 从 IdP 中删除旧证书。

163 

102<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

103 通过前向代理的 IdP 请求165 通过前向代理的 IdP 请求

104</h4>166</h4>


1224| - | - | - | - |1286| - | - | - | - |

1225| `access_control` | `allow_cidrs` / `deny_cidrs` | 空 | 入站 IP 允许/拒绝,按客户端地址,在 `trusted_proxies` 解析后。`deny_cidrs` 首先检查;与它匹配的客户端被拒绝,即使 `allow_cidrs` 也匹配。如果 `allow_cidrs` 非空,网关是默认拒绝。`/healthz` 和 `/readyz` 免除 `allow_cidrs`。当受信任的代理发送不是 IP 地址的 `X-Forwarded-For` 条目时,真实客户端未知,网关记录一次警告,命名要检查的内容。其中任一列表适用于请求的地方,它以 `403` 和审计原因 `xff_unparseable` 拒绝它。其中都不适用的地方,它提供请求并使用代理自己的地址作为客户端 IP,用于每个 IP 速率限制和审计。 |1287| `access_control` | `allow_cidrs` / `deny_cidrs` | 空 | 入站 IP 允许/拒绝,按客户端地址,在 `trusted_proxies` 解析后。`deny_cidrs` 首先检查;与它匹配的客户端被拒绝,即使 `allow_cidrs` 也匹配。如果 `allow_cidrs` 非空,网关是默认拒绝。`/healthz` 和 `/readyz` 免除 `allow_cidrs`。当受信任的代理发送不是 IP 地址的 `X-Forwarded-For` 条目时,真实客户端未知,网关记录一次警告,命名要检查的内容。其中任一列表适用于请求的地方,它以 `403` 和审计原因 `xff_unparseable` 拒绝它。其中都不适用的地方,它提供请求并使用代理自己的地址作为客户端 IP,用于每个 IP 速率限制和审计。 |

1226| `limits` | `max_request_bytes` | 32 MiB | 最大入站请求体;超大请求在缓冲体之前获得 `413`。为大文件或图像请求提高。 |1288| `limits` | `max_request_bytes` | 32 MiB | 最大入站请求体;超大请求在缓冲体之前获得 `413`。为大文件或图像请求提高。 |

1227| `limits` | `max_request_header_bytes` | 未设置 | 设置时,超大标头返回 `431` |1289| `limits` | `max_request_header_bytes` | 未设置 | 降低网关对请求标头总大小的 256 KiB 限制。超过限制的请求返回 `431`,大于 256 KiB 的值不起作用。如果开发者在登录后收到 `431`,请参阅[登录后请求标头过大](/docs/zh-CN/claude-apps-gateway-deploy#request-headers-too-large-after-sign-in)。 |

1228| `limits` | `max_url_length` | 未设置 | 设置时,过长 URL 返回 `414` |1290| `limits` | `max_url_length` | 未设置 | 设置时,过长 URL 返回 `414` |

1229| `timeouts` | `upstream_ttfb_ms` | 120000 | 等待上游响应标头的最大时间(首字节时间)。响应体然后流,没有墙钟上限。适用于直接 Anthropic 上游路径;在每个其他提供商上,网关等待最多一小时以响应开始。 |1291| `timeouts` | `upstream_ttfb_ms` | 120000 | 等待上游响应标头的最大时间(首字节时间)。响应体然后流,没有墙钟上限。适用于直接 Anthropic 上游路径;在每个其他提供商上,网关等待最多一小时以响应开始。 |

1230| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 未认证设备授权端点上的每个 IP 速率限制。为共享出口 IP 或 NAT 后面的大型组织提高。[大型推出](/docs/zh-CN/claude-apps-gateway-deploy#large-rollouts)显示如何调整大小。这些限制仅适用于设备授予登录流,不适用于 `/v1/messages` 推理。请参阅[用户代码暴力破解抵抗](/docs/zh-CN/claude-apps-gateway-deploy#user-code-brute-force-resistance)。 |1292| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 未认证设备授权端点上的每个 IP 速率限制。为共享出口 IP 或 NAT 后面的大型组织提高。[大型推出](/docs/zh-CN/claude-apps-gateway-deploy#large-rollouts)显示如何调整大小。这些限制仅适用于设备授予登录流,不适用于 `/v1/messages` 推理。请参阅[用户代码暴力破解抵抗](/docs/zh-CN/claude-apps-gateway-deploy#user-code-brute-force-resistance)。 |

Details

25 身份提供商设置25 身份提供商设置

26</h2>26</h2>

27 27 

28向身份提供商注册一个机密 OAuth/OpenID Connect (OIDC) Web 应用程序,使用单个重定向 URI `https://<gateway>/oauth/callback`,并将其分配给应该有网关访问权限的用户或组。28向身份提供商注册一个机密 OAuth/OpenID Connect (OIDC) Web 应用程序,使用单个重定向 URI `https://<gateway>/oauth/callback`,并将其分配给应该有网关访问权限的用户或组。网关使用该注册的客户端密钥向 IdP 进行身份验证;如果您的 IdP 改用[证书凭据](/docs/zh-CN/claude-apps-gateway-config#certificate-client-authentication),则使用您上传到该注册的证书进行身份验证。

29 29 

30任何符合 OIDC 的 IdP 都可以工作:Okta、Microsoft Entra ID、Google Workspace、Keycloak、Dex、PingFederate 等。IdP 必须满足三个要求:30任何符合 OIDC 的 IdP 都可以工作:Okta、Microsoft Entra ID、Google Workspace、Keycloak、Dex、PingFederate 等。IdP 必须满足三个要求:

31 31 


372 372 

373如有问题和反馈,请使用 [Claude Code 支持](https://support.claude.com/en/collections/14445694-claude-code),或在 [Claude Code GitHub 仓库](https://github.com/anthropics/claude-code/issues)上提交问题。报告问题时,请包括:373如有问题和反馈,请使用 [Claude Code 支持](https://support.claude.com/en/collections/14445694-claude-code),或在 [Claude Code GitHub 仓库](https://github.com/anthropics/claude-code/issues)上提交问题。报告问题时,请包括:

374 374 

375* **Gateway 问题**:相关窗口的 gateway stderr、你的 `gateway.yaml`(已隐藏密钥)、gateway 版本(显示在 `/` 的登陆页面和 `/managed/settings` 的 `x-cc-gateway-version` 响应头中),以及最近的更改375* **网关问题**:相关时间窗口内网关的 stderr、您的 `gateway.yaml`(已隐藏密钥)、网关版本(显示在 `/` 的登陆页面和 `/managed/settings` 的 `x-cc-gateway-version` 响应头中),以及最近的更改

376* **登录问题**:开发者运行 `claude --debug-file ./claude-debug.txt`、重现问题,然后发送该文件以及同一窗口的 gateway 审计日志376* **登录问题**:开发者运行 `claude --debug-file ./claude-debug.txt`、重现问题,然后发送该文件以及同一时间窗口内网关的审计日志

377* **推理问题**:请求的模型、配置的上游服务,以及请求的 gateway 审计日志,其中记录了哪个上游提供了服务以及响应状态377* **推理问题**:请求的模型、配置的上游服务,以及该请求的网关审计日志,其中记录了由哪个上游提供服务以及响应状态

378 378 

379gateway 的 stderr 包含审计事件流,审计日志记录开发者身份,调试文件记录来自开发者机器的 hook 和 MCP 服务器输出。在发布到公开问题前,请审查并隐藏这些内容。379网关的 stderr 包含审计事件流,审计日志记录开发者身份,调试文件记录来自开发者机器的 hook 和 MCP 服务器输出。在发布到公开问题前,请审查并隐藏这些内容。

380 380 

381| 症状 | 原因 | 解决方案 |381| 症状 | 原因 | 解决方案 |

382| - | - | - |382| - | - | - |

383| 开发者的 `/login` 显示标准账户选择器而不是 **Cloud gateway** 屏幕 | 该机器的托管设置中未设置 `forceLoginMethod` 或 `forceLoginGatewayUrl` | 将[托管设置文件](/docs/zh-CN/claude-apps-gateway#set-the-gateway-url)部署到设备;`/login` 从那里读取 gateway URL |383| 开发者的 `/login` 显示标准账户选择器而不是 **Cloud gateway** 屏幕 | 该机器的托管设置中未设置 `forceLoginMethod` 或 `forceLoginGatewayUrl` | 将[托管设置文件](/docs/zh-CN/claude-apps-gateway#set-the-gateway-url)部署到设备;`/login` 从那里读取网关 URL |

384| 开发者的请求失败,显示 `Not signed in to the Cloud gateway — run /login.` | 机器的托管设置设置了 `forceLoginMethod: "gateway"` 或 `forceLoginGatewayUrl`,且会话没有 gateway 登录。残留的 claude.ai 登录不满足要求。 | 让开发者运行 `/login` 并完成 gateway 登录。另请参阅[管理员策略需要 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。 |384| 开发者的请求失败,显示 `Not signed in to the Cloud gateway — run /login.` | 机器的托管设置设置了 `forceLoginMethod: "gateway"` 或 `forceLoginGatewayUrl`,且会话没有网关登录。残留的 claude.ai 登录不满足要求。 | 让开发者运行 `/login` 并完成网关登录。另请参阅[管理员策略需要 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。 |

385| Claude Desktop 报告其引导配置无法获取 | `/user/bootstrap` 返回 404:与用户匹配的策略不包含 `desktop` 密钥,或没有策略匹配。gateway 的审计日志将每次拒绝记录为 `desktop_bootstrap.denied` 并说明原因。 | 将 `desktop` 块添加到与用户匹配的策略,或添加到 `match: {}` 基础层;空的 `desktop: {}` 就足够了。请参阅 [Claude Desktop 覆盖](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)。 |385| Claude Desktop 报告其引导配置无法获取 | `/user/bootstrap` 返回 404:与用户匹配的策略不包含 `desktop` 键,或没有策略匹配。网关的审计日志将每次拒绝记录为 `desktop_bootstrap.denied` 并说明原因。 | 将 `desktop` 块添加到与用户匹配的策略,或添加到 `match: {}` 基础层;空的 `desktop: {}` 就足够了。请参阅 [Claude Desktop 覆盖](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)。 |

386| 启动显示 `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | 已安装的 Claude Code 版本早于 gateway 支持 | 让开发者更新 Claude Code 到包含 Cloud gateway 支持的版本 |386| 启动显示 `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | 已安装的 Claude Code 版本早于网关支持 | 让开发者更新 Claude Code 到包含 Cloud gateway 支持的版本 |

387| 启动退出,显示 `Administrator policy requires a Cloud gateway sign-in on this machine` | 开发者的环境设置了 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`,其设置配置了 [`apiKeyHelper`](/docs/zh-CN/settings-reference#apikeyhelper),或来自早期 Claude Console 登录的 API 密钥仍然保存 | 让开发者清除每个适用的项:取消设置变量、删除 `apiKeyHelper` 条目,或运行 `claude auth logout` 删除保存的密钥。然后让他们启动 `claude` 并使用 `/login` 登录。另请参阅[管理员策略需要 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。 |387| 启动退出,显示 `Administrator policy requires a Cloud gateway sign-in on this machine` | 开发者的环境设置了 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`,其设置配置了 [`apiKeyHelper`](/docs/zh-CN/settings-reference#apikeyhelper),或来自早期 Claude Console 登录的 API 密钥仍然保存 | 让开发者清除每个适用的项:取消设置变量、删除 `apiKeyHelper` 条目,或运行 `claude auth logout` 删除保存的密钥。之后,使用 `CLAUDE_CODE_USE_*` 选择云提供商的会话无需登录即可启动;对于其他所有会话,让他们启动 `claude` 并使用 `/login` 登录。另请参阅[管理员策略需要 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。 |

388| 启动或 `/login` 在托管设置加载时返回 403 后报告 `Claude Code may not be enabled for your organization` | gateway 或其前面的某个组件用 403 响应了 `/managed/settings` 请求。gateway 自身的设置路由从不返回 403。状态来自 [`access_control`](/docs/zh-CN/claude-apps-gateway-config#http-tuning) IP 检查或 gateway 前面的代理或 WAF。审计日志将 IP 检查拒绝记录为 `access.denied` 并说明原因。开发者保持登录状态。 | 检查审计日志中失败时的 `access.denied`,修复 `access_control` 列表或前端,然后让开发者再次启动 `claude` |388| 启动或 `/login` 在托管设置加载时返回 403 后报告 `Claude Code may not be enabled for your organization` | 网关或其前面的某个组件用 403 响应了 `/managed/settings` 请求。网关自身的设置路由从不返回 403。状态来自 [`access_control`](/docs/zh-CN/claude-apps-gateway-config#http-tuning) IP 检查或网关前面的代理或 WAF。审计日志将 IP 检查拒绝记录为 `access.denied` 并说明原因。开发者保持登录状态。 | 检查审计日志中失败时的 `access.denied`,修复 `access_control` 列表或前端,然后让开发者再次启动 `claude` |

389| CLI `/login`:`The gateway is limiting sign-in attempts right now`,或在较旧版本上 `Request failed with status code 429`。`/device` 页面可能向尚未尝试过的开发者显示 `Too many attempts` | 达到了每 IP 登录速率限制。要么 `listen.trusted_proxies` 不覆盖负载均衡器,所以每个开发者共享其地址,要么许多开发者共享一个 NAT 或 VPN 出口地址。具有 `result: rate_limited` 的审计事件显示相同的一个或几个 `client_ip` 值。 | 首先将 `listen.trusted_proxies` 设置为负载均衡器的源范围,然后如果开发者仍然共享地址,提高 `rate_limits`。请参阅[大规模推出](#large-rollouts)。 |389| CLI `/login`:`The gateway is limiting sign-in attempts right now`,或在较旧版本上 `Request failed with status code 429`。`/device` 页面可能向尚未尝试过的开发者显示 `Too many attempts` | 达到了每 IP 登录速率限制。要么 `listen.trusted_proxies` 不覆盖负载均衡器,所以每个开发者共享其地址,要么许多开发者共享一个 NAT 或 VPN 出口地址。具有 `result: rate_limited` 的审计事件显示相同的一个或几个 `client_ip` 值。 | 首先将 `listen.trusted_proxies` 设置为负载均衡器的源范围,然后如果开发者仍然共享地址,提高 `rate_limits`。请参阅[大规模推出](#large-rollouts)。 |

390| CLI `/login`:`Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | gateway 主机名解析为至少一个公网 IP 地址。Claude Code 检查每个解析的地址,要求每个都是私网。常见原因是双栈名称,其中一个族解析为公网地址,包括 AWS 内部双栈负载均衡器,它们返回公网范围的 AAAA 地址。 | 让 gateway 名称在开发者机器上仅解析为私网地址。对于双栈名称,删除公网范围的记录或提供单独的仅内部 DNS 名称。请参阅[私网先决条件](/docs/zh-CN/claude-apps-gateway#prerequisites)。如果地址是你的组织拥有并在内部使用的公网空间,请[声明该块](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)。 |390| CLI `/login`:`Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | 网关主机名解析为至少一个公网 IP 地址。Claude Code 检查每个解析的地址,要求每个都是私网。常见原因是双栈名称,其中一个族解析为公网地址,包括 AWS 内部双栈负载均衡器,它们返回公网范围的 AAAA 地址。 | 让网关名称在开发者机器上仅解析为私网地址。对于双栈名称,删除公网范围的记录或提供单独的仅内部 DNS 名称。请参阅[私网前提条件](/docs/zh-CN/claude-apps-gateway#prerequisites)。如果地址是您的组织拥有并在内部使用的公网空间,请[声明该块](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)。 |

391| CLI `/login`:`Gateway login would go through proxy <proxy>, which is not on a private network` | `HTTPS_PROXY` 或 `HTTP_PROXY` 适用于 gateway 主机,且代理的主机名解析为公网地址。主机名仅解析为私网地址的代理是允许的,不会触发此错误 | 在开发者的机器上将 gateway 主机添加到 `NO_PROXY`,以便连接是直接的,或使用主机名解析为私网地址的代理。消息会命名要添加的确切 `NO_PROXY` 条目 |391| CLI `/login`:`Gateway login would go through proxy <proxy>, which is not on a private network` | `HTTPS_PROXY` 或 `HTTP_PROXY` 适用于网关主机,且代理的主机名解析为公网地址。主机名仅解析为私网地址的代理是允许的,不会触发此错误 | 在开发者的机器上将网关主机添加到 `NO_PROXY`,以便连接是直接的,或使用主机名解析为私网地址的代理。消息会命名要添加的确切 `NO_PROXY` 条目 |

392| CLI `/login`:`Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | gateway 在 [`gatewayInternalNetworks`](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) 中声明的块上,开发者的机器从该块外的地址到达它:VPN 地址池、容器或 WSL2 NAT 段,或不是你的网络 | 让开发者从你的网络上的主机 OS 运行 `/login`。如果显示的地址也是你的组织自己的公网空间,将 gateway 的条目替换为覆盖两者的块,最多 `/8`;第二个重叠条目会被拒绝 |392| CLI `/login`:`Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | 网关在 [`gatewayInternalNetworks`](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) 中声明的块上,开发者的机器从该块外的地址到达它:VPN 地址池、容器或 WSL2 NAT 段,或不是您的网络 | 让开发者从您的网络上的主机 OS 运行 `/login`。如果显示的地址也是您的组织自己的公网空间,将网关的条目替换为覆盖两者的块,最多 `/8`;第二个重叠条目会被拒绝 |

393| CLI `/login`:`Every address for gateway host <host> must be inside its declared network <block>, and it also resolves to <ip>` | gateway 的名称解析为 [`gatewayInternalNetworks`](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) 中声明的块外的地址:第二个站点,或双栈名称上的 IPv6 记录。在声明的块下,每条记录都必须在该单个 IPv4 块内,包括私网和 IPv6 地址 | 在开发者机器上仅为 gateway 名称发布块内的记录,或提供单独的仅内部名称 |393| CLI `/login`:`Every address for gateway host <host> must be inside its declared network <block>, and it also resolves to <ip>` | 网关的名称解析为 [`gatewayInternalNetworks`](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) 中声明的块外的地址:第二个站点,或双栈名称上的 IPv6 记录。在声明的块下,每条记录都必须在该单个 IPv4 块内,包括私网和 IPv6 地址 | 在开发者机器上仅为网关名称发布块内的记录,或提供单独的仅内部名称 |

394| CLI `/login`:`<host> is on the declared network <block>, which Claude Code checks over a direct connection, not through an HTTP proxy` | `HTTPS_PROXY` 或 `HTTP_PROXY` 适用于声明块上的 gateway | 在开发者的机器上,添加消息命名的 `NO_PROXY` 条目 |394| CLI `/login`:`<host> is on the declared network <block>, which Claude Code checks over a direct connection, not through an HTTP proxy` | `HTTPS_PROXY` 或 `HTTP_PROXY` 适用于声明块上的网关 | 在开发者的机器上,添加消息命名的 `NO_PROXY` 条目 |

395| CLI `/login`:消息以 `gatewayInternalNetworks in managed settings` 开头 | 该值违反了[验证规则](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)之一,消息会命名哪一个。在你修复它之前,Claude Code 拒绝机器上的每个新 gateway `/login`,包括私网上的 gateway;现有登录保持工作 | 在你部署的托管设置源中,更正消息命名的条目,然后重新运行 `/login` |395| CLI `/login`:消息以 `gatewayInternalNetworks in managed settings` 开头 | 该值违反了[验证规则](/docs/zh-CN/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)之一,消息会命名哪一个。在您修复它之前,Claude Code 拒绝机器上的每个新网关 `/login`,包括私网上的网关;现有登录保持工作 | 在您部署的托管设置源中,更正消息命名的条目,然后重新运行 `/login` |

396| CLI `/login`:`Could not resolve the configured HTTP proxy` | `HTTPS_PROXY` 或 `HTTP_PROXY` 中的主机名无法从开发者的机器解析,通常是因为它未连接到公司网络 | 让开发者连接到你的网络或 VPN 并重试,或修复代理 URL |396| CLI `/login`:`Could not resolve the configured HTTP proxy` | `HTTPS_PROXY` 或 `HTTP_PROXY` 中的主机名无法从开发者的机器解析,通常是因为它未连接到公司网络 | 让开发者连接到您的网络或 VPN 并重试,或修复代理 URL |

397| CLI `/login`:`Could not resolve gateway host <host>` | 机器无法解析 gateway 的内部 DNS 名称,通常是因为它不在公司网络上 | 让开发者连接到你的网络或 VPN,然后重试 `/login` |397| CLI `/login`:`Could not resolve gateway host <host>` | 机器无法解析网关的内部 DNS 名称,通常是因为它不在公司网络上 | 让开发者连接到您的网络或 VPN,然后重试 `/login` |

398| 启动退出,显示配置验证错误,命名 `store.postgres_url` | 未配置 Postgres;gateway 需要 Postgres | 设置 `store.postgres_url`。对于本地开发,使用一次性容器:`docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`。 |398| 启动退出,显示配置验证错误,命名 `store.postgres_url` | 未配置 Postgres;网关需要 Postgres | 设置 `store.postgres_url`。对于本地开发,使用一次性容器:`docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`。 |

399| 启动退出:`requires the native binary` | 在 Node 下运行而不是本地二进制 | 使用[独立安装方法](/docs/zh-CN/setup)之一安装 Claude Code |399| 启动退出:`requires the native binary` | 在 Node 下运行而不是本地二进制 | 使用[独立安装方法](/docs/zh-CN/setup)之一安装 Claude Code |

400| 启动退出,在 `config.load` 后显示 OIDC 发现错误 | `oidc.issuer` 无法访问,或 TLS 链不受信任 | 检查发行者是否可从 pod 访问并提供 `/.well-known/openid-configuration`。为私有 PKI 设置 `ca_cert_pem`。如果 pod 仅通过前向代理到达 IdP,设置 [`oidc.use_proxy: true`](/docs/zh-CN/claude-apps-gateway-config#idp-requests-through-a-forward-proxy);在 v2.1.227 之前的版本上,改为给 pod 一条到 IdP 每个端点的直接路由。如果 pod 也无法解析 IdP 的主机名,或代理拒绝 `CONNECT` 到 IP 地址,请参阅[仅代理出口](/docs/zh-CN/claude-apps-gateway-config#proxy-only-egress),这需要 v2.1.277 或更高版本。 |400| 启动退出,在 `config.load` 后显示 OIDC 发现错误 | `oidc.issuer` 无法访问,或 TLS 链不受信任 | 检查发行者是否可从 pod 访问并提供 `/.well-known/openid-configuration`。为私有 PKI 设置 `ca_cert_pem`。如果 pod 仅通过前向代理到达 IdP,设置 [`oidc.use_proxy: true`](/docs/zh-CN/claude-apps-gateway-config#idp-requests-through-a-forward-proxy);在 v2.1.227 之前的版本上,改为给 pod 一条到 IdP 每个端点的直接路由。如果 pod 也无法解析 IdP 的主机名,或代理拒绝 `CONNECT` 到 IP 地址,请参阅[仅代理出口](/docs/zh-CN/claude-apps-gateway-config#proxy-only-egress),这需要 v2.1.277 或更高版本。 |

401| 启动退出,显示 Postgres 权限错误 | 数据库角色在其模式上缺少 DDL 权限 | 授予角色对 gateway 模式的 `CREATE` 权限,以便它可以在启动时创建和修改其表 |401| 启动退出,显示 Postgres 权限错误 | 数据库角色在其 schema 上缺少 DDL 权限 | 授予角色对网关 schema 的 `CREATE` 权限,以便它可以在启动时创建和修改其表 |

402| 日志:`could not connect to Postgres at boot, attempt 1 of 3` | 当 gateway 启动时数据库无法访问,例如在网络仍在启动的冷实例上 | 如果 gateway 随后完成启动,无需采取任何措施。当数据库无法访问时,gateway 在退出前尝试连接三次,间隔两秒。如果它以 `could not connect to Postgres` 退出,检查 `store.postgres_url` 和到数据库的网络路径。如果尝试超时而不是被拒绝,提高 [`store.connect_timeout_seconds`](/docs/zh-CN/claude-apps-gateway-config#store) 以给每个尝试更长的时间。 |402| 日志:`could not connect to Postgres at boot, attempt 1 of 3` | 当网关启动时数据库无法访问,例如在网络仍在启动的冷实例上 | 如果网关随后完成启动,无需采取任何措施。当数据库无法访问时,网关在退出前尝试连接三次,间隔两秒。如果它以 `could not connect to Postgres` 退出,检查 `store.postgres_url` 和到数据库的网络路径。如果尝试超时而不是被拒绝,提高 [`store.connect_timeout_seconds`](/docs/zh-CN/claude-apps-gateway-config#store) 以给每个尝试更长的时间。 |

403| `/oauth/callback` 显示"Sign-in could not be completed" | 电子邮件域被拒绝、id\_token 验证失败,或 `email_verified` 显式为 `false`,gateway 总是拒绝且无覆盖 | 检查 `allowed_email_domains` 和 IdP 是否返回已验证的 `email` 声明。对于 `email_verified: false`,修复 IdP 端验证。如果你的 IdP 在不同的声明名称下发出电子邮件,设置 `oidc.email_claim`。 |403| `/oauth/callback` 显示"Sign-in could not be completed" | 电子邮件域被拒绝、id\_token 验证失败,或 `email_verified` 显式为 `false`,网关总是拒绝且无覆盖 | 检查 `allowed_email_domains` 和 IdP 是否返回已验证的 `email` 声明。对于 `email_verified: false`,修复 IdP 端验证。如果您的 IdP 在不同的声明名称下发出电子邮件,设置 `oidc.email_claim`。 |

404| 日志:`token exchange failed request_id=<id>: id_token missing email claim` | IdP 默认不在 id\_token 中包含 `email`。此拒绝仅在设置 `allowed_email_domains` 时触发;没有它,缺少的电子邮件会创建没有电子邮件的会话 | 配置 IdP 在 id\_token 中发出 `email`。Okta:将 `email` 添加到自定义授权服务器的 ID 令牌声明。Entra:在应用注册上添加 `email` 作为可选声明。PingFederate:启用发出 `email` 的 OpenID Connect 策略。如果 IdP 从 userinfo 端点提供 `email` 但不会在 id\_token 中包含它,例如 Okta 组织授权服务器,设置 `oidc.userinfo_fallback: true`。 |404| 日志:`token exchange failed request_id=<id>: id_token missing email claim` | IdP 默认不在 id\_token 中包含 `email`。此拒绝仅在设置 `allowed_email_domains` 时触发;没有它,缺少的电子邮件会创建没有电子邮件的会话 | 配置 IdP 在 id\_token 中发出 `email`。Okta:将 `email` 添加到自定义授权服务器的 ID 令牌声明。Entra:在应用注册上添加 `email` 作为可选声明。PingFederate:启用发出 `email` 的 OpenID Connect 策略。如果 IdP 从 userinfo 端点提供 `email` 但不会在 id\_token 中包含它,例如 Okta 组织授权服务器,设置 `oidc.userinfo_fallback: true`。 |

405| 日志:`refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`,开发者每 `session.ttl_hours` 看到 `Cloud gateway session expired` | IdP 接受了刷新令牌但没有随之返回 id\_token,所以 gateway 询问了 IdP 的 userinfo 端点以获取用户的声明。IdP 在那里拒绝了刷新的访问令牌。gateway 回答 `temporarily_unavailable`,所以 Claude Code 保留刷新令牌但无法续订会话。v2.1.260 之前的 gateway 版本记录相同的行但没有 `(at …)` 详情。 | 设置 [`oidc.scope_on_refresh: true`](/docs/zh-CN/claude-apps-gateway-config#oidc),在 gateway v2.1.260 或更高版本中可用,以便刷新请求再次请求 `openid`。某些 IdP(如 Okta)仅在被要求时在刷新时返回 id\_token。在 PingFederate 上,改为在 **Applications > OAuth > OpenID Connect Policy Management** 下启用 **Return ID Token On Refresh Grant**。该密钥不会改变 PingFederate 的行为。对于仍然省略它的其他 IdP,检查 userinfo 端点是否接受由刷新发出的访问令牌。作为临时措施,提高 [`session.ttl_hours`](/docs/zh-CN/claude-apps-gateway-config#session)。请参阅[身份提供者设置](#identity-provider-setup)了解取消配置权衡。 |405| 日志:`refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`,开发者每 `session.ttl_hours` 看到 `Cloud gateway session expired` | IdP 接受了刷新令牌但没有随之返回 id\_token,所以网关询问了 IdP 的 userinfo 端点以获取用户的声明。IdP 在那里拒绝了刷新的访问令牌。网关回答 `temporarily_unavailable`,所以 Claude Code 保留刷新令牌但无法续订会话。v2.1.260 之前的网关版本记录相同的行但没有 `(at …)` 详情。 | 设置 [`oidc.scope_on_refresh: true`](/docs/zh-CN/claude-apps-gateway-config#oidc),在网关 v2.1.260 或更高版本中可用,以便刷新请求再次请求 `openid`。某些 IdP(如 Okta)仅在被要求时在刷新时返回 id\_token。在 PingFederate 上,改为在 **Applications > OAuth > OpenID Connect Policy Management** 下启用 **Return ID Token On Refresh Grant**。该设置项不会改变 PingFederate 的行为。对于仍然省略它的其他 IdP,检查 userinfo 端点是否接受由刷新发出的访问令牌。作为临时措施,提高 [`session.ttl_hours`](/docs/zh-CN/claude-apps-gateway-config#session)。请参阅[身份提供者设置](#identity-provider-setup)了解取消配置权衡。 |

406| 每个 Amazon Bedrock 请求都返回 502;日志显示 `Could not load credentials from any providers` | 在 EC2 上,IMDSv2 的默认跳数限制为 1,阻止了来自容器内的实例元数据请求。启动和 `/readyz` 仍然通过,因为 AWS SDK 在第一个请求时解析实例凭证,而不是在客户端构造时 | 使用 `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2` 提高跳数限制,或在启动模板中设置它。更改适用于实例上的每个容器。在可用的地方优先使用 ECS 任务角色,它们从 ECS 容器凭证端点读取凭证并完全避免更改,或在专用 gateway 实例上应用更改以限制暴露。 |406| 开发者登录后,来自该会话的每个请求都失败并返回 `431` 错误 | 每个请求的 `Authorization` 头中的会话令牌列出了开发者的 IdP 组,因此对于属于许多组的开发者,请求头总大小可能超过网关接受的上限 | 请参阅[登录后请求头过大](#request-headers-too-large-after-sign-in),了解适用哪个限制以及需要更改什么 |

407| 在峰值负载下,响应开始缓慢或似乎挂起,或在上游健康时失败,显示 502 `all upstreams failed` | 副本打开的请求比它一次发送到上游的请求多,所以额外的请求在 gateway 内等待。在 `provider: anthropic` 上游上,等待时间超过 `timeouts.upstream_ttfb_ms` 的请求放弃该上游,当没有后续上游提供服务时会产生 502。日志显示包含 `client requests are open` 的警告。 | 添加副本,或提高每个副本上的限制。请参阅[并发上游请求](#concurrent-upstream-requests)。 |407| 每个 Amazon Bedrock 请求都返回 502;日志显示 `Could not load credentials from any providers` | 在 EC2 上,IMDSv2 的默认跳数限制为 1,阻止了来自容器内的实例元数据请求。启动和 `/readyz` 仍然通过,因为 AWS SDK 在第一个请求时解析实例凭据,而不是在客户端构造时 | 使用 `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2` 提高跳数限制,或在启动模板中设置它。更改适用于实例上的每个容器。在可用的地方优先使用 ECS 任务角色,它们从 ECS 容器凭据端点读取凭据并完全避免更改,或在专用网关实例上应用更改以限制暴露。 |

408| IdP 错误:unknown or unsupported scope | IdP 拒绝它不识别的作用域 | 将 `oidc.scopes` 设置为你的 IdP 接受的确切列表;它必须包含 `openid`。默认值为 `openid profile email offline_access`。 |408| 在峰值负载下,响应开始缓慢或似乎挂起,或在上游健康时失败,显示 502 `all upstreams failed` | 副本打开的请求比它一次发送到上游的请求多,所以额外的请求在网关内等待。在 `provider: anthropic` 上游上,等待时间超过 `timeouts.upstream_ttfb_ms` 的请求放弃该上游,当没有后续上游提供服务时会产生 502。日志显示包含 `client requests are open` 的警告。 | 添加副本,或提高每个副本上的限制。请参阅[并发上游请求](#concurrent-upstream-requests)。 |

409| 设置 `oidc.scopes` 后会话不会静默续订 | `offline_access` 从覆盖中删除了 | 如果你的 IdP 支持,添加 `offline_access` 回来。没有刷新令牌,开发者每 `session.ttl_hours` 重新运行浏览器登录。 |409| IdP 错误:unknown or unsupported scope | IdP 拒绝它不识别的作用域 | 将 `oidc.scopes` 设置为您的 IdP 接受的确切列表;它必须包含 `openid`。默认值为 `openid profile email offline_access`。 |

410| 设置 `oidc.scopes` 后会话不会静默续订 | `offline_access` 从覆盖中删除了 | 如果您的 IdP 支持,添加 `offline_access` 回来。没有刷新令牌,开发者每 `session.ttl_hours` 重新运行浏览器登录。 |

410| 浏览器显示"This request came from another site and was blocked" | 跨站点表单 POST,作为 CSRF 保护被阻止。对于嵌入或代理的页面是预期的 | 直接打开验证链接 |411| 浏览器显示"This request came from another site and was blocked" | 跨站点表单 POST,作为 CSRF 保护被阻止。对于嵌入或代理的页面是预期的 | 直接打开验证链接 |

411| Chrome 用"Refused to send form data … violates … Content Security Policy directive: form-action"阻止"Approve"按钮,但相同的页面在 Safari 或 Firefox 中工作 | Chrome 对整个重定向链强制执行 `form-action`。你的 IdP 重定向到第二个主机,该主机未被列入白名单。 | 将重定向链中的每个额外来源添加到 `oidc.form_action_origins`。在"Approve"页面上打开 Chrome DevTools → Console 以查看哪个来源被阻止。 |412| Chrome 用"Refused to send form data … violates … Content Security Policy directive: form-action"阻止"Approve"按钮,但相同的页面在 Safari 或 Firefox 中工作 | Chrome 对整个重定向链强制执行 `form-action`。您的 IdP 重定向到第二个主机,该主机未被列入白名单。 | 将重定向链中的每个额外来源添加到 `oidc.form_action_origins`。在"Approve"页面上打开 Chrome DevTools → Console 以查看哪个来源被阻止。 |

412| 登录在 IdP 处完成但回调失败,Chrome 中出现 CSP 错误或 Safari 中出现"this sign-in link has expired" | IdP 通过 `response_mode=form_post` 返回了代码,它通过 POST 自动提交到 `/oauth/callback`。Chrome 在严格 CSP 下阻止了这个;Safari 允许提交但回调仅读取查询字符串。 | 确保你的 IdP 遵守 `response_mode=query`,gateway 明确请求它以便回调是普通重定向 |413| 登录在 IdP 处完成但回调失败,Chrome 中出现 CSP 错误或 Safari 中出现"this sign-in link has expired" | IdP 通过 `response_mode=form_post` 返回了代码,它通过 POST 跨源自动提交到 `/oauth/callback`。Chrome 在严格 CSP 下阻止了这个;Safari 允许提交但回调仅读取查询字符串。 | 确保您的 IdP 遵守 `response_mode=query`,网关明确请求它以便回调是普通重定向 |

413| 登录在本地工作但在 ALB 后面失败 | `public_url` 仍然命名本地或内部 `http://` 来源,所以 IdP 获得了错误的 `redirect_uri` | 将 `listen.public_url` 设置为外部 `https://` 来源,并向 IdP 注册 `<public_url>/oauth/callback` |414| 登录在本地工作但在 ALB 后面失败 | `public_url` 仍然命名本地或内部 `http://` 来源,所以 IdP 获得了错误的 `redirect_uri` | 将 `listen.public_url` 设置为外部 `https://` 来源,并向 IdP 注册 `<public_url>/oauth/callback` |

414| 开发者重复看到信任提示 | TLS 证书按副本或按请求轮换 | 在入口处使用稳定的证书,或终止 TLS 一次并在内部通过普通 HTTP 运行副本 |415| 开发者重复看到信任提示 | TLS 证书按副本或按请求轮换 | 在入口处使用稳定的证书,或终止 TLS 一次并在内部通过普通 HTTP 运行副本 |

415| CLI `/login`:"Could not verify the gateway's TLS certificate"或 `SELF_SIGNED_CERT_IN_CHAIN` | gateway 的 TLS 链由 CLI 主机的信任存储中不存在的私有 CA 签名 | Claude Code 在本地二进制上默认读取 OS 信任存储,在 Node 22.15 或更高版本上;[`CLAUDE_CODE_CERT_STORE`](/docs/zh-CN/network-config#ca-certificate-store) 控制此行为。如果 CA 安装在 OS 信任存储中,确保开发者使用当前运行时。否则在启动前将 `NODE_EXTRA_CA_CERTS` 设置为 CA 证书 PEM。首次连接指纹提示仍然适用。 |416| CLI `/login`:"Could not verify the gateway's TLS certificate"或 `SELF_SIGNED_CERT_IN_CHAIN` | 网关的 TLS 链由 CLI 主机的信任存储中不存在的私有 CA 签名 | Claude Code 在本地二进制以及 Node 22.15 或更高版本上默认读取 OS 信任存储;[`CLAUDE_CODE_CERT_STORE`](/docs/zh-CN/network-config#ca-certificate-store) 控制此行为。如果 CA 安装在 OS 信任存储中,确保开发者使用当前运行时。否则在启动前将 `NODE_EXTRA_CA_CERTS` 设置为 CA 证书 PEM。首次连接指纹提示仍然适用。 |

416| CLI `/login` 完成浏览器登录,然后会话以 `Cloud gateway sign-in was not completed` 和 TLS 证书不匹配结束 | 在登录后的第一个请求中,gateway 提供了与 Claude Code 固定的指纹不匹配的证书,所以 Claude Code 没有保留任何 gateway 凭证。常见原因是一个地址后面的副本提供不同的证书,或网络路径上的某个东西拦截了 TLS。 | 为主机名提供一个证书,例如在入口处终止 TLS 一次,然后让开发者再次运行 `/login`。如果该证书与固定的不同,Claude Code 会在[信任提示](/docs/zh-CN/claude-apps-gateway#connect-developers)处显示警告,说明证书已更改。 |417| CLI `/login` 完成浏览器登录,然后会话以 `Cloud gateway sign-in was not completed` 和 TLS 证书不匹配结束 | 在登录后的第一个请求中,网关提供了与 Claude Code 固定的指纹不匹配的证书,所以 Claude Code 没有保留任何网关凭据。常见原因是一个地址后面的副本提供不同的证书,或网络路径上的某个东西拦截了 TLS。 | 为主机名提供一个证书,例如在入口处终止 TLS 一次,然后让开发者再次运行 `/login`。如果该证书与固定的不同,Claude Code 会在[信任提示](/docs/zh-CN/claude-apps-gateway#connect-developers)处显示警告,说明证书已更改。 |

417| CLI `/login` 停止,显示 `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | 登录请求到达了一个证书与开发者在 `/login` 启动时接受的证书不匹配的服务器:一个地址后面的副本提供不同的证书、路径上的 TLS 拦截,或登录进行中的证书轮换。 | 为主机名提供一个证书,然后让开发者再次启动登录并在[信任提示](/docs/zh-CN/claude-apps-gateway#connect-developers)处审查新证书。 |418| CLI `/login` 停止,显示 `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | 登录请求到达了一个证书与开发者在 `/login` 启动时接受的证书不匹配的服务器:一个地址后面的副本提供不同的证书、路径上的 TLS 拦截,或登录进行中的证书轮换。 | 为主机名提供一个证书,然后让开发者再次启动登录并在[信任提示](/docs/zh-CN/claude-apps-gateway#connect-developers)处审查新证书。 |

418 419 

419`Cloud gateway sign-in was not completed` 消息命名 gateway 主机名。当 Claude Code 同时拥有固定指纹和呈现的指纹时,消息还显示每个的前 16 个字符。420`Cloud gateway sign-in was not completed` 消息会命名网关主机名。当 Claude Code 同时拥有固定指纹和呈现的指纹时,消息还显示每个的前 16 个字符。

420 421 

421如果 Claude Code 在 gateway 登录后报告 `couldn't load your organization's managed settings`,Claude Code 会命名原因、就地重启并恢复对话。如果 Claude Code 无法重启,例如在后台会话中,Claude Code 会结束会话并保留登录。422如果 Claude Code 在网关登录后报告 `couldn't load your organization's managed settings`,Claude Code 会命名原因、就地重启并恢复对话。如果 Claude Code 无法重启,例如在后台会话中,Claude Code 会结束会话并保留登录。

423 

424<h3 id="request-headers-too-large-after-sign-in">

425 登录后请求头过大

426</h3>

427 

428当开发者属于许多 IdP 组时,其请求可能在登录后失败并返回 `431` 错误。

429 

430当请求头总大小超过 256 KiB,或者在您设置了 [`limits.max_request_header_bytes`](/docs/zh-CN/claude-apps-gateway-config#http-tuning) 时超过该值,网关会返回 `431`。对于这些请求,网关不会写入任何日志行或审计事件。v2.1.284 之前的网关版本在超过 16 KiB 时返回 `431`。

431 

432需要更改的内容取决于网关的版本和配置:

433 

434* **网关版本早于 v2.1.284**:升级网关

435* **设置了 `limits.max_request_header_bytes`**:提高该值或删除该键

436* **以上均不适用,或之后仍出现 `431`**:让您的 IdP 发出更少的组。[身份提供者设置](#identity-provider-setup)介绍了 Okta、Microsoft Entra ID 和 Google Workspace 如何提供组

422 437 

423<h2 id="related">438<h2 id="related">

424 相关439 相关

Details

1598 1598 

1599`<project>` 是您的工作目录路径,其中除字母和数字外的每个字符都被替换为 `-`,例如 `-Users-you-my-project`。如果您设置了 [`CLAUDE_CODE_TMPDIR`](/docs/zh-CN/env-vars),树会改为移动到该目录下。Hooks 接收当前会话的路径作为 [`scratchpad_dir`](/docs/zh-CN/hooks#common-input-fields)。1599`<project>` 是您的工作目录路径,其中除字母和数字外的每个字符都被替换为 `-`,例如 `-Users-you-my-project`。如果您设置了 [`CLAUDE_CODE_TMPDIR`](/docs/zh-CN/env-vars),树会改为移动到该目录下。Hooks 接收当前会话的路径作为 [`scratchpad_dir`](/docs/zh-CN/hooks#common-input-fields)。

1600 1600 

1601暂存文件的生命周期与会话的记录相同:[保留扫描](#cleaned-up-automatically)在删除记录时删除目录,[`claude project purge`](#clear-local-data) 不会触及临时目录。因为目录位于系统临时位置下,您的操作系统也可以清除它,例如在重启时。要保留 Claude 在那里写入的内容,请要求 Claude 将其移动到您的项目中。1601暂存文件的生命周期与会话的会话记录相同:[保留扫描](#cleaned-up-automatically)在删除会话记录时删除该目录,而 [`claude purge`](#clear-local-data) 不会触及临时目录。由于该目录位于系统临时位置下,您的操作系统也可能清除它,例如在重启时。要保留 Claude 在那里写入的内容,请让 Claude 将其移动到您的项目中。

1602 1602 

1603会话仅在以下所有条件成立时才有暂存:1603会话仅在以下所有条件成立时才有暂存:

1604 1604 


1645 清除本地数据1645 清除本地数据

1646</h3>1646</h3>

1647 1647 

1648运行 `claude project purge` 以删除 Claude Code 为一个项目保存的状态。它删除:1648运行 `claude purge` 以删除 Claude Code 为某个项目保存的状态。它会删除:

1649 1649 

1650* `projects/` 下的记录和自动内存1650* `projects/` 下的记录和自动内存

1651* 每个会话的 `tasks/`、`debug/` 和 `file-history/` 条目1651* 每个会话的 `tasks/`、`debug/` 和 `file-history/` 条目


1656 1656 

1657该命令打印完整的删除计划,并在删除任何内容之前要求确认。1657该命令打印完整的删除计划,并在删除任何内容之前要求确认。

1658 1658 

1659在 v2.1.288 之前,该命令为 `claude project purge`。

1660 

1659下面的示例使用 `~/work/my-repo` 作为占位符。将其替换为您的项目的路径。如果没有状态与路径匹配,该命令打印错误并以状态 1 退出。1661下面的示例使用 `~/work/my-repo` 作为占位符。将其替换为您的项目的路径。如果没有状态与路径匹配,该命令打印错误并以状态 1 退出。

1660 1662 

1661预览计划而不删除任何内容:1663预览计划而不删除任何内容:

1662 1664 

1663```bash theme={null}1665```bash theme={null}

1664claude project purge ~/work/my-repo --dry-run1666claude purge ~/work/my-repo --dry-run

1665```1667```

1666 1668 

1667该计划列出每个匹配项及其包含的原因:1669该计划列出每个匹配项及其包含的原因:


1684通过单个确认提示删除:1686通过单个确认提示删除:

1685 1687 

1686```bash theme={null}1688```bash theme={null}

1687claude project purge ~/work/my-repo1689claude purge ~/work/my-repo

1688```1690```

1689 1691 

1690该命令打印相同的计划,然后询问 `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` 并仅在您回答 `y` 时删除。1692该命令打印相同的计划,然后询问 `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` 并仅在您回答 `y` 时删除。


1694跳过确认提示以在脚本中使用:1696跳过确认提示以在脚本中使用:

1695 1697 

1696```bash theme={null}1698```bash theme={null}

1697claude project purge ~/work/my-repo --yes1699claude purge ~/work/my-repo --yes

1698```1700```

1699 1701 

1700传递 `--all` 而不是路径以一次清除所有项目的状态,这会直接删除 `history.jsonl` 而不是过滤它。传递 `-i` 以逐项逐步执行删除计划。1702传递 `--all` 而不是路径以一次清除所有项目的状态,这会直接删除 `history.jsonl` 而不是过滤它。传递 `-i` 以逐项逐步执行删除计划。

Details

500 限制500 限制

501</h2>501</h2>

502 502 

503* Projects 在 claude.ai/code、桌面应用和 Claude 移动应用中可用,不在终端 CLI、VS Code 扩展或 JetBrains 插件中,也不通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry。CLI 的 [`claude project`](/docs/zh-CN/cli-reference) 命令(它管理目录的本地 Claude Code 状态)是无关的。503* Projects 在 claude.ai/code、桌面应用和 Claude 移动应用中可用,不在终端 CLI、VS Code 扩展或 JetBrains 插件中,也不通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry。

504* 项目线程是[云会话](/docs/zh-CN/claude-code-on-the-web),或通过[远程控制](/docs/zh-CN/remote-control)在您自己的机器上的会话,两种情况下 Anthropic 都是模型提供者。[安全](/docs/zh-CN/security)和[数据使用](/docs/zh-CN/data-usage)涵盖了云会话如何隔离以及保留什么,[连接和安全](/docs/zh-CN/remote-control#connection-and-security)涵盖了您机器上的线程如何连接以及存储什么。504* 项目线程是[云会话](/docs/zh-CN/claude-code-on-the-web),或通过[远程控制](/docs/zh-CN/remote-control)在您自己的机器上的会话,两种情况下 Anthropic 都是模型提供者。[安全](/docs/zh-CN/security)和[数据使用](/docs/zh-CN/data-usage)涵盖了云会话如何隔离以及保留什么,[连接和安全](/docs/zh-CN/remote-control#connection-and-security)涵盖了您机器上的线程如何连接以及存储什么。

505* 您不能将自己在机器上启动的会话添加到项目中。项目仅通过[在您自己的计算机上通过远程控制运行线程](#run-a-thread-on-your-own-computer)到达您的机器,该部分列出了它需要什么。505* 您不能将自己在机器上启动的会话添加到项目中。项目仅通过[在您自己的计算机上通过远程控制运行线程](#run-a-thread-on-your-own-computer)到达您的机器,该部分列出了它需要什么。

506* 云线程的沙箱在轮之间暂停,并在线程继续时恢复。如果沙箱无法恢复,线程从新克隆继续,因此未提交的更改可能会丢失。在长任务上,要求 Claude 提交和推送进行中的工作。506* 云线程的沙箱在轮之间暂停,并在线程继续时恢复。如果沙箱无法恢复,线程从新克隆继续,因此未提交的更改可能会丢失。在长任务上,要求 Claude 提交和推送进行中的工作。

cli-reference.md +12 −12

Details

15| 命令 | 描述 | 示例 |15| 命令 | 描述 | 示例 |

16| :- | :- | :- |16| :- | :- | :- |

17| `claude` | 启动交互式会话 | `claude` |17| `claude` | 启动交互式会话 | `claude` |

18| `claude "query"` | 使用初始提示启动交互式会话 | `claude "explain this project"` |18| `claude "query"` | 使用初始提示词启动交互式会话 | `claude "explain this project"` |

19| `claude -p "query"` | 通过 SDK 查询,然后退出 | `claude -p "explain this function"` |19| `claude -p "query"` | 通过 SDK 查询,然后退出 | `claude -p "explain this function"` |

20| `cat file \| claude -p "query"` | 处理管道内容 | `cat logs.txt \| claude -p "explain"` |20| `cat file \| claude -p "query"` | 处理管道内容 | `cat logs.txt \| claude -p "explain"` |

21| `claude -c` | 在当前目录中继续最近的对话 | `claude -c` |21| `claude -c` | 在当前目录中继续最近的对话 | `claude -c` |


27| `claude auth login` | 登录您的 Anthropic 账户。使用 `--email` 预填充您的电子邮件地址,使用 `--sso` 强制 SSO 身份验证,使用 `--console` 使用 Anthropic Console 登录以进行 API 使用计费而不是 Claude 订阅 | `claude auth login --console` |27| `claude auth login` | 登录您的 Anthropic 账户。使用 `--email` 预填充您的电子邮件地址,使用 `--sso` 强制 SSO 身份验证,使用 `--console` 使用 Anthropic Console 登录以进行 API 使用计费而不是 Claude 订阅 | `claude auth login --console` |

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>` | 在此终端中附加到 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) | `claude attach 7c5dcf5d` |31| `claude attach <id>` | 在此终端中附加到 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | 以 JSON 格式打印内置 [auto mode](/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` 部分来恢复默认 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 配置。在写入前提示确认;传递 `-y`/`--yes` 以跳过提示。来自 [managed settings](/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 status` | 打印后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 的状态、版本、套接字目录和工作进程数以进行诊断。如果 supervisor 未运行,则退出代码 1 | `claude daemon status` |34| `claude daemon status` | 打印后台会话 [supervisor](/docs/zh-CN/agent-view#the-supervisor-process) 的状态、版本、套接字目录和工作进程数以进行诊断。如果 supervisor 未运行,则退出代码 1 | `claude daemon status` |

35| `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` |35| `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` |

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

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

38| `claude logs <id>` | 从 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 打印最近的输出 | `claude logs 7c5dcf5d` |38| `claude logs <id>` | 从 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 打印最近的输出 | `claude logs 7c5dcf5d` |

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

40| `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` |40| `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` |

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

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

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

44| `claude remote-control` | 启动 [Remote Control](/docs/zh-CN/remote-control) 服务器以从 Claude.ai 或 Claude 应用控制 Claude Code。在服务器模式下运行(无本地交互式会话)。请参阅 [服务器模式标志](/docs/zh-CN/remote-control#start-a-remote-control-session)。停止服务器后,您可以恢复它正在服务的会话。请参阅 [停止服务器后恢复会话](/docs/zh-CN/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | 启动 [Remote Control](/docs/zh-CN/remote-control) 服务器以从 Claude.ai 或 Claude 应用控制 Claude Code。在服务器模式下运行(无本地交互式会话)。请参阅 [服务器模式标志](/docs/zh-CN/remote-control#start-a-remote-control-session)。停止服务器后,您可以恢复它正在服务的会话。请参阅 [停止服务器后恢复会话](/docs/zh-CN/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | 重启 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell),运行或已停止,保持其对话完整。使用 `--all` 重启每个运行中的会话,例如以获取更新的 Claude Code 二进制文件 | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | 重启 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell),运行或已停止,保持其对话完整。使用 `--all` 重启每个运行中的会话,例如以获取更新的 Claude Code 二进制文件 | `claude respawn 7c5dcf5d` |

46| `claude rm <id>` | 从列表中删除 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。当删除被 [拒绝超过会话的 worktree](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 且第二个 `claude rm` 可以解决它时,拒绝会打印要传递的确切标志和值:`--discard-unpushed <commit>@<worktree-id>` 丢弃具有未推送提交的 worktree 及其提交,`--force-remove-worktree <worktree-id>` 删除 git 或 `WorktreeRemove` 钩子无法删除的 worktree 目录。`--discard-unpushed` 需要 Claude Code v2.1.260 或更高版本,而 `--force-remove-worktree` 需要 v2.1.268 或更高版本。对话记录保留在您的本地计算机上,可通过 `claude --resume` 访问 | `claude rm 7c5dcf5d` |46| `claude rm <id>` | 从列表中删除 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。当删除因 [会话的 worktree 而被拒绝](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 且第二个 `claude rm` 可以解决它时,拒绝会打印要传递的确切标志和值:`--discard-unpushed <commit>@<worktree-id>` 丢弃具有未推送提交的 worktree 及其提交,`--force-remove-worktree <worktree-id>` 删除 git 或 `WorktreeRemove` hook 无法删除的 worktree 目录。`--discard-unpushed` 需要 Claude Code v2.1.260 或更高版本,而 `--force-remove-worktree` 需要 v2.1.268 或更高版本。会话记录保留在您的本地计算机上,可通过 `claude --resume` 访问 | `claude rm 7c5dcf5d` |

47| `claude self-hosted-runner` | 启动运行程序进程,将此计算机或容器注册到 [self-hosted environment](/docs/zh-CN/self-hosted-environments),并在您的基础设施上托管 Claude Code 云会话。运行 `claude self-hosted-runner setup` 以获得引导式操作员演练,运行 `claude self-hosted-runner doctor` 以 [诊断已部署的运行程序](/docs/zh-CN/self-hosted-environments-deploy#troubleshooting),运行 `claude self-hosted-runner orchestrator` 以生成 [on-demand runners](/docs/zh-CN/self-hosted-environments-configuration#on-demand-runners)。需要 Claude Code v2.1.224 或更高版本 | `claude self-hosted-runner setup` |47| `claude self-hosted-runner` | 启动运行程序进程,将此计算机或容器注册到 [self-hosted environment](/docs/zh-CN/self-hosted-environments),并在您的基础设施上托管 Claude Code 云端会话。运行 `claude self-hosted-runner setup` 以获得引导式操作员演练,运行 `claude self-hosted-runner doctor` 以 [诊断已部署的运行程序](/docs/zh-CN/self-hosted-environments-deploy#troubleshooting),运行 `claude self-hosted-runner orchestrator` 以生成 [on-demand runners](/docs/zh-CN/self-hosted-environments-configuration#on-demand-runners)。需要 Claude Code v2.1.224 或更高版本 | `claude self-hosted-runner setup` |

48| `claude setup-token` | 为 CI 和脚本生成长期 OAuth 令牌。将令牌打印到终端而不保存。需要 Claude 订阅。请参阅 [生成长期令牌](/docs/zh-CN/authentication#generate-a-long-lived-token) | `claude setup-token` |48| `claude setup-token` | 为 CI 和脚本生成长期 OAuth 令牌。将令牌打印到终端而不保存。需要 Claude 订阅。请参阅 [生成长期令牌](/docs/zh-CN/authentication#generate-a-long-lived-token) | `claude setup-token` |

49| `claude stop <id>` | 停止 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。也接受 `claude kill` | `claude stop 7c5dcf5d` |49| `claude stop <id>` | 停止 [后台会话](/docs/zh-CN/agent-view#manage-sessions-from-the-shell)。也接受 `claude kill` | `claude stop 7c5dcf5d` |

50| `claude ultrareview [target]` | 非交互式运行 [ultrareview](/docs/zh-CN/ultrareview#run-ultrareview-non-interactively)。将发现结果打印到标准输出,成功时退出代码 0,失败时退出代码 1。使用 `--json` 获取原始有效负载,使用 `--timeout <minutes>` 覆盖 45 分钟的默认值。在 `github.com` pull request 目标上使用 `--post` 以将完成的发现结果作为来自您的 GitHub 账户的一条纯文本评论发布到 PR。`--no-post` 是默认值。`--post` 和 `--no-post` 需要 Claude Code v2.1.227 或更高版本。请参阅 [将发现结果发布到 pull request](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |50| `claude ultrareview [target]` | 非交互式运行 [ultrareview](/docs/zh-CN/ultrareview#run-ultrareview-non-interactively)。将发现结果打印到标准输出,成功时退出代码 0,失败时退出代码 1。使用 `--json` 获取原始负载,使用 `--timeout <minutes>` 覆盖 45 分钟的默认值。在 `github.com` Pull Request 目标上使用 `--post` 以将完成的发现结果作为来自您的 GitHub 账户的一条纯文本评论发布到 PR。`--no-post` 是默认值。`--post` 和 `--no-post` 需要 Claude Code v2.1.227 或更高版本。请参阅 [将发现结果发布到 Pull Request](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |

51 51 

52如果您输入错误的子命令,Claude Code 会建议最接近的匹配项并退出而不启动会话。例如,`claude udpate` 会打印 `Did you mean claude update?`。52如果您输入错误的子命令,Claude Code 会建议最接近的匹配项并退出而不启动会话。例如,`claude udpate` 会打印 `Did you mean claude update?`。

53 53 

54从 v2.1.199 开始,`claude --dangerously-skip-permissions daemon <subcommand>` 运行 `daemon` 子命令。早期版本将 `daemon <subcommand>` 视为新交互式会话的提示,因此当标志在前面时子命令永远不会运行,这是 `claude` 别名为包含该标志时的常见设置。只有前导 `--dangerously-skip-permissions` 或 `--allow-dangerously-skip-permissions` 以这种方式路由到 `daemon`;任何其他前导标志仍然启动交互式会话。54`claude --dangerously-skip-permissions daemon <subcommand>` 会运行 `daemon` 子命令,因此当 `claude` 的别名包含该标志时,子命令仍可正常工作。只有前导的 `--dangerously-skip-permissions` 或 `--allow-dangerously-skip-permissions` 会以这种方式路由到 `daemon`;如果 `daemon` 前面有任何其他标志,子命令将不会运行。

55 55 

56<h2 id="cli-flags">56<h2 id="cli-flags">

57 CLI 标志57 CLI 标志

Details

118 添加凭证118 添加凭证

119</h4>119</h4>

120 120 

121你从已经存在的环境的编辑器一次添加一个凭证。新环境的对话框不提供它们。也没有编辑。要更改凭证的主机或值,请删除它并再次添加。121凭据需要逐个添加,添加后无法编辑。要更改凭据的主机或值,请将其删除后重新添加。

122 122 

123<Steps>123<Steps>

124 <Step title="打开环境的API凭证">124 <Step title="打开环境的 API 凭据">

125 在[claude.ai/code](https://claude.ai/code)[打开环境进行编辑](#configure-your-environment)。在**Edit cloud environment**对话框中,在**Environment variables**下方找到**API credentials**。你会看到已经在环境上的凭证,每个都带有它适用的主机。125 在 [claude.ai/code](https://claude.ai/code) [打开环境进行编辑](#configure-your-environment)。在 **Edit environment** 对话框中,找到 **API credentials** 部分。您会看到环境上已有的凭据,每个凭据都附有其适用的主机。

126 </Step>126 </Step>

127 127 

128 <Step title="添加凭证">128 <Step title="添加凭据">

129 选择**Add credential**并填写表单。对于在请求头中传输的API密钥,保持默认的**Credential type**、**Bearer**,并填写这些字段:129 选择 **Add credential** 并填写表单。对于在请求头中传输的 API 密钥,保留默认的 **Credential type**,即 **Bearer**,并填写以下字段:

130 130 

131 * **Name**:凭证的标签,例如`Internal billing API`131 * **Name**:凭证的标签,例如`Internal billing API`

132 * **Allowed websites**:API的主机,例如`api.example.com`。前导`*.`匹配每个子域132 * **Allowed websites**:API的主机,例如`api.example.com`。前导`*.`匹配每个子域

code-review.md +3 −2

Details

339 您还可以添加标志:339 您还可以添加标志:

340 340 

341 * `--fix`:在审查后将发现应用到您的工作树341 * `--fix`:在审查后将发现应用到您的工作树

342 * `--comment`:将发现作为内联评论发布在 GitHub pull request 上,或作为单个注释发布在 GitLab merge request 上342 * `--comment`:将发现作为内联评论发布在 GitHub Pull Request 上,或作为单个注释发布在 GitLab merge request 上

343 * `--post`:在 `github.com` pull request 的 `ultra` 云审查上,在启动对话框中预选将完成的发现发布到 PR;请参阅[将发现发布到 pull request](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request)。需要 Claude Code v2.1.227 或更高版本343 * `--post`:在 `github.com` Pull Request 的 `ultra` 云审查上,在启动对话框中预选将完成的发现发布到 PR;请参阅[将发现发布到 Pull Request](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request)。需要 Claude Code v2.1.227 或更高版本

344 * `--max-findings <n>`、`--max-findings all` 或 `--max-findings default`:最多报告 `n` 个发现,或使用 `all` 报告所有发现,以代替审查的常规数量限制。后续审查会重用您输入的值,直到您传递 `--max-findings default`。需要 Claude Code v2.1.288 或更高版本

344 345 

345 当您为 GitLab merge request 传递 `--comment` 时,Claude Code 通过 GitLab 的 `glab` CLI 发布发现。需要 Claude Code v2.1.257 或更高版本。当 `glab` 未安装时,Claude 在终端中打印发现。346 当您为 GitLab merge request 传递 `--comment` 时,Claude Code 通过 GitLab 的 `glab` CLI 发布发现。需要 Claude Code v2.1.257 或更高版本。当 `glab` 未安装时,Claude 在终端中打印发现。

346 347 

commands.md +2 −2

Details

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 加载适用于您项目语言的 [Claude API](https://platform.claude.com/docs/en/api/overview) 和 [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) 参考资料。当您的代码导入 `anthropic` 或 `@anthropic-ai/sdk` 时也会自动激活。有关每个子命令的作用及其所需版本,请参阅[处理 Claude API 项目](/docs/zh-CN/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 加载适用于您项目语言的 [Claude API](https://platform.claude.com/docs/en/api/overview) 和 [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) 参考资料。当您的代码导入 `anthropic` 或 `@anthropic-ai/sdk` 时也会自动激活。有关每个子命令的作用及其所需版本,请参阅[处理 Claude API 项目](/docs/zh-CN/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 让 Claude 通过 [Claude in Chrome](/docs/zh-CN/chrome) 在您的浏览器中执行任务,例如测试页面、填写表单或读取控制台日志。当会话启用了 Chrome 集成时可用(例如使用 `claude --chrome`),或者当 Claude Code 可以提议[安装扩展](/docs/zh-CN/chrome#install-the-extension-when-claude-asks)时可用 |73| `/claude-in-chrome [task]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 让 Claude 通过 [Claude in Chrome](/docs/zh-CN/chrome) 在您的浏览器中执行任务,例如测试页面、填写表单或读取控制台日志。当会话启用了 Chrome 集成时可用(例如使用 `claude --chrome`),或者当 Claude Code 可以提议[安装扩展](/docs/zh-CN/chrome#install-the-extension-when-claude-asks)时可用 |

74| `/clear [name]` | 使用空上下文开始新对话。传递名称可在 `/resume` 选择器中为之前的对话添加标签。要在继续同一对话的同时释放上下文,请改用 `/compact`。使用 `/resume` 恢复之前的对话,或者在同一 Claude Code 进程中,从[回退菜单的上一个会话条目](/docs/zh-CN/checkpointing#rewind-past-a-cleared-conversation)恢复。别名:`/reset`、`/new` |74| `/clear [name]` | 使用空上下文开始新对话。传递名称可在 `/resume` 选择器中为之前的对话添加标签。要在继续同一对话的同时释放上下文,请改用 `/compact`。使用 `/resume` 恢复之前的对话,或者在同一 Claude Code 进程中,从[回退菜单的上一个会话条目](/docs/zh-CN/checkpointing#rewind-past-a-cleared-conversation)恢复。别名:`/reset`、`/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 审查当前 diff,或您传递的 PR 编号、分支或路径,查找正确性 bug。根据您的模型和 effort 级别,审查还会涵盖清理机会。传递 `--fix` 可应用发现的问题,传递 `--comment` 可将其发布到 GitHub PR 或 GitLab Merge Request 上,传递 `ultra` 可运行深度[云端审查](/docs/zh-CN/ultrareview)。发布到 GitLab Merge Request 需要 Claude Code v2.1.257 或更高版本。在以 `github.com` PR 为目标使用 `ultra` 时,传递 `--post` 可在启动对话框中预先选择[将完成的发现发布到 PR](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request);`--post` 需要 Claude Code v2.1.227 或更高版本。有关 effort 级别、目标指定方式以及它与 `/simplify` 的关系,请参阅[在本地审查 diff](/docs/zh-CN/code-review#review-a-diff-locally)。别名:`/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 审查当前 diff,或您传递的 PR 编号、分支或路径,查找正确性 bug。根据您的模型和 effort 级别,审查还会涵盖清理机会。传递 `--fix` 可应用发现的问题,传递 `--comment` 可将其发布到 GitHub PR 或 GitLab Merge Request 上,传递 `ultra` 可运行深度[云端审查](/docs/zh-CN/ultrareview)。发布到 GitLab Merge Request 需要 Claude Code v2.1.257 或更高版本。在以 `github.com` PR 为目标使用 `ultra` 时,传递 `--post` 可在启动对话框中预先选择[将完成的发现发布到 PR](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request);`--post` 需要 Claude Code v2.1.227 或更高版本。有关 effort 级别、目标指定方式以及它与 `/simplify` 的关系,请参阅[在本地审查 diff](/docs/zh-CN/code-review#review-a-diff-locally)。别名:`/review` |

76| `/color [color\|default]` | 设置当前会话的提示栏颜色。可用颜色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重置,或不带参数运行以随机选择一种颜色。连接 [Remote Control](/docs/zh-CN/remote-control) 时,颜色会同步到 claude.ai/code。也可在非交互模式(`-p`)中使用;需要 Claude Code v2.1.205 或更高版本 |76| `/color [color\|default]` | 设置当前会话的提示栏颜色。可用颜色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重置,或不带参数运行以随机选择一种颜色。连接 [Remote Control](/docs/zh-CN/remote-control) 时,颜色会同步到 claude.ai/code。也可在非交互模式(`-p`)中使用;需要 Claude Code v2.1.205 或更高版本 |

77| `/compact [instructions]` | 通过总结到目前为止的对话来释放上下文。可选择传递摘要的重点指令。请参阅[压缩如何处理规则、skill 和记忆文件](/docs/zh-CN/context-window#what-survives-compaction) |77| `/compact [instructions]` | 通过总结到目前为止的对话来释放上下文。可选择传递摘要的重点指令。请参阅[压缩如何处理规则、skill 和记忆文件](/docs/zh-CN/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | 打开[设置](/docs/zh-CN/settings)界面,以调整主题、模型、[输出样式](/docs/zh-CN/output-styles)和其他偏好。传递一个或多个 `key=value` 对可直接设置某项设置而无需打开界面,例如 `/config thinking=false`、`/config theme=dark` 或 `/config model=sonnet`。`key=value` 形式也适用于非交互模式(`-p`),以及通过 [Remote Control](/docs/zh-CN/remote-control) 从 Claude 移动应用使用。`key=value` 形式无法开启需要您在面板中确认的设置,例如 [`autoContinueAtUsageLimit`](/docs/zh-CN/interactive-mode#turn-automatic-continue-off),但可以将其关闭。运行 `/config --help` 可列出其接受的键。别名:`/settings` |78| `/config [key=value ...]` | 打开[设置](/docs/zh-CN/settings)界面,以调整主题、模型、[输出样式](/docs/zh-CN/output-styles)和其他偏好。传递一个或多个 `key=value` 对可直接设置某项设置而无需打开界面,例如 `/config thinking=false`、`/config theme=dark` 或 `/config model=sonnet`。`key=value` 形式也适用于非交互模式(`-p`),以及通过 [Remote Control](/docs/zh-CN/remote-control) 从 Claude 移动应用使用。`key=value` 形式无法开启需要您在面板中确认的设置,例如 [`autoContinueAtUsageLimit`](/docs/zh-CN/interactive-mode#turn-automatic-continue-off),但可以将其关闭。运行 `/config --help` 可列出其接受的键。别名:`/settings` |


134| `/remote-env` | 为您从 CLI 启动的云端会话选择默认[云环境](/docs/zh-CN/cloud-environments#select-an-environment-from-the-cli) |134| `/remote-env` | 为您从 CLI 启动的云端会话选择默认[云环境](/docs/zh-CN/cloud-environments#select-an-environment-from-the-cli) |

135| `/rename [name]` | 重命名当前会话并在提示栏上显示名称。不提供名称时,根据对话历史自动生成一个名称。也可在非交互模式(`-p`)中使用;需要 Claude Code v2.1.205 或更高版本。在所有重命名入口(包括 claude.ai 和桌面应用)中,Claude Code 都会将新名称中的控制字符和不可见字符替换为空格,并将名称长度上限设为 200 个字符。如果移除不可见字符后名称为空,Claude Code 会拒绝该名称并显示 `That name is empty once invisible characters are removed. Usage: /rename <name>`。字符替换和长度上限需要 Claude Code v2.1.221 或更高版本。如果此计算机上另一个活动会话已使用您传递的名称,Claude Code 会改为应用[该名称的变体](/docs/zh-CN/sessions#name-your-sessions) |135| `/rename [name]` | 重命名当前会话并在提示栏上显示名称。不提供名称时,根据对话历史自动生成一个名称。也可在非交互模式(`-p`)中使用;需要 Claude Code v2.1.205 或更高版本。在所有重命名入口(包括 claude.ai 和桌面应用)中,Claude Code 都会将新名称中的控制字符和不可见字符替换为空格,并将名称长度上限设为 200 个字符。如果移除不可见字符后名称为空,Claude Code 会拒绝该名称并显示 `That name is empty once invisible characters are removed. Usage: /rename <name>`。字符替换和长度上限需要 Claude Code v2.1.221 或更高版本。如果此计算机上另一个活动会话已使用您传递的名称,Claude Code 会改为应用[该名称的变体](/docs/zh-CN/sessions#name-your-sessions) |

136| `/resume [session]` | 通过 ID 或名称恢复对话,或打开会话选择器。[后台会话](/docs/zh-CN/agent-view)在选择器中以 `bg` 标记显示。恢复仍在运行的后台会话时(无论是从选择器还是通过 ID 或名称),会[打开该会话](/docs/zh-CN/sessions#resume-a-running-background-session):您当前的对话会移到后台,此终端会附加到正在运行的会话。在空输入框中按 `←` 可返回 Agent 视图,其中也会列出您离开的对话。在 v2.1.285 之前,Claude Code 会拒绝并告诉您使用 `claude attach` 打开该会话,或先停止它。别名:`/continue` |136| `/resume [session]` | 通过 ID 或名称恢复对话,或打开会话选择器。[后台会话](/docs/zh-CN/agent-view)在选择器中以 `bg` 标记显示。恢复仍在运行的后台会话时(无论是从选择器还是通过 ID 或名称),会[打开该会话](/docs/zh-CN/sessions#resume-a-running-background-session):您当前的对话会移到后台,此终端会附加到正在运行的会话。在空输入框中按 `←` 可返回 Agent 视图,其中也会列出您离开的对话。在 v2.1.285 之前,Claude Code 会拒绝并告诉您使用 `claude attach` 打开该会话,或先停止它。别名:`/continue` |

137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | [`/code-review`](/docs/zh-CN/code-review#review-a-diff-locally) 的别名:审查当前 diff,或您传递的 PR 编号、分支或路径(例如 `/review 1234`),并接受相同的 effort 级别和标志。未指定级别时,审查会沿用您上次输入的 `low` 到 `max` 级别;有关确切规则,请参阅[在本地审查 diff](/docs/zh-CN/code-review#review-a-diff-locally)。要进行深度云端审查,请使用 [`/code-review ultra`](/docs/zh-CN/ultrareview)。在 v2.1.223 之前,`/review` 是一个单独的命令,按编号对 GitHub Pull Request 运行单次只读审查,不带参数运行时会列出打开的 PR 供选择;从 v2.1.186 到 v2.1.201,它运行与 `/code-review medium` 相同的多 Agent 引擎 |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | [`/code-review`](/docs/zh-CN/code-review#review-a-diff-locally) 的别名:审查当前 diff,或您传递的 PR 编号、分支或路径(例如 `/review 1234`),并接受相同的 effort 级别和标志。未指定级别时,审查会沿用您上次输入的 `low` 到 `max` 级别;有关确切规则,请参阅[在本地审查 diff](/docs/zh-CN/code-review#review-a-diff-locally)。要进行深度云端审查,请使用 [`/code-review ultra`](/docs/zh-CN/ultrareview)。在 v2.1.223 之前,`/review` 是一个单独的命令,按编号对 GitHub Pull Request 运行单次只读审查,不带参数运行时会列出打开的 PR 供选择;从 v2.1.186 到 v2.1.201,它运行与 `/code-review medium` 相同的多 Agent 引擎 |

138| `/rewind` | 将对话和/或代码回退到之前的某个时间点,或从选定的消息开始总结。请参阅[检查点功能](/docs/zh-CN/checkpointing)。别名:`/checkpoint`、`/undo` |138| `/rewind` | 将对话和/或代码回退到之前的某个时间点,或从选定的消息开始总结。请参阅[检查点功能](/docs/zh-CN/checkpointing)。别名:`/checkpoint`、`/undo` |

139| `/run` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 启动并操作您项目的应用,以查看更改是否实际生效,而不仅仅是通过测试。请参阅[运行并验证您的应用](/docs/zh-CN/skills#run-and-verify-your-app) |139| `/run` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 启动并操作您项目的应用,以查看更改是否实际生效,而不仅仅是通过测试。请参阅[运行并验证您的应用](/docs/zh-CN/skills#run-and-verify-your-app) |

140| `/run-skill-generator` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 通过编写一个项目专属的 [skill](/docs/zh-CN/skills#run-and-verify-your-app),教会 `/run` 和 `/verify` 如何在干净的环境中构建、启动和操作您项目的应用 |140| `/run-skill-generator` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 通过编写一个项目专属的 [skill](/docs/zh-CN/skills#run-and-verify-your-app),教会 `/run` 和 `/verify` 如何在干净的环境中构建、启动和操作您项目的应用 |

Details

46 46 

47 团队,47 团队,

48 48 

49 从今天开始,您可以访问 Claude Code,这是一个在您的终端中运行、读取您的实际代码库并端到端处理真实任务的 AI 编码代理:调试、重构、测试、PR。它不是自动完成,也不是聊天窗口。它编辑文件、运行您的命令,并在任何有风险的事情之前请求许可。49 从今天开始,您可以访问 Claude Code,这是一个在您的终端中运行、读取您的实际代码库并端到端处理真实任务的 AI 编码 Agent:调试、重构、测试、PR。它不是自动完成,也不是聊天窗口。它会编辑文件并运行您的命令。

50 50 

51 在两分钟内开始运行:51 在两分钟内开始运行:

52 52 


60 60 

61 - "文件 [file] 中的测试不稳定。找出原因并修复它"61 - "文件 [file] 中的测试不稳定。找出原因并修复它"

62 - "向我介绍 [module] 如何处理 [X]"62 - "向我介绍 [module] 如何处理 [X]"

63 - "查看我的工作差异并告诉我在我推送之前什么是有风险的"63 - "查看我当前工作的 diff,并在我推送之前告诉我有哪些风险"

64 64 

65 您的代码去哪里了:Claude Code 在您的终端中运行,直接与 Anthropic 的 API 通信,循环中没有第三方服务器。它在编辑文件或运行命令之前请求许可。根据我们的企业协议,Anthropic 不使用您的代码或提示来训练其模型。65 您的代码去哪里了:Claude Code 在您的终端中运行,直接与 Anthropic 的 API 通信。在我们的 Team 或 Enterprise 计划下,Anthropic 不会使用您的代码或提示词来训练其模型。

66 详情:https://code.claude.com/docs/en/data-usage66 详情:https://code.claude.com/docs/en/data-usage

67 https://code.claude.com/docs/en/security67 https://code.claude.com/docs/en/security

68 68 


70 70 

71 - [名称]71 - [名称]

72 72 

73 附注:更喜欢您的编辑器?有一个 VS Code 扩展和一个 JetBrains 插件。相同的代理,不需要终端。73 附注:更喜欢您的编辑器?有一个 VS Code 扩展和一个 JetBrains 插件。相同的 Agent,不需要终端。

74 ```74 ```

75 </Tab>75 </Tab>

76 76 


78 ```markdown theme={null}78 ```markdown theme={null}

79 🚀 *Claude Code 现已为 [团队] 推出*79 🚀 *Claude Code 现已为 [团队] 推出*

80 80 

81 AI 编码代理,在您的终端中运行,读取您的仓库,完成真实工作:81 AI 编码 Agent,在您的终端中运行,读取您的仓库,完成真实工作:

82 错误、重构、测试、PR。在触及任何东西之前请求许可。82 错误、重构、测试、PR。

83 83 

84 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`84 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

85 85 

86 *首先尝试的事情* → 运行 `/init`,然后:"文件 [file] 中的测试不稳定,86 *首先尝试的事情* → 运行 `/init`,然后:"文件 [file] 中的测试不稳定,

87 找出原因并修复它。"87 找出原因并修复它。"

88 88 

89 🔒 在您的终端中运行,仅与 Anthropic 的 API 通信。根据我们的89 🔒 在您的终端中运行,直接与 Anthropic 的 API 通信。在我们的 Team 或

90 企业计划,您的代码和提示不用于训练模型。90 Enterprise 计划下,您的代码和提示词不会用于训练模型。

91 数据使用 → https://code.claude.com/docs/en/data-usage91 数据使用 → https://code.claude.com/docs/en/data-usage

92 92 

93 📚 快速入门 · VS Code · 免费 1 小时课程93 📚 快速入门 · VS Code · 免费 1 小时课程


163 163 

164[继续标准公告中的"在两分钟内开始运行"]164[继续标准公告中的"在两分钟内开始运行"]

165 165 

166试点的一个额外事项:在您的第一个多文件更改时,按 Shift+Tab 直到您看到"plan"。Claude 将在触及任何文件之前准确说明它打算做什么。这是校准您应该信任多少的最快方式。166试点的一个额外事项:在您的第一个多文件更改时,按 Shift+Tab 直到您看到"plan"。Claude 将在不编辑您源代码的情况下列出它打算做什么。这是校准您应该信任多少的最快方式。

167```167```

168 168 

169<h3 id="champion-recruitment-dm">169<h3 id="champion-recruitment-dm">


271```markdown theme={null}271```markdown theme={null}

272🛡️ *技巧:一个按键在"看但不要触及"和"就做吧"之间*272🛡️ *技巧:一个按键在"看但不要触及"和"就做吧"之间*

273 273 

274有时您希望 Claude 在每次编辑之前请求许可。有时您只是希望它发货。您不应该永远选择一个。274有时您希望 Claude 在每次编辑之前先询问。有时您只是希望它直接交付。您不应该永远只选择一种。

275 275 

276*Shift+Tab* 循环通过 Claude 获得多少自由度:*Manual*(`default` 设置值)在文件编辑和大多数 shell 命令之前请求,*acceptEdits* 让文件编辑和常见文件系统命令流通,同时仍在其他 shell 命令之前检查,*plan* 在触及任何东西之前为您的批准提议更改。Plan 模式是信任构建者,所以对于任何触及多个文件的东西,从那里开始。276*Shift+Tab* 循环切换 Claude 无需询问即可执行的操作范围:*Manual*(`default` 设置值)在文件编辑和大多数 shell 命令之前询问,*acceptEdits* 让文件编辑和常见文件系统命令直接通过,同时仍在其他 shell 命令之前检查,*plan* 进行研究并提出更改建议,而不编辑您的源代码。计划模式是建立信任的方式,所以对于任何触及多个文件的工作,从那里开始。

277 277 

278*现在尝试:* 在您的下一个重构上,按 Shift+Tab 直到您看到"plan",然后描述更改。您将在单个文件移动之前获得完整的提议。278*现在尝试:* 在您的下一个重构上,按 Shift+Tab 直到您看到"plan",然后描述更改。您将获得一份完整的提议供您审查。

279 279 

280📖 Permission modes → https://code.claude.com/docs/zh-CN/permissions280📖 Permission modes → https://code.claude.com/docs/zh-CN/permissions

281```281```


406您团队中的某个人会问"等等,我的代码去哪里了?"406您团队中的某个人会问"等等,我的代码去哪里了?"

407这是您可以粘贴的简短版本。407这是您可以粘贴的简短版本。

408 408 

409权限优先设计。每个文件编辑、shell 命令和外部调用都由您的批准门控。CLI 在您的终端中运行,直接与 Anthropic 的 API 通信,没有第三方服务器,并支持 shell 命令的可选操作系统级沙箱。在 Team 或 Enterprise 计划上,Anthropic 不使用您的代码或提示来训练其模型。409权限模式决定 Claude 无需先询问您即可执行哪些操作。CLI 在您的终端中运行,直接与 Anthropic 的 API 通信,并支持对 shell 命令进行可选的操作系统级沙箱隔离。在 Team 或 Enterprise 计划上,Anthropic 不使用您的代码或提示词来训练其模型。

410 410 

411*现在尝试:* 保存这两个链接以备下次问题出现。它们回答了大多数安全审查问题。411*现在尝试:* 保存这两个链接以备下次问题出现。它们回答了大多数安全审查问题。

412 412 


445| - | - |445| - | - |

446| "它在 VS Code 中工作吗?" | 是的。有一个 VS Code 扩展和一个 JetBrains 插件,具有相同的功能,嵌入在您的编辑器中。[VS Code →](/docs/zh-CN/vs-code) |446| "它在 VS Code 中工作吗?" | 是的。有一个 VS Code 扩展和一个 JetBrains 插件,具有相同的功能,嵌入在您的编辑器中。[VS Code →](/docs/zh-CN/vs-code) |

447| "我必须先配置什么吗?" | 不。安装,然后在任何仓库中运行 `claude`。运行一次 `/init`,您就设置好了。[快速入门 →](/docs/zh-CN/quickstart) |447| "我必须先配置什么吗?" | 不。安装,然后在任何仓库中运行 `claude`。运行一次 `/init`,您就设置好了。[快速入门 →](/docs/zh-CN/quickstart) |

448| "我的代码去哪里了?" | CLI 在您的终端中运行,并将上下文发送到 Anthropic 的 API 进行推理,没有第三方服务器。在 Team 或 Enterprise 计划上,您的代码和提示不用于训练模型。[数据使用 →](/docs/zh-CN/data-usage) |448| "我的代码去哪里了?" | CLI 在您的终端中运行,并将上下文发送到 Anthropic 的 API 进行推理。在 Team 或 Enterprise 计划上,您的代码和提示词不会用于训练模型。[数据使用 →](/docs/zh-CN/data-usage) |

449| "它能看到我的整个仓库吗?" | 它读取您给它访问权限的内容。您工作目录内的文件读取不提示;权限提示门控编辑、非只读 shell 命令和该目录外的文件工具读取。一组内置的只读 shell 命令(如 `ls` 和 `cat`)无需提示即可运行;使用[沙箱 `denyRead` 规则](/docs/zh-CN/sandboxing#filesystem-isolation)限制它。[权限 →](/docs/zh-CN/permissions) |449| "它能看到我的整个仓库吗?" | 它读取您授予其访问权限的内容。您工作目录内的文件读取不会弹出提示。[权限 →](/docs/zh-CN/permissions) |

450| "这与 Copilot 有什么不同?" | Copilot 自动完成行。Claude Code 是一个读取文件、运行命令和进行多文件编辑的代理。[概述 →](/docs/zh-CN/overview) |450| "这与 Copilot 有什么不同?" | Copilot 自动完成行。Claude Code 是一个读取文件、运行命令和进行多文件编辑的代理。[概述 →](/docs/zh-CN/overview) |

451| "我应该首先尝试什么?" | 您一直在推迟的错误,因为它很乏味。"文件 \[file] 中的测试不稳定,找出原因。" [快速入门 →](/docs/zh-CN/quickstart) |451| "我应该首先尝试什么?" | 您一直在推迟的错误,因为它很乏味。"文件 \[file] 中的测试不稳定,找出原因。" [快速入门 →](/docs/zh-CN/quickstart) |

452 452 

Details

176 会话如何处理传入消息176 会话如何处理传入消息

177</h2>177</h2>

178 178 

179当会话 A 向会话 B 发送消息时,Claude Code 告诉 B 的 Claude 消息来自另一个会话,而不是来自您,并限制消息可以做什么:179当会话 A 向会话 B 发送消息时,Claude Code 会告诉 B 的 Claude 该消息来自另一个会话,而不是来自您,并限制该消息可以做什么:

180 180 

181* **它不能批准任何内容**:来自另一个会话的消息永远不计为您的同意,因此它不能代表您回答待处理的权限提示。181* **它不能批准任何内容**:来自另一个会话的消息永远不会被视为您的同意,因此它不能代表您回答待处理的权限提示。

182* **它不能改变配置**:Claude Code 指示接收 Claude 永远不要改变权限设置、`CLAUDE.md` 或其他配置,因为另一个会话要求。182* **它不能更改配置**:Claude Code 指示接收方 Claude 永远不要因为另一个会话的要求而更改权限设置、`CLAUDE.md` 或其他配置。

183* **命令不运行**:消息文本中的命令,如 `/compact`,作为纯文本到达。Claude Code 永远不执行它。183* **命令不会运行**:消息文本中的命令(如 `/compact`)以纯文本形式到达。Claude Code 永远不会执行它。

184* **权限提示仍然触发**:如果对消息进行操作需要接收会话没有的权限,您会看到与任何其他工作相同的提示。184* **权限提示仍会触发**:如果处理该消息需要接收会话不具备的权限,您会看到与任何其他工作相同的提示。

185 185 

186<h3 id="what-a-message-looks-like">186<h3 id="what-a-message-looks-like">

187 消息的样子187 消息的样子

188</h3>188</h3>

189 189 

190当消息到达时,Claude Code 在对话中将其显示为暗淡的单行预览,预览行之后保留在对话中。预览包含发送者的名称和消息的第一行,当它很长时用 `…` 切割,如 `› Message from @api-worker: Schema migration finished (ctrl+o to expand)`。190当消息到达时,Claude Code 会在对话中将其显示为暗淡的单行预览,该预览行之后会保留在对话中。预览包含发送者的名称和消息的第一行,消息较长时会用 `…` 截断,例如 `› Message from @api-worker: Schema migration finished (ctrl+o to expand)`。

191 191 

192这两个中的任何一个都显示您完整的文本:192以下任一方式都会向您显示完整文本:

193 193 

194* 按 `Ctrl+O` 打开[成绩单查看器](/docs/zh-CN/interactive-mode#transcript-viewer)并在发送者的会话名称下读取完整文本。194* 按 `Ctrl+O` 打开[会话记录查看器](/docs/zh-CN/interactive-mode#transcript-viewer),并在发送者的会话名称下阅读完整文本。

195* 在使用 [`--verbose`](/docs/zh-CN/cli-reference#cli-flags) 启动的会话中,Claude Code 显示完整文本而不是预览。195* 在使用 [`--verbose`](/docs/zh-CN/cli-reference#cli-flags) 启动的会话中,Claude Code 会显示完整文本而不是预览。

196 196 

197预览仅缩短您看到的内容。无论您是否展开它,Claude 都读取完整消息。197预览仅缩短您看到的内容。无论您是否展开它,Claude 都会读取完整消息。

198 198 

199Claude 接收消息时带有发送者的名称和回复地址,除了[单向跨机器消息](#message-sessions-on-other-machines),它不携带回复地址。199Claude 接收消息时会附带发送者的名称和回复地址,但[单向跨机器消息](#message-sessions-on-other-machines)除外,它不携带回复地址。

200 200 

201这个例子是一个 Claude 写给另一个的消息,当您展开它时其完整文本读作:201以下示例是一个 Claude 写给另一个 Claude 的消息,展示了展开后的完整文本:

202 202 

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

204架构迁移已完成204Schema migration finished

205新列是 tenant_id,在 main 上变基现在是安全的。205The new column is tenant_id, and rebasing on main is safe now.

206```206```

207 207 

208<h3 id="control-inbound-messages">208<h3 id="control-inbound-messages">

209 控制入站消息209 控制入站消息

210</h3>210</h3>

211 211 

212设置 [`crossSessionInbound`](/docs/zh-CN/settings-reference#crosssessioninbound) 以选择会话对来自您的其他会话的到达消息做什么:212设置 [`crossSessionInbound`](/docs/zh-CN/settings-reference#crosssessioninbound) 以选择会话如何处理来自您其他会话的消息:

213 213 

214| 值 | 行为 |214| 值 | 行为 |

215| :- | :- |215| :- | :- |

216| `accept` | Claude Code 将每条消息传递给 Claude |216| `accept` | Claude Code 将每条消息传递给 Claude |

217| `hold` | Claude Code 为每条消息显示通知,不传递它。如果稍后应用 `accept`,根据[优先级规则](/docs/zh-CN/settings-reference#crosssessioninbound),Claude Code 释放保留的消息 |217| `hold` | Claude Code 为每条消息显示通知,但不传递它。如果之后根据[优先级规则](/docs/zh-CN/settings-reference#crosssessioninbound)适用 `accept`,Claude Code 会释放被保留的消息 |

218| `refuse` | Claude Code 删除每条消息而不传递它 |218| `refuse` | Claude Code 丢弃每条消息而不传递它 |

219 219 

220除了编辑设置文件,您可以在 `/config` 行**来自您的其他会话的消息**中选择值。Claude Code 将您选择的值写入您的用户设置。该行需要 Claude Code v2.1.232 或更高版本,当托管设置或 `--settings` 标志设置密钥时不出现,因为用户设置值不会应用。Claude Code 拒绝此密钥的 `/config crossSessionInbound=value` 快捷方式。220除了编辑设置文件,您还可以在 `/config` 的 **Messages from your other sessions** 行中选择该值。Claude Code 会将您选择的值写入您的用户设置。该行需要 Claude Code v2.1.232 或更高版本,并且当托管设置或 `--settings` 标志设置了该设置项时不会出现,因为此时用户设置中的值不会生效。对于此设置项,Claude Code 会拒绝 `/config crossSessionInbound=value` 简写形式。

221 221 

222要查看哪个值适用,请遵循[设置参考](/docs/zh-CN/settings-reference#crosssessioninbound)中的 `crossSessionInbound` 优先级规则。当没有值适用时,Claude Code 根据两个会话的权限模式按消息决定。它将[绕过权限提示](/docs/zh-CN/permission-modes#skip-all-checks-with-bypasspermissions-mode)的会话分组为一个类,每个其他会话分组为另一个。Plan Mode 在具有可用绕过权限的交互式终端会话中计为绕过,[auto](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)、`acceptEdits` 和 `dontAsk` 计为提示:222要查看哪个值适用,请遵循[设置参考](/docs/zh-CN/settings-reference#crosssessioninbound)中的 `crossSessionInbound` 优先级规则。

223 223 

224* **接收会话提示权限**:Claude Code 传递每条消息。它仅当发送会话将自己标识为绕过权限提示时才为您的批准保留一条。224当没有值适用时,Claude Code 会根据两个会话的权限模式逐条消息做出决定。它将[绕过权限提示](/docs/zh-CN/permission-modes#skip-all-checks-with-bypasspermissions-mode)的会话归为一类,将其他所有会话归为另一类。在可使用绕过权限的交互式终端会话中,计划模式被视为绕过,而 [auto](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)、`acceptEdits` 和 `dontAsk` 被视为提示:

225* **接收会话绕过权限提示**:Claude Code 为您的批准保留每条消息。它仅当发送会话也标识为绕过时才传递一条。

226 225 

227当默认保留消息时,Claude Code 在接收会话中打开批准对话。对话显示发送者和预览:226* **接收会话会提示权限**:Claude Code 传递每条消息。仅当发送会话将自身标识为绕过权限提示时,它才会保留该消息以等待您的批准。

227* **接收会话绕过权限提示**:Claude Code 保留每条消息以等待您的批准。仅当发送会话也将自身标识为绕过时,它才会传递该消息。

228 228 

229* **批准**将该条消息传递给 Claude。229当默认行为在交互式终端会话中保留消息时,Claude Code 会在该会话中打开批准对话框。对话框显示发送者和预览:

230* **拒绝**,或关闭对话,删除它。

231* 当对话在 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 截止日期后保持无答案时,Claude Code 关闭它并删除消息。截止日期默认为五分钟。

232* 当没有终端附加到[后台会话](/docs/zh-CN/agent-view)时,Claude Code 将对话保留在截止日期之后。在您附加后,如果对话在完整截止日期期间保持无答案,Claude Code 关闭它并删除消息。

233* 如果此会话的权限模式类在消息被保留时改变,Claude Code 重新应用入站规则,传递它们现在接受的消息,并显示通知。

234 230 

235Claude Code 最多保留 100 条消息,超过那个删除最旧的。231* **Approve** 将该条消息传递给 Claude。

232* **Deny** 或关闭对话框会丢弃该消息。

233* 当对话框在 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 截止时间后仍未得到回应时,Claude Code 会关闭它并丢弃消息。截止时间默认为五分钟。

234* 当没有终端连接到[后台会话](/docs/zh-CN/agent-view)时,Claude Code 会让对话框在截止时间之后保持打开。在您连接后,如果对话框在一个完整的截止时间段内仍未得到回应,Claude Code 会关闭它并丢弃消息。

235* 如果在消息被保留期间此会话的权限模式类别发生变化,Claude Code 会重新应用入站规则,传递现在被接受的消息,并显示通知。

236 

237VS Code 扩展或 Desktop 应用中的会话无法显示该对话框。在这些会话中,Claude Code 会将被保留的消息保留到相同的截止时间,如[非交互式会话](#non-interactive-sessions)中所述。

238 

239Claude Code 最多保留 100 条消息,超出后会丢弃最旧的消息。

236 240 

237<h3 id="non-interactive-sessions">241<h3 id="non-interactive-sessions">

238 非交互式会话242 非交互式会话

239</h3>243</h3>

240 244 

241Claude Code 为 [`claude -p`](/docs/zh-CN/headless) 会话绑定收件箱套接字,如交互式会话,因此长期运行的 `-p` 工作者可以接收消息并出现在列表中。当您在[裸模式](/docs/zh-CN/headless#start-faster-with-bare-mode)中启动会话时,Claude Code 不绑定套接字,因此该会话无法接收消息,不出现在代理列表中。245Claude Code 会像交互式会话一样为 [`claude -p`](/docs/zh-CN/headless) 会话绑定收件箱套接字,因此长期运行的 `-p` 工作进程可以接收消息并出现在列表中。当您在 [bare 模式](/docs/zh-CN/headless#start-faster-with-bare-mode)下启动会话时,Claude Code 不会绑定套接字,因此该会话无法接收消息,也不会出现在 Agent 列表中。

242 246 

243`-p` 会话无法显示批准对话。当[入站默认](#control-inbound-messages)在那里保留消息时,Claude Code 为相同的 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 截止日期保留它,对话使用的默认值为五分钟:247`-p` 会话无法显示批准对话框。当[入站默认行为](#control-inbound-messages)在此类会话中保留消息时,Claude Code 会将其保留到对话框所使用的相同 [`dialogExpiry`](/docs/zh-CN/settings-reference#dialogexpiry) 截止时间,默认为五分钟:

244 248 

245* **在截止日期之前**:如果模式或设置更改允许消息,Claude Code 传递它。249* **截止时间之前**:如果模式或设置的更改允许该消息,Claude Code 会传递它。

246* **在截止日期之后**:Claude Code 删除消息并向它可以到达的发送者报告它已过期。250* **截止时间之后**:Claude Code 会丢弃该消息,并向其能够联系到的发送者报告该消息已过期。

247 251 

248设置 `dialogExpiry` 为 `"never"` 以保留默认保留的消息直到会话结束。由显式 `hold` 设置保留的消息不过期;Claude Code 仅当稍后应用 `accept` 时才传递它。252将 `dialogExpiry` 设置为 `"never"` 可将默认保留的消息保留到会话结束。由显式 `hold` 设置保留的消息不会过期;仅当之后适用 `accept` 时,Claude Code 才会传递它。

249 253 

250要让 `-p` 工作者无人值守地接收消息,使用 `crossSessionInbound` 设置为 `accept` 在其 `--settings` 值中启动它。您的用户设置中的 `accept` 也有效,但适用于您运行的每个会话。254要让 `-p` 工作进程在无人值守的情况下接收消息,请在其 `--settings` 值中将 `crossSessionInbound` 设置为 `accept` 来启动它。在您的用户设置中设置 `accept` 也有效,但会应用于您运行的每个会话。

251 255 

252<h3 id="the-sessions-inbox-socket">256<h3 id="the-sessions-inbox-socket">

253 会话的收件箱套接字257 会话的收件箱套接字

254</h3>258</h3>

255 259 

256当您期望的会话不在代理列表中时,当您想要脚本或钩子发布到会话中时,或当沙箱命令无法到达套接字时,阅读本部分。260当您预期的会话不在 Agent 列表中、当您希望脚本或 hook 向会话发布消息,或者当沙箱中的命令无法访问套接字时,请阅读本节。

257 261 

258Claude Code 为启用跨会话消息传递的每个会话绑定收件箱套接字,同一机器上的其他会话在其中传递消息。套接字是 macOS 和 Linux 上的 Unix 域套接字,包括 WSL 2 内的 Linux,以及原生 Windows 上的命名管道。对于哪些会话类型绑定一个,请参阅[非交互式会话](#non-interactive-sessions)。262Claude Code 会为每个启用了跨会话消息传递的会话绑定一个收件箱套接字,同一机器上的其他会话通过它传递消息。在 macOS 和 Linux(包括 WSL 2 内的 Linux)上,该套接字是 Unix 域套接字;在原生 Windows 上则是命名管道。关于哪些类型的会话会绑定套接字,请参阅[非交互式会话](#non-interactive-sessions)。

259 263 

260您可以在两个地方找到套接字的路径:264您可以在两个地方找到套接字的路径:

261 265 

262* `/status` 在 `Peer address` 行中显示它。路径以 `uds:` 为前缀。266* `/status` 在 `Peer address` 行中显示它。路径以 `uds:` 为前缀。

263* Claude Code 将其导出到[钩子](/docs/zh-CN/hooks)和 Bash 命令作为 [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/zh-CN/env-vars#variables) 环境变量:267* Claude Code 会将其作为 [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/zh-CN/env-vars#variables) 环境变量导出给 [hook](/docs/zh-CN/hooks) 和 Bash 命令:

264 * 在以消息传递启动的会话中,Claude Code 在任何钩子运行之前导出变量,包括 `SessionStart`。268 * 在启动时即开启消息传递的会话中,Claude Code 会在任何 hook 运行之前导出该变量,包括 `SessionStart`。

265 269 

266在 macOS 和 Linux 上,Claude Code 将套接字限制为您的操作系统用户。在原生 Windows 上,它改为要求每个连接首先使用只有您的操作系统用户可以读取的密钥进行身份验证。无论哪种方式,在共享机器上,另一个用户的会话无法传递给它。270在 macOS 和 Linux 上,Claude Code 将套接字限制为仅供您的操作系统用户使用。在原生 Windows 上,它改为要求每个连接首先使用只有您的操作系统用户才能读取的密钥进行身份验证。无论哪种方式,在共享机器上,其他用户的会话都无法向其传递消息。

267 271 

268在 macOS 和 Linux 上,Claude Code 也拒绝在它无法接受的目录中创建套接字,例如另一个用户拥有的目录,并改为使用私有的每用户目录 `/tmp/cc-socks-<uid>`。当它无法接受任何目录时,会话运行而没有收件箱:Claude Code 显示通知,`/status` 在其 `Peer address` 行中显示 `unavailable` 和原因,[`--debug`](/docs/zh-CN/cli-reference#cli-flags) 日志记录完整拒绝。272在 macOS 和 Linux 上,Claude Code 还会拒绝在它无法接受的目录(例如由其他用户拥有的目录)中创建套接字,而是改用私有的每用户目录 `/tmp/cc-socks-<uid>`。当它无法接受任何目录时,会话将在没有收件箱的情况下运行:Claude Code 显示通知,`/status` 在其 `Peer address` 行中显示 `unavailable` 及原因,[`--debug`](/docs/zh-CN/cli-reference#cli-flags) 日志会记录完整的拒绝信息。

269 273 

270除了套接字的路径,Claude Code 导出每个会话令牌作为 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-CN/env-vars#variables)。发布到自己会话的套接字的脚本可以发送 `{"type":"auth","token":"<token>"}` 作为其连接的第一行,其中 `<token>` 是 `CLAUDE_CODE_MESSAGING_TOKEN` 的值。Claude Code 是否需要该行取决于平台:274除了套接字的路径,Claude Code 还会将每个会话的令牌导出为 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-CN/env-vars#variables)。向其自身会话的套接字发布消息的脚本可以将 `{"type":"auth","token":"<token>"}` 作为其连接的第一行发送,其中 `<token>` 是 `CLAUDE_CODE_MESSAGING_TOKEN` 的值。Claude Code 是否要求该行取决于平台:

271 275 

272* **macOS 和 Linux,包括 WSL 2**:该行是可选的。Claude Code 接受有或没有它的连接。276* **macOS 和 Linux,包括 WSL 2**:该行是可选的。无论是否包含该行,Claude Code 都会接受连接。

273* **原生 Windows**:该行是必需的。Claude Code 关闭任何第一行不是有效身份验证行的连接,不从该连接传递任何内容。277* **原生 Windows**:该行是必需的。Claude Code 会关闭第一行不是有效身份验证行的任何连接,并且不会传递来自该连接的任何内容。

274 278 

275仅在您发布的消息准备好时打开连接。Claude Code 关闭在 30 秒内未发送完整行的连接,因此首先捕获慢速命令的输出,然后打开连接以发送它。279仅在您要发布的消息准备就绪时才打开连接。Claude Code 会关闭在 30 秒内未发送完整一行的连接,因此请先捕获慢速命令的输出,然后再打开连接发送它。

276 280 

277<span id="own-child-messages" />Claude Code 通过套接字上到达的消息运行与任何其他对等消息相同的[入站控制](#control-inbound-messages),有一个例外和一个先决条件:281<span id="own-child-messages" />对于通过套接字到达的消息,Claude Code 会应用与任何其他对等消息相同的[入站控制](#control-inbound-messages),但有一个例外和一个前提条件:

278 282 

279* **自己的子消息**:当没有 `crossSessionInbound` 值适用时,Claude Code 传递它验证来自会话自己的子进程的消息,如钩子或 Bash 命令发布回自己会话的套接字。283* **自身子进程的消息**:当没有 `crossSessionInbound` 值适用时,Claude Code 会传递经其验证来自会话自身子进程的消息,例如 hook 或 Bash 命令向其自身会话的套接字回发的消息。

280 * 在 Linux 上,包括 WSL 2 内,Claude Code 可以通过进程证据验证,即使对于已经退出的子进程。在 macOS 上,它只能在发布进程仍在运行时通过这种方式验证,在 Claude Code 作为进程 ID 1 运行的容器中,它根本没有进程证据。在原生 Windows 上它也没有。284 * 在 Linux 上(包括 WSL 2 内),即使子进程已经退出,Claude Code 也可以通过进程证据进行验证。在 macOS 上,它只能在发布进程仍在运行时以这种方式验证;而在 Claude Code 以进程 ID 1 运行的容器中,它完全没有进程证据。在原生 Windows 上它也没有进程证据。

281 * 在 macOS 上发布进程已退出后,在 Claude Code 作为进程 ID 1 运行的容器中,该进程证据丢失,Claude Code 改为验证发送会话导出的 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-CN/env-vars#variables) 在打开其连接的身份验证行中的子进程。在原生 Windows 上,该令牌是 Claude Code 验证自己的子消息的唯一方式。285 * 在 macOS 上发布进程退出之后,以及在 Claude Code 以进程 ID 1 运行的容器中,该进程证据缺失,Claude Code 改为验证在打开其连接的身份验证行中发送了会话所导出的 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-CN/env-vars#variables) 的子进程。在原生 Windows 上,该令牌是 Claude Code 验证自身子进程消息的唯一方式。

282 * 当 Claude Code 无法以任何方式验证时,它将消息视为任何其他声称没有权限类的消息,因此绕过权限提示的会话为您的批准保留它。286 * 当 Claude Code 无法通过任何一种方式验证时,它会像对待任何其他未声明权限类别的消息一样对待该消息,因此绕过权限提示的会话会保留它以等待您的批准。

283* **沙箱会话**:使用沙箱的 Unix 套接字设置 [`sandbox.network.allowAllUnixSockets` 和 `sandbox.network.allowUnixSockets`](/docs/zh-CN/settings-reference#sandbox-settings) 控制 Bash 命令是否可以从[沙箱](/docs/zh-CN/sandboxing)内到达套接字。287* **沙箱中的会话**:使用沙箱的 Unix 套接字设置 [`sandbox.network.allowAllUnixSockets` 和 `sandbox.network.allowUnixSockets`](/docs/zh-CN/settings-reference#sandbox-settings) 控制 Bash 命令能否从[沙箱](/docs/zh-CN/sandboxing)内部访问套接字。

284 288 

285<h2 id="restrict-cross-session-messaging">289<h2 id="restrict-cross-session-messaging">

286 限制跨会话消息传递290 限制跨会话消息传递

env-vars.md +356 −354

Details

124 变量124 变量

125</h2>125</h2>

126 126 

127数值变量(如超时、令牌预算和重试次数)除了接受纯数字外,还接受科学记数法和数字分隔符拼写,除非变量的行注明仅接受纯数字。例如,Claude Code 将 `2e3` 读作 2000,将 `64_000` 读作 64000。在 v2.1.211 之前,这些拼写可能会无声地设置一个更小的值,例如 `1e6` 将超时设置为 1。127超时时间、token 预算和重试次数等数值变量除了接受普通数字外,还接受科学记数法和数字分隔符写法,除非某个变量所在行注明它仅接受普通数字。例如,Claude Code 将 `2e3` 读取为 2000,将 `64_000` 读取为 64000。在 v2.1.211 之前,这些写法可能会在没有任何提示的情况下设置一个小得多的值,例如 `1e6` 会将超时时间设置为 1。

128 128 

129<Note>129<Note>

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

131 131 

132 某些变量仅读取您是否设置了它们,因此任何非空值(包括 `0`)都会打开该行为,而通过取消设置变量或将其设置为空值来关闭该行为。这些变量的工作方式如下:132 有些变量只读取您是否设置了它们,因此任何非空值(包括 `0`)都会开启该行为;要关闭该行为,需取消设置该变量或将其设置为空值。以下变量按这种方式工作:

133 133 

134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

135 * `DISABLE_TELEMETRY`135 * `DISABLE_TELEMETRY`


138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`

139 * `IS_DEMO`139 * `IS_DEMO`

140 140 

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

142</Note>142</Note>

143 143 

144| 变量 | 目的 |144| 变量 | 用途 |

145| :- | :- |145| :- | :- |

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

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

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

149| `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) 解析区域 |149| `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)解析区域 |

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

151| `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 上的行为相匹配 |151| `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 上的行为一致 |

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

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

154| `ANTHROPIC_BEDROCK_REGION_PREFIX` | 跨区域推理配置文件前缀(`us`、`eu`、`apac`、`jp`、`au` 或 `global`)Claude Code 首先尝试而不是从 AWS 区域派生的前缀。在 AWS GovCloud 区域中被忽略。需要 Claude Code v2.1.224 或更高版本。参见 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock#cross-region-inference-profile-prefixes) |154| `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) |

155| `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) |155| `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) |

156| `ANTHROPIC_BETAS` | 逗号分隔的附加 `anthropic-beta` 标头值列表,包含在 API 请求中。Claude Code 已发送其需要的测试版标头;在 Claude Code 添加原生支持之前,使用此选项加入 [Anthropic API 测试版](https://platform.claude.com/docs/en/api/beta-headers)。与 [`--betas` 标志](/docs/zh-CN/cli-reference#cli-flags) 不同,后者需要 API 密钥身份验证,此变量适用于所有身份验证方法,包括 Claude.ai 订阅 |156| `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 订阅 |

157| `ANTHROPIC_CUSTOM_HEADERS` | 要添加到请求的自定义标头(`Name: Value` 格式,多个标头用换行符分隔)。如果名称或值包含 HTTP 标头无法携带的字符(如弯引号或零宽空格),请求将失败并显示按位置标识该对的错误。需要 Claude Code v2.1.227 或更高版本。[无效的请求标头值](/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) |157| `ANTHROPIC_CUSTOM_HEADERS` | 要添加到请求中的自定义标头(`Name: Value` 格式,多个标头以换行分隔)。如果名称或值包含 HTTP 标头无法承载的字符,例如弯引号或零宽空格,请求将失败,并显示一条按位置标识该名称/值对的错误。需要 Claude Code v2.1.227 或更高版本。[无效的请求标头值](/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) |

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

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

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

161| `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) |161| `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) |

162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | `fable` 别名解析为的模型 ID,以及 Claude Code 识别为 Fable 模型的 ID,用于第三方提供商上的 [自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback)。参见 [模型配置](/docs/zh-CN/model-config#environment-variables) |162| `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) |

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

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

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | 逗号分隔的 [功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) 列表,固定 Fable 模型支持,例如 `effort,thinking`。参见 [模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |165| `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) |

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

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

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

169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | 逗号分隔的 [功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) 列表,固定 Haiku 模型支持,例如 `effort,thinking`。参见 [模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |169| `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) |

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

171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | `opus` 别名解析为的模型 ID,以及 Plan Mode 活跃时 `opusplan` 使用的模型 ID。参见 [模型配置](/docs/zh-CN/model-config#environment-variables) |171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | `opus` 别名解析到的模型 ID,也是计划模式处于活动状态时 `opusplan` 使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

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

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

174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | 逗号分隔的 [功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) 列表,固定 Opus 模型支持,例如 `effort,thinking`。参见 [模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |174| `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) |

175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | `sonnet` 别名解析为的模型 ID,以及 Plan Mode 不活跃时 `opusplan` 使用的模型 ID。参见 [模型配置](/docs/zh-CN/model-config#environment-variables) |175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | `sonnet` 别名解析到的模型 ID,也是计划模式未处于活动状态时 `opusplan` 使用的模型 ID。请参阅[模型配置](/docs/zh-CN/model-config#environment-variables) |

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

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

178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | 逗号分隔的 [功能](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) 列表,固定 Sonnet 模型支持,例如 `effort,thinking`。参见 [模型配置](/docs/zh-CN/model-config#customize-pinned-model-display-and-capabilities) |178| `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) |

179| `ANTHROPIC_FEDERATION_RULE_ID` | [工作负载身份联合](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的联合规则 ID。当您将其与 `ANTHROPIC_ORGANIZATION_ID` 一起设置时,Claude Code 选择联合凭证,其排名高于您的 `/login` 凭证。参见 [身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |179| `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) |

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

181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Microsoft Foundry 身份验证的持有者令牌,例如 Microsoft Entra 访问令牌。Claude Code 将其作为 `Authorization: Bearer` 标头发送。优先于 `ANTHROPIC_FOUNDRY_API_KEY` 和 Azure 默认凭证链。参见 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry)。需要 Claude Code v2.1.203 或更高版本 |181| `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 或更高版本 |

182| `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)) |182| `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)) |

183| `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)) |183| `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)) |

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

185| `ANTHROPIC_ORGANIZATION_ID` | [工作负载身份联合](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的组织 ID。与 `ANTHROPIC_FEDERATION_RULE_ID` 一起设置。参见 [身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |185| `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) |

186| `ANTHROPIC_PROFILE` | 要使用的 Anthropic 配置文件的名称,例如由 [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) 创建的或通过 [在没有 API 密钥的情况下登录控制台帐户](/docs/zh-CN/authentication#sign-in-without-an-api-key)。参见 [身份验证优先级](/docs/zh-CN/authentication#authentication-precedence) |186| `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) |

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

188| `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) 上运行后台任务 |188| `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)运行后台任务 |

189| `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) |189| `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) |

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

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

192| `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`,也会中止长时间的无声暂停 |192| `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`,它们也会中止长时间的静默暂停 |

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

194| `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/)) |194| `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/)) |

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

196| `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) |196| `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) |

197| `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 或更高版本 |197| `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 或更高版本 |

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

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

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

201| `CLAUDE_AFK_COUNTDOWN_MS` | 在自动继续之前,屏幕上的倒计时出现在未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框上的毫秒数。默认 `20000`(20 秒),上限为自动继续超时。除非自动继续打开,否则无效;参见 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置和 `CLAUDE_AFK_TIMEOUT_MS`。需要 Claude Code v2.1.198 或更高版本 |201| `CLAUDE_AFK_COUNTDOWN_MS` | 在未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框自动继续之前多少毫秒显示屏幕倒计时。默认 `20000`(20 秒),上限为自动继续超时时间。除非开启了自动继续,否则无效;请参阅 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 设置和 `CLAUDE_AFK_TIMEOUT_MS`。需要 Claude Code v2.1.198 或更高版本 |

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

203| `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) |203| `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) |

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

205| `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 会中止子代理并向父级报告停滞 |205| `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 会中止该子代理并向父级报告停滞 |

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

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

208| `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 或更高版本 |208| `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 或更高版本 |

209| `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 或更高版本 |209| `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 或更高版本 |

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

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

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

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

214| `CLAUDE_CODE_ACCESSIBILITY` | 设置为 `1` 以保持本机终端光标可见并禁用反向文本光标指示器。允许 macOS Zoom 等屏幕放大镜跟踪光标位置 |214| `CLAUDE_CODE_ACCESSIBILITY` | 设置为 `1` 可保持原生终端光标可见,并禁用反色文本光标指示器。使 macOS 缩放等屏幕放大器能够跟踪光标位置 |

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

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

217| `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)仍被排除,因此请求不会失败 |217| `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)仍会被排除,以免请求失败 |

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

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

220| `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 或更高版本 |220| `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 或更高版本 |

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

222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 设置为 `0` 以从系统提示的开头省略 [归属块](/docs/zh-CN/llm-gateway-protocol#system-prompt-attribution-block),该块携带客户端版本和提示指纹。直接连接到 Anthropic API 的缓存无论如何都不受影响。在某些直接连接设置中,Claude Code 即使您设置 `0`,也会在 [自动模式](/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 连接上包含每个请求令牌,因此在这些版本上,当您的 LLM 网关在请求正文上缓存或将请求转发给第三方提供商,或当您直接连接到 Microsoft Foundry 时,将其设置为 `0` |222| `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` |

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 启用 `CLAUDE_AUTO_BACKGROUND_TASKS` 时,提醒 Claude 检查仍在运行的 [后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background) 之间的秒数。仅接受 `1` 到 `86400` 的纯整数;任何其他值或拼写读作未设置。未设置时,没有检查提醒。需要 Claude Code v2.1.248 或更高版本 |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 当启用 `CLAUDE_AUTO_BACKGROUND_TASKS` 时,提醒 Claude 检查仍在运行的[后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)的间隔秒数。仅接受 `1` 到 `86400` 之间的普通整数;任何其他值或写法都视为未设置。未设置时,不会发出检查提醒。需要 Claude Code v2.1.248 或更高版本 |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 设置 [自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window)(令牌),从 `100000` 到 `1000000`。仅接受纯整数(如 `500000`):像 `500k` 这样的值读作 `500` 并限制在 100K 最小值。有效窗口也上限为模型的上下文窗口。优先于 `/autocompact` 命令、`--autocompact` 标志和 `autoCompactWindow` 设置。状态行的 `used_percentage` 始终针对模型的完整上下文窗口进行测量,因此一旦设置此变量,该百分比不再指示何时压缩将运行 |224| `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` 始终以模型的完整上下文窗口为基准进行衡量,因此一旦设置了此变量,该百分比将不再指示何时运行压缩 |

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

226| `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 或更高版本 |226| `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 或更高版本 |

227| `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` 等包装器进行基于浏览器的 SSO 登录(带 MFA)。适用于 Claude Code 使用默认链签名的任何地方:[Amazon Bedrock](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。需要 Claude Code v2.1.207 或更高版本 |227| `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 登录),请调高此值。适用于 Claude Code 使用默认链签名的所有场景:[Amazon Bedrock](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。需要 Claude Code v2.1.207 或更高版本 |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | 设置为 `0` 以关闭 [Bash 命令运行时更改的文件的差异](/docs/zh-CN/hooks#bash),或 `1` 以在每个权限模式中记录它。优先于 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置。需要 Claude Code v2.1.269 或更高版本 |228| `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 或更高版本 |

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

230| `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` |230| `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` |

231| `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。在 Windows 终端中设置 `0`,其中 [Backspace 删除整个单词](/docs/zh-CN/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |231| `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` |

232| `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` |232| `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` |

233| `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 启动子进程时由 Claude Code 本身设置,而不是由 IDE 扩展设置,因此它可靠地将嵌套会话与在 IDE 集成终端中启动的顶级 `claude` 区分开来。以这种方式启动的嵌套交互式 `claude` TUI 自动从 `--resume`、`--continue`、向上箭头历史和 `claude agents` 列表中排除。非交互式 `claude -p` 会话仍然持续。设置 `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` 以覆盖此排除。需要 Claude Code v2.1.172 或更高版本 |233| `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 或更高版本 |

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

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

236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密 CLAUDE\_CODE\_CLIENT\_KEY 的密码(可选) |236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密的 CLAUDE\_CODE\_CLIENT\_KEY 的密码(可选) |

237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 在 v2.1.186 中删除,现在是无操作。以前为流式 API 请求的连接、TLS 和响应标头阶段设置单独的超时。使用 `API_TIMEOUT_MS` 获取每个请求的超时。对于流式请求的响应标头阶段,参见 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 已在 v2.1.186 中移除,现在不起任何作用。之前用于为流式 API 请求的连接、TLS 和响应标头阶段设置单独的超时时间。请使用 `API_TIMEOUT_MS` 设置每个请求的超时时间。对于流式请求的响应标头阶段,请参阅 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

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

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

240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 以禁用 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context) 支持。设置时,1M 模型变体在模型选择器中不可用,Claude Code 将具有本机 1M 窗口的模型上的会话(如 [Sonnet 5.5](/docs/zh-CN/model-config#sonnet-5-5-and-sonnet-5-context-window) 和 Fable 模型)保持在 200K 窗口;参见 [扩展上下文](/docs/zh-CN/model-config#extended-context) 了解如何强制执行保持。对于具有合规要求的企业环境很有用。对于其在纠正无法识别的 `[1m]` 模型 ID 的窗口中的作用,参见 [纠正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 可禁用 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context)支持。设置后,1M 模型变体在模型选择器中不可用,并且Claude Code 会将使用原生 1M 窗口的模型(例如 [Sonnet 5.5](/docs/zh-CN/model-config#sonnet-5-5-and-sonnet-5-context-window) 和 Fable 模型)上的会话限制在 200K 窗口;有关如何强制执行此限制,请参阅[扩展上下文](/docs/zh-CN/model-config#extended-context)。适用于有合规要求的企业环境。关于它在为无法识别的 `[1m]` 模型 ID 修正窗口方面的作用,请参阅[为网关或自定义模型 ID 修正窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

241| `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 及更高版本或 Opus 4.7 及更高版本无效,它们始终使用自适应推理 |241| `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 及更高版本或 Opus 4.7 及更高版本无效,这些模型始终使用自适应推理 |

242| `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 或更高版本 |242| `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 或更高版本 |

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

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

245| `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` 切换。不适用于从 [代理视图](/docs/zh-CN/agent-view) 打开的后台会话,它们始终使用全屏呈现 |245| `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)打开的后台会话,这些会话始终使用全屏渲染 |

246| `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) 密钥也会关闭它 |246| `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) 键也可以将其关闭 |

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 设置为 `1` 以禁用附件处理。带有 `@` 语法的文件提及作为纯文本发送,而不是扩展为文件内容 |247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 设置为 `1` 可禁用附件处理。使用 `@` 语法的文件提及将作为纯文本发送,而不会展开为文件内容 |

248| `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 或更高版本 |248| `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 或更高版本 |

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

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

251| `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 或更高版本 |251| `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 或更高版本 |

252| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | 设置为 `1` 以跳过检查 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 流式响应是否携带 `application/vnd.amazon.eventstream` 内容类型。没有此变量,当响应携带不同的内容类型时,Claude Code 会因命名该类型的错误而失败请求,这意味着 [网关或代理正在转换响应](/docs/zh-CN/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy)。配置网关以转发 `Content-Type` 标头和正文未修改,而不是设置此变量。需要 Claude Code v2.1.208 或更高版本 |252| `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 或更高版本 |

253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 以在 [主管](/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 或更高版本 |253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 可在[监管进程](/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 或更高版本 |

254| `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 没有内存压力信号,因此此变量在那里无效。需要 Claude Code v2.1.193 或更高版本 |254| `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 没有内存压力信号,因此此变量在该平台上无效。需要 Claude Code v2.1.193 或更高版本 |

255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | 设置为 `1` 以禁用 Claude Code 包含的 [skills](/docs/zh-CN/skills) 和工作流:捆绑的 skills 和工作流被完全删除,而内置命令(如 `/init`)保持可输入但对模型隐藏。`/doctor` 保持可输入,如内置命令;使用 `DISABLE_DOCTOR_COMMAND` 隐藏它。来自插件、`.claude/skills/` 和 `.claude/commands/` 的 Skills 不受影响。等同于 [`disableBundledSkills`](/docs/zh-CN/settings-reference#disablebundledskills) 设置 |255| `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) 设置 |

256| `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 或更高版本 |256| `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 或更高版本 |

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

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

259| `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 或更高版本 |259| `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 或更高版本 |

260| `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 仍会发送的内容 |260| `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 仍会发送的内容 |

261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | 设置为 `1` 以禁用内置 [Explore 和 Plan 子代理](/docs/zh-CN/sub-agents#built-in-subagents)。Claude 使用其搜索工具或通用子代理进行探索,[plan 模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode) 直接读取文件而不是启动 Explore 和 Plan 代理。名为 `Explore` 或 `Plan` 的自定义子代理不受影响。要在 Agent SDK 或非交互模式中删除每个内置子代理类型,请改用 `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`。需要 Claude Code v2.1.198 或更高版本 |261| `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 或更高版本 |

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

263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | 设置为 `1` 以禁用"Claude 表现如何?"会话质量调查。当设置 `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) |263| `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) |

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

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

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

267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | 设置为 `1` 以停止 Claude Code 在 [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) 上在您的帐户在会话中途失去对会话模型的访问权限时切换到较旧的模型;拒绝的请求立即失败。您配置的 [回退模型链](/docs/zh-CN/model-config#fallback-model-chains) 仍在该拒绝时切换,[启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks) 仍在启动时回退。需要 Claude Code v2.1.285 或更高版本 |267| `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 或更高版本 |

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

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

270| `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 或更高版本 |270| `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 或更高版本 |

271| `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),它有自己的选择加入 |271| `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),后者有自己的选择加入方式 |

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

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

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

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

276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 设置为 `1` 以跳过从系统范围的托管 skills 目录加载 skills。对于不应加载操作员配置的 skills 的容器或 CI 会话很有用 |276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 设置为 `1` 可跳过从系统范围的托管 skill 目录加载 skill。适用于不应加载运维人员预置 skill 的容器或 CI 会话 |

277| `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 或更高版本 |277| `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 或更高版本 |

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

279| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 设置为 `1` 以禁用基于对话上下文的自动终端标题更新。这也跳过生成 [会话标题](/docs/zh-CN/sessions#name-your-sessions) 的后台小/快速模型请求 |279| `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 或更高版本 |

280| `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 或 Fable 模型上关闭思考,这些模型无法关闭思考。在 [第三方提供商](/docs/zh-CN/third-party-integrations) 上,`MAX_THINKING_TOKENS=0` 同样省略参数,因此两个变量在那里的行为相同 |280| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 设置为 `1` 可禁用基于对话上下文的自动终端标题更新。这也会跳过用于[生成会话标题](/docs/zh-CN/sessions#name-your-sessions)的后台小型/快速模型请求 |

281| `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 或更高版本 |281| `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 或 Fable 模型上关闭思考,因为这些模型的思考无法关闭。在[第三方提供商](/docs/zh-CN/third-party-integrations)上,`MAX_THINKING_TOKENS=0` 同样会省略该参数,因此这两个变量在那里的行为相同 |

282| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 设置为 `1` 以在 [全屏呈现](/docs/zh-CN/fullscreen) 中禁用虚拟滚动并呈现成绩单中的每条消息。如果全屏模式中的滚动显示应显示消息的空白区域,请使用此选项 |282| `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 或更高版本 |

283| `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 或更高版本 |283| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 设置为 `1` 可在[全屏渲染](/docs/zh-CN/fullscreen)中禁用虚拟滚动并渲染会话记录中的每条消息。如果在全屏模式下滚动时,本应显示消息的位置出现空白区域,请使用此选项 |

284| `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 或更高版本 |284| `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 或更高版本 |

285| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 以禁用 [工作流](/docs/zh-CN/workflows#turn-workflows-off)。等同于 [`disableWorkflows`](/docs/zh-CN/settings-reference#disableworkflows) 设置 |285| `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 或更高版本 |

286| `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) |286| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 可禁用[工作流](/docs/zh-CN/workflows#turn-workflows-off)。等同于 [`disableWorkflows`](/docs/zh-CN/settings-reference#disableworkflows) 设置 |

287| `CLAUDE_CODE_ENABLE_AUTO_MODE` | 为了与较旧版本兼容而接受,无效。自动模式在每个提供商上默认可用,包括 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 和已登录的 [Claude 应用网关](/docs/zh-CN/claude-apps-gateway) 会话。在 v2.1.158 到 v2.1.206 中,设置此项为 `1` 是在这些提供商上使 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 可用所必需的 |287| `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) |

288| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆盖 [会话回顾](/docs/zh-CN/interactive-mode#session-recap) 可用性。设置为 `0` 以强制关闭回顾,无论 `/config` 切换如何。设置为 `1` 以在 [`awaySummaryEnabled`](/docs/zh-CN/settings-reference#awaysummaryenabled) 为 `false` 时强制打开回顾。优先于设置和 `/config` 切换 |288| `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) |

289| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 设置为 `1` 以在后台安装完成后在 [非交互模式](/docs/zh-CN/headless) 中的转向边界处刷新插件状态。默认关闭,因为刷新在会话中途更改系统提示,这会使该转向的 [提示缓存](/docs/zh-CN/prompt-caching) 失效 |289| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆盖[会话回顾](/docs/zh-CN/interactive-mode#session-recap)的可用性。设置为 `0` 可强制关闭回顾,无论 `/config` 开关如何设置。设置为 `1` 可在 [`awaySummaryEnabled`](/docs/zh-CN/settings-reference#awaysummaryenabled) 为 `false` 时强制开启回顾。优先于该设置和 `/config` 开关 |

290| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | 设置为 `1` 以在 Anthropic 绑定的非必要流量被阻止时将"Claude 表现如何?"会话质量调查路由到您自己的 [OpenTelemetry 收集器](/docs/zh-CN/monitoring-usage)。调查评级仅作为 OTEL 事件发出到您配置的收集器。在此模式下,没有调查数据发送到 Anthropic。当设置 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时适用,否则无效。`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 和组织产品反馈政策优先 |290| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 设置为 `1` 可在[非交互模式](/docs/zh-CN/headless)下,于后台安装完成后在轮次边界刷新插件状态。默认关闭,因为刷新会在会话中途更改系统提示词,从而使该轮次的[提示缓存](/docs/zh-CN/prompt-caching)失效 |

291| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具调用输入是否在 API 生成时从 API 流式传输。关闭此选项时,大型工具输入(如长文件写入)仅在 Claude 完成生成后到达,这可能看起来像它挂起了。在 Anthropic API 上默认启用。在 Amazon Bedrock 和 Google Cloud's Agent Platform 上,在部署的容器支持的每个模型上启用。设置为 `0` 以选择退出。设置为 `1` 以在通过 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 通过代理路由时强制打开。在 Microsoft Foundry 和 [网关](/docs/zh-CN/llm-gateway) 连接上默认关闭 |291| `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` 和组织产品反馈策略优先 |

292| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 设置为 `1` 以在 `ANTHROPIC_BASE_URL` 指向 Anthropic 兼容网关(如 LiteLLM、Kong 或内部代理)时从您网关的 `/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) |292| `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)连接上默认关闭 |

293| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 在 v2.1.142 中删除,当 [快速模式](/docs/zh-CN/fast-mode) 默认从 Opus 4.6 移至 Opus 4.7 时 |293| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 设置为 `1` 可在 `ANTHROPIC_BASE_URL` 指向与 Anthropic 兼容的网关(例如 LiteLLM、Kong 或内部代理)时,从网关的 `/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) |

294| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 设置为 `false` 以关闭提示建议,即在您的提示输入中出现的灰显预测。优先于 [`promptSuggestionEnabled`](/docs/zh-CN/settings-reference#promptsuggestionenabled) 设置,这是 `/config` 中的 **提示建议** 切换写入的内容。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) |294| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 已在 v2.1.142 中移除,当时[快速模式](/docs/zh-CN/fast-mode)的默认模型从 Opus 4.6 改为 Opus 4.7 |

295| `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) |295| `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) |

296| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 以启用指标和日志记录的 OpenTelemetry 数据收集。在配置 OTel 导出器之前需要。在您的 shell、用户设置或托管设置中设置它。在 [项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env) 中被忽略。参见 [监控](/docs/zh-CN/monitoring-usage) |296| `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) |

297| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | 设置为 `1` 以在每个模型上获取任务跟踪工具。没有它,Claude Code 仅在 [任务工具可用性](/docs/zh-CN/tools-reference#task-tool-availability) 下列出的模型上默认提供它们。`CLAUDE_CODE_ENABLE_TASKS` 仍选择 Task 工具或 `TodoWrite`。需要 Claude Code v2.1.233 或更高版本 |297| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 可为指标和日志启用 OpenTelemetry 数据收集。配置 OTel 导出器之前必须设置。请在 shell、用户设置或托管设置中设置。在[项目设置和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage) |

298| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查询循环变为空闲后自动退出之前等待的时间(毫秒)。对于使用 SDK 模式的自动化工作流和脚本很有用 |298| `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 或更高版本 |

299| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 设置为 `1` 以启用 [代理团队](/docs/zh-CN/agent-teams)。代理团队是实验性的,默认禁用 |299| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 查询循环变为空闲后,自动退出前等待的时间(毫秒)。适用于使用 SDK 模式的自动化工作流和脚本 |

300| `CLAUDE_CODE_EXTRA_BODY` | JSON 对象,合并到每个 API 请求正文的顶级。对于传递 Claude Code 不直接公开的提供商特定参数很有用。在您的 shell 中导出的值也适用于您使用 `claude agents` 或 `--bg` 分派的 [后台会话](/docs/zh-CN/agent-view)。在 v2.1.206 之前,后台会话忽略了 shell 导出的值,并使用了后台主管进程继承的任何副本 |300| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 设置为 `1` 可启用 [agent team](/docs/zh-CN/agent-teams)。agent team 为实验性功能,默认禁用 |

301| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆盖文件读取的默认令牌限制。当您需要完整读取较大文件时很有用 |301| `CLAUDE_CODE_EXTRA_BODY` | 要合并到每个 API 请求体顶层的 JSON 对象。适用于传递 Claude Code 未直接公开的特定于提供商的参数。在 shell 中导出的值也适用于您通过 `claude agents` 或 `--bg` 派发的[后台会话](/docs/zh-CN/agent-view)。在 v2.1.206 之前,后台会话会忽略 shell 导出的值,而使用后台监管进程所继承的任意副本 |

302| `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 无效,其中它覆盖的嵌套会话检测被删除 |302| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆盖文件读取的默认 token 限制。当您需要完整读取较大文件时很有用 |

303| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 设置为 `1` 以在您的终端支持但未自动检测时强制 `~~text~~` 的删除线呈现,例如通过 SSH 而不转发 `TERM_PROGRAM`。没有这个,未检测到的终端显示文字 `~~` 标记而不是将文本呈现为删除线。需要 Claude Code v2.1.186 或更高版本 |303| `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 中无效,因为这两个版本移除了它所覆盖的嵌套会话检测 |

304| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 设置为 `1` 以在您的终端支持但未自动检测时强制启用 DEC 私有模式 2026 [同步输出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。对于实现 BSU/ESU 但不回复功能探针的模拟器(如 Emacs `eat`)很有用。在 tmux 下无效。与 `CLAUDE_CODE_NO_FLICKER` 不同,后者切换到 [全屏呈现](/docs/zh-CN/fullscreen),这不会改变渲染器 |304| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 设置为 `1` 可在终端支持删除线但未被自动检测到时(例如通过 SSH 且未转发 `TERM_PROGRAM`),强制将 Claude 回复中的 `~~text~~` 渲染为删除线。否则,未被检测到的终端会显示字面的 `~~` 标记,而不是将文本渲染为删除线。需要 Claude Code v2.1.186 或更高版本 |

305| `CLAUDE_CODE_FORK_SUBAGENT` | 控制 [fork 模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off),它让 Claude 生成 [forked 子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation) 本身,在交互式会话中默认打开。设置为 `1` 以在 `claude -p` 和 Agent SDK 中也打开它,或 `0` 以在每种会话中关闭它。无论 fork 模式是否打开,您都可以运行 `/subtask`。交互式默认值需要 Claude Code v2.1.232 或更高版本;在早期版本上,设置变量为 `1` 以打开 fork 模式 |305| `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` 不同,此变量不会更改渲染器 |

306| `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 或更高版本 |306| `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` 以开启分叉模式 |

307| `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` 以停止在每个连接上发送它们,包括 Claude Code 默认发送它们的直接 Anthropic API 连接。需要 Claude Code v2.1.273 或更高版本 |307| `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) 标志相同。当某个 harness 调用 `claude` 且无法自行传递该标志时,请使用此变量。该标志在使用 stream-json 输出的非交互模式之外会报错退出,而此变量在这些场景下会被忽略,因此在进程范围内设置该变量时,嵌套调用仍能正常工作。需要 Claude Code v2.1.211 或更高版本 |

308| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | [网关模型发现](/docs/zh-CN/llm-gateway-protocol#model-discovery) 请求的超时时间(毫秒),`CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` 打开(默认值:`3000`)。当您的网关需要超过三秒来回答启动时的 `/v1/models` 时增加此值。仅接受纯数字;`0`、负值和其他拼写保持默认值。需要 Claude Code v2.1.269 或更高版本 |308| `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 或更高版本 |

309| `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) |309| `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 或更高版本 |

310| `CLAUDE_CODE_GLOB_HIDDEN` | 设置为 `false` 以在 Claude 调用 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior) 时从结果中排除点文件。默认包含。不影响 `@` 文件自动完成、`ls`、Grep 或 Read |310| `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) |

311| `CLAUDE_CODE_GLOB_NO_IGNORE` | 设置为 `false` 以使 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior) 尊重 `.gitignore` 模式。默认情况下,Glob 返回所有匹配的文件,包括 gitignored 的文件。不影响 `@` 文件自动完成,它有自己的 [`respectGitignore` 设置](/docs/zh-CN/settings-reference#respectgitignore) |311| `CLAUDE_CODE_GLOB_HIDDEN` | 设置为 `false` 可在 Claude 调用 [Glob 工具](/docs/zh-CN/tools-reference#glob-tool-behavior)时从结果中排除点文件。默认包含。不影响 `@` 文件自动补全、`ls`、Grep 或 Read |

312| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 工具文件发现的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上为 60 秒 |312| `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) |

313| `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 或更高版本 |313| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 工具文件发现的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上默认为 60 秒 |

314| `CLAUDE_CODE_HIDE_CWD` | 设置为 `1` 以在启动徽标中隐藏工作目录。对于屏幕共享或录制,其中路径暴露您的 OS 用户名很有用 |314| `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 或更高版本 |

315| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆盖用于连接到 IDE 扩展的主机地址。默认情况下,Claude Code 自动检测正确的地址,包括 WSL 到 Windows 路由 |315| `CLAUDE_CODE_HIDE_CWD` | 设置为 `1` 可在启动徽标中隐藏工作目录。适用于屏幕共享或录屏等路径会暴露您操作系统用户名的场景 |

316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 以跳过 IDE 扩展的自动安装。等同于将 [`autoInstallIdeExtension`](/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |316| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | 覆盖用于连接 IDE 扩展的主机地址。默认情况下,Claude Code 会自动检测正确的地址,包括 WSL 到 Windows 的路由 |

317| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 设置为 `1` 以在连接期间跳过 IDE 锁定文件条目的验证。当自动连接无法找到您的 IDE 尽管它正在运行时使用 |317| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 可跳过 IDE 扩展的自动安装。等同于将 [`autoInstallIdeExtension`](/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |

318| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 在 Agent 工具拒绝生成另一个之前,一个会话中可以运行多少 [子代理](/docs/zh-CN/sub-agents#concurrent-subagent-limit)(默认值:20)。接受纯数字的正整数;其他任何东西都被忽略,因此变量可以调整上限但不能禁用它。需要 Claude Code v2.1.217 或更高版本 |318| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 设置为 `1` 可在连接期间跳过对 IDE 锁文件条目的验证。当 IDE 正在运行但自动连接仍找不到它时使用 |

319| `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` 路由到其上下文窗口与其名称的内置大小不匹配的模型时使用此选项 |319| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | 一个会话中可同时运行的[子代理](/docs/zh-CN/sub-agents#concurrent-subagent-limit)数量,达到后 Agent 工具将拒绝再生成新的子代理(默认:20)。接受以纯数字表示的正整数;其他任何值都会被忽略,因此该变量可以调整上限,但无法禁用上限。需要 Claude Code v2.1.217 或更高版本 |

320| `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 或更高版本 |320| `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` 路由到某个模型,而该模型的上下文窗口与其名称对应的内置大小不一致时使用 |

321| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 为大多数请求设置最大输出令牌数。默认值和上限因模型而异;参见 [最大输出令牌](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) 触发之前可用的有效上下文窗口 |321| `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 或更高版本 |

322| `CLAUDE_CODE_MAX_RETRIES` | 覆盖重试失败 API 请求的次数(默认值:10)。从 v2.1.186 开始上限为 15;从 v2.1.199 开始,`CLAUDE_CODE_RETRY_WATCHDOG` 提高默认值并删除上限。对于需要等待更长中断的无人值守会话,改为设置 `CLAUDE_CODE_RETRY_WATCHDOG` |322| `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)之前可用的有效上下文窗口 |

323| `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) 仍然适用 |323| `CLAUDE_CODE_MAX_RETRIES` | 覆盖失败 API 请求的重试次数(默认:10)。从 v2.1.186 起上限为 15;从 v2.1.199 起,`CLAUDE_CODE_RETRY_WATCHDOG` 会提高默认值并移除上限。对于需要在较长中断期间持续等待的无人值守会话,请改为设置 `CLAUDE_CODE_RETRY_WATCHDOG` |

324| `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 或更高版本 |324| `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)仍然适用 |

325| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可以并行执行的只读工具和子代理的最大数量(默认值:10)。较高的值增加并行性但消耗更多资源 |325| `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 或更高版本 |

326| `CLAUDE_CODE_MAX_TURNS` | 当没有传递显式限制时,限制代理转向的数量。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),当两者都设置时优先。不是正整数的值在启动时被拒绝并出现错误,而不是视为无上限 |326| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可并行执行的只读工具和子代理的最大数量(默认:10)。较高的值会提高并行度,但会消耗更多资源 |

327| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | 一个会话可以进行的 [WebSearch](/docs/zh-CN/tools-reference#websearch-tool-behavior) 调用总数的上限(默认值:200)。当 Claude 达到上限时,进一步的 WebSearch 调用返回通知,告诉它继续使用已收集的信息。接受没有上限的正整数。其他任何东西都被忽略,默认值适用,因此上限可以提高但不能关闭。需要 Claude Code v2.1.212 或更高版本 |327| `CLAUDE_CODE_MAX_TURNS` | 在未传递显式限制时限制 agentic 轮次数。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),两者都设置时后者优先。非正整数的值会在启动时被拒绝并报错,而不会被视为无上限 |

328| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 以使用仅安全基线环境加上服务器的配置 `env` 生成 stdio MCP 服务器,而不是继承您的 shell 环境 |328| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | 一个会话可进行的 [WebSearch](/docs/zh-CN/tools-reference#websearch-tool-behavior) 调用总数上限(默认:200)。当 Claude 达到上限时,后续 WebSearch 调用会返回一条通知,告诉它使用已收集的信息继续。接受没有上界的正整数。其他任何值都会被忽略并使用默认值,因此该上限可以提高但无法关闭。需要 Claude Code v2.1.212 或更高版本 |

329| `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 或更高版本 |329| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 可使用仅包含安全基线环境加上服务器所配置 `env` 的环境来启动 stdio MCP 服务器,而不是继承您的 shell 环境 |

330| `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 或更高版本 |330| `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 或更高版本 |

331| `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 服务器免除空闲超时 |331| `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 或更高版本 |

332| `CLAUDE_CODE_MESSAGING_SOCKET` | 由 Claude Code 设置,不由您设置:在绑定 [收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket) 的会话中,Claude Code 在绑定套接字时将该套接字的路径导出到 hooks 和 Bash 命令。在以启用消息传递开始的会话中,Claude Code 在任何 hook 运行之前绑定套接字。机器上的其他会话将消息传递到此路径。每个会话导出其自己的套接字而不是从父级继承的套接字,到达它的消息通过会话的 [入站控制](/docs/zh-CN/cross-session-messaging#control-inbound-messages) 进行。设置 `env` 块无法设置它。需要 Claude Code v2.1.224 或更高版本 |332| `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` 中按服务器设置的 `timeout` 若至少为 1000,会将该服务器的空闲窗口提高到至少为该 `timeout` 值。不适用于 IDE 服务器或 SDK 进程内服务器。需要 Claude Code v2.1.187 或更高版本。在 v2.1.203 之前,stdio 服务器不受空闲超时限制 |

333| `CLAUDE_CODE_MESSAGING_TOKEN` | 由 Claude Code 设置,不由您设置:在绑定 [收件箱套接字](/docs/zh-CN/cross-session-messaging#the-sessions-inbox-socket) 的会话中,Claude Code 将此每个会话令牌与 `CLAUDE_CODE_MESSAGING_SOCKET` 一起导出到 hooks 和 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 或更高版本 |333| `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 或更高版本 |

334| `CLAUDE_CODE_NATIVE_CURSOR` | 设置为 `1` 以在输入插入符处显示终端自己的光标,而不是绘制的块。光标尊重终端的闪烁、形状和焦点设置 |334| `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 或更高版本 |

335| `CLAUDE_CODE_NEW_INIT` | 设置为 `1` 以使 `/init` 运行交互式设置流程。流程询问要生成哪些文件,包括 CLAUDE.md、skills 和 hooks,然后探索代码库并写入它们。没有此变量,`/init` 自动生成 CLAUDE.md 而不提示 |335| `CLAUDE_CODE_NATIVE_CURSOR` | 设置为 `1` 可在输入插入点显示终端自身的光标,而不是绘制的方块。该光标会遵循终端的闪烁、形状和焦点设置 |

336| `CLAUDE_CODE_NONBLOCKING_STDOUT` | 设置为 `1` 以通过第二个非阻塞文件描述符写入终端输出,因此停止读取的终端(如暂停的 tmux 控制模式窗格或停滞的 SSH 连接)无法在会话中途冻结 Claude Code。在 macOS、Linux 和 WSL 上应用,当 stdout 是终端时。需要 Claude Code v2.1.261 或更高版本 |336| `CLAUDE_CODE_NEW_INIT` | 设置为 `1` 可让 `/init` 运行交互式设置流程。该流程会在探索代码库并写入文件之前,询问要生成哪些文件,包括 CLAUDE.md、skill 和 hook。未设置此变量时,`/init` 会自动生成 CLAUDE.md,而不进行询问 |

337| `CLAUDE_CODE_NO_FLICKER` | 设置为 `1` 以启用 [全屏呈现](/docs/zh-CN/fullscreen),一个减少闪烁并在长对话中保持内存平坦的研究预览。覆盖 [`tui`](/docs/zh-CN/settings-reference#tui) 设置;您也可以使用 `/tui fullscreen` 切换 |337| `CLAUDE_CODE_NONBLOCKING_STDOUT` | 设置为 `1` 可通过第二个非阻塞文件描述符写入终端输出,这样停止读取的终端(例如已暂停的 tmux 控制模式窗格或卡住的 SSH 连接)就无法在会话中途冻结 Claude Code。在 stdout 为终端时,适用于 macOS、Linux 和 WSL。需要 Claude Code v2.1.261 或更高版本 |

338| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Claude.ai 身份验证的 OAuth 刷新令牌。设置时,`claude auth login` 直接交换此令牌而不是打开浏览器。需要 `CLAUDE_CODE_OAUTH_SCOPES`。对于在自动化环境中配置身份验证很有用 |338| `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES` | 限制 Claude Code 重新发送超时的[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)的次数。设置为 `0` 时,请求在第一次超时时即失败。默认未设置,因此由 `CLAUDE_CODE_MAX_RETRIES` 限制这些重新发送。有关超时时间,请参阅[调整重试行为](/docs/zh-CN/errors#tune-retry-behavior)。需要 Claude Code v2.1.285 或更高版本 |

339| `CLAUDE_CODE_OAUTH_SCOPES` | 刷新令牌颁发的空格分隔 OAuth 范围,例如 `"user:profile user:inference user:sessions:claude_code"`。设置 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 时为必需 |339| `CLAUDE_CODE_NO_FLICKER` | 设置为 `1` 可启用[全屏渲染](/docs/zh-CN/fullscreen),这是一项研究预览功能,可减少闪烁并在长对话中保持内存占用平稳。覆盖 [`tui`](/docs/zh-CN/settings-reference#tui) 设置;您也可以使用 `/tui fullscreen` 进行切换 |

340| `CLAUDE_CODE_OAUTH_TOKEN` | claude.ai 身份验证的 OAuth 访问令牌。`/login` 对于 SDK 和自动化环境的替代方案。优先于钥匙串存储的凭证。使用 [`claude setup-token`](/docs/zh-CN/authentication#generate-a-long-lived-token) 生成一个。除非您运行 [`/login`](/docs/zh-CN/authentication#authentication-precedence),Claude Code 为整个会话使用您设置的令牌。要替换过期的令牌,生成一个新令牌并重启 |340| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | 用于 Claude.ai 身份验证的 OAuth 刷新令牌。设置后,`claude auth login` 会直接交换此令牌,而不是打开浏览器。需要 `CLAUDE_CODE_OAUTH_SCOPES`。适用于在自动化环境中预配身份验证 |

341| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | 在 v2.1.160 中删除,现在是无操作。以前将 [快速模式](/docs/zh-CN/fast-mode) 固定到 Claude Opus 4.6 而不是当前默认值。Opus 4.6 不再支持快速模式 |341| `CLAUDE_CODE_OAUTH_SCOPES` | 签发刷新令牌时使用的 OAuth 作用域,以空格分隔,例如 `"user:profile user:inference user:sessions:claude_code"`。设置 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 时必需 |

342| `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) |342| `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 会在整个会话中使用您设置的令牌。要替换过期的令牌,请生成新令牌并重新启动 |

343| `CLAUDE_CODE_OTEL_DIAG_STDERR` | 设置为 `1` 以将 OpenTelemetry 导出器诊断错误写入 stderr。默认情况下,这些错误仅与 `--debug` 一起出现,因此配置错误的导出器(如 Prometheus 端口冲突)否则会无声地失败。需要 Claude Code v2.1.179 或更高版本。参见 [监控](/docs/zh-CN/monitoring-usage) |343| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | 已在 v2.1.160 中移除,现在不起作用。此前用于将[快速模式](/docs/zh-CN/fast-mode)固定到 Claude Opus 4.6,而不是当前默认模型。Opus 4.6 不再支持快速模式 |

344| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待处理 OpenTelemetry 跨度的超时时间(毫秒)(默认值:5000)。参见 [监控](/docs/zh-CN/monitoring-usage) |344| `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) |

345| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态 OpenTelemetry 标头的间隔(毫秒)(默认值:1740000 / 29 分钟)。参见 [动态标头](/docs/zh-CN/monitoring-usage#dynamic-headers) |345| `CLAUDE_CODE_OTEL_DIAG_STDERR` | 设置为 `1` 可将 OpenTelemetry 导出器诊断错误写入 stderr。默认情况下,这些错误仅在使用 `--debug` 时显示,因此配置错误的导出器(例如 Prometheus 端口冲突)否则会静默失败。需要 Claude Code v2.1.179 或更高版本。请参阅[监控](/docs/zh-CN/monitoring-usage) |

346| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 导出器在关闭时完成的超时时间(毫秒)(默认值:2000)。如果指标在退出时被删除,请增加。参见 [监控](/docs/zh-CN/monitoring-usage) |346| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待处理 OpenTelemetry span 的超时时间(毫秒)(默认:5000)。请参阅[监控](/docs/zh-CN/monitoring-usage) |

347| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 设置为 `1` 以让 Claude Code 在新版本可用时在后台运行您的包管理器的升级命令。适用于 Homebrew 和 WinGet 安装。其他包管理器继续显示升级命令而不运行它。参见 [自动更新](/docs/zh-CN/setup#auto-updates) |347| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态 OpenTelemetry 标头的间隔(毫秒)(默认:1740000 / 29 分钟)。请参阅[动态标头](/docs/zh-CN/monitoring-usage#dynamic-headers) |

348| `CLAUDE_CODE_PERFORCE_MODE` | 设置为 `1` 以启用 Perforce 感知写入保护。设置时,如果目标文件缺少所有者写入位(Perforce 在同步文件上清除,直到 `p4 edit` 打开它们),Edit、Write 和 NotebookEdit 会失败并显示 `p4 edit <file>` 提示。这可以防止 Claude Code 绕过 Perforce 更改跟踪 |348| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 导出器在关闭时完成工作的超时时间(毫秒)(默认:2000)。如果退出时指标丢失,请调高此值。请参阅[监控](/docs/zh-CN/monitoring-usage) |

349| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆盖插件根目录。尽管名称如此,这设置了父目录,而不是缓存本身:市场和插件缓存位于此路径下的子目录中。默认为 `~/.claude/plugins` |349| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 设置为 `1` 可让 Claude Code 在有新版本可用时在后台运行您的包管理器的升级命令。适用于 Homebrew 和 WinGet 安装。其他包管理器仍会显示升级命令而不运行它。请参阅[自动更新](/docs/zh-CN/setup#auto-updates) |

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

351| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 克隆或刷新插件市场的超时时间(毫秒)(默认值:120000)。对于大型存储库或缓慢网络连接,增加此值。参见 [Git 克隆在 120 秒后超时](/docs/zh-CN/plugins/troubleshooting#git-clone-timed-out-after-120s) |351| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 覆盖插件根目录。尽管名称如此,此变量设置的是父目录,而不是缓存本身:市场和插件缓存位于此路径下的子目录中。默认为 `~/.claude/plugins` |

352| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 设置为 `1` 以在市场刷新无法到达或验证远程时跳过重新克隆尝试并继续使用现有市场检出。在离线或隔离环境中很有用,其中重新克隆会以相同方式失败。参见 [市场更新在离线环境中继续失败](/docs/zh-CN/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |352| `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) |

353| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 设置为 `1` 以通过 HTTPS 而不是 SSH 克隆 GitHub `owner/repo` 速记源。适用于插件安装和更新,以及 `/plugin marketplace add` 和 `update`。在 CI 运行器、容器或任何没有为 `github.com` 配置 SSH 密钥的环境中很有用 |353| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 克隆或刷新插件市场的超时时间(毫秒)(默认:120000)。对于大型仓库或较慢的网络连接,请调高此值。请参阅 [Git clone timed out](/docs/zh-CN/plugins/troubleshooting#git-clone-timed-out-after-120s) |

354| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一个或多个只读插件种子目录的路径,在 Unix 上用 `:` 分隔,在 Windows 上用 `;` 分隔。使用此选项将预填充的插件目录捆绑到容器镜像中。Claude Code 在启动时从这些目录注册市场,并使用预缓存的插件而不重新克隆。参见 [为容器预填充插件](/docs/zh-CN/plugins/org#seed-containers-and-ci) |354| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 设置为 `1` 可在市场刷新无法访问远程仓库或无法通过其身份验证时,跳过重新克隆尝试并继续使用现有的市场检出。适用于离线或气隙环境,在这些环境中重新克隆也会以相同方式失败。请参阅[市场更新在离线环境中失败](/docs/zh-CN/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

355| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 设置为 `1` 以停止 Claude Code 在为工具调用、hooks 和状态行命令生成 PowerShell 时传递 `-ExecutionPolicy Bypass`,并改为尊重机器的有效执行策略。默认情况下,Claude Code 在进程范围内绕过执行策略,以便 `.ps1` 脚本和模块导入在默认受限的 Windows 安装上工作。进程范围绕过无论此设置如何都永远不会覆盖 Group Policy `MachinePolicy` 或 `UserPolicy` |355| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 设置为 `1` 可通过 HTTPS 而非 SSH 克隆 GitHub `owner/repo` 简写来源。适用于插件安装和更新,以及 `/plugin marketplace add` 和 `update`。适用于 CI 运行器、容器或任何未为 `github.com` 配置 SSH 密钥的环境 |

356| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | 在 [非交互模式](/docs/zh-CN/headless#background-tasks-at-exit) 中使用 `-p` 标志后,在最后一个转向后等待后台子代理和工作流的空闲等待的上限(毫秒)。每次 Claude 采取转向处理后台结果时,空闲等待重新开始。默认值:`600000`,或 10 分钟。当空闲等待达到上限时,Claude Code 停止等待剩余的后台任务并退出。设置为 `0` 以无限期等待。此上限与适用于纯后台 shell 的五秒宽限期分开。需要 Claude Code v2.1.182 或更高版本 |356| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一个或多个只读插件种子目录的路径,在 Unix 上以 `:` 分隔,在 Windows 上以 `;` 分隔。可用于将预填充的插件目录打包到容器镜像中。Claude Code 会在启动时从这些目录注册市场,并使用预缓存的插件而无需重新克隆。请参阅[为容器预填充插件](/docs/zh-CN/plugins/org#seed-containers-and-ci) |

357| `CLAUDE_CODE_PROCESS_WRAPPER` | 通过给定为 argv 前缀(如 `/opt/corp/launcher`)的企业启动器启动 Claude Code 从其自己的二进制文件启动的进程,例如托管 [代理视图](/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 或更高版本 |357| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 设置为 `1` 可阻止 Claude Code 在为工具调用、hook 和状态栏命令启动 PowerShell 时传递 `-ExecutionPolicy Bypass`,转而遵循计算机的有效执行策略。默认情况下,Claude Code 会在进程作用域绕过执行策略,以便 `.ps1` 脚本和模块导入能够在默认策略为 Restricted 的 Windows 安装上正常工作。无论此设置如何,进程作用域的绕过都绝不会覆盖组策略 `MachinePolicy` 或 `UserPolicy` |

358| `CLAUDE_CODE_PROJECT_DIR_NAME` | 与 `CLAUDE_CONFIG_DIR` 一起设置以选择 `projects/` 目录名称 Claude Code 在其下存储该会话的成绩单和自动内存,代替从工作目录路径派生的名称。例如,使用 `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 或更高版本 |358| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | 在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless#background-tasks-at-exit)下,最后一轮结束后空闲等待后台子代理和工作流的上限时间(毫秒)。每当 Claude 为处理后台结果而进行一轮时,空闲等待会重新计时。默认:`600000`,即 10 分钟。当空闲等待达到上限时,Claude Code 会停止等待剩余的后台任务并退出。设置为 `0` 可无限期等待。此上限与适用于普通后台 shell 的五秒宽限期相互独立。需要 Claude Code v2.1.182 或更高版本 |

359| `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 或更高版本 |359| `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 或更高版本 |

360| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | 设置为 `1` 以在 `ANTHROPIC_BASE_URL` 指向自定义代理时传播 W3C 跟踪上下文。传播涵盖模型和 HTTP MCP 请求上的 `traceparent` 标头以及 Bash、PowerShell 和 hook 子进程的 `TRACEPARENT` 环境变量。默认情况下,传播仅在直接连接到 Anthropic API 时启用。在 v2.1.152 中添加。参见 [跟踪(测试版)](/docs/zh-CN/monitoring-usage#traces-beta) |360| `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 或更高版本 |

361| `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) |361| `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 或更高版本 |

362| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 设置为 `1` 以允许代理执行 DNS 解析而不是调用者。对于代理应处理主机名解析的环境选择加入 |362| `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) |

363| `CLAUDE_CODE_REMOTE` | 当 Claude Code 作为 [云会话](/docs/zh-CN/claude-code-on-the-web) 运行时自动设置为 `true`。从 hook 或设置脚本读取此项以检测您是否在云会话中 |363| `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) |

364| `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) |364| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 设置为 `1` 可允许由代理而非调用方执行 DNS 解析。适用于应由代理处理主机名解析的环境,需主动启用 |

365| `CLAUDE_CODE_RESTRICTED` | 设置为 `1` 以在受限模式下启动会话,与传递 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 相同。Claude Code 在设置文件的 `env` 块中忽略此变量。需要 Claude Code v2.1.248 或更高版本 |365| `CLAUDE_CODE_REMOTE` | 当 Claude Code 作为[云端会话](/docs/zh-CN/claude-code-on-the-web)运行时自动设置为 `true`。可在 hook 或设置脚本中读取此变量,以检测您是否处于云端会话中 |

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

367| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 最后成绩单消息的最大年龄(毫秒),用于在中途结束的会话在恢复时继续自动。当最后一条消息比此界限更旧时,Claude Code 跳过 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 自动恢复及其 `CLAUDE_CODE_RESUME_PROMPT` 继续消息,会话启动空闲,以便您显式继续。未设置或 `0` 意味着没有界限,除了最后一个请求因 API 错误失败的转向仅在该错误少于六小时时恢复。正值界限每个转向,包括那些;负值或非数值值应用一小时界限。长时间运行的代理的生成脚本可以设置此项,以便针对旧成绩单的重启不会重新运行陈旧的提示。Claude Code 在重启继承其对话的崩溃 [代理视图](/docs/zh-CN/agent-view) 会话时自己设置一小时界限。需要 Claude Code v2.1.211 或更高版本 |367| `CLAUDE_CODE_RESTRICTED` | 设置为 `1` 可在受限模式下启动会话,与传递 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 相同。Claude Code 会忽略设置文件 `env` 块中的此变量。需要 Claude Code v2.1.248 或更高版本 |

368| `CLAUDE_CODE_RESUME_PROMPT` | 覆盖当 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 继续中断的转向而不是重新发送其提示时,或当您使用 `-p` 恢复 [延迟的工具调用](/docs/zh-CN/hooks#defer-a-tool-call-for-later) 时,Claude Code 发送给 Claude 的继续消息。默认为 `Continue from where you left off.`。空字符串使用默认值 |368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 设置为 `1` 可在上一个会话于轮次中途结束时自动恢复。在 SDK 模式下使用,使模型无需 SDK 重新发送提示词即可继续。要关闭此功能,请取消设置该变量或将其设置为 `0`。有关 VS Code 聊天面板,请参阅[重新加载后继续对话](/docs/zh-CN/vs-code#continue-conversations-after-a-reload) |

369| `CLAUDE_CODE_RETRY_WATCHDOG` | 对于无人值守的会话(如 eval 工具、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 或更高版本 |369| `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 或更高版本 |

370| `CLAUDE_CODE_SAFE_MODE` | 设置为 `1` 以在安全模式下启动:CLAUDE.md、skills、插件、hooks、MCP 服务器、自定义命令和代理、输出样式、工作流、自定义主题、自定义快捷键、状态行和文件建议命令、LSP 服务器和自动内存不加载,用于排除故障的破损配置。托管设置策略仍然适用,包括策略配置的 hooks、状态行和文件建议命令;托管插件、托管 skills、托管 CLAUDE.md 和策略配置的 MCP 服务器不适用。等同于传递 [`--safe-mode`](/docs/zh-CN/cli-reference#cli-flags)。直接生成的子进程继承变量 |370| `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.`。空字符串会使用默认值 |

371| `CLAUDE_CODE_SCRIPT_CAPS` | JSON 对象,限制当设置 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 时特定脚本在每个会话中可能被调用的次数。密钥是与命令文本匹配的子字符串;值是整数调用限制。例如,`{"deploy.sh": 2}` 允许 `deploy.sh` 最多被调用两次。匹配是基于子字符串的,因此 shell 扩展技巧(如 `./scripts/deploy.sh $(evil)`)仍然计入上限。通过 `xargs` 或 `find -exec` 的运行时扇出未被检测到;这是深度防御控制 |371| `CLAUDE_CODE_RETRY_WATCHDOG` | 对于无人值守的会话(例如评估 harness、CI 作业或远程 worker),请设置为 `1`。无限期重试 `429` 和 `529` 容量错误,而不是在 `CLAUDE_CODE_MAX_RETRIES` 次尝试后失败。当标准速度请求收到报告支出限制或使用额度耗尽的 `429` 时,即使它来自按计划重置的[网关支出上限](/docs/zh-CN/errors#spend-limit-reached),Claude Code 也会立即失败。在 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 或更高版本 |

372| `CLAUDE_CODE_SCROLL_SPEED` | 在 [全屏呈现](/docs/zh-CN/fullscreen#mouse-wheel-scrolling) 中设置鼠标滚轮滚动乘数。接受任何正值最多 20,包括低于 1 的分数值(如 `0.5`)以减慢已加速的触控板和滚轮滚动在已放大滚轮事件的终端中。设置为 `3` 以匹配 `vim`(如果您的终端每个凹口发送一个滚轮事件而不放大)。在 JetBrains IDE 终端中被忽略,Claude Code 使用其自己的滚动处理 |372| `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)。直接生成的子进程会继承该变量 |

373| `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` 值)仍然适用 |373| `CLAUDE_CODE_SCRIPT_CAPS` | 在设置了 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 时,用于限制特定脚本在每个会话中可被调用次数的 JSON 对象。键是与命令文本进行匹配的子字符串;值是整数调用次数限制。例如,`{"deploy.sh": 2}` 允许 `deploy.sh` 最多被调用两次。匹配基于子字符串,因此像 `./scripts/deploy.sh $(evil)` 这样的 shell 展开技巧仍会计入上限。不会检测通过 `xargs` 或 `find -exec` 进行的运行时扇出;这是一项纵深防御控制 |

374| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆盖 [SessionEnd](/docs/zh-CN/hooks#sessionend) hooks 的时间预算(毫秒)。该值也是未设置自己 `timeout` 的每个 hook 的超时。适用于会话退出、`/clear` 和通过交互式 `/resume` 切换会话。默认情况下,预算为 1.5 秒,自动提高到设置文件中配置的最高每个 hook `timeout`,最多 60 秒。插件提供的 hooks 上的超时不会提高预算 |374| `CLAUDE_CODE_SCROLL_SPEED` | 设置[全屏渲染](/docs/zh-CN/fullscreen#mouse-wheel-scrolling)中的鼠标滚轮滚动倍数。接受不超过 20 的任何正值,包括低于 1 的小数值(例如 `0.5`),用于在已经放大滚轮事件的终端中减慢加速的触控板和滚轮滚动。如果您的终端每个刻度只发送一个滚轮事件且不做放大,设置为 `3` 可与 `vim` 保持一致。在 JetBrains IDE 终端中会被忽略,因为 Claude Code 在该终端中使用自己的滚动处理 |

375| `CLAUDE_CODE_SESSION_ID` | 在 Bash 和 PowerShell 工具子进程、[hook 命令](/docs/zh-CN/hooks) 子进程和 stdio [MCP 服务器](/docs/zh-CN/mcp) 子进程中自动设置为当前会话 ID。对于 Bash、PowerShell 和 hooks,这与 hook JSON 输入中的 `session_id` 字段匹配,并在 `/clear` 上更新。MCP 服务器子进程保留它生成时的 ID。在 `--resume <session-id>` 上,它接收恢复的 ID,与 hooks 和 Bash 匹配。在 `--continue` 或 `--resume` 没有显式 ID 时,它可能接收初始启动 ID。用于将脚本和外部工具与启动它们的 Claude Code 会话相关联 |375| `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` 值)仍然适用 |

376| `CLAUDE_CODE_SHELL` | 设置 Claude Code 用于运行 Bash 工具命令的 shell。接受 `bash` 或 `zsh` 二进制文件的路径,例如 `/opt/homebrew/bin/bash`。不支持 `fish` 等其他 shell。如果值不是工作的 `bash` 或 `zsh` 路径,Claude Code 忽略它并回退到自动检测。自动检测在指向 `bash` 或 `zsh` 时使用您的 `$SHELL`,否则它选择在您的 `PATH` 和标准安装位置上找到的第一个工作 `zsh` 然后 `bash` |376| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆盖 [SessionEnd](/docs/zh-CN/hooks#sessionend) hook 的时间预算(毫秒)。该值也是每个未设置自身 `timeout` 的 hook 的超时时间。适用于会话退出、`/clear` 以及通过交互式 `/resume` 切换会话。默认情况下预算为 1.5 秒,并会自动提高到设置文件中配置的单个 hook 最高 `timeout`,最多 60 秒。插件提供的 hook 上的超时时间不会提高预算 |

377| `CLAUDE_CODE_SHELL_PREFIX` | 包装 Claude Code 生成的 shell 命令的命令前缀:Bash 工具调用、[hook](/docs/zh-CN/hooks) 命令、[状态行](/docs/zh-CN/statusline) 命令和 stdio [MCP 服务器](/docs/zh-CN/mcp) 启动命令。PowerShell hooks 和 exec 形式 hooks 运行而不带前缀。对于日志记录或审计很有用。设置裸可执行文件路径(如 `/path/to/logger.sh`)将每个命令作为 `/path/to/logger.sh '<command>'` 运行。包装器在 `$1` 中接收命令行作为单个 shell 引用的参数,因此包装器必须使用 shell 重新评估 `$1`,例如 `exec bash -c "$1"`。将 `$1` 视为裸可执行文件路径会破坏传递参数的 stdio MCP 服务器,例如 `npx -y <package>`。对于 Bash 工具调用,`$1` 包含 Claude Code 组装的完整 shell 调用,包括环境设置,而不仅仅是 Claude 运行的命令 |377| `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 会话关联起来 |

378| `CLAUDE_CODE_SIMPLE` | 设置为 `1` 以使用最小系统提示和仅 Bash、文件读取和文件编辑工具运行。来自 `--mcp-config` 的 MCP 工具仍然可用。禁用 hooks、skills、自定义命令、子代理、已安装插件、MCP 服务器、自动内存和 CLAUDE.md 的自动发现。您使用 `--add-dir` 传递的目录中的 Skills 仍然加载。OAuth 令牌和钥匙串凭证未读取,因此 Anthropic 身份验证必须来自 `ANTHROPIC_API_KEY` 或 `--settings` 中的 `apiKeyHelper`。等同于传递 [`--bare`](/docs/zh-CN/headless#start-faster-with-bare-mode) |378| `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` |

379| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 设置为 `1` 以在任何模型上使用较短的系统提示和缩写的工具描述。设置为 `0`、`false`、`no` 或 `off` 以选择退出,即使在实验或服务器配置会启用它的模型上。完整的工具集、hooks、MCP 服务器和 CLAUDE.md 发现保持启用 |379| `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 运行的命令 |

380| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳过 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的客户端身份验证,用于自己签署请求的网关 |380| `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) |

381| `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 或更高版本 |381| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 设置为 `1` 可在任何模型上使用更短的系统提示词和简化的工具描述。设置为 `0`、`false`、`no` 或 `off` 可选择退出,即使在实验或服务器配置原本会启用它的模型上也是如此。完整的工具集、hook、MCP 服务器和 CLAUDE.md 发现仍保持启用 |

382| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | 跳过 Amazon Bedrock 的 AWS 身份验证(例如,使用 LLM 网关时) |382| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳过 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 的客户端身份验证,适用于自行对请求签名的网关 |

383| `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 仍然尊重"您的组织禁用了快速模式"响应 |383| `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 或更高版本 |

384| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 设置为 `1` 以跳过客户端 [快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) 可用性检查,用于拦截检查请求而不是拒绝它的代理。当您的组织禁用快速模式时,API 仍然拒绝快速模式请求 |384| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | 跳过 Amazon Bedrock 的 AWS 身份验证(例如使用 LLM 网关时) |

385| `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 密钥 |385| `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”响应 |

386| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳过 Amazon Bedrock Mantle 的 AWS 身份验证(例如,使用 LLM 网关时) |386| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 设置为 `1` 可跳过客户端[快速模式](/docs/zh-CN/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways)可用性检查,适用于会拦截而非拒绝该检查请求的代理。当您的组织禁用了快速模式时,API 仍会拒绝快速模式请求 |

387| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [启动模型检查](/docs/zh-CN/amazon-bedrock#startup-model-checks) 在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 和 [Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai) 上记住在此机器上哪些模型他们发现您的帐户无法调用,最多一天。设置为 `1` 以关闭该内存。需要 Claude Code v2.1.285 或更高版本 |387| `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 客户端无法发送请求 |

388| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | 设置为 `1` 以跳过将提示历史和会话成绩单写入磁盘。使用此变量启动的会话不出现在 `--resume`、`--continue` 或向上箭头历史中。对于临时脚本会话很有用 |388| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳过 Amazon Bedrock Mantle 的 AWS 身份验证(例如使用 LLM 网关时) |

389| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | 跳过 Google Cloud's Agent Platform 的 Google 身份验证(例如,使用 LLM 网关时) |389| `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 或更高版本 |

390| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | 设置为 `1` 以使用 `--output-format stream-json` 启动的会话为启动失败写入 [结果消息,说明 Claude Code 为什么拒绝启动](/docs/zh-CN/agent-sdk/typescript#startup_failure_reason),否则仅以 stderr 结束。需要 Claude Code v2.1.274 或更高版本 |390| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | 设置为 `1` 可跳过将提示词历史记录和会话记录写入磁盘。设置此变量后启动的会话不会出现在 `--resume`、`--continue` 或向上箭头历史记录中。适用于临时的脚本化会话 |

391| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | [Stop](/docs/zh-CN/hooks#stop) 或 [SubagentStop](/docs/zh-CN/hooks#subagentstop) hook 可能在 Claude Code 覆盖它并结束转向之前阻止转向结束的最大连续次数(默认值:8)。设置为 `0` 以禁用上限。如果您的 hook 合理需要更多迭代来解决,请提高此值 |391| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | 跳过 Google Cloud's Agent Platform 的 Google 身份验证(例如使用 LLM 网关时) |

392| `CLAUDE_CODE_SUBAGENT_MODEL` | [子代理](/docs/zh-CN/sub-agents#choose-a-model)、[代理团队](/docs/zh-CN/agent-teams#specify-teammates-and-models) 队友和 [工作流](/docs/zh-CN/workflows) 代理的默认模型,这些代理未以其他方式分配模型。接受别名(如 `haiku`)或完整模型名称。两个源优先于它:Claude 生成代理时传递的模型,以及代理定义中的 `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` 字段 |392| `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 或更高版本 |

393| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | 设置为 `1` 以强制一个模型到子代理、队友和工作流代理。[在一个模型上运行每个子代理](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model) 说明那是哪个模型。需要 Claude Code v2.1.257 或更高版本 |393| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | [Stop](/docs/zh-CN/hooks#stop) 或 [SubagentStop](/docs/zh-CN/hooks#subagentstop) hook 可连续阻止轮次结束的最大次数,超过后 Claude Code 会覆盖它并强制结束该轮次(默认:8)。设置为 `0` 可禁用此上限。如果您的 hook 确实需要更多次迭代才能完成,请调高此值 |

394| `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 或更高版本 |394| `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` 字段 |

395| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 设置为 `1` 以从子进程环境中删除凭证(Bash 工具、hooks、MCP stdio 服务器):Anthropic 和云提供商凭证、Claude Code 识别为凭证的任何其他变量,以及嵌入在包注册表 URL 中的凭证。父 Claude 进程为 API 调用保留这些凭证,但子进程无法读取它们,减少了试图通过 shell 扩展窃取秘密的提示注入攻击的暴露。在 v2.1.251 或更高版本上,清理也删除 Claude Code 自己的配置存储指针变量(如 `CLAUDE_CONFIG_DIR`),因此子进程无法定位重定位的配置目录。如果子进程需要这些变量,请保留清理未设置。在 Linux 上,这也在隔离的 PID 命名空间中运行 Bash 子进程,因此它们无法通过 `/proc` 读取主机进程环境;作为副作用,`ps`、`pgrep` 和 `kill` 无法看到或信号主机进程。当配置 `allowed_non_write_users` 时,`claude-code-action` 自动设置此项 |395| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | 设置为 `1` 可将同一个模型强制应用于子代理、队友和工作流 Agent。[在同一模型上运行所有子代理](/docs/zh-CN/sub-agents#run-every-subagent-on-one-model)说明了具体是哪个模型。需要 Claude Code v2.1.257 或更高版本 |

396| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非交互模式(`-p` 标志)中设置为 `1` 以等待插件安装完成,然后第一个查询。没有这个,插件在后台安装,可能在第一个转向上不可用。与 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 结合以界定等待 |396| `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 或更高版本 |

397| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步插件安装的超时时间(毫秒)。超过时,Claude Code 继续而不使用插件并记录错误。无默认值:没有此变量,同步安装等待直到完成 |397| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 设置为 `1` 可从子进程环境(Bash 工具、hook、MCP stdio 服务器)中移除凭据:Anthropic 和云提供商凭据、Claude Code 识别为凭据的任何其他变量,以及嵌入在包注册表 URL 中的凭据。父 Claude 进程会保留这些凭据用于 API 调用,但子进程无法读取它们,从而降低遭受试图通过 shell 展开窃取机密的提示词注入攻击的风险。在 v2.1.251 或更高版本中,该清除操作还会移除 Claude Code 自身的配置存储指针变量(例如 `CLAUDE_CONFIG_DIR`),使子进程无法定位已迁移的配置目录。如果子进程需要这些变量,请不要设置此清除选项。在 Linux 上,这还会在隔离的 PID 命名空间中运行 Bash 子进程,使其无法通过 `/proc` 读取宿主进程环境;副作用是 `ps`、`pgrep` 和 `kill` 无法看到宿主进程或向其发送信号。配置了 `allowed_non_write_users` 时,`claude-code-action` 会自动设置此变量 |

398| `CLAUDE_CODE_SYNC_SKILLS` | 在非交互模式中设置为 `1`,使用 `-p` 标志,使 Claude Code 下载为您的 claude.ai 帐户启用的 skills 在该运行中,并等待它们的列表,最多 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`,然后运行第一个查询。下载本身在后台完成,Claude 在调用该 skill 时等待 skill 的下载。需要 claude.ai 身份验证。您登录 claude.ai 帐户的终端会话 [下载这些 skills](/docs/zh-CN/skills#where-synced-skills-load) 到 `~/.claude/skills/synced/` 并大约每 10 分钟重新同步,而不需要此变量,因此仅在 `-p` 运行需要您当前 skills 在其第一个查询上时设置它。在 v2.1.273 之前,终端会话仅在带此变量的 `-p` 运行中下载它们。`synced` 文件夹名称 [为此下载保留](/docs/zh-CN/skills#where-skills-live)。在 v2.1.227 之前,skills 直接下载到 `~/.claude/skills/` 中。Claude Code 对下载的 skills 应用 [额外规则](/docs/zh-CN/skills#how-synced-skills-behave),例如不在您的机器上运行其 `!` 命令 |398| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非交互模式(`-p` 标志)下设置为 `1`,可在第一次查询之前等待插件安装完成。否则,插件会在后台安装,可能在第一轮中不可用。可与 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 结合使用以限制等待时间 |

399| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | 当 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 构建的应用重新加载 skills 时运行的 skills 重新同步的超时时间(毫秒)(默认值:30000)。超过时,重新加载继续使用已到达的任何 skills,剩余下载在后台完成 |399| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步插件安装的超时时间(毫秒)。超出后,Claude Code 会在不加载插件的情况下继续运行并记录错误。无默认值:未设置此变量时,同步安装会一直等待直到完成 |

400| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 当设置 `CLAUDE_CODE_SYNC_SKILLS` 时,第一个查询等待初始 skill 列表的超时时间(毫秒)(默认值:5000)。超过时,第一个查询使用已到达的任何 skills 运行。下载无论如何都在后台完成,Claude 在调用 skill 时等待 skill 的下载 |400| `CLAUDE_CODE_SYNC_SKILLS` | 在使用 `-p` 标志的非交互模式下设置为 `1`,可让 Claude Code 在该次运行中下载为您的 claude.ai 账户启用的 skill,并在运行第一次查询之前等待获取它们的列表,最长等待 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`。下载本身会在后台完成,Claude 在调用某个 skill 时会等待该 skill 下载完成。需要 claude.ai 身份验证。使用 claude.ai 账户登录的终端会话无需此变量即可将这些 skill [下载](/docs/zh-CN/skills#where-synced-skills-load)到 `~/.claude/skills/synced/`,并大约每 10 分钟重新同步一次,因此仅当某次 `-p` 运行需要在第一次查询时就使用您当前的 skill 时才设置此变量。在 v2.1.273 之前,终端会话仅在设置了此变量的 `-p` 运行中才会下载它们。`synced` 文件夹名称[为此下载所保留](/docs/zh-CN/skills#where-skills-live)。在 v2.1.227 之前,skill 会直接下载到 `~/.claude/skills/`。Claude Code 会对[下载的 skill 应用额外规则](/docs/zh-CN/skills#how-synced-skills-behave),例如不在您的机器上运行它们的 `!` 命令 |

401| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 设置为 `false` 以在差异输出中禁用语法突出显示。当颜色干扰您的终端设置时很有用。要也禁用代码块和文件预览中的突出显示,请使用 [`syntaxHighlightingDisabled`](/docs/zh-CN/settings-reference#syntaxhighlightingdisabled) 设置 |401| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | 当基于 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 构建的应用重新加载 skill 时,会话中途运行的 skill 重新同步的超时时间(毫秒)(默认:30000)。超出后,重新加载会使用已到达的 skill 继续,其余下载在后台完成 |

402| `CLAUDE_CODE_TASK_LIST_ID` | 跨会话共享任务列表。在多个 Claude Code 实例中设置相同的 ID 以在 [具有 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability) 中协调共享任务列表。参见 [任务列表](/docs/zh-CN/interactive-mode#task-list) |402| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 设置了 `CLAUDE_CODE_SYNC_SKILLS` 时,第一次查询等待初始 skill 列表的超时时间(毫秒)(默认:5000)。超出后,第一次查询会使用已到达的 skill 运行。无论哪种情况,下载都会在后台完成,Claude 在调用某个 skill 时会等待该 skill 下载完成 |

403| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | 覆盖非交互式会话在退出时等待其 [代理团队](/docs/zh-CN/agent-teams) 完成拆卸的时间(毫秒)。接受 1000 到 60000;超出范围的值被忽略,默认值 10000 适用。需要 Claude Code v2.1.206 或更高版本 |403| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 设置为 `false` 可禁用 diff 输出中的语法高亮。当颜色干扰您的终端设置时很有用。要同时禁用代码块和文件预览中的高亮,请使用 [`syntaxHighlightingDisabled`](/docs/zh-CN/settings-reference#syntaxhighlightingdisabled) 设置 |

404| `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) 中被忽略 |404| `CLAUDE_CODE_TASK_LIST_ID` | 在会话之间共享任务列表。在[具有 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中,在多个 Claude Code 实例中设置相同的 ID,即可协同使用共享的任务列表。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |

405| `CLAUDE_CODE_TMUX_TRUECOLOR` | 设置为任何非空值(如 `1`)以允许 tmux 内的 24 位真彩色输出。**将其设置为 `0` 或 `false` 仍允许真彩色**,与大多数打开/关闭变量不同;取消设置变量以恢复 256 色限制。默认情况下,当设置 `$TMUX` 时 Claude Code 限制为 256 色,因为 tmux 不通过真彩色转义序列,除非配置为这样做。在将 `set -ga terminal-overrides ',*:Tc'` 添加到您的 `~/.tmux.conf` 后设置此项。参见 [终端配置](/docs/zh-CN/terminal-config) 了解其他 tmux 设置 |405| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | 覆盖非交互式会话在退出时等待其 [agent team](/docs/zh-CN/agent-teams) 完成拆除的时长(毫秒)。接受 1000 到 60000;超出范围的值会被忽略,并使用默认值 10000。需要 Claude Code v2.1.206 或更高版本 |

406| `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 或更高版本 |406| `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)中会被忽略 |

407| `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 或更高版本 |407| `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) |

408| `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` 或负值禁用截止时间 |408| `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 或更高版本 |

409| `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 或更高版本 |

410| `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` 或负值会禁用截止时间 |

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

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

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

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

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

414| `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) |416| `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` 可启用它,这需要 `pwsh` 位于您的 `PATH` 中。在 Windows 上启用后,Claude 可以原生运行 PowerShell 命令,而不必通过 Git Bash 路由。请参阅 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool) |

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

416| `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 或更高版本 |418| `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 或更高版本 |

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

418| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | 单个 [工作流](/docs/zh-CN/workflows) 运行一次执行多少代理,从 `1` 到 `256`。默认情况下,运行一次执行最多 16 个代理,当 Claude Code 的 CPU 较少时更少;排队的 `agent()` 调用等待空闲槽。每个运行中的代理的成绩单保留在 Claude Code 的内存中,因此较高的值提高内存使用。仅接受纯数字;超出范围的值和其他拼写保持默认值。需要 Claude Code v2.1.269 或更高版本 |420| `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 或更高版本 |

419| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | [工作流](/docs/zh-CN/workflows) 代理等待同前缀兄弟的第一个响应开始的毫秒数的上限,然后发送其自己的第一个请求。当扇出启动共享 [提示缓存前缀](/docs/zh-CN/workflows#prompt-caching-in-a-fan-out) 的多个代理时,Claude Code 将除第一个外的所有代理保持最多这么长时间,以便其余的读取缓存的前缀而不是每个未缓存处理它。默认 `5000`。设置为 `0` 以禁用等待。当设置 `DISABLE_PROMPT_CACHING` 时,代理从不等待。需要 Claude Code v2.1.229 或更高版本 |421| `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 或更高版本 |

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

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

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

423| `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 之前,它在这些网关连接上不运行,因此事件级监视程序可能在那里报告停滞,即使保活 ping 正在到达。对于超时以及计时器如何交互,参见 [流式空闲监视程序](/docs/zh-CN/network-config#streaming-idle-watchdogs) |425| `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) |

424| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 设置为 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 响应上启用字节级流式空闲监视程序,这也启用 [首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs) 在 Bedrock 流式请求上。默认关闭。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置超时 |426| `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` 配置超时时间 |

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

426| `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) hooks 动态填充 |428| `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 动态填充 |

427| `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` 调用在那里不提示权限,目录在会话被删除时删除 |429| `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` 调用不会请求权限,并且该目录会在会话被删除时移除 |

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

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

430| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | 流式请求的第一个响应字节的截止时间(毫秒),在 [首字节截止时间](/docs/zh-CN/network-config#streaming-idle-watchdogs) 运行的连接上。对于 Claude Code 如何限制它、它为大型请求正文添加的额外时间,以及当您保留此未设置时如何选择截止时间,参见 [API 无响应](/docs/zh-CN/errors#no-response-from-api)。需要 Claude Code v2.1.242 或更高版本 |432| `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 或更高版本 |

431| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 事件级和字节级流式空闲监视程序在关闭停滞连接之前的超时时间(毫秒)。当您显式设置此变量时,最小值为 `300000`(5 分钟);较低的值无声地限制到吸收扩展思考暂停和代理缓冲,字节级监视程序将值上限为 30 分钟。`CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 优先于此变量用于字节级监视程序。对于每个监视程序的未设置默认值,参见 [流式空闲监视程序](/docs/zh-CN/network-config#streaming-idle-watchdogs) |433| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 事件级和字节级流式空闲看门狗关闭停滞连接之前的超时时间(毫秒)。显式设置此变量时,最小值为 `300000`(5 分钟);较低的值会被静默提升,以容纳扩展思考暂停和代理缓冲,并且字节级看门狗将该值上限设为 30 分钟。对于字节级看门狗,`CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 优先于此变量。关于各看门狗在未设置时的默认值,请参阅[流式空闲看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs) |

432| `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) |434| `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) |

433| `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:*`)不会触发它 |435| `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:*` 之类的命名空间模式不会触发它 |

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

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

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

437| `DISABLE_COST_WARNINGS` | 设置为 `1` 以禁用成本警告消息 |439| `DISABLE_COST_WARNINGS` | 设置为 `1` 可禁用成本警告消息 |

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

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

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

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

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

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

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

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

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

447| `DISABLE_LOGOUT_COMMAND` | 设置为 `1` 以隐藏 `/logout` 命令 |449| `DISABLE_LOGOUT_COMMAND` | 设置为 `1` 可隐藏 `/logout` 命令 |

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

449| `DISABLE_PROMPT_CACHING_FABLE` | 设置为 `1` 以为 Fable 模型禁用提示缓存 |451| `DISABLE_PROMPT_CACHING_FABLE` | 设置为 `1` 可为 Fable 模型禁用提示缓存 |

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

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

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

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

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

455| `DISABLE_UPGRADE_COMMAND` | 设置为 `1` 以隐藏 `/upgrade` 命令 |457| `DISABLE_UPGRADE_COMMAND` | 设置为 `1` 可隐藏 `/upgrade` 命令 |

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

457| `ENABLE_BETA_TRACING_DETAILED` | 设置为 `1`,与 `BETA_TRACING_ENDPOINT` 一起,以打开 [详细测试版跟踪](/docs/zh-CN/monitoring-usage#traces-beta),它添加内容承载跨度属性和 `claude_code.hook` 跨度。交互式 CLI 会话也需要您的组织被列入测试版白名单。两个变量在 [项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env) 中被忽略 |459| `ENABLE_BETA_TRACING_DETAILED` | 与 `BETA_TRACING_ENDPOINT` 一起设置为 `1`,可开启[详细 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)中都会被忽略 |

458| `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) |460| `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) |

459| `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`,它们优先于此变量 |461| `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`,它们优先于此变量 |

460| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。改为使用 `ENABLE_PROMPT_CACHING_1H` |462| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。请改用 `ENABLE_PROMPT_CACHING_1H` |

461| `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` 始终延迟并发送测试版标头,除了在这些相同的 Agent Platform 模型和 Microsoft Foundry 部署上;请求在不支持 `tool_reference` 的代理上失败。`auto` 在工具定义适合上下文的 10% 内时预先加载。`auto:N` 设置自定义阈值,例如 `auto:5` 为 5%。`false` 预先加载所有工具。您自己设置的值在设置 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` 时被忽略。在 v2.1.221 之前,Claude Code 对 Google Cloud's Agent Platform 上的所有模型禁用工具搜索,除非您将此变量设置为 `true` |463| `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 上为所有模型禁用工具搜索 |

462| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 设置为任何非空值(如 `1`)以使 Claude Code 在没有配置回退模型时停止在重复过载错误上重试每个模型。**将其设置为 `0` 或 `false` 仍启用此**,与大多数打开/关闭变量不同;取消设置变量以恢复默认重试行为。没有它,Claude Code 在使用 API 密钥或 [第三方提供商](/docs/zh-CN/third-party-integrations) 而不是 Claude 订阅进行身份验证时,停止在它识别为 Opus、Fable 或 Mythos 模型的重复过载错误上重试。在 Claude Code v2.1.160 或更高版本上,Claude Code 在任何主模型的重复过载错误上切换到您配置的 [回退模型链](/docs/zh-CN/model-config#fallback-model-chains),因此此变量不影响切换到回退模型 |464| `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),因此此变量不影响切换到备用模型 |

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

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

465| `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` 设置 |467| `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` 设置 |

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

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

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

469| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具响应中允许的最大令牌数。当输出超过 10,000 令牌时,Claude Code 显示警告。声明 [`anthropic/maxResultSizeChars`](/docs/zh-CN/mcp#raise-the-limit-for-a-specific-tool) 的工具为文本内容改用该字符限制,但来自这些工具的图像内容仍受此变量约束(默认值:25000) |471| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具响应中允许的最大 token 数。当输出超过 10,000 个 token 时,Claude Code 会显示警告。声明了 [`anthropic/maxResultSizeChars`](/docs/zh-CN/mcp#raise-the-limit-for-a-specific-tool) 的工具改为对文本内容使用该字符限制,但这些工具的图像内容仍受此变量约束(默认:25000) |

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

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

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

473| `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) 时,等待有更长的截止时间;参见该标志的条目了解缓存服务器异常 |475| `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) 时,等待的截止时间更长;关于已缓存服务器的例外情况,请参阅该标志的条目 |

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

475| `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 或更高版本 |477| `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 或更高版本 |

476| `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 未上限该值 |478| `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 不限制该值 |

477| `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 或更高版本 |479| `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 或更高版本 |

478| `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 未上限该值 |480| `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 不限制该值 |

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

480| `MCP_PROTOCOL_NEGOTIATION` | 仅在 [v2 MCP 客户端运行时](/docs/zh-CN/mcp#mcp-client-runtimes) 上,Claude Code 是否探测服务器以获取 MCP 协议修订 2026-07-28。设置 `auto` 以探测 HTTP、claude.ai 连接器和 stdio 服务器;不回答探测的服务器在较早的协议上连接,SSE 和 WebSocket 服务器始终这样做。设置 `legacy` 以跳过每个服务器的探测。没有变量,Claude Code 探测 HTTP 服务器,也在 [获取功能标志](#features-that-need-feature-flag-fetching) 的会话中探测 claude.ai 连接器服务器。任何其他值被忽略,在调试日志中带警告。需要 Claude Code v2.1.221 或更高版本 |482| `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 或更高版本 |

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

482| `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 或更高版本 |484| `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 或更高版本 |

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

484| `MCP_TIMEOUT` | MCP 服务器启动的超时时间(毫秒)(默认值:30000,或 30 秒) |486| `MCP_TIMEOUT` | MCP 服务器启动的超时时间(毫秒)(默认:30000,即 30 秒) |

485| `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 或更高版本。对于 env 变量,低于 1000 的值下限为一秒;对于每个服务器字段,低于 1000 的值被忽略 |487| `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 的值会被忽略 |

486| `NO_PROXY` | 请求将直接发出的域和 IP 列表,绕过代理 |488| `NO_PROXY` | 请求将绕过代理直接发往的域名和 IP 列表 |

487| `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) |489| `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) |

488| `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) |490| `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) |

489| `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) |491| `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) |

490| `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) |492| `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) |

491| `OTEL_LOG_TOOL_CONTENT` | 设置为 `1` 以在 `tool.output` OpenTelemetry 跨度事件上包含工具内容。跨度属性在 [其自己的门](/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) |493| `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) |

492| `OTEL_LOG_TOOL_DETAILS` | 设置为 `1` 以在 OpenTelemetry 指标、跟踪和日志中包含工具输入参数;MCP 服务器名称;用户创作的工作流名称;工具失败上的原始错误字符串;`api_refusal` 事件上的拒绝 `category`;[成本和令牌指标](/docs/zh-CN/monitoring-usage#cost-counter) 上的真实代理、skill、插件和 MCP 服务器名称;以及其他工具详情。默认禁用以保护 PII。在您的 shell、用户设置或托管设置中设置它。在 [项目和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env) 中被忽略,除了该部分描述的关闭值。参见 [监控](/docs/zh-CN/monitoring-usage) |494| `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) |

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

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

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

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

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

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

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

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

501| `TASK_MAX_OUTPUT_LENGTH` | 在 v2.1.277 中删除,现在是无操作,与它大小的 `TaskOutput` 工具一起。以前设置 [后台任务](/docs/zh-CN/tools-reference#background-commands) 的最大字符数,`TaskOutput` 工具保留。Claude 改为使用 `Read` 读取后台任务的输出文件 |503| `TASK_MAX_OUTPUT_LENGTH` | 已在 v2.1.277 中移除,现在不起作用,其所限定大小的 `TaskOutput` 工具也一并移除。之前用于设置 `TaskOutput` 工具保留的[后台任务](/docs/zh-CN/tools-reference#background-commands)输出的最大字符数。Claude 现在改用 `Read` 读取后台任务的输出文件 |

502| `USE_BUILTIN_RIPGREP` | 设置为 `0` 以使用系统安装的 `rg` 而不是 Claude Code 包含的 `rg` |504| `USE_BUILTIN_RIPGREP` | 设置为 `0` 可使用系统安装的 `rg`,而不是 Claude Code 自带的 `rg` |

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

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

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


520| `VERTEX_REGION_CLAUDE_FABLE_5_1` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Fable 5.1 的区域。在 v2.1.257 中添加 |522| `VERTEX_REGION_CLAUDE_FABLE_5_1` | 使用 Google Cloud's Agent Platform 时覆盖 Claude Fable 5.1 的区域。在 v2.1.257 中添加 |

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

522 524 

523标准 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) 了解配置详情。525同样支持标准 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)。

524 526 

525在您的 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`)仍从项目和本地设置适用。527请在 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`)在项目设置和本地设置中仍然生效。

526 528 

527<h2 id="features-that-need-feature-flag-fetching">529<h2 id="features-that-need-feature-flag-fetching">

528 需要特性标志获取的功能530 需要特性标志获取的功能


545* 使用[顾问工具](/docs/zh-CN/advisor#requirements)547* 使用[顾问工具](/docs/zh-CN/advisor#requirements)

546* 读取或回复[工件上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)548* 读取或回复[工件上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)

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

548* 让 Claude Code 探测 claude.ai 连接器服务器以获取 [MCP 协议修订版本 2026-07-28](/docs/zh-CN/mcp#mcp-client-runtimes),除非你设置 `MCP_PROTOCOL_NEGOTIATION=auto`550* 让 Claude Code 探测 claude.ai 连接器服务器或 stdio 服务器是否支持 [MCP 协议修订版本 2026-07-28](/docs/zh-CN/mcp#mcp-client-runtimes),除非您设置 `MCP_PROTOCOL_NEGOTIATION=auto`

549* 默认为 claude.ai 和 Console 账户在安装了 Git Bash 的 Windows 上获取 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool);Claude Code 通过 Git Bash 路由 shell 命令,除非你设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。在没有 Git Bash 的 Windows 上,该工具保持启用551* 默认为 claude.ai 和 Console 账户在安装了 Git Bash 的 Windows 上获取 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool);Claude Code 通过 Git Bash 路由 shell 命令,除非你设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。在没有 Git Bash 的 Windows 上,该工具保持启用

550* 获取 [Claude 草拟的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior),Claude Code 通过获取的标志来启用它552* 获取 [Claude 草拟的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior),Claude Code 通过获取的标志来启用它

551* 让 Claude [将大型粘贴视为粘贴而非输入的文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 占位符后面的内容到达 Claude 时未标记553* 让 Claude [将大型粘贴视为粘贴而非输入的文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text);`[Pasted text #N]` 占位符后面的内容到达 Claude 时未标记

errors.md +22 −2

Details

187| `<model>'s safeguards flagged this message` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |187| `<model>'s safeguards flagged this message` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |

188| `<model>'s safeguards flagged this session` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |188| `<model>'s safeguards flagged this session` | [请求错误](#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) |189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [请求错误](#safety-measures-flagged-a-cybersecurity-topic) |

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

190| `Installation was killed before it could finish (exit code 137)` | [安装错误](#installation-was-killed-before-it-could-finish) |191| `Installation was killed before it could finish (exit code 137)` | [安装错误](#installation-was-killed-before-it-could-finish) |

191| `The connection dropped while downloading the update` | [安装错误](#the-connection-dropped-while-downloading-the-update) |192| `The connection dropped while downloading the update` | [安装错误](#the-connection-dropped-while-downloading-the-update) |

192| `Download timed out: exceeded the total deadline` | [安装错误](#the-connection-dropped-while-downloading-the-update) |193| `Download timed out: exceeded the total deadline` | [安装错误](#the-connection-dropped-while-downloading-the-update) |


402* [Amazon Bedrock 流式响应具有意外的 content-type](#bedrock-streaming-response-has-an-unexpected-content-type),因为重写响应的网关或代理会以相同方式重写重试。需要 Claude Code v2.1.208 或更高版本。403* [Amazon Bedrock 流式响应具有意外的 content-type](#bedrock-streaming-response-has-an-unexpected-content-type),因为重写响应的网关或代理会以相同方式重写重试。需要 Claude Code v2.1.208 或更高版本。

403* 失败的流式请求的非流式重试获得成功状态但 [body 中没有 Claude API 消息](#api-returned-an-empty-or-malformed-response)。Claude Code 以该错误结束轮次。404* 失败的流式请求的非流式重试获得成功状态但 [body 中没有 Claude API 消息](#api-returned-an-empty-or-malformed-response)。Claude Code 以该错误结束轮次。

404* 您的组织的策略检查拒绝的请求,其表现为携带拒绝消息的 `API Error:` 行。您的组织管理员使用 [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks)(Claude Enterprise 功能)设置检查,消息以他们配置的说明结尾,或默认告诉您联系他们。Claude Code 不会将拒绝的请求重新发送到相同模型或 [备用模型](/docs/zh-CN/model-config#fallback-model-chains),因为拒绝涉及请求的内容而不是模型。在 v2.1.239 之前,Claude Code 可以重新发送拒绝的请求,不流式传输或在配置的备用模型上,然后向您显示拒绝。405* 您的组织的策略检查拒绝的请求,其表现为携带拒绝消息的 `API Error:` 行。您的组织管理员使用 [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks)(Claude Enterprise 功能)设置检查,消息以他们配置的说明结尾,或默认告诉您联系他们。Claude Code 不会将拒绝的请求重新发送到相同模型或 [备用模型](/docs/zh-CN/model-config#fallback-model-chains),因为拒绝涉及请求的内容而不是模型。在 v2.1.239 之前,Claude Code 可以重新发送拒绝的请求,不流式传输或在配置的备用模型上,然后向您显示拒绝。

406* 被 API 输出内容过滤器拦截的响应。Claude Code 会立即显示 [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy),并且不会重试或重新发送该请求。

405 407 

406<h3 id="what-you-see-while-claude-code-retries-or-waits">408<h3 id="what-you-see-while-claude-code-retries-or-waits">

407 Claude Code 重试或等待时您看到的内容409 Claude Code 重试或等待时您看到的内容


432| [`CLAUDE_CODE_MAX_RETRIES`](/docs/zh-CN/env-vars) | 10 | 重试尝试次数。从 v2.1.186 开始上限为 15;从 v2.1.199 开始 `CLAUDE_CODE_RETRY_WATCHDOG` 提高默认值并移除上限。降低它以在脚本中更快地显示故障。 |434| [`CLAUDE_CODE_MAX_RETRIES`](/docs/zh-CN/env-vars) | 10 | 重试尝试次数。从 v2.1.186 开始上限为 15;从 v2.1.199 开始 `CLAUDE_CODE_RETRY_WATCHDOG` 提高默认值并移除上限。降低它以在脚本中更快地显示故障。 |

433| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/zh-CN/env-vars) | 未设置 | 在 CI 作业等无人值守会话中设置为 `1`,以无限期重试 `429` 和 `529` 容量错误,而不是在 `CLAUDE_CODE_MAX_RETRIES` 尝试后失败。当标准速度请求获得报告支出限制或耗尽使用额度的 `429` 时,Claude Code 立即失败,即使来自 [gateway spend cap](#spend-limit-reached) 的也是如此,该上限按计划重置。在 v2.1.239 之前,看门狗无限期重试这些。对于快速模式请求,请参阅 [Handle rate limits](/docs/zh-CN/fast-mode#handle-rate-limits)。在 v2.1.199 或更高版本上,它还为其他瞬时错误(例如服务器错误、超时和断开连接)提高默认重试计数至 300,大约三小时的退避,如果您明确设置该变量,则移除 `CLAUDE_CODE_MAX_RETRIES` 的 15 上限。 |435| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/zh-CN/env-vars) | 未设置 | 在 CI 作业等无人值守会话中设置为 `1`,以无限期重试 `429` 和 `529` 容量错误,而不是在 `CLAUDE_CODE_MAX_RETRIES` 尝试后失败。当标准速度请求获得报告支出限制或耗尽使用额度的 `429` 时,Claude Code 立即失败,即使来自 [gateway spend cap](#spend-limit-reached) 的也是如此,该上限按计划重置。在 v2.1.239 之前,看门狗无限期重试这些。对于快速模式请求,请参阅 [Handle rate limits](/docs/zh-CN/fast-mode#handle-rate-limits)。在 v2.1.199 或更高版本上,它还为其他瞬时错误(例如服务器错误、超时和断开连接)提高默认重试计数至 300,大约三小时的退避,如果您明确设置该变量,则移除 `CLAUDE_CODE_MAX_RETRIES` 的 15 上限。 |

434| [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 600000 | 每个请求的超时(毫秒)。为慢速网络或代理提高它。它还限制 Claude Code 等待响应头的时间,在 [No response from API](#no-response-from-api) 中描述。 |436| [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 600000 | 每个请求的超时(毫秒)。为慢速网络或代理提高它。它还限制 Claude Code 等待响应头的时间,在 [No response from API](#no-response-from-api) 中描述。 |

437| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/zh-CN/env-vars) | 未设置 | 超时的[非流式请求](#streaming-response-ended-before-any-complete-data-was-received)的重新发送次数限制。达到该限制时,请求失败。生成时间超过超时时间的 Claude 响应在每次重新发送时都会再次超时,因此请设置较低的数值(例如 `0`)以更快地失败。在本地会话中,每次非流式尝试在 300 秒后超时;当您为 `API_TIMEOUT_MS` 设置正值时,则在该值指定的时间后超时。需要 Claude Code v2.1.285 或更高版本。 |

435| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 未设置 | 流式请求的第一个响应字节的截止时间(毫秒)。需要 Claude Code v2.1.242 或更高版本。对于当此未设置时 Claude Code 如何选择截止时间,请参阅 [No response from API](#no-response-from-api)。 |438| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 未设置 | 流式请求的第一个响应字节的截止时间(毫秒)。需要 Claude Code v2.1.242 或更高版本。对于当此未设置时 Claude Code 如何选择截止时间,请参阅 [No response from API](#no-response-from-api)。 |

436 439 

437<h2 id="server-errors">440<h2 id="server-errors">


2022这些步骤更改您自己的环境之一。[组织共享环境](/docs/zh-CN/cloud-environments#organization-shared-environments)在选择器中以只读方式打开,因此请要求所有者从[管理设置](https://claude.ai/admin-settings)中的**云环境**页面更改其网络访问。2025这些步骤更改您自己的环境之一。[组织共享环境](/docs/zh-CN/cloud-environments#organization-shared-environments)在选择器中以只读方式打开,因此请要求所有者从[管理设置](https://claude.ai/admin-settings)中的**云环境**页面更改其网络访问。

2023 2026 

2024* 打开您的环境进行编辑,可以从[例程的表单](/docs/zh-CN/routines#environments-and-network-access)或从[环境选择器](/docs/zh-CN/cloud-environments#configure-your-environment)启动云会话。2027* 打开您的环境进行编辑,可以从[例程的表单](/docs/zh-CN/routines#environments-and-network-access)或从[环境选择器](/docs/zh-CN/cloud-environments#configure-your-environment)启动云会话。

2025* 在**编辑云环境**对话框中,将**网络访问**从**受信任**更改为**自定义**,然后将被阻止的域添加到**允许的域**。每行输入一个域。检查**也包括常见包管理器的默认列表**以将[默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains)与您的自定义域保持在一起。如果您想要不受限制的访问,请改为选择**完全**。2028* 在 **Edit environment** 对话框中,将 **Network access** 从 **Trusted** 更改为 **Custom**,然后将被阻止的域添加到 **Allowed domains**。每行输入一个域。勾选 **Also include default list of common package managers** 以将[默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains)与您的自定义域保持在一起。如果您想要不受限制的访问,请改为选择 **Full**。

2026* 单击**保存更改**。下一次运行使用更新的允许列表。对于已打开的云会话,请参阅[网络访问更改何时到达现有会话](/docs/zh-CN/cloud-environments#network-access)。2029* 单击**保存更改**。下一次运行使用更新的允许列表。对于已打开的云会话,请参阅[网络访问更改何时到达现有会话](/docs/zh-CN/cloud-environments#network-access)。

2027 2030 

2028有关访问级别和默认允许列表,请参阅[网络访问](/docs/zh-CN/cloud-environments#network-access)。本地 CLI 会话不受此策略影响。2031有关访问级别和默认允许列表,请参阅[网络访问](/docs/zh-CN/cloud-environments#network-access)。本地 CLI 会话不受此策略影响。


2865* 如果您的请求不是关于网络安全主题,运行 `/feedback` 报告误报2868* 如果您的请求不是关于网络安全主题,运行 `/feedback` 报告误报

2866* 要继续在同一会话中工作,按 Esc 两次或运行 `/rewind` 回退到触发标记的轮次之前的检查点,然后采取不同的方法。请参阅[检查点](/docs/zh-CN/checkpointing)。2869* 要继续在同一会话中工作,按 Esc 两次或运行 `/rewind` 回退到触发标记的轮次之前的检查点,然后采取不同的方法。请参阅[检查点](/docs/zh-CN/checkpointing)。

2867 2870 

2871<h3 id="output-blocked-by-content-filtering-policy">

2872 Output blocked by content filtering policy

2873</h3>

2874 

2875API 的输出内容过滤器中止了 Claude 正在生成的响应。消息文本来自 API:

2876 

2877```text theme={null}

2878API Error: Output blocked by content filtering policy

2879```

2880 

2881Claude Code 在拦截到达时立即显示错误,并在此结束请求。它不会重试请求、以非流式方式重新发送请求,也不会切换到[备用模型](/docs/zh-CN/model-config#fallback-model-chains)。在 v2.1.285 之前,Claude Code 可能会重新发送并重试被拦截的请求(有时持续数分钟),然后才向您显示错误。

2882 

2883**要做什么:**

2884 

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

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

2887 

2868<h2 id="installation-errors">2888<h2 id="installation-errors">

2869 安装错误2889 安装错误

2870</h2>2890</h2>


4414 队友的 Agent 定义未被恢复4434 队友的 Agent 定义未被恢复

4415</h3>4435</h3>

4416 4436 

4417Claude 给停止的 [agent team](/docs/zh-CN/agent-teams) 队友发消息,Claude Code 将其恢复而没有重新应用它生成时的[子代理定义](/docs/zh-CN/agent-teams#use-subagent-definitions-for-teammates),因为其定义文件来自没有保存信任的文件夹。该通知跟随发送方 Agent 的工具结果中的恢复报告:4437Claude 给已停止的 [agent team](/docs/zh-CN/agent-teams) 队友发消息,Claude Code 将其恢复,但没有重新应用它生成时所依据的[子代理定义](/docs/zh-CN/agent-teams#use-subagent-definitions-for-teammates)。该通知跟随发送方 Agent 的工具结果中的恢复报告,并说明原因。当定义文件来自没有保存信任的文件夹时,内容如下:

4418 4438 

4419```text wrap theme={null}4439```text wrap theme={null}

4420Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.4440Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.

hooks.md +570 −560

Details

40| :- | :- |40| :- | :- |

41| `SessionStart` | 当会话开始或恢复时 |41| `SessionStart` | 当会话开始或恢复时 |

42| `Setup` | 当你使用 `--init-only` 启动 Claude Code,或在 `-p` 模式下使用 `--init` 或 `--maintenance` 时。用于 CI 或脚本中的一次性准备 |42| `Setup` | 当你使用 `--init-only` 启动 Claude Code,或在 `-p` 模式下使用 `--init` 或 `--maintenance` 时。用于 CI 或脚本中的一次性准备 |

43| `UserPromptSubmit` | 当你提交提示词时,在 Claude 处理之前 |43| `UserPromptSubmit` | 当提交提示词时,在 Claude 处理之前。对于 [Claude Code 自行发起的轮次](/docs/zh-CN/hooks#userpromptsubmit)也会触发 |

44| `UserPromptExpansion` | 当用户输入的命令扩展为提示词时,在到达 Claude 之前。可以阻止扩展 |44| `UserPromptExpansion` | 当用户输入的命令扩展为提示词时,在到达 Claude 之前。可以阻止扩展 |

45| `PreToolUse` | 在工具调用执行之前。可以阻止它 |45| `PreToolUse` | 在工具调用执行之前。可以阻止它 |

46| `PermissionRequest` | 当工具调用需要权限决策时 |46| `PermissionRequest` | 当工具调用需要权限决策时 |


1159 Hook 事件1159 Hook 事件

1160</h2>1160</h2>

1161 1161 

1162每个事件对应于 Claude Code 生命周期中的一个点,hooks 可以在该点运行。下面的部分按照生命周期顺序排列:从会话设置到 agentic 循环再到会话结束。每个部分描述事件何时触发、它支持哪些匹配器、它接收的 JSON 输入以及如何通过输出控制行为。1162每个事件都对应 Claude Code 生命周期中可以运行 hook 的一个时间点。以下各节按照生命周期的顺序排列:从会话设置开始,经过智能体循环,直到会话结束。每一节都会说明事件何时触发、支持哪些匹配器、接收什么 JSON 输入,以及如何通过输出控制行为。

1163 1163 

1164<h3 id="sessionstart">1164<h3 id="sessionstart">

1165 SessionStart1165 SessionStart

1166</h3>1166</h3>

1167 1167 

1168在 Claude Code 启动新会话或恢复现有会话时运行。对于加载开发上下文(如现有问题或代码库的最近更改)或设置环境变量很有用。对于不需要脚本的静态上下文,请改用 [CLAUDE.md](/docs/zh-CN/memory)。1168在 Claude Code 启动新会话或恢复现有会话时运行。适用于加载开发上下文(例如现有 issue 或代码库的最近更改),或设置环境变量。对于不需要脚本的静态上下文,请改用 [CLAUDE.md](/docs/zh-CN/memory)。

1169 1169 

1170SessionStart 在每个会话上运行,因此请保持这些 hooks 快速。仅支持 `type: "command"` 和 `type: "mcp_tool"` hooks。有关 `mcp_tool` hooks 何时运行,请参阅 [MCP tool hook 字段](#mcp-tool-hook-fields)。1170SessionStart 在每个会话中都会运行,因此请保持这些 hook 快速执行。仅支持 `type: "command"` 和 `type: "mcp_tool"` hook。有关 `mcp_tool` hook 何时运行,请参阅 [MCP 工具 hook 字段](#mcp-tool-hook-fields)。

1171 1171 

1172匹配器值对应于会话的启动方式:1172匹配器值对应于会话的启动方式:

1173 1173 

1174| 匹配器 | 何时触发 |1174| 匹配器 | 触发时机 |

1175| :- | :- |1175| :- | :- |

1176| `startup` | 新会话 |1176| `startup` | 新会话 |

1177| `resume` | `--resume`、`--continue` 或 `/resume` |1177| `resume` | `--resume`、`--continue` 或 `/resume` |

1178| `clear` | `/clear` |1178| `clear` | `/clear` |

1179| `compact` | 自动或手动压缩 |1179| `compact` | 自动或手动压缩 |

1180| `fork` | 从现有会话分叉的新会话:`--fork-session` 与 `--resume` 或 `--continue`、`/fork` 后台副本、`/branch` 或您 [移到后台](/docs/zh-CN/agent-view#from-inside-a-session) 的对话 |1180| `fork` | 从现有会话分叉出的新会话:与 `--resume` 或 `--continue` 一起使用的 `--fork-session`、`/fork` 后台副本、`/branch`,或您[移至后台](/docs/zh-CN/agent-view#from-inside-a-session)的对话 |

1181 1181 

1182在 v2.1.214 之前,分叉的会话报告源为 `"resume"`。1182在 v2.1.214 之前,分叉的会话报告的 source 为 `"resume"`。

1183 1183 

1184当您启动交互式会话、使用 `--continue` 或 `--resume` 在启动时恢复对话或运行 `/clear` 时,SessionStart hooks 在后台运行。您可以立即输入,恢复的对话显示时无需等待 hooks。Claude 的第一个响应仍然等待 hooks 完成,因此它们的上下文到达 Claude。1184当您启动交互式会话、在启动时使用 `--continue` 或 `--resume` 恢复对话,或运行 `/clear` 时,SessionStart hook 会在后台运行。您可以立即输入,恢复的对话也会直接显示,无需等待 hook。Claude 的第一条回复仍会等待 hook 完成,以便其上下文能够传递给 Claude。

1185 1185 

1186当您在会话内使用 `/resume` 切换对话时,切换等待 hooks 完成。如果您在后台 hooks 仍在运行时运行 `/clear` 或切换到另一个对话,它们返回的任何内容都不适用于该会话。1186当您在会话中使用 `/resume` 切换对话时,切换操作则会等待 hook 完成。如果您在后台 hook 仍在运行时运行 `/clear` 或切换到其他对话,它们返回的任何内容都不会应用于该会话。

1187 1187 

1188在启动时也适用相同的等待,包括恢复的会话:您在 SessionStart hooks 仍在运行时发送的提示不会到达 Claude,直到它们完成。1188启动时也存在同样的等待,包括恢复的会话:在 SessionStart hook 仍在运行时发送的提示词,要等到它们完成后才会传递给 Claude。

1189 1189 

1190在任一等待期间,按 `Esc` 将提示返回到输入中而不发送它。hooks 继续运行。1190在上述任一等待期间,按 `Esc` 可将提示词收回到输入框中而不发送。hook 会继续运行。

1191 1191 

1192<h4 id="sessionstart-input">1192<h4 id="sessionstart-input">

1193 SessionStart 输入1193 SessionStart 输入

1194</h4>1194</h4>

1195 1195 

1196除了 [常见输入字段](#common-input-fields) 外,SessionStart hooks 还接收 `source` 和可选的 `model`、`agent_type` 和 `session_title`:1196除了[通用输入字段](#common-input-fields)之外,SessionStart hook 还会接收 `source`,以及可选的 `model`、`agent_type` 和 `session_title`:

1197 1197 

1198| 字段 | 描述 |1198| 字段 | 描述 |

1199| :- | :- |1199| :- | :- |

1200| `source` | 会话如何启动:新会话为 `"startup"`、恢复的会话为 `"resume"`、`/clear` 后为 `"clear"`、压缩后为 `"compact"` 或从现有会话分叉的新会话为 `"fork"` |1200| `source` | 会话的启动方式:新会话为 `"startup"`,恢复的会话为 `"resume"`,`/clear` 之后为 `"clear"`,压缩之后为 `"compact"`,从现有会话分叉出的新会话为 `"fork"` |

1201| `model` | 活跃的模型标识符。例如在 `/clear` 后或通过对话恢复恢复会话时可能被省略,因此在读取前检查该字段 |1201| `model` | 当前活动的模型标识符。该字段可能被省略,例如在 `/clear` 之后或通过对话恢复还原会话时,因此请在读取前检查该字段是否存在 |

1202| `agent_type` | agent 名称,当您使用 `claude --agent <name>` 启动 Claude Code 时出现 |1202| `agent_type` | Agent 名称,在您使用 `claude --agent <name>` 启动 Claude Code 时出现 |

1203| `session_title` | 当前会话标题(如果已设置),例如通过 `--name`、`/rename`、发出 `sessionTitle` 的 hook 或 Agent SDK 的 `renameSession()`。发出 `sessionTitle` 的 hook 可以先检查此字段以避免覆盖现有的自定义标题 |1203| `session_title` | 会话的自定义标题,在已设置时出现,例如通过 `--name`、`/rename`、hook 的 `sessionTitle` 输出或 Agent SDK 的 `renameSession()` 设置。输出 `sessionTitle` 的 hook 可以先检查此字段,以避免覆盖现有的自定义标题 |

1204 1204 

1205一个您未命名的会话仍然可以有 [生成的标题](/docs/zh-CN/sessions#name-your-sessions)。该标题不是自定义标题,不出现在 `session_title` 中。1205您未命名的会话仍可能拥有[自动生成的标题](/docs/zh-CN/sessions#name-your-sessions)。该标题不是自定义标题,不会出现在 `session_title` 中。

1206 1206 

1207当 `source` 为 `"resume"` 或 `"fork"` 且成绩单包含至少一个来自 Claude 的响应时,SessionStart hooks 也会接收下面的四个字段。您的 hook 可以使用它们在第一个请求之前报告恢复陈旧对话的成本,例如在 [`systemMessage`](#json-output) 中。这些字段需要 Claude Code v2.1.251 或更高版本。1207当 `source` 为 `"resume"` 或 `"fork"`,且会话记录中至少包含一条 Claude 的回复时,SessionStart hook 还会接收以下四个字段。您的 hook 可以使用它们在第一个请求之前报告恢复一个陈旧对话的成本,例如通过 [`systemMessage`](#json-output)。这些字段需要 Claude Code v2.1.251 或更高版本。

1208 1208 

1209| 字段 | 描述 |1209| 字段 | 描述 |

1210| :- | :- |1210| :- | :- |

1211| `seconds_since_last_response` | 自恢复成绩单中最后一个响应以来的挂钟秒数 |1211| `seconds_since_last_response` | 自恢复的会话记录中最后一条回复以来经过的实际秒数 |

1212| `context_tokens` | 恢复会话的第一个请求作为其提示重新发送的令牌 |1212| `context_tokens` | 恢复的会话的第一个请求作为提示词重新发送的 token 数 |

1213| `prompt_cache_likely_expired` | 当最后一个响应早于会话的 [prompt cache 生命周期](/docs/zh-CN/prompt-caching#cache-lifetime) 或更晚的压缩替换了缓存的对话时为 `true` |1213| `prompt_cache_likely_expired` | 当最后一条回复早于会话的[提示缓存生命周期](/docs/zh-CN/prompt-caching#cache-lifetime),或之后的压缩替换了已缓存的对话时为 `true` |

1214| `estimated_cache_write_usd` | 将 `context_tokens` 写入会话模型的 prompt cache 的估计成本(美元),不包括响应 |1214| `estimated_cache_write_usd` | 在会话所用模型上将 `context_tokens` 写入提示缓存的估计成本(美元),不包括回复 |

1215 1215 

1216此示例显示了在最后一个响应后 90 分钟恢复的会话的输入:1216以下示例展示了在最后一条回复 90 分钟后恢复的会话的输入:

1217 1217 

1218```json theme={null}1218```json theme={null}

1219{1219{


1234 SessionStart 决策控制1234 SessionStart 决策控制

1235</h4>1235</h4>

1236 1236 

1237Claude Code 将它 [视为纯文本](#exit-code-0) 的 stdout 添加到 Claude 的上下文中。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您还可以返回这些事件特定的字段:1237Claude Code 会将其[视为纯文本](#exit-code-0)的 stdout 添加到 Claude 的上下文中。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您还可以返回以下特定于事件的字段:

1238 1238 

1239| 字段 | 描述 |1239| 字段 | 描述 |

1240| :- | :- |1240| :- | :- |

1241| `additionalContext` | 在对话开始时添加到 Claude 上下文的字符串,在第一个提示之前。有关文本如何传递以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |1241| `additionalContext` | 在对话开始时、第一个提示词之前添加到 Claude 上下文中的字符串。有关文本的传递方式以及应放入的内容,请参阅[为 Claude 添加上下文](#add-context-for-claude) |

1242| `initialUserMessage` | 用作会话第一个用户消息的字符串。适用于 [非交互模式](/docs/zh-CN/headless),带有 `-p` 标志,即使未提供提示,它也成为第一个回合。如果提供了提示,它作为下一个回合跟随。与 `additionalContext` 不同,后者附加到现有回合,这会创建回合 |1242| `initialUserMessage` | 用作会话第一条用户消息的字符串。适用于使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless),此时即使未提供提示词,它也会成为第一轮。如果提供了提示词,则提示词作为下一轮紧随其后。与附加到现有轮次的 `additionalContext` 不同,此字段会创建轮次 |

1243| `sessionTitle` | 设置会话标题,效果与 `/rename` 相同。用于从启动文件夹、git 分支或 worktree 名称自动命名会话。当 `source` 为 `"startup"`、`"resume"` 或 `"fork"` 时适用;在 `"clear"` 和 `"compact"` 上被忽略 |1243| `sessionTitle` | 设置会话标题,效果与 `/rename` 相同。可用于根据启动文件夹、git 分支或 worktree 名称自动命名会话。在 `source` 为 `"startup"`、`"resume"` 或 `"fork"` 时生效;在 `"clear"` 和 `"compact"` 时被忽略 |

1244| `watchPaths` | 绝对路径数组,用于在此会话期间监视 [FileChanged](#filechanged) 事件 |1244| `watchPaths` | 在此会话期间要监视 [FileChanged](#filechanged) 事件的绝对路径数组 |

1245| `reloadSkills` | 布尔值。当为 `true` 时,Claude Code 在 SessionStart hooks 完成后重新扫描 [skill](/docs/zh-CN/skills) 和命令目录,因此 hook 安装的 skills 在同一会话中可用,从第一个提示开始 |1245| `reloadSkills` | 布尔值。为 `true` 时,Claude Code 会在 SessionStart hook 完成后重新扫描 [skill](/docs/zh-CN/skills) 和命令目录,使 hook 安装的 skill 在同一会话中从第一个提示词开始即可使用 |

1246 1246 

1247```json theme={null}1247```json theme={null}

1248{1248{


1254}1254}

1255```1255```

1256 1256 

1257由于纯 stdout 已经为此事件到达 Claude,仅加载上下文的 hook 可以直接打印到 stdout 而无需构建 JSON。当您需要将上下文与其他字段(如 `sessionTitle`)结合时,使用 JSON 形式。1257由于对于此事件,纯 stdout 已经会传递给 Claude,因此仅加载上下文的 hook 可以直接打印到 stdout,无需构建 JSON。当您需要将上下文与 `sessionTitle` 等其他字段组合时,请使用 JSON 形式。

1258 1258 

1259当 SessionStart hook 安装或更新 skills 时使用 `reloadSkills`。Skill 发现通常在 SessionStart hooks 完成之前运行,因此 hook 写入 `~/.claude/skills/` 或 `.claude/skills/` 的文件否则只会在下一个会话中出现。此示例同步共享 skills 存储库并请求重新扫描:1259当 SessionStart hook 安装或更新 skill 时,请使用 `reloadSkills`。skill 发现通常在 SessionStart hook 完成之前运行,因此 hook 写入 `~/.claude/skills/` 或 `.claude/skills/` 的文件原本只会在下一个会话中出现。以下示例同步一个共享的 skill 仓库并请求重新扫描:

1260 1260 

1261```bash theme={null}1261```bash theme={null}

1262#!/bin/bash1262#!/bin/bash


1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1268```1268```

1269 1269 

1270存储库 URL 是占位符;将其替换为您自己的 skills 存储库。使用占位符,克隆失败并打印 `fatal:` 消息到 stderr。来自退出 0 的 SessionStart hook 的 stderr 仅供参考,因此 `reloadSkills` 请求仍然适用。1270该仓库 URL 是一个占位符;请将其替换为您自己的 skill 仓库。使用占位符时,克隆会失败并向 stderr 打印一条 `fatal:` 消息。以 0 退出的 SessionStart hook 的 stderr 仅供参考,因此 `reloadSkills` 请求仍然生效。

1271 1271 

1272<h4 id="persist-environment-variables">1272<h4 id="persist-environment-variables">

1273 持久化环境变量1273 持久化环境变量

1274</h4>1274</h4>

1275 1275 

1276SessionStart hooks 可以访问 `CLAUDE_ENV_FILE` 环境变量,它提供一个文件路径,您可以在其中为后续 Bash 命令持久化环境变量。1276SessionStart hook 可以访问 `CLAUDE_ENV_FILE` 环境变量,该变量提供一个文件路径,您可以在其中为后续的 Bash 命令持久化环境变量。

1277 1277 

1278要设置单个环境变量,请将 `export` 语句写入 `CLAUDE_ENV_FILE`。使用追加 (`>>`) 来保留由其他 hooks 设置的变量:1278要设置单个环境变量,请将 `export` 语句写入 `CLAUDE_ENV_FILE`。使用追加(`>>`)以保留其他 hook 设置的变量:

1279 1279 

1280```bash theme={null}1280```bash theme={null}

1281#!/bin/bash1281#!/bin/bash


1289exit 01289exit 0

1290```1290```

1291 1291 

1292要捕获设置命令中的所有环境更改,请比较之前和之后导出的变量:1292要捕获设置命令产生的所有环境更改,请比较执行前后导出的变量:

1293 1293 

1294```bash theme={null}1294```bash theme={null}

1295#!/bin/bash1295#!/bin/bash


1309```1309```

1310 1310 

1311<Note>1311<Note>

1312 `CLAUDE_ENV_FILE` 可用于 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hooks。其他 hook 类型无法访问此变量。1312 `CLAUDE_ENV_FILE` 可用于 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hook。其他类型的 hook 无法访问此变量。

1313</Note>1313</Note>

1314 1314 

1315<h3 id="setup">1315<h3 id="setup">

1316 Setup1316 Setup

1317</h3>1317</h3>

1318 1318 

1319仅当您使用 `--init-only` 启动 Claude Code,或在 [非交互模式](/docs/zh-CN/headless) 中使用 `--init` 或 `--maintenance` 与 `-p` 标志时触发。它不会在正常启动时触发。用于一次性依赖安装或您从 CI 或脚本显式触发的计划清理,与正常会话启动分开。对于每个会话的初始化,请改用 [SessionStart](#sessionstart)。1319仅在您使用 `--init-only` 启动 Claude Code,或在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless)下使用 `--init` 或 `--maintenance` 启动时触发。正常启动时不会触发。可将其用于从 CI 或脚本中显式触发的一次性依赖安装或定期清理,与正常的会话启动分开。对于每个会话的初始化,请改用 [SessionStart](#sessionstart)。

1320 1320 

1321匹配器值对应于触发 hook 的 CLI 标志:1321匹配器值对应于触发该 hook 的 CLI 标志:

1322 1322 

1323| 匹配器 | 何时触发 |1323| 匹配器 | 触发时机 |

1324| :- | :- |1324| :- | :- |

1325| `init` | `claude --init-only` 或 `claude -p --init` |1325| `init` | `claude --init-only` 或 `claude -p --init` |

1326| `maintenance` | `claude -p --maintenance` |1326| `maintenance` | `claude -p --maintenance` |

1327 1327 

1328当您运行 `claude --init-only` 时,Claude Code 运行 Setup hooks 和带有 `startup` 匹配器的 `SessionStart` hooks,然后退出而不启动对话。1328当您运行 `claude --init-only` 时,Claude Code 会运行 Setup hook 以及带有 `startup` 匹配器的 `SessionStart` hook,然后退出,不会开始对话。

1329 1329 

1330当您使用 `-p` 启动或继续对话时,您还需要提供提示,作为参数或通过 stdin 管道传输。当 `SessionStart` hook 提供 [`initialUserMessage`](#sessionstart-decision-control) 或当您恢复带有 [延迟工具调用](#defer-a-tool-call-for-later) 的会话时,您可以跳过提示。1330当您使用 `-p` 开始或继续对话时,还需要提供提示词,可以作为参数提供,也可以通过 stdin 管道传入。当 `SessionStart` hook 提供了 [`initialUserMessage`](#sessionstart-decision-control),或者您恢复带有[延迟工具调用](#defer-a-tool-call-for-later)的会话时,可以省略提示词。

1331 1331 

1332成功时,`--init-only` 不向终端打印任何内容。要确认 hooks 运行,请使用 `claude --debug-file <path> --init-only` 启动,将 `<path>` 替换为日志文件位置,并检查日志中的 Setup 和 SessionStart hook 条目。1332成功时,`--init-only` 不会向终端打印任何内容。要确认 hook 已运行,请使用 `claude --debug-file <path> --init-only` 启动,将 `<path>` 替换为日志文件位置,然后在日志中检查 Setup 和 SessionStart hook 条目。

1333 1333 

1334由于 Setup 不会在每次启动时触发,需要安装依赖的插件不能仅依赖 Setup。实际的模式是在首次使用时检查依赖并在缺失时安装,例如测试 `${CLAUDE_PLUGIN_DATA}/node_modules` 的 hook 或 skill,如果不存在则运行 `npm install`。有关存储已安装依赖的位置,请参阅 [持久数据目录](/docs/zh-CN/plugins/components#path-variables-and-persistent-data)。如果您通过市场分发插件,您可能不需要此模式:Claude Code [在缓存插件时自动安装符合条件的 Node.js 包依赖](/docs/zh-CN/plugins/loading#node-js-package-dependencies)。1334由于 Setup 并非每次启动都会触发,需要安装依赖的插件不能仅依赖 Setup。实用的模式是在首次使用时检查依赖,缺失时再安装,例如由 hook 或 skill 检测 `${CLAUDE_PLUGIN_DATA}/node_modules`,若不存在则运行 `npm install`。有关存储已安装依赖的位置,请参阅[持久数据目录](/docs/zh-CN/plugins/components#path-variables-and-persistent-data)。如果您通过市场分发插件,则可能不需要此模式:Claude Code 在缓存插件时会[自动安装符合条件的 Node.js 包依赖](/docs/zh-CN/plugins/loading#node-js-package-dependencies)。

1335 1335 

1336<h4 id="setup-input">1336<h4 id="setup-input">

1337 Setup 输入1337 Setup 输入

1338</h4>1338</h4>

1339 1339 

1340除了 [常见输入字段](#common-input-fields) 外,Setup hooks 接收设置为 `"init"` 或 `"maintenance"` 的 `trigger` 字段:1340除了[通用输入字段](#common-input-fields)之外,Setup hook 还会接收一个 `trigger` 字段,其值为 `"init"` 或 `"maintenance"`:

1341 1341 

1342```json theme={null}1342```json theme={null}

1343{1343{


1353 Setup 决策控制1353 Setup 决策控制

1354</h4>1354</h4>

1355 1355 

1356Setup hooks 无法阻止;执行在任何退出代码上继续。在每个退出代码上,Claude Code 丢弃 Setup hook 的 [JSON 输出字段](#json-output),如 `systemMessage`、`continue` 和 `hookSpecificOutput.additionalContext`。使用 `-p`,Setup hook 的 stdout、stderr 和退出代码仅在您使用 `--output-format stream-json --verbose` 启动时作为 [`hook_response` 事件](/docs/zh-CN/headless#read-session-metadata) 出现在运行的输出中。1356Setup hook 无法阻止执行;无论退出码如何,执行都会继续。对于任何退出码,Claude Code 都会丢弃 Setup hook 的 [JSON 输出字段](#json-output),例如 `systemMessage`、`continue` 和 `hookSpecificOutput.additionalContext`。使用 `-p` 时,只有在以 `--output-format stream-json --verbose` 启动时,Setup hook 的 stdout、stderr 和退出码才会作为 [`hook_response` 事件](/docs/zh-CN/headless#read-session-metadata)出现在运行输出中。

1357 1357 

1358Setup hooks 可以访问 `CLAUDE_ENV_FILE`。写入该文件的变量持久化到会话的后续 Bash 命令中,就像在 [SessionStart hooks](#persist-environment-variables) 中一样。仅 `type: "command"` hooks 在 `Setup` 上运行。`type: "mcp_tool"` hook 在 `Setup` 上总是被跳过,如 [MCP tool hook 字段](#mcp-tool-hook-fields) 下所述。1358Setup hook 可以访问 `CLAUDE_ENV_FILE`。写入该文件的变量会持久保留到该会话的后续 Bash 命令中,与 [SessionStart hook](#persist-environment-variables) 中相同。只有 `type: "command"` hook 会在 `Setup` 上运行。`Setup` 上的 `type: "mcp_tool"` hook 总是会被跳过,如 [MCP 工具 hook 字段](#mcp-tool-hook-fields)中所述。

1359 1359 

1360<h3 id="instructionsloaded">1360<h3 id="instructionsloaded">

1361 InstructionsLoaded1361 InstructionsLoaded

1362</h3>1362</h3>

1363 1363 

1364当 `CLAUDE.md` 或 `.claude/rules/*.md` 文件加载到上下文中时触发。此事件在会话启动时对于急切加载的文件触发,稍后当文件被懒加载时再次触发,例如当 Claude 访问包含嵌套 `CLAUDE.md` 的子目录或当带有 `paths:` frontmatter 的条件规则匹配时。hook 不支持阻止或决策控制。它异步运行以用于可观测性目的。1364在 `CLAUDE.md` 或 `.claude/rules/*.md` 文件被加载到上下文中时触发。此事件会在会话开始时针对预先加载的文件触发,之后在文件被延迟加载时再次触发,例如当 Claude 访问包含嵌套 `CLAUDE.md` 的子目录时,或当带有 `paths:` frontmatter 的条件规则匹配时。该 hook 不支持阻止或决策控制。它以异步方式运行,用于可观测性目的。

1365 1365 

1366当 Claude [直接通过 **Project instructions** 设置读取 `AGENTS.md`](/docs/zh-CN/memory#agents-md) 时,此事件不触发。当 `CLAUDE.md` 导入您的 `AGENTS.md` 时它会触发,`load_reason` 设置为 `include`(与任何其他导入文件一样),以及当 `CLAUDE.md` 是它的符号链接时,作为正常的 `CLAUDE.md` 加载。1366当 Claude 通过 **Project instructions** 设置[直接读取 `AGENTS.md`](/docs/zh-CN/memory#agents-md) 时,此事件不会触发。当 `CLAUDE.md` 导入您的 `AGENTS.md` 时,此事件会触发,`load_reason` 与其他任何导入文件一样设置为 `include`;当 `CLAUDE.md` 是指向它的符号链接时,此事件也会作为普通的 `CLAUDE.md` 加载而触发。

1367 1367 

1368匹配器针对 `load_reason` 运行。例如,使用 `"matcher": "session_start"` 仅对在会话启动时加载的文件触发,或 `"matcher": "path_glob_match|nested_traversal"` 仅对懒加载触发。1368匹配器针对 `load_reason` 运行。例如,使用 `"matcher": "session_start"` 仅针对会话开始时加载的文件触发,或使用 `"matcher": "path_glob_match|nested_traversal"` 仅针对延迟加载触发。

1369 1369 

1370<h4 id="instructionsloaded-input">1370<h4 id="instructionsloaded-input">

1371 InstructionsLoaded 输入1371 InstructionsLoaded 输入

1372</h4>1372</h4>

1373 1373 

1374除了 [常见输入字段](#common-input-fields) 外,InstructionsLoaded hooks 接收这些字段:1374除了[通用输入字段](#common-input-fields)之外,InstructionsLoaded hook 还会接收以下字段:

1375 1375 

1376| 字段 | 描述 |1376| 字段 | 描述 |

1377| :- | :- |1377| :- | :- |

1378| `file_path` | 加载的指令文件的绝对路径 |1378| `file_path` | 已加载的指令文件的绝对路径 |

1379| `memory_type` | 文件的范围:`"User"`、`"Project"`、`"Local"` 或 `"Managed"` |1379| `memory_type` | 文件的作用域:`"User"`、`"Project"`、`"Local"` 或 `"Managed"` |

1380| `load_reason` | 文件加载的原因:`"session_start"`、`"nested_traversal"`、`"path_glob_match"`、`"include"` 或 `"compact"`。`"compact"` 值在压缩事件后重新加载指令文件时触发 |1380| `load_reason` | 文件被加载的原因:`"session_start"`、`"nested_traversal"`、`"path_glob_match"`、`"include"` 或 `"compact"`。`"compact"` 值在压缩事件后重新加载指令文件时触发 |

1381| `globs` | 文件 `paths:` frontmatter 中的路径 glob 模式(如果有)。仅对 `path_glob_match` 加载出现 |1381| `globs` | 文件 `paths:` frontmatter 中的路径 glob 模式(如有)。仅在 `path_glob_match` 加载时出现 |

1382| `trigger_file_path` | 触发此加载的文件的路径,用于懒加载 |1382| `trigger_file_path` | 对于延迟加载,指其访问触发了此次加载的文件的路径 |

1383| `parent_file_path` | 包含此文件的父指令文件的路径,用于 `include` 加载 |1383| `parent_file_path` | 对于 `include` 加载,指包含此文件的父指令文件的路径 |

1384 1384 

1385```json theme={null}1385```json theme={null}

1386{1386{


1398 InstructionsLoaded 决策控制1398 InstructionsLoaded 决策控制

1399</h4>1399</h4>

1400 1400 

1401InstructionsLoaded hooks 没有决策控制。它们无法阻止或修改指令加载。Claude Code 丢弃它们的 [JSON 输出字段](#json-output),如 `systemMessage` 和 `continue`。使用此事件进行审计日志、合规性跟踪或可观测性。1401InstructionsLoaded hook 没有决策控制。它们无法阻止或修改指令加载。Claude Code 会丢弃它们的 [JSON 输出字段](#json-output),例如 `systemMessage` 和 `continue`。可将此事件用于审计日志记录、合规跟踪或可观测性。

1402 1402 

1403<h3 id="userpromptsubmit">1403<h3 id="userpromptsubmit">

1404 UserPromptSubmit1404 UserPromptSubmit

1405</h3>1405</h3>

1406 1406 

1407在用户提交提示时运行,在 Claude 处理它之前。这允许您根据提示/对话添加额外上下文、验证提示或阻止某些类型的提示。1407在提交提示词时、Claude 处理它之前运行。这使您可以

1408根据提示词/对话添加额外的上下文、验证提示词,或

1409阻止某些类型的提示词。

1408 1410 

1409`UserPromptSubmit` hooks 对 `command`、`http` 和 `mcp_tool` 类型的默认超时为 30 秒,比大多数其他事件的 600 秒默认值更短。因为此 hook 在每个提示之前运行并阻止模型处理直到它完成,卡住的 hook 会停滞会话。如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。1411`UserPromptSubmit` hook 不仅在您输入的提示词上触发。Claude Code 还会在以下情况下运行它们:

1410 1412 

1411除了您使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook,达到超时的 `UserPromptSubmit` 命令、HTTP 或 MCP tool hook 被取消,其输出(包括任何 `additionalContext`)被丢弃。提示仍然到达 Claude 而没有该上下文。成绩单显示一个通知,命名 hook、触发的超时以及输出被丢弃。1413* [定时任务](/docs/zh-CN/scheduled-tasks)触发,包括 `/loop` 的每次迭代

1414* [后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)向启动它的会话回报

1415* [另一个会话发送的消息](/docs/zh-CN/cross-session-messaging)到达您的主对话

1412 1416 

1413在 `UserPromptSubmit` 上达到超时的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 用命名 hook 和超时的消息阻止提示,因为那里的回调可能充当必须不能失败打开的策略门。会话继续。在 v2.1.208 之前,该事件上的回调超时以执行错误结束回合。1417对于 `command`、`http` 和 `mcp_tool` 类型,`UserPromptSubmit` hook 的默认超时时间为 30 秒,短于这些类型在大多数其他事件上的 600 秒默认值。由于此 hook 在每个提示词之前运行,并会阻塞模型处理直到完成,卡住的 hook 会使会话停滞。如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。

1418 

1419除了您使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook 之外,达到超时的 `UserPromptSubmit` 命令、HTTP 或 MCP 工具 hook 会被取消,其输出(包括任何 `additionalContext`)会被丢弃。提示词仍会传递给 Claude,但不带该上下文。会话记录中会显示一条通知,指明该 hook、触发的超时时间,以及输出已被丢弃。

1420 

1421`UserPromptSubmit` 上达到超时的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会阻止该提示词,并显示一条指明该 hook 和超时时间的消息,因为此处的回调可能充当不能在失败时放行的策略关卡。会话会继续。在 v2.1.208 之前,该事件上的回调超时会以执行错误结束该轮次。

1414 1422 

1415<h4 id="userpromptsubmit-input">1423<h4 id="userpromptsubmit-input">

1416 UserPromptSubmit 输入1424 UserPromptSubmit 输入

1417</h4>1425</h4>

1418 1426 

1419除了 [常见输入字段](#common-input-fields) 外,UserPromptSubmit hooks 接收包含用户提交的文本的 `prompt` 字段。折叠为 `[Pasted text #N]` 占位符的粘贴内容在原位展开到达。在 Claude Code [为 Claude 标记粘贴文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text) 的会话中,该展开的内容位于 `<pasted_content id="…">` 行和 `</pasted_content id="…">` 行之间,因此如果您的 hook 解析提示,请考虑这些行。1427除了[通用输入字段](#common-input-fields)之外,UserPromptSubmit hook 还会接收包含所提交文本的 `prompt` 字段。折叠为 `[Pasted text #N]` 占位符的粘贴内容会在原位置展开后传入。在 Claude Code [为 Claude 标记粘贴文本](/docs/zh-CN/terminal-config#how-claude-treats-pasted-text)的会话中,展开的内容位于 `<pasted_content id="…">` 行和 `</pasted_content id="…">` 行之间,因此如果您的 hook 解析提示词,请考虑这些行。

1420 1428 

1421UserPromptSubmit hooks 也在会话有自定义标题时接收 `session_title`,含义与 [SessionStart `session_title` 字段](#sessionstart-input) 相同。1429当会话具有自定义标题时,UserPromptSubmit hook 还会接收 `session_title`,其含义与 [SessionStart 的 `session_title` 字段](#sessionstart-input)相同。

1422 1430 

1423```json theme={null}1431```json theme={null}

1424{1432{


1435 UserPromptSubmit 决策控制1443 UserPromptSubmit 决策控制

1436</h4>1444</h4>

1437 1445 

1438`UserPromptSubmit` hooks 可以控制是否处理用户提示并添加上下文。所有 [JSON 输出字段](#json-output) 都可用。1446`UserPromptSubmit` hook 可以控制是否处理已提交的提示词,并添加上下文。所有 [JSON 输出字段](#json-output)均可用。

1439 1447 

1440有两种方式在退出代码 0 上向对话添加上下文:1448在退出码为 0 时,有两种方式向对话添加上下文:

1441 1449 

1442* **纯文本 stdout**:Claude Code 添加它 [视为纯文本](#exit-code-0) 的 stdout 到 Claude 的上下文1450* **纯文本 stdout**:Claude Code 会将其[视为纯文本](#exit-code-0)的 stdout 添加到 Claude 的上下文中

1443* **带有 `additionalContext` 的 JSON**:使用下面的 JSON 格式以获得更多控制。`additionalContext` 字段作为上下文添加1451* **带有 `additionalContext` 的 JSON**:使用下面的 JSON 格式以获得更多控制。`additionalContext` 字段会作为上下文添加

1444 1452 

1445两个通道都不产生可见的成绩单条目。纯 stdout 和 `additionalContext` 值各自作为以 hook 名称开头的系统提醒注入;Claude 读取两者。要确认传递,请检查 [调试日志](#debug-hooks)。1453这两种方式都不会在会话记录中产生可见条目。纯 stdout 和 `additionalContext` 值各自作为以 hook 名称开头的系统提醒注入;Claude 会读取两者。要确认是否已传递,请查看[调试日志](#debug-hooks)。

1446 1454 

1447要阻止提示,返回一个 JSON 对象,其中 `decision` 设置为 `"block"`:1455要阻止提示词,请返回一个 `decision` 设置为 `"block"` 的 JSON 对象:

1448 1456 

1449| 字段 | 描述 |1457| 字段 | 描述 |

1450| :- | :- |1458| :- | :- |

1451| `decision` | `"block"` 防止提示被处理。省略以允许提示继续 |1459| `decision` | `"block"` 会在提示词到达 Claude 之前将其拦截。省略则允许提示词继续 |

1452| `reason` | 当 `decision` 为 `"block"` 时显示给用户。不添加到上下文 |1460| `reason` | 当 `decision` 为 `"block"` 时显示给用户。不会添加到上下文中 |

1453| `additionalContext` | 与提交的提示一起添加到 Claude 上下文的字符串。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |1461| `additionalContext` | 与提交的提示词一起添加到 Claude 上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

1454| `sessionTitle` | 设置会话标题。用于根据提示内容自动命名会话 |1462| `sessionTitle` | 设置会话标题。可用于根据提示词内容自动命名会话 |

1455| `suppressOriginalPrompt` | 如果在 hook 阻止提示时为 `true`,则从阻止消息中省略原始提示文本。请参阅 [被阻止的提示留下什么](#what-a-blocked-prompt-leaves-behind) |1463| `suppressOriginalPrompt` | 如果在 hook 阻止提示词时为 `true`,则阻止消息中不包含提示词文本。请参阅[被阻止的提示词会留下什么](#what-a-blocked-prompt-leaves-behind) |

1456 1464 

1457通过退出 2 阻止的 hook 路由方式与 `reason` 相同:阻止消息向用户显示 stderr 文本,它不添加到上下文。1465通过以退出码 2 退出来阻止的 hook,其处理方式与 `reason` 相同:阻止消息会向用户显示 stderr 文本,且不会添加到上下文中。

1458 1466 

1459```json theme={null}1467```json theme={null}

1460{1468{


1470```1478```

1471 1479 

1472<h4 id="what-a-blocked-prompt-leaves-behind">1480<h4 id="what-a-blocked-prompt-leaves-behind">

1473 被阻止的提示留下什么1481 被阻止的提示词会留下什么

1474</h4>1482</h4>

1475 1483 

1476被阻止的提示永远不会到达 Claude,但其文本不会从任何地方删除。默认情况下,显示给用户的阻止消息以 `Original prompt:` 结尾,后跟提交的文本,Claude Code 将该消息写入会话的成绩单文件。要从消息中省略文本,打印 JSON,其中 `hookSpecificOutput` 中的 `"suppressOriginalPrompt": true`。无论 hook 是用 `decision: "block"` 还是通过退出 2 阻止,这都有效。不打印 JSON 的退出 2 hook 总是在其阻止消息中获得提示文本。1484被阻止的提示词永远不会到达 Claude,但其文本并不会从所有地方移除。默认情况下,显示给用户的阻止消息以 `Original prompt:` 结尾,后跟提交的文本,并且 Claude Code 会将该消息写入磁盘上的会话记录文件。要在消息中省略该文本,请在 `hookSpecificOutput` 中打印带有 `"suppressOriginalPrompt": true` 的 JSON。无论 hook 是通过 `decision: "block"` 还是以退出码 2 退出来阻止,此方法都有效。以退出码 2 退出且未打印 JSON 的 hook,其阻止消息中总是会包含提示词文本。

1477 1485 

1478`suppressOriginalPrompt` 仅更改阻止消息。提交的文本仍然可以出现在本地文件中,如会话成绩单和您的提示历史,因此阻止 hook 不是将秘密保留在磁盘外的方式。要限制或删除这些文件,请参阅 [纯文本存储](/docs/zh-CN/claude-directory#plaintext-storage) 和 [清除本地数据](/docs/zh-CN/claude-directory#clear-local-data)。1486`suppressOriginalPrompt` 仅更改阻止消息。提交的文本仍可能出现在本地文件中,例如会话记录和您的提示词历史记录,因此阻止型 hook 并不是防止机密写入磁盘的方法。要限制或删除这些文件,请参阅[明文存储](/docs/zh-CN/claude-directory#plaintext-storage)和[清除本地数据](/docs/zh-CN/claude-directory#clear-local-data)。

1479 1487 

1480<h3 id="userpromptexpansion">1488<h3 id="userpromptexpansion">

1481 UserPromptExpansion1489 UserPromptExpansion

1482</h3>1490</h3>

1483 1491 

1484当用户输入的命令在到达 Claude 之前展开为提示时运行。使用此来阻止特定命令的直接调用、为特定 skill 注入上下文或记录用户调用哪些命令。例如,匹配 `deploy` 的 hook 可以阻止 `/deploy`,除非存在批准文件,或匹配审查 skill 的 hook 可以将团队的审查清单附加为 `additionalContext`。1492在用户输入的命令展开为提示词、到达 Claude 之前运行。可用于阻止直接调用特定命令、为特定 skill 注入上下文,或记录用户调用了哪些命令。例如,匹配 `deploy` 的 hook 可以在不存在批准文件时阻止 `/deploy`,或者匹配某个审查 skill 的 hook 可以将团队的审查清单作为 `additionalContext` 追加。

1485 1493 

1486此事件涵盖 `PreToolUse` 不涵盖的路径:匹配 `Skill` 工具的 `PreToolUse` hook 仅在 Claude 调用工具时触发,但直接输入 `/skillname` 绕过 `PreToolUse`。`UserPromptExpansion` 在该直接路径上触发。1494此事件覆盖了 `PreToolUse` 未覆盖的路径:匹配 `Skill` 工具的 `PreToolUse` hook 只在 Claude 调用该工具时触发,而直接输入 `/skillname` 会绕过 `PreToolUse`。`UserPromptExpansion` 会在这条直接路径上触发。

1487 1495 

1488在 `command_name` 上匹配。将匹配器留空以对每个提示类型命令触发。1496针对 `command_name` 进行匹配。将匹配器留空可在每个提示词类型的命令上触发。

1489 1497 

1490<h4 id="userpromptexpansion-input">1498<h4 id="userpromptexpansion-input">

1491 UserPromptExpansion 输入1499 UserPromptExpansion 输入

1492</h4>1500</h4>

1493 1501 

1494除了 [常见输入字段](#common-input-fields) 外,UserPromptExpansion hooks 接收 `expansion_type`、`command_name`、`command_args`、`command_source` 和原始 `prompt` 字符串。`expansion_type` 字段对于 skill 和自定义命令为 `slash_command`,或对于 MCP 服务器提示为 `mcp_prompt`。1502除了[通用输入字段](#common-input-fields)之外,UserPromptExpansion hook 还会接收 `expansion_type`、`command_name`、`command_args`、`command_source` 以及原始的 `prompt` 字符串。对于 skill 和自定义命令,`expansion_type` 字段为 `slash_command`;对于 MCP 服务器提示词,该字段为 `mcp_prompt`。

1495 1503 

1496```json theme={null}1504```json theme={null}

1497{1505{


1512 UserPromptExpansion 决策控制1520 UserPromptExpansion 决策控制

1513</h4>1521</h4>

1514 1522 

1515`UserPromptExpansion` hooks 可以阻止展开或添加上下文。所有 [JSON 输出字段](#json-output) 都可用。1523`UserPromptExpansion` hook 可以阻止展开或添加上下文。所有 [JSON 输出字段](#json-output)均可使用。

1516 1524 

1517| 字段 | 描述 |1525| 字段 | 描述 |

1518| :- | :- |1526| :- | :- |

1519| `decision` | `"block"` 防止命令展开。省略以允许它继续 |1527| `decision` | `"block"` 会阻止命令展开。省略则允许其继续 |

1520| `reason` | 当 `decision` 为 `"block"` 时显示给用户 |1528| `reason` | 当 `decision` 为 `"block"` 时显示给用户 |

1521| `additionalContext` | 与展开的提示一起添加到 Claude 上下文的字符串。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |1529| `additionalContext` | 与展开后的提示词一起添加到 Claude 上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

1522 1530 

1523通过退出 2 阻止的 hook 路由方式与 `reason` 相同:阻止消息向用户显示 stderr 文本。1531通过以退出码 2 退出来阻止的 hook,其处理方式与 `reason` 相同:阻止消息会向用户显示 stderr 文本。

1524 1532 

1525```json theme={null}1533```json theme={null}

1526{1534{


1537 MessageDisplay1545 MessageDisplay

1538</h3>1546</h3>

1539 1547 

1540在助手消息流向屏幕时运行。Claude Code 分批显示消息:每次一批新完成的行准备好渲染时,hook 运行一次,这些行和 Claude Code 渲染 hook 的替换文本代替它们。长消息产生多个调用;短消息可能只产生一个。1548在助手消息流式显示到屏幕上时运行。Claude Code 以增量方式显示消息:每当一批新完成的行准备好渲染时,hook 就会以这些行运行一次,Claude Code 会在原位置渲染 hook 的替换文本。长消息会产生多次调用;短消息可能只产生一次。

1541 1549 

1542使用 MessageDisplay 来:1550可使用 MessageDisplay 来:

1543 1551 

1544* 为最小显示剥离 markdown1552* 去除 markdown 以实现极简显示

1545* 转换 Agent SDK 应用程序向其用户显示的文本1553* 转换 Agent SDK 应用程序向其用户显示的文本

1546* 从 Claude 的响应中编辑 API 密钥或内部主机名1554* 从 Claude 的回复中编辑隐去 API 密钥或内部主机名

1547 1555 

1548Claude Code 保持每个批次直到您的 hook 返回,因此保持 hook 快速。如果 hook 失败或超时,Claude Code 显示原始文本。此事件的默认超时为 10 秒;如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。1556Claude Code 会保留每一批内容直到您的 hook 返回,因此请保持 hook 快速执行。如果 hook 失败或超时,Claude Code 会显示原始文本。此事件的默认超时时间为 10 秒;如果您的 hook 需要更多时间,请在 hook 条目中设置 `timeout` 字段。

1549 1557 

1550MessageDisplay 仅用于显示:替换文本仅更改屏幕上呈现的内容。成绩单和 Claude 看到的内容保持原始文本,因此 Claude 永远看不到替换,详细模式显示原始。hook 仅接收助手消息文本,因此工具结果和您输入的文本呈现不变。1558MessageDisplay 仅影响显示:替换文本只改变屏幕上渲染的内容。会话记录和 Claude 看到的内容保留原始文本,因此 Claude 永远看不到替换内容,详细模式也会显示原始文本。该 hook 仅接收助手消息文本,因此工具结果和您输入的文本会原样渲染。

1551 1559 

1552MessageDisplay 不支持匹配器,对每个流文本的助手消息触发;没有文本的消息(如仅工具调用响应)不触发它。1560MessageDisplay 不支持匹配器,会针对每条流式输出文本的助手消息触发;不含文本的消息(例如仅包含工具调用的回复)不会触发它。

1553 1561 

1554在非交互式运行中,包括 Agent SDK 查询和 `claude -p`,MessageDisplay 每个助手消息运行一次而不是每批行运行一次。单个调用在消息完成后到达并携带完整消息文本:`index` 为 `0`,`final` 为 `true`,`delta` 保持整个消息。为每个消息收集 `delta` 文本的 hook 在两种模式中接收相同的总文本。1562在非交互运行中(包括 Agent SDK 查询和 `claude -p`),MessageDisplay 对每条助手消息运行一次,而不是对每批行运行一次。这一次调用在消息完成后到达,并携带完整的消息文本:`index` 为 `0`,`final` 为 `true`,`delta` 包含整条消息。收集每条消息 `delta` 文本的 hook 在两种模式下收到的总文本相同。

1555 1563 

1556<h4 id="messagedisplay-input">1564<h4 id="messagedisplay-input">

1557 MessageDisplay 输入1565 MessageDisplay 输入

1558</h4>1566</h4>

1559 1567 

1560除了 [常见输入字段](#common-input-fields) 外,MessageDisplay hooks 接收回合和消息的标识符、此调用在消息中的位置以及 `delta` 中的新文本。批次边界取决于文本如何流,因此使用 `index` 和 `final` 来跟踪通过消息的进度,而不是期望行以特定方式分组。1568除了[通用输入字段](#common-input-fields)之外,MessageDisplay hook 还会接收轮次和消息的标识符、此次调用在消息中的位置,以及 `delta` 中的新文本。批次边界取决于文本的流式传输方式,因此请使用 `index` 和 `final` 跟踪消息的进度,而不要期望行以特定方式分组。

1561 1569 

1562| 字段 | 描述 |1570| 字段 | 描述 |

1563| :- | :- |1571| :- | :- |

1564| `turn_id` | 当前回合的 UUID |1572| `turn_id` | 当前轮次的 UUID |

1565| `message_id` | 正在显示的助手消息的 UUID。在同一消息的每个批次中稳定。这不是 API `msg_…` id,因此无法与成绩单消息 ids 关联 |1573| `message_id` | 正在显示的助手消息的 UUID。在同一消息的每一批中保持不变。这不是 API 的 `msg_…` id,因此无法与会话记录中的消息 id 关联 |

1566| `index` | 此批次在消息中的零基索引 |1574| `index` | 此批次在消息中的从零开始的索引 |

1567| `final` | 在消息的最后一个批次上为 `true`。每个消息恰好有一个最终批次 |1575| `final` | 在消息的最后一批上为 `true`。每条消息恰好有一个最终批次 |

1568| `delta` | 自上一个批次以来新完成的行,包括终止换行符。始终是完整行,除了可能以行中间结束的最终批次。在交互式运行中,当消息以换行符结束时最终批次的 delta 为空,因此将 `final` 而不是非空 delta 视为消息结束信号。在 Agent SDK 和 `claude -p` 运行中,单个调用携带整个消息 |1576| `delta` | 自上一批次以来新完成的行,包含结尾的换行符。始终为完整的行,但最终批次可能在行中间结束。在交互运行中,当消息以换行符结尾时,最终批次的 delta 为空,因此请将 `final`(而非非空的 delta)视为消息结束的信号。在 Agent SDK 和 `claude -p` 运行中,单次调用携带整条消息 |

1569 1577 

1570```json theme={null}1578```json theme={null}

1571{1579{


1585 MessageDisplay 输出1593 MessageDisplay 输出

1586</h4>1594</h4>

1587 1595 

1588除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,MessageDisplay hooks 可以返回 `displayContent` 来替换屏幕上的 delta:1596除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,MessageDisplay hook 还可以返回 `displayContent`,以在屏幕上替换 delta:

1589 1597 

1590| 字段 | 描述 |1598| 字段 | 描述 |

1591| :- | :- |1599| :- | :- |

1592| `displayContent` | 显示代替 delta 的文本。省略以显示原始 |1600| `displayContent` | 代替 delta 显示的文本。省略则显示原始内容 |

1593 1601 

1594MessageDisplay hooks 没有决策控制。它们无法阻止消息或更改存储在成绩单中或发送给 Claude 的内容。Claude Code 作用于它们的 JSON 输出中的 `displayContent` 并丢弃 `systemMessage` 和 `continue`。1602MessageDisplay hook 没有决策控制。它们无法阻止消息,也无法更改存储在会话记录中或发送给 Claude 的内容。Claude Code 会处理其 JSON 输出中的 `displayContent`,并丢弃 `systemMessage` 和 `continue`。

1595 1603 

1596此示例从 Claude 的响应中剥离 markdown 格式以获得纯文本显示。脚本从 stdin 读取每个批次,从 `delta` 中删除粗体标记和内联代码反引号,并将结果作为 `displayContent` 返回。1604以下示例从 Claude 的回复中去除 markdown 格式,以实现纯文本显示。该脚本从 stdin 读取每一批内容,从 `delta` 中移除粗体标记和行内代码反引号,并将结果作为 `displayContent` 返回。

1597 1605 

1598<Tabs>1606<Tabs>

1599 <Tab title="macOS/Linux">1607 <Tab title="macOS/Linux">

1600 在您的设置文件中为事件注册命令 hook:1608 在您的设置文件中为该事件注册一个命令 hook:

1601 1609 

1602 ```json theme={null}1610 ```json theme={null}

1603 {1611 {


1617 }1625 }

1618 ```1626 ```

1619 1627 

1620 将此脚本保存到项目中的 `.claude/hooks/plain-display.sh` 并使用 `chmod +x` 使其可执行:1628 将此脚本保存到项目中的 `.claude/hooks/plain-display.sh`,并使用 `chmod +x` 使其可执行:

1621 1629 

1622 ```bash theme={null}1630 ```bash theme={null}

1623 #!/bin/bash1631 #!/bin/bash


1626 </Tab>1634 </Tab>

1627 1635 

1628 <Tab title="Windows (PowerShell)">1636 <Tab title="Windows (PowerShell)">

1629 注册一个命令 hook,通过 PowerShell 运行脚本:1637 注册一个通过 PowerShell 运行脚本的命令 hook:

1630 1638 

1631 ```json theme={null}1639 ```json theme={null}

1632 {1640 {


1652 }1660 }

1653 ```1661 ```

1654 1662 

1655 `-NoProfile` 标志跳过加载您的 PowerShell 配置文件,以便 hook 快速启动,`-ExecutionPolicy Bypass` 让 PowerShell 运行本地脚本文件。1663 `-NoProfile` 标志会跳过加载您的 PowerShell 配置文件,使 hook 快速启动;`-ExecutionPolicy Bypass` 则允许 PowerShell 运行本地脚本文件。

1656 1664 

1657 将此脚本保存到项目中的 `.claude/hooks/plain-display.ps1`:1665 将此脚本保存到项目中的 `.claude/hooks/plain-display.ps1`:

1658 1666 


1669 </Tab>1677 </Tab>

1670</Tabs>1678</Tabs>

1671 1679 

1672没有 markdown 的批次通过不变。如果脚本失败,例如因为 `jq` 缺失,Claude Code 显示原始文本并仅在 [调试输出](#debug-hooks) 中注意失败,而不是在会话中。1680不含 markdown 的批次会原样通过。如果脚本失败(例如因为缺少 `jq`),Claude Code 会显示原始文本,并且仅在[调试输出](#debug-hooks)中记录该失败,而不会在会话中显示。

1673 1681 

1674<h3 id="pretooluse">1682<h3 id="pretooluse">

1675 PreToolUse1683 PreToolUse

1676</h3>1684</h3>

1677 1685 

1678在 Claude 创建工具参数之后和处理工具调用之前运行。在除 `EndConversation` 之外的任何工具名称上匹配:内置工具如 `Bash`、`PowerShell`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`Workflow`、`WebFetch`、`WebSearch`、`AskUserQuestion` 和 `ExitPlanMode`,以及任何 [MCP 工具名称](#match-mcp-tools)。1686在 Claude 创建工具参数之后、处理工具调用之前运行。可匹配除 `EndConversation` 以外的任何工具名称:内置工具,例如 `Bash`、`PowerShell`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`Workflow`、`WebFetch`、`WebSearch`、`AskUserQuestion` 和 `ExitPlanMode`,以及任何 [MCP 工具名称](#match-mcp-tools)。

1679 1687 

1680要在特定文件在磁盘上更改时运行 hook,无论什么写入它,请使用 [FileChanged](#filechanged) 而不是按名称匹配文件编辑工具。与 PreToolUse 不同,Claude Code 在更改后运行 FileChanged hooks,它们没有决策控制,因此它们无法阻止写入。1688要在特定文件于磁盘上发生更改时运行 hook(无论是什么写入的),请使用 [FileChanged](#filechanged),而不是按名称匹配文件编辑工具。与 PreToolUse 不同,Claude Code 在更改之后运行 FileChanged hook,且它们没有决策控制,因此无法阻止写入。

1681 1689 

1682<Warning>1690<Warning>

1683 PreToolUse 仅在 Claude 调用工具时运行。您 [在提示中使用 `@` 引用的文件](/docs/zh-CN/common-workflows#reference-files-and-directories) 添加时没有任何工具调用:Claude Code 在构建提示时插入它们的内容,因此没有 PreToolUse hook 为它们触发,包括匹配 `Read` 的 hooks。要阻止特定路径的 `@` 引用,请改用 [`Read` 拒绝规则](/docs/zh-CN/permissions#read-and-edit)。1691 PreToolUse 仅在 Claude 调用工具时运行。您[在提示词中使用 `@` 引用](/docs/zh-CN/common-workflows#reference-files-and-directories)的文件是在没有任何工具调用的情况下添加的:Claude Code 在构建提示词时插入其内容,因此不会为它们触发任何 PreToolUse hook,包括匹配 `Read` 的 hook。要阻止特定路径被 `@` 引用,请改用 [`Read` 拒绝规则](/docs/zh-CN/permissions#read-and-edit)。

1684 1692 

1685 PreToolUse 也不为 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior) 触发。1693 PreToolUse 也不会为 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior) 触发。

1686</Warning>1694</Warning>

1687 1695 

1688使用 [PreToolUse 决策控制](#pretooluse-decision-control) 来允许、拒绝、询问或延迟工具调用。1696使用 [PreToolUse 决策控制](#pretooluse-decision-control)来允许、拒绝、询问或延迟工具调用。

1689 1697 

1690在 `PreToolUse` 上超过其超时的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 阻止工具调用,Claude 接收命名超时的错误结果。另一个 hook 返回的显式拒绝仍然优先。1698`PreToolUse` 上超过其超时时间的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会阻止该工具调用,Claude 会收到一个指明该超时的错误结果。其他 hook 返回的显式拒绝仍然优先。

1691 1699 

1692<h4 id="pretooluse-input">1700<h4 id="pretooluse-input">

1693 PreToolUse 输入1701 PreToolUse 输入

1694</h4>1702</h4>

1695 1703 

1696除了 [常见输入字段](#common-input-fields) 外,PreToolUse hooks 接收 `tool_name`、`tool_input` 和 `tool_use_id`。1704除了[通用输入字段](#common-input-fields)之外,PreToolUse hook 还会接收 `tool_name`、`tool_input` 和 `tool_use_id`。

1697 1705 

1698对于 [MCP 工具](#match-mcp-tools),输入也携带 `mcp_server`,一个包含服务器 `name` 和 `source` 的对象,说明服务器定义来自何处。`source` 值包括 `plugin`、`sdk` 和配置范围如 `user` 和 `project`。Agent SDK 参考中的 [`McpServerProvenance`](/docs/zh-CN/agent-sdk/typescript#mcpserverprovenance) 列出了所有内容并说明如何处理您不认识的内容。基于 `source` 而不是 `name` 或 `mcp__<server>__` 工具名称前缀做出信任决定。`mcp_server` 字段需要 Claude Code v2.1.274 或更高版本。1706对于 [MCP 工具](#match-mcp-tools),输入中还会携带 `mcp_server`,这是一个包含服务器 `name` 和 `source` 的对象,`source` 说明服务器定义的来源。`source` 的值包括 `plugin`、`sdk`,以及 `user` 和 `project` 等配置作用域。Agent SDK 参考中的 [`McpServerProvenance`](/docs/zh-CN/agent-sdk/typescript#mcpserverprovenance) 列出了所有值,并说明了如何处理无法识别的值。请基于 `source` 做出信任决策,而不是基于 `name` 或 `mcp__<server>__` 工具名称前缀。`mcp_server` 字段需要 Claude Code v2.1.274 或更高版本。

1699 1707 

1700对于文件工具 `Write`、`Edit` 和 `Read`,`tool_input.file_path` 始终是绝对的:1708对于文件工具 `Write`、`Edit` 和 `Read`,`tool_input.file_path` 始终是绝对路径:

1701 1709 

1702* Claude Code 在 hooks 运行之前展开 `~` 和相对路径,因此匹配路径的 hook 无法通过 `~` 或相同路径的相对拼写绕过1710* Claude Code 会在 hook 运行之前展开 `~` 和相对路径,因此基于路径匹配的 hook 无法通过 `~` 或同一路径的相对写法被绕过

1703* 在 Windows 上,路径到达时带有反斜杠分隔符,即使您的 hook 在 Git Bash 下运行,其中 `$PWD` 看起来像 `/c/project`1711* 在 Windows 上,路径以反斜杠分隔符传入,即使您的 hook 在 Git Bash 下运行且 `$PWD` 看起来像 `/c/project`

1704* 用正斜杠编写的比较(如 `/src/` 检查)永远不会匹配反斜杠路径,工具调用继续,就像 hook 没有什么要阻止的一样1712* 使用正斜杠编写的比较(例如 `/src/` 检查)永远不会匹配反斜杠路径,工具调用会像 hook 没有可阻止的内容一样继续进行

1705* 在比较前规范化分隔符:Bash 中的 `FILE_PATH="${FILE_PATH//\\//}"` 或 Python 中的 `file_path.replace("\\", "/")`,然后匹配路径段如 `/src/` 而不是用 `^` 锚定,因为路径是绝对的1713* 在比较之前规范化分隔符:Bash 中使用 `FILE_PATH="${FILE_PATH//\\//}"`,Python 中使用 `file_path.replace("\\", "/")`,然后匹配诸如 `/src/` 之类的路径片段,而不是用 `^` 锚定,因为路径是绝对路径

1706 1714 

1707Windows 上的 `Write` 调用传递:1715Windows 上的 `Write` 调用会传入:

1708 1716 

1709```json theme={null}1717```json theme={null}

1710{1718{


1718}1726}

1719```1727```

1720 1728 

1721`tool_input` 字段取决于工具:1729`tool_input` 字段取决于具体工具:

1722 1730 

1723<a id="bash" />1731<a id="bash" />

1724 1732 


1731| 字段 | 类型 | 示例 | 描述 |1739| 字段 | 类型 | 示例 | 描述 |

1732| :- | :- | :- | :- |1740| :- | :- | :- | :- |

1733| `command` | string | `"npm test"` | 要执行的 shell 命令 |1741| `command` | string | `"npm test"` | 要执行的 shell 命令 |

1734| `description` | string | `"Run test suite"` | 命令执行内容的可选描述 |1742| `description` | string | `"Run test suite"` | 可选的命令功能描述 |

1735| `timeout` | number | `120000` | 可选超时(毫秒)。高于 [最大值](/docs/zh-CN/tools-reference#bash-tool-behavior) 的值被减少到最大值而不是被拒绝 |1743| `timeout` | number | `120000` | 可选的超时时间(毫秒)。超过[最大值](/docs/zh-CN/tools-reference#bash-tool-behavior)的值会被降低为最大值,而不会被拒绝 |

1736| `run_in_background` | boolean | `false` | 是否在后台运行命令 |1744| `run_in_background` | boolean | `false` | 是否在后台运行命令 |

1737 1745 

1738当 Bash 命令更改 Git 存储库中的文件时,Claude Code 可以记录更改的内容。当 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置打开记录时,它在每个权限模式中记录;该设置的条目说明哪些文件可以设置它。否则它仅在自动模式和 `bypassPermissions` 模式中记录,并且仅当 Claude Code 指导 Claude 通过 Bash 编辑文件时。设置 `bashEditDiffEnabled` 为 `false` 以关闭记录。后台命令和只读命令不携带 diff。1746当 Bash 命令更改 Git 仓库中的文件时,Claude Code 可以记录更改的内容。当 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置启用记录时,它会在所有权限模式下记录更改;该设置的条目说明了哪些文件可以设置它。否则,它仅在自动模式和 `bypassPermissions` 模式下记录,并且仅在 Claude Code 指示 Claude 通过 Bash 编辑文件时记录。将 `bashEditDiffEnabled` 设置为 `false` 可关闭记录。后台命令和只读命令不携带 diff。

1739 1747 

1740您的 [PostToolUse hook](#posttooluse) 然后在 `tool_response.bashEditDiff` 中接收更改的文件。列表涵盖命令运行时存储库下更改的内容。Git 忽略的文件和子模块中的文件不列出。需要 Claude Code v2.1.269 或更高版本。1748随后,您的 [PostToolUse hook](#posttooluse) 会在 `tool_response.bashEditDiff` 中接收更改的文件。该列表涵盖命令运行期间仓库下发生更改的内容。Git 忽略的文件和子模块中的文件不会列出。需要 Claude Code v2.1.269 或更高版本。

1741 1749 

1742<Note>1750<Note>

1743 列表是尽力而为的,处于公开测试版。Claude Code 可能会错过更改、包含另一个进程同时更改的文件或在其大小限制处停止。字段形状可能会改变。使用列表查找要审查的内容,而不是强制执行策略。1751 该列表是尽力而为的,目前处于公测阶段。Claude Code 可能会遗漏更改、包含同时被另一个进程更改的文件,或在达到大小限制时停止。字段结构可能会发生变化。请使用该列表来确定需要审查的内容,而不要用它来执行策略。

1744</Note>1752</Note>

1745 1753 

1746`changedFiles` 和 `files` 列出命令更改的内容;其余字段说明该列表的完整性和可靠性。1754`changedFiles` 和 `files` 列出命令更改的内容;其余字段说明该列表的完整程度和可靠程度。

1747 1755 

1748| 字段 | 类型 | 示例 | 描述 |1756| 字段 | 类型 | 示例 | 描述 |

1749| :- | :- | :- | :- |1757| :- | :- | :- | :- |

1750| `changedFiles` | array | `["/path/to/src/app.ts"]` | 命令更改的文件的绝对路径,最多 200 个。每当 `files` 保持 diff 或 `moreFiles` 高于零时出现 |1758| `changedFiles` | array | `["/path/to/src/app.ts"]` | 命令更改的文件的绝对路径,最多 200 个。只要 `files` 包含 diff 或 `moreFiles` 大于零,该字段就会出现 |

1751| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | 最多 5 个更改文件的 diffs,用于显示。对于命令添加或删除的文件,`created` 或 `deleted` 为 `true` |1759| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | 最多 5 个已更改文件的 diff,用于显示。对于命令添加或删除的文件,`created` 或 `deleted` 为 `true` |

1752| `moreFiles` | number | `2` | 在 `files` 中没有 diff 的更改文件计数 |1760| `moreFiles` | number | `2` | 在 `files` 中没有 diff 的已更改文件数量 |

1753| `unavailable` | boolean | `true` | 当 diff 不完整或无法获取时设置 |1761| `unavailable` | boolean | `true` | 当 diff 不完整或无法获取时设置 |

1754| `skipped` | boolean | `true` | 对于移动工作树的 Git 命令设置,如 `git checkout` 或 `git stash`,因此 Claude Code 不取 diff |1762| `skipped` | boolean | `true` | 针对会移动工作树的 Git 命令(例如 `git checkout` 或 `git stash`)设置,此时 Claude Code 不获取 diff |

1755| `shared` | boolean | `true` | 当另一个 Bash 工具调用(如子 agent 的)同时在同一存储库中运行时设置,因此某些列出的更改可能是该命令的 |1763| `shared` | boolean | `true` | 当另一个 Bash 工具调用(例如子代理的调用)同时在同一仓库中运行时设置,因此列出的部分更改可能来自该命令 |

1756 1764 

1757<a id="powershell" />1765<a id="powershell" />

1758 1766 


1760 PowerShell1768 PowerShell

1761</h5>1769</h5>

1762 1770 

1763执行 PowerShell 命令。有关按平台的可用性,请参阅 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)。1771执行 PowerShell 命令。有关各平台的可用性,请参阅 [PowerShell 工具](/docs/zh-CN/tools-reference#powershell-tool)。

1764 1772 

1765字段与 Bash 工具匹配,命令字符串在 `command` 中:1773字段与 Bash 工具相同,命令字符串位于 `command` 中:

1766 1774 

1767| 字段 | 类型 | 示例 | 描述 |1775| 字段 | 类型 | 示例 | 描述 |

1768| :- | :- | :- | :- |1776| :- | :- | :- | :- |

1769| `command` | string | `"Get-ChildItem -Recurse"` | 要执行的 PowerShell 命令 |1777| `command` | string | `"Get-ChildItem -Recurse"` | 要执行的 PowerShell 命令 |

1770| `description` | string | `"List files recursively"` | 命令执行内容的可选描述 |1778| `description` | string | `"List files recursively"` | 可选的命令功能描述 |

1771| `timeout` | number | `120000` | 可选超时(毫秒) |1779| `timeout` | number | `120000` | 可选的超时时间(毫秒) |

1772| `run_in_background` | boolean | `false` | 是否在后台运行命令 |1780| `run_in_background` | boolean | `false` | 是否在后台运行命令 |

1773 1781 

1774在检查 shell 命令的 hooks 中匹配 `Bash|PowerShell`,以便它们涵盖两个工具:1782在检查 shell 命令的 hook 中匹配 `Bash|PowerShell`,以便同时覆盖这两个工具:

1775 1783 

1776* 在 Windows 上,无论 PowerShell 工具在何处启用,Claude 将 PowerShell 视为主 shell 并通过它路由 shell 命令。1784* 在 Windows 上,只要启用了 PowerShell 工具,Claude 就会将 PowerShell 视为主 shell,并通过它执行 shell 命令。

1777* 在没有 Git Bash 的 Windows 上,工具自动启用,Claude Code 根本不注册 Bash 工具。1785* 在没有 Git Bash 的 Windows 上,该工具会自动启用,且 Claude Code 根本不会注册 Bash 工具。

1778* 仅匹配 `Bash` 的 hook 永远不会在那里触发。1786* 仅匹配 `Bash` 的 hook 在那里永远不会触发。

1779 1787 

1780<h5 id="write">1788<h5 id="write">

1781 Write1789 Write


1797| 字段 | 类型 | 示例 | 描述 |1805| 字段 | 类型 | 示例 | 描述 |

1798| :- | :- | :- | :- |1806| :- | :- | :- | :- |

1799| `file_path` | string | `"/path/to/file.txt"` | 要编辑的文件的绝对路径 |1807| `file_path` | string | `"/path/to/file.txt"` | 要编辑的文件的绝对路径 |

1800| `old_string` | string | `"original text"` | 要查找和替换的文本 |1808| `old_string` | string | `"original text"` | 要查找并替换的文本 |

1801| `new_string` | string | `"replacement text"` | 替换文本 |1809| `new_string` | string | `"replacement text"` | 替换文本 |

1802| `replace_all` | boolean | `false` | 是否替换所有出现 |1810| `replace_all` | boolean | `false` | 是否替换所有匹配项 |

1803 1811 

1804<h5 id="read">1812<h5 id="read">

1805 Read1813 Read


1810| 字段 | 类型 | 示例 | 描述 |1818| 字段 | 类型 | 示例 | 描述 |

1811| :- | :- | :- | :- |1819| :- | :- | :- | :- |

1812| `file_path` | string | `"/path/to/file.txt"` | 要读取的文件的绝对路径 |1820| `file_path` | string | `"/path/to/file.txt"` | 要读取的文件的绝对路径 |

1813| `offset` | number | `10` | 可选行号以开始读取 |1821| `offset` | number | `10` | 可选的开始读取的行号 |

1814| `limit` | number | `50` | 可选要读取的行数 |1822| `limit` | number | `50` | 可选的要读取的行数 |

1815 1823 

1816<h5 id="glob">1824<h5 id="glob">

1817 Glob1825 Glob

1818</h5>1826</h5>

1819 1827 

1820查找与 glob 模式匹配的文件。1828查找匹配 glob 模式的文件。

1821 1829 

1822| 字段 | 类型 | 示例 | 描述 |1830| 字段 | 类型 | 示例 | 描述 |

1823| :- | :- | :- | :- |1831| :- | :- | :- | :- |

1824| `pattern` | string | `"**/*.ts"` | 要匹配文件的 glob 模式 |1832| `pattern` | string | `"**/*.ts"` | 用于匹配文件的 glob 模式 |

1825| `path` | string | `"/path/to/dir"` | 可选要搜索的目录。默认为当前工作目录 |1833| `path` | string | `"/path/to/dir"` | 可选的搜索目录。默认为当前工作目录 |

1826 1834 

1827<h5 id="grep">1835<h5 id="grep">

1828 Grep1836 Grep


1833| 字段 | 类型 | 示例 | 描述 |1841| 字段 | 类型 | 示例 | 描述 |

1834| :- | :- | :- | :- |1842| :- | :- | :- | :- |

1835| `pattern` | string | `"TODO.*fix"` | 要搜索的正则表达式模式 |1843| `pattern` | string | `"TODO.*fix"` | 要搜索的正则表达式模式 |

1836| `path` | string | `"/path/to/dir"` | 可选要搜索的文件或目录 |1844| `path` | string | `"/path/to/dir"` | 可选的搜索文件或目录 |

1837| `glob` | string | `"*.ts"` | 可选 glob 模式以过滤文件 |1845| `glob` | string | `"*.ts"` | 可选的用于过滤文件的 glob 模式 |

1838| `output_mode` | string | `"content"` | `"content"`、`"files_with_matches"` 或 `"count"`。默认为 `"files_with_matches"` |1846| `output_mode` | string | `"content"` | `"content"`、`"files_with_matches"` 或 `"count"`。默认为 `"files_with_matches"` |

1839| `-i` | boolean | `true` | 不区分大小写的搜索 |1847| `-i` | boolean | `true` | 不区分大小写的搜索 |

1840| `multiline` | boolean | `false` | 启用多行匹配 |1848| `multiline` | boolean | `false` | 启用多行匹配 |


1843 WebFetch1851 WebFetch

1844</h5>1852</h5>

1845 1853 

1846获取和处理网络内容。1854获取并处理网页内容。

1847 1855 

1848| 字段 | 类型 | 示例 | 描述 |1856| 字段 | 类型 | 示例 | 描述 |

1849| :- | :- | :- | :- |1857| :- | :- | :- | :- |

1850| `url` | string | `"https://example.com/api"` | 要从中获取内容的 URL |1858| `url` | string | `"https://example.com/api"` | 要获取内容的 URL |

1851| `prompt` | string | `"Extract the API endpoints"` | 在获取的内容上运行的提示 |1859| `prompt` | string | `"Extract the API endpoints"` | 在获取的内容上运行的提示词 |

1852 1860 

1853<h5 id="websearch">1861<h5 id="websearch">

1854 WebSearch1862 WebSearch

1855</h5>1863</h5>

1856 1864 

1857搜索网络。1865搜索网页。

1858 1866 

1859| 字段 | 类型 | 示例 | 描述 |1867| 字段 | 类型 | 示例 | 描述 |

1860| :- | :- | :- | :- |1868| :- | :- | :- | :- |

1861| `query` | string | `"react hooks best practices"` | 搜索查询 |1869| `query` | string | `"react hooks best practices"` | 搜索查询 |

1862| `allowed_domains` | array | `["docs.example.com"]` | 可选:仅包含来自这些域的结果 |1870| `allowed_domains` | array | `["docs.example.com"]` | 可选:仅包含来自这些域名的结果 |

1863| `blocked_domains` | array | `["spam.example.com"]` | 可选:排除来自这些域的结果 |1871| `blocked_domains` | array | `["spam.example.com"]` | 可选:排除来自这些域名的结果 |

1864 1872 

1865<h5 id="agent">1873<h5 id="agent">

1866 Agent1874 Agent

1867</h5>1875</h5>

1868 1876 

1869生成 [子 agent](/docs/zh-CN/sub-agents)。1877生成一个[子代理](/docs/zh-CN/sub-agents)。

1870 1878 

1871| 字段 | 类型 | 示例 | 描述 |1879| 字段 | 类型 | 示例 | 描述 |

1872| :- | :- | :- | :- |1880| :- | :- | :- | :- |

1873| `prompt` | string | `"Find all API endpoints"` | agent 要执行的任务 |1881| `prompt` | string | `"Find all API endpoints"` | Agent 要执行的任务 |

1874| `description` | string | `"Find API endpoints"` | 任务的简短描述 |1882| `description` | string | `"Find API endpoints"` | 任务的简短描述 |

1875| `subagent_type` | string | `"Explore"` | 要使用的专门 agent 类型 |1883| `subagent_type` | string | `"Explore"` | 要使用的专用 Agent 类型 |

1876| `model` | string | `"sonnet"` | 可选模型别名以覆盖默认值 |1884| `model` | string | `"sonnet"` | 可选的模型别名,用于覆盖默认值 |

1877 1885 

1878当前台 Agent 调用完成时,您的 [PostToolUse hook](#posttooluse) 在 `tool_response` 中接收子 agent 的结果和运行遥测。读取这些字段以检查运行;对于跨子 agents 的令牌和成本汇总,使用 [令牌和成本计数器](/docs/zh-CN/monitoring-usage#token-counter) 过滤到 `query_source` `"subagent"`,因为 `totalTokens` 和 `usage` 仅涵盖最终请求:1886当前台 Agent 调用完成时,您的 [PostToolUse hook](#posttooluse) 会在 `tool_response` 中接收子代理的结果和运行遥测数据。读取这些字段以检查运行情况;对于跨子代理的 token 和成本汇总,请使用按 `query_source` `"subagent"` 过滤的 [token 和成本计数器](/docs/zh-CN/monitoring-usage#token-counter),因为 `totalTokens` 和 `usage` 仅涵盖最终请求:

1879 1887 

1880| 字段 | 类型 | 示例 | 描述 |1888| 字段 | 类型 | 示例 | 描述 |

1881| :- | :- | :- | :- |1889| :- | :- | :- | :- |

1882| `status` | string | `"completed"` | 前台子代理为 `"completed"`,后台子代理为 `"async_launched"`。子代理默认在后台运行,因此省略 `run_in_background` 的 Agent 调用也会产生 `"async_launched"` |1890| `status` | string | `"completed"` | 前台子代理为 `"completed"`,后台子代理为 `"async_launched"`。子代理默认在后台运行,因此省略 `run_in_background` 的 Agent 调用也会产生 `"async_launched"` |

1883| `agentId` | string | `"a4d2c8f1e0b3a297"` | 子 agent 运行的标识符 |1891| `agentId` | string | `"a4d2c8f1e0b3a297"` | 子代理运行的标识符 |

1884| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | 子 agent 的最终文本块,或对于其报告通过 `SubagentHandback` 的子 agent,关于该交接的简短说明代替 |1892| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | 子代理的最终文本块;对于通过 `SubagentHandback` 提交报告的子代理,则改为一条关于该交回的简短说明 |

1885| `resolvedModel` | string | `"claude-sonnet-4-5"` | 子 agent 启动的模型,可能与请求的模型不同 |1893| `resolvedModel` | string | `"claude-sonnet-4-5"` | 子代理启动时使用的模型,可能与请求的模型不同 |

1886| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 按顺序使用的模型,连续重复折叠;仅在模型在运行中交换时设置。需要 Claude Code v2.1.212 或更高版本 |1894| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 按顺序使用的模型,连续重复项会被合并;仅在运行中途切换了模型时设置。需要 Claude Code v2.1.212 或更高版本 |

1887| `totalTokens` | number | `12450` | 子 agent 最终 API 请求的令牌计数:输入、输出和缓存令牌合并。这不是整个运行的总计 |1895| `totalTokens` | number | `12450` | 子代理最终 API 请求的 token 数:输入、输出和缓存 token 的总和。这不是整个运行的总数 |

1888| `totalDurationMs` | number | `48211` | 子 agent 运行的挂钟持续时间 |1896| `totalDurationMs` | number | `48211` | 子代理运行的实际耗时 |

1889| `totalToolUseCount` | number | `7` | 子 agent 进行的工具调用计数 |1897| `totalToolUseCount` | number | `7` | 子代理进行的工具调用次数 |

1890| `usage` | object | `{"input_tokens": 8320, ...}` | 最终 API 请求的每类型令牌分解:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |1898| `usage` | object | `{"input_tokens": 8320, ...}` | 最终 API 请求按类型划分的 token 明细:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |

1891 1899 

1892在 Claude Code v2.1.271 或更高版本上,使用 [`SubagentHandback`](/docs/zh-CN/tools-reference) 工具运行的子 agent(Claude Code 在 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 中提供)通过该工具而不是作为文本返回其报告。其 `completed` 结果的 `content` 字段然后携带关于该交接的简短说明而不是报告本身。要读取报告,匹配 `PreToolUse` 或 `PostToolUse` hook 在 `SubagentHandback` 上并读取 `tool_input.message`。1900在 Claude Code v2.1.271 或更高版本中,使用 [`SubagentHandback`](/docs/zh-CN/tools-reference) 工具(Claude Code 在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中提供)运行的子代理会通过该工具提交报告,而不是以文本形式返回。此时,其 `completed` 结果的 `content` 字段携带的是关于该交回的简短说明,而不是报告本身。要读取报告,请让 `PreToolUse` 或 `PostToolUse` hook 匹配 `SubagentHandback`,并读取 `tool_input.message`。

1893 1901 

1894对于后台子 agents,工具在任务移到后台时返回,因此 `tool_response` 不携带使用字段:后台启动立即返回,前台任务在 Claude Code 在运行中将其后台化时返回。它有 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。1902对于后台子代理,工具会在任务移至后台时返回,因此 `tool_response` 不携带用量字段:后台启动会立即返回,而被 Claude Code 在运行中途移至后台的前台任务会在该转换时返回。它包含 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。

1895 1903 

1896在 `completed` 响应上,`resolvedModel` 命名子 agent 启动的模型,可能与 `tool_input` 中的 `model` 值不同,如当 `availableModels` 或另一个覆盖适用时。在 `async_launched` 响应上,`resolvedModel` 命名 agent 移到后台时使用的模型,因此在后台化之前发生的交换反映在那里。`modelsUsed` 和后台化时间 `resolvedModel` 行为需要 Claude Code v2.1.212 或更高版本。1904在 `completed` 响应中,`resolvedModel` 指子代理启动时使用的模型,它可能与 `tool_input` 中的 `model` 值不同,例如在 `availableModels` 或其他覆盖生效时。在 `async_launched` 响应中,`resolvedModel` 指 Agent 移至后台时正在使用的模型,因此在移至后台之前发生的切换会反映在其中。`modelsUsed` 以及移至后台时的 `resolvedModel` 行为需要 Claude Code v2.1.212 或更高版本。

1897 1905 

1898<a id="askuserquestion" />1906<a id="askuserquestion" />

1899 1907 


1901 AskUserQuestion1909 AskUserQuestion

1902</h5>1910</h5>

1903 1911 

1904向用户提出一到四个多选问题。1912向用户提出一到四个多项选择题。

1905 1913 

1906| 字段 | 类型 | 示例 | 描述 |1914| 字段 | 类型 | 示例 | 描述 |

1907| :- | :- | :- | :- |1915| :- | :- | :- | :- |

1908| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 要呈现的问题,每个都有 `question` 字符串、简短 `header`、`options` 数组和可选 `multiSelect` 标志 |1916| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 要呈现的问题,每个问题包含一个 `question` 字符串、简短的 `header`、`options` 数组以及可选的 `multiSelect` 标志 |

1909| `answers` | object | `{"Which framework?": "React"}` | 可选。将问题文本映射到选定的选项标签。多选答案用逗号连接标签。Claude 不设置此字段;通过 `updatedInput` 提供它以以编程方式回答 |1917| `answers` | object | `{"Which framework?": "React"}` | 可选。将问题文本映射到所选选项的标签。多选答案以逗号连接标签。Claude 不会设置此字段;可通过 `updatedInput` 提供它以编程方式作答 |

1910 1918 

1911<h5 id="exitplanmode">1919<h5 id="exitplanmode">

1912 ExitPlanMode1920 ExitPlanMode

1913</h5>1921</h5>

1914 1922 

1915呈现计划并要求用户在 Claude 离开 [plan mode](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode) 之前批准它。Claude 在调用工具之前将计划写入磁盘上的文件,因此来自模型的字面 `tool_input` 通常为空。Claude Code 在将输入传递给 hooks 之前注入计划内容和文件路径。1923在 Claude 离开[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)之前呈现计划并请求用户批准。Claude 会在调用该工具之前将计划写入磁盘上的文件,因此模型给出的原始 `tool_input` 通常为空。Claude Code 会在将输入传递给 hook 之前注入计划内容和文件路径。

1916 1924 

1917| 字段 | 类型 | 示例 | 描述 |1925| 字段 | 类型 | 示例 | 描述 |

1918| :- | :- | :- | :- |1926| :- | :- | :- | :- |

1919| `plan` | string | `"## Refactor auth\n1. Extract..."` | Markdown 中的计划内容。从磁盘上的计划文件注入 |1927| `plan` | string | `"## Refactor auth\n1. Extract..."` | Markdown 格式的计划内容。从磁盘上的计划文件注入 |

1920| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | 计划文件的路径。注入 |1928| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | 计划文件的路径。注入 |

1921| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | 已弃用。Claude Code 接受该字段但忽略它。在 v2.1.205 之前,它携带 Claude 请求以实现计划的基于提示的权限 |1929| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | 已弃用。Claude Code 接受该字段但会忽略它。在 v2.1.205 之前,它携带 Claude 为实施计划而请求的基于提示词的权限 |

1922 1930 

1923在 `PostToolUse` 中,`tool_response` 是一个包含 `plan` 和 `filePath` 字段的对象,保持批准的计划,加上内部状态标志。读取 `tool_response.plan` 以获取计划内容,而不是从磁盘重新读取文件。1931在 `PostToolUse` 中,`tool_response` 是一个对象,其中 `plan` 和 `filePath` 字段保存已批准的计划,另外还有内部状态标志。请读取 `tool_response.plan` 获取计划内容,而不要从磁盘重新读取文件。

1924 1932 

1925<h4 id="pretooluse-decision-control">1933<h4 id="pretooluse-decision-control">

1926 PreToolUse 决策控制1934 PreToolUse 决策控制

1927</h4>1935</h4>

1928 1936 

1929`PreToolUse` hooks 可以控制工具调用是否继续。与使用顶级 `decision` 字段的其他 hooks 不同,PreToolUse 在 `hookSpecificOutput` 对象内返回其决策。这给了它更丰富的控制:四个结果(允许、拒绝、询问或延迟)加上在执行前修改工具输入的能力。1937`PreToolUse` hook 可以控制工具调用是否继续。与使用顶层 `decision` 字段的其他 hook 不同,PreToolUse 在 `hookSpecificOutput` 对象中返回其决策。这为其提供了更丰富的控制:四种结果(allow、deny、ask 或 defer),以及在执行前修改工具输入的能力。

1930 1938 

1931| 字段 | 描述 |1939| 字段 | 描述 |

1932| :- | :- |1940| :- | :- |

1933| `permissionDecision` | `"allow"` 跳过权限提示,除了 [任何模式自动批准的操作](/docs/zh-CN/permission-modes#actions-no-mode-auto-approves) 和 `AskUserQuestion` 和 `ExitPlanMode`,它们需要 [`updatedInput` 与其配对](#allow-with-updatedinput)。`"deny"` 防止工具调用。`"ask"` 提示用户确认。`"defer"` 优雅地退出,以便稍后可以恢复工具。[拒绝和询问规则](/docs/zh-CN/permissions#manage-permissions) 仍然被评估,无论 hook 返回什么 |1941| `permissionDecision` | `"allow"` 会跳过权限提示,但[任何模式都不会自动批准的操作](/docs/zh-CN/permission-modes#actions-no-mode-auto-approves)以及 `AskUserQuestion` 和 `ExitPlanMode` 除外,后两者需要[与 `updatedInput` 搭配使用](#allow-with-updatedinput)。`"deny"` 会阻止工具调用。`"ask"` 会提示用户确认。`"defer"` 会正常退出,以便稍后恢复该工具。无论 hook 返回什么,[拒绝和询问规则](/docs/zh-CN/permissions#manage-permissions)仍会被评估 |

1934| `permissionDecisionReason` | 对于 `"ask"`,显示给用户但不显示给 Claude。对于 `"deny"`,显示给 Claude。对于 `"allow"` 和 `"defer"`,仅写入 [调试日志](#debug-hooks) |1942| `permissionDecisionReason` | 对于 `"ask"`,在权限提示中显示给用户。在无人能回答该提示的 `-p` 运行中,当 Claude Code [拒绝该调用](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs)时,Claude 会改为在工具结果中读到该原因。对于 `"deny"`,显示给 Claude。对于 `"allow"` 和 `"defer"`,仅写入[调试日志](#debug-hooks) |

1935| `updatedInput` | 在执行前修改工具的输入参数。替换整个输入对象,因此在修改的输入旁边包含未更改的字段。Claude Code 根据您的 hook 返回的输入而不是 Claude 发送的输入评估权限规则和 Bash 命令的 [自动后台资格](/docs/zh-CN/tools-reference#background-commands)。与 `"allow"` 结合以自动批准,或与 `"ask"` 结合以向用户显示修改的输入。对于 `"defer"`,被忽略 |1943| `updatedInput` | 在执行前修改工具的输入参数。会替换整个输入对象,因此请将未更改的字段与修改后的字段一并包含。Claude Code 会针对您的 hook 返回的输入(而不是 Claude 发送的输入)评估权限规则以及 Bash 命令的[自动移至后台资格](/docs/zh-CN/tools-reference#foreground-commands-that-move-to-the-background)。与 `"allow"` 组合可自动批准,与 `"ask"` 组合可向用户显示修改后的输入。对于 `"defer"`,该字段被忽略 |

1936| `additionalContext` | 与工具结果一起添加到 Claude 上下文的字符串。当 `permissionDecision` 为 `"defer"` 时被忽略。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |1944| `additionalContext` | 与工具结果一起添加到 Claude 上下文中的字符串。当 `permissionDecision` 为 `"defer"` 时被忽略。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

1937 1945 

1938当多个 PreToolUse hooks 返回不同的决策时,优先级为 `deny` > `defer` > `ask` > `allow`。1946当多个 PreToolUse hook 返回不同的决策时,优先级为 `deny` > `defer` > `ask` > `allow`。

1939 1947 

1940通过退出 2 阻止的 hook 路由方式与 `"deny"` 相同:Claude 看到 stderr 消息作为拒绝原因。1948通过以退出码 2 退出来阻止的 hook,其处理方式与 `"deny"` 相同:Claude 会将 stderr 消息视为拒绝原因。

1941 1949 

1942当 hook 返回 `"ask"` 时,显示给用户的权限提示包含一个标签,标识 hook 来自何处:`[settings]` 对于来自任何设置文件或 agent frontmatter 的 hook,`[plugin:<name>]` 对于插件的 hook,或 `[skill]` 对于来自 skill frontmatter 的 hook。这帮助用户理解哪个配置源请求确认。1950当 hook 返回 `"ask"` 时,显示给用户的权限提示会包含一个标签,标明该 hook 的来源:来自任何设置文件或 Agent frontmatter 的 hook 标记为 `[settings]`,插件的 hook 标记为 `[plugin:<name>]`,来自 skill frontmatter 的 hook 标记为 `[skill]`。这有助于用户了解是哪个配置来源在请求确认。

1943 1951 

1944hook 的 `"ask"` 也在 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 中强制权限提示:分类器仍然可以拒绝工具调用,但它无法静默批准调用。在 v2.1.211 之前,分类器可以批准在 [沙箱](/docs/zh-CN/sandboxing) 外运行的 Bash 命令而不显示 hook 请求的提示;分类器仍然对该命令应用了自己的安全规则,hook `"deny"` 总是被尊重。1952hook 的 `"ask"` 在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中也会强制显示权限提示:分类器仍然可以拒绝该工具调用,但无法静默批准该调用。在 v2.1.211 之前,分类器可以批准在[沙箱](/docs/zh-CN/sandboxing)外运行的 Bash 命令,而不显示 hook 所请求的提示;分类器仍会对该命令应用其自身的安全规则,并且 hook 的 `"deny"` 始终会被遵守。

1945 1953 

1946```json theme={null}1954```json theme={null}

1947{1955{


1959 1967 

1960<span id="allow-with-updatedinput" />1968<span id="allow-with-updatedinput" />

1961 1969 

1962在 [非交互模式](/docs/zh-CN/headless) 中使用 `-p` 标志,Claude Code 仅在运行有 [权限主机](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs) 来接收提示时提供 `AskUserQuestion` 和 `ExitPlanMode`,如 Agent SDK `canUseTool` 回调。这些工具需要用户交互。返回 `permissionDecision: "allow"` 与 `updatedInput` 一起满足该要求:hook 从 stdin 读取工具的输入,通过您自己的 UI 收集答案,并在 `updatedInput` 中返回它,以便工具运行而不提示。仅返回 `"allow"` 对这些工具不充分。对于 `AskUserQuestion`,回显原始 `questions` 数组并添加一个 [`answers`](#askuserquestion) 对象,将每个问题的文本映射到选定的答案。1970在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless)下,只有当运行具有接收提示的[权限宿主](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs)(例如 Agent SDK 的 `canUseTool` 回调)时,Claude Code 才会提供 `AskUserQuestion` 和 `ExitPlanMode`。这些工具需要用户交互。同时返回 `permissionDecision: "allow"` 和 `updatedInput` 即可满足这一要求:hook 从 stdin 读取工具的输入,通过您自己的 UI 收集答案,并在 `updatedInput` 中返回,使工具无需提示即可运行。对于这些工具,仅返回 `"allow"` 是不够的。对于 `AskUserQuestion`,请回传原始的 `questions` 数组,并添加一个 [`answers`](#askuserquestion) 对象,将每个问题的文本映射到所选答案。

1963 1971 

1964从 v2.1.199 起,一个 MCP 工具,其服务器用 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 标记它,更严格:hook 无法用 `"allow"` 跳过其批准提示,无论是否有 `updatedInput`,因为 Claude Code 无法确认 hook 收集了工具需要的交互。1972对于其服务器使用 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 标记的 MCP 工具,要求更为严格:hook 无法通过 `"allow"` 跳过其批准提示,无论是否带有 `updatedInput`,因为 Claude Code 无法确认 hook 是否收集了该工具所需的交互。

1965 1973 

1966<Note>1974<Note>

1967 PreToolUse 以前使用顶级 `decision` 和 `reason` 字段,但这些对此事件已弃用。改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。已弃用的值 `"approve"` 和 `"block"` 映射到 `"allow"` 和 `"deny"` 分别。PostToolUse 和 Stop 等其他事件继续使用顶级 `decision` 和 `reason` 作为其当前格式。1975 PreToolUse 之前使用顶层 `decision` 和 `reason` 字段,但这些字段在此事件中已弃用。请改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。已弃用的值 `"approve"` 和 `"block"` 分别映射到 `"allow"` 和 `"deny"`。PostToolUse 和 Stop 等其他事件继续使用顶层 `decision` 和 `reason` 作为其当前格式。

1968</Note>1976</Note>

1969 1977 

1970<h4 id="defer-a-tool-call-for-later">1978<h4 id="defer-a-tool-call-for-later">

1971 延迟工具调用以供稍后使用1979 延迟工具调用以便稍后处理

1972</h4>1980</h4>

1973 1981 

1974`"defer"` 用于运行 `claude -p` 作为子进程并读取其 JSON 输出的集成,如 Agent SDK 应用或构建在 Claude Code 之上的自定义 UI。它让该调用进程在工具调用处暂停 Claude,通过其自己的界面收集输入,并从中断处恢复。Claude Code 仅在 [非交互模式](/docs/zh-CN/headless) 中使用 `-p` 标志时尊重此值。在交互式会话中,它记录警告并忽略 hook 结果。1982`"defer"` 适用于将 `claude -p` 作为子进程运行并读取其 JSON 输出的集成,例如 Agent SDK 应用或基于 Claude Code 构建的自定义 UI。它允许调用进程在工具调用处暂停 Claude,通过自己的界面收集输入,然后从中断处恢复。Claude Code 仅在使用 `-p` 标志的[非交互模式](/docs/zh-CN/headless)下遵守此值。在交互式会话中,它会记录一条警告并忽略该 hook 结果。

1975 1983 

1976`AskUserQuestion` 工具是典型情况:Claude 想问用户什么,但没有终端来回答。`-p` 运行仅当它有 [权限主机](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs) 时提供 `AskUserQuestion`,如您使用 `--permission-prompt-tool` 传递的 MCP 工具,因此使用一个启动运行。往返工作如下:1984`AskUserQuestion` 工具是典型场景:Claude 想向用户提问,但没有可以作答的终端。`-p` 运行只有在具有[权限宿主](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs)(例如通过 `--permission-prompt-tool` 传入的 MCP 工具)时才会提供 `AskUserQuestion`,因此请使用权限宿主启动运行。完整的往返流程如下:

1977 1985 

19781. Claude 调用 `AskUserQuestion`。`PreToolUse` hook 触发。19861. Claude 调用 `AskUserQuestion`。`PreToolUse` hook 触发。

19792. hook 返回 `permissionDecision: "defer"`。工具不执行。进程以 `stop_reason: "tool_deferred"` 退出,待处理的工具调用保留在成绩单中。19872. hook 返回 `permissionDecision: "defer"`。工具不会执行。进程以 `stop_reason: "tool_deferred"` 退出,待处理的工具调用保留在会话记录中。

19803. 调用进程从 SDK 结果读取 `deferred_tool_use`,在其自己的 UI 中呈现问题,并等待答案。19883. 调用进程从 SDK 结果中读取 `deferred_tool_use`,在自己的 UI 中呈现问题,并等待答案。

19814. 调用进程运行 `claude -p --resume <session-id>`,带有相同的权限主机。相同的工具调用再次触发 `PreToolUse`。19894. 调用进程使用相同的权限宿主运行 `claude -p --resume <session-id>`。同一个工具调用会再次触发 `PreToolUse`。

19825. hook 返回 `permissionDecision: "allow"`,答案在 `updatedInput` 中。工具执行,Claude 继续。19905. hook 返回 `permissionDecision: "allow"`,并在 `updatedInput` 中提供答案。工具执行,Claude 继续。

1983 1991 

1984`deferred_tool_use` 字段携带工具的 `id`、`name` 和 `input`。`input` 是 Claude 为工具调用生成的参数,在执行前捕获:1992`deferred_tool_use` 字段携带工具的 `id`、`name` 和 `input`。`input` 是 Claude 为该工具调用生成的参数,在执行之前捕获:

1985 1993 

1986```json theme={null}1994```json theme={null}

1987{1995{


1997}2005}

1998```2006```

1999 2007 

2000没有超时或重试限制。会话保留在磁盘上直到您恢复它,受 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays) 保留扫描的约束,默认情况下在 30 天后删除会话文件,遵循 [保留扫描规则](/docs/zh-CN/claude-directory#cleaned-up-automatically)。如果恢复时答案还没准备好,hook 可以再次返回 `"defer"`,进程以相同方式退出。调用进程通过最终从 hook 返回 `"allow"` 或 `"deny"` 来控制何时打破循环。2008没有超时或重试次数限制。会话会保留在磁盘上直到您恢复它,但受 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays) 保留期清理的约束,该清理默认在 30 天后删除会话文件,遵循[保留期清理规则](/docs/zh-CN/claude-directory#cleaned-up-automatically)。如果恢复时答案尚未就绪,hook 可以再次返回 `"defer"`,进程会以相同方式退出。调用进程通过最终从 hook 返回 `"allow"` 或 `"deny"` 来控制何时跳出该循环。

2001 2009 

2002`"defer"` 仅在 Claude 在回合中进行单个工具调用时有效。如果 Claude 一次进行多个工具调用,`"defer"` 被忽略并带有警告,工具通过正常权限流程进行。约束存在是因为恢复只能重新运行一个工具:没有办法从批次中延迟一个调用而不留下其他未解决的。2010`"defer"` 仅在 Claude 在该轮次中只进行单个工具调用时有效。如果 Claude 同时进行多个工具调用,`"defer"` 会被忽略并发出警告,工具将按正常权限流程继续。存在此限制是因为恢复时只能重新运行一个工具:无法在不让其他调用悬而未决的情况下延迟一批调用中的某一个。

2003 2011 

2004如果恢复时延迟的工具不再可用,进程以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 退出,hook 触发前。这发生在为恢复的会话未连接提供工具的 MCP 服务器时。`deferred_tool_use` 有效负载仍然包含,以便您可以识别哪个工具丢失。2012如果恢复时被延迟的工具已不可用,进程会在 hook 触发之前以 `stop_reason: "tool_deferred_unavailable"` 和 `is_error: true` 退出。当提供该工具的 MCP 服务器在恢复的会话中未连接时,就会发生这种情况。`deferred_tool_use` 数据仍会包含在内,以便您识别是哪个工具缺失了。

2005 2013 

2006<Note>2014<Note>

2007 要在 plan mode 中恢复延迟会话,请与 `--resume` 一起传递 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags),以便 Claude Code 可以呈现计划以供批准。如果您传递某些其他启动标志,恢复的运行不会返回到 plan mode;请参阅 [使用 `-p` 在 plan mode 中恢复](/docs/zh-CN/sessions#resume-in-plan-mode-with-p)。需要 Claude Code v2.1.246 或更高版本。2015 要在计划模式下恢复被延迟的会话,请将 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 与 `--resume` 一起传入,以便 Claude Code 可以呈现计划供批准。如果您传入某些其他启动标志,恢复的运行不会返回计划模式;请参阅[使用 `-p` 在计划模式下恢复](/docs/zh-CN/sessions#resume-in-plan-mode-with-p)。需要 Claude Code v2.1.246 或更高版本。

2008 2016 

2009 当您使用 `-p` 恢复时,Claude Code 不会恢复任何其他存储的权限模式。它在新 `claude -p` 运行会启动的权限模式中启动运行,因此如果延迟会话使用了一个,请再次传递 `--permission-mode` 或 `--dangerously-skip-permissions`。当您使用 `claude --resume <session-id>` 恢复而不使用 `-p` 时,Claude Code 恢复存储的权限模式,除了 [恢复时的权限模式](/docs/zh-CN/sessions#permission-mode-on-resume) 中列出的例外。2017 当您使用 `-p` 恢复时,Claude Code 不会还原任何其他已存储的权限模式。它会以新的 `claude -p` 运行所使用的权限模式启动,因此如果被延迟的会话使用了 `--permission-mode` 或 `--dangerously-skip-permissions`,请再次传入。当您不带 `-p` 使用 `claude --resume <session-id>` 恢复时,Claude Code 会还原已存储的权限模式,但[恢复时的权限模式](/docs/zh-CN/sessions#permission-mode-on-resume)中列出的例外情况除外。

2010</Note>2018</Note>

2011 2019 

2012<h3 id="permissionrequest">2020<h3 id="permissionrequest">

2013 PermissionRequest2021 PermissionRequest

2014</h3>2022</h3>

2015 2023 

2016在 Claude Code 即将向您请求使用某个工具的权限时运行。在无法显示提示的会话中,例如[非交互模式](/docs/zh-CN/headless)下的后台子代理,Claude Code 仍会运行这些 hook,如果没有 hook 返回决策,则会拒绝该工具调用。对于到达 `--permission-prompt-tool` 或 Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/permissions)的调用,hook 会与您的宿主并行运行,以先做出决策的一方为准。2024在 Claude Code 即将请求您授予使用某个工具的权限时运行。在无法显示提示的会话中,例如[非交互模式](/docs/zh-CN/headless)下的后台子代理,Claude Code 仍会运行这些 hook,如果没有 hook 返回决策,它会拒绝该工具调用。对于到达 `--permission-prompt-tool` 或 Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/permissions)的调用,hook 会与您的宿主并行运行,以先做出决策者为准。

2017使用 [PermissionRequest 决策控制](#permissionrequest-decision-control)代表用户允许或拒绝。2025使用 [PermissionRequest 决策控制](#permissionrequest-decision-control)代表用户允许或拒绝。

2018 2026 

2019当您需要 Claude 要求许可使用工具的时刻的信号时使用此事件。Claude Code 仅在提示等待约六秒后才运行 [Notification](#notification) hook,带有 `permission_prompt` 类型。2027当您需要在 Claude 请求使用工具的权限时立即获得信号,请使用此事件。Claude Code 仅在提示等待约六秒后才会运行 `permission_prompt` 类型的 [Notification](#notification) hook。

2020 2028 

2021Claude Code 不为沙箱命令的 [网络请求](/docs/zh-CN/sandboxing#network-isolation) 运行 PermissionRequest hooks。要获得该提示的信号,请使用 `permission_prompt` 通知类型。2029对于沙箱中命令的[网络请求](/docs/zh-CN/sandboxing#network-isolation),Claude Code 不会运行 PermissionRequest hook。要获得该提示的信号,请使用 `permission_prompt` 通知类型。

2022 2030 

2023在工具名称上匹配,与 PreToolUse 相同的值。2031针对工具名称进行匹配,取值与 PreToolUse 相同。

2024 2032 

2025<h4 id="permissionrequest-input">2033<h4 id="permissionrequest-input">

2026 PermissionRequest 输入2034 PermissionRequest 输入

2027</h4>2035</h4>

2028 2036 

2029PermissionRequest hooks 接收 `tool_name` 和 `tool_input` 字段,如 PreToolUse hooks,但没有 `tool_use_id`。对于 MCP 工具,它们也接收 [`mcp_server`](#pretooluse-input) 对象。可选的 `permission_suggestions` 数组包含 Claude Code 为此请求建议的 [权限更新](#permission-update-entries),如添加允许规则或更改权限模式。2037PermissionRequest hook 会像 PreToolUse hook 一样接收 `tool_name` 和 `tool_input` 字段,但没有 `tool_use_id`。对于 MCP 工具,它们还会接收 [`mcp_server`](#pretooluse-input) 对象。可选的 `permission_suggestions` 数组包含 Claude Code 针对此请求建议的[权限更新](#permission-update-entries),例如添加允许规则或更改权限模式。

2030 2038 

2031`permission_suggestions` 数组不是您看到的选项的精确列表,因为每个权限对话构建自己的选项。某些对话(如文件编辑的对话)根本不读取数组,并从请求本身派生其选项。读取它的对话仍然可以保留一个选项,其建议保留在数组中,例如当 [`allowManagedPermissionRulesOnly`](/docs/zh-CN/settings-reference#allowmanagedpermissionrulesonly) 隐藏规则保存选项时。它也可以提供没有建议条目的选项,如 [**Yes, and switch to auto mode**](/docs/zh-CN/permission-modes#switch-permission-modes),它直接更改权限模式而不是通过权限更新。2039`permission_suggestions` 数组并不是您所看到选项的精确列表,因为每个权限对话框都会构建自己的选项。有些对话框(例如用于文件编辑的对话框)根本不读取该数组,而是从请求本身派生其选项。读取该数组的对话框仍可能隐藏某个建议仍保留在数组中的选项,例如当 [`allowManagedPermissionRulesOnly`](/docs/zh-CN/settings-reference#allowmanagedpermissionrulesonly) 隐藏保存规则的选项时。它也可能提供没有对应建议条目的选项,例如 [**Yes, and switch to auto mode**](/docs/zh-CN/permission-modes#switch-permission-modes),它直接更改权限模式,而不是通过权限更新。

2032 2040 

2033PreToolUse hooks 在每个工具调用之前运行,无论它是否需要权限。PermissionRequest hooks 仅在 Claude Code 即将要求您许可时运行,或当它会以其他方式自动拒绝无法提示的调用时。两个事件都不为 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior) 触发。2041PreToolUse hook 在每次工具调用之前运行,无论是否需要权限。PermissionRequest hook 仅在 Claude Code 即将向您请求权限时运行,或在它原本会自动拒绝无法提示的调用时运行。这两个事件都不会为 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior) 触发。

2034 2042 

2035```json theme={null}2043```json theme={null}

2036{2044{


2059 PermissionRequest 决策控制2067 PermissionRequest 决策控制

2060</h4>2068</h4>

2061 2069 

2062`PermissionRequest` hooks 可以允许或拒绝权限请求。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您的 hook 脚本可以返回一个 `decision` 对象,带有这些事件特定的字段:2070`PermissionRequest` hook 可以允许或拒绝权限请求。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您的 hook 脚本还可以返回一个包含以下特定于事件字段的 `decision` 对象:

2063 2071 

2064| 字段 | 描述 |2072| 字段 | 描述 |

2065| :- | :- |2073| :- | :- |

2066| `behavior` | `"allow"` 授予权限,`"deny"` 拒绝它。[拒绝和询问规则](/docs/zh-CN/permissions#manage-permissions) 仍然被评估,因此返回 `"allow"` 的 hook 不会覆盖匹配的拒绝规则 |2074| `behavior` | `"allow"` 授予权限,`"deny"` 拒绝权限。[拒绝和询问规则](/docs/zh-CN/permissions#manage-permissions)仍会被评估,因此返回 `"allow"` 的 hook 不会覆盖匹配的拒绝规则 |

2067| `updatedInput` | 仅对 `"allow"`:在执行前修改工具的输入参数。替换整个输入对象,因此在修改的输入旁边包含未更改的字段。修改的输入针对拒绝和询问规则重新评估 |2075| `updatedInput` | 仅适用于 `"allow"`:在执行前修改工具的输入参数。会替换整个输入对象,因此请将未更改的字段与修改后的字段一并包含。修改后的输入会根据拒绝和询问规则重新评估 |

2068| `updatedPermissions` | 仅对 `"allow"`:[权限更新条目](#permission-update-entries) 数组以应用,如添加允许规则或更改会话权限模式 |2076| `updatedPermissions` | 仅适用于 `"allow"`:要应用的[权限更新条目](#permission-update-entries)数组,例如添加允许规则或更改会话权限模式 |

2069| `message` | 仅对 `"deny"`:告诉 Claude 为什么权限被拒绝 |2077| `message` | 仅适用于 `"deny"`:告诉 Claude 权限被拒绝的原因 |

2070| `interrupt` | 仅对 `"deny"`:如果 `true`,停止 Claude |2078| `interrupt` | 仅适用于 `"deny"`:如果为 `true`,则停止 Claude |

2071 2079 

2072不带 `decision` 对象退出 2 的 hook 保持权限流程不变,其 stderr 被丢弃。仅 `decision` 对象可以授予或拒绝请求。2080以退出码 2 退出但没有 `decision` 对象的 hook 不会改变权限流程,其 stderr 会被丢弃。只有 `decision` 对象才能授予或拒绝请求。

2073 2081 

2074```json theme={null}2082```json theme={null}

2075{2083{


2089 权限更新条目2097 权限更新条目

2090</h4>2098</h4>

2091 2099 

2092`updatedPermissions` 输出字段和 [`permission_suggestions` 输入字段](#permissionrequest-input) 都使用相同的条目对象数组。每个条目有一个 `type` 来确定其他字段,以及一个 `destination` 来控制更改写入的位置。2100`updatedPermissions` 输出字段和 [`permission_suggestions` 输入字段](#permissionrequest-input)都使用相同的条目对象数组。每个条目都有一个决定其其他字段的 `type`,以及一个控制更改写入位置的 `destination`。

2093 2101 

2094| `type` | 字段 | 效果 |2102| `type` | 字段 | 效果 |

2095| :- | :- | :- |2103| :- | :- | :- |

2096| `addRules` | `rules`、`behavior`、`destination` | 添加权限规则。`rules` 是 `{toolName, ruleContent?}` 对象的数组。省略 `ruleContent` 以匹配整个工具。`behavior` 是 `"allow"`、`"deny"` 或 `"ask"` |2104| `addRules` | `rules`、`behavior`、`destination` | 添加权限规则。`rules` 是 `{toolName, ruleContent?}` 对象的数组。省略 `ruleContent` 可匹配整个工具。`behavior` 为 `"allow"`、`"deny"` 或 `"ask"` |

2097| `replaceRules` | `rules`、`behavior`、`destination` | 用提供的 `rules` 替换 `destination` 处给定 `behavior` 的所有规则 |2105| `replaceRules` | `rules`、`behavior`、`destination` | 用提供的 `rules` 替换 `destination` 处给定 `behavior` 的所有规则 |

2098| `removeRules` | `rules`、`behavior`、`destination` | 删除给定 `behavior` 的匹配规则 |2106| `removeRules` | `rules`、`behavior`、`destination` | 删除给定 `behavior` 的匹配规则 |

2099| `setMode` | `mode`、`destination` | 更改权限模式。有效模式为 `default`、`auto`、`acceptEdits`、`dontAsk`、`bypassPermissions`、`plan` 和 `manual` 作为 `default` 的别名。`manual` 别名需要 Claude Code v2.1.200 或更高版本 |2107| `setMode` | `mode`、`destination` | 更改权限模式。有效模式为 `default`、`auto`、`acceptEdits`、`dontAsk`、`bypassPermissions`、`plan`,以及作为 `default` 别名的 `manual`。`manual` 别名需要 Claude Code v2.1.200 或更高版本 |

2100| `addDirectories` | `directories`、`destination` | 添加工作目录。`directories` 是路径字符串的数组 |2108| `addDirectories` | `directories`、`destination` | 添加工作目录。`directories` 是路径字符串数组 |

2101| `removeDirectories` | `directories`、`destination` | 删除工作目录 |2109| `removeDirectories` | `directories`、`destination` | 移除工作目录 |

2102 2110 

2103<Note>2111<Note>

2104 `setMode` 与 `bypassPermissions` 仅在您使用已可用的绕过模式启动会话时生效:`--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions` 或 [用户、`--settings` 或托管设置](/docs/zh-CN/settings-reference#permissions-defaultmode) 中的 `permissions.defaultMode: "bypassPermissions"`。否则更新是无操作。当 [`permissions.disableBypassPermissionsMode`](/docs/zh-CN/permissions#managed-settings) 禁用模式或会话在 [受限模式](/docs/zh-CN/cli-reference#cli-flags) 中启动时,更新也是无操作。2112 只有当您启动会话时已经可以使用绕过模式,`setMode` 配合 `bypassPermissions` 才会生效:即使用了 `--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions`,或在[用户设置、`--settings` 或托管设置](/docs/zh-CN/settings-reference#permissions-defaultmode)中设置了 `permissions.defaultMode: "bypassPermissions"`。否则该更新不产生任何效果。当 [`permissions.disableBypassPermissionsMode`](/docs/zh-CN/permissions#managed-settings) 禁用了该模式,或会话以[受限模式](/docs/zh-CN/cli-reference#cli-flags)启动时,该更新同样不产生任何效果。

2105 2113 

2106 `bypassPermissions` 永远不会作为 `defaultMode` 持久化,无论 `destination` 如何。2114 无论 `destination` 为何值,`bypassPermissions` 都不会被持久化为 `defaultMode`。

2107</Note>2115</Note>

2108 2116 

2109每个条目上的 `destination` 字段确定更改是保留在内存中还是持久化到设置文件。2117每个条目上的 `destination` 字段决定该更改是仅保留在内存中,还是持久化到设置文件。

2110 2118 

2111| `destination` | 写入 |2119| `destination` | 写入位置 |

2112| :- | :- |2120| :- | :- |

2113| `session` | 仅在内存中,会话结束时丢弃 |2121| `session` | 仅在内存中,会话结束时丢弃 |

2114| `localSettings` | `.claude/settings.local.json` |2122| `localSettings` | `.claude/settings.local.json` |

2115| `projectSettings` | `.claude/settings.json` |2123| `projectSettings` | `.claude/settings.json` |

2116| `userSettings` | `~/.claude/settings.json` |2124| `userSettings` | `~/.claude/settings.json` |

2117 2125 

2118hook 可以回显它接收的 `permission_suggestions` 之一作为其自己的 `updatedPermissions` 输出。2126hook 可以将其收到的某个 `permission_suggestions` 原样作为自己的 `updatedPermissions` 输出返回。

2119 2127 

2120<h3 id="posttooluse">2128<h3 id="posttooluse">

2121 PostToolUse2129 PostToolUse


2123 2131 

2124在工具成功完成后立即运行。2132在工具成功完成后立即运行。

2125 2133 

2126在工具名称上匹配,与 PreToolUse 相同的值。2134按工具名称匹配,取值与 PreToolUse 相同。

2127 2135 

2128当工具名称不是正确的过滤器时更广泛地匹配:2136当工具名称不是合适的过滤条件时,可以进行更宽泛的匹配:

2129 2137 

2130* 要在任何工具成功完成后运行 hook,省略 `matcher` 或将其设置为 `"*"`。您的 hook 然后可以自己发现更改了什么,例如通过运行 `git status --porcelain`,它也列出 `git diff` 错过的未跟踪文件。对于失败的工具调用,在 [PostToolUseFailure](#posttoolusefailure) 下添加相同的 hook。2138* 要在任意工具成功完成后运行 hook,请省略 `matcher` 或将其设为 `"*"`。然后您的 hook 可以自行发现发生了哪些更改,例如运行 `git status --porcelain`,它还会列出 `git diff` 遗漏的未跟踪文件。对于失败的工具调用,请在 [PostToolUseFailure](#posttoolusefailure) 下添加相同的 hook。

2131* 要在特定文件更改时运行 hook,无论什么写入它,请使用 [FileChanged](#filechanged)。当 `Bash` 命令或 Claude Code 外的进程重写同一文件时,Claude Code 不运行匹配 `Edit|Write` 的 `PostToolUse` hook。2139* 要在特定文件在磁盘上发生更改时运行 hook(无论是由什么写入的),请使用 [FileChanged](#filechanged)。当 `Bash` 命令或 Claude Code 之外的进程重写同一文件时,Claude Code 不会运行匹配 `Edit|Write` 的 `PostToolUse` hook。

2132 2140 

2133<h4 id="posttooluse-input">2141<h4 id="posttooluse-input">

2134 PostToolUse 输入2142 PostToolUse 输入

2135</h4>2143</h4>

2136 2144 

2137`PostToolUse` hooks 在工具已经成功执行后触发。输入包括 `tool_input`(发送给工具的参数)和 `tool_response`(它返回的结果)。两者的确切模式取决于工具。文件工具 `tool_input` 路径以与 [PreToolUse](#pretooluse-input) 相同的格式到达:始终绝对,带有平台的本机分隔符,因此 Windows 上的反斜杠。对于 MCP 工具,输入也携带 [`mcp_server`](#pretooluse-input) 对象。2145`PostToolUse` hook 在工具已成功执行后触发。输入同时包含 `tool_input`(发送给工具的参数)和 `tool_response`(工具返回的结果)。两者的确切 schema 取决于具体工具。文件工具的 `tool_input` 路径格式与 [PreToolUse](#pretooluse-input) 相同:始终为绝对路径,使用平台原生分隔符,因此在 Windows 上为反斜杠。对于 MCP 工具,输入还会携带 [`mcp_server`](#pretooluse-input) 对象。

2138 2146 

2139```json theme={null}2147```json theme={null}

2140{2148{


2159 2167 

2160| 字段 | 描述 |2168| 字段 | 描述 |

2161| :- | :- |2169| :- | :- |

2162| `duration_ms` | 可选。工具执行时间(毫秒)。不包括权限提示和 PreToolUse hooks 中花费的时间 |2170| `duration_ms` | 可选。工具执行时间,以毫秒为单位。不包括在权限提示和 PreToolUse hook 中花费的时间 |

2163 2171 

2164<h4 id="posttooluse-decision-control">2172<h4 id="posttooluse-decision-control">

2165 PostToolUse 决策控制2173 PostToolUse 决策控制

2166</h4>2174</h4>

2167 2175 

2168`PostToolUse` hooks 可以在工具执行后提供反馈给 Claude。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您的 hook 脚本可以返回这些事件特定的字段:2176`PostToolUse` hook 可以在工具执行后向 Claude 提供反馈。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您的 hook 脚本还可以返回以下特定于事件的字段:

2169 2177 

2170| 字段 | 描述 |2178| 字段 | 描述 |

2171| :- | :- |2179| :- | :- |

2172| `decision` | `"block"` 在工具结果旁边添加 `reason`。Claude 仍然看到原始输出;要替换它,使用 `updatedToolOutput` |2180| `decision` | `"block"` 会在工具结果旁边添加 `reason`。Claude 仍会看到原始输出;要替换它,请使用 `updatedToolOutput` |

2173| `reason` | 当 `decision` 为 `"block"` 时显示给 Claude 的解释 |2181| `reason` | 当 `decision` 为 `"block"` 时向 Claude 显示的说明 |

2174| `additionalContext` | 与工具结果一起添加到 Claude 上下文的字符串。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |2182| `additionalContext` | 与工具结果一起添加到 Claude 上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

2175| `classifierContext` | 关于此调用结果的简短说明,用于 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器而不是 Claude。有关如何传递文本以及放入其中的内容,请参阅 [为自动模式分类器注释结果](#annotate-a-result-for-the-auto-mode-classifier)。需要 Claude Code v2.1.236 或更高版本 |2183| `classifierContext` | 关于本次调用结果的简短说明,供[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器而非 Claude 使用。请参阅[为自动模式分类器注释结果](#annotate-a-result-for-the-auto-mode-classifier)。需要 Claude Code v2.1.236 或更高版本 |

2176| `updatedToolOutput` | 在将工具的输出发送给 Claude 之前用提供的值替换它。该值必须与工具的输出形状匹配 |2184| `updatedToolOutput` | 在工具输出发送给 Claude 之前,用提供的值替换它。该值必须与工具的输出结构相匹配 |

2177| `updatedMCPToolOutput` | 仅替换 [MCP 工具](#match-mcp-tools) 的输出。优先使用 `updatedToolOutput`,它适用于所有工具 |2185| `updatedMCPToolOutput` | 仅替换 [MCP 工具](#match-mcp-tools)的输出。建议优先使用适用于所有工具的 `updatedToolOutput` |

2178 2186 

2179下面的示例替换 `Bash` 调用的输出。替换值与 `Bash` 工具的输出形状匹配:2187以下示例替换了一次 `Bash` 调用的输出。替换值与 `Bash` 工具的输出结构相匹配:

2180 2188 

2181```json theme={null}2189```json theme={null}

2182{2190{


2194```2202```

2195 2203 

2196<Warning>2204<Warning>

2197 `updatedToolOutput` 仅更改 Claude 看到的内容。工具已经在 hook 触发时运行,因此任何写入的文件、执行的命令或发送的网络请求已经生效。遥测如 OpenTelemetry 工具跨度和分析事件也在 hook 运行之前捕获原始输出。要在运行前防止或修改工具调用,请改用 [PreToolUse](#pretooluse) hook。2205 `updatedToolOutput` 只会改变 Claude 看到的内容。hook 触发时工具已经运行,因此任何已写入的文件、已执行的命令或已发送的网络请求都已生效。OpenTelemetry 工具 span 和分析事件等遥测数据也会在 hook 运行之前捕获原始输出。要在工具调用运行之前阻止或修改它,请改用 [PreToolUse](#pretooluse) hook。

2198 2206 

2199 替换值必须与工具的输出形状匹配。内置工具返回结构化对象而不是纯字符串。例如,`Bash` 返回一个带有 `stdout`、`stderr`、`interrupted` 和 `isImage` 字段的对象。对于内置工具,不与工具的输出模式匹配的值被忽略,使用原始输出。MCP 工具输出通过而不进行模式验证。剥离 Claude 需要的错误详情可能导致它在错误的假设下继续。2207 替换值必须与工具的输出结构相匹配。内置工具返回的是结构化对象,而不是纯字符串。例如,`Bash` 返回一个包含 `stdout`、`stderr`、`interrupted` 和 `isImage` 字段的对象。对于内置工具,与工具输出 schema 不匹配的值会被忽略,并使用原始输出。MCP 工具的输出会直接传递,不进行 schema 验证。删除 Claude 需要的错误详细信息可能会导致它基于错误的假设继续执行。

2200</Warning>2208</Warning>

2201 2209 

2202<h4 id="annotate-a-result-for-the-auto-mode-classifier">2210<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2203 为自动模式分类器注释结果2211 为自动模式分类器注释结果

2204</h4>2212</h4>

2205 2213 

2206返回 `classifierContext` 以向 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器发送关于工具调用结果的简短说明,而不是向 Claude。分类器 [永远不接收工具结果本身](/docs/zh-CN/permission-modes#how-the-classifier-evaluates-actions),因此此字段是告诉它在审查后续操作之前关于调用返回的内容的支持方式。该字段需要 Claude Code v2.1.236 或更高版本。2214返回 `classifierContext`,可以将关于工具调用结果的简短说明发送给[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器,而不是发送给 Claude。分类器[从不接收工具结果本身](/docs/zh-CN/permission-modes#how-the-classifier-evaluates-actions),因此该字段是在分类器审查后续操作之前,告知它某次调用返回内容的受支持方式。该字段需要 Claude Code v2.1.236 或更高版本。

2207 2215 

2208下面的示例告诉分类器查询的输出来自何处:2216以下示例告诉分类器某次查询的输出来自何处:

2209 2217 

2210```json theme={null}2218```json theme={null}

2211{2219{


2216}2224}

2217```2225```

2218 2226 

2219分类器给予说明的权重取决于您配置 hook 的位置:2227分类器对该说明的重视程度取决于您在何处配置了该 hook:

2220 2228 

2221* **在 Claude Code 中配置的 Hooks**:对于来自设置文件、插件、skills 和 agent frontmatter 的 hooks,分类器将说明视为未验证的、应用程序提供的上下文。说明永远不会建立用户意图,如果它声称您批准或请求了什么,分类器会根据您在对话中的自己的消息检查该声明2229* **在 Claude Code 中配置的 hook**:对于来自设置文件、插件、skill 和 Agent frontmatter 的 hook,分类器将该说明视为未经验证的、由应用程序提供的上下文。该说明永远不能确立用户意图;如果它声称您批准或请求了某事,分类器会将该声明与您在对话中发送的消息进行核对

2222* **进程内 Agent SDK 回调**:当应用程序嵌入 Claude Code 将 hook 注册为 [TypeScript SDK 回调](/docs/zh-CN/agent-sdk/hooks) 并在实时会话期间返回说明时,分类器可能会将用户语句(在说明中中继)视为用户意图。这样的语句可以满足分类器会接受来自您发送的消息的同意要求,但它永远不会解除您自己的消息也无法解除的阻止。会话恢复后,Claude Code 将恢复的说明视为未验证的上下文。当两个组的 hooks 注释同一调用时,分类器将组合说明视为未验证2230* **进程内 Agent SDK 回调**:当嵌入 Claude Code 的应用程序将该 hook 注册为 [TypeScript SDK 回调](/docs/zh-CN/agent-sdk/hooks)并在实时会话期间返回该说明时,分类器可能会将说明中转述的用户陈述视为用户意图。此类陈述可以满足分类器原本会从您发送的消息中接受的同意要求,但它永远不能解除您自己的消息也无法解除的阻止。会话恢复后,Claude Code 会将恢复的说明视为未经验证的上下文。当两类 hook 都对同一调用添加注释时,分类器会将合并后的说明视为未经验证的内容

2223 2231 

2224Claude Code 在传递说明时应用这些限制:2232Claude Code 在传递说明时会应用以下限制:

2225 2233 

2226* **长度**:Claude Code 将一个工具调用的说明上限为 2,000 个字符,并截断其余部分。上限在响应该调用的每个 hook 中共享2234* **长度**:Claude Code 将单次工具调用的说明上限设为 2,000 个字符,并截断其余部分。该上限由响应该调用的所有 hook 共享

2227* **仅同步响应**:Claude Code 忽略 [在后台运行](#run-hooks-in-the-background) 的 hook 响应中的字段,因为该响应在 Claude Code 记录工具结果后到达2235* **仅限同步响应**:对于[在后台运行](#run-hooks-in-the-background)的 hook,Claude Code 会忽略其响应中的该字段,因为该响应在 Claude Code 记录工具结果之后才到达

2228* **分类器不记录的调用**:分类器的成绩单省略只读查找,如文件读取和搜索。Claude Code 丢弃附加到其中一个调用的说明2236* **分类器不记录的调用**:分类器的会话记录会省略只读查找,例如文件读取和搜索。附加到这些调用上的说明会被 Claude Code 丢弃

2229* **与重写的交互**:当说明描述您用 `updatedToolOutput` 替换的输出时,在同一 hook 响应中返回两个字段。如果该重写被拒绝或另一个 hook 的重写替换它,Claude Code 丢弃说明。Claude Code 传递您返回的说明而不重写,即使另一个 hook 重写输出2237* **与重写的交互**:当说明描述的是您正在用 `updatedToolOutput` 替换的输出时,请在同一个 hook 响应中同时返回这两个字段。如果该重写被拒绝或被另一个 hook 的重写替换,Claude Code 会丢弃该说明。即使另一个 hook 重写了输出,Claude Code 仍会传递您在没有重写的情况下返回的说明

2230 2238 

2231<Warning>2239<Warning>

2232 分类器读取您放入 `classifierContext` 的内容作为来自托管会话的应用程序的信息,因此不要将不受信任的工具输出或第三方文本复制到其中。将说明保持为关于此一个调用的简短断言,如关于其来源的事实或关于它的用户语句;不要使用该字段传递不相关的消息或事件流。2240 分类器会将您放入 `classifierContext` 的内容视为来自托管该会话的应用程序的信息,因此请勿将不受信任的工具输出或第三方文本复制到其中。请将说明限定为关于这一次调用的简短断言,例如关于其来源的事实或用户对它的陈述;不要使用该字段传递无关消息或事件流。

2233</Warning>2241</Warning>

2234 2242 

2235<h3 id="posttoolusefailure">2243<h3 id="posttoolusefailure">

2236 PostToolUseFailure2244 PostToolUseFailure

2237</h3>2245</h3>

2238 2246 

2239在启动执行的工具失败时运行:工具抛出错误或 MCP 工具返回错误结果。使用此来记录失败、发送警报或向 Claude 提供纠正反馈。2247当已开始执行的工具失败时运行:工具抛出了错误,或 MCP 工具返回了错误结果。可用于记录失败、发送警报或向 Claude 提供纠正性反馈。

2240 2248 

2241在工具名称上匹配,与 PreToolUse 相同的值。2249按工具名称匹配,取值与 PreToolUse 相同。

2242 2250 

2243<Note>2251<Note>

2244 此事件不为执行前被拒绝的工具调用触发:未知工具名称、失败模式或工具特定验证的输入,或权限拒绝。验证拒绝作为 `tool_use_error` 结果返回,发生在 hooks 运行之前,因此它们既不触发 `PreToolUse` 也不触发此事件。权限拒绝触发 `PreToolUse` 但不触发此事件;请参阅 [PermissionDenied](#permissiondenied)。2252 对于在执行前被拒绝的工具调用,此事件不会触发:包括未知的工具名称、未通过 schema 或工具特定验证的输入,以及权限拒绝。验证拒绝会以 `tool_use_error` 结果返回,并且发生在 hook 运行之前,因此既不会触发 `PreToolUse`,也不会触发 `PostToolUseFailure`。权限拒绝会触发 `PreToolUse`,但不会触发此事件;请参阅 [PermissionDenied](#permissiondenied)。

2245</Note>2253</Note>

2246 2254 

2247<h4 id="posttoolusefailure-input">2255<h4 id="posttoolusefailure-input">

2248 PostToolUseFailure 输入2256 PostToolUseFailure 输入

2249</h4>2257</h4>

2250 2258 

2251PostToolUseFailure hooks 接收与 PostToolUse 相同的 `tool_name` 和 `tool_input` 字段,以及错误信息作为顶级字段。对于 MCP 工具,它们也接收 [`mcp_server`](#pretooluse-input) 对象。例如,失败的 `npm test` 命令可能传递:2259PostToolUseFailure hook 接收与 PostToolUse 相同的 `tool_name` 和 `tool_input` 字段,以及作为顶层字段的错误信息。对于 MCP 工具,它们还会接收 [`mcp_server`](#pretooluse-input) 对象。例如,一次失败的 `npm test` 命令可能会传递:

2252 2260 

2253```json theme={null}2261```json theme={null}

2254{2262{


2271 2279 

2272| 字段 | 描述 |2280| 字段 | 描述 |

2273| :- | :- |2281| :- | :- |

2274| `error` | 描述出错内容的字符串。格式取决于失败的工具 |2282| `error` | 描述出错内容的字符串。其格式取决于失败的工具 |

2275| `is_interrupt` | 可选布尔值。当失败作为中止到达 Claude Code 而不是工具报告的错误时为 True。取消运行的工具不触发此 hook;工具结果携带中断消息 |2283| `is_interrupt` | 可选布尔值。当失败以中止而非工具报告的错误形式到达 Claude Code 时为 true。取消正在运行的工具不会触发此 hook;此时工具结果会携带中断消息 |

2276| `duration_ms` | 可选。工具执行时间(毫秒)。不包括权限提示和 PreToolUse hooks 中花费的时间 |2284| `duration_ms` | 可选。工具执行时间,以毫秒为单位。不包括在权限提示和 PreToolUse hook 中花费的时间 |

2277 2285 

2278`error` 字符串通常与 Claude 接收的失败工具结果相同的文本。其格式因工具和失败而异。在 `tool_name`、`is_interrupt` 和第一行 `Exit code N` 上键入您的 hook;将字符串的其余部分视为显示文本,而不是稳定格式。2286`error` 字符串通常与 Claude 作为失败工具结果收到的文本相同。其格式因工具和失败类型而异。请让您的 hook 基于 `tool_name`、`is_interrupt` 以及第一行的 `Exit code N` 进行判断;将字符串的其余部分视为显示文本,而非稳定的格式。

2279 2287 

2280* 对于 Bash 和 PowerShell,运行并退出的命令产生第一行 `Exit code N`,然后是命令产生的任何输出作为一个块,stdout 和 stderr 交错2288* 对于 Bash 和 PowerShell,已运行并退出的命令会生成第一行 `Exit code N`,随后是命令产生的所有输出,作为一个整体块,其中 stdout 和 stderr 交错排列

2281* 有效负载也可能携带裸失败消息,没有退出代码行,当 Claude Code 无法启动 shell 进程本身时2289* 当 Claude Code 无法启动 shell 进程本身时,负载也可能只携带一条没有退出码行的失败消息

2282* Claude Code 中间截断长字符串,围绕 `... [N characters truncated] ...` 标记,并可以插入自己的行,如 `Command timed out after 2m 0s`2290* Claude Code 会对长字符串进行中间截断,并插入 `... [N characters truncated] ...` 标记,还可能插入自己的行,例如 `Command timed out after 2m 0s`

2283 2291 

2284<h4 id="posttoolusefailure-decision-control">2292<h4 id="posttoolusefailure-decision-control">

2285 PostToolUseFailure 决策控制2293 PostToolUseFailure 决策控制

2286</h4>2294</h4>

2287 2295 

2288`PostToolUseFailure` hooks 可以在工具失败后向 Claude 提供上下文。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您的 hook 脚本可以返回这些事件特定的字段:2296`PostToolUseFailure` hook 可以在工具失败后向 Claude 提供上下文。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您的 hook 脚本还可以返回以下特定于事件的字段:

2289 2297 

2290| 字段 | 描述 |2298| 字段 | 描述 |

2291| :- | :- |2299| :- | :- |

2292| `additionalContext` | 与错误一起添加到 Claude 上下文的字符串。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |2300| `additionalContext` | 与错误一起添加到 Claude 上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

2293 2301 

2294```json theme={null}2302```json theme={null}

2295{2303{


2304 PostToolBatch2312 PostToolBatch

2305</h3>2313</h3>

2306 2314 

2307在批次中的每个工具调用都已解决后运行一次,在 Claude Code 向模型发送下一个请求之前。`PostToolUse` 每个工具触发一次,这意味着当 Claude 进行并行工具调用时它并发触发。`PostToolBatch` 恰好触发一次,带有完整批次,因此它是注入取决于运行的工具集而不是任何单个工具的上下文的正确位置。此事件没有匹配器。2315在一批中的每个工具调用都已完成后、Claude Code 向模型发送下一个请求之前运行一次。`PostToolUse` 对每个工具触发一次,这意味着当 Claude 进行并行工具调用时它会并发触发。`PostToolBatch` 针对整个批次只触发一次,因此适合注入依赖于已运行工具集合而非单个工具的上下文。此事件没有匹配器。

2308 2316 

2309<h4 id="posttoolbatch-input">2317<h4 id="posttoolbatch-input">

2310 PostToolBatch 输入2318 PostToolBatch 输入

2311</h4>2319</h4>

2312 2320 

2313除了 [常见输入字段](#common-input-fields) 外,PostToolBatch hooks 接收 `tool_calls`,一个描述批次中每个工具调用的数组:2321除了[通用输入字段](#common-input-fields)之外,PostToolBatch hook 还会接收 `tool_calls`,这是一个描述批次中每个工具调用的数组:

2314 2322 

2315```json theme={null}2323```json theme={null}

2316{2324{


2336}2344}

2337```2345```

2338 2346 

2339`tool_response` 包含模型在相应 `tool_result` 块中接收的相同内容。该值是序列化字符串或内容块数组,完全如工具发出的那样。对于 `Read`,这意味着行号前缀文本而不是原始文件内容。响应可能很大,因此仅解析您需要的字段。2347`tool_response` 包含的内容与模型在对应 `tool_result` 块中收到的内容相同。该值是序列化字符串或内容块数组,与工具发出的完全一致。对于 `Read`,这意味着是带行号前缀的文本,而不是原始文件内容。响应可能很大,因此请只解析您需要的字段。

2340 2348 

2341<Note>2349<Note>

2342 `tool_response` 形状与 `PostToolUse` 的不同。`PostToolUse` 传递工具的结构化 `Output` 对象,如 `Write` 的 `{filePath: "...", type: "create"}`;`PostToolBatch` 传递模型看到的序列化 `tool_result` 内容。2350 `tool_response` 的结构与 `PostToolUse` 的不同。`PostToolUse` 传递的是工具的结构化 `Output` 对象,例如 `Write` 的 `{filePath: "...", type: "create"}`;`PostToolBatch` 传递的是模型看到的序列化 `tool_result` 内容。

2343</Note>2351</Note>

2344 2352 

2345<h4 id="posttoolbatch-decision-control">2353<h4 id="posttoolbatch-decision-control">

2346 PostToolBatch 决策控制2354 PostToolBatch 决策控制

2347</h4>2355</h4>

2348 2356 

2349`PostToolBatch` hooks 可以为 Claude 注入上下文。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您的 hook 脚本可以返回这些事件特定的字段:2357`PostToolBatch` hook 可以为 Claude 注入上下文。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您的 hook 脚本还可以返回以下特定于事件的字段:

2350 2358 

2351| 字段 | 描述 |2359| 字段 | 描述 |

2352| :- | :- |2360| :- | :- |

2353| `additionalContext` | 在下一个模型调用之前注入一次的上下文字符串。有关传递详情、放入其中的内容以及恢复的会话如何处理过去的值,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |2361| `additionalContext` | 在下一次模型调用之前注入一次的上下文字符串。有关传递细节、应放入的内容以及恢复的会话如何处理以往的值,请参阅[为 Claude 添加上下文](#add-context-for-claude) |

2354 2362 

2355```json theme={null}2363```json theme={null}

2356{2364{


2361}2369}

2362```2370```

2363 2371 

2364返回 `decision: "block"` 或 `continue: false` 在下一个模型调用之前停止 agentic 循环。阻止消息来自 JSON `reason` 或 `stopReason`,或来自退出 2 的 stderr。您在成绩单中看到它作为警告,它保留在对话中,因此当对话继续时 Claude 看到它。2372返回 `decision: "block"` 或 `continue: false` 会在下一次模型调用之前停止智能体循环。阻止消息来自 JSON 中的 `reason` 或 `stopReason`,或退出码 2 时的 stderr。您会在会话记录中看到它显示为警告,并且它会保留在对话中,因此当对话继续时 Claude 会看到它。

2365 2373 

2366<h3 id="permissiondenied">2374<h3 id="permissiondenied">

2367 PermissionDenied2375 PermissionDenied

2368</h3>2376</h3>

2369 2377 

2370在 [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 拒绝工具调用时运行,包括当它拒绝而没有分类器判决时,因为 [与自动模式分开的安全检查拒绝了分类器自己的请求](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action) 或其响应没有解析。此 hook 仅在自动模式中触发:当您手动拒绝权限对话、`PreToolUse` hook 阻止调用或 `deny` 规则匹配时不运行。使用它来记录拒绝、调整配置或告诉模型它可能重试工具调用。2378当[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)拒绝工具调用时运行,包括在没有分类器判定的情况下拒绝——原因是[独立于自动模式的安全检查拒绝了分类器自身的请求](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action),或其响应无法解析。此 hook 仅在自动模式下触发:当您手动拒绝权限对话框、`PreToolUse` hook 阻止调用或 `deny` 规则匹配时,它不会运行。可用于记录拒绝、调整配置,或告诉模型它可以重试该工具调用。

2371 2379 

2372在工具名称上匹配,与 PreToolUse 相同的值。2380按工具名称匹配,取值与 PreToolUse 相同。

2373 2381 

2374<h4 id="permissiondenied-input">2382<h4 id="permissiondenied-input">

2375 PermissionDenied 输入2383 PermissionDenied 输入

2376</h4>2384</h4>

2377 2385 

2378除了 [常见输入字段](#common-input-fields) 外,PermissionDenied hooks 接收 `tool_name`、`tool_input`、`tool_use_id` 和 `reason`。对于 MCP 工具,它们也接收 [`mcp_server`](#pretooluse-input) 对象。2386除了[通用输入字段](#common-input-fields)之外,PermissionDenied hook 还会接收 `tool_name`、`tool_input`、`tool_use_id` 和 `reason`。对于 MCP 工具,它们还会接收 [`mcp_server`](#pretooluse-input) 对象。

2379 2387 

2380```json theme={null}2388```json theme={null}

2381{2389{


2396 2404 

2397| 字段 | 描述 |2405| 字段 | 描述 |

2398| :- | :- |2406| :- | :- |

2399| `reason` | 拒绝原因。对于分类器判决,在大多数会话中它命名方括号中的匹配规则,如 `[Data Exfiltration]`;有关其他形式,请参阅 [审查拒绝](/docs/zh-CN/auto-mode-config#review-denials)。对于 [无判决拒绝](#permissiondenied-decision-control),它以 `Auto mode could not evaluate this action and is blocking it for safety` 开头。对于拒绝因为分类器模型不可用,它是固定文本 `Classifier unavailable` |2407| `reason` | 拒绝原因。对于分类器判定,在大多数会话中它会用方括号标出匹配的规则,例如 `[Data Exfiltration]`;其他形式请参阅[查看拒绝](/docs/zh-CN/auto-mode-config#review-denials)。对于[无判定拒绝](#permissiondenied-decision-control),它以 `Auto mode could not evaluate this action and is blocking it for safety` 开头。对于因分类器模型不可用而导致的拒绝,它是固定文本 `Classifier unavailable` |

2400 2408 

2401<h4 id="permissiondenied-decision-control">2409<h4 id="permissiondenied-decision-control">

2402 PermissionDenied 决策控制2410 PermissionDenied 决策控制

2403</h4>2411</h4>

2404 2412 

2405PermissionDenied hooks 可以告诉模型它可能重试被拒绝的工具调用。返回一个 JSON 对象,其中 `hookSpecificOutput.retry` 设置为 `true`:2413PermissionDenied hook 可以告诉模型它可以重试被拒绝的工具调用。返回一个 `hookSpecificOutput.retry` 设为 `true` 的 JSON 对象:

2406 2414 

2407```json theme={null}2415```json theme={null}

2408{2416{


2413}2421}

2414```2422```

2415 2423 

2416当 `retry` 为 `true` 时,Claude Code 向对话添加一条消息,告诉模型它可能重试工具调用。Claude Code 不反转拒绝本身。如果您的 hook 不返回 JSON 或返回 `retry: false`,拒绝成立,模型接收原始拒绝消息。2424当 `retry` 为 `true` 时,Claude Code 会向对话中添加一条消息,告诉模型它可以重试该工具调用。Claude Code 本身不会撤销该拒绝。如果您的 hook 没有返回 JSON,或返回 `retry: false`,拒绝将保持有效,模型会收到原始的拒绝消息。

2417 2425 

2418当分类器对操作产生 [无判决](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action) 时,Claude Code 忽略 `retry: true`:其响应没有解析,或与自动模式分开的安全检查拒绝了分类器自己的请求。对于这些拒绝,Claude Code 已经在拒绝消息中告诉模型是否稍后重试或继续。2426当分类器[未对该操作作出判定](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action)时(其响应无法解析,或独立于自动模式的安全检查拒绝了分类器自身的请求),Claude Code 会忽略 `retry: true`。对于这些拒绝,Claude Code 已经在拒绝消息中告诉模型是稍后重试还是继续其他工作。

2419 2427 

2420<h3 id="notification">2428<h3 id="notification">

2421 Notification2429 Notification

2422</h3>2430</h3>

2423 2431 

2424在 Claude Code 发送通知时运行。在通知类型上匹配。省略匹配器以对所有通知类型运行 hooks。2432当 Claude Code 发送通知时运行。按通知类型匹配。省略匹配器即可为所有通知类型运行 hook。

2425 2433 

2426您即使关闭桌面通知也接收这些 hook 事件:`preferredNotifChannel` 设置,包括 `notifications_disabled`,仅更改您如何被警报,而不是您的 hook 是否运行。2434即使关闭了桌面通知,您也会收到这些 hook 事件:`preferredNotifChannel` 设置(包括 `notifications_disabled`)只改变提醒您的方式,而不影响您的 hook 是否运行。

2427 2435 

2428| 匹配器 | 何时触发 |2436| 匹配器 | 触发时机 |

2429| :- | :- |2437| :- | :- |

2430| `permission_prompt` | Claude 需要您批准工具使用或沙箱命令的 [网络请求](/docs/zh-CN/sandboxing#network-isolation),提示已等待约六秒 |2438| `permission_prompt` | Claude 需要您批准一次工具使用或沙箱化命令的[网络请求](/docs/zh-CN/sandboxing#network-isolation),且该提示已等待约六秒 |

2431| `idle_prompt` | Claude 约 60 秒前完成响应,您自那以后没有输入 |2439| `idle_prompt` | Claude 大约在 60 秒前完成回复,且您此后未输入任何内容 |

2432| `auth_success` | 身份验证完成 |2440| `auth_success` | 身份验证完成 |

2433| `elicitation_dialog` | MCP 服务器打开引出表单,您约六秒没有输入 |2441| `elicitation_dialog` | MCP 服务器打开了一个 elicitation 表单,且您约六秒未输入任何内容 |

2434| `elicitation_url_dialog` | MCP 服务器要求您打开浏览器 URL,您约六秒没有输入 |2442| `elicitation_url_dialog` | MCP 服务器要求您打开一个浏览器 URL,且您约六秒未输入任何内容 |

2435| `elicitation_complete` | MCP 服务器报告 [URL 模式引出](#elicitation-input) 完成 |2443| `elicitation_complete` | MCP 服务器报告 [URL 模式 elicitation](#elicitation-input) 已完成 |

2436| `elicitation_response` | MCP 引出响应被发送回服务器 |2444| `elicitation_response` | MCP elicitation 响应被发回服务器 |

2437| `agent_needs_input` | 后台会话在 [agent view](/docs/zh-CN/agent-view) 在终端中打开时开始等待您的输入,或当前会话要求您一个 [agent team 队友的终端设置问题](/docs/zh-CN/agent-teams#choose-a-display-mode) 或自动模式的 [分类器请求费用](/docs/zh-CN/auto-mode-classifier-billing) 通知,您约六秒没有输入 |2445| `agent_needs_input` | 当 [agent view](/docs/zh-CN/agent-view) 在终端中打开时,某个后台会话开始等待您的输入。当终端会话向您显示 [agent team 队友的终端设置问题](/docs/zh-CN/agent-teams#choose-a-display-mode)或自动模式关于[分类器请求费用](/docs/zh-CN/auto-mode-classifier-billing)的提示,且您约六秒未输入任何内容时,也会触发 |

2438| `agent_completed` | 后台会话完成或失败。仅在 [agent view](/docs/zh-CN/agent-view) 在终端中打开时触发 |2446| `agent_completed` | 某个后台会话完成或失败。仅在 [agent view](/docs/zh-CN/agent-view) 在终端中打开时触发 |

2439| `quota_auto_resume_fired` | Claude Code 在 claude.ai 使用限制暂停它后继续您的任务:在重置时,或更早当您在 Claude Code 中做的某事(如添加使用信用、升级您的计划或切换模型)在等待期间使使用可用时,带有 [模型设置异常](/docs/zh-CN/interactive-mode#wait-for-a-usage-limit-to-reset) |2447| `quota_auto_resume_fired` | 在 claude.ai 用量限制暂停您的任务后,Claude Code 继续执行该任务:在限制重置时,或者在等待期间您在 Claude Code 中执行的某些操作(例如添加使用额度、升级套餐或切换模型)使用量再次可用时提前继续,但存在[模型设置例外](/docs/zh-CN/interactive-mode#wait-for-a-usage-limit-to-reset) |

2440| `quota_auto_resume_stale` | claude.ai 使用限制在您的计算机睡眠超过约 30 分钟时重置。Claude Code 等待您按 `Enter` 而不是继续。在更短的睡眠后它继续并改为触发 `quota_auto_resume_fired` |2448| `quota_auto_resume_stale` | claude.ai 用量限制在您的计算机休眠超过约 30 分钟期间重置。Claude Code 会等待您按 `Enter`,而不是继续执行。如果休眠时间较短,它会继续执行并改为触发 `quota_auto_resume_fired` |

2441| `quota_auto_resume_disabled` | Claude Code 结束其对 claude.ai 使用限制的等待而不继续您的任务:[`autoContinueAtUsageLimit`](/docs/zh-CN/settings-reference#autocontinueatusagelimit) 关闭或重置在 Claude Code 自己启动的等待期间移动超过 24 小时,继续的任务继续命中限制,或继续在到达模型之前被阻止。当您按 `Esc` 或 `Ctrl+C` 或选择 **Don't continue automatically** 时不触发 |2449| `quota_auto_resume_disabled` | Claude Code 结束了对 claude.ai 用量限制的等待,但没有继续您的任务:[`autoContinueAtUsageLimit`](/docs/zh-CN/settings-reference#autocontinueatusagelimit) 被关闭,或在 Claude Code 自行开始的等待期间重置时间推迟到 24 小时以后,或继续执行的任务反复触及限制,或继续执行在到达模型之前被阻止。当您按 `Esc` 或 `Ctrl+C`,或选择 **Don't continue automatically** 时不会触发 |

2442 2450 

2443`quota_auto_resume_fired`、`quota_auto_resume_stale` 和 `quota_auto_resume_disabled` 类型需要 Claude Code v2.1.234 或更高版本。2451`quota_auto_resume_fired`、`quota_auto_resume_stale` 和 `quota_auto_resume_disabled` 类型需要 Claude Code v2.1.234 或更高版本。

2444 2452 

2445在终端会话中,沙箱命令的网络请求的 `permission_prompt` 需要 Claude Code v2.1.246 或更高版本。2453在终端会话中,针对沙箱化命令网络请求的 `permission_prompt` 需要 Claude Code v2.1.246 或更高版本。

2446 2454 

2447队友的终端设置问题的 `agent_needs_input` 需要 Claude Code v2.1.248 或更高版本。2455针对队友终端设置问题的 `agent_needs_input` 需要 Claude Code v2.1.248 或更高版本。

2448 2456 

2449<Note>2457<Note>

2450 `permission_prompt`、`idle_prompt`、`elicitation_dialog` 和 `elicitation_url_dialog` 类型与桌面通知共享其时序,因此在终端会话中您仅在您似乎远离终端时看到它们:2458 `permission_prompt`、`idle_prompt`、`elicitation_dialog` 和 `elicitation_url_dialog` 类型与桌面通知共享计时方式,因此在终端会话中,只有当您看起来已离开终端时才会看到它们:

2451 2459 

2452 * 期望 `permission_prompt` 一旦您约六秒没有输入。计时器在权限提示出现时启动,每次按键推迟它。要在 Claude 要求许可使用工具时立即运行 hook,请改用 [PermissionRequest](#permissionrequest)。2460 * 当您约六秒未输入任何内容时,预期会出现 `permission_prompt`。计时器在权限提示出现时开始,每次按键都会推迟它。要在 Claude 请求使用工具的权限时立即运行 hook,请改用 [PermissionRequest](#permissionrequest)。

2453 * 期望 `idle_prompt` 约 60 秒后 Claude 完成响应,仅当您自那以后没有输入时。Claude Code 在等待 claude.ai 使用限制重置时不发送 `idle_prompt`。当等待自己结束时,其中一个 `quota_auto_resume_*` 类型触发。2461 * 预期 `idle_prompt` 会在 Claude 完成回复约 60 秒后出现,并且仅当您此后未输入任何内容且没有后台 Agent(例如后台[子代理](/docs/zh-CN/sub-agents))仍在运行时才会出现。在等待 claude.ai 用量限制重置期间,Claude Code 不会发送 `idle_prompt`。当等待自行结束时,会改为触发某个 `quota_auto_resume_*` 类型。

2454 * 期望 `elicitation_dialog` 对于引出表单或 `elicitation_url_dialog` 对于浏览器 URL 请求,一旦您约六秒没有输入。两者共享与 `permission_prompt` 相同的六秒门:计时器在对话出现时启动,每次按键推迟它。2462 * 对于 elicitation 表单预期会出现 `elicitation_dialog`,对于浏览器 URL 请求预期会出现 `elicitation_url_dialog`,前提是您约六秒未输入任何内容。两者与 `permission_prompt` 共享相同的六秒门槛:计时器在对话框出现时开始,每次按键都会推迟它。

2455 2463 

2456 权限请求或引出在另一个对话在屏幕上时到达保持相同的六秒门,从请求到达时计时。其通知可以在请求仍在等待打开的对话后面时到达您。2464 在另一个对话框显示在屏幕上时到达的权限请求或 elicitation 同样适用六秒门槛,从请求到达时开始计时。其通知可能会在请求仍排在已打开对话框之后等待时就送达您。

2457</Note>2465</Note>

2458 2466 

2459Claude Code 在会话中以不同方式计时 `permission_prompt`,其中它向 Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/user-input) 发送权限请求,这是 Claude Desktop 和 VS Code 扩展如何托管 Claude Code 的方式:2467在 Claude Code 将权限请求发送给 Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/user-input)的会话中(Claude Desktop 和 VS Code 扩展就是以这种方式托管 Claude Code 的),Claude Code 对 `permission_prompt` 的计时方式有所不同:

2460 2468 

2461* 期望 `permission_prompt` 约六秒后 Claude 要求权限。Claude Code 在您输入时不推迟它。2469* 预期 `permission_prompt` 会在 Claude 请求权限约六秒后出现。在您输入时,Claude Code 不会推迟它。

2462* 如果您或 [PermissionRequest](#permissionrequest) hook 更早回答,Claude Code 不运行 `permission_prompt`。2470* 如果您或 [PermissionRequest](#permissionrequest) hook 提前作出回应,Claude Code 不会运行 `permission_prompt`。

2463* 设置 [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/zh-CN/env-vars) 为 `1` 以在这些会话中关闭 `permission_prompt`。2471* 将 [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/zh-CN/env-vars) 设为 `1`,即可在这些会话中关闭 `permission_prompt`。

2464 2472 

2465在 v2.1.233 之前,`permission_prompt` 在这些会话中不触发。2473在 v2.1.233 之前,`permission_prompt` 不会在这些会话中触发。

2466 2474 

2467使用单独的匹配器根据通知类型运行不同的处理程序。此配置在 Claude 需要权限批准时触发权限特定的警报脚本,在 Claude 空闲时触发不同的通知:2475使用不同的匹配器,可以根据通知类型运行不同的处理程序。以下配置会在 Claude 需要权限批准时触发一个专门用于权限的警报脚本,在 Claude 处于空闲状态时触发另一个通知:

2468 2476 

2469```json theme={null}2477```json theme={null}

2470{2478{


2497 Notification 输入2505 Notification 输入

2498</h4>2506</h4>

2499 2507 

2500除了 [常见输入字段](#common-input-fields) 外,Notification hooks 接收 `message` 与通知文本、可选 `title` 和 `notification_type` 指示哪个类型触发。2508除了[通用输入字段](#common-input-fields)之外,Notification hook 还会接收包含通知文本的 `message`、可选的 `title`,以及指示触发了哪种类型的 `notification_type`。

2501 2509 

2502```json theme={null}2510```json theme={null}

2503{2511{


2511}2519}

2512```2520```

2513 2521 

2514Notification hooks 无法阻止或修改通知。Claude Code 丢弃它们的 `systemMessage` 和 `continue` 字段,但仍然发出 [`terminalSequence`](#emit-terminal-notifications),这是桌面通知示例所依赖的。Notification hooks 用于副作用,如将通知转发到外部服务。2522Notification hook 无法阻止或修改通知。Claude Code 会丢弃它们的 `systemMessage` 和 `continue` 字段,但仍会发出 [`terminalSequence`](#emit-terminal-notifications),桌面通知示例正是依赖于此。Notification hook 旨在用于副作用,例如将通知转发到外部服务。

2515 2523 

2516<h3 id="subagentstart">2524<h3 id="subagentstart">

2517 SubagentStart2525 SubagentStart

2518</h3>2526</h3>

2519 2527 

2520在 Claude 使用 Agent 工具生成子 agent 时运行,当 Claude [恢复子 agent](/docs/zh-CN/sub-agents#resume-subagents) 时,以及每次进程内 [agent team](/docs/zh-CN/agent-teams) 队友处理新消息时。支持匹配器以按 agent 类型名称过滤。对于内置 agents,这是 agent 名称如 `general-purpose`、`Explore` 或 `Plan`。对于 [自定义子 agents](/docs/zh-CN/sub-agents),这是 agent 的 frontmatter 中的 `name` 字段,而不是文件名。2528当 Claude 使用 Agent 工具生成子代理、当 Claude [恢复子代理](/docs/zh-CN/sub-agents#resume-subagents),以及每次进程内 [agent team](/docs/zh-CN/agent-teams) 队友处理新消息时运行。支持使用匹配器按 Agent 类型名称进行过滤。对于内置 Agent,这是 Agent 名称,例如 `general-purpose`、`Explore` 或 `Plan`。对于[自定义子代理](/docs/zh-CN/sub-agents),这是 Agent frontmatter 中的 `name` 字段,而不是文件名。

2521 2529 

2522对于由 [插件](/docs/zh-CN/plugins/overview) 提供的子 agents,agent 类型是插件范围的标识符,如 `my-plugin:reviewer`,而不是裸 frontmatter 名称。冒号将插件范围的名称放在正则表达式路径上,因此用 `^` 和 `$` 锚定匹配器以获得精确匹配:`^my-plugin:reviewer$`。2530对于由[插件](/docs/zh-CN/plugins/overview)提供的子代理,Agent 类型是插件范围的标识符,例如 `my-plugin:reviewer`,而不是单纯的 frontmatter 名称。冒号会使插件范围的名称走正则表达式匹配路径,因此请用 `^` 和 `$` 锚定匹配器以进行精确匹配:`^my-plugin:reviewer$`。

2523 2531 

2524<h4 id="subagentstart-input">2532<h4 id="subagentstart-input">

2525 SubagentStart 输入2533 SubagentStart 输入

2526</h4>2534</h4>

2527 2535 

2528除了 [常见输入字段](#common-input-fields) 外,SubagentStart hooks 接收 `agent_id` 与子 agent 的唯一标识符和 `agent_type` 与匹配器过滤的 agent 名称。2536除了[通用输入字段](#common-input-fields)之外,SubagentStart hook 还会接收包含子代理唯一标识符的 `agent_id`,以及包含匹配器所过滤的 Agent 名称的 `agent_type`。

2529 2537 

2530```json theme={null}2538```json theme={null}

2531{2539{


2538}2546}

2539```2547```

2540 2548 

2541SubagentStart hooks 无法阻止子 agent 创建,但它们可以向子 agent 注入上下文。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您可以返回:2549SubagentStart hook 无法阻止子代理的创建,但可以向子代理注入上下文。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您还可以返回:

2542 2550 

2543| 字段 | 描述 |2551| 字段 | 描述 |

2544| :- | :- |2552| :- | :- |

2545| `additionalContext` | 在子 agent 对话开始时添加到子 agent 上下文的字符串,在其第一个提示之前。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |2553| `additionalContext` | 在子代理对话开始时、其第一个提示词之前添加到子代理上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

2546 2554 

2547```json theme={null}2555```json theme={null}

2548{2556{


2553}2561}

2554```2562```

2555 2563 

2556当 hook 再次为同一子 agent 运行时,Claude Code 仅在子 agent 的上下文还不包含来自早期运行的副本时注入返回的上下文。在启动时注入的副本保留在原位,保持子 agent 的 [prompt cache](/docs/zh-CN/prompt-caching#subagents-and-the-cache) 完整。在 [自动压缩](/docs/zh-CN/sub-agents#auto-compaction) 丢弃该副本后,Claude Code 再次注入下一个运行的上下文。2564当 hook 针对同一子代理再次运行时,仅当子代理的上下文中尚未包含先前运行注入的副本时,Claude Code 才会注入返回的上下文。启动时注入的副本会保留在原位,从而使子代理的[提示缓存](/docs/zh-CN/prompt-caching#subagents-and-the-cache)保持完整。在[自动压缩](/docs/zh-CN/sub-agents#auto-compaction)丢弃该副本后,Claude Code 会再次注入下一次运行的上下文。

2557 2565 

2558<h3 id="subagentstop">2566<h3 id="subagentstop">

2559 SubagentStop2567 SubagentStop

2560</h3>2568</h3>

2561 2569 

2562在 Claude Code 子 agent 完成响应时运行。在 agent 类型上匹配,与 SubagentStart 相同的值。2570当 Claude Code 子代理完成回复时运行。按 Agent 类型匹配,取值与 SubagentStart 相同。

2563 2571 

2564<h4 id="subagentstop-input">2572<h4 id="subagentstop-input">

2565 SubagentStop 输入2573 SubagentStop 输入

2566</h4>2574</h4>

2567 2575 

2568除了 [常见输入字段](#common-input-fields) 外,SubagentStop hooks 接收 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 和 `last_assistant_message`。`agent_type` 字段是用于匹配器过滤的值。`transcript_path` 是主会话的成绩单,而 `agent_transcript_path` 是子 agent 自己的成绩单,存储在嵌套 `subagents/` 文件夹中。`last_assistant_message` 字段包含子 agent 最终响应的文本内容,因此 hooks 可以访问它而不解析成绩单文件。2576除了[通用输入字段](#common-input-fields)之外,SubagentStop hook 还会接收 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 和 `last_assistant_message`。`agent_type` 字段是用于匹配器过滤的值。`transcript_path` 是主会话的会话记录,而 `agent_transcript_path` 是存储在嵌套 `subagents/` 文件夹中的子代理自身的会话记录。`last_assistant_message` 字段包含子代理最终回复的文本内容,因此 hook 无需解析会话记录文件即可访问它。

2569 2577 

2570不是每个 SubagentStop 事件都来自 Claude 生成的子 agent。Claude Code 也为其自己的某些功能运行内部 agents,如 [提示建议](/docs/zh-CN/interactive-mode#prompt-suggestions) 和 [`/btw` 侧问题](/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw),当其中一个完成时 SubagentStop 触发。对于这些事件,`agent_type` 是会话本身运行的 agent 名称,如用 [`--agent`](/docs/zh-CN/cli-reference#cli-flags) 或 [`agent` 设置](/docs/zh-CN/settings-reference#agent) 设置的,当会话运行而不带一个时为空字符串。2578并非每个 SubagentStop 事件都来自 Claude 生成的子代理。Claude Code 还会为其自身的某些功能运行内部 Agent,例如[提示词建议](/docs/zh-CN/interactive-mode#prompt-suggestions)和 [`/btw` 旁支问题](/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw),当这些 Agent 之一完成时,SubagentStop 也会触发。对于这些事件,`agent_type` 是会话本身运行所用的 Agent 名称,例如通过 [`--agent`](/docs/zh-CN/cli-reference#cli-flags) 或 [`agent` 设置](/docs/zh-CN/settings-reference#agent)设定的名称;当会话未使用 Agent 运行时则为空字符串。

2571 2579 

2572命名 agent 类型的 `matcher` 不匹配空 `agent_type`。一个 matcher 被省略、`""`、`"*"` 或是匹配空字符串的正则表达式的 hook 也为带有空 `agent_type` 的事件运行。2580指定了 Agent 类型的 `matcher` 不会匹配空的 `agent_type`。匹配器被省略、为 `""` 或 `"*"`,或者是能匹配空字符串的正则表达式的 hook,也会针对 `agent_type` 为空的事件运行。

2573 2581 

2574在 Claude Code v2.1.271 或更高版本上,使用 [`SubagentHandback`](/docs/zh-CN/tools-reference) 工具运行的子 agent 在它停止之前通过该工具传递其报告。`last_assistant_message` 字段然后保持子 agent 的结束文本(如果有),这不是传递的报告。报告是该调用的 `message` 输入,`PreToolUse` 或 `PostToolUse` hook 匹配 `SubagentHandback` 接收作为 `tool_input.message`。2582在 Claude Code v2.1.271 或更高版本中,使用 [`SubagentHandback`](/docs/zh-CN/tools-reference) 工具运行的子代理会在停止之前通过该工具传递其报告。此时 `last_assistant_message` 字段保存的是子代理的结束文本(如果有),而不是所传递的报告。报告是该调用的 `message` 输入,匹配 `SubagentHandback` 的 `PreToolUse` 或 `PostToolUse` hook 会以 `tool_input.message` 的形式收到它。

2575 2583 

2576SubagentStop hooks 也接收 [Stop 输入](#stop-input) 下描述的 `background_tasks` 和 `session_crons` 数组。两个数组都限定于父会话,而不是子 agent。2584SubagentStop hook 还会接收 [Stop 输入](#stop-input)中描述的 `background_tasks` 和 `session_crons` 数组。这两个数组的范围是父会话,而不是子代理。

2577 2585 

2578```json theme={null}2586```json theme={null}

2579{2587{


2592}2600}

2593```2601```

2594 2602 

2595SubagentStop hooks 使用与 [Stop hooks](#stop-decision-control) 相同的决策控制格式,包括 `hookSpecificOutput.additionalContext`,`hookEventName` 设置为 `"SubagentStop"`,用于保持子 agent 运行的非错误反馈。返回 `decision: "block"` 与 `reason` 保持子 agent 运行并将 `reason` 作为其下一个指令传递给子 agent。通过退出 2 阻止的 hook 以相同方式传递其 stderr 消息。要在子 agent 返回后向父会话注入上下文,请改用 `Agent` 工具上的 [`PostToolUse`](#posttooluse) hook。2603SubagentStop hook 使用与 [Stop hook](#stop-decision-control) 相同的决策控制格式,包括将 `hookEventName` 设为 `"SubagentStop"` 的 `hookSpecificOutput.additionalContext`,用于提供让子代理继续运行的非错误反馈。返回带有 `reason` 的 `decision: "block"` 会让子代理继续运行,并将 `reason` 作为下一条指令传递给子代理。通过退出码 2 进行阻止的 hook 会以同样方式传递其 stderr 消息。要在子代理返回后向父会话注入上下文,请改为在 `Agent` 工具上使用 [`PostToolUse`](#posttooluse) hook。

2596 2604 

2597<h3 id="taskcreated">2605<h3 id="taskcreated">

2598 TaskCreated2606 TaskCreated

2599</h3>2607</h3>

2600 2608 

2601在通过 `TaskCreate` 工具创建任务时运行。使用此来强制命名约定、要求任务描述或防止某些任务被创建。在 [没有 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability) 中,此事件不触发。2609当通过 `TaskCreate` 工具创建任务时运行。可用于强制执行命名约定、要求提供任务描述或阻止创建某些任务。在[没有 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中,此事件不会触发。

2602 2610 

2603TaskCreated hooks 不支持匹配器,对每个出现触发。2611TaskCreated hook 不支持匹配器,每次发生时都会触发。

2604 2612 

2605<h4 id="taskcreated-input">2613<h4 id="taskcreated-input">

2606 TaskCreated 输入2614 TaskCreated 输入

2607</h4>2615</h4>

2608 2616 

2609除了 [常见输入字段](#common-input-fields) 外,TaskCreated hooks 接收 `task_id`、`task_subject` 和可选的 `task_description`、`teammate_name` 和 `team_name`。2617除了[通用输入字段](#common-input-fields)之外,TaskCreated hook 还会接收 `task_id`、`task_subject`,以及可选的 `task_description`、`teammate_name` 和 `team_name`。

2610 2618 

2611```json theme={null}2619```json theme={null}

2612{2620{


2625| 字段 | 描述 |2633| 字段 | 描述 |

2626| :- | :- |2634| :- | :- |

2627| `task_id` | 正在创建的任务的标识符 |2635| `task_id` | 正在创建的任务的标识符 |

2628| `task_subject` | 任务的标题 |2636| `task_subject` | 任务标题 |

2629| `task_description` | 任务的详细描述。可能不存在 |2637| `task_description` | 任务的详细描述。可能不存在 |

2630| `teammate_name` | 创建任务的队友的名称。可能不存在 |2638| `teammate_name` | 创建该任务的队友名称。可能不存在 |

2631| `team_name` | 已弃用。会话派生的团队名称;将在未来版本中删除 |2639| `team_name` | 已弃用。从会话派生的团队名称;将在未来版本中移除 |

2632 2640 

2633<h4 id="taskcreated-decision-control">2641<h4 id="taskcreated-decision-control">

2634 TaskCreated 决策控制2642 TaskCreated 决策控制

2635</h4>2643</h4>

2636 2644 

2637TaskCreated hook 可以以两种方式阻止创建。任一方式,Claude Code 删除任务并将您的消息返回给 Claude 作为工具的错误。Claude Code 忽略此事件的 `continue: false`,Claude 继续工作。2645TaskCreated hook 可以通过两种方式阻止创建。无论哪种方式,Claude Code 都会删除该任务,并将您的消息作为工具错误返回给 Claude。Claude Code 会忽略此事件中的 `continue: false`,Claude 会继续工作。

2638 2646 

2639* **退出代码 2**:Claude Code 将 stderr 文本作为消息返回。2647* **退出码 2**:Claude Code 将 stderr 文本作为消息返回。

2640* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 将 `reason` 作为消息返回。2648* **JSON `{"decision": "block", "reason": "..."}`**:Claude Code 将 `reason` 作为消息返回。

2641 2649 

2642此示例阻止主题不遵循所需格式的任务:2650以下示例会阻止主题不符合所需格式的任务:

2643 2651 

2644```bash theme={null}2652```bash theme={null}

2645#!/bin/bash2653#!/bin/bash


2658 TaskCompleted2666 TaskCompleted

2659</h3>2667</h3>

2660 2668 

2661在任务被标记为完成时运行。这在两种情况下触发:当任何 agent 通过 TaskUpdate 工具显式标记任务为完成时,或当 [agent team](/docs/zh-CN/agent-teams) 队友完成其回合与进行中的任务时。使用此来强制完成标准,如通过测试或 lint 检查,然后任务才能关闭。2669当任务被标记为已完成时运行。它会在两种情况下触发:任何 Agent 通过 TaskUpdate 工具显式将任务标记为已完成时,或 [agent team](/docs/zh-CN/agent-teams) 队友在仍有进行中任务的情况下结束其轮次时。可用于在任务关闭之前强制执行完成标准,例如测试通过或 lint 检查通过。

2662 2670 

2663TaskCompleted hooks 不支持匹配器,对每个出现触发。2671TaskCompleted hook 不支持匹配器,每次发生时都会触发。

2664 2672 

2665<h4 id="taskcompleted-input">2673<h4 id="taskcompleted-input">

2666 TaskCompleted 输入2674 TaskCompleted 输入

2667</h4>2675</h4>

2668 2676 

2669除了 [常见输入字段](#common-input-fields) 外,TaskCompleted hooks 接收 `task_id`、`task_subject` 和可选的 `task_description`、`teammate_name` 和 `team_name`。2677除了[通用输入字段](#common-input-fields)之外,TaskCompleted hook 还会接收 `task_id`、`task_subject`,以及可选的 `task_description`、`teammate_name` 和 `team_name`。

2670 2678 

2671```json theme={null}2679```json theme={null}

2672{2680{


2686| 字段 | 描述 |2694| 字段 | 描述 |

2687| :- | :- |2695| :- | :- |

2688| `task_id` | 正在完成的任务的标识符 |2696| `task_id` | 正在完成的任务的标识符 |

2689| `task_subject` | 任务的标题 |2697| `task_subject` | 任务标题 |

2690| `task_description` | 任务的详细描述。可能不存在 |2698| `task_description` | 任务的详细描述。可能不存在 |

2691| `teammate_name` | 完成任务的队友的名称。可能不存在 |2699| `teammate_name` | 完成该任务的队友名称。可能不存在 |

2692| `team_name` | 已弃用。会话派生的团队名称;将在未来版本中删除 |2700| `team_name` | 已弃用。从会话派生的团队名称;将在未来版本中移除 |

2693 2701 

2694<h4 id="taskcompleted-decision-control">2702<h4 id="taskcompleted-decision-control">

2695 TaskCompleted 决策控制2703 TaskCompleted 决策控制

2696</h4>2704</h4>

2697 2705 

2698TaskCompleted hooks 支持两种方式来控制任务完成:2706TaskCompleted hook 支持两种控制任务完成的方式:

2699 2707 

2700* **退出代码 2**:任务不被标记为完成,stderr 消息被反馈给模型作为反馈。2708* **退出码 2**:任务不会被标记为已完成,stderr 消息会作为反馈传回给模型。

2701* **JSON `{"continue": false, "stopReason": "..."}`**:当队友完成其回合触发事件时,完全停止队友,匹配 `Stop` hook 行为。`stopReason` 显示给用户。当 `TaskUpdate` 工具触发事件时,Claude Code 忽略 `continue: false`;退出代码 2 仍然阻止完成。2709* **JSON `{"continue": false, "stopReason": "..."}`**:当事件由队友结束其轮次触发时,完全停止该队友,与 `Stop` hook 的行为一致。`stopReason` 会显示给用户。当事件由 `TaskUpdate` 工具触发时,Claude Code 会忽略 `continue: false`;退出码 2 仍会阻止完成。

2702 2710 

2703此示例运行测试并在它们失败时阻止任务完成:2711以下示例运行测试,如果测试失败则阻止任务完成:

2704 2712 

2705```bash theme={null}2713```bash theme={null}

2706#!/bin/bash2714#!/bin/bash


2720 Stop2728 Stop

2721</h3>2729</h3>

2722 2730 

2723在主 Claude Code agent 完成响应时运行。如果停止由于用户中断而发生,不运行。API 错误触发 [StopFailure](#stopfailure)。2731当主 Claude Code Agent 完成回复时运行。如果停止是由用户中断导致的,则不会运行。API 错误会改为触发

2732[StopFailure](#stopfailure)。

2724 2733 

2725<Tip>2734<Tip>

2726 [`/goal`](/docs/zh-CN/goal) 命令是会话范围的基于提示的 Stop hook 的内置快捷方式。当您想让 Claude 在不编写 hook 配置的情况下继续朝着条件工作时使用它。2735 [`/goal`](/docs/zh-CN/goal) 命令是会话范围内基于提示词的 Stop hook 的内置快捷方式。当您希望 Claude 朝着某个条件持续工作而无需编写 hook 配置时,请使用它。

2727</Tip>2736</Tip>

2728 2737 

2729<h4 id="stop-input">2738<h4 id="stop-input">

2730 Stop 输入2739 Stop 输入

2731</h4>2740</h4>

2732 2741 

2733除了 [常见输入字段](#common-input-fields) 外,Stop hooks 接收 `stop_hook_active`、`last_assistant_message`、`background_tasks` 和 `session_crons`。`stop_hook_active` 字段在 Claude Code 已经作为 stop hook 的结果继续时为 `true`。检查此值或处理成绩单以避免在永远不会解决的条件上阻止。Claude Code 应用 8 连续继续上限:在 stop hooks 连续继续回合 8 次后,Claude Code 覆盖下一个阻止并结束回合。要提高上限,设置 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-CN/env-vars)。2742除了[通用输入字段](#common-input-fields)之外,Stop hook 还会接收 `stop_hook_active`、`last_assistant_message`、`background_tasks` 和 `session_crons`。当 Claude Code 已经因 stop hook 而继续执行时,`stop_hook_active` 字段为 `true`。请检查此值或处理会话记录,以避免因一个永远无法满足的条件而持续阻止。Claude Code 设有 8 次连续继续的上限:在 stop hook 连续八次让轮次继续之后,Claude Code 会覆盖下一次阻止并结束该轮次。要提高此上限,请设置 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/zh-CN/env-vars)。

2734 2743 

2735`last_assistant_message` 字段包含 Claude 最终响应的文本内容,因此 hooks 可以访问它而不解析成绩单文件。对于作用于刚完成的回合的 hooks,如朗读或通知 hooks,使用此字段而不是读取 `transcript_path`:成绩单文件不保证在所有版本的 Stop 时包含最终消息。2744`last_assistant_message` 字段包含 Claude 最终回复的文本内容,因此 hook 无需解析会话记录文件即可访问它。对于需要处理刚完成的轮次的 hook(例如朗读或通知 hook),请使用此字段,而不是读取 `transcript_path`:在所有版本中,并不能保证会话记录文件在 Stop 时已包含最终消息。

2736 2745 

2737`background_tasks` 和 `session_crons` 数组让 hooks 区分"会话完成"与"会话暂停等待后台工作唤醒它"。当任务注册表可达时两个数组都出现,当没有任何东西在飞行或计划时为空。2746`background_tasks` 和 `session_crons` 数组让 hook 能够区分"会话已完成"和"会话已暂停,正在等待后台工作将其重新唤醒"。当任务注册表可访问时,这两个数组都会存在;当没有正在进行或已计划的内容时,它们为空。

2738 2747 

2739`background_tasks` 中的每个条目描述一个进行中的任务,并使用这些字段:2748`background_tasks` 中的每个条目描述一个正在进行的任务,并使用以下字段:

2740 2749 

2741| 字段 | 描述 |2750| 字段 | 描述 |

2742| :- | :- |2751| :- | :- |

2743| `id` | 任务标识符 |2752| `id` | 任务标识符 |

2744| `type` | 友好的任务类型标签,如 `shell`、`subagent`、`monitor`、`workflow`、`teammate`、`cloud session` 或 `MCP task`。每个标签标识哪个 Claude Code 功能创建了任务。对于无法识别的类型回退到原始判别式 |2753| `type` | 易读的任务类型标签,例如 `shell`、`subagent`、`monitor`、`workflow`、`teammate`、`cloud session` 或 `MCP task`。每个标签标识了创建该任务的 Claude Code 功能。对于无法识别的类型,回退为原始判别值 |

2745| `status` | 当前任务状态 |2754| `status` | 当前任务状态 |

2746| `description` | 自由文本描述,上限为 1000 个字符,当剪裁时在字符串中带有 `… [+N chars]` 标记 |2755| `description` | 自由文本描述,上限为 1000 个字符,被截断时在字符串中带有 `… [+N chars]` 标记 |

2747| `command` | Shell 命令行,上限为 1000 个字符。仅对 `shell` 任务出现 |2756| `command` | shell 命令行,上限为 1000 个字符。仅存在于 `shell` 任务中 |

2748| `agent_type` | 子 agent 类型名称。仅对 `subagent` 任务出现 |2757| `agent_type` | 子代理类型名称。仅存在于 `subagent` 任务中 |

2749| `server` | MCP 服务器名称。仅对 `monitor` 和 `MCP task` 任务出现 |2758| `server` | MCP 服务器名称。仅存在于 `monitor` 和 `MCP task` 任务中 |

2750| `tool` | MCP 工具名称。仅对 `monitor` 和 `MCP task` 任务出现 |2759| `tool` | MCP 工具名称。仅存在于 `monitor` 和 `MCP task` 任务中 |

2751| `name` | 工作流名称。仅对 `workflow` 任务出现 |2760| `name` | 工作流名称。仅存在于 `workflow` 任务中 |

2752 2761 

2753`session_crons` 中的每个条目描述一个会话范围的计划唤醒,来自 `CronCreate`、`ScheduleWakeup` 和 `/loop`:2762`session_crons` 中的每个条目描述一个会话范围内的计划唤醒,来源于 `CronCreate`、`ScheduleWakeup` 和 `/loop`:

2754 2763 

2755| 字段 | 描述 |2764| 字段 | 描述 |

2756| :- | :- |2765| :- | :- |

2757| `id` | Cron 任务标识符 |2766| `id` | Cron 任务标识符 |

2758| `schedule` | Cron 表达式,例如 `0 9 * * 1-5` |2767| `schedule` | Cron 表达式,例如 `0 9 * * 1-5` |

2759| `recurring` | 对于一次性唤醒(其计划编码单个触发时间)为 `false`,对于在每个匹配上重新触发的任务为 `true` |2768| `recurring` | 对于计划中只编码了单个触发时间的一次性唤醒为 `false`,对于每次匹配都会重新触发的任务为 `true` |

2760| `prompt` | 当 cron 触发时提交的提示,上限为 1000 个字符,带有相同的 `… [+N chars]` 标记 |2769| `prompt` | cron 触发时提交的提示词,上限为 1000 个字符,带有相同的 `… [+N chars]` 标记 |

2761 2770 

2762此示例显示了一个 Stop 输入,带有一个进行中的 shell 任务和一个循环 cron:2771以下示例展示了一个包含一个正在进行的 shell 任务和一个周期性 cron 的 Stop 输入:

2763 2772 

2764```json theme={null}2773```json theme={null}

2765{2774{


2794 Stop 决策控制2803 Stop 决策控制

2795</h4>2804</h4>

2796 2805 

2797`Stop` 和 `SubagentStop` hooks 可以控制 Claude 是否继续。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您的 hook 脚本可以返回这些事件特定的字段:2806`Stop` 和 `SubagentStop` hook 可以控制 Claude 是否继续。除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,您的 hook 脚本还可以返回以下特定于事件的字段:

2798 2807 

2799| 字段 | 描述 |2808| 字段 | 描述 |

2800| :- | :- |2809| :- | :- |

2801| `decision` | `"block"` 防止 Claude 停止。省略以允许 Claude 停止 |2810| `decision` | `"block"` 会阻止 Claude 停止。省略则允许 Claude 停止 |

2802| `reason` | 当 `decision` 为 `"block"` 时需要。告诉 Claude 为什么它应该继续 |2811| `reason` | 当 `decision` 为 `"block"` 时必填。告诉 Claude 为什么应该继续 |

2803| `hookSpecificOutput.additionalContext` | Claude 的非错误反馈。对话继续,以便 Claude 可以作用于它,但与 `decision: "block"` 不同,它在成绩单中显示为 hook 反馈而不是 hook 错误 |2812| `hookSpecificOutput.additionalContext` | 给 Claude 的非错误反馈。对话会继续,以便 Claude 据此采取行动,但与 `decision: "block"` 不同,它在会话记录中显示为 hook 反馈,而不是 hook 错误 |

2804 2813 

2805通过退出 2 阻止的 hook 路由方式与 `reason` 相同:Claude 接收 stderr 消息作为为什么它应该继续的解释。2814通过退出码 2 进行阻止的 hook 与 `reason` 的传递方式相同:Claude 会收到 stderr 消息,作为它应该继续的原因说明。

2806 2815 

2807```json theme={null}2816```json theme={null}

2808{2817{


2811}2820}

2812```2821```

2813 2822 

2814当 hook 按设计工作并给 Claude 指导时使用 `additionalContext`,如"在完成前运行测试套件"。它通过与 `decision: "block"` 相同的循环保护保持对话进行,即 `stop_hook_active` 输入和 8 连续继续上限,但成绩单将其标记为 `Stop hook feedback`,不显示 hook 错误通知:2823当 hook 按设计正常工作并为 Claude 提供指导时(例如"完成前运行测试套件"),请使用 `additionalContext`。它通过与 `decision: "block"` 相同的循环保护机制(即 `stop_hook_active` 输入和 8 次连续继续上限)让对话继续,但会话记录会将其标记为 `Stop hook feedback`,并且不会显示 hook 错误通知:

2815 2824 

2816```json theme={null}2825```json theme={null}

2817{2826{


2826 StopFailure2835 StopFailure

2827</h3>2836</h3>

2828 2837 

2829在回合由于 API 错误而结束时运行,而不是 [Stop](#stop)。Claude Code 忽略 hook 的输出和退出代码,除了 [`terminalSequence`](#emit-terminal-notifications)。使用此来记录失败、发送警报或当 Claude 由于速率限制、身份验证问题或其他 API 错误无法完成响应时采取恢复操作。2838当轮次因 API 错误而结束时,代替 [Stop](#stop) 运行。除 [`terminalSequence`](#emit-terminal-notifications) 外,Claude Code 会忽略该 hook 的输出和退出码。当 Claude 由于速率限制、身份验证问题或其他 API 错误而无法完成回复时,可用于记录失败、发送警报或采取恢复措施。

2830 2839 

2831<h4 id="stopfailure-input">2840<h4 id="stopfailure-input">

2832 StopFailure 输入2841 StopFailure 输入

2833</h4>2842</h4>

2834 2843 

2835除了 [常见输入字段](#common-input-fields) 外,StopFailure hooks 接收 `error`、可选的 `error_details` 和可选的 `last_assistant_message`。`error` 字段标识错误类型,用于匹配器过滤。2844除了[通用输入字段](#common-input-fields)之外,StopFailure hook 还会接收 `error`、可选的 `error_details` 和可选的 `last_assistant_message`。`error` 字段标识错误类型,并用于匹配器过滤。

2836 2845 

2837| 字段 | 描述 |2846| 字段 | 描述 |

2838| :- | :- |2847| :- | :- |

2839| `error` | 错误类型:`rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |2848| `error` | 错误类型:`rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |

2840| `error_details` | 关于错误的额外详情,当可用时 |2849| `error_details` | 关于该错误的其他详细信息(如有) |

2841| `last_assistant_message` | 在对话中显示的渲染错误文本。与 `Stop` 和 `SubagentStop` 不同,其中此字段保持 Claude 的对话输出,对于 `StopFailure` 它包含 API 错误字符串本身,如 `"API Error: Rate limit reached"` |2850| `last_assistant_message` | 在对话中显示的渲染后错误文本。与 `Stop` 和 `SubagentStop` 中该字段保存 Claude 的对话输出不同,对于 `StopFailure`,它包含 API 错误字符串本身,例如 `"API Error: Rate limit reached"` |

2842 2851 

2843```json theme={null}2852```json theme={null}

2844{2853{


2852}2861}

2853```2862```

2854 2863 

2855StopFailure hooks 没有决策控制。它们仅为通知和日志目的运行。2864StopFailure hook 没有决策控制。它们仅用于通知和日志记录目的。

2856 2865 

2857<h3 id="teammateidle">2866<h3 id="teammateidle">

2858 TeammateIdle2867 TeammateIdle

2859</h3>2868</h3>

2860 2869 

2861在 [agent team](/docs/zh-CN/agent-teams) 队友在完成其回合后即将空闲时运行。使用此来强制质量门,如在队友停止工作前要求通过 lint 检查或验证输出文件存在。2870当 [agent team](/docs/zh-CN/agent-teams) 队友在结束其轮次后即将进入空闲状态时运行。可用于在队友停止工作之前强制执行质量关卡,例如要求 lint 检查通过或验证输出文件是否存在。

2862 2871 

2863TeammateIdle hooks 不支持匹配器,对每个出现触发。2872TeammateIdle hook 不支持匹配器,每次发生时都会触发。

2864 2873 

2865<h4 id="teammateidle-input">2874<h4 id="teammateidle-input">

2866 TeammateIdle 输入2875 TeammateIdle 输入

2867</h4>2876</h4>

2868 2877 

2869除了 [常见输入字段](#common-input-fields) 外,TeammateIdle hooks 接收 `teammate_name` 和 `team_name`。2878除了[通用输入字段](#common-input-fields)之外,TeammateIdle hook 还会接收 `teammate_name` 和 `team_name`。

2870 2879 

2871```json theme={null}2880```json theme={null}

2872{2881{


2882 2891 

2883| 字段 | 描述 |2892| 字段 | 描述 |

2884| :- | :- |2893| :- | :- |

2885| `teammate_name` | 即将空闲的队友的名称 |2894| `teammate_name` | 即将进入空闲状态的队友名称 |

2886| `team_name` | 已弃用。会话派生的团队名称;将在未来版本中删除 |2895| `team_name` | 已弃用。从会话派生的团队名称;将在未来版本中移除 |

2887 2896 

2888<h4 id="teammateidle-decision-control">2897<h4 id="teammateidle-decision-control">

2889 TeammateIdle 决策控制2898 TeammateIdle 决策控制

2890</h4>2899</h4>

2891 2900 

2892TeammateIdle hooks 支持两种方式来控制队友行为:2901TeammateIdle hook 支持两种控制队友行为的方式:

2893 2902 

2894* **退出代码 2**:队友接收 stderr 消息作为反馈并继续工作而不是空闲。2903* **退出码 2**:队友会收到 stderr 消息作为反馈,并继续工作而不是进入空闲状态。

2895* **JSON `{"continue": false, "stopReason": "..."}`**:完全停止队友,匹配 `Stop` hook 行为。`stopReason` 显示给用户。2904* **JSON `{"continue": false, "stopReason": "..."}`**:完全停止该队友,与 `Stop` hook 的行为一致。`stopReason` 会显示给用户。

2896 2905 

2897此示例检查构建工件存在,然后允许队友空闲:2906以下示例在允许队友进入空闲状态之前检查构建产物是否存在:

2898 2907 

2899```bash theme={null}2908```bash theme={null}

2900#!/bin/bash2909#!/bin/bash


2911 ConfigChange2920 ConfigChange

2912</h3>2921</h3>

2913 2922 

2914在会话期间配置文件更改时运行。使用此来审计设置更改、强制安全策略或阻止对配置文件的未授权修改。2923当会话期间配置文件发生更改时运行。可用于审计设置更改、强制执行安全策略,或阻止对配置文件的未经授权的修改。

2915 2924 

2916Claude Code 在设置文件、托管策略文件或 skill 文件更改时运行 ConfigChange hooks。对于托管策略,它仅在 `managed-settings.json` 或 `managed-settings.d/` 中的文件更改时运行它们。它应用 [服务器托管设置](/docs/zh-CN/server-managed-settings) 和对 macOS 托管首选项或 Windows 注册表策略的更改而不运行它们。在带有 [`wslInheritsWindowsSettings`](/docs/zh-CN/settings-reference#wslinheritswindowssettings) 的 WSL 上,它也在其策略轮询上应用更改的 Windows 端托管设置文件而不运行它们。2925当设置文件、托管策略文件或 skill 文件发生更改时,Claude Code 会运行 ConfigChange hook。对于托管策略,仅当 `managed-settings.json` 或 `managed-settings.d/` 中的文件发生更改时才会运行。对于[服务器托管设置](/docs/zh-CN/server-managed-settings)以及 macOS 托管偏好设置或 Windows 注册表策略的更改,Claude Code 会直接应用而不运行这些 hook。在启用了 [`wslInheritsWindowsSettings`](/docs/zh-CN/settings-reference#wslinheritswindowssettings) 的 WSL 上,它在策略轮询时也会直接应用已更改的 Windows 端托管设置文件,而不运行这些 hook。

2917 2926 

2918匹配器在配置源上过滤:2927匹配器按配置来源进行过滤:

2919 2928 

2920| 匹配器 | 何时触发 |2929| 匹配器 | 触发时机 |

2921| :- | :- |2930| :- | :- |

2922| `user_settings` | `~/.claude/settings.json` 更改 |2931| `user_settings` | `~/.claude/settings.json` 发生更改 |

2923| `project_settings` | `.claude/settings.json` 更改 |2932| `project_settings` | `.claude/settings.json` 发生更改 |

2924| `local_settings` | `.claude/settings.local.json` 更改 |2933| `local_settings` | `.claude/settings.local.json` 发生更改 |

2925| `policy_settings` | `managed-settings.json` 或 `managed-settings.d/` 中的文件更改 |2934| `policy_settings` | `managed-settings.json` 或 `managed-settings.d/` 中的文件发生更改 |

2926| `skills` | `.claude/skills/` 中的 skill 文件更改 |2935| `skills` | `.claude/skills/` 中的 skill 文件发生更改 |

2927 2936 

2928此示例记录所有配置更改以进行安全审计:2937以下示例记录所有配置更改以进行安全审计:

2929 2938 

2930```json theme={null}2939```json theme={null}

2931{2940{


2949 ConfigChange 输入2958 ConfigChange 输入

2950</h4>2959</h4>

2951 2960 

2952除了 [常见输入字段](#common-input-fields) 外,ConfigChange hooks 接收 `source` 和可选的 `file_path`。`source` 字段指示哪个配置类型更改,`file_path` 提供被修改的特定文件的路径。2961除了[通用输入字段](#common-input-fields)之外,ConfigChange hook 还会接收 `source` 和可选的 `file_path`。`source` 字段指示哪种配置类型发生了更改,`file_path` 提供被修改的具体文件的路径。

2953 2962 

2954```json theme={null}2963```json theme={null}

2955{2964{


2966 ConfigChange 决策控制2975 ConfigChange 决策控制

2967</h4>2976</h4>

2968 2977 

2969ConfigChange hooks 可以阻止配置更改生效。使用退出代码 2 或 JSON `decision` 来防止更改。当被阻止时,新设置不应用于运行的会话。2978ConfigChange hook 可以阻止配置更改生效。使用退出码 2 或 JSON `decision` 来阻止更改。被阻止时,新设置不会应用到正在运行的会话。

2970 2979 

2971| 字段 | 描述 |2980| 字段 | 描述 |

2972| :- | :- |2981| :- | :- |

2973| `decision` | `"block"` 防止配置更改被应用。省略以允许更改 |2982| `decision` | `"block"` 会阻止应用该配置更改。省略则允许更改 |

2974| `reason` | 被接受但永远不显示 |2983| `reason` | 可接受但永远不会显示 |

2975 2984 

2976```json theme={null}2985```json theme={null}

2977{2986{


2980}2989}

2981```2990```

2982 2991 

2983`policy_settings` 更改无法被阻止。当机器上的托管设置文件更改时,hooks 仍然为 `policy_settings` 源触发,因此您可以使用它们来记录这些编辑,但任何阻止决策都被忽略。这确保企业托管设置始终生效。当 [服务器托管设置](/docs/zh-CN/server-managed-settings) 到达或刷新时,Claude Code 不运行 `ConfigChange` hooks。2992`policy_settings` 更改无法被阻止。当机器上的托管设置文件发生更改时,hook 仍会针对 `policy_settings` 来源触发,因此您可以使用它们记录这些编辑,但任何阻止决策都会被忽略。这确保了企业托管设置始终生效。当[服务器托管设置](/docs/zh-CN/server-managed-settings)到达或刷新时,Claude Code 不会运行 `ConfigChange` hook。

2984 2993 

2985Claude Code 作用于 ConfigChange hook 的 JSON 输出中的阻止决策,并丢弃 `systemMessage` 和 `continue`。被阻止的更改不向您或 Claude 呈现任何消息,无论您是用 `reason` 还是退出 2 的 stderr 阻止。Claude Code 仅向调试日志写入一行。2994Claude Code 会根据 ConfigChange hook JSON 输出中的阻止决策采取行动,并丢弃 `systemMessage` 和 `continue`。无论您是通过 `reason` 还是通过退出码 2 时的 stderr 进行阻止,被阻止的更改都不会向您或 Claude 显示任何消息。Claude Code 只会在调试日志中写入一行。

2986 2995 

2987<h3 id="cwdchanged">2996<h3 id="cwdchanged">

2988 CwdChanged2997 CwdChanged

2989</h3>2998</h3>

2990 2999 

2991在主对话中的 shell 命令更改工作目录时运行,例如当 Claude 执行 `cd` 命令时。使用此来对目录更改做出反应:重新加载环境变量、激活项目特定的工具链或自动运行设置脚本。与 [FileChanged](#filechanged) 配对,用于像 [direnv](https://direnv.net/) 这样管理每个目录环境的工具。3000当主对话中的 shell 命令更改了工作目录时运行,例如 Claude 执行 `cd` 命令时。可用于响应目录更改:重新加载环境变量、激活特定于项目的工具链,或自动运行设置脚本。可与 [FileChanged](#filechanged) 配合使用,以支持 [direnv](https://direnv.net/) 等管理每目录环境的工具。

2992 3001 

2993CwdChanged hooks 可以访问 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。写入该文件的变量持久化到后续 Bash 命令,直到下一个 CwdChanged 事件,当 Claude Code 清除它们时。3002CwdChanged hook 可以访问 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。写入该文件的变量会在后续 Bash 命令中持续有效,直到下一个 CwdChanged 事件时由 Claude Code 清除。

2994 3003 

2995CwdChanged 不支持匹配器,对每个出现触发。3004CwdChanged 不支持匹配器,每次发生时都会触发。

2996 3005 

2997<h4 id="cwdchanged-input">3006<h4 id="cwdchanged-input">

2998 CwdChanged 输入3007 CwdChanged 输入

2999</h4>3008</h4>

3000 3009 

3001除了 [常见输入字段](#common-input-fields) 外,CwdChanged hooks 接收 `old_cwd` 和 `new_cwd`。3010除了[通用输入字段](#common-input-fields)之外,CwdChanged hook 还会接收 `old_cwd` 和 `new_cwd`。

3002 3011 

3003```json theme={null}3012```json theme={null}

3004{3013{


3015 CwdChanged 输出3024 CwdChanged 输出

3016</h4>3025</h4>

3017 3026 

3018除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,CwdChanged hooks 可以返回 `watchPaths` 来动态设置 [FileChanged](#filechanged) 监视哪些文件路径:3027除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,CwdChanged hook 还可以返回 `watchPaths`,以动态设置 [FileChanged](#filechanged) 监视哪些文件路径:

3019 3028 

3020| 字段 | 描述 |3029| 字段 | 描述 |

3021| :- | :- |3030| :- | :- |

3022| `watchPaths` | 绝对路径数组。替换当前动态监视列表。来自您 `matcher` 配置的路径始终被监视。返回空数组清除动态列表,这在进入新目录时是典型的 |3031| `watchPaths` | 绝对路径数组。替换当前的动态监视列表。您的 `matcher` 配置中的路径始终会被监视。返回空数组会清除动态列表,这在进入新目录时很常见 |

3023 3032 

3024CwdChanged hooks 没有决策控制。它们无法阻止目录更改。3033CwdChanged hook 没有决策控制。它们无法阻止目录更改。

3025 3034 

3026Claude Code 从它们的 JSON 输出读取 `watchPaths` 和 `systemMessage`,并丢弃 `continue`。在交互式会话中,它显示 `systemMessage` 作为简短的终端通知。消息不到达 SDK 消息流。3035Claude Code 会从其 JSON 输出中读取 `watchPaths` 和 `systemMessage`,并丢弃 `continue`。在交互式会话中,它会将 `systemMessage` 显示为简短的终端通知。该消息不会进入 SDK 消息流。

3027 3036 

3028<h3 id="directoryadded">3037<h3 id="directoryadded">

3029 DirectoryAdded3038 DirectoryAdded

3030</h3>3039</h3>

3031 3040 

3032在您使用 `/add-dir` 命令在会话中添加工作目录后运行,或在 SDK 客户端使用 `register_repo_root` 控制请求添加一个后运行。使用此来准备新添加的存储库,例如安装其依赖。3041在您于会话中途使用 `/add-dir` 命令添加工作目录之后,或在 SDK 客户端通过 `register_repo_root` 控制请求添加工作目录之后运行。可用于准备新添加的仓库,例如安装其依赖。

3033 3042 

3034Claude Code 在以下情况下不触发此事件:3043在以下情况下,Claude Code 不会触发此事件:

3035 3044 

3036* 您使用 `--add-dir` 启动标志传递目录;[SessionStart](#sessionstart) 涵盖这些目录3045* 您通过 `--add-dir` 启动标志传入目录;这些目录由 [SessionStart](#sessionstart) 覆盖

3037* 您在 `/permissions` Workspace 标签上添加目录3046* 您在 `/permissions` 的 Workspace 选项卡上添加目录

3038* 您添加已经是工作目录或在一个内部的目录3047* 您添加的目录已经是工作目录或位于某个工作目录内

3039 3048 

3040Claude Code 在刷新沙箱和权限状态后触发 DirectoryAdded,因此沙箱工具已经在您的 hook 运行时看到新目录。Hook 命令本身运行未沙箱化。3049Claude Code 会在刷新沙箱和权限状态之后触发 DirectoryAdded,因此当您的 hook 运行时,沙箱化工具已经能看到新目录。hook 命令本身在沙箱之外运行。

3041 3050 

3042Claude Code 不等待 hook:添加立即完成,hook 在后台以 600 秒默认超时运行。3051Claude Code 不会等待该 hook:添加操作会立即完成,hook 在后台运行,使用 600 秒的默认超时时间。

3043 3052 

3044匹配器在目录添加方式上过滤:3053匹配器按目录的添加方式进行过滤:

3045 3054 

3046| 匹配器 | 何时触发 |3055| 匹配器 | 触发时机 |

3047| :- | :- |3056| :- | :- |

3048| `slash_command` | 您使用 `/add-dir` 添加目录 |3057| `slash_command` | 您使用 `/add-dir` 添加目录 |

3049| `register_repo_root` | SDK 客户端使用 `register_repo_root` 控制请求添加目录 |3058| `register_repo_root` | SDK 客户端通过 `register_repo_root` 控制请求添加目录 |

3050 3059 

3051<h4 id="directoryadded-input">3060<h4 id="directoryadded-input">

3052 DirectoryAdded 输入3061 DirectoryAdded 输入

3053</h4>3062</h4>

3054 3063 

3055除了 [常见输入字段](#common-input-fields) 外,DirectoryAdded hooks 接收 `directory` 和 `source`。3064除了[通用输入字段](#common-input-fields)之外,DirectoryAdded hook 还会接收 `directory` 和 `source`。

3056 3065 

3057| 字段 | 描述 |3066| 字段 | 描述 |

3058| :- | :- |3067| :- | :- |

3059| `directory` | 添加的目录的绝对路径 |3068| `directory` | 所添加目录的绝对路径 |

3060| `source` | 目录如何添加,`/add-dir` 为 `"slash_command"` 或 SDK 控制请求为 `"register_repo_root"` |3069| `source` | 目录的添加方式:`/add-dir` 对应 `"slash_command"`,SDK 控制请求对应 `"register_repo_root"` |

3061 3070 

3062```json theme={null}3071```json theme={null}

3063{3072{


3070}3079}

3071```3080```

3072 3081 

3073DirectoryAdded hooks 没有决策控制。它们无法阻止添加,这在 hook 运行时已经完成。Claude Code 从它们的 JSON 输出丢弃 `continue` 字段,并根据源以不同方式呈现其余部分:3082DirectoryAdded hook 没有决策控制。它们无法阻止添加操作,因为 hook 运行时添加已经完成。Claude Code 会丢弃其 JSON 输出中的 `continue` 字段,并根据来源以不同方式呈现其余内容:

3074 3083 

3075* `slash_command`:Claude Code 将 hook 的 `systemMessage` 作为上下文传递给 Claude,在下一个对话回合上,而不是向您显示。失败 hooks 的计数出现在成绩单中。完整失败输出进入调试日志3084* `slash_command`:Claude Code 会在下一个对话轮次中将 hook 的 `systemMessage` 作为上下文传递给 Claude,而不是向您显示。失败 hook 的数量会显示在会话记录中。完整的失败输出会写入调试日志

3076* `register_repo_root`:Claude Code 仅将 `systemMessage` 输出和失败输出写入调试日志3085* `register_repo_root`:Claude Code 仅将 `systemMessage` 输出和失败输出写入调试日志

3077 3086 

3078<h3 id="filechanged">3087<h3 id="filechanged">

3079 FileChanged3088 FileChanged

3080</h3>3089</h3>

3081 3090 

3082在监视的文件在磁盘上更改时运行。Claude Code 使用文件系统监视器检测更改,而不是通过检查工具调用,因此它运行 hook,无论什么更改了文件:`Edit` 或 `Write` 工具调用、Claude 使用 `Bash` 运行的脚本或 Claude Code 外的进程。常见用途是在项目配置文件更改时重新加载环境变量。3091当被监视的文件在磁盘上发生更改时运行。Claude Code 通过文件系统监视器而非检查工具调用来检测更改,因此无论是什么更改了文件,它都会运行该 hook:`Edit` 或 `Write` 工具调用、Claude 通过 `Bash` 运行的脚本,或完全在 Claude Code 之外的进程。一个常见用途是在项目配置文件更改时重新加载环境变量。

3083 3092 

3084此事件的 `matcher` 有两个角色:3093此事件的 `matcher` 有两个作用:

3085 3094 

3086* **构建监视列表**:值在 `|` 上分割,每个段注册为工作目录中的字面文件名,因此 `".envrc|.env"` 恰好监视这两个文件。正则表达式模式在这里不有用:像 `^\.env` 这样的值会监视字面名为 `^\.env` 的文件。3095* **构建监视列表**:该值按 `|` 拆分,每个片段都被注册为工作目录中的字面文件名,因此 `".envrc|.env"` 恰好监视这两个文件。正则表达式模式在这里没有用处:像 `^\.env` 这样的值会监视一个字面名为 `^\.env` 的文件。

3087* **过滤哪些 hooks 运行**:当监视的文件更改时,相同的值使用标准 [匹配器规则](#matcher-patterns) 针对更改文件的基名过滤哪个 hook 组运行。3096* **过滤运行哪些 hook**:当被监视的文件发生更改时,同一个值会按照标准[匹配器规则](#matcher-patterns),针对已更改文件的基本名称过滤运行哪些 hook 组。

3088 3097 

3089此示例在任何更改后规范化 `data.csv` 中的行结尾,包括 `Bash` 命令或外部脚本重写文件:3098以下示例会在 `data.csv` 发生任何更改后(包括 `Bash` 命令或外部脚本重写该文件)规范化其行尾:

3090 3099 

3091```json theme={null}3100```json theme={null}

3092{3101{


3106}3115}

3107```3116```

3108 3117 

3109hook 从 stdin 上的 [JSON 输入](#filechanged-input) 的 `file_path` 字段读取更改文件的绝对路径。其 `grep` 守卫测试与 `perl` 删除的相同内容,行末的 CR,因此规范化后的运行退出而不触及文件。更松散的守卫循环永远,因为 `perl -i` 重写文件,即使它替换了什么,Claude Code 在每次重写后运行 hook。将此脚本保存在 `/path/to/normalize-line-endings.sh` 并使其可执行:3118该 hook 从 stdin 上 [JSON 输入](#filechanged-input)的 `file_path` 字段读取已更改文件的绝对路径。它的 `grep` 守卫检查的正是 `perl` 要删除的内容,即行尾的 CR,因此规范化之后的那次运行会直接退出而不触碰文件。较宽松的守卫会导致无限循环,因为即使没有替换任何内容,`perl -i` 也会重写文件,而 Claude Code 在每次重写后都会再次运行该 hook。请将此脚本保存到 `/path/to/normalize-line-endings.sh` 并使其可执行:

3110 3119 

3111```bash theme={null}3120```bash theme={null}

3112#!/bin/bash3121#!/bin/bash


3116fi3125fi

3117```3126```

3118 3127 

3119要确认 hook 有效,要求 Claude 使用 `Bash` 命令将 CRLF 行附加到 `data.csv`。Claude Code 运行 hook,文件最终以 LF 结尾。3128要确认 hook 是否正常工作,请让 Claude 使用 `Bash` 命令向 `data.csv` 追加一行 CRLF。Claude Code 会运行该 hook,文件最终将使用 LF 行尾。

3120 3129 

3121要监视您无法提前命名的文件,从 hook 返回 [`watchPaths`](#filechanged-output) 来动态更新监视列表。Claude Code 仅在某个东西命名要监视的文件时启动监视器,因此使用命名至少一个文件的 FileChanged 组为列表播种,或使用 [SessionStart](#sessionstart-decision-control) 或 [CwdChanged](#cwdchanged) hook 返回 `watchPaths`。匹配器仍然过滤当监视的文件更改时哪个 hook 组运行,因此给处理动态路径的组一个省略的匹配器,它匹配每个监视的文件并不向监视列表添加任何内容。`"*"` 匹配器也匹配每个文件,但 Claude Code 像任何其他值一样在监视列表中注册它,作为字面名为 `*` 的文件。3130要监视无法预先命名的文件,请从 hook 返回 [`watchPaths`](#filechanged-output) 以动态更新监视列表。只有当有内容指定了要监视的文件时,Claude Code 才会启动监视器,因此请用一个匹配器至少指定了一个文件的 FileChanged 组,或一个返回 `watchPaths` 的 [SessionStart](#sessionstart-decision-control) 或 [CwdChanged](#cwdchanged) hook 来初始化该列表。当被监视的文件发生更改时,匹配器仍会过滤运行哪些 hook 组,因此请为处理动态路径的组省略匹配器,这样它会匹配每个被监视的文件,且不会向监视列表添加任何内容。`"*"` 匹配器同样匹配每个文件,但 Claude Code 会像处理其他值一样将其注册到监视列表中,作为一个字面名为 `*` 的文件。

3122 3131 

3123FileChanged hooks 可以访问 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。写入该文件的变量持久化到后续 Bash 命令,直到下一个 [CwdChanged](#cwdchanged) 事件,当 Claude Code 清除它们时。3132FileChanged hook 可以访问 [`CLAUDE_ENV_FILE`](#persist-environment-variables)。写入该文件的变量会在后续 Bash 命令中持续有效,直到下一个 [CwdChanged](#cwdchanged) 事件时由 Claude Code 清除。

3124 3133 

3125<h4 id="filechanged-input">3134<h4 id="filechanged-input">

3126 FileChanged 输入3135 FileChanged 输入

3127</h4>3136</h4>

3128 3137 

3129除了 [常见输入字段](#common-input-fields) 外,FileChanged hooks 接收 `file_path` 和 `event`。3138除了[通用输入字段](#common-input-fields)之外,FileChanged hook 还会接收 `file_path` 和 `event`。

3130 3139 

3131| 字段 | 描述 |3140| 字段 | 描述 |

3132| :- | :- |3141| :- | :- |

3133| `file_path` | 更改的文件的绝对路径 |3142| `file_path` | 已更改文件的绝对路径 |

3134| `event` | 发生了什么:修改文件为 `"change"`、创建的文件为 `"add"` 或删除的文件为 `"unlink"` |3143| `event` | 发生了什么:`"change"` 表示文件被修改,`"add"` 表示文件被创建,`"unlink"` 表示文件被删除 |

3135 3144 

3136```json theme={null}3145```json theme={null}

3137{3146{


3148 FileChanged 输出3157 FileChanged 输出

3149</h4>3158</h4>

3150 3159 

3151除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,FileChanged hooks 可以返回 `watchPaths` 来动态更新监视的文件路径:3160除了所有 hook 都可用的 [JSON 输出字段](#json-output)之外,FileChanged hook 还可以返回 `watchPaths`,以动态更新监视哪些文件路径:

3152 3161 

3153| 字段 | 描述 |3162| 字段 | 描述 |

3154| :- | :- |3163| :- | :- |

3155| `watchPaths` | 绝对路径数组。替换当前动态监视列表。来自您 `matcher` 配置的路径始终被监视。当您的 hook 脚本根据更改的文件发现要监视的额外文件时使用此 |3164| `watchPaths` | 绝对路径数组。替换当前的动态监视列表。您的 `matcher` 配置中的路径始终会被监视。当您的 hook 脚本根据已更改的文件发现需要额外监视的文件时,请使用此字段 |

3156 3165 

3157FileChanged hooks 没有决策控制。它们无法阻止文件更改发生。3166FileChanged hook 没有决策控制。它们无法阻止文件更改的发生。

3158 3167 

3159Claude Code 从它们的 JSON 输出读取 `watchPaths` 和 `systemMessage`,并丢弃 `continue`。在交互式会话中,它显示 `systemMessage` 作为简短的终端通知。消息不到达 SDK 消息流。3168Claude Code 会从其 JSON 输出中读取 `watchPaths` 和 `systemMessage`,并丢弃 `continue`。在交互式会话中,它会将 `systemMessage` 显示为简短的终端通知。该消息不会进入 SDK 消息流。

3160 3169 

3161<h3 id="worktreecreate">3170<h3 id="worktreecreate">

3162 WorktreeCreate3171 WorktreeCreate

3163</h3>3172</h3>

3164 3173 

3165在创建 worktree 时运行,无论是从 `claude --worktree`、从 [使用 `isolation: "worktree"` 的子 agent](/docs/zh-CN/sub-agents#choose-the-subagent-scope) 还是为 Claude Code 在其自己的 worktree 中隔离的 [后台会话](/docs/zh-CN/agent-view#how-file-edits-are-isolated)。默认情况下 Claude Code 使用 `git worktree` 创建隔离的工作副本。配置 WorktreeCreate hook 替换该默认 git 行为,让您使用不同的版本控制系统,如 SVN、Perforce 或 Mercurial。3174在创建 worktree 时运行,无论是来自 `claude --worktree`、来自[使用 `isolation: "worktree"` 的子代理](/docs/zh-CN/sub-agents#choose-the-subagent-scope),还是用于 Claude Code 隔离在其自身 worktree 中的[后台会话](/docs/zh-CN/agent-view#how-file-edits-are-isolated)。默认情况下,Claude Code 使用 `git worktree` 创建隔离的工作副本。配置 WorktreeCreate hook 会替换该默认 git 行为,让您可以使用 SVN、Perforce 或 Mercurial 等其他版本控制系统。

3166 3175 

3167因为 hook 完全替换默认行为,[`.worktreeinclude`](/docs/zh-CN/worktrees#copy-gitignored-files-into-worktrees) 不被处理。如果您需要将本地配置文件(如 `.env`)复制到新 worktree,请在您的 hook 脚本内执行。3176由于该 hook 完全替换了默认行为,因此不会处理 [`.worktreeinclude`](/docs/zh-CN/worktrees#copy-gitignored-files-into-worktrees)。如果您需要将 `.env` 等本地配置文件复制到新的 worktree 中,请在您的 hook 脚本中完成。

3168 3177 

3169hook 必须返回创建的 worktree 目录的路径。Claude Code 使用此路径作为隔离会话的工作目录。有关每个 hook 类型如何返回路径,请参阅 [WorktreeCreate 输出](#worktreecreate-output)。3178该 hook 必须返回所创建 worktree 目录的路径。Claude Code 将此路径用作隔离会话的工作目录。有关每种 hook 类型如何返回路径,请参阅 [WorktreeCreate 输出](#worktreecreate-output)。

3170 3179 

3171Claude Code 作用于 hook 的成功和返回的路径,并丢弃 `systemMessage` 和 `continue`。3180Claude Code 会根据 hook 的成功状态和返回的路径采取行动,并丢弃 `systemMessage` 和 `continue`。

3172 3181 

3173此示例创建 SVN 工作副本并打印路径供 Claude Code 使用。将存储库 URL 替换为您自己的:3182以下示例创建一个 SVN 工作副本,并打印路径供 Claude Code 使用。请将仓库 URL 替换为您自己的 URL:

3174 3183 

3175```json theme={null}3184```json theme={null}

3176{3185{


3189}3198}

3190```3199```

3191 3200 

3192hook 从 stdin 上的 JSON 输入读取 worktree `name`,检出一个新副本到新目录,并打印目录路径。最后一行的 `echo` 是 Claude Code 读取为 worktree 路径的内容。将任何其他输出重定向到 stderr,以便它不干扰路径。3201该 hook 从 stdin 上的 JSON 输入中读取 worktree 的 `name`,将全新副本检出到新目录中,并打印目录路径。最后一行的 `echo` 就是 Claude Code 读取为 worktree 路径的内容。请将任何其他输出重定向到 stderr,以免干扰该路径。

3193 3202 

3194<h4 id="worktreecreate-input">3203<h4 id="worktreecreate-input">

3195 WorktreeCreate 输入3204 WorktreeCreate 输入

3196</h4>3205</h4>

3197 3206 

3198除了 [常见输入字段](#common-input-fields) 外,WorktreeCreate hooks 接收 `name` 字段。这是新 worktree 的 slug 标识符,由用户指定或自动生成,例如 `bold-oak-a3f2`。3207除了[通用输入字段](#common-input-fields)之外,WorktreeCreate hook 还会接收 `name` 字段。这是新 worktree 的 slug 标识符,由用户指定或自动生成,例如 `bold-oak-a3f2`。

3199 3208 

3200```json theme={null}3209```json theme={null}

3201{3210{


3211 WorktreeCreate 输出3220 WorktreeCreate 输出

3212</h4>3221</h4>

3213 3222 

3214WorktreeCreate hooks 不使用标准允许/阻止决策模型。相反,hook 的成功或失败确定结果。hook 必须返回创建的 worktree 目录的路径:3223WorktreeCreate hook 不使用标准的允许/阻止决策模型,而是由 hook 的成功或失败决定结果。hook 必须返回所创建的 worktree 目录的路径:

3215 3224 

3216* **命令 hooks** (`type: "command"`):将路径打印为 stdout 的最后一个非空行。Claude Code 在读取该行之前剥离 ANSI 转义代码,因此在您的 `echo` 之前打印的 shell 启动横幅被忽略。将任何其他 hook 输出重定向到 stderr。3225* **命令 hook**(`type: "command"`):将路径作为 stdout 的最后一个非空行打印。Claude Code 在读取该行之前会去除 ANSI 转义码,因此在您的 `echo` 之前打印的 shell 启动横幅会被忽略。请将其他任何 hook 输出重定向到 stderr。

3217* **HTTP hooks** (`type: "http"`):在响应体中返回 `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }`。3226* **HTTP hook**(`type: "http"`):在响应体中返回 `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }`。

3218 3227 

3219如果 hook 失败或产生无路径,worktree 创建失败并出现错误。3228如果 hook 失败或未生成路径,worktree 创建将失败并报错。

3220 3229 

3221Claude Code 根据 hook 运行的目录解析相对路径,折叠其中的任何 `.` 或 `..` 段。如果结果路径不是 Claude Code 可以进入的目录,会话打印命名路径的错误并以代码 1 退出。3230Claude Code 会相对于 hook 运行所在的目录解析相对路径,并折叠其中的任何 `.` 或 `..` 段。如果解析得到的路径不是 Claude Code 可以进入的目录,会话会打印一条指明该路径的错误,并以代码 1 退出。

3222 3231 

3223Claude Code 拒绝包含 `.` 或 `..` 段的绝对路径,以及通过存储库根下的符号链接的任何路径,因为提交到存储库的符号链接可能将 worktree 重定向到其外。错误命名被拒绝的组件。返回不通过存储库内符号链接的规范化路径。在 v2.1.216 之前,worktree 创建遵循 hook 的路径而不进行此筛选。3232Claude Code 会拒绝包含 `.` 或 `..` 段的绝对路径,以及任何经过仓库根目录下符号链接的路径,因为提交到仓库中的符号链接可能会将 worktree 重定向到仓库之外。错误信息会指明被拒绝的路径组成部分。请返回一个规范化的、不经过仓库内符号链接的路径。在 v2.1.216 之前,worktree 创建会直接采用 hook 返回的路径,不进行此项检查。

3224 3233 

3225<h3 id="worktreeremove">3234<h3 id="worktreeremove">

3226 WorktreeRemove3235 WorktreeRemove

3227</h3>3236</h3>

3228 3237 

3229在删除 worktree 时运行。这是 [WorktreeCreate](#worktreecreate) 的清理对应物。事件在以下情况下触发:3238在移除 worktree 时运行。这是 [WorktreeCreate](#worktreecreate) 对应的清理事件。该事件在以下情况下触发:

3230 3239 

3231* 您退出 `--worktree` 会话并选择删除它3240* 您退出 `--worktree` 会话并选择将其移除

3232* 带有 `isolation: "worktree"` 的子 agent 完成3241* 设置了 `isolation: "worktree"` 的子代理完成

3233* 您删除 [后台会话](/docs/zh-CN/agent-view#what-deleting-a-session-removes),其 worktree hook 创建3242* 您删除了一个[后台会话](/docs/zh-CN/agent-view#what-deleting-a-session-removes),且其 worktree 由该 hook 创建

3234 3243 

3235对于基于 git 的 worktrees,Claude Code 使用 `git worktree remove` 自动处理清理。如果您配置了 WorktreeCreate hook,将其与 WorktreeRemove hook 配对来控制它创建的 worktrees 的清理:3244对于基于 git 的 worktree,Claude Code 会使用 `git worktree remove` 自动处理清理。如果您配置了 WorktreeCreate hook,请搭配一个 WorktreeRemove hook,以控制其所创建的 worktree 的清理:

3236 3245 

3237* **无 WorktreeRemove hook**:当您退出 `--worktree` 会话并选择删除时,Claude Code 回退到您的 WorktreeCreate hook 返回的路径上的 `git worktree remove --force`,因此 git 识别的 worktree 被删除。git 不识别的 worktree,例如您的 hook 使用非 git 版本控制系统创建的,保留在磁盘上。对于删除 [后台会话](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 对 hook 创建的 worktree 做什么,请参阅 agent view 的删除规则。3246* **没有 WorktreeRemove hook**:当您退出 `--worktree` 会话并选择移除时,Claude Code 会回退为对 WorktreeCreate hook 返回的路径执行 `git worktree remove --force`,因此 git 能识别的 worktree 会被移除。git 无法识别的 worktree(例如您的 hook 使用非 git 版本控制系统创建的 worktree)会保留在磁盘上。关于删除[后台会话](/docs/zh-CN/agent-view#what-deleting-a-session-removes)时如何处理由 hook 创建的 worktree,请参阅 Agent 视图的删除规则。

3238* **Hook 退出 0**:worktree 计为已删除。Claude Code 从 hook 读取其他任何内容,因此确保您的 hook 删除了目录。3247* **Hook 以 0 退出**:该 worktree 视为已移除。Claude Code 不会从 hook 读取其他任何内容,因此请确保您的 hook 已删除该目录。

3239* **Hook 退出非零**:如果 `worktree_path` 处的目录在之后仍然存在,删除失败,worktree 保留在磁盘上,没有 git 回退。在退出非零前删除目录的 hook 计为已删除。对于失败如何报告,请参阅 [WorktreeRemove 输入](#worktreeremove-input)。3248* **Hook 以非零值退出**:如果 `worktree_path` 处的目录在之后仍然存在,则移除失败,worktree 保留在磁盘上,且不会回退到 git。在以非零值退出之前已删除目录的 hook 视为已移除。关于失败的报告方式,请参阅 [WorktreeRemove 输入](#worktreeremove-input)。

3240 3249 

3241Claude Code 永远不删除属于 hook 创建的 worktree 的分支,因为它仅知道您的 WorktreeCreate hook 返回的路径。如果您的 WorktreeCreate hook 创建分支,在您的 WorktreeRemove hook 中删除它。3250Claude Code 从不删除属于 hook 创建的 worktree 的分支,因为它只知道您的 WorktreeCreate hook 返回的路径。如果您的 WorktreeCreate hook 创建了分支,请在 WorktreeRemove hook 中删除该分支。

3242 3251 

3243Claude Code 丢弃 WorktreeRemove hook 的 [JSON 输出字段](#json-output),如 `systemMessage` 和 `continue`。3252Claude Code 会丢弃 WorktreeRemove hook 的 [JSON 输出字段](#json-output),例如 `systemMessage` 和 `continue`。

3244 3253 

3245对于后台会话删除,Claude Code 在运行 hook 之前验证存储的 worktree 路径,并拒绝是符号链接或通过存储库根下的符号链接的路径。hook 仅对仍包含文件的 worktree 运行,当您在 [agent view](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 中确认删除时;对于这样的 worktree,[`claude rm`](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 保持会话和 worktree。在 v2.1.216 之前,hook 在存储的路径上运行而不进行这些检查。3254对于后台会话的删除,Claude Code 会在运行 hook 之前验证存储的 worktree 路径,并拒绝本身是符号链接或经过仓库根目录下符号链接的路径。对于仍包含文件的 worktree,只有当您在 [Agent 视图](/docs/zh-CN/agent-view#what-deleting-a-session-removes)中确认删除时,hook 才会运行;对于这类 worktree,[`claude rm`](/docs/zh-CN/agent-view#manage-sessions-from-the-shell) 会保留会话和 worktree。在 v2.1.216 之前,hook 会直接在存储的路径上运行,不进行这些检查。

3246 3255 

3247Claude Code 将 WorktreeCreate 返回的路径作为 `worktree_path` 在 hook 输入中传递。此示例读取该路径并删除目录:3256Claude Code 会将 WorktreeCreate 返回的路径作为 hook 输入中的 `worktree_path` 传入。以下示例读取该路径并删除该目录:

3248 3257 

3249```json theme={null}3258```json theme={null}

3250{3259{


3267 WorktreeRemove 输入3276 WorktreeRemove 输入

3268</h4>3277</h4>

3269 3278 

3270除了 [常见输入字段](#common-input-fields) 外,WorktreeRemove hooks 接收 `worktree_path` 字段,这是被删除的 worktree 的绝对路径。3279除[通用输入字段](#common-input-fields)外,WorktreeRemove hook 还会接收 `worktree_path` 字段,即正在移除的 worktree 的绝对路径。

3271 3280 

3272```json theme={null}3281```json theme={null}

3273{3282{


3279}3288}

3280```3289```

3281 3290 

3282WorktreeRemove hook 的退出代码决定结果。当 hook 退出非零且 `worktree_path` 处的目录在之后仍然存在时,删除失败:3291WorktreeRemove hook 的退出码决定结果。当 hook 以非零值退出且 `worktree_path` 处的目录之后仍然存在时,移除失败:

3283 3292 

3284* worktree 保留在磁盘上,hook 的命令和 stderr 进入 [调试日志](#debug-hooks)。3293* worktree 保留在磁盘上,hook 的命令和 stderr 会写入[调试日志](#debug-hooks)。

3285* 如果您删除后台会话,会话也保留。[agent view](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 中的拒绝消息报告 hook 如何结束,如 `exited 1`,引用其 stderr 的开头,并说删除会话是否再次删除目录。3294* 如果您正在删除后台会话,该会话也会保留。[Agent 视图](/docs/zh-CN/agent-view#what-deleting-a-session-removes)中的拒绝消息会报告 hook 的结束方式(例如 `exited 1`),引用其 stderr 的开头部分,并说明再次删除该会话是否仍会移除该目录。

3286 3295 

3287<h3 id="precompact">3296<h3 id="precompact">

3288 PreCompact3297 PreCompact

3289</h3>3298</h3>

3290 3299 

3291在 Claude Code 即将运行压缩操作之前运行。3300在 Claude Code 即将执行压缩操作之前运行。

3292 3301 

3293匹配器值指示压缩是手动还是自动触发:3302匹配器值表示压缩是手动触发还是自动触发:

3294 3303 

3295| 匹配器 | 何时触发 |3304| 匹配器 | 触发时机 |

3296| :- | :- |3305| :- | :- |

3297| `manual` | `/compact` |3306| `manual` | `/compact` |

3298| `auto` | 当对话到达 [自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window) 时自动压缩 |3307| `auto` | 对话达到[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window)时的自动压缩 |

3299 3308 

3300使用代码 2 退出以阻止压缩。对于手动 `/compact`,stderr 消息显示给用户。您也可以通过返回带有 `"decision": "block"` 的 JSON 来阻止。3309以代码 2 退出可阻止压缩。对于手动 `/compact`,stderr 消息会显示给用户。您也可以通过返回带有 `"decision": "block"` 的 JSON 来阻止。

3301 3310 

3302阻止自动压缩有不同的效果,取决于它何时触发。如果压缩在上下文限制之前主动触发,Claude Code 跳过它,对话继续未压缩。如果压缩被触发以从 API 已经返回的上下文限制错误恢复,底层错误浮出并且当前请求失败。3311阻止自动压缩的效果取决于其触发时机。如果压缩是在达到上下文限制之前主动触发的,Claude Code 会跳过压缩,对话在未压缩的情况下继续。如果压缩是为了从 API 已返回的上下文限制错误中恢复而触发的,底层错误会显示出来,当前请求失败。

3303 3312 

3304Claude Code 丢弃 PreCompact hook 的 `systemMessage` 和 `continue` 字段。3313Claude Code 会丢弃 PreCompact hook 的 `systemMessage` 和 `continue` 字段。

3305 3314 

3306<h4 id="precompact-input">3315<h4 id="precompact-input">

3307 PreCompact 输入3316 PreCompact 输入

3308</h4>3317</h4>

3309 3318 

3310除了 [常见输入字段](#common-input-fields) 外,PreCompact hooks 接收 `trigger` 和 `custom_instructions`。对于 `manual`,`custom_instructions` 包含用户传递到 `/compact` 的内容,当他们不传递任何内容时为 `null`。对于 `auto`,`custom_instructions` 为 `null`。3319除[通用输入字段](#common-input-fields)外,PreCompact hook 还会接收 `trigger` 和 `custom_instructions`。对于 `manual`,`custom_instructions` 包含用户传给 `/compact` 的内容,用户未传入任何内容时为 `null`。对于 `auto`,`custom_instructions` 为 `null`。

3311 3320 

3312```json theme={null}3321```json theme={null}

3313{3322{


3324 PostCompact3333 PostCompact

3325</h3>3334</h3>

3326 3335 

3327在 Claude Code 完成压缩操作后运行。使用此事件对新压缩状态做出反应,例如记录生成的摘要或更新外部状态。Claude Code 丢弃 PostCompact hook 的 `systemMessage` 和 `continue` 字段。3336在 Claude Code 完成压缩操作后运行。使用此事件对压缩后的新状态作出响应,例如记录生成的摘要或更新外部状态。Claude Code 会丢弃 PostCompact hook 的 `systemMessage` 和 `continue` 字段。

3328 3337 

3329与 `PreCompact` 相同的匹配器值适用:3338适用与 `PreCompact` 相同的匹配器值:

3330 3339 

3331| 匹配器 | 何时触发 |3340| 匹配器 | 触发时机 |

3332| :- | :- |3341| :- | :- |

3333| `manual` | 在 `/compact` 后 |3342| `manual` | `/compact` 之后 |

3334| `auto` | 当对话到达 [自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window) 时自动压缩后 |3343| `auto` | 对话达到[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window)时的自动压缩之后 |

3335 3344 

3336<h4 id="postcompact-input">3345<h4 id="postcompact-input">

3337 PostCompact 输入3346 PostCompact 输入

3338</h4>3347</h4>

3339 3348 

3340除了 [常见输入字段](#common-input-fields) 外,PostCompact hooks 接收 `trigger` 和 `compact_summary`。`compact_summary` 字段包含压缩操作生成的对话摘要。3349除[通用输入字段](#common-input-fields)外,PostCompact hook 还会接收 `trigger` 和 `compact_summary`。`compact_summary` 字段包含压缩操作生成的对话摘要。

3341 3350 

3342```json theme={null}3351```json theme={null}

3343{3352{


3350}3359}

3351```3360```

3352 3361 

3353PostCompact hooks 没有决策控制。它们无法影响压缩结果,但可以执行后续任务。3362PostCompact hook 没有决策控制。它们无法影响压缩结果,但可以执行后续任务。

3354 3363 

3355<h3 id="premodelswitch">3364<h3 id="premodelswitch">

3356 PreModelSwitch3365 PreModelSwitch

3357</h3>3366</h3>

3358 3367 

3359在 Claude Code 应用您或客户端请求的模型切换之前运行。使用它来阻止切换、要求确认或在切换发生前显示成本。3368在 Claude Code 应用您或客户端请求的模型切换之前运行。可用于阻止切换、要求确认,或在切换发生前显示切换的成本。

3360 3369 

3361PreModelSwitch 需要 Claude Code v2.1.251 或更高版本。Claude Code 为这些请求运行它:3370PreModelSwitch 需要 Claude Code v2.1.251 或更高版本。Claude Code 会针对以下请求运行它:

3362 3371 

3363* `/model <name>` 和 `/model` 选择器3372* `/model <name>` 和 `/model` 选择器

3364* `Option+P` 或 `Alt+P` 模型选择器3373* `Option+P` 或 `Alt+P` 模型选择器

3365* `/config` 中的 Model 设置3374* `/config` 中的 Model 设置

3366* 当那改变会话的模型时打开 [fast mode](/docs/zh-CN/fast-mode)3375* 启用[快速模式](/docs/zh-CN/fast-mode)且这会改变会话的模型时

3367* 来自 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 主机或 [Remote Control](/docs/zh-CN/remote-control) 的 `set_model` 请求,或 `apply_flag_settings` 请求中的模型更改3376* 来自 [Agent SDK](/docs/zh-CN/agent-sdk/typescript#query-object) 宿主或 [Remote Control](/docs/zh-CN/remote-control) 的 `set_model` 请求,或 `apply_flag_settings` 请求中的模型更改

3368 3377 

3369Claude Code 不为它自己进行的切换运行 PreModelSwitch hooks,如 [自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback) 或恢复会话时恢复模型。这些更改仅到达 [PostModelSwitch](#postmodelswitch)。3378对于 Claude Code 自行进行的切换,例如[自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback)或在您恢复会话时恢复模型,Claude Code 不会运行 PreModelSwitch hook。这些更改只会触发 [PostModelSwitch](#postmodelswitch)。

3370 3379 

3371Claude Code 根据会话切换到的模型的规范名称比较匹配器,忽略任何 `[1m]` 后缀。别名如 `opus`、日期模型 ID 和提供商特定 ID(如 Amazon Bedrock 模型 ID)都匹配它们解析到的一个规范名称,因此 `claude-opus-5` 涵盖 Opus 5 的每个拼写。3380Claude Code 会将匹配器与会话要切换到的模型的规范名称进行比较,忽略任何 `[1m]` 后缀。别名(如 `opus`)、带日期的模型 ID 以及特定于提供商的 ID(如 Amazon Bedrock 模型 ID)都会匹配它们所解析到的同一个规范名称,因此 `claude-opus-5` 涵盖 Opus 5 的所有写法。

3372 3381 

3373当 Claude Code 无法确定目标的规范名称时,例如仅您的 [LLM gateway](/docs/zh-CN/llm-gateway) 知道的自定义模型 ID,它运行每个 PreModelSwitch hook,无论匹配器如何。阻止的 hook 应该从其输入检查 `to_model` 而不是仅依赖匹配器。3382当 Claude Code 无法确定目标的规范名称时,例如只有您的 [LLM 网关](/docs/zh-CN/llm-gateway)才知道的自定义模型 ID,它会运行所有 PreModelSwitch hook,无论匹配器如何。因此,执行阻止的 hook 应检查其输入中的 `to_model`,而不是仅依赖匹配器。

3374 3383 

3375将匹配器写为精确名称、`|` 分隔列表如 `claude-opus-4-6|claude-opus-5` 或正则表达式如 `.*opus.*`。此示例使用精确名称匹配器并也从 hook 输入检查 `to_model`,因此它拒绝切换到 Opus 4.6,通过退出代码 2,并让任何其他目标通过:3384匹配器可以写为确切名称、以 `|` 分隔的列表(如 `claude-opus-4-6|claude-opus-5`),或正则表达式(如 `.*opus.*`)。以下示例使用确切名称匹配器,同时检查 hook 输入中的 `to_model`,因此它会通过以代码 2 退出来拒绝切换到 Opus 4.6,并允许切换到任何其他目标:

3376 3385 

3377<Tabs>3386<Tabs>

3378 <Tab title="macOS/Linux">3387 <Tab title="macOS/Linux">

3379 命令使用 `jq` 检查 `to_model`:3388 该命令使用 `jq` 检查 `to_model`:

3380 3389 

3381 ```json theme={null}3390 ```json theme={null}

3382 {3391 {


3398 </Tab>3407 </Tab>

3399 3408 

3400 <Tab title="Windows (PowerShell)">3409 <Tab title="Windows (PowerShell)">

3401 注册一个命令 hook,通过 PowerShell 运行脚本:3410 注册一个通过 PowerShell 运行脚本的命令 hook:

3402 3411 

3403 ```json theme={null}3412 ```json theme={null}

3404 {3413 {


3425 }3434 }

3426 ```3435 ```

3427 3436 

3428 将此脚本保存到项目中的 `.claude/hooks/block-opus-46.ps1`:3437 将以下脚本保存到项目中的 `.claude/hooks/block-opus-46.ps1`:

3429 3438 

3430 ```powershell theme={null}3439 ```powershell theme={null}

3431 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3440 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3438 </Tab>3447 </Tab>

3439</Tabs>3448</Tabs>

3440 3449 

3441要确认 hook 有效,从运行不同模型的会话运行 `/model claude-opus-4-6`。Claude Code 保持当前模型并报告 PreModelSwitch hook 阻止了切换,以您的消息作为原因。3450要确认 hook 是否生效,请在运行其他模型的会话中运行 `/model claude-opus-4-6`。Claude Code 会保留当前模型,并报告 PreModelSwitch hook 阻止了切换,同时将您的消息作为原因。

3442 3451 

3443<h4 id="premodelswitch-input">3452<h4 id="premodelswitch-input">

3444 PreModelSwitch 输入3453 PreModelSwitch 输入

3445</h4>3454</h4>

3446 3455 

3447除了 [常见输入字段](#common-input-fields) 外,PreModelSwitch hooks 接收此表中的字段。最后五个描述重新发送对话到新模型的成本,因此 hook 可以在切换发生前显示该数字。3456除[通用输入字段](#common-input-fields)外,PreModelSwitch hook 还会接收下表中的字段。最后五个字段描述将对话重新发送给新模型的成本,以便 hook 在切换发生之前显示该数值。

3448 3457 

3449| 字段 | 类型 | 描述 |3458| 字段 | 类型 | 描述 |

3450| :- | :- | :- |3459| :- | :- | :- |

3451| `from_model` | string | 切换改变的模型 ID |3460| `from_model` | string | 切换前的模型 ID |

3452| `to_model` | string | 切换改变到的模型 ID。匹配器根据此模型的规范名称比较 |3461| `to_model` | string | 切换后的模型 ID。匹配器与该模型的规范名称进行比较 |

3453| `requested_model` | string or `null` | 请求命名的模型:别名如 `opus`、完整模型 ID 或当请求是默认模型时为 `null` |3462| `requested_model` | string 或 `null` | 请求中指定的模型:别名(如 `opus`)、完整模型 ID,或在请求默认模型时为 `null` |

3454| `source` | string | 请求来自何处:`/model <name>`、`/config` 中的 Model 设置或打开 fast mode 的 `"command"`;模型选择器的 `"picker"`;来自 Agent SDK 主机或 Remote Control 的 `set_model` 请求或 `apply_flag_settings` 请求中的模型更改的 `"sdk"` |3463| `source` | string | 请求的来源:`"command"` 表示 `/model <name>`、`/config` 中的 Model 设置或启用快速模式;`"picker"` 表示模型选择器;`"sdk"` 表示来自 Agent SDK 宿主或 Remote Control 的 `set_model` 请求,或 `apply_flag_settings` 请求中的模型更改 |

3455| `context_tokens` | number | 下一个请求重新发送作为其提示的令牌:主对话中最后响应的输入、缓存读取、缓存创建和输出令牌,合并。第一个响应前为 `0` |3464| `context_tokens` | number | 下一个请求作为提示词重新发送的 token 数:主对话中最后一个响应的输入、缓存读取、缓存创建和输出 token 之和。在第一个响应之前为 `0` |

3456| `prompt_cache_warm` | boolean | 当前模型的 prompt cache 是否可能仍然温暖,意味着切换放弃它 |3465| `prompt_cache_warm` | boolean | 当前模型的提示缓存是否可能仍处于预热状态,即切换会使其失效 |

3457| `cache_ttl` | string | [Prompt cache 生命周期](/docs/zh-CN/prompt-caching#cache-lifetime) Claude Code 为此会话请求:`"5m"` 或 `"1h"` |3466| `cache_ttl` | string | Claude Code 为此会话请求的[提示缓存生命周期](/docs/zh-CN/prompt-caching#cache-lifetime):`"5m"` 或 `"1h"` |

3458| `estimated_cache_write_usd` | number | 在 `to_model` 上以 `cache_ttl` 速率将 `context_tokens` 写入 prompt cache 的估计成本(美元),不包括下一个响应。服务器可能不需要重新缓存整个上下文,因此将其视为估计 |3467| `estimated_cache_write_usd` | number | 以 `cache_ttl` 费率在 `to_model` 上将 `context_tokens` 写入提示缓存的估计成本(美元),不包括下一个响应。服务器可能无需重新缓存整个上下文,因此请将其视为估计值 |

3459| `pricing` | string | Claude Code 如何定价 `estimated_cache_write_usd`:当您的组织配置了自己的速率时为 `"configured"`,列表价格为 `"catalog"`,或当 `to_model` 没有已知价格且 Claude Code 假设默认速率时为 `"default"` |3468| `pricing` | string | Claude Code 为 `estimated_cache_write_usd` 定价的方式:`"configured"` 表示按您的组织已配置的自有费率,`"catalog"` 表示按标价,`"default"` 表示 `to_model` 没有已知价格,Claude Code 采用了默认费率 |

3460 3469 

3461此示例显示了在运行 Sonnet 5 的会话中 `/model opus` 的输入:3470以下示例展示在运行 Sonnet 5 的会话中执行 `/model opus` 时的输入:

3462 3471 

3463```json theme={null}3472```json theme={null}

3464{3473{


3482 PreModelSwitch 决策控制3491 PreModelSwitch 决策控制

3483</h4>3492</h4>

3484 3493 

3485`PreModelSwitch` hooks 可以取消切换、要求用户确认或让它继续。退出代码 2 或顶级 `decision: "block"` 取消切换。3494`PreModelSwitch` hook 可以取消切换、请用户确认切换,或允许切换继续。退出码 2 或顶层的 `decision: "block"` 会取消切换。

3486 3495 

3487为了更精细的控制,在 `hookSpecificOutput` 对象中返回 `permissionDecision` 和 `permissionDecisionReason`,如 [PreToolUse](#pretooluse-decision-control)。`PreModelSwitch` 接受 `"allow"`、`"deny"` 和 `"ask"`。它不接受 `"defer"`、`updatedInput` 或 `additionalContext`。下表描述两个字段:3496如需更精细的控制,请在 `hookSpecificOutput` 对象中返回 `permissionDecision` 和 `permissionDecisionReason`,与 [PreToolUse](#pretooluse-decision-control) 相同。`PreModelSwitch` 接受 `"allow"`、`"deny"` 和 `"ask"`。它不接受 `"defer"`、`updatedInput` 或 `additionalContext`。下表描述这两个字段:

3488 3497 

3489| 字段 | 描述 |3498| 字段 | 描述 |

3490| :- | :- |3499| :- | :- |

3491| `permissionDecision` | `"allow"` 继续并跳过 [Claude Code 在 prompt cache 温暖时显示的确认](/docs/zh-CN/prompt-caching#switching-models)。`"deny"` 取消切换。`"ask"` 提示用户确认它 |3500| `permissionDecision` | `"allow"` 继续切换,并跳过[提示缓存处于预热状态时 Claude Code 显示的确认](/docs/zh-CN/prompt-caching#switching-models)。`"deny"` 取消切换。`"ask"` 提示用户进行确认 |

3492| `permissionDecisionReason` | 对于 `"deny"`,显示给用户作为切换被阻止的原因,或作为 `set_model` 请求的错误返回。对于 `"ask"`,显示在确认提示中。对于 `"allow"` 被忽略 |3501| `permissionDecisionReason` | 对于 `"deny"`,作为切换被阻止的原因显示给用户,或作为 `set_model` 请求的错误返回。对于 `"ask"`,显示在确认提示中。对于 `"allow"` 则被忽略 |

3493 3502 

3494仅交互式会话中的 `/model` 可以显示 `"ask"` 提示。在每个其他表面,包括带有 `-p` 标志的非交互模式、`/config` 和 `set_model` 请求,Claude Code 将 `"ask"` 视为拒绝。3503只有交互式会话中的 `/model` 才能显示 `"ask"` 提示。在其他所有使用入口上,包括使用 `-p` 标志的非交互模式、`/config` 和 `set_model` 请求,Claude Code 都会将 `"ask"` 视为拒绝。

3495 3504 

3496此示例要求用户确认并引用来自 `context_tokens` 的令牌计数:3505以下示例请用户确认,并引用 `context_tokens` 中的 token 数:

3497 3506 

3498```json theme={null}3507```json theme={null}

3499{3508{


3505}3514}

3506```3515```

3507 3516 

3508当多个 PreModelSwitch hooks 返回不同的决策时,优先级为 `deny` > `ask` > `allow`。3517当多个 PreModelSwitch hook 返回不同的决策时,优先级为 `deny` > `ask` > `allow`。

3509 3518 

3510Claude Code 显示用户您的 hook 返回的任何 `systemMessage`,无论决策如何,因此成本报告 hook 可以返回 `{"systemMessage": "..."}` 并退出 0。3519无论决策如何,Claude Code 都会向用户显示 hook 返回的任何 `systemMessage`,因此成本报告 hook 可以返回 `{"systemMessage": "..."}` 并以 0 退出。

3511 3520 

3512在其超时前不响应的 PreModelSwitch hook 阻止切换。在 [PreToolUse](#timeouts) 上,相比之下,超时的命令 hook 让工具调用继续。此事件的默认超时为 30 秒。`PreModelSwitch` 仅运行 `command`、`http` 和 `mcp_tool` hooks,因此 `prompt` 和 `agent` 默认不适用。3521在超时前未响应的 PreModelSwitch hook 会阻止切换。相比之下,在 [PreToolUse](#timeouts) 上,超时的命令 hook 会让工具调用继续。此事件的默认超时时间为 30 秒。`PreModelSwitch` 仅运行 `command`、`http` 和 `mcp_tool` hook,因此 `prompt` 和 `agent` 的默认值不适用。

3513 3522 

3514退出代码不是 0 或 2 且打印无 JSON 决策的 hook 不阻止:Claude Code 显示其 stderr 并应用切换,如 [其他退出代码](#other-exit-codes) 下所述。3523以 0 或 2 以外的代码退出且未打印 JSON 决策的 hook 不会阻止切换:Claude Code 会显示其 stderr 并应用切换,如[其他退出码](#other-exit-codes)中所述。

3515 3524 

3516<h3 id="postmodelswitch">3525<h3 id="postmodelswitch">

3517 PostModelSwitch3526 PostModelSwitch

3518</h3>3527</h3>

3519 3528 

3520在会话的模型更改后运行。使用它来给 Claude 模型特定的指导,而不编辑每个 CLAUDE.md,例如仅在某些模型上适用的组织范围指令。3529在会话的模型更改后运行。可用于向 Claude 提供特定于模型的指导,而无需编辑每个 CLAUDE.md,例如适用于某些模型的组织级指令。

3521 3530 

3522PostModelSwitch 需要 Claude Code v2.1.251 或更高版本。它无法阻止,因为模型已经更改。Claude Code 在这些更改后运行 PostModelSwitch hooks:3531PostModelSwitch 需要 Claude Code v2.1.251 或更高版本。它无法阻止,因为模型已经更改。Claude Code 会在以下任何更改后运行 PostModelSwitch hook:

3523 3532 

3524* 您或客户端请求的切换3533* 您或客户端请求的切换

3525* [自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback),改变会话的模型3534* [自动模型回退](/docs/zh-CN/model-config#automatic-model-fallback),它会更改会话的模型

3526* 设置如 [`opusplan`](/docs/zh-CN/model-config#opusplan-model-setting) 进入或离开 plan mode3535* [`opusplan`](/docs/zh-CN/model-config#opusplan-model-setting) 等设置在进入或退出计划模式时

3527* Claude Code 恢复会话时恢复模型3536* 您恢复会话时 Claude Code 恢复模型

3528 3537 

3529当 [回退模型链](/docs/zh-CN/model-config#fallback-model-chains) 中的模型服务回合时,Claude Code 不运行 PostModelSwitch hooks,因为该替换持续一个回合并保持会话的模型不变。3538当[备用模型链](/docs/zh-CN/model-config#fallback-model-chains)中的模型为某一轮次提供服务时,Claude Code 不会运行 PostModelSwitch hook,因为这种替换只持续一轮,会话的模型保持不变。

3530 3539 

3531匹配器遵循与 [PreModelSwitch](#premodelswitch) 相同的规则:Claude Code 根据会话切换到的模型的规范名称比较它。3540匹配器遵循与 [PreModelSwitch](#premodelswitch) 相同的规则:Claude Code 将其与会话所切换到的模型的规范名称进行比较。

3532 3541 

3533此示例在会话的模型更改为任何 Opus 模型时添加指导:3542以下示例在会话的模型更改为任何 Opus 模型时添加指导:

3534 3543 

3535```json theme={null}3544```json theme={null}

3536{3545{


3550}3559}

3551```3560```

3552 3561 

3553要确认 hook 有效,从运行不同模型的会话切换到 Opus 模型,例如从 Sonnet 会话运行 `/model opus`,然后要求 Claude 关于当前模型的指导。3562要确认 hook 是否生效,请在运行其他模型的会话中切换到 Opus 模型,例如在 Sonnet 会话中运行 `/model opus`,然后询问 Claude 它对当前模型有哪些指导。

3554 3563 

3555<h4 id="postmodelswitch-input">3564<h4 id="postmodelswitch-input">

3556 PostModelSwitch 输入3565 PostModelSwitch 输入

3557</h4>3566</h4>

3558 3567 

3559PostModelSwitch hooks 接收与 [PreModelSwitch](#premodelswitch-input) 相同的字段,`hook_event_name` 设置为 `"PostModelSwitch"` 和两个更多 `source` 值:`"auto"` 对于自动回退或 Claude Code 自己进行的其他更改,`"resume"` 对于恢复会话时恢复的模型。3568PostModelSwitch hook 接收与 [PreModelSwitch](#premodelswitch-input) 相同的字段,其中 `hook_event_name` 设置为 `"PostModelSwitch"`,并增加两个 `source` 值:`"auto"` 表示自动回退或 Claude Code 自行进行的其他更改,`"resume"` 表示您恢复会话时恢复的模型。

3560 3569 

3561当 `source` 为 `"auto"` 时,`requested_model` 为 `null`。当 `source` 为 `"resume"` 时,它是 Claude Code 恢复的保存模型设置。3570当 `source` 为 `"auto"` 时,`requested_model` 为 `null`。当 `source` 为 `"resume"` 时,它是 Claude Code 恢复的已保存模型设置。

3562 3571 

3563<h4 id="postmodelswitch-decision-control">3572<h4 id="postmodelswitch-decision-control">

3564 PostModelSwitch 决策控制3573 PostModelSwitch 决策控制

3565</h4>3574</h4>

3566 3575 

3567Claude Code 获取您的 hook 在退出 0 时的 [纯文本 stdout](#exit-code-0),或来自 JSON 输出的 `additionalContext`,并在切换后的下一个请求中将其传递给 Claude。除了所有 hooks 可用的 [JSON 输出字段](#json-output) 外,您可以返回:3576Claude Code 会在退出码为 0 时获取 hook 的[纯文本 stdout](#exit-code-0),或获取 JSON 输出中的 `additionalContext`,并在切换后随下一个请求将其传递给 Claude。除所有 hook 均可用的 [JSON 输出字段](#json-output)外,您还可以返回:

3568 3577 

3569| 字段 | 描述 |3578| 字段 | 描述 |

3570| :- | :- |3579| :- | :- |

3571| `additionalContext` | 与下一个请求一起添加到 Claude 上下文的字符串。有关如何传递文本以及放入其中的内容,请参阅 [为 Claude 添加上下文](#add-context-for-claude) |3580| `additionalContext` | 随下一个请求添加到 Claude 上下文中的字符串。请参阅[为 Claude 添加上下文](#add-context-for-claude) |

3572 3581 

3573如果 hook 在您发送下一个提示后五秒内未完成,Claude Code 发送该请求而不输出,并将其附加到以下请求。如果模型在下一个请求之前更改多次,Claude Code 仅传递最后一个切换目标模型的输出。3582如果在您发送下一个提示词后五秒内 hook 仍未完成,Claude Code 会在不含该输出的情况下发送该请求,并改为将输出附加到再下一个请求。如果模型在下一个请求之前更改了多次,Claude Code 只会传递最后一次切换的目标模型对应的输出。

3574 3583 

3575<h3 id="sessionend">3584<h3 id="sessionend">

3576 SessionEnd3585 SessionEnd

3577</h3>3586</h3>

3578 3587 

3579在 Claude Code 会话结束时运行。对于清理任务、记录会话统计或保存会话状态很有用。支持匹配器以按退出原因过滤。3588在 Claude Code 会话结束时运行。适用于清理任务、记录会话

3589统计信息或保存会话状态。支持使用匹配器按退出原因进行筛选。

3580 3590 

3581`reason` 字段在 hook 输入中指示会话为什么结束:3591hook 输入中的 `reason` 字段表示会话结束的原因:

3582 3592 

3583| 原因 | 描述 |3593| 原因 | 描述 |

3584| :- | :- |3594| :- | :- |

3585| `clear` | 会话使用 `/clear` 命令清除 |3595| `clear` | 使用 `/clear` 命令清除了会话 |

3586| `resume` | 会话通过交互式 `/resume` 切换 |3596| `resume` | 通过交互式 `/resume` 切换了会话 |

3587| `logout` | 用户登出 |3597| `logout` | 用户已注销 |

3588| `prompt_input_exit` | 用户在提示输入可见时退出 |3598| `prompt_input_exit` | 用户在输入框可见时退出 |

3589| `other` | 其他退出原因 |3599| `other` | 其他退出原因 |

3590| `bypass_permissions_disabled` | 在 v2.1.234 中删除;Claude Code 不发送它。从您的 `SessionEnd` 匹配器中删除它 |3600| `bypass_permissions_disabled` | 已在 v2.1.234 中移除;Claude Code 不再发送此值。请将其从您的 `SessionEnd` 匹配器中删除 |

3591 3601 

3592<h4 id="sessionend-input">3602<h4 id="sessionend-input">

3593 SessionEnd 输入3603 SessionEnd 输入

3594</h4>3604</h4>

3595 3605 

3596除了 [常见输入字段](#common-input-fields) 外,SessionEnd hooks 接收指示会话为什么结束的 `reason` 字段。有关所有值,请参阅上面的 [原因表](#sessionend)。3606除[通用输入字段](#common-input-fields)外,SessionEnd hook 还会接收表示会话结束原因的 `reason` 字段。有关所有取值,请参阅上方的[原因表](#sessionend)。

3597 3607 

3598```json theme={null}3608```json theme={null}

3599{3609{


3605}3615}

3606```3616```

3607 3617 

3608SessionEnd hooks 没有决策控制。它们无法阻止会话终止,但可以执行清理任务。Claude Code 丢弃它们的 [JSON 输出字段](#json-output),如 `systemMessage`。3618SessionEnd hook 没有决策控制。它们无法阻止会话终止,但可以执行清理任务。Claude Code 会丢弃它们的 [JSON 输出字段](#json-output),例如 `systemMessage`。

3609 3619 

3610SessionEnd hooks 的默认超时为 1.5 秒。它在您退出、运行 `/clear` 或使用交互式 `/resume` 切换会话时适用。您可以通过两种方式给 hook 更多时间:3620SessionEnd hook 的默认超时时间为 1.5 秒。它适用于您退出、运行 `/clear` 或通过交互式 `/resume` 切换会话时。您可以通过两种方式为 hook 提供更多时间:

3611 3621 

3612* **每个 hook `timeout`**:在该 hook 的配置中设置 `timeout`。总体预算自动上升以匹配您的设置文件中最高的每个 hook `timeout`,最多 60 秒。如果您以这种方式提高预算,没有自己的 `timeout` 的 hook 仍然保持默认。在插件提供的 hooks 上设置的超时不提高预算。3622* **单个 hook 的 `timeout`**:在该 hook 的配置中设置 `timeout`。总体时间预算会自动提高,以匹配您的设置文件中最大的单个 hook `timeout`,最长 60 秒。如果以这种方式提高预算,未设置自身 `timeout` 的 hook 仍保持默认值。在插件提供的 hook 上设置的超时时间不会提高预算。

3613* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**:设置此环境变量(毫秒)以显式覆盖预算。您设置的值也成为每个没有自己的 `timeout` 的 hook 的超时。3623* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**:以毫秒为单位设置此环境变量,以显式覆盖预算。您设置的值也会成为每个未设置自身 `timeout` 的 hook 的超时时间。

3614 3624 

3615此示例将预算设置为 5 秒:3625以下示例将预算设置为 5 秒:

3616 3626 

3617```bash theme={null}3627```bash theme={null}

3618CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3628CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3619```3629```

3620 3630 

3621在 v2.1.268 之前,`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` 仅提高总体预算,没有自己的 `timeout` 的 hook 仍然在 1.5 秒后被取消。3631在 v2.1.268 之前,`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` 只会提高总体预算,未设置自身 `timeout` 的 hook 仍会在 1.5 秒后被取消。

3622 3632 

3623<h3 id="elicitation">3633<h3 id="elicitation">

3624 Elicitation3634 Elicitation

3625</h3>3635</h3>

3626 3636 

3627在 MCP 服务器请求用户输入中任务时运行。默认情况下,Claude Code 显示交互式对话供用户响应。Hooks 可以拦截此请求并以编程方式响应,完全跳过对话。3637在 MCP 服务器于任务执行过程中请求用户输入时运行。默认情况下,Claude Code 会显示一个交互式对话框供用户响应。hook 可以拦截此请求并以编程方式响应,完全跳过对话框。

3628 3638 

3629匹配器字段根据 MCP 服务器名称匹配。3639matcher 字段与 MCP 服务器名称进行匹配。

3630 3640 

3631<h4 id="elicitation-input">3641<h4 id="elicitation-input">

3632 Elicitation 输入3642 Elicitation 输入

3633</h4>3643</h4>

3634 3644 

3635除了 [常见输入字段](#common-input-fields) 外,Elicitation hooks 接收 `mcp_server_name`、`message` 和可选的 `mode`、`url`、`elicitation_id` 和 `requested_schema` 字段。3645除[通用输入字段](#common-input-fields)外,Elicitation hook 还会接收 `mcp_server_name`、`message`,以及可选的 `mode`、`url`、`elicitation_id` 和 `requested_schema` 字段。

3636 3646 

3637对于表单模式引出,最常见的情况:3647对于表单模式的 elicitation(最常见的情况):

3638 3648 

3639```json theme={null}3649```json theme={null}

3640{3650{


3654}3664}

3655```3665```

3656 3666 

3657对于 URL 模式引出,用于基于浏览器的身份验证:3667对于 URL 模式的 elicitation(用于基于浏览器的身份验证):

3658 3668 

3659```json theme={null}3669```json theme={null}

3660{3670{


3673 Elicitation 输出3683 Elicitation 输出

3674</h4>3684</h4>

3675 3685 

3676要以编程方式响应而不显示对话,返回一个带有 `hookSpecificOutput` 的 JSON 对象:3686要在不显示对话框的情况下以编程方式响应,请返回带有 `hookSpecificOutput` 的 JSON 对象:

3677 3687 

3678```json theme={null}3688```json theme={null}

3679{3689{


3687}3697}

3688```3698```

3689 3699 

3690| 字段 | 值 | 描述 |3700| 字段 | 取值 | 描述 |

3691| :- | :- | :- |3701| :- | :- | :- |

3692| `action` | `accept`、`decline`、`cancel` | 是否接受、拒绝或取消请求 |3702| `action` | `accept`、`decline`、`cancel` | 接受、拒绝还是取消该请求 |

3693| `content` | object | 要提交的表单字段值。仅在 `action` 为 `accept` 时使用 |3703| `content` | object | 要提交的表单字段值。仅在 `action` 为 `accept` 时使用 |

3694 3704 

3695退出代码 2 拒绝引出。Claude Code 不在任何地方显示您的 stderr 消息。3705退出码 2 会拒绝该 elicitation。Claude Code 不会在任何地方显示您的 stderr 消息。

3696 3706 

3697Claude Code 作用于 Elicitation hook 的 JSON 输出中的 `hookSpecificOutput` 并丢弃 `systemMessage` 和 `continue`。3707Claude Code 会处理 Elicitation hook JSON 输出中的 `hookSpecificOutput`,并丢弃 `systemMessage` 和 `continue`。

3698 3708 

3699<h3 id="elicitationresult">3709<h3 id="elicitationresult">

3700 ElicitationResult3710 ElicitationResult

3701</h3>3711</h3>

3702 3712 

3703在用户响应 MCP 引出后运行。Hooks 可以观察、修改或阻止响应,然后将其发送回 MCP 服务器。3713在用户响应 MCP elicitation 后运行。hook 可以在响应发回 MCP 服务器之前观察、修改或阻止该响应。

3704 3714 

3705匹配器字段根据 MCP 服务器名称匹配。3715matcher 字段与 MCP 服务器名称进行匹配。

3706 3716 

3707<h4 id="elicitationresult-input">3717<h4 id="elicitationresult-input">

3708 ElicitationResult 输入3718 ElicitationResult 输入

3709</h4>3719</h4>

3710 3720 

3711除了 [常见输入字段](#common-input-fields) 外,ElicitationResult hooks 接收 `mcp_server_name`、`action` 和可选的 `mode`、`elicitation_id` 和 `content` 字段。3721除[通用输入字段](#common-input-fields)外,ElicitationResult hook 还会接收 `mcp_server_name`、`action`,以及可选的 `mode`、`elicitation_id` 和 `content` 字段。

3712 3722 

3713```json theme={null}3723```json theme={null}

3714{3724{


3728 ElicitationResult 输出3738 ElicitationResult 输出

3729</h4>3739</h4>

3730 3740 

3731要覆盖用户的响应,返回一个带有 `hookSpecificOutput` 的 JSON 对象:3741要覆盖用户的响应,请返回带有 `hookSpecificOutput` 的 JSON 对象:

3732 3742 

3733```json theme={null}3743```json theme={null}

3734{3744{


3740}3750}

3741```3751```

3742 3752 

3743| 字段 | 值 | 描述 |3753| 字段 | 取值 | 描述 |

3744| :- | :- | :- |3754| :- | :- | :- |

3745| `action` | `accept`、`decline`、`cancel` | 覆盖用户的操作 |3755| `action` | `accept`、`decline`、`cancel` | 覆盖用户的操作 |

3746| `content` | object | 覆盖表单字段值。仅在 `action` 为 `accept` 时有意义 |3756| `content` | object | 覆盖表单字段值。仅在 `action` 为 `accept` 时有意义 |

3747 3757 

3748退出代码 2 阻止响应,将有效操作更改为 `decline`。Claude Code 不在任何地方显示您的 stderr 消息。3758退出码 2 会阻止该响应,将实际生效的操作更改为 `decline`。Claude Code 不会在任何地方显示您的 stderr 消息。

3749 3759 

3750Claude Code 作用于 ElicitationResult hook 的 JSON 输出中的 `hookSpecificOutput` 并丢弃 `systemMessage` 和 `continue`。3760Claude Code 会处理 ElicitationResult hook JSON 输出中的 `hookSpecificOutput`,并丢弃 `systemMessage` 和 `continue`。

3751 3761 

3752<h2 id="prompt-based-hooks">3762<h2 id="prompt-based-hooks">

3753 基于提示的 hooks3763 基于提示的 hooks

hooks-guide.md +1 −1

Details

503| :- | :- |503| :- | :- |

504| `SessionStart` | 当会话开始或恢复时 |504| `SessionStart` | 当会话开始或恢复时 |

505| `Setup` | 当你使用 `--init-only` 启动 Claude Code,或在 `-p` 模式下使用 `--init` 或 `--maintenance` 时。用于 CI 或脚本中的一次性准备 |505| `Setup` | 当你使用 `--init-only` 启动 Claude Code,或在 `-p` 模式下使用 `--init` 或 `--maintenance` 时。用于 CI 或脚本中的一次性准备 |

506| `UserPromptSubmit` | 当你提交提示词时,在 Claude 处理之前 |506| `UserPromptSubmit` | 当提交提示词时,在 Claude 处理之前。对于 [Claude Code 自行发起的轮次](/docs/zh-CN/hooks#userpromptsubmit)也会触发 |

507| `UserPromptExpansion` | 当用户输入的命令扩展为提示词时,在到达 Claude 之前。可以阻止扩展 |507| `UserPromptExpansion` | 当用户输入的命令扩展为提示词时,在到达 Claude 之前。可以阻止扩展 |

508| `PreToolUse` | 在工具调用执行之前。可以阻止它 |508| `PreToolUse` | 在工具调用执行之前。可以阻止它 |

509| `PermissionRequest` | 当工具调用需要权限决策时 |509| `PermissionRequest` | 当工具调用需要权限决策时 |

keybindings.md +27 −1

Details

68| `EffortSlider` | 由 `/effort` 打开的工作量滑块 |68| `EffortSlider` | 由 `/effort` 打开的工作量滑块 |

69| `Select` | 通用选择/列表组件 |69| `Select` | 通用选择/列表组件 |

70| `Plugin` | Plugin 对话框(浏览、发现、管理) |70| `Plugin` | Plugin 对话框(浏览、发现、管理) |

71| `Pane` | 由 [mod](/docs/zh-CN/plugins/mods/interface#know-which-keys-your-mod-can-receive) 绘制的窗格获得键盘焦点 |

72| `PaneField` | mod 窗格中的输入字段或选择框获得键盘焦点 |

71| `Agents` | [Agent 视图](/docs/zh-CN/agent-view)(`claude agents`) |73| `Agents` | [Agent 视图](/docs/zh-CN/agent-view)(`claude agents`) |

72| `Scroll` | 对话滚动和全屏模式下的文本选择 |74| `Scroll` | 对话滚动和全屏模式下的文本选择 |

73 75 


596 598 

597这也适用于和弦绑定。取消绑定共享前缀的每个和弦会释放该前缀以用作单键绑定。任何活跃上下文中的和弦都会保留其前缀,因此您必须在定义该和弦的上下文中取消绑定每个和弦。599这也适用于和弦绑定。取消绑定共享前缀的每个和弦会释放该前缀以用作单键绑定。任何活跃上下文中的和弦都会保留其前缀,因此您必须在定义该和弦的上下文中取消绑定每个和弦。

598 600 

599Claude Code 在 `ctrl+x` 前缀上绑定这些默认和弦:`Chat` 中的 `ctrl+x ctrl+k`、`ctrl+x ctrl+e`、`ctrl+x enter`、`ctrl+x ctrl+a`、`ctrl+x ctrl+s` 和 `ctrl+x tab`,`Task` 中的 `ctrl+x ctrl+b`,以及 `DiffPanel` 中的 `ctrl+x b`。`ctrl+x enter` 和弦需要 v2.1.247 或更高版本,`ctrl+x b`、`ctrl+x ctrl+a` 和 `ctrl+x tab` 需要 v2.1.260 或更高版本,以及 `ctrl+x ctrl+s` 需要 v2.1.275 或更高版本。601Claude Code 在 `ctrl+x` 前缀上按上下文绑定以下默认和弦:

602 

603* `Chat`:`ctrl+x ctrl+k`、`ctrl+x ctrl+e`、`ctrl+x enter`、`ctrl+x ctrl+a`、`ctrl+x ctrl+s` 和 `ctrl+x tab`

604* `Task`:`ctrl+x ctrl+b`

605* `DiffPanel`:`ctrl+x b`

606* `Pane`:`ctrl+x left`、`ctrl+x right`、`ctrl+x up`、`ctrl+x down` 和 `ctrl+x x`

607* `PaneField`:`ctrl+x x`

608 

609`ctrl+x enter` 和弦需要 v2.1.247 或更高版本,`ctrl+x b`、`ctrl+x ctrl+a` 和 `ctrl+x tab` 需要 v2.1.260 或更高版本,以及 `ctrl+x ctrl+s` 需要 v2.1.275 或更高版本。

600 610 

601要将 `ctrl+x` 本身回收为单键绑定,请取消绑定所有这些:611要将 `ctrl+x` 本身回收为单键绑定,请取消绑定所有这些:

602 612 


615 "ctrl+x b": null625 "ctrl+x b": null

616 }626 }

617 },627 },

628 {

629 "context": "Pane",

630 "bindings": {

631 "ctrl+x left": null,

632 "ctrl+x right": null,

633 "ctrl+x up": null,

634 "ctrl+x down": null,

635 "ctrl+x x": null

636 }

637 },

638 {

639 "context": "PaneField",

640 "bindings": {

641 "ctrl+x x": null

642 }

643 },

618 {644 {

619 "context": "Chat",645 "context": "Chat",

620 "bindings": {646 "bindings": {

Details

245| [上下文管理](https://platform.claude.com/docs/en/build-with-claude/context-editing) | 上下文管理 beta 请求头与 `context_management` 请求体字段配对 | `400` 带有 `Extra inputs are not permitted`。常见于网关接受 Anthropic 格式请求但将其转发到 Amazon Bedrock 时 | 转发两者,或 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |245| [上下文管理](https://platform.claude.com/docs/en/build-with-claude/context-editing) | 上下文管理 beta 请求头与 `context_management` 请求体字段配对 | `400` 带有 `Extra inputs are not permitted`。常见于网关接受 Anthropic 格式请求但将其转发到 Amazon Bedrock 时 | 转发两者,或 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

246| [扩展上下文](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model)和[交错思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | 仅 Beta 请求头,无请求体字段 | 当请求头被删除时无声地不可用;上游永远不会看到功能请求 | 逐字转发 `anthropic-beta` |246| [扩展上下文](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model)和[交错思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | 仅 Beta 请求头,无请求体字段 | 当请求头被删除时无声地不可用;上游永远不会看到功能请求 | 逐字转发 `anthropic-beta` |

247| Beta [工具字段](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | 工具相关的 beta 请求头与工具架构字段(如 `strict` 和 `defer_loading`)配对 | 当请求体通过而没有其请求头时,命名无法识别的工具架构字段的 `400` | 转发两者,或 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |247| Beta [工具字段](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | 工具相关的 beta 请求头与工具架构字段(如 `strict` 和 `defer_loading`)配对 | 当请求体通过而没有其请求头时,命名无法识别的工具架构字段的 `400` | 转发两者,或 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

248| [努力](https://platform.claude.com/docs/en/build-with-claude/effort)和[结构化输出](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | `output_config` 请求体字段携带努力、结构化输出格式和任务预算设置;每个都与自己的 beta 请求头配对 | 在 Amazon Bedrock 和 Google Cloud 的 Agent Platform 上游上命名 `output_config` 的 `400`,通常是 `Extra inputs are not permitted` | 一起转发该字段及其请求头,或让开发者设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities),这会移除格式和任务预算设置,但不会移除努力 |248| [努力](https://platform.claude.com/docs/en/build-with-claude/effort)和[结构化输出](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | `output_config` 请求体字段携带努力、结构化输出格式和任务预算设置;每个都与自己的 beta 请求头配对 | 在 Amazon Bedrock 和 Google Cloud 的 Agent Platform 上游上命名 `output_config` 的 `400`,通常是 `Extra inputs are not permitted` | 一起转发该字段及其请求头,或让开发者设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities),这会移除格式和任务预算设置,但不会移除努力。若只想移除格式,开发者可以改为设置 [`CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1`](/docs/zh-CN/env-vars),这需要 v2.1.288 或更高版本 |

249| [提示缓存](/docs/zh-CN/prompt-caching) | 无 beta 配对。Claude Code 将 `cache_control` 标记附加到 `system` 块和 `messages` 条目,包括在对话中途附加的 `role: "system"` 条目 | 无错误:对话在每个回合都作为未缓存的输入计费,在 `usage` 中可见为高 `input_tokens` 且缓存活动很少或没有 | 在任何地方原封不动地转发 `cache_control`,并且不要将块形式的 `system` 或消息内容转换为纯字符串 |249| [提示缓存](/docs/zh-CN/prompt-caching) | 无 beta 配对。Claude Code 将 `cache_control` 标记附加到 `system` 块和 `messages` 条目,包括在对话中途附加的 `role: "system"` 条目 | 无错误:对话在每个回合都作为未缓存的输入计费,在 `usage` 中可见为高 `input_tokens` 且缓存活动很少或没有 | 在任何地方原封不动地转发 `cache_control`,并且不要将块形式的 `system` 或消息内容转换为纯字符串 |

250| [令牌计数](https://platform.claude.com/docs/en/build-with-claude/token-counting) | 无 beta 配对;使用 `count_tokens` 端点 | 无错误:Claude Code 回退到基于字符的估计,因此 `/context` 显示近似计数 | 公开该端点以获得精确的令牌计数 |250| [令牌计数](https://platform.claude.com/docs/en/build-with-claude/token-counting) | 无 beta 配对;使用 `count_tokens` 端点 | 无错误:Claude Code 回退到基于字符的估计,因此 `/context` 显示近似计数 | 公开该端点以获得精确的令牌计数 |

251 251 


362当发现的 ID 与选择器中已有的行匹配时,它不会获得自己的行:362当发现的 ID 与选择器中已有的行匹配时,它不会获得自己的行:

363 363 

364* 相同 ID:发现的 ID 完全匹配现有行的 ID,或两个 ID 是同一 [Fable](/docs/zh-CN/model-config#work-with-fable) 版本的拼写。364* 相同 ID:发现的 ID 完全匹配现有行的 ID,或两个 ID 是同一 [Fable](/docs/zh-CN/model-config#work-with-fable) 版本的拼写。

365* 与内置别名相同的模型:当发现的显式 ID 命名内置别名当前解析到的模型时,选择器仅显示别名行。例如,当 `sonnet` 解析为 `claude-sonnet-5-5` 时,发现的 `claude-sonnet-5-5` 会折叠到 `sonnet` 行中,而发现的 `claude-sonnet-5` 仍会获得自己的行。在 v2.1.197 之前,Claude Code 不会将这些 ID 折叠到内置行中,因此别名解析到的 ID 也会获得自己的"From gateway"行。365* 与内置别名相同的模型:当发现的显式 ID 命名内置别名当前解析到的模型时,选择器仅显示别名行。例如,当 `sonnet` 解析为 `claude-sonnet-5-5` 时,发现的 `claude-sonnet-5-5` 会折叠到 `sonnet` 行中,而发现的 `claude-sonnet-5` 仍会获得自己的行。

366 366 

367结果被缓存到 `~/.claude/cache/gateway-models.json`,或在 Windows 上 `%USERPROFILE%\.claude\cache\gateway-models.json`,并在每次启动时刷新。如果您设置了 [`CLAUDE_CONFIG_DIR`](/docs/zh-CN/env-vars),缓存会改为位于该目录下。如果请求失败或 gateway 未实现 `/v1/models`,选择器会回退到上次启动的缓存列表或内置模型列表。如果您的 gateway 在不匹配发现过滤器的别名下提供 Claude 模型,开发者可以使用[模型配置](/docs/zh-CN/model-config)变量手动添加这些别名。367结果被缓存到 `~/.claude/cache/gateway-models.json`,或在 Windows 上 `%USERPROFILE%\.claude\cache\gateway-models.json`,并在每次启动时刷新。如果您设置了 [`CLAUDE_CONFIG_DIR`](/docs/zh-CN/env-vars),缓存会改为位于该目录下。如果请求失败或 gateway 未实现 `/v1/models`,选择器会回退到上次启动的缓存列表或内置模型列表。如果您的 gateway 在不匹配发现过滤器的别名下提供 Claude 模型,开发者可以使用[模型配置](/docs/zh-CN/model-config)变量手动添加这些别名。

368 368 

mcp.md +9 −9

Details

371 371 

372在 v2 上,Claude Code 还会:372在 v2 上,Claude Code 还会:

373 373 

374* 询问 HTTP 服务器是否支持较新的修订版,并与支持的服务器一起使用它。它也在获取功能标志的会话中询问 claude.ai 连接器服务器。要让它询问 stdio 服务器或每个会话中的连接器服务器,请设置 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-CN/env-vars) 为 `auto`。它与 v1 一样连接到其他所有服务器。374* 询问 HTTP 服务器是否支持较新的修订版,并与支持的服务器一起使用它。在获取功能标志的会话中,它还会询问 claude.ai 连接器服务器;在 Claude Code v2.1.285 或更高版本上,随着 Anthropic 逐步推出该更改,它还会询问 stdio 服务器。要让它在每个会话中都询问连接器服务器和 stdio 服务器,请设置 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-CN/env-vars) 为 `auto`。它与 v1 一样连接到其他所有服务器。

375* 通过 [它保持打开的流](#notification-streams-on-the-v2-runtime) 从使用较新修订版的服务器接收 `list_changed` 通知。375* 通过 [它保持打开的流](#notification-streams-on-the-v2-runtime) 从使用较新修订版的服务器接收 `list_changed` 通知。

376* 不注册在较新修订版上连接的 [频道](#push-messages-with-channels) 服务器,因为该修订版无法携带频道消息。376* 不注册在较新修订版上连接的 [频道](#push-messages-with-channels) 服务器,因为该修订版无法携带频道消息。

377* 当授权响应指明意外的发行者时,使 [MCP OAuth 登录](#authenticate-with-remote-mcp-servers) 失败。377* 当授权响应指明意外的发行者时,使 [MCP OAuth 登录](#authenticate-with-remote-mcp-servers) 失败。


456 456 

457MCP 服务器也可以直接将消息推送到您的会话中,以便 Claude 可以对外部事件(如 CI 结果、监控警报或聊天消息)做出反应。要启用此功能,您的服务器声明 `claude/channel` 能力,您在启动时使用 `--channels` 标志选择加入。请参阅 [频道](/docs/zh-CN/channels) 以使用官方支持的频道,或 [频道参考](/docs/zh-CN/channels-reference) 以构建您自己的。457MCP 服务器也可以直接将消息推送到您的会话中,以便 Claude 可以对外部事件(如 CI 结果、监控警报或聊天消息)做出反应。要启用此功能,您的服务器声明 `claude/channel` 能力,您在启动时使用 `--channels` 标志选择加入。请参阅 [频道](/docs/zh-CN/channels) 以使用官方支持的频道,或 [频道参考](/docs/zh-CN/channels-reference) 以构建您自己的。

458 458 

459在 [v2 运行时](#mcp-client-runtimes) 上,如果您设置 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-CN/env-vars) 为 `auto` 并且频道服务器协商 MCP 协议修订版 2026-07-28,它无法传递频道消息,因此 Claude Code 不将其注册为频道。保留变量未设置,或将其设置为 `legacy`,将 stdio 服务器保持在较早的握手上。459在 [v2 运行时](#mcp-client-runtimes) 上,协商 MCP 协议修订版 2026-07-28 的频道服务器无法传递频道消息,因此 Claude Code 不将其注册为频道。不支持该修订版的频道服务器会在较早的握手上连接,并像以前一样注册。

460 

461当您设置 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-CN/env-vars) 为 `auto` 时,Claude Code 会向 stdio 服务器询问该修订版。对于 Claude Code v2.1.285 或更高版本,Anthropic 还在 Claude Code [获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching) 的会话中默认启用此行为。要将 stdio 频道服务器保持在较早的握手上,请将 `MCP_PROTOCOL_NEGOTIATION` 设置为 `legacy`,这会将所有服务器都保持在较早的握手上。

460 462 

461<Tip>463<Tip>

462 提示:464 提示:


1481 要求对特定工具进行批准1483 要求对特定工具进行批准

1482</h2>1484</h2>

1483 1485 

1484如果你正在构建 MCP 服务器,可以通过在工具的 `tools/list` 响应条目中将 `_meta["anthropic/requiresUserInteraction"]` 设置为 `true` 来标记工具需要在每次调用时获得明确批准。该值必须是 JSON 布尔值 `true`;任何其他值都会被忽略。1486如果您正在构建 MCP 服务器,可以通过在工具的 `tools/list` 响应条目中将 `_meta["anthropic/requiresUserInteraction"]` 设置为 `true` 来标记工具需要在每次调用时获得明确批准。该值必须是 JSON 布尔值 `true`;任何其他值都会被忽略。

1485 1487 

1486Claude Code 会在每次调用时显示该工具的权限提示,即使在 `acceptEdits`、`auto` 和 `bypassPermissions` [权限模式](/docs/zh-CN/permissions#permission-modes)中也是如此,并且不会为其提供"不再询问"选项。与该工具匹配的 [允许规则](/docs/zh-CN/permissions#permission-rule-syntax)也不会跳过提示。在 `dontAsk` 模式中(从不提示),Claude Code 会拒绝该调用。1488Claude Code 会在每次调用时显示该工具的权限提示,即使在 `acceptEdits`、`auto` 和 `bypassPermissions` [权限模式](/docs/zh-CN/permissions#permission-modes)中也是如此,并且不会为其提供"不再询问"选项。与该工具匹配的 [允许规则](/docs/zh-CN/permissions#permission-rule-syntax)也不会跳过提示。在 `dontAsk` 模式中(从不提示),Claude Code 会拒绝该调用。

1487 1489 

1488提示必须到达一个人。在非交互模式下使用 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags),来自提示工具的标记工具的 `allow` 结果会被转换为拒绝,消息为 `MCP tool requires user interaction; not supported via --permission-prompt-tool`。Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/permissions)确实会接收这些调用并可以批准它们,因为你的 SDK 应用程序应该将它们显示给用户。1490提示必须到达一个人。在非交互模式下使用 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags),来自提示工具的标记工具的 `allow` 结果会被转换为拒绝,消息为 `MCP tool requires user interaction; not supported via --permission-prompt-tool`。Agent SDK 的 [`canUseTool` 回调](/docs/zh-CN/agent-sdk/permissions)确实会接收这些调用并可以批准它们,因为您的 SDK 应用程序应该将它们显示给用户。

1489 1491 

1490将此用于权限提示本身就是目的的工具,例如同意或访问授予步骤,其中自动批准意味着没有人类曾经同意。来自同一服务器的其他工具保持其正常的权限行为。1492将此用于权限提示本身就是目的的工具,例如同意或访问授予步骤,其中自动批准意味着没有人类曾经同意。来自同一服务器的其他工具保持其正常的权限行为。

1491 1493 


1501}1503}

1502```1504```

1503 1505 

1504`anthropic/requiresUserInteraction` 注解需要 Claude Code v2.1.199 或更高版本。早期版本会忽略它并应用标准权限流程。1506某些使用入口,例如 [Remote Control](/docs/zh-CN/remote-control) 和基于 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 构建的应用程序,通常允许您通过一次点击来批准工具调用。对于使用此注解标记的工具,Claude Code 会禁用一次点击操作并显示工具的完整权限提示,因此批准仍然来自回答提示的人,而不是点击。

1505 

1506某些界面,例如 [Remote Control](/docs/zh-CN/remote-control) 和基于 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 构建的应用程序,通常允许你通过一次点击来批准工具调用。对于使用此注解标记的工具,Claude Code 会禁用一次点击操作并显示工具的完整权限提示,因此批准仍然来自回答提示的人,而不是点击。

1507 1507 

1508Claude Code 对任何只有终端对话框才能完整呈现的权限请求(例如带有安全警告或远程界面无法显示的始终允许选项的请求)也会以相同方式禁用一次点击批准。你在终端对话框中回答该请求,而不是从 Remote Control 中回答。需要 Claude Code v2.1.214 或更高版本。1508Claude Code 对任何只有终端对话框才能完整呈现的权限请求(例如带有安全警告或远程使用入口无法显示的始终允许选项的请求)也会以相同方式禁用一次点击批准。您需要在终端对话框中回答该请求,而不是从 Remote Control 中回答。需要 Claude Code v2.1.214 或更高版本。

1509 1509 

1510<h2 id="respond-to-mcp-elicitation-requests">1510<h2 id="respond-to-mcp-elicitation-requests">

1511 响应 MCP 引出请求1511 响应 MCP 引出请求


1516服务器可以通过两种方式请求输入:1516服务器可以通过两种方式请求输入:

1517 1517 

1518* **表单模式**:Claude Code 显示一个对话框,其中包含由服务器定义的表单字段(例如,用户名和密码提示)。填写字段并提交。1518* **表单模式**:Claude Code 显示一个对话框,其中包含由服务器定义的表单字段(例如,用户名和密码提示)。填写字段并提交。

1519* **URL 模式**:Claude Code 询问是否在浏览器中打开链接,当你接受时打开该链接。服务器使用此模式处理在终端外完成的流程,例如登录。1519* **URL 模式**:Claude Code 询问是否在浏览器中打开链接。服务器使用此模式处理在终端外完成的流程,例如登录。

1520 1520 

1521在 URL 模式中,Claude Code 将 URL 作为命令行参数传递给系统的 URL 处理程序,并限制该参数的长度。当 URL 在为命令行转义后超过该限制时,你只能拒绝该请求。每个需要转义的字符,例如 `%` 或 `&`,都会计为上限的四倍:其自身字符加上三个转义字符。没有这些字符的 URL 在大约 8,000 个字符处达到上限。主要由百分比转义组成的 URL,其中每三个字符中有一个是 `%`,在大约 4,000 处达到上限。1521在 URL 模式中,Claude Code 将 URL 作为命令行参数传递给系统的 URL 处理程序,并限制该参数的长度。当 URL 在为命令行转义后超过该限制时,你只能拒绝该请求。每个需要转义的字符,例如 `%` 或 `&`,都会计为上限的四倍:其自身字符加上三个转义字符。没有这些字符的 URL 在大约 8,000 个字符处达到上限。主要由百分比转义组成的 URL,其中每三个字符中有一个是 `%`,在大约 4,000 处达到上限。

1522 1522 

model-config.md +4 −3

Details

794 794 

795<span id="context-window-behind-a-gateway" />795<span id="context-window-behind-a-gateway" />

796 796 

797如果您将 `ANTHROPIC_BASE_URL` 设置为 [LLM 网关](/docs/zh-CN/llm-gateway)或另一个代理,Claude Code 给每个它识别的模型与该模型在 Anthropic API 上具有的相同上下文窗口。Fable 5.1、Fable 5、Sonnet 5 及更高版本和 Opus 4.7 及更高版本获得 1M 窗口,没有 `[1m]` 变体可选择,仅通过其 `[1m]` 变体达到 1M 的模型(如 Opus 4.6)在没有它的情况下运行在 200K。Claude Code 无法检测网关或其后面的服务器强制的更低限制。如果您的网关拒绝超过 200K token 的请求,运行 [`/autocompact 200k`](#set-the-auto-compact-window) 以便会话在该边界处压缩。797如果您将 `ANTHROPIC_BASE_URL` 设置为 [LLM 网关](/docs/zh-CN/llm-gateway)或另一个代理,Claude Code 给每个它识别的模型与该模型在 Anthropic API 上具有的相同上下文窗口。Fable 5.1、Fable 5、Sonnet 5 及更高版本和 Opus 4.7 及更高版本获得 1M 窗口,没有 `[1m]` 变体可选择,仅通过其 `[1m]` 变体达到 1M 的模型(如 Opus 4.6)在没有它的情况下运行在 200K。Claude Code 无法检测网关或其后面的服务器强制的更低限制。如果您的网关拒绝超过 200K token 的请求,请在启动 Claude Code 的环境中设置 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](/docs/zh-CN/env-vars),以便所有模型上的会话都[在该边界处压缩](#set-the-auto-compact-window)。

798 798 

799要关闭 1M 上下文,设置 `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`。Claude Code 从模型选择器中删除 1M 模型变体。在具有原生 1M 窗口的模型上,例如 Sonnet 5 和 Fable 模型,它也将模型视为具有 200K 上下文窗口:799要关闭 1M 上下文,设置 `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`。Claude Code 从模型选择器中删除 1M 模型变体。在具有原生 1M 窗口的模型上,例如 Sonnet 5 和 Fable 模型,它也将模型视为具有 200K 上下文窗口:

800 800 


840 设置自动压缩窗口840 设置自动压缩窗口

841</h3>841</h3>

842 842 

843您可以在三个地方设置自动压缩窗口:843您可以在以下位置设置自动压缩窗口:

844 844 

845* **对于此会话及以后的会话**:运行 `/autocompact` 命令并指定一个值,例如 `/autocompact 500k`。Claude Code 将其保存到您的用户设置中作为 [`autoCompactWindow`](/docs/zh-CN/settings-reference#autocompactwindow),并将其应用于当前会话;如果更高优先级的[设置范围](/docs/zh-CN/settings#settings-precedence)(例如托管设置)设置了该键,该命令会保存您的值,但会话会保持该范围的窗口,命令会说明这一点。运行 `/autocompact auto` 以返回为您的模型调整的窗口。845* **对于当前模型,在此会话及以后的会话中**:运行 `/autocompact` 命令并指定一个值,例如 `/autocompact 500k`。Claude Code 将其保存到您的用户设置中 [`modelSettings`](/docs/zh-CN/settings-reference#modelsettings) 下的当前模型条目,并将其应用于当前会话。如果更高优先级的[设置作用域](/docs/zh-CN/settings#settings-precedence)(例如托管设置)为该模型或所有模型设置了自己的窗口,该命令会保存您的值,但会话会保持该作用域的窗口,命令会说明这一点。运行 `/autocompact auto` 以返回为您的模型调整的窗口。在 v2.1.288 之前,该命令会为所有模型保存同一个窗口,即顶层的 `autoCompactWindow`。

846* **对于所有模型**:在设置文件中设置 [`autoCompactWindow`](/docs/zh-CN/settings-reference#autocompactwindow),例如在 `~/.claude/settings.json` 中设置 `"autoCompactWindow": 200000`。对于某个模型,您使用 `/autocompact` 为该模型保存的窗口优先于同一文件中的此键。

846* **对于一次启动**:启动 Claude Code 时传递 [`--autocompact`](/docs/zh-CN/cli-reference#cli-flags)。该标志会为该次启动覆盖您保存的设置,而不会更改它,`claude --autocompact auto` 会以调整的窗口运行会话,即使您保存的设置有一个值。与 `/autocompact` 不同,该标志不会被更高优先级的设置范围(例如托管设置)抢占。847* **对于一次启动**:启动 Claude Code 时传递 [`--autocompact`](/docs/zh-CN/cli-reference#cli-flags)。该标志会为该次启动覆盖您保存的设置,而不会更改它,`claude --autocompact auto` 会以调整的窗口运行会话,即使您保存的设置有一个值。与 `/autocompact` 不同,该标志不会被更高优先级的设置范围(例如托管设置)抢占。

847* **在脚本和云环境中**:设置 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/zh-CN/env-vars)。设置后,它优先于命令、标志和设置,`/autocompact` 会报告该覆盖而不是更改窗口。848* **在脚本和云环境中**:设置 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/zh-CN/env-vars)。设置后,它优先于命令、标志和设置,`/autocompact` 会报告该覆盖而不是更改窗口。

848 849 

Details

785 用户提示事件785 用户提示事件

786</h4>786</h4>

787 787 

788当用户提交提示时记录。788在提交提示词时记录,包括 Claude Code 自行开始的轮次。

789 789 

790**事件名称**:`claude_code.user_prompt`790**事件名称**:`claude_code.user_prompt`

791 791 

Details

478 478 

479如果您告诉 Claude 某个被阻止的操作是允许的,分类器会将其视为您的批准,并可以解除阻止。您的措辞决定了该操作是否会运行,以及批准的覆盖范围:479如果您告诉 Claude 某个被阻止的操作是允许的,分类器会将其视为您的批准,并可以解除阻止。您的措辞决定了该操作是否会运行,以及批准的覆盖范围:

480 480 

481* **指明操作及其具体细节**:您的消息必须指明该操作以及使其具有危险性的具体内容,例如强制推送的分支。仅指明动词不会解除任何阻止,因此"你可以强制推送"不会解除阻止。481* **指明操作及其具体细节**:您的消息必须指明该操作以及使其具有危险性的具体内容,例如强制推送的分支。仅指明动词不会解除任何阻止,因此"您可以强制推送"不会解除阻止。

482* **预期它仅涵盖一个操作**:批准涵盖您所指明的破坏性操作,因此之后的操作会再次被阻止,除非您授予的是持续性批准。如果不想逐个操作地批准某种常规模式,请将其添加到 [`autoMode.allow`](/docs/zh-CN/auto-mode-config#override-the-block-and-allow-rules)。482* **预期它仅涵盖一个操作**:批准涵盖您所指明的破坏性操作,因此之后的操作会再次被阻止,除非您授予的是持续性批准。如果不想逐个操作地批准某种常规模式,请将其添加到 [`autoMode.allow`](/docs/zh-CN/auto-mode-config#override-the-block-and-allow-rules)。

483* **有些阻止会保持不变**:[分类器的优先级顺序](/docs/zh-CN/auto-mode-config#override-the-block-and-allow-rules)规定了您的批准可以解除哪些阻止。要运行它不会解除阻止的步骤,请[退出自动模式](#switch-permission-modes)并回应权限提示。483* **有些阻止会保持不变**:[分类器的优先级顺序](/docs/zh-CN/auto-mode-config#override-the-block-and-allow-rules)规定了您的批准可以解除哪些阻止。要运行它不会解除阻止的步骤,请[退出自动模式](#switch-permission-modes)并回应权限提示。

484 484 


578 578 

579如果您设置 `dontAsk` 模式,Claude Code 会自动拒绝所有原本会提示的工具调用。Claude 仍然运行在 Manual 模式下不需要批准的操作,例如您工作目录内的文件读取和[只读 Bash 命令](/docs/zh-CN/permissions#read-only-commands),以及与您的 `permissions.allow` 规则匹配的操作和由 [PreToolUse hook](/docs/zh-CN/permissions#extend-permissions-with-hooks) 批准的调用。在 CI 管道或受限环境中使用此模式,您可以预先定义 Claude 可以执行的操作;会话永远不会等待输入。当此模式处于活动状态时,状态栏显示 `⏵⏵ don't ask on`。579如果您设置 `dontAsk` 模式,Claude Code 会自动拒绝所有原本会提示的工具调用。Claude 仍然运行在 Manual 模式下不需要批准的操作,例如您工作目录内的文件读取和[只读 Bash 命令](/docs/zh-CN/permissions#read-only-commands),以及与您的 `permissions.allow` 规则匹配的操作和由 [PreToolUse hook](/docs/zh-CN/permissions#extend-permissions-with-hooks) 批准的调用。在 CI 管道或受限环境中使用此模式,您可以预先定义 Claude 可以执行的操作;会话永远不会等待输入。当此模式处于活动状态时,状态栏显示 `⏵⏵ don't ask on`。

580 580 

581Claude Code 拒绝与您的显式 [`ask` 规则](/docs/zh-CN/permissions#manage-permissions)匹配的调用,而不是提示。它还拒绝内置的 `AskUserQuestion` 工具,即使您的 allow 规则与其匹配,以及您的组织[设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具在该设置到达 Claude Code 的会话中。它以相同的方式拒绝标记为 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,因为其批准卡需要此模式永远不会收集的答案;这需要 Claude Code v2.1.199 或更高版本。581Claude Code 拒绝与您的显式 [`ask` 规则](/docs/zh-CN/permissions#manage-permissions)匹配的调用,而不是提示。它还拒绝内置的 `AskUserQuestion` 工具,即使您的 allow 规则与其匹配,以及您的组织[设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具在该设置到达 Claude Code 的会话中。它以相同的方式拒绝标记为 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具,因为其批准卡需要此模式永远不会收集的答案。

582 582 

583`rm` 和 `rmdir` 移除针对[关键路径](#critical-paths)的操作,如 `rm -rf /` 和 `rm -rf ~`,即使 allow 规则与其匹配或 `PreToolUse` hook 允许它们,也被拒绝。583`rm` 和 `rmdir` 移除针对[关键路径](#critical-paths)的操作,如 `rm -rf /` 和 `rm -rf ~`,即使 allow 规则与其匹配或 `PreToolUse` hook 允许它们,也被拒绝。

584 584 

Details

371| `workspaceFolder` | No | 服务器的工作区文件夹路径 |371| `workspaceFolder` | No | 服务器的工作区文件夹路径 |

372| `startupTimeout` | No | 等待启动的毫秒数,正整数 |372| `startupTimeout` | No | 等待启动的毫秒数,正整数 |

373| `shutdownTimeout` | No | 等待正常关闭的毫秒数,正整数。当超时时间过去时,Claude Code 终止服务器进程。未设置时,不适用超时 |373| `shutdownTimeout` | No | 等待正常关闭的毫秒数,正整数。当超时时间过去时,Claude Code 终止服务器进程。未设置时,不适用超时 |

374| `requestTimeout` | No | 等待服务器响应请求的毫秒数,正整数。默认为 `60000`,因此服务器始终未响应的请求会在 60 秒后失败。需要 v2.1.288 或更高版本 |

374| `restartOnCrash` | No | 服务器崩溃后是否重新启动。默认为 `true`。设置为 `false` 以使崩溃的服务器停止而不是重新启动 |375| `restartOnCrash` | No | 服务器崩溃后是否重新启动。默认为 `true`。设置为 `false` 以使崩溃的服务器停止而不是重新启动 |

375| `maxRestarts` | No | 放弃前的重新启动尝试,零或更多 |376| `maxRestarts` | No | 放弃前的重新启动尝试,零或更多 |

376| `diagnostics` | No | 编辑后是否将诊断推送到上下文。默认为 `true` |377| `diagnostics` | No | 编辑后是否将诊断推送到上下文。默认为 `true` |

Details

63 63 

64| 字段 | 类型 | 描述 |64| 字段 | 类型 | 描述 |

65| :- | :- | :- |65| :- | :- | :- |

66| `name` | string | Marketplace 标识符:字母、数字、`.`、`_` 和 `-`,以字母或数字开头,没有 `..`。它形成从 marketplace 安装的每个 [plugin id](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from) 的 `@` 后面的部分,因此 `claude plugin validate` 会拒绝其他名称。请参阅 [保留名称](#reserved-names) |66| `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| `owner` | object | 维护者信息。`name` 是必需的;`email` 和 `url` 是可选的 |67| `owner` | object | 维护者信息。`name` 是必需的;`email` 和 `url` 是可选的 |

68| `plugins` | array | [插件条目](#plugin-entries)。每个条目单独验证,因此一个无效条目不会导致 marketplace 失败 |68| `plugins` | array | [插件条目](#plugin-entries)。每个条目单独验证,因此一个无效条目不会导致 marketplace 失败 |

69| `$schema` | string | JSON Schema URL 用于编辑器自动完成。在加载时忽略 |69| `$schema` | string | JSON Schema URL 用于编辑器自动完成。在加载时忽略 |

Details

377 分享你的 mod377 分享你的 mod

378</h2>378</h2>

379 379 

380Mod 是一个插件,所以你在清单中对其进行版本控制,人们使用 `/plugin` 命令安装和更新它。要将其提供给其他人,[将其添加到市场](/docs/zh-CN/plugins/publish)。380mod 是一个插件,所以您在清单中对其进行版本控制,人们使用 `/plugin` 命令安装和更新它。如何分享取决于分享对象:

381 

382* **少数几个人**:将插件的目录或其 `.zip` 文件发送给他们。请参阅[在没有市场的情况下分享插件](/docs/zh-CN/plugins/publish#share-a-plugin-without-a-marketplace)

383* **您的团队**:将其列入[您自己的市场](/docs/zh-CN/plugins/publish#publish-through-your-own-marketplace),例如每个插件各占一个目录的私有仓库。要为在某个仓库中工作的所有人添加该市场,请[在仓库的设置中注册它](/docs/zh-CN/plugins/host-marketplace#register-the-marketplace-for-everyone-in-a-repository)

384* **您的整个组织**:管理员可以通过托管设置[安装您组织的 mod](/docs/zh-CN/plugins/mods/admin#install-your-organizations-mods)

385* **任何人**:将您的市场仓库设为公开,或[将插件提交到 Anthropic 的目录](/docs/zh-CN/plugins/publish#submit-to-anthropics-directory)

381 386 

382在你这样做之前,检查插件的 `name`:`claude plugin validate` 失败一个[看起来像 Anthropic 自己的](/docs/zh-CN/plugins/manifest-reference#name)名称,例如以 `claude-` 开头的名称。事件和方法可以在版本之间更改,所以你的 README 是说明你测试的 Claude Code 版本的地方。387在你这样做之前,检查插件的 `name`:`claude plugin validate` 失败一个[看起来像 Anthropic 自己的](/docs/zh-CN/plugins/manifest-reference#name)名称,例如以 `claude-` 开头的名称。事件和方法可以在版本之间更改,所以你的 README 是说明你测试的 Claude Code 版本的地方。

383 388 

Details

531| 上和下 | 在绘制内容能完整显示时在控件之间移动。当窗格或条带的行数超过它可以显示的行数时,它们会滚动它。 |531| 上和下 | 在绘制内容能完整显示时在控件之间移动。当窗格或条带的行数超过它可以显示的行数时,它们会滚动它。 |

532| Enter | 按下获得焦点的 `Button`、提交获得焦点的 `Input` 或在 `Select` 中选择 |532| Enter | 按下获得焦点的 `Button`、提交获得焦点的 `Input` 或在 `Select` 中选择 |

533| 按钮的快捷键 | 按下该按钮。当 `Input` 拥有焦点时,每个可打印键都进入字段。 |533| 按钮的快捷键 | 按下该按钮。当 `Input` 拥有焦点时,每个可打印键都进入字段。 |

534| Page Up、Page Down、Home 和 End | 当您的窗格或条带的行数超过它可以显示的行数时,滚动它 |

535| Ctrl+X 然后按方向键 | 调整您的窗格大小。左或上为其提供更多空间,右或下将空间让回。 |

536| Ctrl+X 然后按 X | 关闭您的窗格,即使其某个字段拥有焦点 |

534| Esc | 将键盘焦点返回到输入框。使用 `closeOnEscape: true` 时,它还会关闭窗格。 |537| Esc | 将键盘焦点返回到输入框。使用 `closeOnEscape: true` 时,它还会关闭窗格。 |

535 538 

536mod 无法将 Tab 或方向键绑定到其他任何功能,因此游戏使用 `w`、`a`、`s` 和 `d` 控制方向。539mod 无法将 Tab 或方向键绑定到其他任何功能,因此游戏使用 `w`、`a`、`s` 和 `d` 控制方向。

Details

63| :- | :- | :- |63| :- | :- | :- |

64| [`tool.call`](/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) | 工具即将运行 | `next(e)`、`{ deny: reason }` 或 `{ result }` |64| [`tool.call`](/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) | 工具即将运行 | `next(e)`、`{ deny: reason }` 或 `{ result }` |

65| [`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` |65| [`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.describe` | 每个工具一次,在其描述首次发送给 Claude 时 | `{ description }` |66| `tool.describe` | 每个工具一次,在其描述首次发送给 Claude 时 | `{ description }`,可选择将 `isDeferred` 设为 `true` 以将该工具置于[工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)之后,或设为 `false` 以预先加载它 |

67 67 

68<h3 id="prompts-and-what-claude-reads">68<h3 id="prompts-and-what-claude-reads">

69 提示词以及 Claude 读取的内容69 提示词以及 Claude 读取的内容

plugins/publish.md +26 −11

Details

145 提交到 Anthropic 的目录145 提交到 Anthropic 的目录

146</h2>146</h2>

147 147 

148Anthropic 的目录是人们在 claude.ai 和 Cowork 中浏览以添加插件和连接器的目录。在那里的一个列表可以覆盖 claude.ai、Cowork 和 Claude Code 上的用户。您可以从开发者门户 [claude.ai/directory/manage](https://claude.ai/directory/manage) 提交;claude.com 上的 [Prepare for review](https://claude.com/docs/directory/publish#prepare-for-review) 描述了每个版本在发布前会发生什么。148[Anthropic 的目录](https://claude.ai/directory)是人们在 claude.ai 和 Cowork 中浏览以添加插件和连接器的目录。在那里的一个列表可以覆盖 claude.ai、Cowork 和 Claude Code 上的用户。您可以从开发者门户 [claude.ai/directory/manage](https://claude.ai/directory/manage) 提交,claude.com 上的 [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) 逐步介绍了门户的使用方法。

149 149 

150提交需要付费的 claude.ai 计划。在 Pro 和 Max 上,您可以从自己的账户提交。在 Team 和 Enterprise 上,Owner 可以提交,在 Enterprise 上,Owner 还可以通过 **Organization settings > Roles** 下的自定义角色向其他成员授予 **Directory** 权限。请参阅 [Confirm you can submit to the directory](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory)。150Anthropic 的官方市场 `claude-plugins-official` 不通过目录门户接受提交。如果您与 Anthropic 合作伙伴联系合作,请询问他们关于官方市场列表的信息。

151 151 

152提交步骤、每个版本必须通过的检查以及发布后会发生什么都记录在 claude.com 上,因为无论您的用户在哪个平台上,这些都是相同的:152要提交插件:

153 153 

154* [Publish to the directory](https://claude.com/docs/directory/publish#before-you-submit-to-the-directory):您可以提交什么以及谁可以提交154<Steps>

155* [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin):门户步骤和 [updating a published plugin](https://claude.com/docs/plugins/submit#update-a-published-plugin)155 <Step title="确认您可以提交">

156* [Plugin pre-submission checklist](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit):提交前要运行和修复的检查156 提交需要付费的 claude.ai 计划。在 Pro 和 Max 上,您可以从自己的账户提交。在 Team 和 Enterprise 上,Owner 可以提交,在 Enterprise 上,Owner 还可以通过 **Organization settings > Roles** 下的自定义角色向其他成员授予 **Directory** 权限。请参阅 [Confirm you can submit to the directory](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory)。

157* [Move an earlier submission to the developer portal](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal):如果您通过早期提交表单之一提交了插件(在门户存在之前),该怎么办157 </Step>

158 158 

159在打开门户之前,在本地验证并检查您的哪些组件在 Claude Code 之外加载:159 <Step title="在本地验证插件">

160 在您的 shell 中运行 `claude plugin validate ./your-plugin --strict`。用您的插件目录的路径替换 `./your-plugin`。该命令在本地捕获清单错误;[plugin validate](/docs/zh-CN/plugins/cli-reference#plugin-validate) 列出了每次运行读取的文件。门户应用了 CLI 不检查的额外目录规则,因此本地运行清晰并不保证门户验证清晰。

160 161 

161* **在您的 shell 中运行 `claude plugin validate ./your-plugin --strict`**:用您的插件目录的路径替换 `./your-plugin`。该命令在本地捕获清单错误;[plugin validate](/docs/zh-CN/plugins/cli-reference#plugin-validate) 列出了每次运行读取的文件。门户应用了 CLI 不检查的额外目录规则,因此本地运行清晰并不保证门户验证清晰。162 claude.com 上的 [plugin pre-submission checklist](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit) 列出了提交前要运行和修复的检查。

162* **检查在哪里加载**:某些插件组件仅限 Claude Code,不在 claude.ai 或 Cowork 中加载。[component support table](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) 按应用列出了每个组件,因此您知道 Claude Code 之外的用户会获得什么。163 </Step>

163 164 

164Anthropic 的官方市场 `claude-plugins-official` 不通过目录门户接受提交。如果您与 Anthropic 合作伙伴联系合作,请询问他们关于官方市场列表的信息。165 <Step title="检查在哪里加载">

166 某些插件组件仅限 Claude Code,不在 claude.ai 或 Cowork 中加载。[component support table](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) 按应用列出了每个组件,因此您知道 Claude Code 之外的用户会获得什么。

167 </Step>

168 

169 <Step title="在开发者门户中提交">

170 打开开发者门户 [claude.ai/directory/manage](https://claude.ai/directory/manage),并按照 claude.com 上的 [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) 操作。

171 </Step>

172</Steps>

173 

174流程的其余部分记录在 claude.com 上:

175 

176* [Prepare for review](https://claude.com/docs/directory/publish#prepare-for-review):每个版本在发布前会发生什么

177* [Update a published plugin](https://claude.com/docs/plugins/submit#update-a-published-plugin):新版本如何到达已安装您插件的用户

178* [Submit your plugin, and your MCP server as a connector](https://claude.com/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector):您可以提交什么

179* [Move an earlier submission to the developer portal](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal):如果您通过早期提交表单之一提交了插件(在门户存在之前),该怎么办

165 180 

166<h3 id="how-a-listed-plugin-reaches-claude-code-users">181<h3 id="how-a-listed-plugin-reaches-claude-code-users">

167 列出的插件如何到达 Claude Code 用户182 列出的插件如何到达 Claude Code 用户

routines.md +34 −34

Details

321* **Label-gated backport**:labels include `needs-backport`。仅当维护者标记 PR 时才触发移植到另一个分支的例程。321* **Label-gated backport**:labels include `needs-backport`。仅当维护者标记 PR 时才触发移植到另一个分支的例程。

322 322 

323<h2 id="manage-routines">323<h2 id="manage-routines">

324 管理例程324 管理 Routine

325</h2>325</h2>

326 326 

327单击列表中的例程以打开其详细信息页面。详细信息页面显示例程的存储库、connectors、提示、计划、API 令牌、GitHub 触发器和过去运行的列表。327在列表中点击某个 Routine 即可打开其详情页。详情页会显示该 Routine 的仓库、连接器、提示词、计划、API 令牌、GitHub 触发器以及过往运行的列表。

328 328 

329<h3 id="view-and-interact-with-runs">329<h3 id="view-and-interact-with-runs">

330 查看和交互运行330 查看运行并与之交互

331</h3>331</h3>

332 332 

333单击任何运行以将其作为完整会话打开。从那里您可以看到 Claude 所做的工作、审查更改、创建拉取请求或继续对话。每个运行会话的工作方式与任何其他会话相同:使用会话标题旁边的下拉菜单来重命名、存档或删除它。333点击任意运行即可将其作为完整会话打开。在那里,您可以查看 Claude 执行了哪些操作、审查更改、创建 Pull Request 或继续对话。每个运行会话的用法与其他会话相同:使用会话标题旁边的下拉菜单对其进行重命名、归档或删除。

334 334 

335<Note>335<Note>

336 运行列表中的绿色状态表示会话已启动并在没有基础设施错误的情况下退出。这并不意味着您提示中的任务成功。打开运行以读取记录并确认 Claude 实际做了什么。被阻止的网络请求、缺失的 connector 工具和任务级别的失败都会在那里显示,而不是在状态指示器中。336 运行列表中的绿色状态表示会话已启动并退出,且没有出现基础设施错误。这并不表示提示词中的任务已成功完成。请打开该运行阅读会话记录,确认 Claude 实际执行了哪些操作。被阻止的网络请求、缺失的连接器工具以及任务级别的失败都会显示在会话记录中,而不会体现在状态指示器中。

337</Note>337</Note>

338 338 

339<h3 id="edit-and-control-routines">339<h3 id="edit-and-control-routines">

340 编辑和控制例程340 编辑和控制 Routine

341</h3>341</h3>

342 342 

343从例程详细信息页面,您可以:343在 Routine 详情页中,您可以:

344 344 

345* 单击 **Run now** 立即启动运行,而无需等待下一个计划时间。您可以选择提供特定于运行的文本,该文本以与 API 触发器的 `text` 字段相同的方式到达例程。345* 点击 **Run now** 立即启动一次运行,而无需等待下一个计划时间。您可以选择提供特定于本次运行的文本,该文本传递给 Routine 的方式与 API 触发器的 `text` 字段相同。

346* 使用页面顶部的开/关开关来暂停或恢复计划。暂停的例程保持其配置但不运行,直到您重新启用它们。346* 使用页面顶部的开关暂停或恢复计划。已暂停的 Routine 会保留其配置,但在您重新启用之前不会运行。

347* 打开例程名称旁边的菜单并选择 **Edit** 以更改名称、提示、存储库、环境、connectors 或例程的任何触发器。**Select a trigger** 部分是您添加或删除计划、API 令牌和 GitHub 事件触发器的地方。347* 打开 Routine 名称旁边的菜单并选择 **Edit**,以更改名称、提示词、仓库、环境、连接器或 Routine 的任何触发器。您可以在 **Select a trigger** 部分添加或移除计划、API 令牌和 GitHub 事件触发器。

348* 打开同一菜单并选择 **Delete** 以删除例程。348* 打开同一菜单并选择 **Delete** 以删除该 Routine。

349 349 

350<h3 id="manage-routines-from-the-cli">350<h3 id="manage-routines-from-the-cli">

351 从 CLI 管理例程351 从 CLI 管理 Routine

352</h3>352</h3>

353 353 

354CLI 支持管理现有例程。运行 `/schedule list` 查看所有例程,运行 `/schedule update` 更改一个,或运行 `/schedule run` 立即触发它。354CLI 支持管理现有的 Routine。运行 `/schedule list` 可查看所有 Routine,运行 `/schedule update` 可更改某个 Routine,运行 `/schedule run` 可立即触发它。

355 355 

356您也可以询问例程的运行历史,例如 `/schedule why did my nightly review do nothing this morning?`。Claude 列出例程的最近运行及其状态和一个链接来[在网络上打开每个运行](#view-and-interact-with-runs),并读取运行的日志来解释发生了什么,包括工具错误、权限拒绝和最终结果。需要 Claude Code v2.1.227 或更高版本。356您还可以询问某个 Routine 的运行历史,例如 `/schedule why did my nightly review do nothing this morning?`。Claude 会列出该 Routine 最近的运行及其状态,并附上[在网页上打开每次运行](#view-and-interact-with-runs)的链接,还会读取运行日志来解释发生了什么,包括工具错误、权限拒绝和最终结果。需要 Claude Code v2.1.227 或更高版本。

357 357 

358<h3 id="repositories-and-branch-permissions">358<h3 id="repositories-and-branch-permissions">

359 存储库和分支权限359 仓库和分支权限

360</h3>360</h3>

361 361 

362Routines 需要 GitHub 访问权限来克隆存储库。当您使用 `/schedule` 从 CLI 创建例程时,Claude 检查您的账户是否具有您运行它的存储库的 GitHub 访问权限,如果没有,会添加一个设置说明,说明如何授予它。有关授予访问权限的两种方式,请参阅 [GitHub authentication options](/docs/zh-CN/claude-code-on-the-web#github-authentication-options)。362Routine 需要 GitHub 访问权限才能克隆仓库。当您在 CLI 中使用 `/schedule` 创建 Routine 时,Claude 会检查您的账户是否拥有对您运行该命令所在仓库的 GitHub 访问权限;如果没有,则会添加一条设置说明,指明如何授予访问权限。请参阅 [GitHub 身份验证选项](/docs/zh-CN/claude-code-on-the-web#github-authentication-options),了解授予访问权限的两种方式。

363 363 

364如果您的 GitHub 连接在运行到期时缺失或已过期,例程将跳过运行,最多 72 小时。在该时间窗口内重新连接 GitHub,例程将自动恢复。72 小时后仍未连接,例程将关闭,您需要在重新连接 GitHub 后将其打开。364如果在某次运行按计划应当执行时,您的 GitHub 连接缺失或已过期,Routine 会跳过运行,直到您重新连接为止,最长持续 72 小时。在此期间内重新连接 GitHub,Routine 会自行恢复。如果 72 小时后仍未连接,Routine 将被关闭,您需要在重新连接 GitHub 后再将其重新打开。

365 365 

366您添加的每个存储库在每次运行时都会被克隆。Claude 从存储库的默认分支开始,除非您的提示另有指定。366您添加的每个仓库都会在每次运行时被克隆。除非您的提示词另有指定,否则 Claude 会从仓库的默认分支开始。

367 367 

368Claude 将其工作推送到以 `claude/` 为前缀的分支,除非您的提示词指示它推送到其他分支。要控制运行可以推送到哪些分支,请在 GitHub 上使用分支保护规则或规则集。对于在 Anthropic 托管基础设施上的运行,以及通过 [Anthropic 的 git 代理](/docs/zh-CN/self-hosted-environments-deploy#use-the-anthropic-git-proxy)推送的自托管运行,GitHub 会将这些规则应用于您连接的 GitHub 访问权限,因此该访问权限可以绕过的规则不会阻止运行的推送。使用您的部署所提供的 git 凭据进行推送的自托管运行,则会根据这些凭据进行检查。请参阅[配置 git](/docs/zh-CN/self-hosted-environments-deploy#configure-git)。368除非您的提示词指示 Claude 推送到其他分支,否则 Claude 会将其工作推送到以 `claude/` 为前缀的分支。要控制运行可以推送到哪些分支,请在 GitHub 上使用分支保护规则或规则集。对于在 Anthropic 托管基础设施上的运行,以及通过 [Anthropic 的 git 代理](/docs/zh-CN/self-hosted-environments-deploy#use-the-anthropic-git-proxy)推送的自托管运行,GitHub 会将这些规则应用于您所连接的 GitHub 访问权限,因此该访问权限可以绕过的规则不会阻止运行的推送。使用您的部署所提供的 git 凭据进行推送的自托管运行,则会依据这些凭据进行检查。请参阅[配置 git](/docs/zh-CN/self-hosted-environments-deploy#configure-git)。

369 369 

370<h3 id="connectors">370<h3 id="connectors">

371 Connectors371 连接器

372</h3>372</h3>

373 373 

374Routines 可以使用您连接的 MCP connectors 在每次运行期间读取和写入外部服务。例如,分类支持请求的例程可能从 Slack 频道读取并在 Linear 中创建问题。374Routine 可以在每次运行期间使用您已连接的 MCP 连接器来读取和写入外部服务。例如,一个对支持请求进行分类的 Routine 可能会从 Slack 频道读取内容,并在 Linear 中创建问题。

375 375 

376Connectors 是您账户上的 [claude.ai integrations](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)。您在 CLI 中使用 `claude mcp add` 本地添加的 MCP 服务器存储在您的机器上而不是您的 claude.ai 账户上,因此它们不会出现在 connectors 列表中。要在例程中使用其中一个服务器,请在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 处将其添加为 connector,或在提交的 [`.mcp.json`](/docs/zh-CN/mcp#project-scope) 中声明它,以便它是克隆存储库的一部分。376连接器是您账户中的 [claude.ai 集成](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)。您在 CLI 中使用 `claude mcp add` 在本地添加的 MCP 服务器存储在您的计算机上,而不是您的 claude.ai 账户中,因此它们不会出现在连接器列表中。要在 Routine 中使用其中某个服务器,请在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 将其添加为连接器。对于只有一个仓库的 Routine,您也可以改为在已提交的 [`.mcp.json`](/docs/zh-CN/mcp#project-scope) 中声明它,使其成为所克隆仓库的一部分。

377 377 

378创建例程时,默认情况下包括您当前连接的所有 connectors。删除不需要的任何内容以限制 Claude 在运行期间可以访问的工具。您也可以直接从例程表单添加 connectors。378创建 Routine 时,默认会包含您当前已连接的所有连接器。请移除不需要的连接器,以限制 Claude 在运行期间可以访问的工具。您也可以直接在 Routine 表单中添加连接器。

379 379 

380要在例程表单外管理或添加 connectors,请访问 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 或在 CLI 中使用 `/schedule update`。380要在 Routine 表单之外管理或添加连接器,请访问 [claude.ai/customize/connectors](https://claude.ai/customize/connectors),或在 CLI 中使用 `/schedule update`。

381 381 

382<h3 id="environments-and-network-access">382<h3 id="environments-and-network-access">

383 环境和网络访问383 环境和网络访问

384</h3>384</h3>

385 385 

386每个例程使用一个 [cloud environment](/docs/zh-CN/cloud-environments),该环境控制网络访问、环境变量和设置脚本。例程在每次运行时继承环境的网络策略。386每个 Routine 都使用一个[云环境](/docs/zh-CN/cloud-environments),用于控制网络访问、环境变量和设置脚本。Routine 在每次运行时都会继承该环境的网络策略。

387 387 

388**Default** 环境使用 **Trusted** 网络访问,它仅允许 [默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains) 通过会话的网络。对该路径之外的主机的请求失败,返回 `403` 和 `x-deny-reason: host_not_allowed`。MCP connector 流量通过 Anthropic 的服务器路由,而不是该路径,因此您添加到例程的 connectors 无需将其主机添加到 **Allowed domains** 即可工作。删除您在 [Connectors](#connectors) 下不需要的任何 connectors。388**Default** 环境使用 **Trusted** 网络访问,仅允许[默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains)中的主机通过会话的网络。通过该路径向允许列表以外主机发出的请求会失败,并返回 `403` 和 `x-deny-reason: host_not_allowed`。MCP 连接器流量通过 Anthropic 的服务器路由,而不经过该路径,因此您添加到 Routine 的连接器无需将其主机添加到 **Allowed domains** 即可正常工作。请在[连接器](#connectors)下移除您不需要的任何连接器。

389 389 

390要允许其他域上的一个您自己的环境,请按照以下步骤操作。[organization-shared environment](/docs/zh-CN/cloud-environments#organization-shared-environments) 在此处打开为只读,因此所有者从 [admin settings](https://claude.ai/admin-settings) 中的 **Cloud environments** 页面更改其网络访问。390要在您自己的某个环境中允许更多域名,请按照以下步骤操作。[组织共享环境](/docs/zh-CN/cloud-environments#organization-shared-environments)在此处以只读方式打开,因此需要由 Owner 在[管理设置](https://claude.ai/admin-settings)的 **Cloud environments** 页面中更改其网络访问。

391 391 

392<Steps>392<Steps>

393 <Step title="打开例程进行编辑">393 <Step title="打开 Routine 进行编辑">

394 在例程的详细信息页面上,打开例程名称旁边的菜单并选择 **Edit**。394 在 Routine 的详情页中,打开 Routine 名称旁边的菜单并选择 **Edit**。

395 </Step>395 </Step>

396 396 

397 <Step title="打开环境选择器">397 <Step title="打开环境选择器">

398 在 **Instructions** 框下方,选择显示您的环境名称(例如 **Default**)的云图标。398 在 **Instructions** 框下方,选择显示您环境名称(例如 **Default**)的云图标。

399 </Step>399 </Step>

400 400 

401 <Step title="打开环境设置">401 <Step title="打开环境设置">

402 将鼠标悬停在列表中的环境上,然后单击右侧出现的设置图标。402 将鼠标悬停在列表中的环境上,然后点击右侧出现的设置图标。

403 </Step>403 </Step>

404 404 

405 <Step title="更改网络访问级别">405 <Step title="更改网络访问级别">

406 在 **Edit cloud environment** 对话框中,将 **Network access** 更改为 **Custom** 并在 **Allowed domains** 中输入您的域。检查 **Also include default list of common package managers** 以在您的自定义域旁边保留 [默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains)。选择 **Full** 以获得不受限制的访问。406 在 **Edit environment** 对话框中,将 **Network access** 更改为 **Custom**,并在 **Allowed domains** 中输入您的域名。勾选 **Also include default list of common package managers**,以便在自定义域名之外保留[默认允许列表](/docs/zh-CN/cloud-environments#default-allowed-domains)。如需不受限制的访问,请改为选择 **Full**。

407 </Step>407 </Step>

408 408 

409 <Step title="保存">409 <Step title="保存">

410 单击 **Save changes**。新策略从下一次运行开始应用。410 点击 **Save changes**。新策略将从下一次运行开始生效。

411 </Step>411 </Step>

412</Steps>412</Steps>

413 413 

414有关访问级别和默认允许列表的详细信息,请参阅 [Network access](/docs/zh-CN/cloud-environments#network-access)。414有关访问级别和默认允许列表的详细信息,请参阅[网络访问](/docs/zh-CN/cloud-environments#network-access)。

415 415 

416<h2 id="usage-and-limits">416<h2 id="usage-and-limits">

417 使用和限制417 使用和限制

sandboxing.md +2 −4

Details

459 掩码凭据459 掩码凭据

460</h3>460</h3>

461 461 

462当您对凭据进行掩码时,Claude Code 会向沙箱命令显示一个每个会话的占位符(称为哨兵值),并由[沙箱代理](#network-isolation)在发往您允许的主机的出站请求中替换为真实值。而[保护凭据](#protect-credentials)中的 `deny` 条目则会阻止该凭据。对于 macOS 上的文件,Claude Code 会[阻止该文件](#mask-credential-files),而不是对其进行掩码。462当您对凭据进行掩码时,Claude Code 会向沙箱命令显示一个每个会话的占位符(称为哨兵值),并由[沙箱代理](#network-isolation)在发往您允许的主机的出站请求中替换为真实值。而[保护凭据](#protect-credentials)中的 `deny` 条目则会阻止该凭据。对于 macOS 上的文件,Claude Code 会[阻止该文件](#mask-credential-files),而不是对其进行掩码。[`sandbox.credentials`](/docs/zh-CN/settings-reference#sandbox-credentials) 参考列出了所有字段。

463 

464掩码环境变量需要 Claude Code v2.1.199 或更高版本。[`sandbox.credentials`](/docs/zh-CN/settings-reference#sandbox-credentials) 参考列出了所有字段。

465 463 

466掩码需要满足以下条件:464掩码需要满足以下条件:

467 465 


620在 `WebFetch(domain:...)` 规则中,沙箱支持两种通配符形式:前导 `*.`(例如 `*.example.com`)和单独的 `*`。单独的 `*` 形式需要 Claude Code v2.1.186 或更高版本。位于其他位置的通配符(例如 `WebFetch(domain:example.*)`)仍可匹配抓取请求,但对沙箱化命令没有任何作用。618在 `WebFetch(domain:...)` 规则中,沙箱支持两种通配符形式:前导 `*.`(例如 `*.example.com`)和单独的 `*`。单独的 `*` 形式需要 Claude Code v2.1.186 或更高版本。位于其他位置的通配符(例如 `WebFetch(domain:example.*)`)仍可匹配抓取请求,但对沙箱化命令没有任何作用。

621 619 

622<Note>620<Note>

623 内置代理根据请求的主机名强制执行允许列表,默认情况下不会终止或检查 TLS 流量。实验性的 [`network.tlsTerminate`](/docs/zh-CN/settings-reference#sandbox-network-tlsterminate) 设置(在 Claude Code v2.1.199 及更高版本中可用)会让内置代理自行终止 TLS,这是 [`mask` 凭据条目](#mask-credentials)所必需的。有关默认行为的影响,请参阅[安全限制](#security-limitations);如果您的威胁模型要求进行 TLS 检查,请参阅[自定义代理配置](#custom-proxy-configuration)。621 内置代理根据请求的主机名强制执行允许列表,默认情况下不会终止或检查 TLS 流量。实验性的 [`network.tlsTerminate`](/docs/zh-CN/settings-reference#sandbox-network-tlsterminate) 设置会让内置代理自行终止 TLS,这是 [`mask` 凭据条目](#mask-credentials)所必需的。有关默认行为的影响,请参阅[安全限制](#security-limitations);如果您的威胁模型要求进行 TLS 检查,请参阅[自定义代理配置](#custom-proxy-configuration)。

624</Note>622</Note>

625 623 

626<h4 id="hosts-outside-your-allowed-domains">624<h4 id="hosts-outside-your-allowed-domains">

sessions.md +1 −1

Details

299 删除会话数据299 删除会话数据

300</h3>300</h3>

301 301 

302文本记录在 [保留扫描规则](/docs/zh-CN/claude-directory#cleaned-up-automatically) 下过期。要更快地删除项目的文本记录和相关状态,请运行 [`claude project purge`](/docs/zh-CN/claude-directory#clear-local-data)。如果您使用 [`claude rm <id>`](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 删除 [后台会话](/docs/zh-CN/agent-view),其文本记录保留在磁盘上,并且仍可通过 `claude --resume` 访问。302会话记录在 [保留扫描规则](/docs/zh-CN/claude-directory#cleaned-up-automatically) 下过期。要更快地删除项目的会话记录和相关状态,请运行 [`claude purge`](/docs/zh-CN/claude-directory#clear-local-data)。如果您使用 [`claude rm <id>`](/docs/zh-CN/agent-view#what-deleting-a-session-removes) 删除 [后台会话](/docs/zh-CN/agent-view),其会话记录保留在磁盘上,并且仍可通过 `claude --resume` 访问。

303 303 

304<h3 id="name-the-project-directory-yourself">304<h3 id="name-the-project-directory-yourself">

305 自己命名项目目录305 自己命名项目目录

Details

708| [`modelOverrides`](#modeloverrides) | [将模型 ID 映射](/docs/zh-CN/model-config#override-model-ids-per-version)到您的提供商的 ID,例如 Bedrock ARN | 模型和响应 | Any file |708| [`modelOverrides`](#modeloverrides) | [将模型 ID 映射](/docs/zh-CN/model-config#override-model-ids-per-version)到您的提供商的 ID,例如 Bedrock ARN | 模型和响应 | Any file |

709| [`modelPicker`](#modelpicker) | 选择 [`/model` 选择器](/docs/zh-CN/model-config#available-models)列出的模型,按您自己的顺序和您自己的标签 | 模型和响应 | User or managed |709| [`modelPicker`](#modelpicker) | 选择 [`/model` 选择器](/docs/zh-CN/model-config#available-models)列出的模型,按您自己的顺序和您自己的标签 | 模型和响应 | User or managed |

710| [`modelPricing`](#modelpricing) | 按您的组织合同费率而不是列表价格报告支出 | 模型和响应 | Managed |710| [`modelPricing`](#modelpricing) | 按您的组织合同费率而不是列表价格报告支出 | 模型和响应 | Managed |

711| [`modelSettings`](#modelsettings) | 为每个模型保留保存的[努力级别](/docs/zh-CN/model-config#adjust-effort-level),或限制一个模型的努力 | 模型和响应 | Any file |711| [`modelSettings`](#modelsettings) | 为每个模型保留已保存的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)或[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window),或限制某个模型的 effort | 模型和响应 | Any file |

712| [`otelHeadersHelper`](#otelheadershelper) | 使用您自己的命令生成旋转的 [OpenTelemetry](/docs/zh-CN/monitoring-usage#dynamic-headers) 标头 | 身份验证和提供商 | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | 使用您自己的命令生成旋转的 [OpenTelemetry](/docs/zh-CN/monitoring-usage#dynamic-headers) 标头 | 身份验证和提供商 | Any file |

713| [`outputStyle`](#outputstyle) | 使用[输出样式](/docs/zh-CN/output-styles)更改 Claude 的角色、语气和输出格式 | 模型和响应 | Any file |713| [`outputStyle`](#outputstyle) | 使用[输出样式](/docs/zh-CN/output-styles)更改 Claude 的角色、语气和输出格式 | 模型和响应 | Any file |

714| [`parentSettingsBehavior`](#parentsettingsbehavior) | 应用或删除[SDK 或 IDE 主机](/docs/zh-CN/managed-settings#let-an-embedding-host-add-policy)在您部署[托管设置](/docs/zh-CN/managed-settings)时传递的限制 | 企业和托管设置 | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | 应用或删除[SDK 或 IDE 主机](/docs/zh-CN/managed-settings#let-an-embedding-host-add-policy)在您部署[托管设置](/docs/zh-CN/managed-settings)时传递的限制 | 企业和托管设置 | Managed |


1282要限制一个模型的努力而不是设置其级别,将[`maxEffortLevel`](#maxeffortlevel)字段添加到该模型的条目。该字段需要 Claude Code v2.1.267 或更高版本。1282要限制一个模型的努力而不是设置其级别,将[`maxEffortLevel`](#maxeffortlevel)字段添加到该模型的条目。该字段需要 Claude Code v2.1.267 或更高版本。

1283 1283 

1284* **Scope**: [`Any file`](#scopes)1284* **Scope**: [`Any file`](#scopes)

1285* **Type**: 将模型名称映射到具有 `effortLevel` 字段的对象,其中一个 `"low"`、`"medium"`、`"high"` 或 `"xhigh"`、[`maxEffortLevel`](#maxeffortlevel)字段或两者1285* **Type**: 将模型名称映射到对象的对象,该对象可包含以下任意字段:

1286 * `effortLevel`: 其中一个 `"low"`、`"medium"`、`"high"` 或 `"xhigh"`

1287 * [`maxEffortLevel`](#maxeffortlevel): 该模型可以运行的最高 effort 级别

1288 * `autoCompactWindow`: 从 `100000` 到 `1000000` 的 token 数,或 `"auto"` 表示为该模型调优的窗口。[`/autocompact`](/docs/zh-CN/model-config#set-the-auto-compact-window) 保存到此处。对于该模型,该值优先于同一设置文件中的顶级 [`autoCompactWindow`](#autocompactwindow)。需要 Claude Code v2.1.288 或更高版本

1286* **Default**: 未设置1289* **Default**: 未设置

1287 1290 

1288Claude Code 在模型的规范名称下写入每个条目,如 `claude-opus-5-5`,并将该模型的别名、日期后缀、`[1m]` 和识别的提供商特定 ID 匹配到同一条目。1291Claude Code 在模型的规范名称下写入每个条目,如 `claude-opus-5-5`,并将该模型的别名、日期后缀、`[1m]` 和识别的提供商特定 ID 匹配到同一条目。


2478 `sandbox.credentials.envVars`2481 `sandbox.credentials.envVars`

2479</h3>2482</h3>

2480 2483 

2481保护环境变量免受沙箱化命令。使用 `"mode": "deny"`,Claude Code 从沙箱化命令的环境中删除变量。使用 `"mode": "mask"`,沙箱化命令看到每个会话的哨兵值,沙箱代理在对该条目的 `injectHosts` 的出站请求上替换真实值,因此 `gh` 和 `npm` 等工具保持认证而无需持有真实凭证。`"mode": "mask"` 需要 Claude Code v2.1.199 或更高版本。2484保护环境变量免受沙箱化命令。使用 `"mode": "deny"`,Claude Code 从沙箱化命令的环境中删除变量。使用 `"mode": "mask"`,沙箱化命令看到每个会话的哨兵值,沙箱代理在对该条目的 `injectHosts` 的出站请求上替换真实值,因此 `gh` 和 `npm` 等工具保持身份验证而无需持有真实凭据。

2482 2485 

2483* **Scope**: [`Any file`](#scopes)。Claude Code 从项目 `.claude/settings.json` 和本地 `.claude/settings.local.json` 删除 `mask` 条目。2486* **Scope**: [`Any file`](#scopes)。Claude Code 从项目 `.claude/settings.json` 和本地 `.claude/settings.local.json` 删除 `mask` 条目。

2484* **Type**: 对象数组,每个包含 `name` 和 `"deny"` 或 `"mask"` 的 `mode`,加上可选的 [mask fields for environment variables](#mask-fields-for-environment-variables)2487* **Type**: 对象数组,每个包含 `name` 和 `"deny"` 或 `"mask"` 的 `mode`,加上可选的 [mask fields for environment variables](#mask-fields-for-environment-variables)


2499}2502}

2500```2503```

2501 2504 

2502`name` 必须以字母或下划线开头,仅包含字母、数字和下划线。Claude Code 在会话加载的每个设置范围中合并数组,当同一变量同时出现两种模式时应用 `deny`。[Protect credentials](/docs/zh-CN/sandboxing#protect-credentials) 涵盖您使用 `--setting-sources` 排除的源仍然适用的内容。`mask` 条目需要 Claude Code v2.1.199 或更高版本。2505`name` 必须以字母或下划线开头,仅包含字母、数字和下划线。Claude Code 在会话加载的每个设置作用域中合并数组,当同一变量同时出现两种模式时应用 `deny`。[Protect credentials](/docs/zh-CN/sandboxing#protect-credentials) 涵盖您使用 `--setting-sources` 排除的源仍然适用的内容。

2503 2506 

2504`mask` 替换仅通过沙箱代理运行,因此请设置 [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate),或针对纯 HTTP 测试网络设置 [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject);请参阅 [Mask credentials](/docs/zh-CN/sandboxing#mask-credentials)。Claude Code 接受但忽略 `deny` 条目上的 `mask` 字段。2507`mask` 替换仅通过沙箱代理运行,因此请设置 [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate),或针对纯 HTTP 测试网络设置 [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject);请参阅 [Mask credentials](/docs/zh-CN/sandboxing#mask-credentials)。Claude Code 接受但忽略 `deny` 条目上的 `mask` 字段。

2505 2508 


2525| `onExtractNoMatch` | `"warn"`、`"deny"` 或 `"error"`;默认 `"warn"`。在带有 `decode` 的条目上,仅接受 `"warn"` | 当 `extract` 匹配不到任何内容时会发生什么。`warn` 未掩盖地传递变量,`deny` 在沙箱内取消设置它,`error` 停止沙箱设置直到您修复配置。需要 v2.1.224 或更高版本 |2528| `onExtractNoMatch` | `"warn"`、`"deny"` 或 `"error"`;默认 `"warn"`。在带有 `decode` 的条目上,仅接受 `"warn"` | 当 `extract` 匹配不到任何内容时会发生什么。`warn` 未掩盖地传递变量,`deny` 在沙箱内取消设置它,`error` 停止沙箱设置直到您修复配置。需要 v2.1.224 或更高版本 |

2526| `decode` | 字符串 `"jwt"` | 验证整个值是 JWT 并用结构有效的假令牌替换它,因此沙箱内解码令牌的代码保持工作;代理在出口上替换整个真实令牌。不验证的值未掩盖地传递并带有警告。需要 v2.1.224 或更高版本 |2529| `decode` | 字符串 `"jwt"` | 验证整个值是 JWT 并用结构有效的假令牌替换它,因此沙箱内解码令牌的代码保持工作;代理在出口上替换整个真实令牌。不验证的值未掩盖地传递并带有警告。需要 v2.1.224 或更高版本 |

2527| `maskClaims` | 字符串数组,至少一个声明名称;需要 `decode` | 仅掩盖解码的 JWT 内的命名顶级有效负载声明并围绕修改的有效负载重建令牌,因此其他声明保持可读。当没有命名声明匹配时,变量未掩盖地传递并带有警告。需要 v2.1.224 或更高版本 |2530| `maskClaims` | 字符串数组,至少一个声明名称;需要 `decode` | 仅掩盖解码的 JWT 内的命名顶级有效负载声明并围绕修改的有效负载重建令牌,因此其他声明保持可读。当没有命名声明匹配时,变量未掩盖地传递并带有警告。需要 v2.1.224 或更高版本 |

2528| `injectHosts` | 字符串数组,每个是 [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) 也允许的主机 | 缩小沙箱代理替换真实值的主机。未设置时,代理在对 `sandbox.network.allowedDomains` 中每个主机的请求上替换它。将 IPv6 目标写为裸压缩地址,例如 `"::1"`,而不是括号形式;请参阅 [IPv6 destinations in `injectHosts`](/docs/zh-CN/sandboxing#ipv6-destinations-in-injecthosts)。需要 v2.1.199 或更高版本 |2531| `injectHosts` | 字符串数组,每个是 [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) 也允许的主机 | 缩小沙箱代理替换真实值的主机。未设置时,代理在对 `sandbox.network.allowedDomains` 中每个主机的请求上替换它。将 IPv6 目标写为裸压缩地址,例如 `"::1"`,而不是括号形式;请参阅 [IPv6 destinations in `injectHosts`](/docs/zh-CN/sandboxing#ipv6-destinations-in-injecthosts) |

2529 2532 

2530这仅掩盖 `DATABASE_URL` 内的密码,如果模式匹配不到任何内容则取消设置变量,并掩盖 `SERVICE_JWT` 中的 JWT,同时保持除 `api_key` 外的每个声明可读:2533这仅掩盖 `DATABASE_URL` 内的密码,如果模式匹配不到任何内容则取消设置变量,并掩盖 `SERVICE_JWT` 中的 JWT,同时保持除 `api_key` 外的每个声明可读:

2531 2534 


2556 `sandbox.credentials.allowPlaintextInject`2559 `sandbox.credentials.allowPlaintextInject`

2557</h3>2560</h3>

2558 2561 

2559允许 `mask` 替换在纯 HTTP 请求以及 TLS 终止的 HTTPS 上。在纯 HTTP 上,上游身份未验证,凭证以明文形式传输,因此在受信任的测试网络外保持关闭。需要 Claude Code v2.1.199 或更高版本。2562允许 `mask` 替换在纯 HTTP 请求以及 TLS 终止的 HTTPS 上。在纯 HTTP 上,上游身份未验证,凭据以明文形式传输,因此在受信任的测试网络外保持关闭。

2560 2563 

2561* **Scope**: [`User or managed`](#scopes)2564* **Scope**: [`User or managed`](#scopes)

2562* **Type**: 布尔值2565* **Type**: 布尔值


2574}2577}

2575```2578```

2576 2579 

2577需要 Claude Code v2.1.199 或更高版本。

2578 

2579<h3 id="sandbox-credentials-awspairs">2580<h3 id="sandbox-credentials-awspairs">

2580 `sandbox.credentials.awsPairs`2581 `sandbox.credentials.awsPairs`

2581</h3>2582</h3>


2919}2920}

2920```2921```

2921 2922 

2922当多个遵守的源设置它时,Claude Code 使用来自最高优先级源的值:托管设置,然后是 `--settings` 标志,然后是用户设置。需要 Claude Code v2.1.199 或更高版本。2923当多个遵守的源设置它时,Claude Code 使用来自最高优先级源的值:托管设置,然后是 `--settings` 标志,然后是用户设置。

2923 2924 

2924<span id="context-and-memory" />2925<span id="context-and-memory" />

2925 2926 


2967}2968}

2968```2969```

2969 2970 

2970使用 [`/autocompact`](/docs/zh-CN/commands#all-commands) 命令设置它,该命令将此键写入您的用户设置。[设置自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window)涵盖了命令、标志、变量和设置如何相互作用。2971[`/autocompact`](/docs/zh-CN/commands#all-commands) 命令会在 [`modelSettings`](#modelsettings) 下为当前模型保存一个窗口,对于该模型,它优先于同一文件中的此键。[设置自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window)涵盖了命令、标志、变量和设置如何相互作用。

2971 2972 

2972<h3 id="automemorydirectory">2973<h3 id="automemorydirectory">

2973 `autoMemoryDirectory`2974 `autoMemoryDirectory`


3229 `askUserQuestionTimeout`3230 `askUserQuestionTimeout`

3230</h3>3231</h3>

3231 3232 

3232让未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框在空闲一段时间后自动继续,提交您已选择的任何选项。当您离开时设置此项,让 Claude 在没有您的情况下继续。使用默认设置时,问题会等待您回答。需要 Claude Code v2.1.200 或更高版本。3233让未回答的 [`AskUserQuestion`](/docs/zh-CN/tools-reference) 对话框在空闲一段时间后自动继续,提交您已选择的任何选项。当您离开时设置此项,让 Claude 在没有您的情况下继续。使用默认设置时,问题会等待您回答。关于计时器何时暂停或从不启动,请参阅[问题自动继续超时](/docs/zh-CN/tools-reference#question-auto-continue-timeout)。需要 Claude Code v2.1.200 或更高版本。

3233 3234 

3234* **Scope**: [`User or managed`](#scopes)3235* **Scope**: [`User or managed`](#scopes)

3235* **Type**: string,值为 `"60s"`、`"5m"`、`"10m"` 或 `"never"` 之一3236* **Type**: string,值为 `"60s"`、`"5m"`、`"10m"` 或 `"never"` 之一


4842| Rule | `strictKnownMarketplaces` | `blockedMarketplaces` |4843| Rule | `strictKnownMarketplaces` | `blockedMarketplaces` |

4843| - | - | - |4844| - | - | - |

4844| 匹配源拼写 | 仅 `owner/repo` 形式。克隆同一存储库的 git URL 不匹配 | 任何拼写,包括解析为同一 github.com 存储库的 git URL |4845| 匹配源拼写 | 仅 `owner/repo` 形式。克隆同一存储库的 git URL 不匹配 | 任何拼写,包括解析为同一 github.com 存储库的 git URL |

4845| Owner 大小写 | 区分大小写,如精确条目匹配 | 不区分大小写 |4846| Owner 大小写 | 区分大小写 | 不区分大小写 |

4846| `ref` | 遵循精确条目规则:带 `ref` 的条目仅匹配具有该精确 ref 的源,没有的条目仅匹配不指定 ref 的源 | 没有 `ref` 的条目阻止它匹配的存储库的所有 refs |4847| `ref` | 遵循精确条目规则:带 `ref` 的条目仅匹配具有该精确 ref 的源,没有的条目仅匹配不指定 ref 的源 | 没有 `ref` 的条目阻止它匹配的存储库的所有 refs |

4847| `path` | 比精确条目规则更宽松:带 `path` 的条目需要该精确值,而没有的条目匹配存储库内的任何路径 | 没有 `path` 的条目阻止它匹配的存储库的所有路径 |4848| `path` | 比精确条目规则更宽松:带 `path` 的条目需要该精确值,而没有的条目匹配存储库内的任何路径 | 没有 `path` 的条目阻止它匹配的存储库的所有路径 |

4848 4849 


5653 `worktree.bgIsolation`5654 `worktree.bgIsolation`

5654</h3>5655</h3>

5655 5656 

5656选择 [background sessions](/docs/zh-CN/agent-view#how-file-edits-are-isolated) 如何隔离其文件编辑。使用 `"worktree"`,Claude Code 在会话调用 `EnterWorktree` 之前阻止主检出中的 `Edit` 和 `Write`;使用 `"none"`,后台作业直接编辑工作副本。对于 git worktrees 不切实际的存储库,设置 `"none"`。5657选择[后台会话](/docs/zh-CN/agent-view#how-file-edits-are-isolated)如何隔离其文件编辑。如果您是通过 `←` 或 `/background` 将会话移至后台的,则无论此键如何设置,该会话都会就地编辑文件。使用 `"worktree"` 时,Claude Code 会在会话调用 `EnterWorktree` 之前阻止在主检出中使用 `Edit` 和 `Write`;使用 `"none"` 时,后台作业直接编辑工作副本。对于不适合使用 git worktree 的仓库,请设置 `"none"`。

5657 5658 

5658* **Scope**: [`Any file`](#scopes)5659* **Scope**: [`Any file`](#scopes)

5659* **Type**: string,以下之一:5660* **Type**: string,以下之一:

setup.md +5 −5

Details

45 <Tab title="原生安装(推荐)">45 <Tab title="原生安装(推荐)">

46 **macOS、Linux、WSL:**46 **macOS、Linux、WSL:**

47 47 

48 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}48 ```bash theme={null}

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 **Windows PowerShell:**52 **Windows PowerShell:**

53 53 

54 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}54 ```powershell theme={null}

55 irm https://claude.ai/install.ps1 | iex55 irm https://claude.ai/install.ps1 | iex

56 ```56 ```

57 57 

58 **Windows CMD:**58 **Windows CMD:**

59 59 

60 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}60 ```batch theme={null}

61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

62 ```62 ```

63 63 


75 </Tab>75 </Tab>

76 76 

77 <Tab title="Homebrew">77 <Tab title="Homebrew">

78 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}78 ```bash theme={null}

79 brew install --cask claude-code79 brew install --cask claude-code

80 ```80 ```

81 81 


87 </Tab>87 </Tab>

88 88 

89 <Tab title="WinGet">89 <Tab title="WinGet">

90 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}90 ```powershell theme={null}

91 winget install Anthropic.ClaudeCode91 winget install Anthropic.ClaudeCode

92 ```92 ```

93 93 

skills.md +5 −4

Details

198 解决共享名称的 skills198 解决共享名称的 skills

199</h3>199</h3>

200 200 

201当两个 skills 共享目录或文件名称时,每个来自的位置决定了 `/name` 运行哪一个。对于由 frontmatter `name` 字段设置的名称,请参阅 [skill 如何获得其命令名称](#how-a-skill-gets-its-command-name)。该表涵盖 enterprise、personal、project、nested、plugin 和 claude.ai 位置、捆绑 skills 和命令文件:201当两个 skill 共享目录或文件名称时,每个来自的位置决定了 `/name` 运行哪一个。对于由 frontmatter `name` 字段设置的名称,请参阅 [skill 如何获得其命令名称](#how-a-skill-gets-its-command-name)。该表涵盖 enterprise、personal、project、nested、plugin 和 claude.ai 位置、随附 skill、内置命令和命令文件:

202 202 

203| 相同名称在 | 运行哪一个 |203| 相同名称在 | 运行哪一个 |

204| :- | :- |204| :- | :- |

205| Enterprise、personal 和 project 中的两个 | Enterprise 优先于 personal,personal 优先于 project。在 `~/.claude/skills/` 和项目的 `.claude/skills/` 中都有 `deploy` 时,`/deploy` 运行 personal 的 |205| Enterprise、personal 和 project 中的两个 | Enterprise 优先于 personal,personal 优先于 project。在 `~/.claude/skills/` 和项目的 `.claude/skills/` 中都有 `deploy` 时,`/deploy` 运行 personal 的 |

206| 这些位置中的任何一个和 [捆绑 skill](#bundled-skills) | 您的 skill 替换捆绑命令,但不替换其别名。项目 `code-review` skill 替换 `/code-review`,捆绑别名 `/review` 永远不会运行您的 skill |206| 这些位置中的任何一个和 [捆绑 skill](#bundled-skills) | 您的 skill 替换捆绑命令,但不替换其别名。项目 `code-review` skill 替换 `/code-review`,捆绑别名 `/review` 永远不会运行您的 skill |

207| 这些位置中的任何一个和 [内置命令](/docs/zh-CN/commands) | 在本地终端会话中,您的 skill 替换内置命令,但不替换其别名。项目 `usage` skill 替换 `/usage`,内置别名 `/cost` 仍然运行内置命令 |

207| Skill 和 `.claude/commands/` 中的文件 | Skill |208| Skill 和 `.claude/commands/` 中的文件 | Skill |

208| 项目根 skill 和嵌套 skill | 两者都加载。请参阅 [monorepos 和子目录](#discovery-from-parent-and-nested-directories) |209| 项目根 skill 和嵌套 skill | 两者都加载。请参阅 [monorepos 和子目录](#discovery-from-parent-and-nested-directories) |

209| 插件 skill 和上述任何位置的 skill | 两者都加载,因为插件 skills 被命名为 `/plugin-name:skill-name` |210| 插件 skill 和上述任何位置的 skill | 两者都加载,因为插件 skills 被命名为 `/plugin-name:skill-name` |


416| `allowed-tools` | 否 | 在调用此 skill 的轮次中,Claude 无需请求权限即可使用的工具。当您发送下一条消息时,该授予即被清除。接受以空格或逗号分隔的字符串,或 YAML 列表。请参阅[为 skill 预先批准工具](#pre-approve-tools-for-a-skill)。 |417| `allowed-tools` | 否 | 在调用此 skill 的轮次中,Claude 无需请求权限即可使用的工具。当您发送下一条消息时,该授予即被清除。接受以空格或逗号分隔的字符串,或 YAML 列表。请参阅[为 skill 预先批准工具](#pre-approve-tools-for-a-skill)。 |

417| `disallowed-tools` | 否 | 在此 skill 处于活动状态时,从 Claude 可用工具池中移除的工具。适用于永远不应调用某些工具的自主 skill,例如对后台循环禁用 `AskUserQuestion`。接受以空格或逗号分隔的字符串,或 YAML 列表。当您发送下一条消息时,该限制即被清除。与拒绝规则一样,只要还有其他工具存在,该字段就无法移除 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior)。 |418| `disallowed-tools` | 否 | 在此 skill 处于活动状态时,从 Claude 可用工具池中移除的工具。适用于永远不应调用某些工具的自主 skill,例如对后台循环禁用 `AskUserQuestion`。接受以空格或逗号分隔的字符串,或 YAML 列表。当您发送下一条消息时,该限制即被清除。与拒绝规则一样,只要还有其他工具存在,该字段就无法移除 [`EndConversation`](/docs/zh-CN/tools-reference#endconversation-tool-behavior)。 |

418| `model` | 否 | 此 skill 处于活动状态时使用的模型。该覆盖适用于当前轮次的剩余部分,且不会保存到设置中。当您发送下一个提示词时,会话模型即恢复。接受与 [`/model`](/docs/zh-CN/model-config) 相同的值,或使用 `inherit` 保留当前活动的模型。被组织的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表排除的值不会被使用,会话将保留其当前模型。在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下,以及在[分类器审查命令时的计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)下,自动模式不支持的模型同样不会被使用,会话将保留其当前模型。使用 `context: fork` 时,该值改为设置[分叉子代理的模型](#run-skills-in-a-subagent),被排除的值遵循[与子代理模型覆盖相同的规则](/docs/zh-CN/model-config#restrict-model-selection)。 |419| `model` | 否 | 此 skill 处于活动状态时使用的模型。该覆盖适用于当前轮次的剩余部分,且不会保存到设置中。当您发送下一个提示词时,会话模型即恢复。接受与 [`/model`](/docs/zh-CN/model-config) 相同的值,或使用 `inherit` 保留当前活动的模型。被组织的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表排除的值不会被使用,会话将保留其当前模型。在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下,以及在[分类器审查命令时的计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)下,自动模式不支持的模型同样不会被使用,会话将保留其当前模型。使用 `context: fork` 时,该值改为设置[分叉子代理的模型](#run-skills-in-a-subagent),被排除的值遵循[与子代理模型覆盖相同的规则](/docs/zh-CN/model-config#restrict-model-selection)。 |

419| `effort` | 否 | 此 skill 处于活动状态时的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。覆盖会话的 effort 级别。默认值:继承自会话。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。 |420| `effort` | 否 | 此 skill 处于活动状态时的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。覆盖会话的 effort 级别。省略该字段时,级别由 [effort 解析顺序](/docs/zh-CN/model-config#adjust-effort-level)决定。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。 |

420| `context` | 否 | 设置为 `fork` 可在分叉的子代理上下文中运行。请参阅[在子代理中运行 skill](#run-skills-in-a-subagent)。 |421| `context` | 否 | 设置为 `fork` 可在分叉的子代理上下文中运行。请参阅[在子代理中运行 skill](#run-skills-in-a-subagent)。 |

421| `agent` | 否 | 设置 `context: fork` 时使用的子代理类型。 |422| `agent` | 否 | 设置 `context: fork` 时使用的子代理类型。 |

422| `background` | 否 | 仅在使用 `context: fork` 时适用。设置为 `false` 可在调用该 skill 的轮次中等待分叉子代理的结果,而不是[在后台运行它](#run-skills-in-a-subagent)。默认值:`true`。需要 Claude Code v2.1.218 或更高版本。 |423| `background` | 否 | 仅在使用 `context: fork` 时适用。设置为 `false` 可在调用该 skill 的轮次中等待分叉子代理的结果,而不是[在后台运行它](#run-skills-in-a-subagent)。默认值:`true`。需要 Claude Code v2.1.218 或更高版本。 |


664 665 

665如果您在调用 skill 时传递了参数,但 skill 内容中没有占位符接收参数,Claude Code 会将 `ARGUMENTS: <your input>` 附加到 skill 内容的末尾,以便 Claude 仍能看到您输入的内容。占位符是指 `$ARGUMENTS`、索引形式(例如 `$1`)或命名参数。在其位置上没有参数的索引占位符会保留为字面文本,不算作接收了参数。命名占位符即使在其位置上没有参数也算作接收了参数,因为它会展开为空字符串。666如果您在调用 skill 时传递了参数,但 skill 内容中没有占位符接收参数,Claude Code 会将 `ARGUMENTS: <your input>` 附加到 skill 内容的末尾,以便 Claude 仍能看到您输入的内容。占位符是指 `$ARGUMENTS`、索引形式(例如 `$1`)或命名参数。在其位置上没有参数的索引占位符会保留为字面文本,不算作接收了参数。命名占位符即使在其位置上没有参数也算作接收了参数,因为它会展开为空字符串。

666 667 

667您还可以在一条消息的开头叠加多个 skill。输入 `/write-tests /fix-issue 123` 会加载这两个 skill,并将末尾的文本 `123` 作为 `$ARGUMENTS` 传递给每个 skill。在 v2.1.199 之前,只有第一个 skill 会加载,并将 `/fix-issue 123` 作为字面参数文本接收。668您还可以在一条消息的开头叠加多个 skill。输入 `/write-tests /fix-issue 123` 会加载这两个 skill,并将末尾的文本 `123` 作为 `$ARGUMENTS` 传递给每个 skill。

668 669 

669Claude Code 会展开第一个 skill 以及其后叠加的最多五个 skill。展开会在第一个不是内联用户可调用 skill 的标记处停止,因此以[分叉子代理](#run-skills-in-a-subagent)方式运行的 skill(例如 [`/code-review`](/docs/zh-CN/code-review#review-a-diff-locally)),或其参数本身可能以斜杠命令开头的 skill(例如 `/loop`),也会在该处终止叠加。该标记及其后的所有内容会成为每个已展开 skill 的参数文本。从 v2.1.218 起,`/code-review` 以分叉子代理方式运行;在更早的版本中,它以内联方式运行并可叠加。670Claude Code 会展开第一个 skill 以及其后叠加的最多五个 skill。展开会在第一个不是内联用户可调用 skill 的标记处停止,因此以[分叉子代理](#run-skills-in-a-subagent)方式运行的 skill(例如 [`/code-review`](/docs/zh-CN/code-review#review-a-diff-locally)),或其参数本身可能以斜杠命令开头的 skill(例如 `/loop`),也会在该处终止叠加。该标记及其后的所有内容会成为每个已展开 skill 的参数文本。从 v2.1.218 起,`/code-review` 以分叉子代理方式运行;在更早的版本中,它以内联方式运行并可叠加。

670 671 


923 924 

924`/skills` 菜单将 `"user-invocable-only"` 状态标记为 `user-only`。925`/skills` 菜单将 `"user-invocable-only"` 状态标记为 `user-only`。

925 926 

926从 v2.1.199 开始,`"off"` 也会从广告给[远程控制](/docs/zh-CN/remote-control)客户端和[Agent SDK](/docs/zh-CN/agent-sdk/skills#discover-available-commands)调用者的命令列表中隐藏技能,除了终端 `/` 菜单。按其全名调用隐藏的技能仍然返回 `skillOverrides` 错误而不是运行它。927除了终端的 `/` 菜单之外,`"off"` 还会将该 skill 从提供给 [Remote Control](/docs/zh-CN/remote-control) 客户端和 [Agent SDK](/docs/zh-CN/agent-sdk/skills#discover-available-commands) 调用方的命令列表中隐藏。按全名调用已隐藏的 skill 会返回 `skillOverrides` 错误,而不会运行它。

927 928 

928不在 `skillOverrides` 中的技能被视为 `"on"`。下面的示例将一个技能折叠为其名称,并完全关闭另一个:929不在 `skillOverrides` 中的技能被视为 `"on"`。下面的示例将一个技能折叠为其名称,并完全关闭另一个:

929 930 

sub-agents.md +2 −2

Details

986 986 

987当某种原因[在流式传输中途截断了子代理的响应](/docs/zh-CN/errors#the-response-above-may-be-incomplete),且部分响应包含文本但没有工具调用时,Claude Code 会提示子代理继续,而不是结束运行。这在交互式会话中同样适用。只有当这些继续次数用完后,运行才会因该错误而结束。987当某种原因[在流式传输中途截断了子代理的响应](/docs/zh-CN/errors#the-response-above-may-be-incomplete),且部分响应包含文本但没有工具调用时,Claude Code 会提示子代理继续,而不是结束运行。这在交互式会话中同样适用。只有当这些继续次数用完后,运行才会因该错误而结束。

988 988 

989从 v2.1.199 开始,因 API 错误(例如用量限制或反复出现的服务器错误)而结束运行的子代理会将该失败报告给 Claude,而不是把错误文本当作子代理的发现返回。Claude 收到的内容取决于子代理的运行位置:989因 API 错误(例如用量限制或反复出现的服务器错误)而结束运行的子代理会将该失败报告给 Claude。Claude 收到的内容取决于子代理的运行位置:

990 990 

991* **前台**:如果速率限制、过载或服务器错误截断了已经产生文本输出的子代理,Agent 工具会返回该部分输出,并附注说明子代理被截断、未完成其任务。未产生任何输出、或输出仅包含工具调用的子代理会以 [`Agent terminated early due to an API error`](/docs/zh-CN/errors#agent-terminated-early-due-to-an-api-error) 失败,后跟错误详情。在 v2.1.199 中,速率限制、过载或服务器错误截断仅含工具调用的输出时,返回的是只包含截断说明的空部分结果。991* **前台**:如果速率限制、过载或服务器错误截断了已经产生文本输出的子代理,Agent 工具会返回该部分输出,并附注说明子代理被截断、未完成其任务。未产生任何输出、或输出仅包含工具调用的子代理会以 [`Agent terminated early due to an API error`](/docs/zh-CN/errors#agent-terminated-early-due-to-an-api-error) 失败,后跟错误详情。在 v2.1.199 中,速率限制、过载或服务器错误截断仅含工具调用的输出时,返回的是只包含截断说明的空部分结果。

992* **后台**:子代理会被标记为失败,Claude 在其结束时收到的消息会指明该 API 错误,并包含子代理的最后输出,因此部分工作不会丢失。992* **后台**:子代理会被标记为失败,Claude 在其结束时收到的消息会指明该 API 错误,并包含子代理的最后输出,因此部分工作不会丢失。


1188 1188 

1189恢复会在同一 ID 下启动该 Agent 的一次新运行,因此已失败或已完成的子代理会在任务列表和 Agent SDK 的任务事件中再次显示为运行中。在 v2.1.205 之前,在恢复的运行进行期间,它仍会显示之前的失败或已完成状态。1189恢复会在同一 ID 下启动该 Agent 的一次新运行,因此已失败或已完成的子代理会在任务列表和 Agent SDK 的任务事件中再次显示为运行中。在 v2.1.205 之前,在恢复的运行进行期间,它仍会显示之前的失败或已完成状态。

1190 1190 

1191从 v2.1.199 开始,`SendMessage` 会检查某个名称是否仍指向对话中先前通过该名称联系到的同一个 Agent。如果该名称已被较新的 Agent 占用(例如重新生成的后台 Agent 复用了该名称),Claude Code 会拒绝发送,而不是将消息送达错误的 Agent,并且错误会报告该名称现在指向哪个 Agent,以便 Claude 重新指定目标。要在较早的 Agent 仍在运行时联系它,Claude 会使用生成该 Agent 时收到的 Agent ID 来寻址。此检查仅限于当前对话,并会在 `/clear` 时重置。1191`SendMessage` 会检查某个名称是否仍指向对话中先前通过该名称联系到的同一个 Agent。如果该名称已被较新的 Agent 占用(例如重新生成的后台 Agent 复用了该名称),Claude Code 会拒绝发送,而不是将消息送达错误的 Agent,并且错误会报告该名称现在指向哪个 Agent,以便 Claude 重新指定目标。要在较早的 Agent 仍在运行时联系它,Claude 会使用生成该 Agent 时收到的 Agent ID 来寻址。此检查仅限于当前对话,并会在 `/clear` 时重置。

1192 1192 

1193子代理会将来自启动它的 Agent 的消息视为正常的任务指示,包括任务进行中的方向修正,并在其自身的权限设置范围内执行。无论消息由谁发送,以下两项限制始终有效:任何 Agent 发来的消息都不算作您对待处理权限提示的批准;任何 Agent 消息都无法更改子代理的权限设置、`CLAUDE.md` 或配置。只有权限系统或您本人的消息才能给予批准。1193子代理会将来自启动它的 Agent 的消息视为正常的任务指示,包括任务进行中的方向修正,并在其自身的权限设置范围内执行。无论消息由谁发送,以下两项限制始终有效:任何 Agent 发来的消息都不算作您对待处理权限提示的批准;任何 Agent 消息都无法更改子代理的权限设置、`CLAUDE.md` 或配置。只有权限系统或您本人的消息才能给予批准。

1194 1194 

ultrareview.md +1 −5

Details

134| - | - | - |134| - | - | - |

135| Pro | 3 次免费运行 | 按 [额外使用量](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans) 计费 |135| Pro | 3 次免费运行 | 按 [额外使用量](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans) 计费 |

136| Max | 3 次免费运行 | 按 [额外使用量](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans) 计费 |136| Max | 3 次免费运行 | 按 [额外使用量](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans) 计费 |

137| Team 和 Enterprise | 无 | 按 [额外使用量](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans) 计费 |

138 137 

139* **免费运行**:Pro 和 Max 的三次运行是每个账户的一次性分配,不会刷新。138* **免费运行**:Pro 和 Max 的三次运行是每个账户的一次性分配,不会刷新。

140* **每次审查的成本**:使用完免费运行后,通常花费 \$5 到 \$25 的使用额度,具体取决于更改的大小,与启动对话框在每次运行前显示的估计相匹配。139* **每次审查的成本**:使用完免费运行后,通常花费 \$5 到 \$25 的使用额度,具体取决于更改的大小,与启动对话框在每次运行前显示的估计相匹配。

141* **何时计数一次运行**:一旦云会话启动。您提前停止或未能完成的审查仍然会使用一次免费运行;付费审查仅对运行的部分计费。140* **何时计数一次运行**:一旦云会话启动。您提前停止或未能完成的审查仍然会使用一次免费运行;付费审查仅对运行的部分计费。

142 141 

143由于 ultrareview 在免费运行之外始终按使用额度计费,您的账户或组织必须在启动付费审查之前启用使用额度。如果未启用使用额度,Claude Code 会阻止启动,启用方式取决于您的计费访问权限:142由于 ultrareview 在免费运行之外始终按使用额度计费,您的账户或组织必须在启动付费审查之前启用使用额度。如果未启用使用额度,Claude Code 会阻止启动。如果您可以管理您账户的计费,Claude Code 会将您链接到计费设置,您可以在那里启用使用额度。

144 

145* 如果您可以管理您账户的计费,Claude Code 会将您链接到计费设置,您可以在那里启用使用额度。

146* 在 Team 和 Enterprise 计划上,没有计费访问权限的成员可以从 CLI 发送请求,要求其管理员启用使用额度。

147 143 

148您也可以运行 `/usage-credits` 来检查或更改您的使用额度设置。144您也可以运行 `/usage-credits` 来检查或更改您的使用额度设置。

149 145 

Details

184 184 

185语音听写不激活或不录制时的常见问题:185语音听写不激活或不录制时的常见问题:

186 186 

187* **`Voice mode requires a Claude.ai account`**:你使用 API 密钥或第三方提供商进行了身份验证。运行 `/login` 以使用 Claude.ai 账户登录。187* **`Unknown command: /voice`**:只有在以 claude.ai 账户作为当前登录方式时才能使用 `/voice`。如果您未使用 claude.ai 账户登录,请运行 `/login`。如果正在使用 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN`、`apiKeyHelper` 设置或[第三方提供商](#requirements),它们会优先于 claude.ai 登录,因此请将其移除并重新启动 Claude Code。

188* **`Voice mode requires a Claude.ai account`**:在您运行 `/voice` 或开始录制时,Claude Code 找不到可用的 claude.ai 登录。运行 `/login` 重新登录。

188* **`Voice mode is disabled by your organization's policy`**:你的组织的管理员策略关闭了语音听写。联系你的组织管理员以确认你的组织是否可以使用语音听写。189* **`Voice mode is disabled by your organization's policy`**:你的组织的管理员策略关闭了语音听写。联系你的组织管理员以确认你的组织是否可以使用语音听写。

189* **`Microphone access is denied`**:在系统设置中授予你的终端麦克风权限。在 macOS 上,转到系统设置 → 隐私和安全 → 麦克风并启用你的终端应用,然后再次运行 `/voice`。在 Windows 上,转到设置 → 隐私和安全 → 麦克风并为桌面应用打开麦克风访问,然后再次运行 `/voice`。如果你的终端未在 macOS 设置中列出,请参阅[终端未在 macOS 麦克风设置中列出](#terminal-not-listed-in-macos-microphone-settings)。190* **`Microphone access is denied`**:在系统设置中授予你的终端麦克风权限。在 macOS 上,转到系统设置 → 隐私和安全 → 麦克风并启用你的终端应用,然后再次运行 `/voice`。在 Windows 上,转到设置 → 隐私和安全 → 麦克风并为桌面应用打开麦克风访问,然后再次运行 `/voice`。如果你的终端未在 macOS 设置中列出,请参阅[终端未在 macOS 麦克风设置中列出](#terminal-not-listed-in-macos-microphone-settings)。

190* **`Voice mode requires SoX for audio recording` on Linux**:本机音频模块无法加载,没有安装回退。使用错误消息中显示的命令安装 SoX,例如 `sudo apt-get install sox`。191* **`Voice mode requires SoX for audio recording` on Linux**:本机音频模块无法加载,没有安装回退。使用错误消息中显示的命令安装 SoX,例如 `sudo apt-get install sox`。