SpyBara
Go Premium

Documentation 2026-11-01 23:57 UTC to 2026-11-02 23:57 UTC

42 files changed +704 −230. View all changes and history on the product overview
2026
Fri 13 02:00 Thu 12 23:02 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

20>20>

21> SDK 建模的一个计费规则是 [数据驻留定价](https://platform.claude.com/docs/en/about-claude/pricing#data-residency-pricing)。当响应的 `usage` 报告 `inference_geo: "us"` 时,SDK 将该响应令牌的列表价格乘以 1.1。网络搜索等按请求收费的费用不会被乘以该系数。需要 TypeScript Agent SDK v0.3.239 或更高版本,或 Python Agent SDK v0.2.144 或更高版本。21> SDK 建模的一个计费规则是 [数据驻留定价](https://platform.claude.com/docs/en/about-claude/pricing#data-residency-pricing)。当响应的 `usage` 报告 `inference_geo: "us"` 时,SDK 将该响应令牌的列表价格乘以 1.1。网络搜索等按请求收费的费用不会被乘以该系数。需要 TypeScript Agent SDK v0.3.239 或更高版本,或 Python Agent SDK v0.2.144 或更高版本。

22>22>

23> 使用这些字段进行开发洞察和大致预算编制。对于权威计费,请使用 [使用情况和成本 API](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) 或 [Claude 控制台](https://platform.claude.com/usage) 中的使用情况页面。不要向最终用户计费或根据这些字段触发财务决策。23> 使用这些字段进行开发洞察和大致预算编制。对于权威计费,请参阅 [管理组织的成本](https://code.claude.com/docs/zh-CN/costs.md#manage-costs-for-your-organization)。不要向最终用户计费或根据这些字段触发财务决策。

24 24 

25## 理解令牌使用情况25## 理解令牌使用情况

26 26 

Details

52 52 

53如果您的应用程序将 Agent SDK 与其自己的依赖项一起捆绑,请从 `@anthropic-ai/claude-agent-sdk/core` 而不是包根目录导入。`/core` 入口需要 TypeScript Agent SDK v0.3.282 或更高版本,其类型需要 TypeScript 5.0 或更高版本。53如果您的应用程序将 Agent SDK 与其自己的依赖项一起捆绑,请从 `@anthropic-ai/claude-agent-sdk/core` 而不是包根目录导入。`/core` 入口需要 TypeScript Agent SDK v0.3.282 或更高版本,其类型需要 TypeScript 5.0 或更高版本。

54 54 

55`/core` 入口导出与根入口相同的 `query()`、`startup()`、`tool()`、`createSdkMcpServer()` 和 `resolveSettings()`,以及重命名、标记和删除会话的函数、`AbortError`、运行时常量和每种类型。它不添加自己的名称。为了保持应用程序加载的代码较小,`/core` 省略了一些根导出,包括 `prewarm()`、`InMemorySessionStore` 类以及列出、读取、分叉、导入和总结会话的辅助函数。如果您需要其中之一,请改用根入口。55为了保持应用程序加载的代码较小,`/core` 入口省略了一些根导出:

56 

57* **导出**:与根入口相同的 `query()`、`startup()`、[`prewarm()`](#prewarm)、`tool()`、`createSdkMcpServer()` 和 `resolveSettings()`,以及重命名、标记和删除会话的函数、`AbortError`、运行时常量和每种类型。从 `/core` 导入 alpha 版 `prewarm()` 需要 Agent SDK v0.3.314 或更高版本。

58* **省略**:包括 `InMemorySessionStore` 类以及列出、读取、分叉、导入和总结会话的辅助函数在内的根导出。如果您需要其中之一,请改用根入口。

56 59 

57根入口内联了自己的 `zod` 和 `@modelcontextprotocol/sdk` 副本。`/core` 入口从您的 `node_modules` 按照 Agent SDK 的 `peerDependencies` 声明的范围导入它们,因此已经包含它们的捆绑包不会携带第二个副本。在给定的进程中从根或 `/core` 导入,而不是两者:它们是单独的捆绑包,加载两者会给您两个 Agent SDK 类和状态的副本。60根入口内联了自己的 `zod` 和 `@modelcontextprotocol/sdk` 副本。`/core` 入口从您的 `node_modules` 按照 Agent SDK 的 `peerDependencies` 声明的范围导入它们,因此已经包含它们的捆绑包不会携带第二个副本。在给定的进程中从根或 `/core` 导入,而不是两者:它们是单独的捆绑包,加载两者会给您两个 Agent SDK 类和状态的副本。

58 61 


2002 2005 

2003* Claude Code 停止的恢复,因为它[无法将会话返回到其 worktree](https://code.claude.com/docs/zh-CN/worktrees.md#the-session-resumes-outside-its-worktree),带有 `worktree_unverified` 或 `worktree_resume_refused`。该部分说明哪个错误携带哪个值。2006* Claude Code 停止的恢复,因为它[无法将会话返回到其 worktree](https://code.claude.com/docs/zh-CN/worktrees.md#the-session-resumes-outside-its-worktree),带有 `worktree_unverified` 或 `worktree_resume_refused`。该部分说明哪个错误携带哪个值。

2004* 拒绝后台会话持有的对话的 [`continue`](#options),带有 `session_held_by_background`。对于这样的对话的拒绝 [`resume`](#options),Claude Code 仅在设置了变量时写入结果。2007* 拒绝后台会话持有的对话的 [`continue`](#options),带有 `session_held_by_background`。对于这样的对话的拒绝 [`resume`](#options),Claude Code 仅在设置了变量时写入结果。

2008* 由于 [`failIfUnavailable`](#sandboxsettings) 开启且沙箱无法启动而被 Claude Code 拒绝的启动,值为 `sandbox_required_unavailable`。

2009 

2010`SDKStartupFailureReason` 类型列出了 `startup_failure_reason` 可以取的值:

2005 2011 

2006```typescript theme={null}2012```typescript theme={null}

2007type SDKStartupFailureReason =2013type SDKStartupFailureReason =


2023 | "cli_version_too_old"2029 | "cli_version_too_old"

2024 | "bypass_root"2030 | "bypass_root"

2025 | "org_config_required_unavailable"2031 | "org_config_required_unavailable"

2026 | "org_config_refused";2032 | "org_config_refused"

2033 | "sandbox_required_unavailable";

2027```2034```

2028 2035 

2029每个值命名一个拒绝:2036每个值命名一个拒绝:


2049| `bypass_root` | 在以 root 身份运行时请求了绕过权限模式 |2056| `bypass_root` | 在以 root 身份运行时请求了绕过权限模式 |

2050| `org_config_required_unavailable` | 会话在启动前需要组织的策略和托管设置,但无法加载它们,例如由于网络故障或 Anthropic 服务器错误。需要 Agent SDK v0.3.293 或更高版本 |2057| `org_config_required_unavailable` | 会话在启动前需要组织的策略和托管设置,但无法加载它们,例如由于网络故障或 Anthropic 服务器错误。需要 Agent SDK v0.3.293 或更高版本 |

2051| `org_config_refused` | Anthropic 拒绝为此次登录提供组织的策略和托管设置,例如因为登录已过期或被吊销,或组织不允许此账户使用 Claude Code。需要 Agent SDK v0.3.293 或更高版本 |2058| `org_config_refused` | Anthropic 拒绝为此次登录提供组织的策略和托管设置,例如因为登录已过期或被吊销,或组织不允许此账户使用 Claude Code。需要 Agent SDK v0.3.293 或更高版本 |

2059| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) 已开启且沙箱无法启动。`errors` 中的文本以 `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` 结尾。需要 Agent SDK v0.3.314 或更高版本 |

2052 2060 

2053### `SDKSystemMessage`2061### `SDKSystemMessage`

2054 2062 

Details

308 308 

309当 Claude Code 配置了 Amazon Bedrock 时,它会验证其打算使用的模型在您的账户中是否可访问。309当 Claude Code 配置了 Amazon Bedrock 时,它会验证其打算使用的模型在您的账户中是否可访问。

310 310 

311如果您已固定的模型版本比 Claude Code 当前默认版本更旧,且您的账户可以调用较新版本,Claude Code 会提示您更新该固定版本。接受会将新的模型 ID 写入您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)并重启 Claude Code。拒绝会被记住,直到下一次默认版本更改。指向[应用推理配置文件 ARN](#map-each-model-version-to-an-inference-profile) 的固定版本会被跳过,因为这些由您的管理员管理。311您可能已固定了比 Claude Code 当前默认版本更旧的模型版本。如果您的账户可以调用较新版本,Claude Code 会提示您更新该固定版本。接受会将新的模型 ID 写入您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)并重启 Claude Code。拒绝会被记住,直到下一次默认版本更改。

312 

313Claude Code 不会检查以下固定版本,也不会针对它们进行提示:

314 

315* [托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)的 `env` 块中的固定版本

316* 指向[应用推理配置文件 ARN](#map-each-model-version-to-an-inference-profile) 的固定版本,因为这些由您的管理员管理

312 317 

313如果您未固定模型且当前默认模型在您的账户中不可用,Claude Code 会为当前会话进行回退并显示通知。它首先尝试默认模型的早期版本,当默认模型是 Opus 模型且没有可用的 Opus 版本时,会回退到默认 Sonnet 模型。回退不会被保留。在您的 Amazon Bedrock 账户中启用较新的模型或[固定一个版本](#4-pin-model-versions)以使选择永久生效。318如果您未固定模型且当前默认模型在您的账户中不可用,Claude Code 会为当前会话进行回退并显示通知。它首先尝试默认模型的早期版本,当默认模型是 Opus 模型且没有可用的 Opus 版本时,会回退到默认 Sonnet 模型。回退不会被保留。在您的 Amazon Bedrock 账户中启用较新的模型或[固定一个版本](#4-pin-model-versions)以使选择永久生效。

314 319 

315当您在特定 Sonnet 或 Opus 版本上启动会话时,例如使用 `--model`、`ANTHROPIC_MODEL` 或[`model` 设置](https://code.claude.com/docs/zh-CN/settings-reference#model),该版本将作为会话针对匹配的 `sonnet` 或 `opus` 别名的固定默认版本。Claude Code 会跳过对您的模型替换的内置默认版本的可用性检查,并在您配置的模型上启动,不显示回退通知。320当您在特定 Sonnet 或 Opus 版本上启动会话时,例如使用 `--model`、`ANTHROPIC_MODEL` 或[`model` 设置](https://code.claude.com/docs/zh-CN/settings-reference#model),该版本将作为会话针对匹配的 `sonnet` 或 `opus` 别名的固定默认版本。Claude Code 会跳过对您的模型替换的内置默认版本的可用性检查,并在您配置的模型上启动,不显示回退通知。

316 321 

317模型别名(如 `opus`)不充当固定版本,Claude Code 无法识别的模型 ID(如应用推理配置文件 ARN)也不充当固定版本。322在以下对象上启动会话时,它们不充当固定版本:

323 

324* 模型别名,例如 `opus`

325* Claude Code 无法识别的模型 ID,例如应用推理配置文件 ARN

318 326 

319当这些检查发现您的账户无法调用的模型时,Claude Code 会在这台机器上记住该拒绝长达一天,在此期间启动时会跳过记住的模型,而不再询问 Amazon Bedrock。Claude Code 会在距离上次检查已过十分钟后再次检查当前默认模型的记住拒绝,因此您的管理员重新启用的默认模型会恢复。要关闭此记忆功能,请设置 [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](https://code.claude.com/docs/zh-CN/env-vars)。327当这些检查发现您的账户无法调用的模型时,Claude Code 会在这台机器上记住该拒绝长达一天,在此期间启动时会跳过记住的模型,而不再询问 Amazon Bedrock。Claude Code 会在距离上次检查已过十分钟后再次检查当前默认模型的记住拒绝,因此您的管理员重新启用的默认模型会恢复。要关闭此记忆功能,请设置 [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](https://code.claude.com/docs/zh-CN/env-vars)。

320 328 

analytics.md +10 −10

Details

77* **带 CC 的代码行**:所有已合并 PR 中使用 Claude Code 协助编写的代码行总数。仅计算"有效行":规范化后超过 3 个字符的行,不包括空行和仅包含括号或琐碎标点符号的行。77* **带 CC 的代码行**:所有已合并 PR 中使用 Claude Code 协助编写的代码行总数。仅计算"有效行":规范化后超过 3 个字符的行,不包括空行和仅包含括号或琐碎标点符号的行。

78* **带 Claude Code 的 PR (%)**:包含 Claude Code 协助代码的所有已合并 PR 的百分比78* **带 Claude Code 的 PR (%)**:包含 Claude Code 协助代码的所有已合并 PR 的百分比

79* **建议接受率**:用户接受 Claude Code 代码编辑建议的次数百分比,包括 Edit、Write 和 NotebookEdit 工具使用79* **建议接受率**:用户接受 Claude Code 代码编辑建议的次数百分比,包括 Edit、Write 和 NotebookEdit 工具使用

80* **接受的代码行**:Claude Code 编写且用户在其会话中接受的代码行总数。这不包括被拒绝的建议,也不跟踪后续删除。80* **接受的代码行**:Claude Code 的 Edit 和 Write 工具在已接受的编辑中添加或删除的代码行总数。这不包括被拒绝的建议,且之后删除的行不会减少该总数。

81 81 

82### 探索图表82### 探索图表

83 83 


192 192 

193## 访问 API 客户的分析193## 访问 API 客户的分析

194 194 

195使用 Claude Console 的 API 客户可以在 [platform.claude.com/claude-code](https://platform.claude.com/claude-code) 访问分析。您需要 UsageView 权限来访问仪表板,该权限授予开发者、计费、管理员、所有者和主要所有者角色。要以编程方式拉取相同的每日每用户指标,请使用 [Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) 和管理员 API 密钥。195使用 Claude Console 的 API 客户可以在 [platform.claude.com/claude-code](https://platform.claude.com/claude-code) 访问分析。您需要 UsageView 权限来访问仪表板。开发者、计费、管理员、所有者和主要所有者角色拥有此权限。要以编程方式拉取每日每用户指标,请使用 [Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) 和管理员 API 密钥。

196 196 

197> [!NOTE]197> [!NOTE]

198>198>


200 200 

201Console 仪表板显示:201Console 仪表板显示:

202 202 

203* **接受的代码行**:Claude Code 编写且用户在其会话中接受的代码行总数。这不包括被拒绝的建议,也不跟踪后续删除。203* **接受的代码行**:Claude Code 的 Edit 和 Write 工具在已接受的编辑中添加或删除的代码行总数。这不包括被拒绝的建议,之后删除的代码行也不会减少总数。

204* **建议接受率**:用户接受代码编辑工具使用的次数百分比,包括 Edit、Write 和 NotebookEdit 工具。204* **建议接受率**:用户接受代码编辑工具使用的次数百分比,包括 Edit、Write 和 NotebookEdit 工具。

205* **活动**:图表上显示的日活跃用户和会话。205* **活跃用户**和**会话**:活跃用户和 Claude Code 会话的每日计数。

206* **支出**:每日 API 成本(美元)与用户计数一起显示。206* **支出**:每日 API 成本(美元)。

207 207 

208### 查看团队洞察208### 查看团队洞察

209 209 

210团队洞察表显示每个用户的指标:210团队洞察表显示您在仪表板顶部所选日期范围内的以下每用户列,默认为最近 30 天:

211 211 

212* **成员**:所有已向 Claude Code 进行身份验证的用户。API 密钥用户按密钥标识符显示,OAuth 用户按电子邮件地址显示。212* **成员**:在该范围内有 Claude Code 使用记录的用户和 API 密钥。API 密钥用户按密钥名称显示,OAuth 用户按电子邮件地址显示。

213* **本月支出**:每个用户当前月份的 API 成本总计。213* **支出**:每个用户的 API 成本总计。

214* **本月代码行**:每个用户当前月份接受的代码行总数。214* **接受的代码行**:每个用户通过 Edit 和 Write 工具在已接受的编辑中添加或删除的代码行总数。

215 215 

216> [!NOTE]216> [!NOTE]

217>217>

218> Console 仪表板中的支出数字是用于分析目的的估计值。有关实际成本,请参阅您的计费页面。218> Console 仪表板中的支出数字是用于分析目的的估计值。有关实际成本,请参阅[成本页面](https://platform.claude.com/cost)。

219 219 

220## 相关资源220## 相关资源

221 221 

Details

351 351 

352## 审查拒绝352## 审查拒绝

353 353 

354要审查和重试 auto mode 分类器拒绝的操作,请打开 `/permissions` 并选择 **Recently denied** 选项卡,Claude Code 在该选项卡中记录每个拒绝。在拒绝的操作上按 `r` 将其标记为重试:当您退出对话框时,Claude Code 会发送一条消息,告诉模型它可以重试该工具调用并恢复对话。354要让 Claude 重试被阻止的操作,请使用 `/permissions` 中的 **Recently blocked** 选项卡:

355 355 

356当分类器对操作[无法做出判决](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)时,因为与 auto mode 分离的安全检查拒绝了分类器自己的请求或其响应无法解析,Claude Code 会拒绝该操作而不在 **Recently denied** 下记录它。链接的错误条目涵盖了 Claude 被告知的内容以及如果您需要它如何运行该操作。356**1. 打开选项卡**

357 

358在会话中运行 `/permissions` 打开权限对话框,然后选择 **Recently blocked** 选项卡。

359 

360**2. 检查操作**

361 

362高亮显示该操作所在的行,并在列表下方阅读其命令或输入。请以命令或输入为准,而不是该行的描述,因为描述是由 Claude 或工具编写的。

363 

364**3. 批准操作**

365 

366按 `r` 批准该操作,让 Claude 重试。

367 

368**4. 关闭对话框**

369 

370按 `Esc` 关闭对话框并应用您的批准。如果您打开 `/permissions` 时 Claude 正在工作,请在 Claude 完成后发送一条消息,让 Claude 重试该操作。否则,无需发送任何内容:Claude 会立即继续,并可能重试该操作。如果没有重试,请在下一条消息中指明该操作,如[您在对话中表达的批准](https://code.claude.com/docs/zh-CN/permission-modes.md#approvals-you-state-in-conversation)中所述。

371 

372批准操作不会添加权限规则。在自动模式下,重试的操作会再次经过检查,因此可能再次被阻止。要从现在起放行某个命令,请[添加一个 `allow` 规则](#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry)。

373 

374如果您不希望 Claude 立即重试,可以批准操作供稍后使用、撤回批准,或关闭对话框并放弃您的批准:

375 

376* **批准供稍后使用**:在该行上按 `Enter`,然后按 `Esc`。该行会离开选项卡,Claude 完成后,可能会在您的下一条消息之后重试该操作。如果您还在另一行上按了 `r`,则按 `Enter` 的那一行会保留在选项卡上,Claude 也不会被告知该操作。请在下次访问时批准该行,或在两行上都按 `r`

377* **撤回批准**:在按 `Esc` 之前,在该行上按 `Enter`,无论您是用 `Enter` 还是 `r` 批准的

378* **关闭对话框并放弃您的批准**:按两次 `Ctrl+C`

379 

380当某行无法显示其完整命令或输入,或者操作没有对应的行时,您无法从该选项卡批准操作:

381 

382* **该行显示 `This row can't be approved here`**:如果您确实打算执行该操作,请在下一条消息中告诉 Claude,Claude 可能会再次尝试

383* **没有对应的行,且对话中出现 `Not run` 或分类器错误**:自动模式的分类器没有给出判决。要了解如何运行该操作,请阅读[自动模式无法确定操作的安全性](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)

357 384 

358### 使用允许规则、环境条目或重试来修复拒绝385### 使用允许规则、环境条目或重试来修复拒绝

359 386 

360要查看诸如 `bash denied by auto mode · [Data Exfiltration] · /permissions` 之类的通知背后的命令或 URL,请使用 **Recently denied** 选项卡、hook 或对话:387通知的形式类似 `bash blocked by auto mode · /permissions · Auto mode: [Data Exfiltration]`。要查看通知背后的命令或 URL,请使用 **Recently blocked** 选项卡、hook 或对话:

361 388 

362* **Recently denied 选项卡**:在 `/permissions` 对话框中,高亮显示被拒绝的 Bash 或 PowerShell 操作,即可在列表下方查看其命令。在[屏幕阅读器模式](https://code.claude.com/docs/zh-CN/accessibility.md)下,所有命令会改为显示在列表之前。389* **Recently blocked 选项卡**:高亮显示该操作所在的行。在[屏幕阅读器模式](https://code.claude.com/docs/zh-CN/accessibility.md)下,所有命令和输入都会显示在列表之前。

363* **Hook**:要以编程方式捕获拒绝的确切输入,请添加一个 [`PermissionDenied` hook](https://code.claude.com/docs/zh-CN/hooks#permissiondenied),它将其作为 `tool_input` 接收。390* **Hook**:要以编程方式捕获拒绝的确切输入,请添加一个 [`PermissionDenied` hook](https://code.claude.com/docs/zh-CN/hooks#permissiondenied),它将其作为 `tool_input` 接收。如果您的 hook 读取 `reason`,则其中不会有 `Auto mode:` 前缀,并且会出现诸如 `Blocked by classifier` 之类的文本,而不是 `No reason provided`。

364* **对话**:找到工具调用。如果调用显示为缩短或折叠成摘要行(例如 `Ran 3 shell commands`),请按 `Ctrl+O` 打开[会话记录查看器](https://code.claude.com/docs/zh-CN/interactive-mode.md#transcript-viewer),它会展开该调用。391* **对话**:找到工具调用。如果调用显示为缩短或折叠成摘要行(例如 `Ran 3 shell commands`),请按 `Ctrl+O` 打开[会话记录查看器](https://code.claude.com/docs/zh-CN/interactive-mode.md#transcript-viewer),它会展开该调用。

365 392 

366调用下方的文本告诉您是否有任何需要修复的内容。一行暗色的 `Not run · auto mode's check had no usable answer`,或报告分类器本身问题的文本(例如 `Auto mode could not evaluate this action`),意味着 Claude Code 在没有来自分类器的判决的情况下阻止了调用。对于 `Not run` 行,请按 `Ctrl+O` 阅读完整消息,然后参阅[自动模式无法确定操作的安全性](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)或[服务器未返回安全判决](https://code.claude.com/docs/zh-CN/errors.md#the-server-returned-no-safety-verdict)了解该怎么做。393调用下方的文本告诉您是否有任何需要修复的内容。一行暗色的 `Not run · auto mode's check had no usable answer`,或报告分类器本身问题的文本(例如 `Auto mode could not evaluate this action`),意味着 Claude Code 在没有来自分类器的判决的情况下阻止了调用。对于 `Not run` 行,请按 `Ctrl+O` 阅读完整消息,然后参阅[自动模式无法确定操作的安全性](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)或[服务器未返回安全判决](https://code.claude.com/docs/zh-CN/errors.md#the-server-returned-no-safety-verdict)了解该怎么做。

367 394 

368否则,一行显示 `Denied by auto mode classifier` 并带有 `[Production Deploy]` 或 `Blocked by classifier` 等原因意味着分类器判断调用不安全,因此从调用试图到达或执行的内容中选择修复:395否则,`Blocked by auto mode` 行意味着分类器判断调用不安全。要放行该调用,请根据 Claude 试图到达或执行的内容采取相应措施:

369 396 

370* Claude 在整个任务中需要的目标,例如包注册表、内部域或存储库主机:将其添加到 `autoMode.environment`。397* Claude 在整个任务中需要的目标,例如包注册表、内部域或存储库主机:将其添加到 `autoMode.environment`。

371* 您想从现在开始运行而无需审查的命令:添加一个 `allow` 规则。398* 您想从现在开始运行而无需审查的命令:添加一个 `allow` 规则。

Details

397* 将敏感数据发送到外部端点397* 将敏感数据发送到外部端点

398* 看起来是由 Claude 读取的内容而不是由您驱动的操作398* 看起来是由 Claude 读取的内容而不是由您驱动的操作

399 399 

400当它确实阻止了某项操作时,您会收到通知,该操作会出现在 `/permissions` 的 **Recently denied** 下,您可以在那里通过手动批准重试它。在[连续三次阻止](https://code.claude.com/docs/zh-CN/permission-modes.md#when-auto-mode-falls-back)(或总计二十次)之后,自动模式会暂停并恢复为向您询问。400当自动模式阻止某项操作时,您会收到通知,该操作会出现在 `/permissions` 的 **Recently blocked** 下,您可以在那里[批准该操作,以便 Claude 重试](https://code.claude.com/docs/zh-CN/auto-mode-config.md#review-denials)。在[连续三次阻止](https://code.claude.com/docs/zh-CN/permission-modes.md#when-auto-mode-falls-back)(或总计二十次)之后,自动模式会暂停并恢复为向您询问。

401 401 

402这些都不会取代您的确定性控制,因为它在它们*之后*运行。拒绝规则、询问规则和 `PreToolUse` hook 会在分类器看到任何内容之前生效,因此拒绝规则在自动模式中的阻止效果与在其他任何地方完全相同。沙箱仍然会限制[它所包装的 shell 命令](https://code.claude.com/docs/zh-CN/sandboxing.md#what-runs-outside-the-sandbox)。402这些都不会取代您的确定性控制,因为它在它们*之后*运行。拒绝规则、询问规则和 `PreToolUse` hook 会在分类器看到任何内容之前生效,因此拒绝规则在自动模式中的阻止效果与在其他任何地方完全相同。沙箱仍然会限制[它所包装的 shell 命令](https://code.claude.com/docs/zh-CN/sandboxing.md#what-runs-outside-the-sandbox)。

403 403 

Details

30[网关概述](https://code.claude.com/docs/zh-CN/gateways.md)涵盖网关的功能以及为什么要运行它。Claude apps gateway 是 Anthropic 自己的网关,内置于 `claude` 二进制文件中,并与每个 Claude Code 版本一起测试,因此它转发 Claude Code 发送的 `anthropic-beta` 值和请求字段,无需操作员维护单独的允许列表。部署后,它为您提供:30[网关概述](https://code.claude.com/docs/zh-CN/gateways.md)涵盖网关的功能以及为什么要运行它。Claude apps gateway 是 Anthropic 自己的网关,内置于 `claude` 二进制文件中,并与每个 Claude Code 版本一起测试,因此它转发 Claude Code 发送的 `anthropic-beta` 值和请求字段,无需操作员维护单独的允许列表。部署后,它为您提供:

31 31 

32* **凭据**:上游 API 密钥或云凭据仅存在于您的基础设施中。开发人员使用公司 SSO 进行身份验证并接收短期的持有者令牌,因此离职发生在您的 IdP 中。取消配置用户,其网关访问权限在会话生命周期内过期,默认为一小时。32* **凭据**:上游 API 密钥或云凭据仅存在于您的基础设施中。开发人员使用公司 SSO 进行身份验证并接收短期的持有者令牌,因此离职发生在您的 IdP 中。取消配置用户,其网关访问权限在会话生命周期内过期,默认为一小时。

33* **访问控制**:您的 IdP 组映射到模型允许列表和[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)策略。网关在服务器端强制执行模型访问,拒绝非授予模型的请求,并选择每个组的托管设置策略,CLI 在[托管设置层](https://code.claude.com/docs/zh-CN/settings.md#settings-precedence)应用该策略。不同的团队获得不同的模型、工具和权限,开发人员无法覆盖其策略锁定的内容。33* **访问控制**:您的 IdP 组映射到模型允许列表、[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)策略和[上游](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#send-each-team-to-its-own-upstream)。网关在服务器端强制执行模型访问,拒绝非授予模型的请求,并选择每个组的托管设置策略,CLI 在[托管设置层](https://code.claude.com/docs/zh-CN/settings.md#settings-precedence)应用该策略。不同的团队获得不同的模型、工具和权限,开发人员无法覆盖其策略锁定的内容。

34* **设置交付**:网关本身将托管设置交付给已登录的客户端,取代来自 claude.ai 管理员控制台的[服务器管理设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)。34* **设置交付**:网关本身将托管设置交付给已登录的客户端,取代来自 claude.ai 管理员控制台的[服务器管理设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)。

35* **遥测**:每个配置的目标接收[OpenTelemetry Protocol (OTLP) 指标](https://code.claude.com/docs/zh-CN/monitoring-usage.md),默认包含 token 计数、模型、用户身份和延迟,日志和跟踪作为按目标的选择加入。35* **遥测**:每个配置的目标接收[OpenTelemetry Protocol (OTLP) 指标](https://code.claude.com/docs/zh-CN/monitoring-usage.md),默认包含 token 计数、模型、用户身份和延迟,日志和跟踪作为按目标的选择加入。

36* **上游路由**:客户端向网关发送 Anthropic Messages API,网关为每个上游进行转换,无论是 Amazon Bedrock、[AWS 上的 Claude Platform](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、Google Cloud 的 Agent Platform、Microsoft Foundry 还是 Anthropic API,并在它们之间进行故障转移。您可以更改区域、提供商或故障转移顺序,而开发人员无需注意或重新配置。36* **上游路由**:客户端向网关发送 Anthropic Messages API,网关为每个上游进行转换,无论是 Amazon Bedrock、[AWS 上的 Claude Platform](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、Google Cloud 的 Agent Platform、Microsoft Foundry 还是 Anthropic API,并在它们之间进行故障转移。您可以更改区域、提供商或故障转移顺序,而开发人员无需注意或重新配置。

Details

214 214 

215### `upstreams`215### `upstreams`

216 216 

217`upstreams` 是一个有序列表。网关将推理转发到解析请求的模型的第一个上游。217`upstreams` 是一个有序列表。网关会将推理请求转发到第一个能解析所请求模型的上游,并跳过任何其 [`groups` 列表](#send-each-team-to-its-own-upstream)不包含该开发者的上游。

218 218 

219在 `5xx`、`429`、`401`、`403`、`404` 或超时时,网关故障转移到下一个上游;其他 `4xx` 不会,因为这些错误可归因于请求而不是上游。`401` 或 `403` 意味着上游拒绝了网关使用的凭据,或拒绝其访问,例如对所请求模型的访问。`404` 意味着该上游不提供请求的模型,因此列表中的后续上游仍然可以。219在 `5xx`、`429`、`401`、`403`、`404` 或超时时,网关故障转移到下一个上游;其他 `4xx` 不会,因为这些错误可归因于请求而不是上游。`401` 或 `403` 意味着上游拒绝了网关使用的凭据,或拒绝其访问,例如对所请求模型的访问。`404` 意味着该上游不提供请求的模型,因此列表中的后续上游仍然可以。

220 220 


231网关返回一个上游的错误响应或其自己的 `502`,取决于上游如何应答:231网关返回一个上游的错误响应或其自己的 `502`,取决于上游如何应答:

232 232 

233* **上游返回网关不[故障转移](#multiple-upstreams)的状态**:该上游的响应。网关不尝试进一步的上游。233* **上游返回网关不[故障转移](#multiple-upstreams)的状态**:该上游的响应。网关不尝试进一步的上游。

234* **网关尝试的每个上游都以网关[故障转移](#multiple-upstreams)的方式失败**:最后一个 `429`。当没有返回 `429` 时,网关按顺序优先选择最后一个 `401` 或 `403`、最后一个 `404` 和最后一个 `501`。当没有返回任何这些时,网关自己的 `502`,`all upstreams failed (N attempted)`,其中 N 计算 [`upstreams`](#upstreams) 中的每个条目,包括网关跳过的条目,因为它们不提供请求的模型。234* **网关尝试的每个上游都以会触发[故障转移](#multiple-upstreams)的方式失败**:返回最后一个 `429`。如果没有任何上游返回 `429`,网关按顺序优先返回最后一个 `401` 或 `403`、最后一个 `404`、最后一个 `501`。如果都没有返回这些状态,则返回网关自身的 `502`,即 `all upstreams failed (N attempted)`。N 统计您的 [`upstreams`](#upstreams) 条目(包括被跳过的条目),减去 [`groups`](#send-each-team-to-its-own-upstream) 列表不包含该开发者的条目。

235 235 

236当网关返回上游的响应时,它保持上游的状态代码。它是否保持上游的消息取决于提供商。Anthropic API 上游的错误正文不变地到达开发人员。236当网关返回上游的响应时,它保持上游的状态代码。它是否保持上游的消息取决于提供商。Anthropic API 上游的错误正文不变地到达开发人员。

237 237 


289 base_url: https://upstream-gateway.internal.example.com289 base_url: https://upstream-gateway.internal.example.com

290 auth:290 auth:

291 api_key: ${PROXY_KEY}291 api_key: ${PROXY_KEY}

292 forward_user_identity: true # 默认 false292 forward_user_identity: true # default false

293```293```

294 294 

295网关将这些标头添加到它转发到该上游的每个请求。295网关将这些标头添加到它转发到该上游的每个请求。


320upstreams:320upstreams:

321 - provider: bedrock321 - provider: bedrock

322 region: us-east-1322 region: us-east-1

323 auth: {} # 首选:AWS 默认凭据链323 auth: {} # preferred: AWS default credential chain

324 # 或显式凭据:324 # OR explicit credentials:

325 # auth:325 # auth:

326 # aws_access_key_id: ${AWS_AKID}326 # aws_access_key_id: ${AWS_AKID}

327 # aws_secret_access_key: ${AWS_SK}327 # aws_secret_access_key: ${AWS_SK}

328 # aws_session_token: ${AWS_ST}328 # aws_session_token: ${AWS_ST}

329 # 或 Bedrock API 持有者令牌:329 # OR a Bedrock API bearer token:

330 # auth:330 # auth:

331 # aws_bearer_token: ${AWS_BEARER_TOKEN}331 # aws_bearer_token: ${AWS_BEARER_TOKEN}

332 # 为 FIPS 或 VPC 端点部署覆盖 bedrock-runtime 端点:332 # Override the bedrock-runtime endpoint for FIPS or VPC-endpoint deployments:

333 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com333 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com

334```334```

335 335 


356 region: us-east-1356 region: us-east-1

357 auth: {}357 auth: {}

358 guardrail:358 guardrail:

359 id: gr-abc123 # 防护栏 ID 或完整 ARN359 id: gr-abc123 # guardrail ID or full ARN

360 version: "1" # 已发布的版本号或 DRAFT360 version: "1" # a published version number, or DRAFT

361 # 保留引号:裸 1 在启动时失败361 # keep the quotes: a bare 1 fails at boot

362```362```

363 363 

364> [!WARNING]

365>

366> 网关不支持防护栏输入标签。它不向提示词添加防护内容标签,因此 Amazon Bedrock 仅应用于标记输入的防护栏过滤器不在通过网关的流量上运行。对于哪些过滤器依赖输入标签,请参阅 Amazon Bedrock 文档中的[输入标签](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html)。

367 

368也在防护栏上授予 `bedrock:ApplyGuardrail` 给签署此上游请求的主体:网关的 AWS 主体,或使用 [`assume_role`](#bedrock-in-another-aws-account) 的 `role_arn` 中命名的角色。364也在防护栏上授予 `bedrock:ApplyGuardrail` 给签署此上游请求的主体:网关的 AWS 主体,或使用 [`assume_role`](#bedrock-in-another-aws-account) 的 `role_arn` 中命名的角色。

369 365 

370在每个 `bedrock` 上游或不在任何上游上设置 `guardrail`。网关拒绝在混合上启动,因为[故障转移](#multiple-upstreams)可能会将请求发送到没有防护栏的 Bedrock 上游。366在每个 `bedrock` 上游或不在任何上游上设置 `guardrail`。网关拒绝在混合上启动,因为[故障转移](#multiple-upstreams)可能会将请求发送到没有防护栏的 Bedrock 上游。


373 369 

374当 `/v1/messages` 请求的正文携带 `amazon-bedrock-*` 字段(如 `amazon-bedrock-guardrailConfig`)到达设置了 `guardrail` 的 Bedrock 上游时,网关应答 400 而不是转发它。370当 `/v1/messages` 请求的正文携带 `amazon-bedrock-*` 字段(如 `amazon-bedrock-guardrailConfig`)到达设置了 `guardrail` 的 Bedrock 上游时,网关应答 400 而不是转发它。

375 371 

372> [!WARNING]

373>

374> 默认情况下,网关不会向提示词添加输入标签,因此 Amazon Bedrock 仅对带标签输入应用的防护栏过滤器不会在经过网关的流量上运行。要添加标签,请设置 [`input_tagging`](#add-guardrail-input-tags)。有关哪些过滤器依赖于输入标签,请参阅 Amazon Bedrock 文档中的[输入标签](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html)。

375 

376##### 添加防护栏输入标签

377 

378要让网关添加 Amazon Bedrock 防护栏的[提示词攻击过滤器](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html)所需的输入标签,请在 `guardrail` 块中设置 `input_tagging` 并重启网关。在每个 `bedrock` 上游上设置相同的值,否则网关会拒绝启动。要求网关服务器上运行 Claude Code v2.1.316 或更高版本。不支持该键的版本的网关会在启动时以 `Unrecognized key(s) in object: 'input_tagging'` 退出。

379 

380> [!WARNING]

381>

382> 根据 [Amazon Bedrock 的文档](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html),一旦请求携带输入标签,防护栏中的每个过滤器都会停止评估未加标签的内容。在开发者使用的网关上设置 `input_tagging` 之前,请先在测试网关上试用。

383 

384`input_tagging` 接受以下值之一:

385 

386| `input_tagging` | 网关为哪些文本加标签 | 防护栏拦截提示词之后 |

387| :- | :- | :- |

388| `last_message` | 自 Claude 上次回复以来的 `user` 消息 | 在 Claude Code 中,下一个提示词可以通过,随后 Claude 会将被拦截的提示词作为对话的一部分接收 |

389| `user_messages` | `user` 消息 | 会话中后续的提示词也可能被拦截,直到开发者删除被拦截的提示词 |

390| `all_messages` | `user` 和 `assistant` 消息 | 与 `user_messages` 相同 |

391| `all_messages_and_system` | 系统提示词和每条消息,包括[对话中途的系统消息](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through) | 与 `user_messages` 相同 |

392 

393使用 `last_message` 时,如果自 Claude 上次回复以来的 `user` 消息中没有可加标签的文本,网关会改为给自该回复以来的对话中途系统消息加标签。工具调用也算作一次回复。

394 

395Amazon Bedrock 对提示词攻击过滤器的指导是[为用户输入加标签以排除系统提示词](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html)。如果您设置 `all_messages_and_system`,标记 Claude Code 自身系统提示词的过滤器可能会拦截请求。

396 

397以下示例为每条 `user` 消息中的文本加标签:

398 

399```yaml theme={null}

400upstreams:

401 - provider: bedrock

402 region: us-east-1

403 auth: {}

404 guardrail:

405 id: gr-abc123

406 version: "1"

407 input_tagging: user_messages

408```

409 

410`user` 消息中还可能包含 Claude Code 添加的文本,例如[系统提醒](https://code.claude.com/docs/zh-CN/glossary.md#system-reminder),因此请在测试网关上确认普通请求不会被拦截。

411 

412在 Anthropic 的测试中,加了标签的会话在相邻提示词之间保持了[提示缓存](https://code.claude.com/docs/zh-CN/prompt-caching.md)读取,并且标签没有增加输入 token。

413 

414##### 输入标签不覆盖的内容

415 

416没有任何 `input_tagging` 值能阻止故意将文本放在不加标签位置的开发者。不要指望防护栏评估请求的以下部分:

417 

418* **网关不加标签的内容**:您的 `input_tagging` 值未包含的消息、工具定义、工具调用输入、图像和 PDF 等。除非您设置 `all_messages_and_system`,否则系统提示词也不加标签。

419* **工具结果**:这些内容包含 Claude 的工具返回的内容,例如文件内容和网页。在 Anthropic 的测试中,无论是否加标签,字词过滤器都不会评估它们。

420 

421如果您的 AWS 账号或组织强制执行防护栏,请参阅 [Amazon Bedrock 的文档](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-enforcements.html),了解该防护栏如何处理输入标签。

422 

423##### 记录触发的防护栏过滤器

424 

425要找出是哪个 Amazon Bedrock 防护栏过滤器拦截了开发者的请求,请在 Bedrock 上游上设置 `guardrail_trace: true`,重启网关,然后让开发者重新发送该请求。接着在[审计日志](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#logs)中找到该请求的 `guardrail.trace` 事件。需要网关服务器上运行 Claude Code v2.1.314 或更高版本。更早版本的网关在发现 `guardrail_trace` 时会拒绝启动。

426 

427```yaml theme={null}

428upstreams:

429 - provider: bedrock

430 region: us-east-1

431 auth: {}

432 guardrail:

433 id: gr-abc123

434 version: "1"

435 guardrail_trace: true # default false; beside guardrail, not inside it

436```

437 

438当某个过滤器触发或防护栏的操作为 `INTERVENED` 时,网关会写入一个 `guardrail.trace` 事件,其中不包含匹配的文本。可通过 `email` 或 `sub` 查找开发者的事件。一个流式请求可能产生多个事件,其中一个的 `filters` 列表可能为空,因此请阅读具有相同 `request_id` 的所有事件:

439 

440| 字段 | 内容 |

441| - | - |

442| `request_id` | 请求的 ID |

443| `sub`、`email` | 开发者的用户 ID 和电子邮件 |

444| `upstream` | 回复来自的上游 |

445| `action` | 防护栏的操作,例如 `INTERVENED` |

446| `filters` | 触发的过滤器。当 AWS 未发送过滤器详情时,列表为空 |

447| `filters[].side` | `input` 或 `output` |

448| `filters[].guardrail` | 防护栏的 ID |

449| `filters[].policy` | Bedrock 策略和列表,例如 `contentPolicy.filters` 或 `sensitiveInformationPolicy.piiEntities` |

450| 其他 `filters[]` 字段 | 条目还可能包含 `action`、`name`、`type`、`confidence`、`filterStrength`、`score` 和 `threshold` 等字段 |

451 

452该事件不包含过滤器匹配的文本,包括 Bedrock 跟踪中的 `match` 字段。开发者不会收到 Bedrock 的跟踪数据,因为网关会从每个回复(无论是否流式)中将其删除。

453 

454如果客户端在 `/v1/messages` 请求正文中发送 `amazon-bedrock-*` 字段,网关在设置了 `guardrail_trace` 的上游上会返回 400。

455 

376##### 另一个 AWS 帐户中的 Bedrock456##### 另一个 AWS 帐户中的 Bedrock

377 457 

378在 Bedrock 上游上设置 `assume_role`,网关仅使用其自己的 AWS 身份来调用您命名的角色上的 `sts:AssumeRole`,该角色可以在与网关不同的 AWS 帐户中。该上游的每个 Bedrock 请求都使用 STS 返回的一小时凭据签署,因此没有长期访问密钥跨帐户。458在 Bedrock 上游上设置 `assume_role`,网关仅使用其自己的 AWS 身份来调用您命名的角色上的 `sts:AssumeRole`,该角色可以在与网关不同的 AWS 帐户中。该上游的每个 Bedrock 请求都使用 STS 返回的一小时凭据签署,因此没有长期访问密钥跨帐户。


384 - name: bedrock-isolated464 - name: bedrock-isolated

385 provider: bedrock465 provider: bedrock

386 region: us-east-1466 region: us-east-1

387 auth: {} # 网关自己的角色:它仅调用 STS467 auth: {} # the gateway's own role: it only calls STS

388 assume_role:468 assume_role:

389 role_arn: arn:aws:iam::222222222222:role/claude-gateway-bedrock469 role_arn: arn:aws:iam::222222222222:role/claude-gateway-bedrock

390 # external_id: ${BEDROCK_ROLE_EXTERNAL_ID} # 当角色的信任策略需要时470 # external_id: ${BEDROCK_ROLE_EXTERNAL_ID} # when the role's trust policy requires one

391```471```

392 472 

393`assume_role` 块采用三个键:473`assume_role` 块采用三个键:


415* 如果 STS 拒绝或无法到达,网关不使用上游自己的凭据发送请求。它记录 STS 错误和要检查的内容,然后尝试您列出的下一个上游。[上游错误消息](#upstream-error-messages)覆盖当没有上游成功时客户端接收的内容。没有 `assume_role` 的后续上游将使用其自己的凭据提供请求,因此仅在这是您想要的情况下列出一个。495* 如果 STS 拒绝或无法到达,网关不使用上游自己的凭据发送请求。它记录 STS 错误和要检查的内容,然后尝试您列出的下一个上游。[上游错误消息](#upstream-error-messages)覆盖当没有上游成功时客户端接收的内容。没有 `assume_role` 的后续上游将使用其自己的凭据提供请求,因此仅在这是您想要的情况下列出一个。

416* 网关调用区域 STS 端点 `sts.<region>.amazonaws.com`,其网络必须到达。对于 FIPS 端点,在网关的环境中设置 `AWS_USE_FIPS_ENDPOINT=true` 而不是在 AWS 配置文件中的 `use_fips_endpoint`。496* 网关调用区域 STS 端点 `sts.<region>.amazonaws.com`,其网络必须到达。对于 FIPS 端点,在网关的环境中设置 `AWS_USE_FIPS_ENDPOINT=true` 而不是在 AWS 配置文件中的 `use_fips_endpoint`。

417* `assume_role` 仅适用于 `provider: bedrock` 并需要 SigV4 源凭据:当它在 `aws_bearer_token` 旁边设置时,网关拒绝启动。497* `assume_role` 仅适用于 `provider: bedrock` 并需要 SigV4 源凭据:当它在 `aws_bearer_token` 旁边设置时,网关拒绝启动。

418* 网关允许的每个开发人员都可以使用此上游;[`managed`](#managed) 控制哪些开发人员可能使用哪些模型。要保持通过角色提供的模型也不从另一个帐户提供,给它一个自定义 id,其 `upstream_model` 映射仅具有此上游的名称。对于这样的 id,网关跳过每个其他上游,因此请求和放弃请求的 token 计数都无法故障转移到另一个帐户。对内置模型名称的请求仍可能[到达此上游](#multiple-upstreams),网关会使用同一角色对其签名。除非其帐户也应该提供这些模型,否则请将此上游列在最后。498* 如果没有 [`groups` 列表](#send-each-team-to-its-own-upstream),网关允许的每位开发者都可以使用此上游。要限制开发者可以使用的模型,请在 [`managed`](#managed) 策略中设置 `availableModels`。

499* 要防止通过该角色提供的模型也从其他账号提供,请为其指定一个自定义 id,使其 `upstream_model` 映射仅包含此上游的名称。对于这样的 id,网关会跳过所有其他上游,因此无论是请求本身还是针对被中止请求的 token 计数,都不会故障转移到其他账号。

500* 对内置模型名称的请求仍可能[到达此上游](#multiple-upstreams),网关会使用同一角色对其签名。除非该账号也应提供这些模型,否则请将此上游列在最后。

419 501 

420此示例给一个模型一个自定义 id,仅隔离上游提供:502此示例给一个模型一个自定义 id,仅隔离上游提供:

421 503 

422```yaml theme={null}504```yaml theme={null}

423models:505models:

424 - id: restricted-claude-opus-4-8 # 自定义 id,不是内置模型名称506 - id: restricted-claude-opus-4-8 # a custom id, not a built-in model name

425 upstream_model:507 upstream_model:

426 bedrock-isolated: us.anthropic.claude-opus-4-8 # 唯一提供它的上游508 bedrock-isolated: us.anthropic.claude-opus-4-8 # the only upstream that serves it

427```509```

428 510 

429##### 每开发人员 AWS 成本属性511##### 每开发人员 AWS 成本属性


436upstreams:518upstreams:

437 - provider: bedrock519 - provider: bedrock

438 region: us-east-1520 region: us-east-1

439 auth: {} # 网关自己的角色:它仅调用 STS521 auth: {} # the gateway's own role: it only calls STS

440 assume_role:522 assume_role:

441 role_arn: arn:aws:iam::123456789012:role/claude-gateway-bedrock-user523 role_arn: arn:aws:iam::123456789012:role/claude-gateway-bedrock-user

442 session_name: email # 或 sub524 session_name: email # or sub

443```525```

444 526 

445`session_name` 选择哪个已验证的声明成为 AWS `RoleSessionName`:`email` 或 `sub`。网关将除 ASCII 字母、数字和 `_+,.@-` 之外的任何字符写成 `=XX` 十六进制(按 UTF-8 字节),并将长于 64 字符的结果缩短为前缀加哈希,因此每个开发人员的会话名称保持有效且唯一。来自其令牌缺少声明的开发人员的请求不通过此上游发送,操作员日志说切换到 `sub` 或设置 [`oidc.email_claim`](#oidc)。527`session_name` 选择哪个已验证的声明成为 AWS `RoleSessionName`:`email` 或 `sub`。网关将除 ASCII 字母、数字和 `_+,.@-` 之外的任何字符写成 `=XX` 十六进制(按 UTF-8 字节),并将长于 64 字符的结果缩短为前缀加哈希,因此每个开发人员的会话名称保持有效且唯一。来自其令牌缺少声明的开发人员的请求不通过此上游发送,操作员日志说切换到 `sub` 或设置 [`oidc.email_claim`](#oidc)。


460upstreams:542upstreams:

461 - provider: mantle543 - provider: mantle

462 region: us-east-1544 region: us-east-1

463 models: [claude-opus-4-7, claude-haiku-4-5] # 必需545 models: [claude-opus-4-7, claude-haiku-4-5] # required

464 auth: {} # AWS 默认凭据链546 auth: {} # AWS default credential chain

465 - provider: bedrock547 - provider: bedrock

466 region: us-east-1548 region: us-east-1

467 auth: {}549 auth: {}


499 region: us-east-1581 region: us-east-1

500 workspace_id: wrkspc_...582 workspace_id: wrkspc_...

501 auth:583 auth:

502 api_key: ${ANTHROPIC_AWS_API_KEY} # 作为 x-api-key 发送584 api_key: ${ANTHROPIC_AWS_API_KEY} # sent as x-api-key

503 # 或通过 AWS 默认凭据链的 SigV4:585 # OR SigV4 via the AWS default credential chain:

504 # auth: {}586 # auth: {}

505 # 或显式 SigV4 凭据:587 # OR explicit SigV4 credentials:

506 # auth:588 # auth:

507 # aws_access_key_id: ${AWS_ACCESS_KEY_ID}589 # aws_access_key_id: ${AWS_ACCESS_KEY_ID}

508 # aws_secret_access_key: ${AWS_SECRET_ACCESS_KEY}590 # aws_secret_access_key: ${AWS_SECRET_ACCESS_KEY}

509 # 覆盖派生的端点:591 # Override the derived endpoint:

510 # base_url: https://aws-external-anthropic.us-east-1.api.aws592 # base_url: https://aws-external-anthropic.us-east-1.api.aws

511```593```

512 594 


531 - provider: vertex613 - provider: vertex

532 region: us-east5614 region: us-east5

533 project_id: example-prod615 project_id: example-prod

534 auth: {} # 首选:应用默认凭据616 auth: {} # preferred: Application Default Credentials

535 # 或服务帐户密钥文件:617 # OR a service account key file:

536 # auth: { service_account_json: /secrets/sa.json }618 # auth: { service_account_json: /secrets/sa.json }

537 # 为私有服务连接覆盖 aiplatform 端点:619 # Override the aiplatform endpoint for Private Service Connect:

538 # base_url: https://us-east5-aiplatform.p.googleapis.com620 # base_url: https://us-east5-aiplatform.p.googleapis.com

539```621```

540 622 


558upstreams:640upstreams:

559 - provider: foundry641 - provider: foundry

560 resource: example-foundry # https://example-foundry.services.ai.azure.com642 resource: example-foundry # https://example-foundry.services.ai.azure.com

561 auth: { use_azure_ad: true } # 首选:DefaultAzureCredential / 托管身份643 auth: { use_azure_ad: true } # preferred: DefaultAzureCredential / Managed Identity

562 # 或 API 密钥:644 # OR an API key:

563 # auth:645 # auth:

564 # api_key: ${FOUNDRY_API_KEY}646 # api_key: ${FOUNDRY_API_KEY}

565```647```


627 709 

628`429` 是按上游容量,因此预配吞吐量 (PT) 耗尽故障转移到按需。如果您在上游上设置 [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run),对携带开发人员电子邮件的请求的 `429` 是按用户拒绝而不是故障转移。710`429` 是按上游容量,因此预配吞吐量 (PT) 耗尽故障转移到按需。如果您在上游上设置 [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run),对携带开发人员电子邮件的请求的 `429` 是按用户拒绝而不是故障转移。

629 711 

630每个请求从第一个上游开始。请求仅在它前面的每个上游都失败或不提供请求的模型时才到达后续上游。712仅在以下情况下,请求才会越过某个上游:

713 

714* 该上游已失败

715* 该上游不提供所请求的模型

716* 该上游的 [`groups` 列表](#send-each-team-to-its-own-upstream)不包含该开发者

631 717 

632网关不保持失败上游的记录,因此当上游关闭时,到达它的每个请求仍然尝试它并等待它失败后再继续。718网关不保持失败上游的记录,因此当上游关闭时,到达它的每个请求仍然尝试它并等待它失败后再继续。

633 719 


680| - | - |766| - | - |

681| 不同区域 | 每个区域一个 Amazon Bedrock 上游,每个都有自己的 `region:`。使用 [`auto_include_builtin_models: true`](#models) 跨区域推理配置文件自动路由;对于区域固定部署,使用 `models:` 块。 |767| 不同区域 | 每个区域一个 Amazon Bedrock 上游,每个都有自己的 `region:`。使用 [`auto_include_builtin_models: true`](#models) 跨区域推理配置文件自动路由;对于区域固定部署,使用 `models:` 块。 |

682| 不同帐户 | 每个帐户一个 Amazon Bedrock 上游。默认链 (`auth: {}`) 使用 pod 的身份;对于第二个帐户,添加 [`assume_role`](#bedrock-in-another-aws-account) 以使用短期凭据到达它,或在 `auth:` 中设置显式凭据或持有者令牌。 |768| 不同帐户 | 每个帐户一个 Amazon Bedrock 上游。默认链 (`auth: {}`) 使用 pod 的身份;对于第二个帐户,添加 [`assume_role`](#bedrock-in-another-aws-account) 以使用短期凭据到达它,或在 `auth:` 中设置显式凭据或持有者令牌。 |

769| 不同团队 | 为每个团队的上游提供一个 `groups` 列表,使只有这些 IdP 组中的开发者才能访问它。请参阅[将每个团队发送到各自的上游](#send-each-team-to-its-own-upstream)。 |

683| 预配吞吐量 | 将模型映射到该上游名称的 `models:` 中的预配吞吐量 ARN。其他上游保持按需 ID,因此 PT 容量在故障转移前耗尽。 |770| 预配吞吐量 | 将模型映射到该上游名称的 `models:` 中的预配吞吐量 ARN。其他上游保持按需 ID,因此 PT 容量在故障转移前耗尽。 |

684| VPC / FIPS 端点 | 在上游上设置 `base_url:` 到您的 VPC 端点或 FIPS 端点 URL |771| VPC / FIPS 端点 | 在上游上设置 `base_url:` 到您的 VPC 端点或 FIPS 端点 URL |

685| 模型范围路由 | 仅自定义模型 `id`(即不是内置 Claude 模型的 id)会跳过其 `upstream_model:` 映射中不存在的上游。`mantle` 上游仅针对其 [`models` 字段](#amazon-bedrock-mantle-endpoint)中列出的模型被尝试。在其他每个上游上,网关按顺序尝试内置模型,并在映射没有条目时使用提供商的默认 ID,因此对于内置模型,映射改变上游接收的 ID 而不是它是否被尝试;拒绝 ID 的上游遵循与任何其他上游错误相同的[故障转移规则](#upstreams)。 |772| 按模型路由 | 自定义模型 `id`(即非内置 Claude 模型的 ID)会跳过其 `upstream_model:` 映射中未列出的上游。带有 `models` 列表的上游([`mantle` 上游](#amazon-bedrock-mantle-endpoint)必须有此列表)仅会针对这些模型进行尝试。 |

773| 内置模型路由 | 对于没有 `models` 或 `groups` 列表的上游,网关会按顺序尝试内置模型,并在 `upstream_model:` 映射中没有条目时使用提供商的默认 ID。对于提供商有默认 ID 的内置模型,该映射改变的是上游接收的 ID,而不是是否尝试该上游。拒绝该 ID 的上游遵循与其他任何上游错误相同的[故障转移规则](#upstreams)。 |

686 774 

687在云提供商之间或直接 Anthropic API 之间故障转移改变哪个协议、地理位置和其他条款控制请求。775在云提供商之间或直接 Anthropic API 之间故障转移改变哪个协议、地理位置和其他条款控制请求。

688 776 

689CLI 对网关应用相同的功能门控,无论哪个上游提供给定请求,因此默认情况下故障转移不会发送上游会拒绝的正文字段。如果您在策略中设置了[一小时缓存 TTL](#one-hour-prompt-cache),它会发送到列表中的每个上游,因此仅当所有上游都接受它时才设置。777CLI 对网关应用相同的功能门控,无论哪个上游提供给定请求,因此默认情况下故障转移不会发送上游会拒绝的正文字段。如果您在策略中设置了[一小时缓存 TTL](#one-hour-prompt-cache),它会发送到列表中的每个上游,因此仅当所有上游都接受它时才设置。

690 778 

779#### 将每个团队发送到各自的上游

780 

781要将每个团队的请求发送到其各自的 AWS 账户或 Google Cloud 项目,请为每个团队列出一个上游,并为每个上游提供一个 `groups` 列表。只有所列 IdP 组中的开发者才能访问该上游,无论是首次尝试还是[故障转移](#multiple-upstreams)。所有提供商都支持 `groups`。网关服务器上需要 Claude Code v2.1.314 或更高版本。

782 

783以下示例为 `payments-eng` 和 `search-eng` 组各分配一个 AWS 账户,并添加一个没有 `groups` 列表、所有开发者都可使用的上游:

784 

785```yaml theme={null}

786upstreams:

787 - name: bedrock-payments

788 provider: bedrock

789 region: us-east-1

790 auth: {}

791 assume_role:

792 role_arn: arn:aws:iam::111111111111:role/claude-gateway-bedrock

793 groups: [payments-eng]

794 - name: bedrock-search

795 provider: bedrock

796 region: us-east-1

797 auth: {}

798 assume_role:

799 role_arn: arn:aws:iam::222222222222:role/claude-gateway-bedrock

800 groups: [search-eng]

801 - name: bedrock-shared # no groups: open to everyone, so listed last

802 provider: bedrock

803 region: us-east-1

804 auth: {}

805```

806 

807使用该示例配置时,每个开发者的请求从其所在行的第一个上游开始,并在故障转移时移至下一个:

808 

809| 开发者所属组 | 上游(按顺序) |

810| - | - |

811| `payments-eng` | `bedrock-payments`,然后 `bedrock-shared` |

812| `search-eng` | `bedrock-search`,然后 `bedrock-shared` |

813| `payments-eng` 和 `search-eng` | `bedrock-payments`,然后 `bedrock-search`,然后 `bedrock-shared` |

814| 均不属于 | `bedrock-shared` |

815 

816当团队的上游以 `403` 拒绝所请求的模型时,网关会尝试该团队所在行中提供该模型的下一个上游。要将团队限定在一个上游,请为每个上游提供 `groups` 列表,并确保没有其他上游列出该团队开发者所属的组。这样该团队将没有故障转移,而不属于任何所列组的开发者发出的请求将[以 `400` 失败](#what-happens-when-a-developer-is-in-no-listed-group)。

817 

818要让每个开发者到达您预期的上游,请编写完全匹配的条目,并将开放的上游放在最后:

819 

820* **条目**:按照您的 IdP 在 [groups 声明](#oidc)中发送的形式准确编写每个组,[`match.groups`](#managed) 也会读取该声明。当网关发现空列表或空条目时会拒绝启动。网关不会根据您的 IdP 检查条目,因此不匹配任何人的条目不会引发警告。

821* **顺序**:将没有 `groups` 列表的上游放在最后。它为所有人提供服务,因此如果排在前面,它会抢在团队自己的上游之前接收该团队的请求。

822 

823> [!WARNING]

824>

825> 早于 v2.1.314 的网关在发现 `groups` 时会拒绝启动,因此请在添加它之前升级每个副本。

826>

827> 回滚之前,请删除每个带有 `groups` 列表的上游,以及每个引用该上游的 `upstream_model` 键或定价覆盖,并至少保留一个上游。如果只删除 `groups` 键,该上游将对所有开发者开放。仍引用已删除上游的键或覆盖会导致网关无法启动,并显示 `references unknown upstream`。

828 

829##### 开发者不属于任何所列组时会发生什么

830 

831如果每个上游都有 `groups` 列表,不属于其中任何组的开发者会看到以下错误,并且网关不会联系任何提供商:

832 

833```text theme={null}

834API Error: 400 you aren't in a group that can use this gateway. Ask your administrator to add you to one

835```

836 

837请在您的 IdP 中将该开发者添加到所列的某个组,或添加一个没有 `groups` 列表的上游。

838 

839网关会在每次令牌刷新时重新读取开发者所属的组。如果您的 IdP 在刷新时未包含组信息,该开发者将不属于任何组:

840 

841* **已设置 [`oidc.allowed_groups`](#oidc)**:网关拒绝该刷新,会话结束

842* **否则,如果某个上游没有 `groups` 列表**:该开发者的请求会转到该上游

843* **否则,如果每个上游都有 `groups` 列表**:该开发者的请求会以上述错误失败

844 

845如果您的 IdP 的 userinfo 端点返回 groups 声明,且未设置 `oidc.google_groups`,请将 [`oidc.userinfo_fallback`](#oidc) 设置为 `true`,以便从该端点补充组信息。

846 

691## 可选部分847## 可选部分

692 848 

693### `admin`849### `admin`


782 938 

783#### 将费率发送到已登录的客户端939#### 将费率发送到已登录的客户端

784 940 

785在网关服务器上使用 v2.1.268 或更高版本时,网关还会将 `pricing` 中的费率作为 [`modelPricing`](https://code.claude.com/docs/zh-CN/settings-reference#modelpricing) 托管设置放入其提供的 [`managed`](#managed) 策略中。随后,被策略匹配的开发者会在 `/usage`、状态栏和 OpenTelemetry 中看到为每个模型 ID 提供服务的第一个上游的 `pricing` 费率。未匹配任何策略的开发者不会收到托管设置,因此其数据保持标价。客户端在 Claude Code v2.1.242 或更高版本中应用该设置。941在网关服务器上使用 v2.1.268 或更高版本时,网关还会将 `pricing` 中的费率作为 [`modelPricing`](https://code.claude.com/docs/zh-CN/settings-reference#modelpricing) 托管设置,放入其提供的 [`managed`](#managed) 策略中。

942 

943被某个策略匹配的开发者随后会在 `/usage`、状态栏和 OpenTelemetry 中看到 `pricing` 费率。未匹配任何策略的开发者不会收到托管设置,因此其数据保持按标价计算。客户端在 Claude Code v2.1.242 或更高版本中应用此设置。

786 944 

787* 网关添加的内容:除非策略的 `cli` 块已设置 `modelPricing`,否则网关会添加 `multiplier`,并针对客户端可以请求的每个模型 ID,添加为该 ID 提供服务的第一个上游的覆盖行。仅由故障转移上游收取的费率保留在网关上。945* 网关添加的内容:除非策略的 `cli` 块已设置 `modelPricing`,否则网关会添加 `multiplier`,并针对客户端可以请求的每个模型 ID,添加为该 ID 提供服务的第一个上游的覆盖行。仅由故障转移上游收取的费率保留在网关上。

946* 带有 [`groups` 列表](#send-each-team-to-its-own-upstream)的上游:当它是为某个模型 ID 提供服务的第一个上游时,网关不会为该 ID 添加行。开发者随后会看到 Claude Code 自己为该 ID 设定的费率(当 Claude Code 识别该 ID 时,即该模型的标准费率)乘以 `multiplier`。

788* 让某个策略退出:在该策略的 `cli` 块中将 `modelPricing` 设置为 `{}`,其开发者将保持标价。947* 让某个策略退出:在该策略的 `cli` 块中将 `modelPricing` 设置为 `{}`,其开发者将保持标价。

789* 保留策略自身的费率:如果策略的 `cli` 块使用自己的 `multiplier` 或 `overrides` 设置了 `modelPricing`,则该 `modelPricing` 会完整保留,网关不会向其中添加自己的任何费率。948* 保留策略自身的费率:如果策略的 `cli` 块使用自己的 `multiplier` 或 `overrides` 设置了 `modelPricing`,则该 `modelPricing` 会完整保留,网关不会向其中添加自己的任何费率。

790 949 


808 967 

809### `managed`968### `managed`

810 969 

811`managed` 块定义基于 IdP 组或电子邮件域的基于角色的访问策略。策略按顺序评估;选中第一个匹配项,然后将其合并到 `match: {}` 兜底基础层上。这些策略按用户在 `GET /managed/settings` 提供,并使用 ETag/304 缓存。970`managed` 块定义基于 IdP 组或电子邮件域的基于角色的访问策略。策略按顺序评估;默认情况下选择第一个匹配项,然后将其合并到 `match: {}` 兜底基础层上。匹配两个角色策略的用户只会获得第一个,因此除非您[应用所有匹配的策略](#apply-every-matching-policy),否则第二个策略的拒绝规则不会生效。策略按用户在 `GET /managed/settings` 提供,并使用 ETag/304 缓存。

812 971 

813```yaml theme={null}972```yaml theme={null}

814managed:973managed:


849 1008 

850未匹配任何策略的已通过身份验证的用户将获得网关的默认值,即目录中的所有模型且没有托管设置。如果您希望有一个确定的默认策略,请在最后添加一个 `match: {}` 兜底策略。1009未匹配任何策略的已通过身份验证的用户将获得网关的默认值,即目录中的所有模型且没有托管设置。如果您希望有一个确定的默认策略,请在最后添加一个 `match: {}` 兜底策略。

851 1010 

1011请将组织范围的拒绝规则放在 `match: {}` 策略中,因为组策略的规则仅在用户的令牌携带该组时才适用。

1012 

852> [!NOTE]1013> [!NOTE]

853>1014>

854> 网关本身不保存用户目录。它根据用户的 IdP 令牌对每个请求进行授权,从令牌的 `groups` 声明中读取组成员身份,并据此评估策略。没有可枚举的名单,也没有需要预先创建的账户,因此也没有 SCIM 端点,因为没有任何内容可供 SCIM 同步。1015> 网关本身不保存用户目录。它根据用户的 IdP 令牌对每个请求进行授权,从令牌的 `groups` 声明中读取组成员身份,并据此评估策略。没有可枚举的名单,也没有需要预先创建的账户,因此也没有 SCIM 端点,因为没有任何内容可供 SCIM 同步。


862>1023>

863> Claude Desktop 遵循[其自身的时间安排](#when-a-policy-change-reaches-claude-desktop)。1024> Claude Desktop 遵循[其自身的时间安排](#when-a-policy-change-reaches-claude-desktop)。

864 1025 

1026#### 应用所有匹配的策略

1027 

1028匹配多个角色策略的用户只会获得第一个,除非您在 `policies` 旁边设置 `policy_mode: layered`。使用 `layered` 时,与用户匹配的每个策略都会生效,直到第一个 `match: {}` 策略为止。

1029 

1030`policy_mode` 要求网关服务器上的 Claude Code 为 v2.1.316 或更高版本。不支持该键的版本的网关在发现该键时会拒绝启动。请在添加该键之前升级每个副本,并在回滚到更早版本之前删除该键。此示例中,一个组失去 `WebFetch`,另一个组获得 Opus:

1031 

1032```yaml theme={null}

1033managed:

1034 policy_mode: layered

1035 policies:

1036 - match: { groups: [no-web] }

1037 cli:

1038 permissions: { deny: ["WebFetch"] }

1039 - match: { groups: [opus-users] }

1040 cli:

1041 availableModels: [opus, sonnet]

1042 - match: {}

1043 cli:

1044 availableModels: [sonnet]

1045 enforceAvailableModels: true

1046```

1047 

1048下表显示同时属于 `no-web` 和 `opus-users` 的用户在默认的 `first_match` 和 `layered` 下分别收到的内容。

1049 

1050| 设置 | `first_match` | `layered` |

1051| - | - | - |

1052| `availableModels` | `sonnet` | `opus`、`sonnet` |

1053| `enforceAvailableModels` | `true` | `true` |

1054| `permissions.deny` | `WebFetch` | `WebFetch` |

1055 

1056网关按照与基础层相同的[合并规则](#managed),将每个匹配的策略合并到列在其下方的策略上:

1057 

1058* **允许列表、单值以及 `sandbox` 等块**:每一项完整地取自设置了它的、列在最前面的匹配策略,因此两个组的 `availableModels` 列表不会叠加。

1059* **拒绝列表和 hook 数组**:这些在所有匹配的策略之间叠加,因此属于两个组的用户会获得两个组的拒绝规则。

1060* **`env`、`modelOverrides` 和 `skillOverrides`**:条目按名称合并,由设置了该名称的、列在最前面的匹配策略提供其值。

1061* **`desktop` 键**:这些按照[基础 `desktop` 块的规则](#how-a-role-policy-inherits-the-base-desktop-block)合并。

1062 

1063> [!WARNING]

1064>

1065> 多个策略叠加后的规则可能比其中任何一个单独给出的规则更宽松。例如,`match: {}` 策略设置了 `sandbox.enabled: true`,一个组的策略设置了 `permissions.allow: ["Bash"]`,另一个组的策略设置了 `sandbox.enabled: false`。同时属于两个组的用户将获得允许 `Bash` 且关闭沙箱的设置。这种情况下,请将允许 `Bash` 的策略列在最前面,并将 `match: {}` 策略的整个 `sandbox` 块复制到其中。

1066 

1067使用 `layered` 时,网关会因某些设置而拒绝启动,包括以下设置:

1068 

1069* **`!` 模式**:任何策略(包括 `match: {}` 策略)的 `permissions.deny` 或 `permissions.ask` 列表中,`Read` 或 `Edit` 规则里的 [`!` 否定](https://code.claude.com/docs/zh-CN/permissions#special-characters-and-negation)

1070* **兜底策略之外对 hook 的限制**:除 `match: {}` 以外的任何策略中的 `disableAllHooks`、`allowedHttpHookUrls` 或 `httpHookAllowedEnvVars`

1071 

865#### 让会话在策略允许的模型上启动1072#### 让会话在策略允许的模型上启动

866 1073 

867如果 `availableModels` 未包含 Claude Code 的默认模型,会话将收到 `400` 响应,直到开发者选择一个列出的模型(例如使用 `/model`)。在网关会话中,默认模型是 `opus` 别名解析到的 Opus 模型,而单独使用 `availableModels` 不会改变它。1074如果 `availableModels` 未包含 Claude Code 的默认模型,会话将收到 `400` 响应,直到开发者选择一个列出的模型(例如使用 `/model`)。在网关会话中,默认模型是 `opus` 别名解析到的 Opus 模型,而单独使用 `availableModels` 不会改变它。

Details

169 * `access.public_client` 携带每个进程从公共地址到达的第一个请求的客户端 IP,而 `access_control.allow_cidrs` 为空。网关照常提供请求;该事件表示网关可能可从公共互联网访问。请参阅 [`access_control` 参考](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#http-tuning) 了解什么被视为公共以及推荐的允许列表。169 * `access.public_client` 携带每个进程从公共地址到达的第一个请求的客户端 IP,而 `access_control.allow_cidrs` 为空。网关照常提供请求;该事件表示网关可能可从公共互联网访问。请参阅 [`access_control` 参考](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#http-tuning) 了解什么被视为公共以及推荐的允许列表。

170 * `inference` 记录哪个上游提供了请求以及响应状态170 * `inference` 记录哪个上游提供了请求以及响应状态

171 * `desktop_bootstrap.denied` 记录被拒绝的 Claude Desktop bootstrap 获取,包含原因(`not_configured`、`policy_not_opted_in` 或 `no_policy_matched`)和用户的身份171 * `desktop_bootstrap.denied` 记录被拒绝的 Claude Desktop bootstrap 获取,包含原因(`not_configured`、`policy_not_opted_in` 或 `no_policy_matched`)和用户的身份

172 * `guardrail.trace` 记录[触发了哪个过滤器](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#log-which-guardrail-filter-fired),不包含匹配的文本

172 * `admin.denied` 记录被拒绝的管理员 API 身份验证尝试,包括客户端 IP、方法、路径和原因,不包括呈现的密钥材料:当呈现了 `x-api-key` 但与配置的密钥不匹配时为 `invalid_key`,当仅呈现了 `Authorization` 标头且其未验证为 `admin.admin_groups` 中的网关会话时为 `bearer_rejected`,或当两个标头都未呈现时为 `no_credentials`173 * `admin.denied` 记录被拒绝的管理员 API 身份验证尝试,包括客户端 IP、方法、路径和原因,不包括呈现的密钥材料:当呈现了 `x-api-key` 但与配置的密钥不匹配时为 `invalid_key`,当仅呈现了 `Authorization` 标头且其未验证为 `admin.admin_groups` 中的网关会话时为 `bearer_rejected`,或当两个标头都未呈现时为 `no_credentials`

173* **运维日志**:人类可读的 `[gateway]` 前缀行,用于启动、警告和上游错误。`CLAUDE_GATEWAY_LOG_LEVEL` 环境变量控制详细程度,接受 `debug`、`info`、`warn` 或 `error`,默认为 `info`。在 `debug` 时,每次登录和刷新也记录 id\_token 中声明的名称(不是值),加上当 `userinfo_fallback` 提供任何时 userinfo 声明的名称,因此您可以诊断 `email_claim` 和 `groups_claim` 设置而不记录 PII。它不影响审计事件,这些事件总是被发出。174* **运维日志**:人类可读的 `[gateway]` 前缀行,用于启动、警告和上游错误。`CLAUDE_GATEWAY_LOG_LEVEL` 环境变量控制详细程度,接受 `debug`、`info`、`warn` 或 `error`,默认为 `info`。在 `debug` 时,每次登录和刷新也记录 id\_token 中声明的名称(不是值),加上当 `userinfo_fallback` 提供任何时 userinfo 声明的名称,因此您可以诊断 `email_claim` 和 `groups_claim` 设置而不记录 PII。它不影响审计事件,这些事件总是被发出。

174 175 


311 312 

312迁移是仅追加的,因此回滚到知道较少迁移的先前二进制文件是安全的;它忽略额外的行。回滚也重新验证 YAML 针对较旧二进制文件的架构,因此采用由较新版本引入的密钥的配置在较旧版本上启动失败。在回滚前移除新密钥。313迁移是仅追加的,因此回滚到知道较少迁移的先前二进制文件是安全的;它忽略额外的行。回滚也重新验证 YAML 针对较旧二进制文件的架构,因此采用由较新版本引入的密钥的配置在较旧版本上启动失败。在回滚前移除新密钥。

313 314 

315> [!WARNING]

316>

317> 仅从上游中移除 `groups` 键会使其对每个开发者开放。请参阅[回滚前需要移除的内容](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#roll-back-a-gateway-that-uses-groups)。

318 

314因为您在自己的镜像中固定网关的版本,新 Claude Code 版本中的修复,包括安全修复,仅在您更新固定并重新部署时才到达您的部署。在您用于持有生产凭证的其他服务的相同修补周期中包括网关。319因为您在自己的镜像中固定网关的版本,新 Claude Code 版本中的修复,包括安全修复,仅在您更新固定并重新部署时才到达您的部署。在您用于持有生产凭证的其他服务的相同修补周期中包括网关。

315 320 

316## 安全321## 安全


422| 在峰值负载下,响应开始缓慢或似乎挂起,或在上游健康时失败,显示 502 `all upstreams failed` | 副本打开的请求比它一次发送到上游的请求多,所以额外的请求在网关内等待。在 `provider: anthropic` 上游上,等待时间超过 `timeouts.upstream_ttfb_ms` 的请求放弃该上游,当没有后续上游提供服务时会产生 502。日志显示包含 `client requests are open` 的警告。 | 添加副本,或提高每个副本上的限制。请参阅[并发上游请求](#concurrent-upstream-requests)。 |427| 在峰值负载下,响应开始缓慢或似乎挂起,或在上游健康时失败,显示 502 `all upstreams failed` | 副本打开的请求比它一次发送到上游的请求多,所以额外的请求在网关内等待。在 `provider: anthropic` 上游上,等待时间超过 `timeouts.upstream_ttfb_ms` 的请求放弃该上游,当没有后续上游提供服务时会产生 502。日志显示包含 `client requests are open` 的警告。 | 添加副本,或提高每个副本上的限制。请参阅[并发上游请求](#concurrent-upstream-requests)。 |

423| 在 `provider: anthropic` 以外的上游上,包含较长思考停顿的轮次失败。网关前面的代理记录了一个保持打开约 12.5 分钟的请求,随后是一连串 `504` 错误 | Claude Code 结束了一个已传送首个响应事件、此后仅携带 keepalive ping 的流。它以非流式方式重新发送该请求,而每个回复所需的时间都超过了代理的超时时间。 | 为您的开发者提高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`。请参阅[长时间思考导致代理超时](#long-thinking-ends-in-proxy-timeouts)。 |428| 在 `provider: anthropic` 以外的上游上,包含较长思考停顿的轮次失败。网关前面的代理记录了一个保持打开约 12.5 分钟的请求,随后是一连串 `504` 错误 | Claude Code 结束了一个已传送首个响应事件、此后仅携带 keepalive ping 的流。它以非流式方式重新发送该请求,而每个回复所需的时间都超过了代理的超时时间。 | 为您的开发者提高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`。请参阅[长时间思考导致代理超时](#long-thinking-ends-in-proxy-timeouts)。 |

424| 在 `provider: anthropic` 上,包含较长思考停顿的轮次失败。代理记录了一个保持打开约 20 分钟的请求,随后是 `502` 或 `504` 错误 | Claude Code 结束了一个已传送首个响应事件、此后仅携带 keepalive ping 的流。它以非流式方式重新发送该请求,而每个回复所需的时间都超过了网关对上游的等待时间 `timeouts.upstream_ttfb_ms` 或代理的超时时间。 | 为您的开发者提高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`。请参阅[Anthropic API 上游上的长时间思考](#long-thinking-on-an-anthropic-api-upstream)。 |429| 在 `provider: anthropic` 上,包含较长思考停顿的轮次失败。代理记录了一个保持打开约 20 分钟的请求,随后是 `502` 或 `504` 错误 | Claude Code 结束了一个已传送首个响应事件、此后仅携带 keepalive ping 的流。它以非流式方式重新发送该请求,而每个回复所需的时间都超过了网关对上游的等待时间 `timeouts.upstream_ttfb_ms` 或代理的超时时间。 | 为您的开发者提高 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`。请参阅[Anthropic API 上游上的长时间思考](#long-thinking-on-an-anthropic-api-upstream)。 |

430| 开发者的请求失败,显示 `API Error: 400 you aren't in a group that can use this gateway. Ask your administrator to add you to one` | 每个上游都有 [`groups` 列表](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#what-happens-when-a-developer-is-in-no-listed-group),而开发者的会话不包含任何列出的组。 | 在您的 IdP 中将开发者添加到某个列出的组,或将一个没有 `groups` 的上游列在最后,为其他所有人提供服务。网关会在开发者下次刷新令牌时重新读取组。如果 IdP 省略了组,而其 userinfo 端点会返回组,请设置 [`oidc.userinfo_fallback: true`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#oidc)。 |

425| IdP 错误:unknown or unsupported scope | IdP 拒绝它不识别的作用域 | 将 `oidc.scopes` 设置为您的 IdP 接受的确切列表;它必须包含 `openid`。默认值为 `openid profile email offline_access`。 |431| IdP 错误:unknown or unsupported scope | IdP 拒绝它不识别的作用域 | 将 `oidc.scopes` 设置为您的 IdP 接受的确切列表;它必须包含 `openid`。默认值为 `openid profile email offline_access`。 |

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

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


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

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

451 457 

452精简组声明时,请保留您在以下设置中指定的组,这些设置决定开发者的访问权限、策略和支出上限:458精简组声明时,请保留您在以下设置中指定的组,这些设置决定开发者的访问权限、策略、上游和支出上限:

453 459 

454* **[`oidc.allowed_groups`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#oidc)**:决定谁可以登录460* **[`oidc.allowed_groups`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#oidc)**:决定谁可以登录

455* **[`admin.admin_groups`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#admin)**:决定谁可以使用其网关会话调用管理 API461* **[`admin.admin_groups`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#admin)**:决定谁可以使用其网关会话调用管理 API

456* **[`managed.policies`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#managed) 中的 `match.groups`**:决定哪个策略适用于开发者462* **[`managed.policies`](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config#managed) 中的 `match.groups`**:决定哪个策略适用于开发者

463* **[上游](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#send-each-team-to-its-own-upstream)上的 `groups`**:决定哪些上游为开发者提供服务

457* **`rbac_group` [支出上限](https://code.claude.com/docs/zh-CN/claude-apps-gateway-spend-limits.md)**:决定哪些组上限适用于开发者464* **`rbac_group` [支出上限](https://code.claude.com/docs/zh-CN/claude-apps-gateway-spend-limits.md)**:决定哪些组上限适用于开发者

458 465 

459### 长时间思考导致代理超时466### 长时间思考导致代理超时

Details

620 620 

621让开发者传入该工作所属团队的 id,例如 `claude --model data-claude-opus-4-8`。621让开发者传入该工作所属团队的 id,例如 `claude --model data-claude-opus-4-8`。

622 622 

623网关会应用[第一个匹配的策略](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed),因此仅属于两个团队组的开发者会获得 `team-platform` 策略。他们使用数据团队 id 的会话会失败,并显示 `is not in your role's availableModels allowlist`,其中指明的是 Claude Code 的默认模型,而不是他们输入的 id。如果您改为在一个策略的 `groups` 中列出两个团队组,那么任一团队中的每个人都可以对任一团队的配置文件进行计费。623默认情况下,网关会应用[第一个匹配的策略](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed),因此仅属于两个团队组的开发者会获得 `team-platform` 策略。他们使用数据团队 id 的会话会失败,并显示 `is not in your role's availableModels allowlist`,其中指明的是 Claude Code 的默认模型,而不是他们输入的 id。如果您改为在一个策略的 `groups` 中列出两个团队组,那么任一团队中的每个人都可以对任一团队的配置文件进行计费。

624 624 

625在网关自身的[支出限制](https://code.claude.com/docs/zh-CN/claude-apps-gateway-spend-limits.md#set-a-cap)中,无论会话使用哪个 id,该开发者每个周期都只有一个总额和一个上限,默认为其所属各组上限中的最低值。为避免某个团队较低的上限阻止另一个团队的工作,请为该开发者设置按用户的上限。625在网关自身的[支出限制](https://code.claude.com/docs/zh-CN/claude-apps-gateway-spend-limits.md#set-a-cap)中,无论会话使用哪个 id,该开发者每个周期都只有一个总额和一个上限,默认为其所属各组上限中的最低值。为避免某个团队较低的上限阻止另一个团队的工作,请为该开发者设置按用户的上限。

626 626 

Details

99| `--init-only` | 运行 [Setup](https://code.claude.com/docs/zh-CN/hooks.md#setup) 和 `SessionStart` hook,然后退出而不启动对话 | `claude --init-only` |99| `--init-only` | 运行 [Setup](https://code.claude.com/docs/zh-CN/hooks.md#setup) 和 `SessionStart` hook,然后退出而不启动对话 | `claude --init-only` |

100| `--include-hook-events` | 在输出流中包含 hook 生命周期事件。`SessionStart` 和 `Setup` hook 事件始终包含,不需要此标志。某些 hook 事件(如 `Notification`、`SessionEnd`、`PreCompact` 和 `PostCompact`)永远不会产生 `hook_started` 事件,即使使用此标志也是如此。对于这些事件,当运行超过一秒的命令 hook 产生输出时,Claude Code 仍会发出 `hook_progress`,并仅在[在后台运行的 hook](https://code.claude.com/docs/zh-CN/hooks.md#run-hooks-in-the-background) 完成时发出 `hook_response`。需要 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-hook-events "query"` |100| `--include-hook-events` | 在输出流中包含 hook 生命周期事件。`SessionStart` 和 `Setup` hook 事件始终包含,不需要此标志。某些 hook 事件(如 `Notification`、`SessionEnd`、`PreCompact` 和 `PostCompact`)永远不会产生 `hook_started` 事件,即使使用此标志也是如此。对于这些事件,当运行超过一秒的命令 hook 产生输出时,Claude Code 仍会发出 `hook_progress`,并仅在[在后台运行的 hook](https://code.claude.com/docs/zh-CN/hooks.md#run-hooks-in-the-background) 完成时发出 `hook_response`。需要 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-hook-events "query"` |

101| `--include-partial-messages` | 在输出中包含部分流式事件。需要 `--print` 和 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-partial-messages "query"` |101| `--include-partial-messages` | 在输出中包含部分流式事件。需要 `--print` 和 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-partial-messages "query"` |

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

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

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

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

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

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

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

109| `--name`, `-n` | 为会话设置显示名称,显示在 `/resume` 和终端标题中。您可以使用 `claude --resume <name>` 恢复命名会话。 [`/rename`](https://code.claude.com/docs/zh-CN/commands) 在会话中途更改名称,并且还会在提示栏上显示它 | `claude -n "my-feature-work"` |109| `--name`, `-n` | 为会话设置显示名称,显示在 `/resume` 和终端标题中。您可以使用 `claude --resume <name>` 恢复命名会话。 [`/rename`](https://code.claude.com/docs/zh-CN/commands) 在会话中途更改名称,并且还会在提示栏上显示它 | `claude -n "my-feature-work"` |

Details

335| **C/C++** | GCC、Clang、cmake、ninja、conan |335| **C/C++** | GCC、Clang、cmake、ninja、conan |

336| **Docker** | docker、dockerd、docker compose |336| **Docker** | docker、dockerd、docker compose |

337| **Databases** | PostgreSQL 16、Redis 7.0 |337| **Databases** | PostgreSQL 16、Redis 7.0 |

338| **Browser** | Chrome for Testing,位于 `/usr/bin/google-chrome`,`CHROME_PATH` 环境变量设置为该路径 |

338| **Utilities** | git、gh、jq、yq、ripgrep、tmux、vim、nano |339| **Utilities** | git、gh、jq、yq、ripgrep、tmux、vim、nano |

339 340 

340¹ Bun 已安装,但在包获取时存在已知的[代理兼容性问题](#install-dependencies-with-a-sessionstart-hook)。341¹ Bun 已安装,但在包获取时存在已知的[代理兼容性问题](#install-dependencies-with-a-sessionstart-hook)。

commands.md +2 −2

Details

35下表列出了 Claude Code 中包含的所有命令。大多数是内置命令,其行为编码在 CLI 中。有两类条目带有标记:35下表列出了 Claude Code 中包含的所有命令。大多数是内置命令,其行为编码在 CLI 中。有两类条目带有标记:

36 36 

37* **[Skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills)**:随附 skill。它的工作方式与您自己编写的 skill 相同:是交给 Claude 的提示词。37* **[Skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills)**:随附 skill。它的工作方式与您自己编写的 skill 相同:是交给 Claude 的提示词。

38 * `/verify` 仅在您调用时运行。在 v2.1.215 之前,Claude 也可以自行运行 `/verify`。38 * `/verify` 仅在您调用时运行。

39* **[工作流](https://code.claude.com/docs/zh-CN/workflows.md#bundled-workflows)**:随附的[动态工作流](https://code.claude.com/docs/zh-CN/workflows.md),会将工作分发到多个子代理并在后台运行。39* **[工作流](https://code.claude.com/docs/zh-CN/workflows.md#bundled-workflows)**:随附的[动态工作流](https://code.claude.com/docs/zh-CN/workflows.md),会将工作分发到多个子代理并在后台运行。

40 * `/deep-research` 仅在您调用时运行。40 * `/deep-research` 仅在您调用时运行。

41 41 


114| `/model [model]` | 切换 AI 模型并将其保存为新会话的默认模型。对于支持的模型,使用左/右箭头[调整 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。不带参数时,打开选择器;在某一行上按 `s` 可仅为当前会话切换。请参阅[新模型何时生效](https://code.claude.com/docs/zh-CN/interactive-mode.md#when-claude-code-sends-what-you-queued)。在 v2.1.242 之前,切换可能需要等待。使用 `-p` 时,请传递模型参数,该参数不会保存为默认模型;需要 v2.1.205 或更高版本 |114| `/model [model]` | 切换 AI 模型并将其保存为新会话的默认模型。对于支持的模型,使用左/右箭头[调整 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。不带参数时,打开选择器;在某一行上按 `s` 可仅为当前会话切换。请参阅[新模型何时生效](https://code.claude.com/docs/zh-CN/interactive-mode.md#when-claude-code-sends-what-you-queued)。在 v2.1.242 之前,切换可能需要等待。使用 `-p` 时,请传递模型参数,该参数不会保存为默认模型;需要 v2.1.205 或更高版本 |

115| `/output-style [style]` | 列出[输出样式](https://code.claude.com/docs/zh-CN/output-styles.md)或切换到其中一种,例如 `/output-style concise`。请参阅[更改输出样式](https://code.claude.com/docs/zh-CN/output-styles.md#change-your-output-style)。需要 Claude Code v2.1.269 或更高版本 |115| `/output-style [style]` | 列出[输出样式](https://code.claude.com/docs/zh-CN/output-styles.md)或切换到其中一种,例如 `/output-style concise`。请参阅[更改输出样式](https://code.claude.com/docs/zh-CN/output-styles.md#change-your-output-style)。需要 Claude Code v2.1.269 或更高版本 |

116| `/passes` | 与朋友分享一周免费的 Claude Code。仅在您的账户符合条件时可见 |116| `/passes` | 与朋友分享一周免费的 Claude Code。仅在您的账户符合条件时可见 |

117| `/permissions` | 管理工具权限的允许、询问和拒绝规则。打开交互式对话框,您可以在其中按作用域查看规则、添加或删除规则、管理工作目录,以及查看[最近的自动模式拒绝记录](https://code.claude.com/docs/zh-CN/auto-mode-config.md#review-denials)。您还可以从对话框的 **Auto mode** 选项卡查看和编辑[自动模式分类器规则](https://code.claude.com/docs/zh-CN/auto-mode-config.md#edit-rules-from-permissions)。如果在 Claude 回复时运行此命令,Claude Code 会立即打开对话框,并从 Claude 在同一轮次中的下一次工具调用开始应用您的更改。在 v2.1.234 之前,Claude Code 会将该命令排队,直到该轮次结束。别名:`/allowed-tools` |117| `/permissions` | 管理工具权限的允许、询问和拒绝规则。打开交互式对话框,您可以在其中按作用域查看规则、添加或删除规则、管理工作目录,以及查看[最近的自动模式拒绝记录](https://code.claude.com/docs/zh-CN/auto-mode-config.md#review-denials)。您还可以从对话框的 **Auto mode** 选项卡查看和编辑[自动模式分类器规则](https://code.claude.com/docs/zh-CN/auto-mode-config.md#edit-rules-from-permissions)。别名:`/allowed-tools` |

118| `/plan [description]` | 直接从输入框进入计划模式。传递可选描述可进入计划模式并立即开始处理该任务,例如 `/plan fix the auth bug` |118| `/plan [description]` | 直接从输入框进入计划模式。传递可选描述可进入计划模式并立即开始处理该任务,例如 `/plan fix the auth bug` |

119| `/plugin [subcommand]` | 管理 Claude Code [插件](https://code.claude.com/docs/zh-CN/plugins/overview.md)。不带参数运行可打开插件菜单,或传递 `list`、`install`、`enable` 或 `disable` 等子命令以直接执行操作。Claude Code 可以在安装期间激活插件;[安装摘要](https://code.claude.com/docs/zh-CN/plugins/install.md#install-a-plugin)会告诉您插件是否已激活,或是否需要运行 `/reload-plugins` |119| `/plugin [subcommand]` | 管理 Claude Code [插件](https://code.claude.com/docs/zh-CN/plugins/overview.md)。不带参数运行可打开插件菜单,或传递 `list`、`install`、`enable` 或 `disable` 等子命令以直接执行操作。Claude Code 可以在安装期间激活插件;[安装摘要](https://code.claude.com/docs/zh-CN/plugins/install.md#install-a-plugin)会告诉您插件是否已激活,或是否需要运行 `/reload-plugins` |

120| `/plugin-authoring` | 加载 Claude 用于[编写 mod](https://code.claude.com/docs/zh-CN/plugins/mods/create.md#ask-claude-for-a-mod) 的参考资料。当您请求 mod 时,Claude 可以自行加载它。这是一个来自[内置插件](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md#mods-built-into-claude-code)的 skill,您可以在 `/plugin` 中将其关闭。需要 Claude Code v2.1.287 或更高版本 |120| `/plugin-authoring` | 加载 Claude 用于[编写 mod](https://code.claude.com/docs/zh-CN/plugins/mods/create.md#ask-claude-for-a-mod) 的参考资料。当您请求 mod 时,Claude 可以自行加载它。这是一个来自[内置插件](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md#mods-built-into-claude-code)的 skill,您可以在 `/plugin` 中将其关闭。需要 Claude Code v2.1.287 或更高版本 |

costs.md +6 −4

Details

20>20>

21> `/usage` 中的 Session 块显示 API token 使用情况,适用于 API 用户。Claude Pro、Max 和 Ultra 订阅者的使用量包含在订阅中,因此会话成本数据与计费无关。订阅者会在同一屏幕上看到套餐使用条、活动统计以及使用情况明细。21> `/usage` 中的 Session 块显示 API token 使用情况,适用于 API 用户。Claude Pro、Max 和 Ultra 订阅者的使用量包含在订阅中,因此会话成本数据与计费无关。订阅者会在同一屏幕上看到套餐使用条、活动统计以及使用情况明细。

22 22 

23`/usage` 顶部的 Session 块显示当前会话的详细令牌使用统计。Claude Code 从令牌计数本地计算美元数字,按列表价格计算,除非 [`modelPricing`](https://code.claude.com/docs/zh-CN/settings-reference#modelpricing) 表生效。管理员在您组织的托管设置中设置一个表,以便该数字使用您的合同费率,当表生效时,`Total cost` 行会带有注释 `at your organization's configured rates`。该数字是估计值,有关权威计费,请参阅 [Claude Console](https://platform.claude.com/usage) 中的使用情况页面。23`/usage` 顶部的 Session 块显示当前会话的详细 token 使用统计。

24 

25Claude Code 根据 token 计数按列表价格在本地计算美元数字,除非 [`modelPricing`](https://code.claude.com/docs/zh-CN/settings-reference#modelpricing) 表生效。管理员会在您组织的托管设置中设置此表,使该数字使用您的合同费率;当表生效时,`Total cost` 行会带有注释 `at your organization's configured rates`。该数字是估计值,有关权威计费信息,请参阅[管理组织的成本](#manage-costs-for-your-organization)。

24 26 

25```text theme={null}27```text theme={null}

26Total cost: $0.5528Total cost: $0.55


138 140 

139如果您在早期请求等待管理员时再次运行 `/usage-credits`,Claude Code 会告诉您已经发送了请求,而不是发送重复请求。在管理员驳回您的请求后,再次运行该命令会发送新请求。在 v2.1.222 之前,被驳回的请求也会阻止新请求。141如果您在早期请求等待管理员时再次运行 `/usage-credits`,Claude Code 会告诉您已经发送了请求,而不是发送重复请求。在管理员驳回您的请求后,再次运行该命令会发送新请求。在 v2.1.222 之前,被驳回的请求也会阻止新请求。

140 142 

141在 Pro 和 Max 计划上,当您达到支出限制且仍有使用额度可用时,Claude Code 会提示您提高或移除限制,而无需离开 CLI。如果服务器拒绝更改,请参阅[无法更新您的支出限制](https://code.claude.com/docs/zh-CN/errors.md#could-not-update-your-spend-limit)。143在 Pro、Max 和 Ultra 计划上,当您达到支出限制且仍有使用额度可用时,Claude Code 会提示您提高或移除限制,而无需离开 CLI。如果服务器拒绝更改,请参阅[无法更新您的支出限制](https://code.claude.com/docs/zh-CN/errors.md#could-not-update-your-spend-limit)。

142 144 

143## 管理组织的成本145## 管理组织的成本

144 146 


149| 您的设置 | 查看支出 | 限制支出 | 按用户报告 |151| 您的设置 | 查看支出 | 限制支出 | 按用户报告 |

150| :- | :- | :- | :- |152| :- | :- | :- | :- |

151| [Claude for Teams 或 Enterprise](#claude-for-teams-and-enterprise) | [组织分析中的支出报告](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) | 管理设置中的支出限制 | [支出报告 CSV](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans);Enterprise 套餐可使用 [Enterprise Analytics API](https://platform.claude.com/docs/en/api/admin/analytics) |153| [Claude for Teams 或 Enterprise](#claude-for-teams-and-enterprise) | [组织分析中的支出报告](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans) | 管理设置中的支出限制 | [支出报告 CSV](https://support.claude.com/en/articles/12883420-view-usage-analytics-for-team-and-enterprise-plans);Enterprise 套餐可使用 [Enterprise Analytics API](https://platform.claude.com/docs/en/api/admin/analytics) |

152| [Claude Console (API)](#claude-console) | [Console 用量页面](https://platform.claude.com/usage) | 工作区支出限制 | [Console 仪表板](https://platform.claude.com/claude-code)、[Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) |154| [Claude Console (API)](#claude-console) | [Console 成本页面](https://platform.claude.com/cost) | 工作区支出限制 | [Console 仪表板](https://platform.claude.com/claude-code)、[Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) |

153| [Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry](#cloud-providers) | 您的云计费控制台 | 您的云预算控制 | [OpenTelemetry](https://code.claude.com/docs/zh-CN/monitoring-usage.md) 或 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway) |155| [Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry](#cloud-providers) | 您的云计费控制台 | 您的云预算控制 | [OpenTelemetry](https://code.claude.com/docs/zh-CN/monitoring-usage.md) 或 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway) |

154 156 

155[OpenTelemetry 导出](https://code.claude.com/docs/zh-CN/monitoring-usage.md)适用于所有设置,并且是唯一能将按用户统计的 token 和成本指标近乎实时地流式传输到您自己的可观测性平台的选项。157[OpenTelemetry 导出](https://code.claude.com/docs/zh-CN/monitoring-usage.md)适用于所有设置,并且是唯一能将按用户统计的 token 和成本指标近乎实时地流式传输到您自己的可观测性平台的选项。


193>195>

194> 对于具有自定义速率限制的组织,该工作区中的 Claude Code 流量会计入您组织的整体 API 速率限制。您可以在 Claude Console 中该工作区的 Limits 页面上设置[工作区速率限制](https://platform.claude.com/docs/en/api/rate-limits#setting-lower-limits-for-workspaces),以限制 Claude Code 的占用份额并保护其他生产工作负载。196> 对于具有自定义速率限制的组织,该工作区中的 Claude Code 流量会计入您组织的整体 API 速率限制。您可以在 Claude Console 中该工作区的 Limits 页面上设置[工作区速率限制](https://platform.claude.com/docs/en/api/rate-limits#setting-lower-limits-for-workspaces),以限制 Claude Code 的占用份额并保护其他生产工作负载。

195 197 

196对于按用户报告,[Console 仪表板](https://platform.claude.com/claude-code)显示每位成员的支出和已接受的代码行数,[Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) 则可通过 [Admin API 密钥](https://platform.claude.com/settings/admin-keys)以编程方式返回相同的每日按用户指标。请参阅[面向 API 客户的分析](https://code.claude.com/docs/zh-CN/analytics.md#access-analytics-for-api-customers)。198对于按用户报告,[Console 仪表板](https://platform.claude.com/claude-code)显示每位成员的支出和已接受的代码行数,[Claude Code Analytics API](https://platform.claude.com/docs/en/build-with-claude/claude-code-analytics-api) 则可通过 [Admin API 密钥](https://platform.claude.com/settings/admin-keys)以编程方式返回每日按用户指标。请参阅[面向 API 客户的分析](https://code.claude.com/docs/zh-CN/analytics.md#access-analytics-for-api-customers)。

197 199 

198#### 速率限制建议200#### 速率限制建议

199 201 

desktop.md +24 −11

Details

131* 从浏览器窗格标题栏中的 **Dev servers** 菜单启动或停止服务器,或一次停止所有服务器131* 从浏览器窗格标题栏中的 **Dev servers** 菜单启动或停止服务器,或一次停止所有服务器

132* 通过浏览器窗格 **⋮** 菜单中的 **Keep cookies**,选择浏览器在您退出应用后是否保留 cookie,这样您就不必在开发期间重新登录132* 通过浏览器窗格 **⋮** 菜单中的 **Keep cookies**,选择浏览器在您退出应用后是否保留 cookie,这样您就不必在开发期间重新登录

133 133 

134在 SSH 会话中,退出 Desktop 时会丢失该窗格的 cookie。您无法通过 **Keep cookies** 更改这一点。

135 

134Claude 根据您的项目创建初始服务器配置。如果您的应用使用自定义开发命令,编辑 `.claude/launch.json` 以匹配您的设置。有关完整参考,请参阅[配置预览服务器](#configure-preview-servers)。136Claude 根据您的项目创建初始服务器配置。如果您的应用使用自定义开发命令,编辑 `.claude/launch.json` 以匹配您的设置。有关完整参考,请参阅[配置预览服务器](#configure-preview-servers)。

135 137 

136要清除浏览器保存的数据,请在浏览器窗格的 **⋮** 菜单中选择 **Clear browsing data**。要完全关闭浏览器,请在 **Settings > Code** 或 **Settings > Claude Code** 中关闭 **Browser tools**。138要清除浏览器保存的数据,请在浏览器窗格的 **⋮** 菜单中选择 **Clear browsing data**。要完全关闭浏览器,请在 **Settings > Code** 或 **Settings > Claude Code** 中关闭 **Browser tools**。


312 314 

313在任一布局中,在输入框中输入 `/context`,即可在聊天中打印此会话上下文窗口的按类别细分。315在任一布局中,在输入框中输入 `/context`,即可在聊天中打印此会话上下文窗口的按类别细分。

314 316 

315两种布局的模型选择器旁都有使用环形图。点击它可查看您的计划使用情况,该使用情况在您所有的 Claude Code 使用入口之间共享。317在两种布局中,使用环形图都位于输入框下方的那一行。点击它可查看您的计划使用情况,该使用情况在您所有的 Claude Code 使用入口之间共享。

316 318 

317## 让 Claude 使用您的计算机319## 让 Claude 使用您的计算机

318 320 


409 411 

410#### 在独立的 worktree 中运行会话412#### 在独立的 worktree 中运行会话

411 413 

412在属于 Git 仓库的项目中,请在启动会话前打开 **Worktree**,使会话在其自己的 [Git worktree](https://code.claude.com/docs/zh-CN/worktrees.md)(项目的隔离副本)中运行。默认情况下,**Worktree** 处于关闭状态,Claude 直接在项目文件夹中工作。在[当前布局](#check-which-layout-you-have)中,打开[输入框下方一行](#start-a-session)中的 **Worktree** 按钮。414在作为 Git 仓库的项目中,请在开始会话之前启用 **Worktree**,以便在其专属的 [Git worktree](https://code.claude.com/docs/zh-CN/worktrees.md)(项目的一个隔离副本)中运行该会话。默认情况下,**Worktree** 处于关闭状态,Claude 直接在项目文件夹本身中工作。在[当前布局](#check-which-layout-you-have)中,请在[提示词输入框下方的一行](#start-a-session)中启用 **Worktree**。

413 415 

414* **使用[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)时**:如果输入框下方一行显示了项目文件夹控件但没有 **Worktree** 按钮,请点击该控件并打开 **Worktree**416* **使用[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)时**:如果输入框下方的行中显示了项目文件夹控件,但没有显示 **Worktree**,请点击项目文件夹控件并启用 **Worktree**

415* **作为[已保存的本地或 SSH 环境](#create-a-saved-environment)的默认值**:在创建或编辑环境时设置 **Worktree**417* **作为[已保存的本地或 SSH 环境](#create-a-saved-environment)的默认值**:在创建或编辑环境时设置 **Worktree**

416* **[早期布局](#check-which-layout-you-have)**:选中输入框上方分支名称旁边的 **worktree** 复选框418* **[早期布局](#check-which-layout-you-have)**:选中输入框上方分支名称旁边的 **worktree** 复选框

417 419 


1094 1096 

1095##### 在 Windows 上不使用 OpenSSH 客户端进行连接1097##### 在 Windows 上不使用 OpenSSH 客户端进行连接

1096 1098 

1097在 Windows 上,如果您的计算机不满足 [OpenSSH 客户端的要求](#use-your-ssh-configuration),您将通过 Desktop 的内置 SSH 客户端进行连接。使用第三方提供商时,默认通过内置客户端连接,您的管理员可以更改此设置。有关该设置,请参阅 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1099在 Windows 上,如果您的计算机不满足 [OpenSSH 客户端的要求](#use-your-ssh-configuration),您将通过 Desktop 的内置 SSH 客户端进行连接。使用第三方提供商时,您通过哪个客户端连接还取决于您的 Desktop 版本和管理员的设置。请参阅 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。

1098 1100 

1099使用内置客户端时,如果您的 `PATH` 中有 `ssh` 命令,您仍可以在 **SSH host** 字段中输入 SSH 配置中的 `Host` 名称,但有以下限制:1101使用内置客户端时,如果您的 `PATH` 中有 `ssh` 命令,您仍可以在 **SSH host** 字段中输入 SSH 配置中的 `Host` 名称,但有以下限制:

1100 1102 

1101* **条目中的设置**:Desktop 会采用 `HostName`、`User`、`Port` 和 `IdentityFile`。如果您的 `PATH` 上有 `sh` shell,它还会采用 `ProxyCommand`。1103* **条目中的设置**:Desktop 会采用 `HostName`、`User`、`Port`、`IdentityFile` 和 `ConnectTimeout`。如果您的 `PATH` 上有 `sh` shell,它还会采用 `ProxyCommand`。

1102* **SSH key (optional)**:将此字段留空以保留条目的 `IdentityFile`,因为您在此处选择的密钥文件会替换 `IdentityFile`1104* **SSH key (optional)**:将此字段留空以保留条目的 `IdentityFile`,因为您在此处选择的密钥文件会替换 `IdentityFile`

1103* **`CertificateFile` 和 `ProxyJump`**:Desktop 会忽略 `CertificateFile`,如果条目设置了 `ProxyJump`,连接会失败。要使用其中任一设置,请[通过 OpenSSH 客户端连接](#use-your-ssh-configuration)。1105* **`CertificateFile` 和 `ProxyJump`**:Desktop 会忽略 `CertificateFile`,如果条目设置了 `ProxyJump`,连接会失败。要使用其中任一设置,请[通过 OpenSSH 客户端连接](#use-your-ssh-configuration)。

1104 1106 


1123 1125 

1124**1. 添加条目**1126**1. 添加条目**

1125 1127 

1126将以下条目添加到 `~/.ssh/config` 的末尾,如果您有 `Host *` 条目,则添加到第一个 `Host *` 条目的正上方。将 Docker 容器 `devbox`、其用户 `dev` 和计算机 `build.example.com` 替换为您自己的值。该条目的命令会为每个连接在容器内启动一个 SSH 服务器:1128将以下条目添加到 `~/.ssh/config` 的末尾,如果有第一个 `Host *` 条目,则添加到其正上方。将 Docker 容器 `devbox`、其用户 `dev` 和计算机 `build.example.com` 替换为您自己的值。该条目的命令会为每个连接在容器内启动一个 SSH 服务器:

1127 1129 

1128```text ~/.ssh/config theme={null}1130```text ~/.ssh/config theme={null}

1129Host devbox-container1131Host devbox-container


1198 1200 

1199##### 提高 SSH 连接超时时间1201##### 提高 SSH 连接超时时间

1200 1202 

1201如果您的 SSH 配置没有为该主机设置 `ConnectTimeout`,Desktop 会给 `ssh` 30 秒的连接时间。通过跳板机或 `ProxyCommand` 连接时,该时间包括路由建立连接所需的时间。如果您的路由需要更长时间,请在条目中添加更高的值:1203如果您的会话在通过跳板机或 `ProxyCommand` 连接时超时,请在 `~/.ssh/config` 中远程计算机的条目里提高 `ConnectTimeout`。请使用超过 90 秒的值。再加上跳板机或 `ProxyCommand` 等待您操作的任何时间,例如在登录提示处或等待手机推送:

1202 1204 

1203```text ~/.ssh/config theme={null}1205```text ~/.ssh/config theme={null}

1204Host devbox1206Host devbox


1210 1212 

1211`ssh` 会使用它为主机找到的第一个值,因此请将该条目放在任何设置了 `ConnectTimeout` 的 `Host *` 条目之上。若要确认,请在您计算机上的终端中运行 `ssh -G devbox`。其输出包含 `connecttimeout 120`。更改该值后,请退出并重新打开 Desktop。1213`ssh` 会使用它为主机找到的第一个值,因此请将该条目放在任何设置了 `ConnectTimeout` 的 `Host *` 条目之上。若要确认,请在您计算机上的终端中运行 `ssh -G devbox`。其输出包含 `connecttimeout 120`。更改该值后,请退出并重新打开 Desktop。

1212 1214 

1213如果远程计算机本身等待您在手机上批准,无论您设置的 `ConnectTimeout` 是多少,都请在 45 秒内批准。您无法提高此限制,因为 Desktop 会自行设置 `ServerAliveInterval` 和 `ServerAliveCountMax`,之后 `ssh` 会关闭远程计算机在这么长时间内未发送任何内容的登录。如果是跳板机或 `ProxyCommand` 在等待您,请在远程计算机的条目中提高 `ConnectTimeout` 以涵盖该时间。1215如果您的 SSH 配置没有为该主机设置 `ConnectTimeout`,Desktop 会给 `ssh` 30 秒的连接时间。通过跳板机或 `ProxyCommand` 连接时,该时间包括该路由建立连接所需的时间。

1216 

1217| `ConnectTimeout` | 连接 | 您拥有的时间 |

1218| - | - | - |

1219| 未设置 | 您在 macOS 或 Linux 上使用 Claude Desktop v4.4212.0 或更高版本,通过跳板机或 `ProxyCommand` 启动会话 | 30 秒,然后第二次尝试有 90 秒。如果 Desktop 在第一次尝试期间向您显示了提示,则没有第二次尝试。在 Desktop 为 `ProxyJump` 主机显示的登录提示处花费的时间不计入。路由上的其他等待时间则计入。 |

1220| 未设置 | Windows 上的 Desktop 或更早版本、设置了 `MaxSessions 1` 的远程计算机,或 Desktop 自行发起的重新连接 | 30 秒。路由上的所有等待时间都计入。 |

1221| 已设置 | 每次连接和重新连接 | 您设置的值。路由上的所有等待时间都计入。 |

1222 

1223如果远程计算机本身需要等待您在手机上批准,请在 45 秒内批准,无论您设置的 `ConnectTimeout` 是多少。您无法提高此限制,因为 Desktop 会自行设置 `ServerAliveInterval` 和 `ServerAliveCountMax`,如果远程计算机在这段时间内没有发送任何内容,`ssh` 就会关闭该登录。

1214 1224 

1215##### 修复仅由 Desktop 应用的 `Match host` 块1225##### 修复仅由 Desktop 应用的 `Match host` 块

1216 1226 


1334>1344>

1335> 在某些情况下编辑仍会失败,包括以下情况:1345> 在某些情况下编辑仍会失败,包括以下情况:

1336>1346>

1337> * **内置 SSH 客户端**:Desktop 使用了它,例如在 Microsoft Store 安装版本中、在没有 Microsoft OpenSSH 9.4 或更高版本的 Windows 计算机上,或在使用第三方提供商的 Windows 上默认使用1347> * **内置 SSH 客户端**:Desktop 使用了它,例如在通过 Microsoft Store 安装的版本中,或在没有 Microsoft OpenSSH 9.4 或更高版本的 Windows 计算机上

1338> * **仓库位置**:仓库是您的主目录、其上层文件夹或 `~/.claude`1348> * **仓库位置**:仓库是您的主目录、其上层文件夹或 `~/.claude`

1339> * **macOS 路径**:在 macOS 远程计算机上,仓库位于 `/Volumes` 下,或者仓库或 worktree 路径中的某个文件夹名称包含 `~` 或非 ASCII 字符1349> * **macOS 路径**:在 macOS 远程计算机上,仓库位于 `/Volumes` 下,或者仓库或 worktree 路径中的某个文件夹名称包含 `~` 或非 ASCII 字符

1340> * **文件夹限制**:您的组织限制了会话可以使用的文件夹1350> * **文件夹限制**:您的组织限制了会话可以使用的文件夹


1369* **记住的密码**:您让 Desktop 记住的密码也可以无需提示登录,但若长时间离开,最好使用由您的 SSH agent 持有的密钥。如果使用该密码的登录中断或挂起,Desktop 可能会停止重新连接并等待您。1379* **记住的密码**:您让 Desktop 记住的密码也可以无需提示登录,但若长时间离开,最好使用由您的 SSH agent 持有的密钥。如果使用该密码的登录中断或挂起,Desktop 可能会停止重新连接并等待您。

1370* **任何其他提示**:如果远程计算机提示输入其他内容(例如一次性验证码),您可能会在计算机上收到通知。点击该通知或在会话中发送消息,Desktop 就会显示该提示。1380* **任何其他提示**:如果远程计算机提示输入其他内容(例如一次性验证码),您可能会在计算机上收到通知。点击该通知或在会话中发送消息,Desktop 就会显示该提示。

1371 1381 

1372> [accordion] 如果跳板机要求登录、中断时间较长、输出缺失或进程已不存在1382> [accordion] 如果跳板机要求登录、中断时间较长、消息未发送、输出缺失或进程已不存在

1373>1383>

1374> * **跳板机,您不在时推送停止**:当无人响应跳板机的登录(例如向手机发送的推送)时,macOS 或 Linux 上的 Desktop 可能会出现这种情况。此时,在无人使用您的计算机期间,Desktop 会停止重新连接。当您解锁或使用计算机时,您可能会收到另一条推送,因为 Desktop 可能会再次尝试。在三次无人响应的尝试后,它会等到您重试或发送消息。1384> * **跳板机,您不在时推送停止**:当无人响应跳板机的登录(例如向手机发送的推送)时,macOS 或 Linux 上的 Desktop 可能会出现这种情况。此时,在无人使用您的计算机期间,Desktop 会停止重新连接。当您解锁或使用计算机时,您可能会收到另一条推送,因为 Desktop 可能会再次尝试。在三次无人响应的尝试后,它会等到您重试或发送消息。

1375> * **跳板机,推送持续不断**:在 Desktop 无法判断无人响应的情况下(例如 Windows 上的 Desktop),只要有可重新接入的进程,无论该进程是否仍在运行,它都会持续尝试。每次尝试您都可能收到另一条推送。若要结束尝试,请退出 Desktop,但这[可能会让您失去正在运行的任务](#reopen-a-session-after-you-quit-desktop)。1385> * **跳板机,推送持续不断**:在 Desktop 无法判断无人响应的情况下(例如 Windows 上的 Desktop),只要有可重新接入的进程,无论该进程是否仍在运行,它都会持续尝试。每次尝试您都可能收到另一条推送。若要结束尝试,请退出 Desktop,但这[可能会让您失去正在运行的任务](#reopen-a-session-after-you-quit-desktop)。

1376> * **长时间中断**:Desktop 会放慢到大约每五分钟尝试一次。若要更快重新连接,请在会话中重试或发送消息,Desktop 会在连接后投递该消息。1386> * **长时间中断**:Desktop 会放慢到约每五分钟尝试一次。要更快地重新连接,请在会话中重试或发送消息。Desktop 会在连接后尝试投递该消息。

1387> * **消息未发送**:如果您的消息下方出现 `Your organization's settings haven't loaded, so your message to <host> wasn't sent. Retry to send it.` 这一行,说明 Desktop 已重新连接,但因为您组织的设置尚未加载而暂扣了您的消息。选择 **Retry** 即可立即发送该消息。如果您不做任何操作,Desktop 会在设置加载后再次尝试。

1377> * **输出缺失**:在 Desktop 断开连接期间,辅助程序会在 16 MiB 缓冲区中保留每个会话最近的 Claude Code 输出,并丢弃较早的输出。Desktop 重新连接后,会话可能会显示 `Loading recent output from <host>…`。如果 Desktop 无法加载全部输出,您会看到一行 `Some output produced while you were disconnected may be missing here.`。该行并不表示任务已停止。1388> * **输出缺失**:在 Desktop 断开连接期间,辅助程序会在 16 MiB 缓冲区中保留每个会话最近的 Claude Code 输出,并丢弃较早的输出。Desktop 重新连接后,会话可能会显示 `Loading recent output from <host>…`。如果 Desktop 无法加载全部输出,您会看到一行 `Some output produced while you were disconnected may be missing here.`。该行并不表示任务已停止。

1378> * **进程已不存在**:进程在 Desktop 断开连接期间结束了,例如远程机器重启时。Desktop 随后可以根据对话保存的历史记录启动一个新进程,并让 Claude 继续该任务。如果任务仍处于停止状态,请发送消息。使用第三方提供商时,请更新到 Claude Desktop v2.42304.0 或更高版本,因为较早的版本从不会自行继续任务。1389> * **进程已不存在**:进程在 Desktop 断开连接期间结束了,例如远程机器重启时。Desktop 随后可以根据对话保存的历史记录启动一个新进程,并让 Claude 继续该任务。如果任务仍处于停止状态,请发送消息。使用第三方提供商时,请更新到 Claude Desktop v2.42304.0 或更高版本,因为较早的版本从不会自行继续任务。

1379 1390 


2290| `<host> is out of disk space` | `[ENOSPC]` 或 `[EDQUOT]` | 在远程机器上的主目录或 `/tmp` 中释放空间或配额 |2301| `<host> is out of disk space` | `[ENOSPC]` 或 `[EDQUOT]` | 在远程机器上的主目录或 `/tmp` 中释放空间或配额 |

2291| `Free up disk space on this computer` | `[ENOSPC]` 或 `[EDQUOT]`,出现在以 `Couldn't prepare the deploy locally` 开头的消息中 | 释放您计算机上的空间 |2302| `Free up disk space on this computer` | `[ENOSPC]` 或 `[EDQUOT]`,出现在以 `Couldn't prepare the deploy locally` 开头的消息中 | 释放您计算机上的空间 |

2292| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | 等待一分钟,然后重试。如果仍然失败,请在远程机器上运行消息中提到的命令,查看 Claude Code 在那里是否有响应。 |2303| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | 等待一分钟,然后重试。如果仍然失败,请在远程机器上运行消息中提到的命令,查看 Claude Code 在那里是否有响应。 |

2304| `Ask <host>'s administrator to let Claude's server run` | `[SERVER_NOT_RUNNABLE]` 或 `[SETUP_DIR_NOEXEC]` | 请远程机器的管理员允许程序从该机器上的 `~/.claude/remote/` 运行,如[要求](#remote-machine-requirements-for-ssh-sessions)中所述 |

2305| `Try again in a few minutes` | `[DOWNLOAD_BUSY]` | 等待几分钟,然后重试。Anthropic 的下载服务器或您计算机所在网络上的代理报告其正忙。如果该卡片反复出现,请询问该网络的管理员是否有代理限制了下载。 |

2293 2306 

2294对于任何其他消息,请查看[远程机器要求](#remote-machine-requirements-for-ssh-sessions)。2307对于任何其他消息,请查看[远程机器要求](#remote-machine-requirements-for-ssh-sessions)。

2295 2308 

env-vars.md +4 −5

Details

126> * `CLAUDE_CODE_TMUX_TRUECOLOR`126> * `CLAUDE_CODE_TMUX_TRUECOLOR`

127> * `IS_DEMO`127> * `IS_DEMO`

128>128>

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

130 130 

131| 变量 | 用途 |131| 变量 | 用途 |

132| :- | :- |132| :- | :- |


239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 可在[监督进程](https://code.claude.com/docs/zh-CN/agent-view.md#the-supervisor-process)停止、重启或更新某个[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)的进程时,停止该会话正在进行的工作,而不是将其移交给该会话的下一个进程。这些工作是该会话正在运行的后台 shell 命令,自 v2.1.198 起还包括后台子代理。仅影响该移交:使用 `←` 或 [`/background`](https://code.claude.com/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时,仍会将正在进行的后台工作延续过去。需要 Claude Code v2.1.196 或更高版本 |239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | 设置为 `1` 可在[监督进程](https://code.claude.com/docs/zh-CN/agent-view.md#the-supervisor-process)停止、重启或更新某个[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)的进程时,停止该会话正在进行的工作,而不是将其移交给该会话的下一个进程。这些工作是该会话正在运行的后台 shell 命令,自 v2.1.198 起还包括后台子代理。仅影响该移交:使用 `←` 或 [`/background`](https://code.claude.com/docs/zh-CN/agent-view#from-inside-a-session) 将会话转入后台时,仍会将正在进行的后台工作延续过去。需要 Claude Code v2.1.196 或更高版本 |

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

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

242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | 设置为 `1` 可保留 [Claude in Chrome](https://code.claude.com/docs/zh-CN/chrome.md) 浏览器工具可用,同时省略系统提示词中的 Chrome 部分以及 `/claude-in-chrome` [随附 skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills)。适用于嵌入 Claude Code 并提供自己的浏览器指导的宿主。需要 Claude Code v2.1.257 或更高版本 |242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | 适用于嵌入 Claude Code 并提供自己的浏览器指导的宿主。设置为 `1` 可在保留 [Claude in Chrome](https://code.claude.com/docs/zh-CN/chrome.md) 浏览器工具可用的同时,省略系统提示词中的 Chrome 部分以及 `/claude-in-chrome` [随附 skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills)。在 VS Code 中,v2.1.314 或更高版本的扩展还会将 Claude in Chrome 指令排除在会话消息之外。需要 Claude Code v2.1.257 或更高版本 |

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

244| `CLAUDE_CODE_DISABLE_CRON` | 设置为 `1` 可禁用[会话范围的定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md)。`/loop` skill 和 cron 工具将不可用,所有已安排的任务都会停止触发,包括会话中途已在运行的任务 |244| `CLAUDE_CODE_DISABLE_CRON` | 设置为 `1` 可禁用[会话范围的定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md)。`/loop` skill 和 cron 工具将不可用,所有已安排的任务都会停止触发,包括会话中途已在运行的任务 |

245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | 设为 `1` 可关闭 `auto` 和 `bypassPermissions` 模式下针对关键路径删除操作的[时间限制和拒绝](https://code.claude.com/docs/zh-CN/permission-modes.md#time-limits-and-denials-in-auto-and-bypasspermissions-modes)。这些删除操作随后在 `auto` 模式下交由分类器处理,在 `bypassPermissions` 模式下,只要 Claude Code 能够显示提示,就会显示不限时的提示。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.281 或更高版本 |245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | 设为 `1` 可关闭 `auto` 和 `bypassPermissions` 模式下针对关键路径删除操作的[时间限制和拒绝](https://code.claude.com/docs/zh-CN/permission-modes.md#time-limits-and-denials-in-auto-and-bypasspermissions-modes)。这些删除操作随后在 `auto` 模式下交由分类器处理,在 `bypassPermissions` 模式下,只要 Claude Code 能够显示提示,就会显示不限时的提示。请在启动 Claude Code 的环境中设置它,因为 Claude Code 会忽略通过设置 `env` 块传递的副本。需要 Claude Code v2.1.281 或更高版本 |


307| `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 设置](https://code.claude.com/docs/zh-CN/setup.md#set-up-on-windows) |307| `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 设置](https://code.claude.com/docs/zh-CN/setup.md#set-up-on-windows) |

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

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

310| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 工具文件发现的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上为 60 秒 |310| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | [Glob](https://code.claude.com/docs/zh-CN/tools-reference.md#glob-tool-behavior) 和 Grep 工具搜索的超时时间(秒)。在大多数平台上默认为 20 秒,在 WSL 上默认为 60 秒 |

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

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

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


469| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。请改用 `ENABLE_PROMPT_CACHING_1H`。对 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话无效,即使网关路由到 Amazon Bedrock 也是如此 |469| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已弃用。请改用 `ENABLE_PROMPT_CACHING_1H`。对 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话无效,即使网关路由到 Amazon Bedrock 也是如此 |

470| `ENABLE_TOOL_SEARCH` | 控制 [MCP 工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)。未设置或为 `true` 时会延迟加载 MCP 工具,但[保持工具搜索关闭的情况](https://code.claude.com/docs/zh-CN/mcp.md#configure-tool-search)除外。`auto` 会在工具定义达到上下文窗口的 10% 时开启工具搜索。`auto:N` 设置自定义阈值,例如 `auto:5` 表示 5%。`false` 会预先加载所有工具。如果网关拒绝工具搜索,请参阅[通过 LLM 网关使用工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway) |470| `ENABLE_TOOL_SEARCH` | 控制 [MCP 工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)。未设置或为 `true` 时会延迟加载 MCP 工具,但[保持工具搜索关闭的情况](https://code.claude.com/docs/zh-CN/mcp.md#configure-tool-search)除外。`auto` 会在工具定义达到上下文窗口的 10% 时开启工具搜索。`auto:N` 设置自定义阈值,例如 `auto:5` 表示 5%。`false` 会预先加载所有工具。如果网关拒绝工具搜索,请参阅[通过 LLM 网关使用工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway) |

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

472| `FORCE_HYPERLINK` | 设置为 `1` 可在您的终端支持可点击的 OSC 8 超链接但未被自动检测到时启用它们,设置为 `0` 可禁用它们。未设置时,Claude Code 仅在检测到终端支持时启用超链接。Claude Code 将此值解析为数字而非布尔值,因此 `false`、`no` 或 `off` 之类的值会启用超链接,而不是禁用它们。即使 Claude Code 无法检测到终端支持(例如通过 SSH 时),页脚的 [PR 或合并请求徽章](https://code.claude.com/docs/zh-CN/interactive-mode.md#pr-review-status)也会渲染为超链接。设置为 `0` 可将该徽章渲染为纯文本 |472| `FORCE_HYPERLINK` | 设置为 `1` 以在终端支持但未被自动检测到时启用可点击的 OSC 8 超链接。未设置时,Claude Code 仅在检测到终端支持时才启用大多数超链接。底部栏中的 [PR 或合并请求徽章](https://code.claude.com/docs/zh-CN/interactive-mode.md#pr-review-status)和较长的登录 URL 无论如何都是链接。设置为 `0`、`false`、`no` 或 `off` 可将它们全部渲染为纯文本。在 v2.1.314 之前,`false`、`no` 和 `off` 反而会启用超链接 |

473| `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` 设置 |473| `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` 设置 |

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

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


586* 获得 [Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),该功能由 Claude Code 通过获取的标志启用586* 获得 [Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),该功能由 Claude Code 通过获取的标志启用

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

588* 让 Claude Code [排除其输入 schema 会被 API 拒绝的 MCP 工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas)588* 让 Claude Code [排除其输入 schema 会被 API 拒绝的 MCP 工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas)

589* 让 Claude Code [在终端会话空闲时压缩较长的对话](https://code.claude.com/docs/zh-CN/settings-reference.md#idlecompaction),时机为一小时的提示词缓存即将过期前不久

590 589 

591### 安装或升级后的首个会话590### 安装或升级后的首个会话

592 591 

errors.md +66 −11

Details

59| `Could not resolve authentication method` | [身份验证](#could-not-resolve-authentication-method) |59| `Could not resolve authentication method` | [身份验证](#could-not-resolve-authentication-method) |

60| `Invalid API key` | [身份验证](#invalid-api-key) |60| `Invalid API key` | [身份验证](#invalid-api-key) |

61| `Your apiKeyHelper script is failing` | [身份验证](#your-apikeyhelper-script-is-failing) |61| `Your apiKeyHelper script is failing` | [身份验证](#your-apikeyhelper-script-is-failing) |

62| `Claude Code didn't send your claude.ai login, because the API key helper your administrator set isn't in effect` | [身份验证](#claude-code-didnt-send-your-claude-ai-login) |

62| `Invalid auth token · Fix external auth token` | [身份验证](#invalid-request-header-value) |63| `Invalid auth token · Fix external auth token` | [身份验证](#invalid-request-header-value) |

63| `Invalid ANTHROPIC_CUSTOM_HEADERS · Fix the environment variable` | [身份验证](#invalid-request-header-value) |64| `Invalid ANTHROPIC_CUSTOM_HEADERS · Fix the environment variable` | [身份验证](#invalid-request-header-value) |

64| `Invalid request header from the environment · Fix the environment variable` | [身份验证](#invalid-request-header-value) |65| `Invalid request header from the environment · Fix the environment variable` | [身份验证](#invalid-request-header-value) |


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

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

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

330| `<path> is outside <dirs>; the permissions.blockWritesOutsideWorkingDirectories setting blocks writes outside the working directories` | [工具错误](#setting-blocks-writes-outside-the-working-directories) |

331| `<path>: Writes outside the working directories are blocked (permissions.blockWritesOutsideWorkingDirectories)` | [工具错误](#setting-blocks-writes-outside-the-working-directories) |

332| `Writes to Claude Code settings files are blocked while permissions.blockWritesOutsideWorkingDirectories is on` | [工具错误](#writes-to-claude-code-settings-files-are-blocked) |

329| `cannot contain null bytes (\0)` | [工具错误](#path-cannot-contain-null-bytes) |333| `cannot contain null bytes (\0)` | [工具错误](#path-cannot-contain-null-bytes) |

330| `Path contains null bytes` | [工具错误](#path-cannot-contain-null-bytes) |334| `Path contains null bytes` | [工具错误](#path-cannot-contain-null-bytes) |

331| `command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run` | [工具错误](#command-contains-an-invisible-character) |335| `command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run` | [工具错误](#command-contains-an-invisible-character) |


548 552 

549* 检查 [status.claude.com](https://status.claude.com) 或消息中指出的提供商状态页面,查看是否有活跃事件553* 检查 [status.claude.com](https://status.claude.com) 或消息中指出的提供商状态页面,查看是否有活跃事件

550* 等待一分钟,然后再次发送您的消息。您的原始消息仍在对话中,因此对于较长的提示词,您可以输入 `try again` 而不是粘贴整个内容。554* 等待一分钟,然后再次发送您的消息。您的原始消息仍在对话中,因此对于较长的提示词,您可以输入 `try again` 而不是粘贴整个内容。

551* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),并且每个请求都以这种方式失败,请检查您的网关是否拒绝了 Claude Code 默认发送的工具搜索字段。要进行检查,请按照[通过 LLM 网关使用工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)中的说明设置 `ENABLE_TOOL_SEARCH=false`,然后重试。在 v2.1.304 之前,除非您使用 `ENABLE_TOOL_SEARCH` 启用工具搜索,否则在网关后面工具搜索处于关闭状态。555* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),并且每个请求都以这种方式失败,请检查您的网关及其上游是否接受[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)字段。默认情况下,Claude Code 会发送 `defer_loading` 工具字段和 `tool_reference` 块,并附带启用它们的 `anthropic-beta` 标头。在 v2.1.304 之前,除非您使用 `ENABLE_TOOL_SEARCH` 启用工具搜索,否则在网关后面工具搜索处于关闭状态。

552* 如果错误持续存在且没有发布事件,请运行 `/feedback` 以便 Anthropic 可以使用您的请求详情进行调查。如果您的环境中 `/feedback` 不可用,请参阅[报告错误](#report-an-error)。556* 如果错误持续存在且没有发布事件,请运行 `/feedback` 以便 Anthropic 可以使用您的请求详情进行调查。如果您的环境中 `/feedback` 不可用,请参阅[报告错误](#report-an-error)。

553 557 

554### API Error: Repeated 529 Overloaded errors558### API Error: Repeated 529 Overloaded errors


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

673```677```

674 678 

675在交互式会话中,工具调用下方会显示一行暗色的 `Not run · auto mode's check had no usable answer`,而不是此消息。按 `Ctrl+O` 可在[会话记录查看器](https://code.claude.com/docs/zh-CN/interactive-mode.md#transcript-viewer)中阅读该消息。[The server returned no safety verdict](#the-server-returned-no-safety-verdict) 下的 `gave no verdict` 拒绝也显示同样的一行。在 v2.1.296 之前,该消息以红色错误的形式显示在调用下方。679在交互式会话中,工具调用下方会显示一行暗色的 `Not run · auto mode's check had no usable answer`,而不是此消息。这一行也可以替代表明[服务器未给出判决](#the-server-returned-no-safety-verdict)的消息,或者在远程会话之外,替代以 `Auto mode could not evaluate` 开头的消息。按 `Ctrl+O` 可在[会话记录查看器](https://code.claude.com/docs/zh-CN/interactive-mode.md#transcript-viewer)中阅读其消息。在 v2.1.296 之前,该消息以红色错误的形式显示。

676 680 

677当 Claude Code 可以确定故障类别时,它在 `temporarily unavailable` 后的括号中指出该类别,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。类别为 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重复出现,请检查您的连接;请参阅[无法连接到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,消息从不指出类别,读作 `Wait briefly and then try this action again`。681当 Claude Code 可以确定故障类别时,它在 `temporarily unavailable` 后的括号中指出该类别,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。类别为 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重复出现,请检查您的连接;请参阅[无法连接到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,消息从不指出类别,读作 `Wait briefly and then try this action again`。

678 682 


833* 运行 `/usage-credits` 在 Pro、Max 和 Ultra 上购买额外用量,或在 Team 和 Enterprise 上向您的管理员请求。有关如何计费的信息,请参阅 [usage credits for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)。837* 运行 `/usage-credits` 在 Pro、Max 和 Ultra 上购买额外用量,或在 Team 和 Enterprise 上向您的管理员请求。有关如何计费的信息,请参阅 [usage credits for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)。

834* 要升级您的套餐以获得更高的基础限制,请参阅 [claude.com/pricing](https://claude.com/pricing)838* 要升级您的套餐以获得更高的基础限制,请参阅 [claude.com/pricing](https://claude.com/pricing)

835 839 

836在窗口用完之前,Claude Code 可以警告您已使用了大部分额度,显示类似 `You've used 85% of your session limit · resets 3:45pm` 的消息。要持续监视您的剩余额度,请将 `rate_limits` 字段添加到 [custom status line](https://code.claude.com/docs/zh-CN/statusline.md#rate-limit-usage),或在 Desktop app 中单击模型选择器旁边的 [usage ring](https://code.claude.com/docs/zh-CN/desktop.md#check-usage)。840在窗口用完之前,Claude Code 可以警告您已使用了大部分额度,显示类似 `You've used 85% of your session limit · resets 3:45pm` 的消息。要持续监视您的剩余额度,请将 `rate_limits` 字段添加到 [custom status line](https://code.claude.com/docs/zh-CN/statusline.md#rate-limit-usage),或在 Desktop app 中单击 [usage ring](https://code.claude.com/docs/zh-CN/desktop.md#check-usage)。

837 841 

838### Usage credits required for 1M context842### Usage credits required for 1M context

839 843 


1074* 运行 `/status` 查看失败情况,并确认 `apiKeyHelper` 是当前生效的凭据来源。`apiKeyHelper` 行会显示 `Failing` 以及上一次失败的详细信息,例如退出码和命令的错误输出,并会在下一次成功运行后消失。在 v2.1.274 之前,`/status` 只显示凭据来源,不显示失败情况。1078* 运行 `/status` 查看失败情况,并确认 `apiKeyHelper` 是当前生效的凭据来源。`apiKeyHelper` 行会显示 `Failing` 以及上一次失败的详细信息,例如退出码和命令的错误输出,并会在下一次成功运行后消失。在 v2.1.274 之前,`/status` 只显示凭据来源,不显示失败情况。

1075* 每次命令失败时,其退出码和错误输出也会显示在终端的 `Authentication` 面板中。在 v2.1.212 之前,该面板的标题为 `Cloud authentication`。1079* 每次命令失败时,其退出码和错误输出也会显示在终端的 `Authentication` 面板中。在 v2.1.212 之前,该面板的标题为 `Cloud authentication`。

1076 1080 

1081### Claude Code didn't send your claude.ai login

1082 

1083请将这条完整消息发送给您的管理员,其中列出了他们可以进行的更改。此消息表示 Claude Code 拒绝了您的提示词。在您使用 claude.ai 登录期间,Claude Code 会持续拒绝提示词,重启后也是如此:

1084 

1085```text theme={null}

1086Claude Code didn't send your claude.ai login, because the API key helper your administrator set isn't in effect. Your organization's managed settings may be overriding it. Ask your administrator to keep the key helper and its API address in effect, to name Anthropic's API address in those managed settings, or to remove the key helper. Run /status to see your setting sources.

1087```

1088 

1089**处理方法:**

1090 

1091* 要告诉管理员您的机器有哪些托管来源,请在 Claude Code 提示符处运行 `/status`,并复制 [`Setting sources` 行](https://code.claude.com/docs/zh-CN/managed-settings#read-the-source-in-/status)。如果出现 `Skipped sources` 行,也请一并复制

1092* 如果您负责管理这些设置,请参阅[为什么机器的密钥 helper 未生效](https://code.claude.com/docs/zh-CN/server-managed-settings.md#machine-apikeyhelper-not-in-effect)

1093 

1077### 请求标头值无效1094### 请求标头值无效

1078 1095 

1079Claude Code 即将作为请求标头发送的某个值包含 HTTP 标头无法承载的字符:换行符、NUL 字节,或 `U+00FF` 以上的字符(例如弯引号或零宽空格)。Claude Code 会在发送任何内容之前停止请求,并指出需要修正的变量或设置。常见原因是从文档或聊天中粘贴的凭据带有不可见字符或多余的换行符。1096Claude Code 即将作为请求标头发送的某个值包含 HTTP 标头无法承载的字符:换行符、NUL 字节,或 `U+00FF` 以上的字符(例如弯引号或零宽空格)。Claude Code 会在发送任何内容之前停止请求,并指出需要修正的变量或设置。常见原因是从文档或聊天中粘贴的凭据带有不可见字符或多余的换行符。


1333* 如果 `/status` 只显示您的登录,请运行一次 `/login`。如果凭据已被撤销,新的登录会替换它。1350* 如果 `/status` 只显示您的登录,请运行一次 `/login`。如果凭据已被撤销,新的登录会替换它。

1334* 如果同一登录账户再次出现相同消息,说明该账户或组织已不再活跃。请检查 `/status` 报告的账户和组织,并请您的组织管理员恢复访问权限。1351* 如果同一登录账户再次出现相同消息,说明该账户或组织已不再活跃。请检查 `/status` 报告的账户和组织,并请您的组织管理员恢复访问权限。

1335* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),`401` 之后的文本是您网关的消息而不是 Anthropic 的消息,`/login` 不会改变它。请改为修正网关所需的凭据。1352* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),`401` 之后的文本是您网关的消息而不是 Anthropic 的消息,`/login` 不会改变它。请改为修正网关所需的凭据。

1336* 如果在网关已获得所需凭据后,每个请求仍以 `401` 失败,请检查网关是否拒绝了 Claude Code 默认发送的工具搜索字段。要进行检查,请按照[通过 LLM 网关进行工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)中的说明设置 `ENABLE_TOOL_SEARCH=false`,然后重试。在 v2.1.304 之前,除非您使用 `ENABLE_TOOL_SEARCH` 启用,否则在网关后工具搜索处于关闭状态。1353* 如果您的网关已获得其所需的凭据,但每个请求仍以 `401` 失败,请检查网关及其上游是否接受[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)字段。默认情况下,Claude Code 会发送 `defer_loading` 工具字段和 `tool_reference` 块,以及启用它们的 `anthropic-beta` 标头。在 v2.1.304 之前,在网关之后工具搜索默认关闭,除非您通过 `ENABLE_TOOL_SEARCH` 将其打开。

1337 1354 

1338### 登录已过期1355### 登录已过期

1339 1356 


1936* 在同一个 shell 中运行 `curl -I https://api.anthropic.com`,确认可以访问 API 主机。在 Windows PowerShell 中请使用 `curl.exe -I https://api.anthropic.com`,以避免使用内置的 `Invoke-WebRequest` 别名。1953* 在同一个 shell 中运行 `curl -I https://api.anthropic.com`,确认可以访问 API 主机。在 Windows PowerShell 中请使用 `curl.exe -I https://api.anthropic.com`,以避免使用内置的 `Invoke-WebRequest` 别名。

1937* 如果您位于企业代理之后,请在启动 Claude Code 之前设置 `HTTPS_PROXY`,并参阅[网络配置](https://code.claude.com/docs/zh-CN/network-config.md)1954* 如果您位于企业代理之后,请在启动 Claude Code 之前设置 `HTTPS_PROXY`,并参阅[网络配置](https://code.claude.com/docs/zh-CN/network-config.md)

1938* 如果您通过 LLM 网关或中继进行路由,请将 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为其地址。有关设置方法,请参阅[将 Claude Code 连接到 LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md)。1955* 如果您通过 LLM 网关或中继进行路由,请将 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为其地址。有关设置方法,请参阅[将 Claude Code 连接到 LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md)。

1939* 如果 `ANTHROPIC_BASE_URL` 已指向您的网关,而每个请求都以 `Connection dropped` 结束,请检查您的网关是否拒绝了 Claude Code 默认发送的工具搜索字段。要进行检查,请按照[通过 LLM 网关使用工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)中的说明设置 `ENABLE_TOOL_SEARCH=false`,然后重试。在 v2.1.304 之前,在网关之后工具搜索默认处于关闭状态,除非您通过 `ENABLE_TOOL_SEARCH` 将其启用。1956* 如果 `ANTHROPIC_BASE_URL` 已指向您的网关,而每个请求都以 `Connection dropped` 结束,请检查您的网关及其上游是否接受[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)字段。默认情况下,Claude Code 会发送 `defer_loading` 工具字段和 `tool_reference` 块,以及启用它们的 `anthropic-beta` 标头。在 v2.1.304 之前,在网关之后工具搜索默认处于关闭状态,除非您通过 `ENABLE_TOOL_SEARCH` 将其启用。

1940* 确保您的防火墙允许[网络访问要求](https://code.claude.com/docs/zh-CN/network-config.md#network-access-requirements)中列出的主机1957* 确保您的防火墙允许[网络访问要求](https://code.claude.com/docs/zh-CN/network-config.md#network-access-requirements)中列出的主机

1941* 间歇性失败会[自动重试](#automatic-retries)1958* 间歇性失败会[自动重试](#automatic-retries)

1942 1959 


2471**要做什么:**2488**要做什么:**

2472 2489 

2473* 如果消息包含 `context_management: Extra inputs are not permitted`,请将 [Claude Code 更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)到 v2.1.304 或更高版本。更新后,Claude Code 会在遇到此拒绝时,不带该字段再发送一次请求。在 v2.1.304 之前,Claude Code 不会针对此拒绝进行重试。2490* 如果消息包含 `context_management: Extra inputs are not permitted`,请将 [Claude Code 更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)到 v2.1.304 或更高版本。更新后,Claude Code 会在遇到此拒绝时,不带该字段再发送一次请求。在 v2.1.304 之前,Claude Code 不会针对此拒绝进行重试。

2474* 如果消息指出 `defer_loading` 或 `tool_reference`,请更新 Claude Code 或关闭[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway):2491* 如果消息指出 `defer_loading` 或 `tool_reference`,请将 [Claude Code 更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)至 v2.1.305 或更高版本。之后 Claude Code 会通过不带工具搜索字段[再发送一次请求](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#retry-without-tool-search)来应对这种拒绝。

2475 * 将 [Claude Code 更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)到 v2.1.305 或更高版本。之后 Claude Code 会在遇到此拒绝时,不带工具搜索字段再发送一次请求。

2476 * 如果您无法更新,或更新后消息仍然出现,请在 shell 中或您的[设置 `env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 中设置 `ENABLE_TOOL_SEARCH=false`。如果某个设置文件已设置了该变量,请在那里修改,因为该值[可能覆盖 shell 中的 export](https://code.claude.com/docs/zh-CN/settings-reference.md#how-env-values-interact-with-your-shell)。之后 Claude Code 会预先加载 MCP 工具。

2477* 如果您的网关丢弃了该标头,请将其配置为转发 `anthropic-beta` 标头。有关网关必须转发的内容,请参阅[功能透传](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through)。2492* 如果您的网关丢弃了该标头,请将其配置为转发 `anthropic-beta` 标头。有关网关必须转发的内容,请参阅[功能透传](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through)。

2478* 作为回退方案,在启动前设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/zh-CN/env-vars)。[禁用预发布功能](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖确切范围。2493* 作为回退方案,在启动前设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/zh-CN/env-vars)。[禁用预发布功能](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖确切范围。

2479 2494 


2552* 使用别名(如 `sonnet` 或 `opus`)而不是完整的版本化 ID。别名解析为维护的默认值,因此它们不会过时。请参阅[模型配置](https://code.claude.com/docs/zh-CN/model-config.md)。2567* 使用别名(如 `sonnet` 或 `opus`)而不是完整的版本化 ID。别名解析为维护的默认值,因此它们不会过时。请参阅[模型配置](https://code.claude.com/docs/zh-CN/model-config.md)。

2553* 如果错误的模型在 CLI 中不断返回,则某处设置了过时的 ID。按[优先级顺序](https://code.claude.com/docs/zh-CN/model-config.md#setting-your-model)检查您可以设置模型的位置,并删除过时的值。2568* 如果错误的模型在 CLI 中不断返回,则某处设置了过时的 ID。按[优先级顺序](https://code.claude.com/docs/zh-CN/model-config.md#setting-your-model)检查您可以设置模型的位置,并删除过时的值。

2554* Claude Code 将过期的 claude.ai 登录报告为[登录过期](#login-expired),而不是此错误。在 v2.1.206 之前,无法再刷新的过期登录对每个模型都失败,显示此错误;如果您在较旧版本上看到这种情况,请运行 `/login`。2569* Claude Code 将过期的 claude.ai 登录报告为[登录过期](#login-expired),而不是此错误。在 v2.1.206 之前,无法再刷新的过期登录对每个模型都失败,显示此错误;如果您在较旧版本上看到这种情况,请运行 `/login`。

2555* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),且所有模型都以这种方式失败,请检查您的网关是否拒绝了 Claude Code 默认发送的工具搜索字段。要进行检查,请按照[通过 LLM 网关使用工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)中的说明设置 `ENABLE_TOOL_SEARCH=false`,然后重试。在 v2.1.304 之前,在网关后面工具搜索默认关闭,除非您使用 `ENABLE_TOOL_SEARCH` 将其启用。2570* 如果 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 指向 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway),且每个模型都以这种方式失败,请检查您的网关及其上游是否接受[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#tool-search-through-a-gateway)字段。默认情况下,Claude Code 会发送 `defer_loading` 工具字段和 `tool_reference` 块,以及启用它们的 `anthropic-beta` 标头。在 v2.1.304 之前,在网关后面时工具搜索是关闭的,除非您通过 `ENABLE_TOOL_SEARCH` 开启它。

2556* 对于 Google Cloud 的 Agent Platform 部署,请参阅 [Google Cloud 的 Agent Platform 故障排除](https://code.claude.com/docs/zh-CN/google-vertex-ai.md#troubleshooting)。2571* 对于 Google Cloud 的 Agent Platform 部署,请参阅 [Google Cloud 的 Agent Platform 故障排除](https://code.claude.com/docs/zh-CN/google-vertex-ai.md#troubleshooting)。

2557 2572 

2558### 模型不是公认的模型 ID2573### 模型不是公认的模型 ID


4563* 如果 Claude 应该能够更改该文件,请在 `/permissions` 或[设置](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)中移除或缩小该 `Read` 拒绝规则4578* 如果 Claude 应该能够更改该文件,请在 `/permissions` 或[设置](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)中移除或缩小该 `Read` 拒绝规则

4564* 如果该文件必须保持不变,请保留该规则,并为同一路径添加 `Edit` 拒绝规则,以同时阻止 NotebookEdit 工具4579* 如果该文件必须保持不变,请保留该规则,并为同一路径添加 `Edit` 拒绝规则,以同时阻止 NotebookEdit 工具

4565 4580 

4581### Setting blocks writes outside the working directories

4582 

4583当 Claude 尝试写入文件且工具调用因以下消息失败时,表示该路径位于会话的[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外,且 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) 已启用:

4584 

4585```text wrap theme={null}

4586<path> is outside <dirs>; the permissions.blockWritesOutsideWorkingDirectories setting blocks writes outside the working directories. Ask the user to add the directory with /add-dir, or to remove that setting.

4587```

4588 

4589在所有权限模式下,Claude Code 都会拒绝该写入。拒绝消息也可能是:

4590 

4591```text wrap theme={null}

4592<path>: Writes outside the working directories are blocked (permissions.blockWritesOutsideWorkingDirectories). Add the directory with /add-dir, or remove that setting.

4593```

4594 

4595**处理方法:**

4596 

4597* 如果 Claude 不应写入该位置,则无需任何操作

4598* 如需让 Claude 写入包含该路径的现有目录,请在 Claude Code 输入框中运行 `/add-dir <directory>`,或在启动 Claude Code 时传入 `--add-dir <directory>`

4599* 如果该路径是 Claude Code 的设置文件,例如 `~/.claude/settings.json`,请自行编辑它。使用 `/add-dir` 添加其所在目录并无帮助,因为 Claude Code 随后会[将其作为设置文件](#writes-to-claude-code-settings-files-are-blocked)拒绝写入。

4600* 如需让某个目录在每个会话中都保持可写,请在您的用户设置或托管设置中将其列在 [`permissions.additionalDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-additionaldirectories) 下

4601* 如需关闭 `permissions.blockWritesOutsideWorkingDirectories`,请从所有设置了它的设置文件中将其移除,然后重新启动 Claude Code

4602* 如果您的设置文件中都没有 `permissions.blockWritesOutsideWorkingDirectories`,它可能来自 `--settings` 或宿主应用程序。当 Claude Code 无法读取您[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#keys-that-fail-closed)中的 `permissions` 时,也会拒绝这些写入。请咨询启动或管理该会话的人员。

4603 

4604### Writes to Claude Code settings files are blocked

4605 

4606当 Claude 尝试写入文件且工具调用因以下消息失败时,表示 Claude Code 将该文件视为其设置文件之一,且 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) 已启用:

4607 

4608```text wrap theme={null}

4609<path>: Writes to Claude Code settings files are blocked while permissions.blockWritesOutsideWorkingDirectories is on, because a settings file can lift that block. While a managed settings folder cannot be resolved, any .json file counts as one.

4610```

4611 

4612**处理方法:**

4613 

4614* 如需更改某项设置,请自行编辑该设置文件

4615* 如需让 Claude 再次编辑设置文件,请从所有设置了 `permissions.blockWritesOutsideWorkingDirectories` 的设置文件中将其移除,然后重新启动 Claude Code

4616* 如果该文件不是您的设置文件之一,请在 Claude Code 视为设置文件的其他文件中查找它:

4617 * **您传给 `--agents` 或 `--mcp-config` 的文件**:请自行编辑它

4618 * **[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md#security-considerations)的存储副本及与其一起保存的文件**:请让[所有者](https://code.claude.com/docs/zh-CN/server-managed-settings.md#access-control)在服务器托管设置中更改该设置。

4619 * **当 Claude Code 无法确定 [`managed-settings.d/`](https://code.claude.com/docs/zh-CN/managed-settings#split-a-file-based-policy-across-teams) 文件夹指向何处时的任何 `.json` 文件**:请让您的管理员检查该文件夹

4620 

4566### Path cannot contain null bytes4621### Path cannot contain null bytes

4567 4622 

4568文件工具调用的路径或模式参数包含空字节,而文件系统和搜索工具无法接受空字节。Read、Write、Edit、NotebookEdit、Glob 和 Grep 会检查这一点,消息会指出工具和参数:4623文件工具调用的路径或模式参数包含空字节,而文件系统和搜索工具无法接受空字节。Read、Write、Edit、NotebookEdit、Glob 和 Grep 会检查这一点,消息会指出工具和参数:


6147在读取 stderr 的脚本或测试框架中,请匹配 `[claude-code:unrecognized_model]` 前缀。在前缀和一个空格之后,Claude Code 会写入一个单行 JSON 对象。Claude Code 可能会在后续版本中向其中添加字段,因此请忽略任何您未预期的字段。它至少会写入以下两个字段:6202在读取 stderr 的脚本或测试框架中,请匹配 `[claude-code:unrecognized_model]` 前缀。在前缀和一个空格之后,Claude Code 会写入一个单行 JSON 对象。Claude Code 可能会在后续版本中向其中添加字段,因此请忽略任何您未预期的字段。它至少会写入以下两个字段:

6148 6203 

6149* `model`:您配置的模型字符串6204* `model`:您配置的模型字符串

6150* `query_source`:使用该模型的请求路径。对于 `-p` 运行,Claude Code 报告 `sdk`;对于子代理,报告以 `agent:` 开头的值。6205* `query_source`:使用该模型的请求路径。例如,对于 `-p` 运行的主对话,该值为 `sdk`;对于子代理,该值以 `agent:` 开头。

6151 6206 

6152根据运行方式,Claude Code 会将该行写入以下两个位置之一:6207根据运行方式,Claude Code 会将该行写入以下两个位置之一:

6153 6208 

6154* 在使用 `-p` 的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,Claude Code 在任何 `--output-format` 下都会将其写入 stderr,因此您无需过滤该行即可解析 stdout6209* 在使用 `-p` 的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,Claude Code 在任何 `--output-format` 下都会将其写入 stderr,因此您无需过滤该行即可解析 stdout

6155* 在交互式会话或[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,Claude Code 会改为将其写入调试日志;使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它6210* 在交互式会话或[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,Claude Code 会改为将其写入调试日志;使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它

6156 6211 

6157Claude Code 每个进程对每个模型字符串只写入一次该行。对于其他每个无法识别的 ID,例如[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)或[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage)使用的 ID,它会单独写入一行。6212Claude Code 每个进程对每个模型 ID 只写入一次该行。对于其他每个无法识别的 ID,例如[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)或[后台功能](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)使用的 ID,它会单独写入一行。

6158 6213 

6159对于能解析到可识别模型的提供商 ID,Claude Code 不会写入该行,例如 Amazon Bedrock 的 `us.anthropic.claude-...` ID、带有 `@` 版本后缀的 Google Cloud Agent Platform ID,以及包含 Claude 模型 ID 的 Microsoft Foundry 部署名称。对于 Amazon Bedrock [应用推理配置文件 ARN](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#map-each-model-version-to-an-inference-profile),Claude Code 检查的是其背后的模型,而不是 ARN 本身。对于无法解析的 ARN(例如输入错误的 ARN),它不会写入任何行。6214对于能解析到可识别模型的提供商 ID,Claude Code 不会写入该行,例如 Amazon Bedrock 的 `us.anthropic.claude-...` ID、带有 `@` 版本后缀的 Google Cloud Agent Platform ID,以及包含 Claude 模型 ID 的 Microsoft Foundry 部署名称。对于 Amazon Bedrock [应用推理配置文件 ARN](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#map-each-model-version-to-an-inference-profile),Claude Code 检查的是其背后的模型,而不是 ARN 本身。对于无法解析的 ARN(例如输入错误的 ARN),它不会写入任何行。

6160 6215 

fast-mode.md +8 −1

Details

14 14 

15快速模式不是一个不同的模型。它使用 Claude Opus,但采用不同的 API 配置,优先考虑速度而不是成本效率。您获得相同的质量和功能,只是响应速度更快。快速模式在 Opus 5.5、Opus 5 和 Opus 4.8 上受支持。它在 Sonnet、Haiku 或其他模型上不可用。15快速模式不是一个不同的模型。它使用 Claude Opus,但采用不同的 API 配置,优先考虑速度而不是成本效率。您获得相同的质量和功能,只是响应速度更快。快速模式在 Opus 5.5、Opus 5 和 Opus 4.8 上受支持。它在 Sonnet、Haiku 或其他模型上不可用。

16 16 

17> [!WARNING]

18>

19> Opus 4.8 的快速模式已于 2026 年 10 月 30 日弃用,并将于 2026 年 11 月 30 日移除。如果在该日期之后您仍在使用 Opus 4.8 且开启了快速模式,API 将拒绝您的请求。请在该日期之前切换到 Opus 5.5,或在会话中关闭快速模式:

20>

21> * **保留快速模式**:使用 [`/model`](https://code.claude.com/docs/zh-CN/model-config#setting-your-model) 切换到 [Opus 5.5](https://code.claude.com/docs/zh-CN/model-config.md#model-aliases),这需要 Claude Code v2.1.280 或更高版本。切换后快速模式保持开启。如果新会话仍以 Opus 4.8 启动,请参阅[新会话启动时使用的模型与您选择的不同](https://code.claude.com/docs/zh-CN/model-config.md#a-new-session-starts-on-a-different-model-than-you-picked)。

22> * **以标准速度继续使用 Opus 4.8**:运行 [`/fast off`](https://code.claude.com/docs/zh-CN/commands)

23 

17Opus 4.7 不支持快速模式,因此切换到它会关闭快速模式。Opus 4.7 的快速模式已于 2026 年 6 月 25 日弃用,并于 2026 年 7 月 24 日移除。24Opus 4.7 不支持快速模式,因此切换到它会关闭快速模式。Opus 4.7 的快速模式已于 2026 年 6 月 25 日弃用,并于 2026 年 7 月 24 日移除。

18 25 

19需要了解的内容:26需要了解的内容:


88 95 

89* **Pro、Max 和 Ultra**:您从使用额度中支付快速模式费用。转到 claude.ai 上的 [**Settings > Usage**](https://claude.ai/settings/usage),其中 **Usage credits** 部分显示您本月在使用额度中花费了多少。该数字包括快速模式,但不单独列出。96* **Pro、Max 和 Ultra**:您从使用额度中支付快速模式费用。转到 claude.ai 上的 [**Settings > Usage**](https://claude.ai/settings/usage),其中 **Usage credits** 部分显示您本月在使用额度中花费了多少。该数字包括快速模式,但不单独列出。

90* **Team 和 Enterprise**:您的组织从其使用额度中支付您的快速模式使用费用。要查看您自己的使用额度支出,运行 [`/usage`](https://code.claude.com/docs/zh-CN/costs#check-your-usage-credits-spend)。有关您的组织在哪里看到该支出,请参阅 [Claude for Teams and Enterprise](https://code.claude.com/docs/zh-CN/costs.md#claude-for-teams-and-enterprise)。97* **Team 和 Enterprise**:您的组织从其使用额度中支付您的快速模式使用费用。要查看您自己的使用额度支出,运行 [`/usage`](https://code.claude.com/docs/zh-CN/costs#check-your-usage-credits-spend)。有关您的组织在哪里看到该支出,请参阅 [Claude for Teams and Enterprise](https://code.claude.com/docs/zh-CN/costs.md#claude-for-teams-and-enterprise)。

91* **Claude Console**:您的组织使用其 API 使用的其余部分支付快速模式费用。在 Console [Usage](https://platform.claude.com/usage) 和 [Cost](https://platform.claude.com/cost) 页面上,在 **Group by** 菜单中选择 **Speed (Research Preview)** 以将快速模式与标准速度使用分开。只有当选定的日期范围包括快速模式使用时,您才会看到该选项。98* **Claude Console**:您的组织使用其 API 使用的其余部分支付快速模式费用。在 Console [Usage](https://platform.claude.com/usage) 和 [Cost](https://platform.claude.com/cost) 页面上,在 **Group by** 菜单中选择 **Speed (research preview)** 以将快速模式与标准速度使用分开。只有当选定的日期范围包括快速模式使用时,您才会看到该选项。

92 99 

93## 决定何时使用快速模式100## 决定何时使用快速模式

94 101 

Details

192 192 

193当 Claude Code 启动并配置了 Google Cloud 的 Agent Platform 时,它会验证它打算使用的模型在您的项目中是否可访问。193当 Claude Code 启动并配置了 Google Cloud 的 Agent Platform 时,它会验证它打算使用的模型在您的项目中是否可访问。

194 194 

195如果您固定了一个比当前 Claude Code 默认值更旧的模型版本,并且您的项目可以调用较新版本,Claude Code 会提示您更新固定。接受会将新的模型 ID 写入您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)并重启 Claude Code。拒绝会被记住,直到下一个默认版本更改。195您可能固定了一个比当前 Claude Code 默认值更旧的模型版本。如果您的项目可以调用较新版本,Claude Code 会提示您更新固定:

196 

197* **如果您接受**:Claude Code 会将新的模型 ID 写入您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)并重启

198* **如果您拒绝**:Claude Code 会记住您的选择,直到下一次默认版本更改

199 

200对于[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)的 `env` 块中的固定,Claude Code 不会运行检查,也不会显示提示。

196 201 

197如果您没有固定模型,并且当前默认值在您的项目中不可用,Claude Code 会在当前会话中回退并显示通知。它首先尝试默认模型的早期版本,当默认值是 Opus 模型且没有可用的 Opus 版本时,会回退到默认 Sonnet 模型。回退不会被持久化。在 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 中启用较新的模型或[固定一个版本](#5-pin-model-versions)以使选择永久化。202如果您没有固定模型,并且当前默认值在您的项目中不可用,Claude Code 会在当前会话中回退并显示通知。它首先尝试默认模型的早期版本,当默认值是 Opus 模型且没有可用的 Opus 版本时,会回退到默认 Sonnet 模型。回退不会被持久化。在 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 中启用较新的模型或[固定一个版本](#5-pin-model-versions)以使选择永久化。

198 203 

hooks.md +3 −3

Details

580| 字段 | 必需 | 描述 |580| 字段 | 必需 | 描述 |

581| :- | :- | :- |581| :- | :- | :- |

582| `prompt` | 是 | 发送给模型的提示文本。使用 `$ARGUMENTS` 作为 hook 输入 JSON 的占位符。用反斜杠转义以包含文字文本:`\$1.00` 呈现为 `$1.00` |582| `prompt` | 是 | 发送给模型的提示文本。使用 `$ARGUMENTS` 作为 hook 输入 JSON 的占位符。用反斜杠转义以包含文字文本:`\$1.00` 呈现为 `$1.00` |

583| `model` | 否 | 用于评估的模型。默认为 Claude Code 用于 [后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage) 的模型 |583| `model` | 否 | 用于评估的模型。默认为 Claude Code 用于 [后台功能](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables) 的模型 |

584 584 

585### 按路径引用脚本585### 按路径引用脚本

586 586 


3912 3912 

3913基于提示的 hooks 不执行 Bash 命令,而是:3913基于提示的 hooks 不执行 Bash 命令,而是:

3914 3914 

39151. 将 hook 输入和您的提示发送到 Claude 模型,默认为 Claude Code 用于[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage)的模型39151. 将 hook 输入和您的提示词发送到 Claude 模型,默认为 Claude Code 用于[后台功能](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)的模型

39162. LLM 使用包含决定的结构化 JSON 响应39162. LLM 使用包含决定的结构化 JSON 响应

39173. Claude Code 自动处理决定39173. Claude Code 自动处理决定

3918 3918 


3945| :- | :- | :- |3945| :- | :- | :- |

3946| `type` | 是 | 必须是 `"prompt"` |3946| `type` | 是 | 必须是 `"prompt"` |

3947| `prompt` | 是 | 要发送给 LLM 的提示文本。使用 `$ARGUMENTS` 作为 hook 输入 JSON 的占位符。如果 `$ARGUMENTS` 不存在,输入 JSON 被追加到提示 |3947| `prompt` | 是 | 要发送给 LLM 的提示文本。使用 `$ARGUMENTS` 作为 hook 输入 JSON 的占位符。如果 `$ARGUMENTS` 不存在,输入 JSON 被追加到提示 |

3948| `model` | 否 | 用于评估的模型。默认为 Claude Code 用于[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage)的模型 |3948| `model` | 否 | 用于评估的模型。默认为 Claude Code 用于[后台功能](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)的模型 |

3949| `timeout` | 否 | 超时(秒)。默认值:30 |3949| `timeout` | 否 | 超时(秒)。默认值:30 |

3950| `continueOnBlock` | 否 | 在适用的事件上,`true` 将 `ok: false` 原因反馈给 Claude 并继续而不是结束转轮。默认值:`false`。有关每个事件的行为,请参阅[响应架构](#response-schema) |3950| `continueOnBlock` | 否 | 在适用的事件上,`true` 将 `ok: false` 原因反馈给 Claude 并继续而不是结束转轮。默认值:`false`。有关每个事件的行为,请参阅[响应架构](#response-schema) |

3951 3951 

hooks-guide.md +1 −1

Details

192| `agent_completed` | 某个后台会话完成或失败。仅在 [Agent 视图](https://code.claude.com/docs/zh-CN/agent-view.md)打开时触发 |192| `agent_completed` | 某个后台会话完成或失败。仅在 [Agent 视图](https://code.claude.com/docs/zh-CN/agent-view.md)打开时触发 |

193| `quota_auto_resume_fired` | 在 claude.ai 用量限制暂停任务后,Claude Code 继续执行您的任务:在重置时继续,或者当您在等待期间于 Claude Code 中执行的某些操作(例如添加使用额度、升级套餐或切换模型)使用量重新可用时更早继续,[模型设置例外](https://code.claude.com/docs/zh-CN/interactive-mode.md#wait-for-a-usage-limit-to-reset)除外 |193| `quota_auto_resume_fired` | 在 claude.ai 用量限制暂停任务后,Claude Code 继续执行您的任务:在重置时继续,或者当您在等待期间于 Claude Code 中执行的某些操作(例如添加使用额度、升级套餐或切换模型)使用量重新可用时更早继续,[模型设置例外](https://code.claude.com/docs/zh-CN/interactive-mode.md#wait-for-a-usage-limit-to-reset)除外 |

194| `quota_auto_resume_stale` | 在您的计算机休眠超过约 30 分钟期间,claude.ai 用量限制已重置。Claude Code 会等待您按 `Enter`,而不是继续执行。如果休眠时间较短,它会继续执行并改为触发 `quota_auto_resume_fired` |194| `quota_auto_resume_stale` | 在您的计算机休眠超过约 30 分钟期间,claude.ai 用量限制已重置。Claude Code 会等待您按 `Enter`,而不是继续执行。如果休眠时间较短,它会继续执行并改为触发 `quota_auto_resume_fired` |

195| `quota_auto_resume_disabled` | Claude Code 结束对 claude.ai 用量限制的等待,但没有继续您的任务:[`autoContinueAtUsageLimit`](https://code.claude.com/docs/zh-CN/settings-reference#autocontinueatusagelimit) 被关闭,或者在 Claude Code 自行开始的等待期间重置时间被推迟到 24 小时以后,继续执行的任务不断触及限制,或者继续执行在到达模型之前被阻止。当您按 `Esc` 或 `Ctrl+C`,或选择 **Don't continue automatically** 时不会触发 |195| `quota_auto_resume_disabled` | Claude Code 结束对 claude.ai 用量限制的等待,但没有继续您的任务:在 Claude Code 自行开始的等待期间 [`autoContinueAtUsageLimit`](https://code.claude.com/docs/zh-CN/settings-reference#autocontinueatusagelimit) 被关闭或重置时间被推迟到 24 小时以后;继续执行的任务不断触及限制;或者继续执行在到达模型之前被阻止。当您按 `Esc` 或 `Ctrl+C`,或选择 **Don't continue automatically** 时不会触发 |

196| `plugin_notification` | 某个 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/api.md#show-something-without-starting-a-turn) 通过 `$.ui.notify` 发出通知。除非 mod 设置了 `title`,否则该 hook 的 `title` 为 mod 的名称 |196| `plugin_notification` | 某个 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/api.md#show-something-without-starting-a-turn) 通过 `$.ui.notify` 发出通知。除非 mod 设置了 `title`,否则该 hook 的 `title` 为 mod 的名称 |

197 197 

198在终端中,与在 Claude Desktop、VS Code 扩展以及其他通过 Agent SDK 响应权限请求的宿主中,Claude Code 对 `permission_prompt` 的计时方式不同。有关两种计时方式,请参阅[各通知类型的触发时机](https://code.claude.com/docs/zh-CN/hooks.md#notification)。198在终端中,与在 Claude Desktop、VS Code 扩展以及其他通过 Agent SDK 响应权限请求的宿主中,Claude Code 对 `permission_prompt` 的计时方式不同。有关两种计时方式,请参阅[各通知类型的触发时机](https://code.claude.com/docs/zh-CN/hooks.md#notification)。

Details

708 708 

709在附加的 [后台会话](https://code.claude.com/docs/zh-CN/agent-view.md#attach-to-a-session)中,`Left` 分离并将你返回到代理视图,即使答案仍在到达。附加问题在你离开时继续运行。下次你附加到会话时,覆盖层会重新打开,显示附加问题或其答案。在 v2.1.257 之前,`Left` 在那里不分离。709在附加的 [后台会话](https://code.claude.com/docs/zh-CN/agent-view.md#attach-to-a-session)中,`Left` 分离并将你返回到代理视图,即使答案仍在到达。附加问题在你离开时继续运行。下次你附加到会话时,覆盖层会重新打开,显示附加问题或其答案。在 v2.1.257 之前,`Left` 在那里不分离。

710 710 

711`/btw` 可以看到你的完整对话,但没有工具。[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)有工具,从它接收的提示开始,或者对于 [分叉](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation),从此对话的副本开始。使用 `/btw` 询问 Claude 从此会话中已知的内容;使用子代理去发现新的东西。711`/btw` 可以看到您的完整对话,或[您已打开的子代理会话记录](#ask-btw-about-a-subagent),但没有工具。[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)有工具,从它接收的提示词开始。[分叉](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation)从此对话的副本开始。使用 `/btw` 询问 Claude 从此会话中已知的内容;使用子代理去发现新的东西。

712 

713### 就子代理使用 /btw 提问

714 

715当打开了[子代理的会话记录](https://code.claude.com/docs/zh-CN/sub-agents.md#observe-and-steer-running-forks)时,Claude 会根据该会话记录而不是主对话来回答 `/btw`,因此您可以询问该子代理做了什么。之后从该会话记录发出的 `/btw` 只会看到您从该会话记录中提出的附加问题。需要 Claude Code v2.1.314 或更高版本。

716 

717在 [agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友的会话记录中,Claude 会根据主对话进行回答。

712 718 

713## 任务列表719## 任务列表

714 720 


749* **计算机睡眠后**:如果睡眠超过约 30 分钟,并且限制在睡眠期间重置,第一行显示 `Your usage limit has reset`,第二行显示 `Press enter to continue`。按 `Enter` 继续。如果睡眠时间较短,或睡眠在重置之前结束,Claude Code 会自动继续。755* **计算机睡眠后**:如果睡眠超过约 30 分钟,并且限制在睡眠期间重置,第一行显示 `Your usage limit has reset`,第二行显示 `Press enter to continue`。按 `Enter` 继续。如果睡眠时间较短,或睡眠在重置之前结束,Claude Code 会自动继续。

750* **提前**:当您使用 `/usage-credits` 完成添加 [使用额度](https://code.claude.com/docs/zh-CN/costs.md#add-usage-credits-to-your-subscription)、在 `/upgrade` 后重新登录或在等待期间使用 `/model` 切换模型时,Claude Code 会检查使用情况是否再次可用,如果可用则立即继续。它不会在您在浏览器中自行进行的升级或购买后进行检查。在 [`opusplan`](https://code.claude.com/docs/zh-CN/model-config#opusplan-model-setting) 和其他在不同模型上运行计划模式的模型设置下,Claude Code 会等待重置。756* **提前**:当您使用 `/usage-credits` 完成添加 [使用额度](https://code.claude.com/docs/zh-CN/costs.md#add-usage-credits-to-your-subscription)、在 `/upgrade` 后重新登录或在等待期间使用 `/model` 切换模型时,Claude Code 会检查使用情况是否再次可用,如果可用则立即继续。它不会在您在浏览器中自行进行的升级或购买后进行检查。在 [`opusplan`](https://code.claude.com/docs/zh-CN/model-config#opusplan-model-setting) 和其他在不同模型上运行计划模式的模型设置下,Claude Code 会等待重置。

751 757 

752继续的任务像任何其他轮次一样运行。Claude Code 仍然照常要求 [权限](https://code.claude.com/docs/zh-CN/permissions.md),因此任务可能在您离开时在提示处停止。如果再次达到限制,Claude Code 最多会自动重新启动等待两次,然后停止并显示 `Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again`。758在继续的任务中,Claude Code 仍然照常请求 [权限](https://code.claude.com/docs/zh-CN/permissions.md),因此任务可能在您离开时停在权限提示处。如果任务再次达到限制,等待会重新开始。

759 

760自动继续三次后,自动继续会停止,并显示 `Automatic continue stopped after repeated usage-limit hits` 通知。运行 `/rate-limit-options` 选择接下来的操作。当您发送另一条提示词,或从该菜单中选择一种等待方式时,计数会重新开始。对于跨越多个重置窗口运行的 [`/goal`](https://code.claude.com/docs/zh-CN/goal) 或 [会话范围的定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md),自动继续同样会在三次继续后停止。

753 761 

754### 取消等待762### 取消等待

755 763 

Details

237* 当上游拒绝 `messages` 中的 `role: "system"` 条目时,Claude Code 会在不带这些对话中途系统消息的情况下重试一次,并改为在用户消息中携带其文本。在开发者运行 `/clear` 或对话被压缩之前,该对话中的后续请求会保持这种形式237* 当上游拒绝 `messages` 中的 `role: "system"` 条目时,Claude Code 会在不带这些对话中途系统消息的情况下重试一次,并改为在用户消息中携带其文本。在开发者运行 `/clear` 或对话被压缩之前,该对话中的后续请求会保持这种形式

238* 当上游仅拒绝对话中途系统消息上的 `cache_control` 标记时,Claude Code 会保留系统消息,并在移动该标记后重试一次。该标记会放在 `messages` 中最后一个非系统消息的条目上,在该次重试以及 Claude Code 退出之前的后续请求中均是如此238* 当上游仅拒绝对话中途系统消息上的 `cache_control` 标记时,Claude Code 会保留系统消息,并在移动该标记后重试一次。该标记会放在 `messages` 中最后一个非系统消息的条目上,在该次重试以及 Claude Code 退出之前的后续请求中均是如此

239* 当上游拒绝[思考签名](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)时,包括带有 `400` 的拒绝,其消息说该块被 `bound to a different conversation`,Claude Code 会从请求中删除早期思考块,重试,并将其排除在每个后续请求之外。新响应仍然包括思考239* 当上游拒绝[思考签名](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)时,包括带有 `400` 的拒绝,其消息说该块被 `bound to a different conversation`,Claude Code 会从请求中删除早期思考块,重试,并将其排除在每个后续请求之外。新响应仍然包括思考

240* 当 gateway 或其上游将[顾问工具](https://code.claude.com/docs/zh-CN/advisor.md)条目在 `tools` 中拒绝为无法识别的工具类型时,Claude Code 会重试一次请求,不包含该条目及其 `anthropic-beta` 值。对该基础 URL 的后续请求会将顾问排除在外,直到 Claude Code 退出,在该时间内 `/advisor` 对开发者不可用。Claude Code 通过 `400` 或 `422` 响应识别此拒绝,其消息在 `Input tag` 之后命名工具类型,例如 `Input tag 'advisor_20260301'`。在 v2.1.280 之前,Claude Code 没有重试此拒绝240* 当网关或其上游将[顾问工具](https://code.claude.com/docs/zh-CN/advisor.md)条目在 `tools` 中拒绝为无法识别的工具类型时,Claude Code 会重试一次请求,不包含该条目及其 `anthropic-beta` 值。[后续请求](#how-long-a-rejected-beta-value-stays-out)会省略它们。Claude Code 通过 `400` 或 `422` 响应识别此拒绝,其消息在 `Input tag` 之后命名工具类型,例如 `Input tag 'advisor_20260301'`。在 v2.1.280 之前,Claude Code 没有重试此拒绝

241* 当上游拒绝 `output_config.effort` 或其 `anthropic-beta` 值时,Claude Code 会重试,并在 Claude Code 退出之前,不再向发往该模型的请求中添加这两者。如果您的网关原封不动地转发上游的 `400`,且其消息满足以下条件之一,则网关无需任何更改:241* 当上游拒绝 `output_config.effort` 或其 `anthropic-beta` 值时,网关会再次收到不带它们的该请求。[后续请求](#how-long-a-rejected-beta-value-stays-out)会省略它们。如果您的网关原封不动地转发上游的 `400`,且其消息满足以下条件之一,则网关无需任何更改:

242 * 同时命名 `output_config.effort` 和 `Extra inputs are not permitted`242 * 同时命名 `output_config.effort` 和 `Extra inputs are not permitted`

243 * 说明该模型不支持 effort 参数243 * 说明该模型不支持 effort 参数

244 * 以 `Unexpected value(s)` 开头,并针对 `anthropic-beta` 请求头列出 `effort-2025-11-24`。需要 v2.1.310 或更高版本。如果开发者的 [`ANTHROPIC_BETAS`](https://code.claude.com/docs/zh-CN/env-vars) 中列出了该值,他们会继续发送该值并收到 `400`,因此请让他们移除该条目244 * 以 `Unexpected value(s)` 开头,并针对 `anthropic-beta` 请求头列出 `effort-2025-11-24`。需要 v2.1.310 或更高版本。如果开发者的 [`ANTHROPIC_BETAS`](https://code.claude.com/docs/zh-CN/env-vars) 中列出了该值,他们会继续发送该值并收到 `400`,因此请让他们移除该条目

245* 当上游拒绝 `context_management` 字段或其 `anthropic-beta` 值时,网关会再次收到不带它们的该请求。如果网关在后续请求中再次看到它们且上游再次拒绝,则会进行同样的重试。Claude Code 通过消息识别此拒绝,例如包含 `context_management: Extra inputs are not permitted` 的消息。在 v2.1.304 之前,Claude Code 没有重试此拒绝245* 当上游拒绝 `context_management` 字段或其 `anthropic-beta` 值时,网关会再次收到不带它们的该请求。[后续请求](#how-long-a-rejected-beta-value-stays-out)会省略它们。Claude Code 通过消息识别此拒绝,例如包含 `context_management: Extra inputs are not permitted` 的消息。在 v2.1.304 之前,Claude Code 没有重试此拒绝

246* 当 `400` 按名称拒绝另一个 `anthropic-beta` 值时,如果[该重试涵盖该值](#retry-without-a-rejected-beta-value),网关会再次收到不带该值的请求

246* 当上游拒绝 `defer_loading` 以外的 beta 工具字段(例如 `strict`)时,`400` 会到达开发者。在此之前,网关可能会再次收到[不带工具搜索字段](#retry-without-tool-search)的该请求。若要停止发送此类字段,请让开发者设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)247* 当上游拒绝 `defer_loading` 以外的 beta 工具字段(例如 `strict`)时,`400` 会到达开发者。在此之前,网关可能会再次收到[不带工具搜索字段](#retry-without-tool-search)的该请求。若要停止发送此类字段,请让开发者设置 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)

247 248 

248`bound to a different conversation` 拒绝来自 API 的[保留思考](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking)检查,当 `system`、`tools` 或早期 `messages` 内容与产生思考的请求不同时,该检查失败。重写任何该内容的 gateway 可能会导致拒绝本身;[库、代理和网关](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#libraries-proxies-gateways)涵盖了要原封不动地传递的内容。249`bound to a different conversation` 拒绝来自 API 的[保留思考](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking)检查,当 `system`、`tools` 或早期 `messages` 内容与产生思考的请求不同时,该检查失败。重写任何该内容的 gateway 可能会导致拒绝本身;[库、代理和网关](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#libraries-proxies-gateways)涵盖了要原封不动地传递的内容。

249 250 

250大部分重试逻辑与上游的错误措辞匹配,因此请原封不动地转发错误响应体。将上游错误包装在自己的信封中的网关会破坏恢复路径,即使它保留了状态代码,除非信封的消息携带稳定的 `capability_rejected:` 标记。[Claude apps gateway 用这些标记替换云提供商的错误措辞](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#upstream-error-messages),例如 `capability_rejected: prompt_too_long`。251大部分重试逻辑与上游的错误措辞匹配,因此请原封不动地转发错误响应体。将上游错误包装在自己的信封中的网关会破坏恢复路径,即使它保留了状态代码,除非信封的消息携带稳定的 `capability_rejected:` 标记。[Claude apps gateway 用这些标记替换云提供商的错误措辞](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#upstream-error-messages),例如 `capability_rejected: prompt_too_long`。

251 252 

253#### 不带被拒绝 beta 值的重试

254 

255当 `400` 按名称拒绝此重试所涵盖的某个 `anthropic-beta` 值时,网关会再次收到不带该值的请求。[后续请求](#how-long-a-rejected-beta-value-stays-out)会省略该值。它涵盖的大多数值需要 v2.1.314 或更高版本。

256 

257如果您的网关返回的 `400` 的消息以下列任一形式携带该值,则网关无需任何更改:

258 

259* **API 的语句**:针对 `anthropic-beta` 请求头列出该值的 `Unexpected value(s)` 语句

260* **`beta_header:` 标记**:`capability_rejected: beta_header:` 后跟该值,即一种 [`capability_rejected:` 标记](#automatic-retry-and-error-forwarding)

261 

262该重试不涵盖以下情况,例如具有自身重试的值、Claude Code 无法识别的值,或未命名任何值的消息:

263 

264* **具有自身重试的值,例如顾问或工具搜索**:网关会改为看到[该功能自身的重试](#automatic-retry-and-error-forwarding)

265* **Claude Code 无法识别的值**:开发者通过 `ANTHROPIC_BETAS` 设置的值会保留在每个请求中,因此该开发者的请求会持续因 `400` 而失败。请让开发者移除该条目

266* **单独的 `invalid beta flag`**:Claude Code 会猜测上游拒绝了哪个值。如果请求携带了它所猜测的值,网关会再次收到不带该值的请求。如果 `400` 仍然到达开发者,请让您的网关以上述形式之一命名被拒绝的值

267 

268#### 被拒绝的 beta 值被排除多久

269 

270| 上游拒绝的内容 | 省略它的请求 | 直到 |

271| :- | :- | :- |

272| 顾问工具类型,或顾问的 `anthropic-beta` 值 | 发往同一基础 URL 的请求。`/advisor` 不可用 | Claude Code 退出 |

273| `output_config.effort` 或其 `anthropic-beta` 值 | 针对同一模型的请求 | Claude Code 退出 |

274| `context_management` 或[按名称重试](#retry-without-a-rejected-beta-value)所涵盖的其他 `anthropic-beta` 值 | 同一对话中的请求 | 对话结束或 Claude Code 重建其提示词,例如主对话被压缩时 |

275| `context_management` 或该重试所涵盖的其他值,当错误消息以 API 自身针对该拒绝的语句(例如 `Unexpected value(s)`)开头,或携带 `beta_header:` 标记时 | 还包括被拒绝请求所指定模型上的新对话,包括 `/clear` 之后 | Claude Code 退出 |

276 

252#### 不带工具搜索的重试277#### 不带工具搜索的重试

253 278 

254在 v2.1.305 或更高版本上,携带 [`defer_loading` 字段和 `tool_reference` 块](https://code.claude.com/docs/zh-CN/mcp#tool-search-through-a-gateway)的请求,在出现 Claude Code 无法识别原因的 `400` 或 `422` 之后,可能会不带它们再次到达。重试成功后,后续请求也会省略它们。279在 v2.1.305 或更高版本上,在出现命名工具搜索或 Claude Code 无法识别原因的 `400` 或 `422` 之后,Claude Code 会重新发送不带 [`defer_loading` 字段和 `tool_reference` 块](https://code.claude.com/docs/zh-CN/mcp#tool-search-through-a-gateway)的请求。重试成功后,该对话中的后续请求也会省略它们。

255 280 

256开发者的请求无需对网关做任何更改即可继续正常工作,其 MCP 工具会预先加载。Claude Code 稍后会再次尝试工具搜索,因此网关可能会再次看到被拒绝的请求及其后的重试。若要在所有请求中都排除这些字段,请让开发者设置 `ENABLE_TOOL_SEARCH=false`。对于工具搜索本身,Claude Code 期望网关将 `defer_loading` 字段和 `tool_reference` 块连同其 `anthropic-beta` 值一起转发。281开发者的请求无需对网关做任何更改即可继续正常工作,其 MCP 工具会预先加载。当 Claude Code 再次尝试工具搜索时,网关会再次看到被拒绝的请求及其后的重试。对于工具搜索本身,Claude Code 期望网关将 `defer_loading` 字段和 `tool_reference` 块连同其 `anthropic-beta` 值一起转发。

257 282 

258### 禁用预发布功能283### 禁用预发布功能

259 284 

Details

166| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 在启动时查询网关的 `/v1/models` 并将返回的名称添加到 `/model` 选择器 | 您的网关提供 `/v1/models` 并且您希望开发者的选择器从中填充 |166| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 在启动时查询网关的 `/v1/models` 并将返回的名称添加到 `/model` 选择器 | 您的网关提供 `/v1/models` 并且您希望开发者的选择器从中填充 |

167| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 停止 Claude Code 发送预发布功能标头和正文字段。[禁用预发布功能](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖了确切的范围 | 您的网关转发到拒绝 beta 字段的 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上游。请参阅[网关要求](#gateway-requirements) |167| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 停止 Claude Code 发送预发布功能标头和正文字段。[禁用预发布功能](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖了确切的范围 | 您的网关转发到拒绝 beta 字段的 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上游。请参阅[网关要求](#gateway-requirements) |

168| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` 或 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 当其可用性检查(直接调用 `api.anthropic.com` 而不是遵循 `ANTHROPIC_BASE_URL`)失败、被拦截或因缺少 Anthropic 凭证而被跳过时,恢复[快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md) | 您的组织使用快速模式,开发者仅使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证,在 `ANTHROPIC_API_KEY` 中使用网关颁发的密钥或来自 `apiKeyHelper`,或您的网络阻止或拦截对 `api.anthropic.com` 的直接请求;[在代理和 LLM 网关后面使用快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)涵盖了哪两个变量中的哪一个与您的配置匹配 |168| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` 或 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 当其可用性检查(直接调用 `api.anthropic.com` 而不是遵循 `ANTHROPIC_BASE_URL`)失败、被拦截或因缺少 Anthropic 凭证而被跳过时,恢复[快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md) | 您的组织使用快速模式,开发者仅使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证,在 `ANTHROPIC_API_KEY` 中使用网关颁发的密钥或来自 `apiKeyHelper`,或您的网络阻止或拦截对 `api.anthropic.com` 的直接请求;[在代理和 LLM 网关后面使用快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)涵盖了哪两个变量中的哪一个与您的配置匹配 |

169| `ANTHROPIC_MODEL` 或 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](https://code.claude.com/docs/zh-CN/model-config) | 设置 Claude Code 为主会话和后台流量请求的模型名称 | 您的网关路由与 Claude Code 默认值不匹配的模型名称,或您将[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage)路由到不同的模型。在网关处路由覆盖名称和 Claude Code 的内置模型 ID,因为某些后台子调用可以请求内置 ID,无论覆盖如何;[模型配置](https://code.claude.com/docs/zh-CN/model-config.md)涵盖了会话的每个部分使用哪个模型 |169| `ANTHROPIC_MODEL` 或 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](https://code.claude.com/docs/zh-CN/model-config) | 设置 Claude Code 为主会话和后台流量请求的模型名称 | 您的网关路由与 Claude Code 默认值不匹配的模型名称,或您将[后台功能](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)路由到不同的模型。既要路由覆盖名称,也要路由未设置覆盖时 Claude Code 请求的内置模型 ID,因为某些后台子调用无论覆盖如何都会请求内置 ID |

170| `ANTHROPIC_BEDROCK_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL`、`ANTHROPIC_FOUNDRY_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 以及[该提供商的变量](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#route-to-a-cloud-provider-through-a-gateway) | 通过网关将 Claude Code 指向网关。Amazon Bedrock 和 Google Cloud 的 Agent Platform 也切换到这些提供商的本机请求格式 | 您的网关前置 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude 平台;请参阅 [API 格式](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#api-formats) |170| `ANTHROPIC_BEDROCK_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL`、`ANTHROPIC_FOUNDRY_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 以及[该提供商的变量](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#route-to-a-cloud-provider-through-a-gateway) | 通过网关将 Claude Code 指向网关。Amazon Bedrock 和 Google Cloud 的 Agent Platform 也切换到这些提供商的本机请求格式 | 您的网关前置 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude 平台;请参阅 [API 格式](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#api-formats) |

171 171 

172#### 通过托管设置分发172#### 通过托管设置分发

mcp.md +20 −4

Details

952* 对于您在 `headers` 中配置了 `Authorization` 标头的服务器,或通过 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 配置的服务器,连接时的 `401` 或 `403` 不会标记服务器,因为要修复的凭据是您配置的凭据。Claude Code 改为报告连接失败。如果您从 `${VAR}` 引用设置该标头,请检查该变量是否是 Claude Code [读取为空](#credential-variables-that-read-as-empty) 的变量之一。952* 对于您在 `headers` 中配置了 `Authorization` 标头的服务器,或通过 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 配置的服务器,连接时的 `401` 或 `403` 不会标记服务器,因为要修复的凭据是您配置的凭据。Claude Code 改为报告连接失败。如果您从 `${VAR}` 引用设置该标头,请检查该变量是否是 Claude Code [读取为空](#credential-variables-that-read-as-empty) 的变量之一。

953* 对于 [传递到云端会话的连接器](#how-connectors-reach-claude-code),Claude Code 不运行登录流程,因为会话的代理使用您在 claude.ai 中授予的授权向连接器进行身份验证。当那里的连接器需要再次授权时,请在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 重新连接它,而不是从会话中连接。953* 对于 [传递到云端会话的连接器](#how-connectors-reach-claude-code),Claude Code 不运行登录流程,因为会话的代理使用您在 claude.ai 中授予的授权向连接器进行身份验证。当那里的连接器需要再次授权时,请在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 重新连接它,而不是从会话中连接。

954 954 

955当您已登录的 OAuth 服务器以 `401 Unauthorized` 拒绝您存储的令牌时,Claude Code 会刷新令牌、重新连接并重试请求一次。只有在该重试也失败时,它才会在 `/mcp` 中标记服务器。在 macOS 上的 `claude -p` 或 Agent SDK 运行中,Claude Code 在无法读取您存储的令牌时发送的请求会改为以 [存储凭据错误](https://code.claude.com/docs/zh-CN/errors.md#couldnt-read-the-stored-credentials-for-mcp-server) 失败。955当您已登录的 OAuth 服务器以 `401 Unauthorized` 拒绝您存储的令牌时,无论是否获得新令牌,Claude Code 都会重新连接:

956 

957* **您存储的登录信息包含刷新令牌**:它会刷新令牌、重新连接并重试请求一次。只有在该重试也失败时,服务器才会在 `/mcp` 中被标记。

958* **您存储的登录信息不包含刷新令牌**:它会在不带令牌的情况下连接一次。如果服务器作出响应,其工具在您未登录的状态下也能正常工作,并且被拒绝的令牌会被删除。如果服务器也拒绝了该连接,`/mcp` 会显示该服务器需要身份验证。

959 

960在 macOS 上的 `claude -p` 或 Agent SDK 运行中,Claude Code 在无法读取您存储的令牌时发送的请求会以 [存储凭据错误](https://code.claude.com/docs/zh-CN/errors.md#couldnt-read-the-stored-credentials-for-mcp-server) 失败。

956 961 

957当服务器拒绝存储的刷新令牌时,Claude Code 会立即显示一条指向 `/mcp` 的通知。打开 `/mcp` 并在服务器上选择 **Re-authenticate** 以在下一个工具调用失败之前再次登录。962当服务器拒绝存储的刷新令牌时,Claude Code 会立即显示一条指向 `/mcp` 的通知。打开 `/mcp` 并在服务器上选择 **Re-authenticate** 以在下一个工具调用失败之前再次登录。

958 963 


1640 1645 

1641## 响应 MCP 引出请求1646## 响应 MCP 引出请求

1642 1647 

1643MCP 服务器可以在任务进行中使用引出功能向你请求结构化输入。当服务器需要无法自行获取的信息时,Claude Code 会显示一个交互式对话框,并将你的响应传回服务器。你无需进行任何配置:当服务器请求引出对话框时,它们会自动出现。1648MCP 服务器可以在任务进行中使用引出功能向您请求结构化输入。当服务器需要无法自行获取的信息时,Claude Code 会在终端中显示一个交互式对话框,并将您的响应传回服务器。您无需进行任何配置:当服务器请求引出对话框时,它们会自动出现。

1644 1649 

1645服务器可以通过两种方式请求输入:1650服务器可以通过两种方式请求输入:

1646 1651 


1653 1658 

1654如果你正在构建使用引出功能的 MCP 服务器,请参阅 [MCP 引出规范](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) 了解协议详情和架构示例。1659如果你正在构建使用引出功能的 MCP 服务器,请参阅 [MCP 引出规范](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) 了解协议详情和架构示例。

1655 1660 

1661### 在云端会话中回答引出请求

1662 

1663当 Claude 在您的云端会话中的任务正在等待 MCP 服务器的请求时,说明该服务器需要您提供某些内容,例如某个值或登录操作。如果该请求在 claude.ai/code 或 Desktop 应用的 **Code** 标签页中以卡片形式显示,请在卡片上作答:

1664 

1665* **表单模式**:填写字段,然后点击 **Submit**

1666* **URL 模式**:点击 **Open link**,完成其打开的流程,然后点击卡片上的 **I’m done, continue**

1667 

1668要拒绝该请求,请点击 **Decline**。服务器响应后,Claude 会继续。

1669 

1670如果在这两个位置都看不到卡片,则无法在那里回答该请求。在您自己的会话中,点击其中的停止按钮以结束当前轮次。

1671 

1656### Claude Code 声明的引出模式1672### Claude Code 声明的引出模式

1657 1673 

1658如果您构建 MCP 服务器,Claude Code 在连接时发送的客户端功能会告知您的服务器可以请求哪些引出模式。Claude Code 在以下连接上声明 `elicitation: {form: {}, url: {}}`,因此其中任何连接上的服务器都可以请求这两种模式:1674如果您构建 MCP 服务器,Claude Code 在连接时发送的客户端功能会告知您的服务器可以请求哪些引出模式。Claude Code 在以下连接上声明 `elicitation: {form: {}, url: {}}`,因此其中任何连接上的服务器都可以请求这两种模式:


1815> * **您已设置 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`**:请参阅[它如何影响工具搜索](#configure-tool-search)1831> * **您已设置 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`**:请参阅[它如何影响工具搜索](#configure-tool-search)

1816> * **请求失败,且错误中提到 `defer_loading` 或 `tool_reference`**:请参阅 [Extra inputs are not permitted](https://code.claude.com/docs/zh-CN/errors.md#extra-inputs-are-not-permitted)1832> * **请求失败,且错误中提到 `defer_loading` 或 `tool_reference`**:请参阅 [Extra inputs are not permitted](https://code.claude.com/docs/zh-CN/errors.md#extra-inputs-are-not-permitted)

1817 1833 

1818当 `ANTHROPIC_BASE_URL` 指向网关时,工具搜索默认开启,因此请求会包含 `defer_loading` 工具字段和 `tool_reference` 块,供网关转发。工具搜索开启时,MCP 工具会被[延迟](#scale-with-mcp-tool-search)。如需改为预先加载所有工具,请在 shell 或您的 [settings `env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 中设置 `ENABLE_TOOL_SEARCH=false`。在 v2.1.304 之前,在网关后面工具搜索处于关闭状态,除非 `ENABLE_TOOL_SEARCH` 为 `true`、`auto` 或 `auto:N`。1834当 `ANTHROPIC_BASE_URL` 指向网关时,Claude Code 期望网关[连同 `anthropic-beta` 标头一起](https://code.claude.com/docs/zh-CN/llm-gateway-protocol#beta-header-and-body-field-pairs)转发 `defer_loading` 工具字段和 `tool_reference` 块。在网关后面,工具搜索默认开启,因此 MCP 工具会被[延迟](#scale-with-mcp-tool-search),请求中也会包含这些字段和块。在 v2.1.304 之前,在网关后面工具搜索处于关闭状态,除非 `ENABLE_TOOL_SEARCH` 为 `true`、`auto` 或 `auto:N`。

1819 1835 

1820在 v2.1.305 或更高版本上,当出现原因无法识别的 `400` 或 `422` 时,Claude Code 可以[在不使用工具搜索的情况下重试请求](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#retry-without-tool-search)。重试成功时,屏幕上不会显示任何内容,您也无需执行任何操作:MCP 工具会改为预先加载。Claude Code 稍后会再次尝试工具搜索,代价是再产生一次被拒绝的请求。要跳过这些请求,请设置 `ENABLE_TOOL_SEARCH=false`。1836在 v2.1.305 或更高版本上,出现 `400` 或 `422` 后,Claude Code 可以[在不使用工具搜索的情况下重试请求](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#retry-without-tool-search)。重试成功时,屏幕上不会显示任何内容,您也无需执行任何操作:MCP 工具会改为预先加载。Claude Code 稍后会再次尝试工具搜索,代价是再产生一次被拒绝的请求。

1821 1837 

1822#### 低于 `ENABLE_TOOL_SEARCH=auto` 阈值时仍保持延迟的工具1838#### 低于 `ENABLE_TOOL_SEARCH=auto` 阈值时仍保持延迟的工具

1823 1839 

memory.md +6 −5

Details

206- Include OpenAPI documentation comments206- Include OpenAPI documentation comments

207```207```

208 208 

209没有 `paths` 字段的规则无条件加载并适用于所有文件。当 Claude 对匹配的文件使用 Read、Write 或 Edit 工具时,路径范围规则会加载。当 Claude 使用[算作读取](https://code.claude.com/docs/zh-CN/tools-reference.md#edit-tool-behavior)的 Bash 命令查看匹配的文件时(例如对单个文件使用 `cat` 或 `head`),该规则也会加载。当 Claude 通过项目目录的符号链接路径到达文件时,匹配也有效,例如在符号链接检出中。209当 Claude 对匹配的文件使用 Read、Write 或 Edit 工具时,路径范围规则会加载。当 Claude 使用[算作读取](https://code.claude.com/docs/zh-CN/tools-reference.md#edit-tool-behavior)的 Bash 命令查看匹配的文件时(例如对单个文件使用 `cat` 或 `head`),该规则也会加载。当 Claude 通过项目目录的符号链接路径到达文件时,匹配也有效,例如在符号链接检出中。

210 210 

211每个模式都相对于规则的基准目录:211每个模式都相对于规则的基准目录:

212 212 


219 219 

220| 模式 | 匹配 |220| 模式 | 匹配 |

221| - | - |221| - | - |

222| `**/*.ts` | 任何目录中的所有 TypeScript 文件 |222| `**/*.ts` | 基准目录下任意位置的 `.ts` 文件 |

223| `src/**/*` | `src/` 目录下的所有文件 |223| `src/**/*` | 基准目录的 `src/` 下的所有文件 |

224| `*.md` | 项目根目录中的 Markdown 文件 |224| `*.md` | 基准目录下任意位置的 `.md` 文件 |

225| `src/components/*.tsx` | 特定目录中的 React 组件 |225| `/*.md` | 直接位于基准目录中的 `.md` 文件,不包括子文件夹中的文件 |

226| `src/components/*.tsx` | 直接位于基准目录的 `src/components/` 中的 `.tsx` 文件,不包括子文件夹中的文件 |

226 227 

227您可以指定多个模式并使用大括号扩展在一个模式中匹配多个扩展名:228您可以指定多个模式并使用大括号扩展在一个模式中匹配多个扩展名:

228 229 

model-config.md +1 −1

Details

933| `ANTHROPIC_DEFAULT_FABLE_MODEL` | 用于 `fable` 的模型,以及 Claude Code 识别为 Fable 模型的模型 ID,用于[第三方提供商上的自动模型回退](#automatic-model-fallback) |933| `ANTHROPIC_DEFAULT_FABLE_MODEL` | 用于 `fable` 的模型,以及 Claude Code 识别为 Fable 模型的模型 ID,用于[第三方提供商上的自动模型回退](#automatic-model-fallback) |

934| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用于 `opus` 的模型,或在计划模式活跃时用于 `opusplan` 的模型。 |934| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用于 `opus` 的模型,或在计划模式活跃时用于 `opusplan` 的模型。 |

935| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用于 `sonnet` 的模型,或在计划模式不活跃时用于 `opusplan` 的模型。 |935| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用于 `sonnet` 的模型,或在计划模式不活跃时用于 `opusplan` 的模型。 |

936| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用于 `haiku` 的模型,或[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage) |936| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用于 `haiku` 的模型,或用于后台功能的模型 |

937| `CLAUDE_CODE_SUBAGENT_MODEL` | [子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)、[agent team](https://code.claude.com/docs/zh-CN/agent-teams.md#specify-teammates-and-models) 队友和[工作流](https://code.claude.com/docs/zh-CN/workflows.md) Agent 的默认模型,适用于未以其他方式分配模型的情况。接受别名(如 `haiku`)或完整模型名称。每次调用的模型或定义的 `model` 字段(包括 `inherit`)优先。要改变这一点,请设置 [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](https://code.claude.com/docs/zh-CN/sub-agents#run-every-subagent-on-one-model) |937| `CLAUDE_CODE_SUBAGENT_MODEL` | [子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)、[agent team](https://code.claude.com/docs/zh-CN/agent-teams.md#specify-teammates-and-models) 队友和[工作流](https://code.claude.com/docs/zh-CN/workflows.md) Agent 的默认模型,适用于未以其他方式分配模型的情况。接受别名(如 `haiku`)或完整模型名称。每次调用的模型或定义的 `model` 字段(包括 `inherit`)优先。要改变这一点,请设置 [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](https://code.claude.com/docs/zh-CN/sub-agents#run-every-subagent-on-one-model) |

938 938 

939在第三方提供商上,[自定义固定模型显示和功能](#customize-pinned-model-display-and-capabilities)描述了固定模型在 `/model` 选择器中的行显示的内容。939在第三方提供商上,[自定义固定模型显示和功能](#customize-pinned-model-display-and-capabilities)描述了固定模型在 `/model` 选择器中的行显示的内容。

Details

1559 1559 

1560> [!NOTE]1560> [!NOTE]

1561>1561>

1562> 成本指标是近似值。有关官方计费数据,请参阅您的 API 提供商(Claude 控制台、Amazon Bedrock 或 Google Cloud 的 Agent Platform)。1562> 成本指标是近似值。有关官方计费数据,请参阅[管理组织的成本](https://code.claude.com/docs/zh-CN/costs.md#manage-costs-for-your-organization)。

1563 1563 

1564Claude Code 将每个流式响应计入成本和 token 指标,恰好一次,包括当网关或代理在 `ANTHROPIC_BASE_URL` 后面跨多个帧逐步流式传输使用情况时。1564Claude Code 将每个流式响应计入成本和 token 指标,恰好一次,包括当网关或代理在 `ANTHROPIC_BASE_URL` 后面跨多个帧逐步流式传输使用情况时。

1565 1565 

Details

41* 在 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 打开时在工作目录外读取:识别的文件读取 Bash 命令和任何需要批准才能在沙箱外运行的 [未沙箱化重试](https://code.claude.com/docs/zh-CN/sandboxing.md#the-unsandboxed-retry-escape-hatch),即使在 auto 模式和 `bypassPermissions` 模式下也会提示。需要 Claude Code v2.1.257 或更高版本。41* 在 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 打开时在工作目录外读取:识别的文件读取 Bash 命令和任何需要批准才能在沙箱外运行的 [未沙箱化重试](https://code.claude.com/docs/zh-CN/sandboxing.md#the-unsandboxed-retry-escape-hatch),即使在 auto 模式和 `bypassPermissions` 模式下也会提示。需要 Claude Code v2.1.257 或更高版本。

42 42 

43 shell 解析器无法追踪的命令,例如更改目录多次或运行子 shell 的命令,即使在未命名任何外部路径时也会以相同方式提示。当命令在 [沙箱](https://code.claude.com/docs/zh-CN/sandboxing.md) 中运行且沙箱强制执行该块时,此提示不适用。43 shell 解析器无法追踪的命令,例如更改目录多次或运行子 shell 的命令,即使在未命名任何外部路径时也会以相同方式提示。当命令在 [沙箱](https://code.claude.com/docs/zh-CN/sandboxing.md) 中运行且沙箱强制执行该块时,此提示不适用。

44* 在 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) 打开时在工作目录外写入:Claude Code 会拒绝在这些位置的 `Write`、`Edit` 和 `NotebookEdit` 调用,但 [其自身的部分文件](https://code.claude.com/docs/zh-CN/settings-reference.md#what-the-write-block-refuses-and-what-stays-writable) 除外。该设置项不限制 shell 命令、MCP 工具或 hook 运行的程序,因此请使用 [沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md) 来限制 shell 命令的写入位置。需要 Claude Code v2.1.314 或更高版本。

44 45 

45## 常见设置46## 常见设置

46 47 


531无论您如何回答,Claude 都会继续工作:532无论您如何回答,Claude 都会继续工作:

532 533 

533* **是,并继续允许读取工作目录之外的任何内容**:读取会运行,之后对工作目录之外内容的读取照常运行,并且 Claude Code 会记录您的回答,使该提示不再出现534* **是,并继续允许读取工作目录之外的任何内容**:读取会运行,之后对工作目录之外内容的读取照常运行,并且 Claude Code 会记录您的回答,使该提示不再出现

534* **否,并从现在起阻止读取工作目录之外的内容**:读取会被拒绝,并且 Claude Code 会在您的用户设置中将 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 设置为 `true`,这会使文件工具在之后的每个会话和每种权限模式中拒绝此类读取。如果之后要让 Claude 读取此类路径,请使用 `/add-dir` 添加其目录,或移除该设置。535* **否,并从现在起阻止读取工作目录之外的内容**:读取会被拒绝,并且 Claude Code 会在您的用户设置中将 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 设置为 `true`,这会使文件工具在本会话及之后的每个会话、每种权限模式中拒绝此类读取。要解除该阻止,请从设置了该项的每个[设置文件](https://code.claude.com/docs/zh-CN/settings.md#settings-files-and-who-they-affect)中移除该设置,然后重启每个正在运行的会话。如果只需在本会话中放开某一个目录,请使用 `/add-dir`。

535* **否,下次再询问**:读取会被拒绝,下一次读取工作目录之外的内容时会再次提示536* **否,下次再询问**:读取会被拒绝,下一次读取工作目录之外的内容时会再次提示

536* **是,但下次再询问**:读取会运行,不会保存任何内容,下一次读取工作目录之外的内容时会再次提示537* **是,但下次再询问**:读取会运行,不会保存任何内容,下一次读取工作目录之外的内容时会再次提示

537 538 


553 554 

554当自动模式无法批准您会话中的操作时,具体情况取决于以下场景:555当自动模式无法批准您会话中的操作时,具体情况取决于以下场景:

555 556 

556* **操作被阻止**:Claude Code 会显示通知,并在 `/permissions` 的 **Recently denied** 选项卡下列出该操作,您可以在那里按 `r` 以手动批准的方式重试。557* **操作被阻止**:Claude Code 会显示通知,并在 `/permissions` 的 **Recently blocked** 选项卡下列出该操作,您可以在那里[批准该操作,以便 Claude 重试](https://code.claude.com/docs/zh-CN/auto-mode-config.md#review-denials)。

557* **反复阻止**:如果分类器连续 3 次或累计 20 次阻止操作,自动模式会暂停,Claude Code 会恢复提示。批准被提示的操作后会恢复自动模式。有关阻止次数的计算方式,请参阅[反复阻止阈值](#repeated-block-thresholds)。558* **反复阻止**:如果分类器连续 3 次或累计 20 次阻止操作,自动模式会暂停,Claude Code 会恢复提示。批准被提示的操作后会恢复自动模式。有关阻止次数的计算方式,请参阅[反复阻止阈值](#repeated-block-thresholds)。

558* **分类器未给出裁决**:当独立于自动模式的安全检查拒绝了分类器自身的请求,或分类器的响应无法解析时,Claude Code 会拒绝该操作,且不显示通知,也不会添加 **Recently denied** 条目。有关每种情况显示的消息及处理方法,请参阅[自动模式无法确定操作的安全性](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)。559* **分类器未给出裁决**:当独立于自动模式的安全检查拒绝了分类器自身的请求,或分类器的响应无法解析时,Claude Code 会阻止该操作,且不显示通知,也不会添加 **Recently blocked** 条目。有关每种情况显示的消息及处理方法,请参阅[自动模式无法确定操作的安全性](https://code.claude.com/docs/zh-CN/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)。

559* **服务器未给出裁决**:在[服务器端分类器审查](#server-side-classifier-review)下,Claude Code 会拒绝服务器未给出裁决的操作,并在连续十个响应均无裁决后停止当前轮次。请参阅[服务器未返回安全裁决](https://code.claude.com/docs/zh-CN/errors.md#the-server-returned-no-safety-verdict)。560* **服务器未给出裁决**:在[服务器端分类器审查](#server-side-classifier-review)下,Claude Code 会拒绝服务器未给出裁决的操作,并在连续十个响应均无裁决后停止当前轮次。请参阅[服务器未返回安全裁决](https://code.claude.com/docs/zh-CN/errors.md#the-server-returned-no-safety-verdict)。

560* **检查期间切换模式**:如果您在分类器检查尚未完成时切换权限模式,Claude Code 会丢弃新模式本不会请求的裁决。此时会改为提示您批准,或者在 [`dontAsk` 模式](#allow-only-pre-approved-tools-with-dontask-mode)下自动拒绝该操作。561* **检查期间切换模式**:如果您在分类器检查尚未完成时切换权限模式,Claude Code 会丢弃新模式本不会请求的裁决。此时会改为提示您批准,或者在 [`dontAsk` 模式](#allow-only-pre-approved-tools-with-dontask-mode)下自动拒绝该操作。

561 562 


738 739 

739在使用 [`--restricted`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 启动的会话中,需要 Claude Code v2.1.248 或更高版本,分类器无法批准受保护路径的写入。740在使用 [`--restricted`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 启动的会话中,需要 Claude Code v2.1.248 或更高版本,分类器无法批准受保护路径的写入。

740 741 

742当 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) 开启时,Claude Code 在所有权限模式下都会拒绝对设置文件的 `Write`、`Edit` 和 `NotebookEdit` 写入。

743 

741在将受保护路径写入路由到分类器的模式中,当 Claude 请求的路径本身不受保护时,[符号链接检查](https://code.claude.com/docs/zh-CN/permissions.md#symlinks)解析为受保护路径的写入会提示你。744在将受保护路径写入路由到分类器的模式中,当 Claude 请求的路径本身不受保护时,[符号链接检查](https://code.claude.com/docs/zh-CN/permissions.md#symlinks)解析为受保护路径的写入会提示你。

742 745 

743设置文件中的 [`permissions.allow`](https://code.claude.com/docs/zh-CN/permissions#manage-permissions) 规则不会预先批准受保护路径的写入。安全检查在 Claude Code 评估设置中的允许规则之前运行,因此 `~/.claude/settings.json` 或 `.claude/settings.json` 中的条目(如 `Edit(.claude/**)`)不会改变上表中的每个模式结果。在提示的模式中,对项目的 `.claude/` 文件夹或 `~/.claude/` 的写入提示可以提供以下这些会话范围的选项之一:746设置文件中的 [`permissions.allow`](https://code.claude.com/docs/zh-CN/permissions#manage-permissions) 规则不会预先批准受保护路径的写入。安全检查在 Claude Code 评估设置中的允许规则之前运行,因此 `~/.claude/settings.json` 或 `.claude/settings.json` 中的条目(如 `Edit(.claude/**)`)不会改变上表中的每个模式结果。在提示的模式中,对项目的 `.claude/` 文件夹或 `~/.claude/` 的写入提示可以提供以下这些会话范围的选项之一:


776* `.devcontainer.json`779* `.devcontainer.json`

777* `.ripgreprc`、`pyrightconfig.json`780* `.ripgreprc`、`pyrightconfig.json`

778* `.mcp.json`、`.claude.json`781* `.mcp.json`、`.claude.json`

782* `remote-settings.json`(即您组织的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)的存储副本),以及 Claude Code 随其保存的签名、同步和同意文件,位于 `~/.claude` 或 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars) 所指向的目录中

779* 您在启动会话时传递给 [`--settings`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags)、`--mcp-config` 或 `--agents` 的文件783* 您在启动会话时传递给 [`--settings`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags)、`--mcp-config` 或 `--agents` 的文件

780* 当您的用户、项目或本地[设置文件](https://code.claude.com/docs/zh-CN/settings.md#settings-files-and-who-they-affect)本身是符号链接(例如指向 dotfiles 仓库)时,该设置文件所指向的文件。在将受保护路径写入路由到分类器的模式中,对此文件的写入会改为提示您,即使有允许规则匹配也是如此。如果该文件自身的路径同时也是某个设置文件的路径,例如另一个文件夹中的 `.claude/settings.json`,则该写入会像其他受保护路径写入一样交由分类器处理784* 当您的用户、项目或本地[设置文件](https://code.claude.com/docs/zh-CN/settings.md#settings-files-and-who-they-affect)本身是符号链接(例如指向 dotfiles 仓库)时,该设置文件所指向的文件。在将受保护路径写入路由到分类器的模式中,对此文件的写入会改为提示您,即使有允许规则匹配也是如此。如果该文件自身的路径同时也是某个设置文件的路径,例如另一个文件夹中的 `.claude/settings.json`,则该写入会像其他受保护路径写入一样交由分类器处理

781 785 

permissions.md +9 −2

Details

668 668 

669您无法添加大多数[网络路径](https://code.claude.com/docs/zh-CN/errors.md#working-directory-is-a-network-path)(例如 UNC 共享 `\\server\share`)作为工作目录,因为查找它们可能会联系它们命名的主机。在 Windows 上,将共享映射到驱动器号,然后在启动时使用 `--add-dir` 传递该驱动器。669您无法添加大多数[网络路径](https://code.claude.com/docs/zh-CN/errors.md#working-directory-is-a-network-path)(例如 UNC 共享 `\\server\share`)作为工作目录,因为查找它们可能会联系它们命名的主机。在 Windows 上,将共享映射到驱动器号,然后在启动时使用 `--add-dir` 传递该驱动器。

670 670 

671设置 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 以使文件工具在每种权限模式下都拒绝它围栏的路径。在自动模式下,Claude Code 会在 Claude 首次[读取工作目录外的文件](https://code.claude.com/docs/zh-CN/permission-modes.md#first-read-outside-the-working-directories)时提供打开它。

672 

673在 macOS 上的后台会话中,会话主机会单独从您的终端请求访问受保护的文件夹(如 `~/Desktop`、`~/Documents` 和 `~/Downloads`),当 Claude 需要在那里读取或写入文件时;如果读取失败并显示 `Operation not permitted`,请参阅[如何向后台会话授予文件夹访问权限](https://code.claude.com/docs/zh-CN/agent-view.md#background-sessions-can%E2%80%99t-read-desktop-documents-or-downloads-on-macos)。671在 macOS 上的后台会话中,会话主机会单独从您的终端请求访问受保护的文件夹(如 `~/Desktop`、`~/Documents` 和 `~/Downloads`),当 Claude 需要在那里读取或写入文件时;如果读取失败并显示 `Operation not permitted`,请参阅[如何向后台会话授予文件夹访问权限](https://code.claude.com/docs/zh-CN/agent-view.md#background-sessions-can%E2%80%99t-read-desktop-documents-or-downloads-on-macos)。

674 672 

673### 阻止文件工具在工作目录之外读取和写入

674 

675要使 Claude 的文件工具在每种权限模式(包括 `bypassPermissions`)下都拒绝工作目录之外的路径,请将以下一个或两个键设置为 `true`:

676 

677* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories)**:文件工具拒绝在那里读取,Claude Code 自身需要的文件除外。在自动模式下,Claude Code 会在 Claude 首次[读取工作目录外的文件](https://code.claude.com/docs/zh-CN/permission-modes.md#first-read-outside-the-working-directories)时提供启用它的选项。

678* **[`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories)**:`Write`、`Edit` 和 `NotebookEdit` 工具拒绝在那里写入,Claude Code 自身的某些文件(例如计划文件)除外。该键不限制 shell 命令、MCP 工具或 hook 运行的程序,因此请使用[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)来限制 shell 命令的写入位置。需要 Claude Code v2.1.314 或更高版本。

679 

680要在任一键为 `true` 时仍保持某个外部目录可访问,请[将其添加为工作目录](https://code.claude.com/docs/zh-CN/settings-reference.md#let-one-directory-through-the-read-or-write-block)。

681 

675### 将会话移动到另一个目录682### 将会话移动到另一个目录

676 683 

677要将会话移动到不同的主工作目录,而不是[在当前目录旁添加目录](#working-directories),请运行 `/cd <path>`。Claude Code 保持对话,加载新目录的 `CLAUDE.md`,如果您之前未在其中工作过,会提示您[信任工作区](#project-allow-rules-and-workspace-trust)。之后,当您从新目录运行 `--resume` 时,Claude Code [找到移动的会话](https://code.claude.com/docs/zh-CN/sessions.md#where-the-session-picker-looks)。684要将会话移动到不同的主工作目录,而不是[在当前目录旁添加目录](#working-directories),请运行 `/cd <path>`。Claude Code 保持对话,加载新目录的 `CLAUDE.md`,如果您之前未在其中工作过,会提示您[信任工作区](#project-allow-rules-and-workspace-trust)。之后,当您从新目录运行 `--resume` 时,Claude Code [找到移动的会话](https://code.claude.com/docs/zh-CN/sessions.md#where-the-session-picker-looks)。

Details

256 256 

257### 停止后台工作257### 停止后台工作

258 258 

259当模块重新加载时,计时器停止。对于 hook 内的长时间运行工作,[`next.signal`](https://code.claude.com/docs/zh-CN/plugins/mods/reference#the-hook-function) 是一个 `AbortSignal`,当您的 hook 处理的事件被放弃时中止,例如当用户中断时,因此将其传递给任何长时间运行的内容。259模块重新加载后,计时器会停止。对于 hook 内的长时间运行工作,[`next.signal`](https://code.claude.com/docs/zh-CN/plugins/mods/reference#the-hook-function) 是一个 `AbortSignal`,当您的 hook 处理的事件被放弃时(例如用户中断时)会中止。请将其传递给任何长时间运行的内容。

260 260 

261### 用户中断轮次后的调用和后台工作261### 用户中断轮次后的调用和后台工作

262 262 

Details

738})738})

739```739```

740 740 

741Claude Code 现在每秒运行您的 `ui.render` hook 一次。当模块重新加载时计时器停止,模块的新实例会启动其自己的计时器。741Claude Code 现在每秒运行您的 `ui.render` hook 一次。模块重新加载后计时器停止,模块的新实例会启动其自己的计时器。

742 742 

743### 站点可以重绘的频率743### 站点可以重绘的频率

744 744 

plugins/org.md +1 −1

Details

339要运行稳定和早期访问频道,托管两个指向相同插件的不同 ref 的市场。然后通过单独的端点托管设置或网关策略为每个用户组提供自己的市场。来自管理控制台的服务器托管设置[应用于组织中的每个用户](https://code.claude.com/docs/zh-CN/server-managed-settings.md#current-limitations),因此它们无法为不同的组分配不同的设置。339要运行稳定和早期访问频道,托管两个指向相同插件的不同 ref 的市场。然后通过单独的端点托管设置或网关策略为每个用户组提供自己的市场。来自管理控制台的服务器托管设置[应用于组织中的每个用户](https://code.claude.com/docs/zh-CN/server-managed-settings.md#current-limitations),因此它们无法为不同的组分配不同的设置。

340 340 

341* 将单独的[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)(例如托管设置文件或 MDM 配置文件)部署到每个组的设备。要检查按组文件或配置文件是否在也有组织范围源的设备上应用,请参阅[Claude Code 如何组合托管源](https://code.claude.com/docs/zh-CN/managed-settings.md#precedence-within-the-managed-tier)。341* 将单独的[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)(例如托管设置文件或 MDM 配置文件)部署到每个组的设备。要检查按组文件或配置文件是否在也有组织范围源的设备上应用,请参阅[Claude Code 如何组合托管源](https://code.claude.com/docs/zh-CN/managed-settings.md#precedence-within-the-managed-tier)。

342* 为每个组定义一个[Claude 应用网关策略](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed)。网关应用第一个匹配规则适合用户的策略,因此订购策略以便每个用户到达其组的策略。该策略的 `extraKnownMarketplaces` 映射不与任何其他策略的合并,因此在其中列出组需要的每个市场,而不仅仅是其频道市场。342* 为每个组定义一个[Claude 应用网关策略](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed)。默认情况下,网关应用第一个匹配规则适合用户的策略,因此请对策略进行排序,使每个用户都能到达其所在组的策略。该策略的 `extraKnownMarketplaces` 映射不与任何其他策略的合并,因此在其中列出组需要的每个市场,而不仅仅是其频道市场。

343 343 

344使用任一机制,稳定组接收此配置:344使用任一机制,稳定组接收此配置:

345 345 

Details

51>51>

52> 在您接受 Remote Control 的一次性确认之前,`claude remote-control` 会先说明其作用,并在启动服务器前询问 `Enable Remote Control? (y/n)`。回答 `y` 即可接受并启动服务器。如果您拒绝,Claude Code 会退出而不启动服务器,并在您下次运行该命令时再次询问。52> 在您接受 Remote Control 的一次性确认之前,`claude remote-control` 会先说明其作用,并在启动服务器前询问 `Enable Remote Control? (y/n)`。回答 `y` 即可接受并启动服务器。如果您拒绝,Claude Code 会退出而不启动服务器,并在您下次运行该命令时再次询问。

53>53>

54> 在服务器模式下,该进程会在终端中持续运行,等待远程连接。它会显示一个会话 URL,您可以用它[从另一台设备连接](#connect-from-another-device),还可以按空格键显示二维码,以便从手机快速访问。远程会话处于活动状态时,终端会显示连接状态和工具活动。54> 在服务器模式下,该进程会在终端中持续运行,等待远程连接。它会显示一个 URL,您可以用它[从另一台设备连接](#connect-from-another-device),还可以按空格键显示二维码,以便从手机快速访问。远程会话处于活动状态时,终端会显示连接状态和工具活动。

55>55>

56> 在 `remote-control` 之后传入以下任意标志:56> 在 `remote-control` 之后传入以下任意标志:

57>57>


151 151 

152Remote Control 会话处于活动状态后,您可以通过以下几种方式从另一台设备连接:152Remote Control 会话处于活动状态后,您可以通过以下几种方式从另一台设备连接:

153 153 

154* 在任意浏览器中**打开会话 URL**,直接进入 [claude.ai/code](https://claude.ai/code) 上的会话。154* 在任意浏览器中**打开 Claude Code 显示的 URL**,即可进入 [claude.ai/code](https://claude.ai/code)。

155* **扫描**会话 URL 旁显示的**二维码**,直接在 Claude 应用中打开它。使用 `claude remote-control` 时,按空格键可切换二维码显示。155* **扫描 URL 旁显示的二维码**,在 Claude 应用中打开它。使用 `claude remote-control` 时,按空格键可切换二维码显示。

156* **打开 [claude.ai/code](https://claude.ai/code) 或 Claude 应用**,在会话列表中按名称找到该会话。在 Claude 移动应用中,点击导航中的 **Code** 进入会话列表。Remote Control 会话在线时会显示带有绿色状态点的电脑图标。156* **打开 [claude.ai/code](https://claude.ai/code) 或 Claude 应用**,在会话列表中按名称找到该会话。在 Claude 移动应用中,点击导航中的 **Code** 进入会话列表。Remote Control 会话在线时会显示带有绿色状态点的电脑图标。

157 157 

158连接后,设备会显示该会话已在后台运行的所有子代理和工作流。从设备上停止其中一个,Claude Code 就会在您的机器上停止该任务。158连接后,设备会显示该会话已在后台运行的所有子代理和工作流。从设备上停止其中一个,Claude Code 就会在您的机器上停止该任务。

routines.md +1 −1

Details

105 105 

106**5. 选择环境**106**5. 选择环境**

107 107 

108选择仓库后,其下方会出现 **Cloud environment**。为任务选择一个[云环境](https://code.claude.com/docs/zh-CN/cloud-environments.md)。环境控制云端会话可以访问的内容:108选择仓库后,其下方会出现 **Cloud environment**。为任务选择一个[云环境](https://code.claude.com/docs/zh-CN/cloud-environments.md)。如果已选中某个环境,您可以保留它或选择其他环境。环境控制云端会话可以访问的内容:

109 109 

110* **Network access**:设置每次运行期间可用的互联网访问级别110* **Network access**:设置每次运行期间可用的互联网访问级别

111* **Environment variables**:提供 Claude 在每次运行期间可以使用的值。它们[对使用该环境的任何人都可见](https://code.claude.com/docs/zh-CN/cloud-environments.md#what-carries-over-from-your-setup),因此在 Anthropic 托管的环境中,请改为将 Claude 在运行期间调用的 API 的密钥存储为[网络密钥](https://code.claude.com/docs/zh-CN/cloud-environments.md#add-network-secrets)。该部分还列出了永远不会获得密钥的请求111* **Environment variables**:提供 Claude 在每次运行期间可以使用的值。它们[对使用该环境的任何人都可见](https://code.claude.com/docs/zh-CN/cloud-environments.md#what-carries-over-from-your-setup),因此在 Anthropic 托管的环境中,请改为将 Claude 在运行期间调用的 API 的密钥存储为[网络密钥](https://code.claude.com/docs/zh-CN/cloud-environments.md#add-network-secrets)。该部分还列出了永远不会获得密钥的请求

Details

157* **第一方登录键**:[`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid) 以及 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的 `"claudeai"` 和 `"console"` 值。如果您还部署了 MDM 策略或托管设置文件,请在其中以及在 claude.ai 的服务器托管设置中同时设置这些键,直到每个客户端都运行 v2.1.299 或更高版本。有关之后应在何处设置这些键以及哪个来源的值生效,请参阅[哪个托管来源提供登录键](https://code.claude.com/docs/zh-CN/managed-settings.md#which-managed-source-supplies-login-keys)。157* **第一方登录键**:[`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid) 以及 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的 `"claudeai"` 和 `"console"` 值。如果您还部署了 MDM 策略或托管设置文件,请在其中以及在 claude.ai 的服务器托管设置中同时设置这些键,直到每个客户端都运行 v2.1.299 或更高版本。有关之后应在何处设置这些键以及哪个来源的值生效,请参阅[哪个托管来源提供登录键](https://code.claude.com/docs/zh-CN/managed-settings.md#which-managed-source-supplies-login-keys)。

158* **网关登录键**:Claude Code 从不从服务器托管设置中读取 [`forceLoginGatewayUrl`](https://code.claude.com/docs/zh-CN/settings-reference#forcelogingatewayurl)、[`gatewayInternalNetworks`](https://code.claude.com/docs/zh-CN/settings-reference#gatewayinternalnetworks) 或 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的 `"gateway"` 值,因此那里的值既不会生效,也不会遮蔽在 MDM 策略或托管设置文件中设置的值。[`managedSourcesBehavior` 条目](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior)说明了由机器上的哪个管理员来源提供这些键。158* **网关登录键**:Claude Code 从不从服务器托管设置中读取 [`forceLoginGatewayUrl`](https://code.claude.com/docs/zh-CN/settings-reference#forcelogingatewayurl)、[`gatewayInternalNetworks`](https://code.claude.com/docs/zh-CN/settings-reference#gatewayinternalnetworks) 或 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的 `"gateway"` 值,因此那里的值既不会生效,也不会遮蔽在 MDM 策略或托管设置文件中设置的值。[`managedSourcesBehavior` 条目](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior)说明了由机器上的哪个管理员来源提供这些键。

159 159 

160#### 当机器的 `apiKeyHelper` 未生效时

161 

162当您的服务器托管设置是所选来源时,机器的托管设置文件或 MDM 策略中的 `apiKeyHelper` 不会生效。此时,只要以下两点同时成立,Claude Code 就会在将使用已保存 claude.ai 登录的会话中[拒绝提示词](https://code.claude.com/docs/zh-CN/errors.md#claude-code-didnt-send-your-claude-ai-login):

163 

164* 该文件或策略启用了云提供商,或者任何来源设置了 Anthropic 以外的 API 地址

165* 服务器托管设置未设置 helper,也未指定 Anthropic 的 API 地址

166 

167要解除拒绝,请保持该 helper 及其 API 地址生效,在服务器托管设置中指定 Anthropic 的 API 地址,或从机器的策略中移除该 helper。该拒绝行为需要 Claude Code v2.1.314 或更高版本。

168 

160### 获取和缓存行为169### 获取和缓存行为

161 170 

162Claude Code 在启动时从 Anthropic 的服务器获取设置,并在活动会话期间每小时轮询一次更新。171Claude Code 在启动时从 Anthropic 的服务器获取设置,并在活动会话期间每小时轮询一次更新。

settings.md +65 −62

Details

184* [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model):使用 [`/model`](https://code.claude.com/docs/zh-CN/model-config#setting-your-model) 在会话中期切换。每个模型有自己的提示缓存,因此切换后的第一个请求重新读取整个对话未缓存;请参阅[切换模型](https://code.claude.com/docs/zh-CN/prompt-caching.md#switching-models)184* [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model):使用 [`/model`](https://code.claude.com/docs/zh-CN/model-config#setting-your-model) 在会话中期切换。每个模型有自己的提示缓存,因此切换后的第一个请求重新读取整个对话未缓存;请参阅[切换模型](https://code.claude.com/docs/zh-CN/prompt-caching.md#switching-models)

185* [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 和 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings):使用 [`/effort`](https://code.claude.com/docs/zh-CN/model-config#adjust-effort-level) 在会话中期更改努力185* [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 和 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings):使用 [`/effort`](https://code.claude.com/docs/zh-CN/model-config#adjust-effort-level) 在会话中期更改努力

186 186 

187如果您在会话中期移除 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories),文件工具会在运行的会话中保留该阻止。要解除它,请从设置它的每个设置文件中移除该键,然后重启每个运行中的会话。

188 

187### 确认已加载的内容189### 确认已加载的内容

188 190 

189在 Claude Code 内运行 `/status` 以查看哪些设置来源处于活跃状态。**状态**选项卡包含一个 `Setting sources` 行,列出 Claude Code 为当前会话加载的每个设置文件,如 `User settings` 或 `Project local settings`。当[托管设置](https://code.claude.com/docs/zh-CN/admin-setup.md#decide-how-settings-reach-devices)生效时,托管设置条目在括号中显示它们如何到达您的机器。191在 Claude Code 内运行 `/status` 以查看哪些设置来源处于活跃状态。**状态**选项卡包含一个 `Setting sources` 行,列出 Claude Code 为当前会话加载的每个设置文件,如 `User settings` 或 `Project local settings`。当[托管设置](https://code.claude.com/docs/zh-CN/admin-setup.md#decide-how-settings-reach-devices)生效时,托管设置条目在括号中显示它们如何到达您的机器。


205 207 

206## 设置优先级208## 设置优先级

207 209 

208当同一键出现在多个位置时,Claude Code 使用设置它的最高级别的值。下面的堆栈显示级别,最高在顶部;更高级别的键覆盖它在下面任何地方的相同键。210当同一个键出现在多个位置时,Claude Code 使用设置了该键的最高级别中的值。下面的层级堆栈展示了各个级别,最高级别位于顶部;较高级别中的键会覆盖其下方任何位置的同一个键。

209 211 

210Settings precedence, highest first: managed settings, command line, project local, shared project, user. A key set at a higher level overrides the same key set lower down.212Settings precedence, highest first: managed settings, command line, project local, shared project, user. A key set at a higher level overrides the same key set lower down.

211 213 

212按顺序,最高优先级优先:214按优先级从高到低排列:

213 215 

2141. **托管设置**:您的组织部署的设置,通过 `managed-settings.json` 文件、MDM 策略或来自 claude.ai 控制台的[服务器管理设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)。您自己的设置文件或 `--settings` 中的任何内容都不会覆盖托管键,`--model` 等标志仅从您的组织允许的模型中选择。托管 [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model) 是起始默认值,而不是锁定;锁定是 [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels) 和 [`deniedModels`](https://code.claude.com/docs/zh-CN/settings-reference#deniedmodels)。当您的组织传递多个托管来源时,[托管层内的优先级](https://code.claude.com/docs/zh-CN/managed-settings.md#precedence-within-the-managed-tier)的规则说明 Claude Code 从每个来源读取什么。2161. **托管设置**:由您的组织部署的设置,通过 `managed-settings.json` 文件、MDM 策略或来自 claude.ai 控制台的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)提供。您自己的设置文件或 `--settings` 中的任何内容都无法覆盖托管的键,而 `--model` 等标志只能从您的组织允许的模型中进行选择。托管的 [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model) 只是初始默认值,而非锁定;起锁定作用的是 [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels) 和 [`deniedModels`](https://code.claude.com/docs/zh-CN/settings-reference#deniedmodels)。当您的组织提供多个托管来源时,[托管层级内的优先级](https://code.claude.com/docs/zh-CN/managed-settings.md#precedence-within-the-managed-tier)规则说明了 Claude Code 从每个来源读取哪些内容。

2152. **命令行**:您在启动 `claude` 时使用 `--settings <file-or-json>` 传递的 JSON,仅用于该会话;请参阅[为一个会话更改设置](#change-a-setting-for-one-session)。您在此处设置的键会覆盖项目和用户设置文件中的相同键,省略的键保留这些文件中的值。其他标志(如 `--model`)为会话设置某一项内容,不属于此堆栈;[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)上的键条目说明哪些标志会覆盖它。2172. **命令行**:启动 `claude` 时通过 `--settings <file-or-json>` 传入的 JSON,仅对该会话有效;请参阅[为单个会话更改设置](#change-a-setting-for-one-session)。在此处设置的键会覆盖项目和用户设置文件中的同一个键,而未在此处设置的键则保留这些文件中的值。其他标志(例如 `--model`)只为会话设置一项内容,不属于此层级堆栈;[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)中每个键的条目说明了哪些标志会覆盖该键。

2163. **项目本地设置** (`.claude/settings.local.json`):您对此项目的个人设置。2183. **项目本地设置**(`.claude/settings.local.json`):您针对此项目的个人设置。

2174. **共享项目设置** (`.claude/settings.json`):您的团队检入源代码管理的设置。2194. **共享项目设置**(`.claude/settings.json`):您的团队提交到源代码管理中的设置。

2185. **用户设置** (`~/.claude/settings.json`):您对每个项目的个人设置。2205. **用户设置**(`~/.claude/settings.json`):适用于所有项目的个人设置。

219 221 

220环境变量不是此堆栈中的级别。当行为同时有 shell 变量和设置键时,哪个适用是按对决定的,而不是按级别:在您的 shell 中导出的 `ANTHROPIC_MODEL` 适用于任何文件中的 `model` 键,而 `ANTHROPIC_DEFAULT_MODEL` 仅当没有文件设置 `model` 时适用。[环境变量参考](https://code.claude.com/docs/zh-CN/env-vars.md#precedence)说哪些键有对以及 Claude Code 首先读取哪个。设置文件内的 `env` 块是普通键并遵循上面的级别。222环境变量不是此层级堆栈中的一个级别。当某个行为同时具有 shell 变量和设置键时,采用哪一个是按每一对单独决定的,而非按级别决定:在 shell 中导出的 `ANTHROPIC_MODEL` 优先于任何文件中的 `model` 键,而 `ANTHROPIC_DEFAULT_MODEL` 仅在没有任何文件设置 `model` 时才生效。[环境变量参考](https://code.claude.com/docs/zh-CN/env-vars.md#precedence)说明了哪些键具有对应的变量,以及 Claude Code 优先读取哪一个。设置文件中的 `env` 块是一个普通的键,遵循上述级别。

221 223 

222对于少数安全敏感的键,Claude Code 尊重来自较低级别的更严格值而不是托管值;[托管设置优先级的例外](#exceptions-to-managed-settings-precedence)列出它们。224对于少数安全敏感的键,Claude Code 会采用较低级别中更严格的值,而不是托管值;[托管设置优先级的例外情况](#exceptions-to-managed-settings-precedence)列出了这些键。

223 225 

224### 列表合并而不是覆盖226### 列表会合并而非覆盖

225 227 

226当您在多个文件中设置相同的列表键(如 `permissions.allow`)时,Claude Code 组合列表而不是选择一个,因此每个文件可以添加条目而不删除另一个文件的。四个保存模型列表或每个模型条目的键遵循自己的规则:228当您在多个文件中设置同一个列表键(例如 `permissions.allow`)时,Claude Code 会合并这些列表而不是只选择其中一个,因此每个文件都可以添加条目,而不会移除其他文件的条目。有四个保存模型列表或按模型条目的键遵循各自的规则:

227 229 

228* [`fallbackModel`](https://code.claude.com/docs/zh-CN/settings-reference#fallbackmodel) 是一个有序链,其中位置具有意义,因此 Claude Code 从定义它的最高优先级文件获取整个值。230* [`fallbackModel`](https://code.claude.com/docs/zh-CN/settings-reference#fallbackmodel) 是一个有序链,其中位置具有意义,因此 Claude Code 会从定义了它的最高优先级文件中获取整个值。

229* [`modelPicker`](https://code.claude.com/docs/zh-CN/settings-reference#modelpicker) 保存一个有序的行列表加上替换标志,因此 Claude Code 永远不会合并来自两个来源的行。它从托管设置、`--settings` 和用户设置中定义它的最高获取整个值,并忽略项目和本地设置中的键。需要 Claude Code v2.1.242 或更高版本。231* [`modelPicker`](https://code.claude.com/docs/zh-CN/settings-reference#modelpicker) 保存一个有序的行列表以及一个替换标志,因此 Claude Code 从不合并来自两个来源的行。它从托管设置、`--settings` 和用户设置中定义了该键的最高级别获取整个值,并忽略项目设置和本地设置中的该键。需要 Claude Code v2.1.242 或更高版本。

230* [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels):当 Claude Code 应用的托管设置定义它时,Claude Code 按原样应用该列表并忽略您在用户、项目或本地设置中添加的条目,除非嵌入 Claude Code 的应用提供自己的模型列表;请参阅[托管设置优先级的例外](#exceptions-to-managed-settings-precedence)。跨托管来源列表也永远不会合并;[Claude Code 如何组合托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources)说哪个来源的列表适用。跨非托管作用域 Claude Code 照常合并数组。232* [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels):当 Claude Code 应用的托管设置定义了该键时,Claude Code 会原样应用该列表,并忽略您在用户、项目或本地设置中添加的条目,除非嵌入 Claude Code 的应用提供了自己的模型列表;请参阅[托管设置优先级的例外情况](#exceptions-to-managed-settings-precedence)。在多个托管来源之间,该列表同样不会合并;[Claude Code 如何组合托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources)说明了采用哪个来源的列表。在非托管作用域之间,Claude Code 照常合并数组。

231* [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings):Claude Code 一次解决它一个模型,与 [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 一起。`modelSettings` 条目说明哪个文件的值适用于模型。233* [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings):Claude Code 会逐个模型解析该键,并结合 [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 一起解析。`modelSettings` 条目说明了对某个模型采用哪个文件中的值。

232 234 

233### 优先级示例235### 优先级示例

234 236 

235当 Claude 工作时,Claude Code 在微调器下显示一行提示,如"使用 /config 更改您的默认权限模式(包括 Plan Mode)"。假设您想关闭这些提示,因此您在 `~/.claude/settings.json` 中将 [`spinnerTipsEnabled`](https://code.claude.com/docs/zh-CN/settings-reference#spinnertipsenabled) 设置为 `false`。下面的每个场景是可以打开它们的东西,以及您可以做什么。237在 Claude 工作时,Claude Code 会在加载动画下方显示一行提示,例如"Use /config to change your default permission mode (including Plan Mode)"。假设您想关闭这些提示,于是在 `~/.claude/settings.json` 中将 [`spinnerTipsEnabled`](https://code.claude.com/docs/zh-CN/settings-reference#spinnertipsenabled) 设置为 `false`。下面的每个场景都是可能重新启用这些提示的情况,以及您可以采取的应对措施。

236 238 

237#### 团队设置覆盖个人设置239#### 团队设置覆盖个人设置

238 240 

239您的团队的 `.claude/settings.json` 将其设置为 `true`。Claude Code 使用项目值,因为共享项目位于用户上方,因此您在该项目中看到提示,其他地方都没有。241您团队的 `.claude/settings.json` 将其设置为 `true`。Claude Code 使用项目中的值,因为共享项目级别高于用户级别,所以您只会在该项目中看到提示,在其他地方则不会。

240 242 

241您可以恢复您的值:在该项目中的 `.claude/settings.local.json` 中添加 `"spinnerTipsEnabled": false`。项目本地位于共享项目上方,因此您的会话停止显示提示,您队友的会话不改变。243您可以恢复自己的值:在该项目的 `.claude/settings.local.json` 中添加 `"spinnerTipsEnabled": false`。项目本地级别高于共享项目级别,因此您在该项目中的会话将不再显示提示,而您队友的会话不受影响。

242 244 

243#### 组织设置覆盖一切245#### 组织设置覆盖一切

244 246 

245您的组织的托管设置将其设置为 `true`。您在用户、项目或本地设置中放入的任何内容都不会关闭提示,`--settings` 也不会。托管是最高级别。247您组织的托管设置将其设置为 `true`。您在用户、项目或本地设置中所做的任何设置都无法关闭提示,`--settings` 也不行。托管是最高级别。

246 248 

247您无法恢复您的值。运行 `/status` 以查看哪个托管来源适用,并询问您的管理员策略是否应改变。249您无法恢复自己的值。运行 `/status` 查看采用的是哪个托管来源,如果认为该策略需要更改,请咨询您的管理员。

248 250 

249#### 命令行为一个会话覆盖您的文件251#### 命令行在单个会话中覆盖您的文件

250 252 

251您使用 `claude --settings '{"spinnerTipsEnabled": true}'` 启动了会话。命令行位于除托管外的每个文件上方,因此该会话显示提示,即使您的文件说 `false`。253您使用 `claude --settings '{"spinnerTipsEnabled": true}'` 启动了会话。命令行级别高于除托管之外的所有文件,因此即使您的文件中设置为 `false`,该会话仍会显示提示。

252 254 

253您在下一个会话上恢复您的值;`--settings` 持续一个会话并不写入任何文件。255您会在下一个会话中恢复自己的值;`--settings` 仅在一个会话中有效,并且不会写入任何文件。

254 256 

255#### 标志或环境变量设置相同的东西257#### 标志或环境变量设置了同一项内容

256 258 

257某些键有命令行标志或环境变量,无论哪个文件设置它都覆盖设置值:`ANTHROPIC_MODEL` 覆盖 [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model) 设置,`--model` 为一个会话覆盖两者。259某些键具有对应的命令行标志或环境变量,无论该键是由哪个文件设置的,它们都会覆盖设置值:`ANTHROPIC_MODEL` 会覆盖 [`model`](https://code.claude.com/docs/zh-CN/settings-reference#model) 设置,而 `--model` 会在一个会话中同时覆盖这两者。

258 260 

259您是否可以恢复您的值取决于键:取消设置变量或删除标志,并检查[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)上的键条目和[环境变量参考](https://code.claude.com/docs/zh-CN/env-vars.md)上的变量行,了解 Claude Code 使用哪个。261能否恢复您的值取决于具体的键:取消设置该变量或去掉该标志,并查看[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)中该键的条目以及[环境变量参考](https://code.claude.com/docs/zh-CN/env-vars.md)中该变量所在的行,了解 Claude Code 使用的是哪一个。

260 262 

261### 排除不适用的设置263### 排查未生效的设置

262 264 

263当您设置键而 Claude Code 不表现得好像您有时,从 `/status` 开始以查看它加载了哪些文件,然后在下面找到您的症状。[调试您的配置](https://code.claude.com/docs/zh-CN/debug-your-config.md)涵盖更广泛的检查,包括干净配置测试。265当您设置了某个键,但 Claude Code 的行为并未体现该设置时,请先运行 `/status` 查看它加载了哪些文件,然后在下方找到您遇到的症状。[调试您的配置](https://code.claude.com/docs/zh-CN/debug-your-config.md)涵盖了更全面的检查,包括干净配置测试。

264 266 

265#### 您设置的值被忽略267#### 您设置的值被忽略

266 268 

267其他东西设置相同的键,文件无法设置该值,或文件没有加载:269可能是其他地方设置了同一个键、该文件无法设置该值,或该文件未被加载:

268 270 

269* **更高级别设置它。** 另一个设置文件、`--settings` 标志或托管来源在您的上方设置键;[堆栈](#settings-precedence)说哪个。标志或环境变量也可以自己覆盖键,按键决定;[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)上的键条目说 Claude Code 使用哪个,[`env` 条目](https://code.claude.com/docs/zh-CN/settings-reference#env)涵盖托管 `env` 值与 shell 导出。271* **更高级别设置了该键。** 另一个设置文件、`--settings` 标志或托管来源在高于您的级别设置了该键;[层级堆栈](#settings-precedence)说明了具体是哪一个。标志或环境变量也可以自行覆盖该键,这是按键逐一决定的;[设置参考](https://code.claude.com/docs/zh-CN/settings-reference.md)中该键的条目说明了 Claude Code 使用哪一个,而 [`env` 条目](https://code.claude.com/docs/zh-CN/settings-reference#env)介绍了托管 `env` 值与 shell 导出之间的关系。

270* **安全键保持其严格值。** 对于少数几个键 Claude Code 尊重任何文件的限制值,因此项目 `true` 用于 [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/settings-reference#disableclaudeaiconnectors) 保持开启;请参阅[托管设置优先级的例外](#exceptions-to-managed-settings-precedence)。272* **安全键保持其严格值。** 对于少数键,Claude Code 会采用任何文件中的限制性值,因此项目中为 [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/settings-reference#disableclaudeaiconnectors) 设置的 `true` 会保持生效;请参阅[托管设置优先级的例外情况](#exceptions-to-managed-settings-precedence)。

271* **文件无法设置该值。** [`permissions.defaultMode`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-defaultmode) 值 `auto` 和 `bypassPermissions` 不从项目或本地设置生效;改为在用户或托管设置中设置它们,或为一个会话传递 `--permission-mode`。在 v2.1.257 之前,`bypassPermissions` 从任何文件生效。273* **该文件无法设置该值。** [`permissions.defaultMode`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-defaultmode) 的值 `auto` 和 `bypassPermissions` 在项目或本地设置中不会生效;请改为在用户设置或托管设置中设置它们,或者传入 `--permission-mode` 以用于单个会话。在 v2.1.257 之前,`bypassPermissions` 在任何文件中都会生效。

272 274 

273 [`env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 块中的遥测导出变量也不从项目或本地设置生效,除了少数关闭值。[Claude Code 在 `env` 中忽略的变量](https://code.claude.com/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)列出变量和这些值。275 [`env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 块中的遥测导出变量在项目或本地设置中同样不会生效,少数关闭值除外。[Claude Code 在 `env` 中忽略的变量](https://code.claude.com/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)列出了这些变量及相应的值。

274* **文件损坏。** 无效的 JSON 或拒绝的值使 Claude Code 跳过文件或条目;请参阅[修复损坏的设置文件](#fix-a-broken-settings-file)。276* **该文件已损坏。** 无效的 JSON 或被拒绝的值会导致 Claude Code 跳过该文件或该条目;请参阅[修复损坏的设置文件](#fix-a-broken-settings-file)。

275 277 

276#### 您在 Claude Code 中所做的更改在新会话中丢失278#### 您在 Claude Code 中所做的更改在新会话中丢失

277 279 

278当您从 Claude Code 内保存新会话的选择时,如使用 `/model` 的默认模型,Claude Code 将其写入您的用户设置文件 `~/.claude/settings.json`。如果您无法写入该文件,例如因为另一个工具生成它或将其链接到只读副本,更改适用于当前会话并在下一个会话中消失。在生成文件的工具中设置键,或用您可以写入的文件替换文件。280当您在 Claude Code 内部保存用于新会话的选择时(例如使用 `/model` 设置默认模型),Claude Code 会将其写入您的用户设置文件 `~/.claude/settings.json`。如果您无法写入该文件(例如因为该文件由其他工具生成,或被链接到只读副本),则该更改仅适用于当前会话,在下一个会话中就会消失。请在生成该文件的工具中设置该键,或将该文件替换为您可以写入的文件。

279 281 

280如果您可以写入文件而更改仍然不持续,检查更改是否[仅用于一个会话](#change-a-setting-for-one-session)或[更高级别设置相同的键](#a-value-you-set-is-ignored)。对于 `model` 键,[新会话在与您选择的不同的模型上启动](https://code.claude.com/docs/zh-CN/model-config.md#a-new-session-starts-on-a-different-model-than-you-picked)列出更多原因。282如果您可以写入该文件但更改仍未保留,请检查该更改是否[仅针对单个会话](#change-a-setting-for-one-session),或者是否[有更高级别设置了同一个键](#a-value-you-set-is-ignored)。对于 `model` 键,[新会话启动时使用的模型与您选择的不同](https://code.claude.com/docs/zh-CN/model-config.md#a-new-session-starts-on-a-different-model-than-you-picked)列出了更多原因。

281 283 

282#### 托管更改还没有到达您284#### 托管更改尚未应用到您这里

283 285 

284托管来源按[传递表](https://code.claude.com/docs/zh-CN/managed-settings.md#choose-a-delivery-mechanism)中的计划到达运行的会话,因此首先重启会话。如果 `/status` 然后命名与您的管理员更改的不同的来源,更高优先级的来源适用;[Claude Code 如何组合托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources)给出顺序。286托管来源会按照[交付方式表](https://code.claude.com/docs/zh-CN/managed-settings.md#choose-a-delivery-mechanism)中的时间安排应用到正在运行的会话,因此请先重启会话。如果之后 `/status` 显示的来源与您的管理员更改的来源不同,则说明采用的是优先级更高的来源;[Claude Code 如何组合托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources)给出了优先顺序。

285 287 

286#### 提交的键不到达队友288#### 已提交的键未对队友生效

287 289 

288两件事阻止 `.claude/settings.json` 中的键为克隆它的每个人应用:290有两种情况会导致 `.claude/settings.json` 中的键无法对所有克隆该仓库的人生效:

289 291 

290* **Claude Code 忽略仓库文件中的键。** 在[设置索引](https://code.claude.com/docs/zh-CN/settings-reference.md#settings-index)的作用域列中查找 `User, local, or managed`、`User or managed`、`User`、`Managed` 或 `Global config`。这些键永远不会从共享文件应用,除了少数几个仓库文件仍然可以关闭的。每个这些条目在其作用域行上说明。`Global config` 键仅从 `~/.claude.json` 应用。292* **Claude Code 会忽略仓库文件中的该键。** 在[设置索引](https://code.claude.com/docs/zh-CN/settings-reference.md#settings-index)的 Scope 列中查找 `User, local, or managed`、`User or managed`、`User`、`Managed` 或 `Global config`。这些键从不通过共享文件生效,但仓库文件仍可关闭其中的少数几个。每个此类条目都会在其 Scope 行中注明这一点。`Global config` 键仅在 `~/.claude.json` 中生效。

291 293 

292 在 `env` 键内,遥测导出变量也永远不会从共享文件应用,除了少数关闭值;请参阅[Claude Code 在 `env` 中忽略的变量](https://code.claude.com/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)。294 在 `env` 键中,遥测导出变量同样从不通过共享文件生效,少数关闭值除外;请参阅[Claude Code 在 `env` 中忽略的变量](https://code.claude.com/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)。

293* **键等待信任。** `permissions.allow` 规则、`permissions.additionalDirectories`、`extraKnownMarketplaces` 和大多数 [`env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 值仅在每个队友[信任文件夹](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)后应用。在那之前他们仍然看到提示并不从文件声明的市场获得插件。`deny` 和 `ask` 规则立即应用。295* **该键需要等待信任。** `permissions.allow` 规则、`permissions.additionalDirectories`、`extraKnownMarketplaces` 以及大多数 [`env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 值仅在每位队友[信任该文件夹](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)之后才会生效。在此之前,他们仍会看到权限提示,也不会从该文件声明的市场获取插件。`deny` 和 `ask` 规则会立即生效。

294 296 

295#### 权限规则组合方式与您预期不同297#### 权限规则的组合方式与您的预期不同

296 298 

297* **您在权限提示上选择了"Yes, and don't ask again"但仍然为相同的工具获得提示。** 该选择将 `allow` 规则保存到您的本地文件,本地的 `allow` 规则不优先于项目或托管文件中的 `ask` 规则;[权限规则如何组合](https://code.claude.com/docs/zh-CN/permissions.md#settings-precedence)解释顺序。在 VS Code 扩展中,批准卡让您选择目标文件,包括项目的共享文件,这改变了每个人的规则;在 CLI 中,Claude Code 仅写入您的本地文件。299* **您在权限提示中选择了"Yes, and don't ask again",但对同一工具仍会收到提示。** 该选择会将一条 `allow` 规则保存到您的本地文件中,而本地文件中的 `allow` 规则的优先级并不高于项目或托管文件中的 `ask` 规则;[权限规则如何组合](https://code.claude.com/docs/zh-CN/permissions.md#settings-precedence)解释了其中的顺序。在 VS Code 扩展中,批准卡片允许您选择目标文件,包括项目的共享文件,这会为所有人更改该规则;在 CLI 中,Claude Code 只会写入您的本地文件。

298* **您的组织的允许规则仍然与您的一起应用。** 这是预期的:Claude Code 跨作用域合并 [`permissions.allow`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-allow),除非您的组织设置 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/settings-reference#allowmanagedpermissionrulesonly)。300* **您组织的允许规则仍会与您的规则一起生效。** 这是预期行为:Claude Code 会跨作用域合并 [`permissions.allow`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-allow),除非您的组织设置了 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/settings-reference#allowmanagedpermissionrulesonly)。

299 301 

300### 托管设置优先级的例外302### 托管设置优先级的例外情况

301 303 

302对于少数几个值限制会话的键,Claude Code 尊重来自否则无法覆盖托管设置的作用域的限制值。在此表中找到键以查看它尊重哪个值以及从哪里。304对于少数值会对会话施加限制的键,Claude Code 会采用来自某个作用域的限制性值,即使该作用域在其他情况下无法覆盖托管设置。在此表中查找该键,即可了解它采用哪个值以及来自何处。

303 305 

304| 键 | Claude Code 尊重的值 | 注释 |306| 键 | Claude Code 采用的值 | 说明 |

305| :- | :- | :- |307| :- | :- | :- |

306| [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/settings-reference#disableclaudeaiconnectors) | 来自任何作用域的 `true` | 即使托管来源设置 `false` 也被尊重 |308| [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/settings-reference#disableclaudeaiconnectors) | 任何作用域中的 `true` | 即使托管来源设置为 `false` 也会采用 |

307| [`enableArtifact`](https://code.claude.com/docs/zh-CN/settings-reference#enableartifact) | 来自任何作用域的 `false`,以及来自任何作用域的 `disableArtifact: true` | 即使托管来源设置 `true` 也被尊重;没有什么打开[Artifact 工具](https://code.claude.com/docs/zh-CN/artifacts.md#disable-artifacts)。需要 Claude Code v2.1.242 或更高版本 |309| [`enableArtifact`](https://code.claude.com/docs/zh-CN/settings-reference#enableartifact) | 任何作用域中的 `false`,以及任何作用域中的 `disableArtifact: true` | 即使托管来源设置为 `true` 也会采用;一旦禁用,任何设置都无法重新启用 [Artifact 工具](https://code.claude.com/docs/zh-CN/artifacts.md#disable-artifacts)。需要 Claude Code v2.1.242 或更高版本 |

308| [`isolatePeerMachines`](https://code.claude.com/docs/zh-CN/settings-reference#isolatepeermachines) | 来自任何作用域的 `true` | 即使托管来源设置 `false` 也被尊重 |310| [`isolatePeerMachines`](https://code.claude.com/docs/zh-CN/settings-reference#isolatepeermachines) | 任何作用域中的 `true` | 即使托管来源设置为 `false` 也会采用 |

309| [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) | 来自任何作用域的 `true` | 即使托管来源设置 `false` 也被尊重。需要 Claude Code v2.1.257 或更高版本 |311| [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) | 任何作用域中的 `true` | 即使托管来源设置为 `false` 也会采用。需要 Claude Code v2.1.257 或更高版本 |

310| [`autoMode.classifyAllShell`](https://code.claude.com/docs/zh-CN/settings-reference#automode-classifyallshell) | 来自 `~/.claude/settings.json` 或 `--settings` 的 `true` | 即使托管来源设置 `false` 也被尊重 |312| [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) | 任何作用域中的 `true` | 即使托管来源设置为 `false` 也会采用。需要 Claude Code v2.1.314 或更高版本 |

311| [`remoteControlAtStartup`](https://code.claude.com/docs/zh-CN/settings-reference#remotecontrolatstartup) | 来自 `.claude/settings.json` 或 `.claude/settings.local.json` 的 `false` | 即使托管来源设置 `true` 也被尊重;项目或本地 `true` 被忽略 |313| [`autoMode.classifyAllShell`](https://code.claude.com/docs/zh-CN/settings-reference#automode-classifyallshell) | `~/.claude/settings.json` 或 `--settings` 中的 `true` | 即使托管来源设置为 `false` 也会采用 |

312| [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound) | 来自 `.claude/settings.json` 或 `.claude/settings.local.json` 的更严格值,在 `accept` \< `hold` \< `refuse` 梯形上 | 在托管、`--settings` 和用户值上被尊重;不是更严格的项目或本地值被忽略 |314| [`remoteControlAtStartup`](https://code.claude.com/docs/zh-CN/settings-reference#remotecontrolatstartup) | `.claude/settings.json` 或 `.claude/settings.local.json` 中的 `false` | 即使托管来源设置为 `true` 也会采用;项目或本地设置中的 `true` 会被忽略 |

313| [`useAutoModeDuringPlan`](https://code.claude.com/docs/zh-CN/settings-reference#useautomodeduringplan) | 来自任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 的 `false` | 即使获胜的托管来源设置 `true` 也被尊重;`.claude/settings.json` 中的 `false` 被忽略 |315| [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound) | `.claude/settings.json` 或 `.claude/settings.local.json` 中更严格的值,严格程度依次为 `accept` \< `hold` \< `refuse` | 优先于托管、`--settings` 和用户设置中的值;项目或本地设置中不更严格的值会被忽略 |

314| [`syncClaudeAiSkills`](https://code.claude.com/docs/zh-CN/settings-reference#syncclaudeaiskills) | 来自任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 的 `false` | 即使获胜的托管来源设置 `true` 也被尊重;`.claude/settings.json` 中的 `false` 被忽略 |316| [`useAutoModeDuringPlan`](https://code.claude.com/docs/zh-CN/settings-reference#useautomodeduringplan) | 任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 中的 `false` | 即使最终采用的托管来源设置为 `true` 也会采用;`.claude/settings.json` 中的 `false` 会被忽略 |

315| [`syncClaudeAiPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#syncclaudeaiplugins) | 来自任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 的 `false` | 即使获胜的托管来源设置 `true` 也被尊重;`.claude/settings.json` 中的 `false` 被忽略 |317| [`syncClaudeAiSkills`](https://code.claude.com/docs/zh-CN/settings-reference#syncclaudeaiskills) | 任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 中的 `false` | 即使最终采用的托管来源设置为 `true` 也会采用;`.claude/settings.json` 中的 `false` 会被忽略 |

316| [`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) | 来自任何作用域(包括 `--settings`)的较低上限 | 即使 Claude Code 应用的托管设置设置更高的上限也被尊重;最低的上限适用。需要 Claude Code v2.1.267 或更高版本 |318| [`syncClaudeAiPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#syncclaudeaiplugins) | 任何托管来源、`--settings`、`~/.claude/settings.json` 或 `.claude/settings.local.json` 中的 `false` | 即使最终采用的托管来源设置为 `true` 也会采用;`.claude/settings.json` 中的 `false` 会被忽略 |

317 319| [`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) | 任何作用域(包括 `--settings`)中更低的上限 | 即使 Claude Code 应用的托管设置设置了更高的上限也会采用;以最低的上限为准。需要 Claude Code v2.1.267 或更高版本 |

318运行 Claude Code 的应用并设置 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-CN/env-vars) 也是例外。Claude Code 从该应用的模型配置优先于来自每个托管来源的 `model`、`fallbackModel`、`modelPicker` 和 `modelOverrides` 键,以及托管 `env` 块中的模型选择变量,如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列。Claude Code 保持托管 [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels) 允许列表生效,除非应用提供自己的。320 

321在自身内部运行 Claude Code 并设置了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-CN/env-vars) 的应用也是一种例外情况。Claude Code 会采用该应用的模型配置,而不是所有托管来源中的 `model`、`fallbackModel`、`modelPicker` 和 `modelOverrides` 键,也不是托管 `env` 块中的模型选择变量(例如 `ANTHROPIC_MODEL` 和 `ANTHROPIC_DEFAULT_*_MODEL` 系列)。除非该应用提供了自己的允许列表,否则 Claude Code 会继续执行托管的 [`availableModels`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodels) 允许列表。

319 322 

320## 云会话中的设置323## 云会话中的设置

321 324 

Details

144| [`permissions.allow`](#permissions-allow) | 无需确认提示即批准所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax) | 权限设置 | 任意文件 |144| [`permissions.allow`](#permissions-allow) | 无需确认提示即批准所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax) | 权限设置 | 任意文件 |

145| [`permissions.ask`](#permissions-ask) | 在所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax)之前始终进行提示 | 权限设置 | 任意文件 |145| [`permissions.ask`](#permissions-ask) | 在所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax)之前始终进行提示 | 权限设置 | 任意文件 |

146| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | 使文件工具在所有权限模式下拒绝读取[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外的内容 | 权限设置 | 任意文件 |146| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | 使文件工具在所有权限模式下拒绝读取[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外的内容 | 权限设置 | 任意文件 |

147| [`permissions.blockWritesOutsideWorkingDirectories`](#permissions-blockwritesoutsideworkingdirectories) | 使 `Write`、`Edit` 和 `NotebookEdit` 工具在所有权限模式下拒绝[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外的路径,[Claude Code 自身的部分文件](#what-the-write-block-refuses-and-what-stays-writable)除外 | 权限设置 | 任意文件 |

147| [`permissions.defaultMode`](#permissions-defaultmode) | 设置新会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in) | 权限设置 | 任意文件 |148| [`permissions.defaultMode`](#permissions-defaultmode) | 设置新会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in) | 权限设置 | 任意文件 |

148| [`permissions.deny`](#permissions-deny) | 阻止所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax),包括读取包含机密的文件 | 权限设置 | 任意文件 |149| [`permissions.deny`](#permissions-deny) | 阻止所列的[工具使用](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax),包括读取包含机密的文件 | 权限设置 | 任意文件 |

149| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | 阻止任何人进入 [bypassPermissions 模式](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) | 权限设置 | 任意文件 |150| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | 阻止任何人进入 [bypassPermissions 模式](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) | 权限设置 | 任意文件 |


901控制 Claude 无需询问即可使用哪些工具、哪些工具始终需要提示、哪些工具被阻止,并设置会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)。下面的每个 `permissions.*` 键都嵌套在此对象下。902控制 Claude 无需询问即可使用哪些工具、哪些工具始终需要提示、哪些工具被阻止,并设置会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)。下面的每个 `permissions.*` 键都嵌套在此对象下。

902 903 

903* **作用域**:[`Any file`](#scopes)904* **作用域**:[`Any file`](#scopes)

904* **类型**:包含 `allow`、`ask`、`deny`、`additionalDirectories`、`blockReadsOutsideWorkingDirectories`、`defaultMode`、`disableBypassPermissionsMode` 和 `disableAutoMode` 的对象905* **类型**:包含 `allow`、`ask`、`deny`、`additionalDirectories`、`blockReadsOutsideWorkingDirectories`、`blockWritesOutsideWorkingDirectories`、`defaultMode`、`disableBypassPermissionsMode` 和 `disableAutoMode` 的对象

905* **默认值**:未设置906* **默认值**:未设置

906 907 

907此示例无需询问即批准 `npm run` 命令,在 `git push` 之前进行提示,阻止读取 `.env`,并以 `acceptEdits` 启动会话:908此示例无需询问即批准 `npm run` 命令,在 `git push` 之前进行提示,阻止读取 `.env`,并以 `acceptEdits` 启动会话:


1062}1063}

1063```1064```

1064 1065 

1066要解除阻止,请从所有设置了此键的设置文件中删除该键,然后重启每个正在运行的会话。

1067 

1065您通过 `--add-dir`、`/add-dir` 或用户设置或托管设置中的 `additionalDirectories` 添加的目录,在该阻止中均视为工作目录。仅在仓库设置中添加的目录不计入:即 `.claude/settings.json` 中的目录,以及 `.claude/settings.local.json` 中的目录(除非 git 将该文件报告为未跟踪)。在不是 git 仓库的目录中,或当 git 跟踪该文件时,Claude Code 会将 `.claude/settings.local.json` 视为仓库设置,因此请将您希望保持可读的目录放在用户设置中。1068您通过 `--add-dir`、`/add-dir` 或用户设置或托管设置中的 `additionalDirectories` 添加的目录,在该阻止中均视为工作目录。仅在仓库设置中添加的目录不计入:即 `.claude/settings.json` 中的目录,以及 `.claude/settings.local.json` 中的目录(除非 git 将该文件报告为未跟踪)。在不是 git 仓库的目录中,或当 git 跟踪该文件时,Claude Code 会将 `.claude/settings.local.json` 视为仓库设置,因此请将您希望保持可读的目录放在用户设置中。

1066 1069 

1067当 [`autoMemoryDirectory`](#automemorydirectory) 来自项目的 `.claude/settings.json`,或来自[被视为由仓库提供](https://code.claude.com/docs/zh-CN/permissions.md#when-your-local-settings-file-needs-trust)的 `.claude/settings.local.json` 时,Claude Code 不会从该目录加载任何[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#storage-location),也不会向其中保存任何内容。1070当 [`autoMemoryDirectory`](#automemorydirectory) 来自项目的 `.claude/settings.json`,或来自[被视为由仓库提供](https://code.claude.com/docs/zh-CN/permissions.md#when-your-local-settings-file-needs-trust)的 `.claude/settings.local.json` 时,Claude Code 不会从该目录加载任何[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#storage-location),也不会向其中保存任何内容。

1068 1071 

1069要解除阻止,请从所有设置了此键的设置文件中删除该键,然后启动新会话。

1070 

1071#### 阻止状态下的沙箱命令1072#### 阻止状态下的沙箱命令

1072 1073 

1073启用[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)时,该阻止也涵盖沙箱中的命令。Claude Code 会拒绝它们读取您的主目录以及存放用户文件的其他根目录:`/Users`、`/home`、`/root`、`/Volumes`、`/mnt`、`/media`、`/run/media` 和 `/srv`。然后它会重新开放工作目录、Claude Code 在会话中创建的 [worktree](https://code.claude.com/docs/zh-CN/worktrees.md)、会话临时目录,以及命令所需的 `~/.claude` 部分(例如 skill 和插件)。在阻止生效期间,来自仓库设置的 `allowRead` 和 `allowWrite` 条目不计入。1074启用[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)时,该阻止也涵盖沙箱中的命令。Claude Code 会拒绝它们读取您的主目录以及存放用户文件的其他根目录:`/Users`、`/home`、`/root`、`/Volumes`、`/mnt`、`/media`、`/run/media` 和 `/srv`。然后它会重新开放工作目录、Claude Code 在会话中创建的 [worktree](https://code.claude.com/docs/zh-CN/worktrees.md)、会话临时目录,以及命令所需的 `~/.claude` 部分(例如 skill 和插件)。在阻止生效期间,来自仓库设置的 `allowRead` 和 `allowWrite` 条目不计入。


1092 1093 

1093如果重新开放的文件中包含机密(例如 `http.extraHeader` 令牌),请将其路径添加到 [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread)。覆盖某个文件的 `denyRead` 条目始终优先于此重新开放。1094如果重新开放的文件中包含机密(例如 `http.extraHeader` 令牌),请将其路径添加到 [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread)。覆盖某个文件的 `denyRead` 条目始终优先于此重新开放。

1094 1095 

1096### `permissions.blockWritesOutsideWorkingDirectories`

1097 

1098使 `Write`、`Edit` 和 `NotebookEdit` 工具在所有权限模式下(包括 `bypassPermissions`)拒绝[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外的路径,但 [Claude Code 自身的部分文件](#what-the-write-block-refuses-and-what-stays-writable)除外。此键不限制 shell 命令、MCP 工具或 hook 运行的程序。要限制 shell 命令的写入位置,请启用[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)。需要 Claude Code v2.1.314 或更高版本。

1099 

1100启用此键后,Claude Code 还会移除 `EnterWorktree` 和 `ExitWorktree` 工具,或拒绝对它们的调用。要继续在 worktree 中工作,请按照 [Claude 没有 `EnterWorktree` 工具](https://code.claude.com/docs/zh-CN/worktrees#claude-has-no-enterworktree-tool)中的说明操作。

1101 

1102* **作用域**:[`Any file`](#scopes)。会话加载的任何文件中的 `true` 都会生效,因此仓库可以为自身开启阻止,但无法解除您设置的阻止。在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 可能不会应用此键,因为文件工具运行在容器中,而容器本身就是边界。

1103* **类型**:Boolean

1104 * `true`:开启阻止

1105 * `false`:与未设置相同;如果其他文件设置了 `true`,阻止仍然适用

1106* **默认值**:未设置,因此对工作目录之外的写入遵循您的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)。当 Claude Code 无法读取您[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#keys-that-fail-closed)中的 `permissions` 对象时,该阻止也会开启。

1107 

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

1109{

1110 "permissions": {

1111 "blockWritesOutsideWorkingDirectories": true

1112 }

1113}

1114```

1115 

1116要测试该阻止,请让 Claude 使用 Write 工具在工作目录之外创建一个文件,例如 `~/block-test.txt`(如果您的主目录不属于工作目录)。Claude Code 会拒绝该调用,拒绝信息会说明[设置阻止了工作目录之外的写入](https://code.claude.com/docs/zh-CN/errors.md#setting-blocks-writes-outside-the-working-directories)。

1117 

1118要解除阻止,请从所有设置了此键的设置文件中删除该键,然后重启 Claude Code。

1119 

1120#### 写入阻止会拒绝哪些写入以及哪些内容仍可写入

1121 

1122Claude Code 自身的部分文件仍可写入,例如计划文件、[草稿区](https://code.claude.com/docs/zh-CN/claude-directory.md#session-scratchpad-directory)、[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)的 `tmp` 目录,以及此项目[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#storage-location)中的 `.md` 文件。

1123 

1124除工作目录之外您自己的文件外,该阻止还会拒绝写入:

1125 

1126* **Claude Code 设置文件**:在工作目录内,Claude Code 同样会[拒绝这些写入](https://code.claude.com/docs/zh-CN/errors.md#writes-to-claude-code-settings-files-are-blocked),因为设置文件可以解除该阻止。请自行编辑设置文件。

1127* **仅由仓库设置添加的目录**:[`additionalDirectories`](#permissions-additionaldirectories) 仅在 `.claude/settings.json` 中列出的目录,或仅在 `.claude/settings.local.json` 中列出的目录(除非 git 将该文件报告为未跟踪)

1128* **子代理的 worktree**:当 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/worktrees#isolate-subagents-with-worktrees) 子代理的 worktree 位于工作目录之外时,其文件编辑会被拒绝

1129* **仓库所选目录中的自动记忆**:仓库设置中 [`autoMemoryDirectory`](#automemorydirectory) 指定的目录

1130 

1131无论您添加什么,设置文件始终会被拒绝。要在其他任一情况下放行写入,请[添加工作目录](#let-one-directory-through-the-read-or-write-block)。`/add-dir` 需要一个已存在的目录,因此对于子代理 worktree,请指定仓库根目录下的 `.claude/worktrees` 目录。

1132 

1133#### 让单个目录通过读取或写入阻止

1134 

1135当 `blockReadsOutsideWorkingDirectories` 或 `blockWritesOutsideWorkingDirectories` 为 `true` 时,要让 Claude 访问项目之外的某个目录,请将其添加为工作目录。在会话中运行 `/add-dir <directory>`,在启动 Claude Code 时传入 `--add-dir <directory>`,或在用户设置或托管设置的 `additionalDirectories` 下列出该目录。任何[允许规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)都无法让 Claude 的文件工具通过这两种阻止中的任何一种。

1136 

1095### `permissions.defaultMode`1137### `permissions.defaultMode`

1096 1138 

1097设置新会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)。如果不设置,会话将以您的使用入口的[内置默认值](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in)启动。1139设置新会话启动时的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)。如果不设置,会话将以您的使用入口的[内置默认值](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in)启动。


2427* **会话**:您处于交互式终端会话中、VS Code 扩展的聊天面板中,或者在会话运行于您的计算机上或通过 SSH 运行时处于桌面应用的 Code 标签页中2469* **会话**:您处于交互式终端会话中、VS Code 扩展的聊天面板中,或者在会话运行于您的计算机上或通过 SSH 运行时处于桌面应用的 Code 标签页中

2428* **自动压缩**:[`autoCompactEnabled`](#autocompactenabled) 已开启2470* **自动压缩**:[`autoCompactEnabled`](#autocompactenabled) 已开启

2429* **提示缓存**:该对话使用[一小时提示缓存 TTL](https://code.claude.com/docs/zh-CN/prompt-caching.md#which-ttl-each-request-gets)2471* **提示缓存**:该对话使用[一小时提示缓存 TTL](https://code.claude.com/docs/zh-CN/prompt-caching.md#which-ttl-each-request-gets)

2430* **功能标志**:Claude Code 可以[从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)

2431* **大小**:对话的上下文已达到 token 阈值,您可以将其从默认的 200,000 进行[更改](#change-the-idle-compaction-threshold)2472* **大小**:对话的上下文已达到 token 阈值,您可以将其从默认的 200,000 进行[更改](#change-the-idle-compaction-threshold)

2432* **空闲时间**:自上次请求以来已过去约一小时,且在此期间您的计算机保持唤醒状态2473* **空闲时间**:自上次请求以来已过去约一小时,且在此期间您的计算机保持唤醒状态

2433 2474 


2449要在终端会话中开启或关闭空闲压缩,请运行 `/config` 并更改 **Idle compaction** 行。您的选择会保存到用户设置中并立即生效。该行需要 Claude Code v2.1.302 或更高版本。如果您使用的是这些版本之一,但 `/config` 中未显示该行,请检查以下原因:2490要在终端会话中开启或关闭空闲压缩,请运行 `/config` 并更改 **Idle compaction** 行。您的选择会保存到用户设置中并立即生效。该行需要 Claude Code v2.1.302 或更高版本。如果您使用的是这些版本之一,但 `/config` 中未显示该行,请检查以下原因:

2450 2491 

2451* **其他设置来源设置了此键**:托管设置、`--settings` 标志或项目或本地设置文件中的值覆盖了您的用户设置。请改为在该来源中更改此键2492* **其他设置来源设置了此键**:托管设置、`--settings` 标志或项目或本地设置文件中的值覆盖了您的用户设置。请改为在该来源中更改此键

2452* **功能标志不可用**:当 Claude Code 无法[从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)时,空闲压缩不会运行,因此没有需要关闭的内容2493* **在 v2.1.314 之前的版本中功能标志不可用**:当 Claude Code 无法[从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)时,空闲压缩不会运行,因此没有需要关闭的内容

2453 2494 

2454此键需要 Claude Code v2.1.290 或更高版本。较早版本会忽略此键,要停止空闲压缩,请关闭 [`autoCompactEnabled`](#autocompactenabled)。2495此键需要 Claude Code v2.1.290 或更高版本。较早版本会忽略此键,要停止空闲压缩,请关闭 [`autoCompactEnabled`](#autocompactenabled)。

2455 2496 

slack.md +10 −12

Details

49 49 

501. 通过单击您的应用程序部分中的"Claude"在 Slack 中打开 Claude 应用程序501. 通过单击您的应用程序部分中的"Claude"在 Slack 中打开 Claude 应用程序

512. 打开应用程序主页选项卡512. 打开应用程序主页选项卡

523. 单击"Connect"将您的 Slack 账户与您的 Claude 账户链接523. 单击 **Connect Claude account** 将您的 Slack 账户与您的 Claude 账户链接

534. 在浏览器中完成认证流程534. 在浏览器中完成身份验证流程

54 54 

55**3. 配置云会话**55**3. 配置云会话**

56 56 


71 71 

72> [!NOTE]72> [!NOTE]

73>73>

74> 在代码 + 聊天模式下,如果 Claude 将消息路由到聊天但您想要编码会话,您可以单击"Retry as Code"来创建 Claude Code 会话。类似地,如果它被路由到代码但您想要聊天会话,您可以在该线程中选择该选项。74> 在代码 + 聊天模式下,如果 Claude 在聊天中作答,但您想要的是编码会话,请单击该回复上的 **Switch to code repo...** 并选择一个仓库。随后 Claude 会改为使用您的消息启动 Claude Code 会话。

75 75 

76**5. 将 Claude 添加到频道**76**5. 将 Claude 添加到频道**

77 77 


1072. **检测**:Claude 分析您的消息并检测编码意图1072. **检测**:Claude 分析您的消息并检测编码意图

1083. **会话创建**:在 claude.ai/code 上创建新的 Claude Code 会话1083. **会话创建**:在 claude.ai/code 上创建新的 Claude Code 会话

1094. **进度更新**:Claude 在工作进行时向您的 Slack 线程发布状态更新1094. **进度更新**:Claude 在工作进行时向您的 Slack 线程发布状态更新

1105. **完成**:完成后,Claude @mentions 您并提供摘要和操作按钮1105. **完成**:完成后,Claude 会在线程中更新其消息,附上最终回复和操作按钮,并向您发送一条链接到该消息的直接消息

1116. **审查**:单击"View Session"查看完整记录,或单击"Create PR"打开拉取请求1116. **审查**:单击 **View session** 查看完整会话记录,或单击 **Create PR** 打开 Pull Request

112 112 

113## 用户界面元素113## 用户界面元素

114 114 

115### 消息操作115### 消息操作

116 116 

117* **View Session**:在浏览器中打开完整的 Claude Code 会话,您可以在其中查看所有执行的工作、继续会话或提出其他请求。117* **View session**:在浏览器中打开完整的 Claude Code 会话,您可以在其中查看所有执行的工作、继续会话或提出其他请求。

118* **Create PR**:直接从会话的更改创建拉取请求。118* **Create PR**:打开该会话分支在 GitHub 上的比较页面,您可以在该页面创建 Pull Request。会话完成后,此按钮会出现在 Claude 于会话开始时发布的状态消息上。

119* **Retry as Code**:如果 Claude 最初作为聊天助手响应但您想要编码会话,请单击此按钮将请求重试为 Claude Code 任务。119* **Switch to code repo...**:如果 Claude 在 Chat 中响应,但您想要的是编码会话,请单击此按钮并选择一个仓库,Claude 将使用您的原始请求启动 Claude Code 会话。

120* **Change Repo**:如果 Claude 选择不正确,允许您选择不同的存储库。

121 120 

122### 存储库选择121### 存储库选择

123 122 

124Claude 根据 Slack 对话中的上下文自动选择存储库。如果多个存储库可能适用,Claude 可能会显示一个下拉菜单,允许您选择正确的存储库。123Claude 根据 Slack 对话中的上下文自动选择仓库。如果 Claude 无法判断您指的是哪个仓库,它会请您进行选择:单击 **Select repository** 并从列表中选择一个仓库。

125 124 

126## 访问和权限125## 访问和权限

127 126 


219 218 

220### 选择了错误的仓库219### 选择了错误的仓库

221 220 

2221. 单击"Change Repo"按钮选择不同的仓库221在您的请求中包括仓库名称以获得更准确的选择。

2232. 在您的请求中包括仓库名称以获得更准确的选择

224 222 

225### 身份验证错误223### 身份验证错误

226 224 

sub-agents.md +2 −2

Details

1048 1048 

1049如果您想要可复用的提示词或工作流,并希望它们在主对话上下文中而不是隔离的子代理上下文中运行,请考虑改用 [Skills](https://code.claude.com/docs/zh-CN/skills.md)。1049如果您想要可复用的提示词或工作流,并希望它们在主对话上下文中而不是隔离的子代理上下文中运行,请考虑改用 [Skills](https://code.claude.com/docs/zh-CN/skills.md)。

1050 1050 

1051对于关于对话中已有内容的问题,请使用 [`/btw`](https://code.claude.com/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw) 而不是子代理。它能看到您的完整上下文,但无法使用工具,且答案不会添加到历史记录中。1051对于关于对话中已有内容的问题,请使用 [`/btw`](https://code.claude.com/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw) 而不是子代理。它无法使用工具,且答案不会添加到历史记录中。

1052 1052 

1053### 让子代理生成自己的子代理1053### 让子代理生成自己的子代理

1054 1054 


1242| `x` | 如果分叉正在运行,停止它;如果不再运行,关闭其行。在主会话行或您使用 `Enter` 打开其转录的分叉行上,`x` 会输入到提示中 |1242| `x` | 如果分叉正在运行,停止它;如果不再运行,关闭其行。在主会话行或您使用 `Enter` 打开其转录的分叉行上,`x` 会输入到提示中 |

1243| `Esc` | 将焦点返回到提示输入 |1243| `Esc` | 将焦点返回到提示输入 |

1244 1244 

1245打开分叉或子代理的会话记录后,后续消息和 [skill](https://code.claude.com/docs/zh-CN/skills.md) 会发送到该 Agent,而内置命令会发送到您的主对话,并有以下保护措施:1245打开分叉或子代理的会话记录后,后续消息和 [skill](https://code.claude.com/docs/zh-CN/skills.md) 会发送到该 Agent。在 Claude Code v2.1.314 或更高版本上,[`/btw`](https://code.claude.com/docs/zh-CN/interactive-mode#ask-btw-about-a-subagent) 会根据当前打开的会话记录作答。其他内置命令会发送到您的主对话,并有以下保护措施:

1246 1246 

1247* `/compact`、`/clear` 和 `/rewind` 作用于主对话,因此 Claude Code 在从该视图运行其中任何一个之前会要求您确认。1247* `/compact`、`/clear` 和 `/rewind` 作用于主对话,因此 Claude Code 在从该视图运行其中任何一个之前会要求您确认。

1248* `/model` 和 `/fast` 设置的是主对话的模型和快速模式,而不是所查看 Agent 的,因此它们不会从该视图运行。一条通知会告诉您原因。1248* `/model` 和 `/fast` 设置的是主对话的模型和快速模式,而不是所查看 Agent 的,因此它们不会从该视图运行。一条通知会告诉您原因。

tools-reference.md +19 −10

Details

18 18 

19| 工具 | 描述 | 需要权限 |19| 工具 | 描述 | 需要权限 |

20| :- | :- | :- |20| :- | :- | :- |

21| `Agent` | 生成一个[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md),具有自己的上下文窗口来处理任务。启用[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)后,携带 `name` 的调用可以启动一个[队友](https://code.claude.com/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams)。请参阅 [Agent 工具行为](#agent-tool-behavior) | 否 |21| `Agent` | 生成一个[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md),具有自己的上下文窗口来处理任务。启用 [agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 后,携带 `name` 的调用可以改为启动一个[队友](https://code.claude.com/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams)。请参阅 [Agent 工具行为](#agent-tool-behavior) | 否 |

22| `Artifact` | 将 HTML 或 Markdown 文件作为 [Artifact](https://code.claude.com/docs/zh-CN/artifacts.md) 发布到 claude.ai:一个私有的交互式页面。您可以通过公开链接共享它,或在 Team 和 Enterprise 计划上在您的组织内共享,其中公开共享需要所有者[启用它](https://code.claude.com/docs/zh-CN/artifacts.md#control-public-sharing)。需要 Pro、Max、Ultra、Team 或 Enterprise 计划和 `/login` 身份验证;请参阅[可用性](https://code.claude.com/docs/zh-CN/artifacts.md#availability) | 是 |22| `Artifact` | 将 HTML 或 Markdown 文件作为 [Artifact](https://code.claude.com/docs/zh-CN/artifacts.md) 发布到 claude.ai:一个私有的交互式页面。您可以通过公开链接共享它,或在 Team 和 Enterprise 计划上在您的组织内共享,其中公开共享需要所有者[启用它](https://code.claude.com/docs/zh-CN/artifacts.md#control-public-sharing)。需要 Pro、Max、Ultra、Team 或 Enterprise 计划和 `/login` 身份验证;请参阅[可用性](https://code.claude.com/docs/zh-CN/artifacts.md#availability) | 是 |

23| `AskUserQuestion` | 提出多选问题以收集要求或澄清歧义。问题默认保持打开状态,直到您回答。请参阅 [AskUserQuestion 工具行为](#askuserquestion-tool-behavior) | 否 |23| `AskUserQuestion` | 提出多选问题以收集要求或澄清歧义。问题默认保持打开状态,直到您回答。请参阅 [AskUserQuestion 工具行为](#askuserquestion-tool-behavior) | 否 |

24| `Bash` | 在您的环境中执行 shell 命令。请参阅 [Bash 工具行为](#bash-tool-behavior) | 是 |24| `Bash` | 在您的环境中执行 shell 命令。请参阅 [Bash 工具行为](#bash-tool-behavior) | 是 |


27| `CronList` | 列出所有会话级定时任务 | 否 |27| `CronList` | 列出所有会话级定时任务 | 否 |

28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |

29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |

30| `EnterPlanMode` | 切换到 Plan Mode 以在编码前设计方法 | 否 |30| `EnterPlanMode` | 切换到计划模式以在编码前设计方法 | 否 |

31| `EnterWorktree` | 创建一个隔离的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md) 并切换到它。传递 `path` 以切换到现有 worktree,而不是创建新的。首次进入时,目标可能是当前存储库的 worktree,或在多存储库工作区中,是嵌套在其中的存储库的 worktree。在 v2.1.203 之前,嵌套存储库的 worktree 被拒绝。`.claude/worktrees/` 之外的 `path` 会在进入前提示您的批准,因为它会移动会话的工作目录和对该位置的写入访问权限。新 worktree 创建和 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径而不提示。从 worktree 会话内,或从具有固定工作目录的子代理(例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目标必须在会话存储库的 `.claude/worktrees/` 下 | 是 |31| `EnterWorktree` | 创建一个隔离的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md) 并切换到它,或切换到现有的 worktree。请参阅 [EnterWorktree 工具行为](#enterworktree-tool-behavior) | 是 |

32| `ExitPlanMode` | 呈现计划以供批准并退出 Plan Mode | 是 |32| `ExitPlanMode` | 呈现计划以供批准并退出计划模式 | 是 |

33| `ExitWorktree` | 退出 worktree 会话并返回到原始目录。不适用于已在自己的工作目录中运行的子代理,例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields) | 否 |33| `ExitWorktree` | 退出 worktree 会话并返回到原始目录。不适用于已在自己的工作目录中运行的子代理,例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields)。一旦启用 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories),该工具将被移除或拒绝 | 否 |

34| `Glob` | 基于模式匹配查找文件。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Glob 工具行为](#glob-tool-behavior) | 否 |34| `Glob` | 基于模式匹配查找文件。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Glob 工具行为](#glob-tool-behavior) | 否 |

35| `Grep` | 在文件内容中搜索模式。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Grep 工具行为](#grep-tool-behavior) | 否 |35| `Grep` | 在文件内容中搜索模式。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Grep 工具行为](#grep-tool-behavior) | 否 |

36| `ListAgents` | 列出 Claude 可以使用 `SendMessage` 消息的代理:会话中的子代理、[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)队友、您的其他本地 Claude Code 会话,以及当此会话连接到[远程控制](https://code.claude.com/docs/zh-CN/remote-control.md)时,您的[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)和您在其他机器上的远程控制会话。支持 `/list-agents` 命令。请参阅[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)。需要 Claude Code v2.1.224 或更高版本,仅在[启用跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#availability)的会话中出现。队友行和显示此会话自己名称的第一行需要 v2.1.239 或更高版本 | 否 |36| `ListAgents` | 列出 Claude 可以使用 `SendMessage` 向其发送消息的 Agent:会话中的子代理、[agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友、您的其他本地 Claude Code 会话,以及当此会话连接到 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 时,您的[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)和您在其他机器上的 Remote Control 会话。支持 `/list-agents` 命令。请参阅[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)。需要 Claude Code v2.1.224 或更高版本,仅在[启用跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#availability)的会话中出现。队友行和显示此会话自己名称的第一行需要 v2.1.239 或更高版本 | 否 |

37| `ListMcpResourcesTool` | 列出连接的 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)公开的资源,不包括 [MCP Apps UI 资源](https://code.claude.com/docs/zh-CN/mcp.md#reference-mcp-resources),这些是主机应用程序要呈现的页面 | 否 |37| `ListMcpResourcesTool` | 列出连接的 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)公开的资源,不包括 [MCP Apps UI 资源](https://code.claude.com/docs/zh-CN/mcp.md#reference-mcp-resources),这些是主机应用程序要呈现的页面 | 否 |

38| `LSP` | 通过语言服务器的代码智能:跳转到定义、查找引用、报告类型错误和警告。请参阅 [LSP 工具行为](#lsp-tool-behavior) | 否 |38| `LSP` | 通过语言服务器的代码智能:跳转到定义、查找引用、报告类型错误和警告。请参阅 [LSP 工具行为](#lsp-tool-behavior) | 否 |

39| `Monitor` | 在后台运行命令并将每个输出行反馈给 Claude,以便它可以对日志条目、文件更改或轮询状态做出反应。还可以打开 WebSocket 并将每条传入消息视为事件。请参阅 [Monitor 工具](#monitor-tool) | 是 |39| `Monitor` | 在后台运行命令并将每个输出行反馈给 Claude,以便它可以在对话过程中对日志条目、文件更改或轮询状态做出反应。还可以打开 WebSocket 并将每条传入消息视为事件。请参阅 [Monitor 工具](#monitor-tool) | 是 |

40| `NotebookEdit` | 修改 Jupyter notebook 单元格。请参阅 [NotebookEdit 工具行为](#notebookedit-tool-behavior) | 是 |40| `NotebookEdit` | 修改 Jupyter notebook 单元格。请参阅 [NotebookEdit 工具行为](#notebookedit-tool-behavior) | 是 |

41| `PowerShell` | 本地执行 PowerShell 命令。请参阅 [PowerShell 工具](#powershell-tool)了解可用性 | 是 |41| `PowerShell` | 本地执行 PowerShell 命令。请参阅 [PowerShell 工具](#powershell-tool)了解可用性 | 是 |

42| `PushNotification` | 发送桌面通知,以及当 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 连接时的手机推送,以便长时间运行的任务或[会话级定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md)可以在您离开时联系您。推送传递通过 Anthropic 托管的基础设施运行,无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |42| `PushNotification` | 发送桌面通知,以及当 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 连接时的手机推送,以便长时间运行的任务或[会话级定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md)可以在您离开时联系您。推送传递通过 Anthropic 托管的基础设施运行,无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |


46| `ReportFindings` | 将代码审查发现报告为结构化列表,每个发现都有文件、摘要和失败场景,以便 Claude Code 可以呈现它们而不是将其打印为文本。当活跃的代码审查指令要求它这样做时,Claude 会调用它。发现还可以携带可选的 `category` 段,例如 `correctness` 或 `test-coverage`,显示在呈现列表中的文件位置旁边 | 否 |46| `ReportFindings` | 将代码审查发现报告为结构化列表,每个发现都有文件、摘要和失败场景,以便 Claude Code 可以呈现它们而不是将其打印为文本。当活跃的代码审查指令要求它这样做时,Claude 会调用它。发现还可以携带可选的 `category` 段,例如 `correctness` 或 `test-coverage`,显示在呈现列表中的文件位置旁边 | 否 |

47| `ScheduleWakeup` | 重新安排[自定步调 `/loop`](https://code.claude.com/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代结束时调用此工具以选择下一次运行的时间,在一分钟到一小时之间;您不直接调用它。要改为结束循环,Claude 使用 `stop: true` 调用它,这会取消待处理的唤醒。待处理的唤醒出现在 [Stop hook 输入](https://code.claude.com/docs/zh-CN/hooks.md#stop-input)中的 `session_crons` 中 | 否 |47| `ScheduleWakeup` | 重新安排[自定步调 `/loop`](https://code.claude.com/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代结束时调用此工具以选择下一次运行的时间,在一分钟到一小时之间;您不直接调用它。要改为结束循环,Claude 使用 `stop: true` 调用它,这会取消待处理的唤醒。待处理的唤醒出现在 [Stop hook 输入](https://code.claude.com/docs/zh-CN/hooks.md#stop-input)中的 `session_crons` 中 | 否 |

48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |

49| `SendMessage` | 向另一个代理发送消息:[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)队友、[通过代理 ID 或名称恢复的子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#resume-subagents),或您的其他 Claude Code 会话之一,在此机器上或超越它。消息传递其他会话需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)涵盖 Claude 可以到达的会话、[消息到达时的样子](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |49| `SendMessage` | 向另一个 Agent 发送消息:[agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友、[通过 Agent ID 或名称恢复的子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#resume-subagents),或您的其他 Claude Code 会话之一,无论在此机器上还是其他机器上。向其他会话发送消息需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)涵盖 Claude 可以到达的会话、[消息到达时的样子](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |

50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 客户端或在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 客户端或在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |

51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |

52| `Skill` | 在主对话中执行[skill](https://code.claude.com/docs/zh-CN/skills.md#control-who-invokes-a-skill) | 是 |52| `Skill` | 在主对话中执行[skill](https://code.claude.com/docs/zh-CN/skills.md#control-who-invokes-a-skill) | 是 |

53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation),并在终端 CLI、IDE 扩展、网络版会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation),并在终端 CLI、IDE 扩展、云端会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |

54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |

55| `TaskGet` | 检索特定任务的完整详细信息。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |55| `TaskGet` | 检索特定任务的完整详细信息。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |

56| `TaskList` | 列出所有任务及其当前状态。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |56| `TaskList` | 列出所有任务及其当前状态。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |


299* **启动模式**:不是 [`--bare`](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode) 会话。裸模式仅加载 shell 和文件工具,因此该工具从不在那里注册。299* **启动模式**:不是 [`--bare`](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode) 会话。裸模式仅加载 shell 和文件工具,因此该工具从不在那里注册。

300* **提供商**:在 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 上不可用,或在通过[云网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway)登录的会话上不可用。300* **提供商**:在 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 上不可用,或在通过[云网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway)登录的会话上不可用。

301 301 

302## EnterWorktree 工具行为

303 

304EnterWorktree 工具会创建一个隔离的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md) 并切换到其中。如果提供了 `path`,它会切换到一个现有的 worktree,而不是创建新的 worktree。

305 

306* **`path` 可以指定哪些 worktree**:首次进入时,目标可以是当前仓库的 worktree。在包含其他仓库的仓库中,目标也可以是嵌套在其中的仓库的 worktree。

307* **何时会提示您**:位于 `.claude/worktrees/` 之外的 `path` 会在进入前请求您的批准,因为这会将会话的工作目录和写入权限移至该位置。创建新 worktree 以及 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径时不会提示。

308* **在 worktree 内部时**:在 worktree 会话中,只能使用 `path` 形式,且目标必须位于该会话所属仓库的 `.claude/worktrees/` 下。对于固定了工作目录的子代理(例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields)),同样如此。

309* **工具缺失时**:一旦启用 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories),Claude Code 会移除 `EnterWorktree` 和 `ExitWorktree`,或拒绝对它们的调用。如需继续在 worktree 中工作,请参阅 [Claude 没有 `EnterWorktree` 工具](https://code.claude.com/docs/zh-CN/worktrees#claude-has-no-enterworktree-tool)。

310 

302## Glob 工具行为311## Glob 工具行为

303 312 

304Glob 工具通过名称模式查找文件。在 Windows 上,它是默认工具集的一部分。在 macOS、Linux 和 WSL 上,Claude Code 将 Glob 和 [Grep](#grep-tool-behavior) 排除在默认工具集之外,Claude 改为通过 Bash 工具使用 `find` 和 `grep` 进行搜索。在 Claude 的 shell 中,这两个命令运行 `bfs` 和 `ugrep` 的嵌入式版本,搜索以 `Bash` 调用的形式到达您的 hook 和权限规则。313Glob 工具通过名称模式查找文件。在 Windows 上,它是默认工具集的一部分。在 macOS、Linux 和 WSL 上,Claude Code 将 Glob 和 [Grep](#grep-tool-behavior) 排除在默认工具集之外,Claude 改为通过 Bash 工具使用 `find` 和 `grep` 进行搜索。在 Claude 的 shell 中,这两个命令运行 `bfs` 和 `ugrep` 的嵌入式版本,搜索以 `Bash` 调用的形式到达您的 hook 和权限规则。


632* 当 URL 重定向到不同的主机时,WebFetch 不会跟随重定向,而是返回一个文本结果,其中列出原始 URL 和重定向目标。Claude 随后会通过第二次 WebFetch 调用获取新的 URL。641* 当 URL 重定向到不同的主机时,WebFetch 不会跟随重定向,而是返回一个文本结果,其中列出原始 URL 和重定向目标。Claude 随后会通过第二次 WebFetch 调用获取新的 URL。

633* 当提取步骤遇到 API 过载时,Claude Code 会以退避方式重试;如果获取仍然失败,则返回错误结果。642* 当提取步骤遇到 API 过载时,Claude Code 会以退避方式重试;如果获取仍然失败,则返回错误结果。

634 643 

635在 Manual 和 `acceptEdits` [权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)下,WebFetch 会在获取之前进行提示,但您的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions)已允许或拒绝的域名,以及一组内置的预先批准的文档域名除外,这些域名无需提示即可获取。无论您的规则允许什么,获取操作都会先通过 [WebFetch 域名安全检查](https://code.claude.com/docs/zh-CN/data-usage.md#webfetch-domain-safety-check);该部分介绍了检查会发送的内容以及跳过检查的设置。提示提供三个选项:644在 Manual 和 `acceptEdits` [权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)下,WebFetch 会在获取之前进行提示,但您的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions)已允许或拒绝的域名,以及一组内置的、无需提示即可获取的预先批准文档域名除外。无论您的规则允许什么,获取操作都会先通过 [WebFetch 域名安全检查](https://code.claude.com/docs/zh-CN/data-usage.md#webfetch-domain-safety-check);该部分介绍了检查会发送的内容以及跳过检查的设置。提示提供三个选项:

636 645 

637* **Yes**:仅批准本次获取。下一次 WebFetch 调用会再次提示,即使是同一域名。646* **Yes**:仅批准本次获取。下一次 WebFetch 调用会再次提示,即使是同一域名。

638* **Yes, and don't ask again for `<domain>`**:批准本次获取,并将该域名的 `WebFetch(domain:...)` 允许规则保存到该仓库的 `.claude/settings.local.json` 中。请参阅[已保存的批准如何持久保留](https://code.claude.com/docs/zh-CN/permissions.md#permission-system)。当您的组织设置了 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/permissions#managed-only-settings) 时,Claude Code 会隐藏此选项。647* **Yes, and don't ask again for `<domain>`**:批准本次获取,并将该域名的 `WebFetch(domain:...)` 允许规则保存到该仓库的 `.claude/settings.local.json` 中。请参阅[已保存的批准如何持久保留](https://code.claude.com/docs/zh-CN/permissions.md#permission-system)。当您的组织设置了 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/permissions#managed-only-settings) 时,Claude Code 会隐藏此选项。

worktrees.md +20 −6

Details

41 41 

42### 要求 Claude 创建 worktree42### 要求 Claude 创建 worktree

43 43 

44您也可以在会话期间要求 Claude "在 worktree 中工作",它会使用 [`EnterWorktree`](https://code.claude.com/docs/zh-CN/tools-reference) 工具创建一个。一旦进入 worktree,Claude 可以通过调用 `EnterWorktree` 并指定目标路径,直接切换到 `.claude/worktrees/` 下的另一个 worktree;之前的 worktree 保留在磁盘上不变。44您也可以在会话期间要求 Claude "在 worktree 中工作",它会使用 [`EnterWorktree`](https://code.claude.com/docs/zh-CN/tools-reference#enterworktree-tool-behavior) 工具创建一个。一旦进入 worktree,Claude 可以通过调用 `EnterWorktree` 并指定目标路径,直接切换到 `.claude/worktrees/` 下的另一个 worktree;之前的 worktree 保留在磁盘上不变。

45 45 

46当 Claude 进入仓库的 `.claude/worktrees/` 目录之外的路径时,Claude Code 会首先请求您的批准。该移动会将会话的工作目录、写入访问权限和项目配置(如 `CLAUDE.md` 和设置)转移到该位置。`EnterWorktree` [权限规则](https://code.claude.com/docs/zh-CN/permissions.md)或选择"不再询问"不会抑制此提示;只有 `bypassPermissions` 模式会跳过它。46当 Claude 进入仓库的 `.claude/worktrees/` 目录之外的路径时,Claude Code 会首先请求您的批准。该移动会将会话的工作目录、写入访问权限和项目配置(如 `CLAUDE.md` 和设置)转移到该位置。`EnterWorktree` [权限规则](https://code.claude.com/docs/zh-CN/permissions.md)或选择"不再询问"不会抑制此提示;只有 `bypassPermissions` 模式会跳过它。

47 47 


52> * **`${CLAUDE_PROJECT_DIR}` 保持不变**:它仍然指向会话启动的项目根目录,因此 hook 命令(如 `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh`)仍然在主检出中运行脚本。52> * **`${CLAUDE_PROJECT_DIR}` 保持不变**:它仍然指向会话启动的项目根目录,因此 hook 命令(如 `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh`)仍然在主检出中运行脚本。

53> * **`cwd` 跟随 Claude**:hook 的[输入 JSON](https://code.claude.com/docs/zh-CN/hooks.md#common-input-fields) 中的 `cwd` 字段是 worktree 根目录,当 Claude 运行 `cd` 时它会再次移动。当 hook 需要 worktree 路径时读取它。53> * **`cwd` 跟随 Claude**:hook 的[输入 JSON](https://code.claude.com/docs/zh-CN/hooks.md#common-input-fields) 中的 `cwd` 字段是 worktree 根目录,当 Claude 运行 `cd` 时它会再次移动。当 hook 需要 worktree 路径时读取它。

54 54 

55#### Claude 没有 `EnterWorktree` 工具

56 

57如果您要求 Claude 在 worktree 中工作,而它没有 `EnterWorktree` 或 `ExitWorktree` 工具,请检查 [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockwritesoutsideworkingdirectories) 是否已开启。开启该设置项后,Claude Code 会移除这两个 worktree 工具,或拒绝对它们的调用。

58 

59在该设置项开启时,您仍可以继续在 worktree 中工作:

60 

61* **交互式会话**:使用 `claude --worktree` 在 worktree 中启动会话。

62* **[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md#how-file-edits-are-isolated)**:在后台会话调用 `EnterWorktree` 之前,Claude Code 会拒绝该会话在您主检出中的编辑,而该会话并没有这个工具。以下任一方式都可以让会话进行编辑:

63 * 使用 `claude --bg --worktree` 启动会话

64 * 将 [`worktree.bgIsolation`](https://code.claude.com/docs/zh-CN/settings-reference#worktree-bgisolation) 设置为 `"none"`

65 * 让 Claude 在会话启动目录下使用 `git worktree add` 创建的 worktree 中进行编辑

66 

67要恢复这些工具,请在会话中运行 `/status` 以列出其[已加载的设置来源](https://code.claude.com/docs/zh-CN/settings.md#check-what-loaded),并从每个设置了该设置项的文件中将其移除。然后重启 Claude Code。如果托管设置设置了该设置项,请询问您的管理员是否应更改该策略。

68 

55## 清理 worktrees69## 清理 worktrees

56 70 

57当你退出交互式 worktree 会话时,Claude 会检查 worktree 中是否有删除会丢失的工作:已更改或未跟踪的文件、已检出子模块内的未提交工作,以及新提交。这些规则适用于 Claude 使用 git 创建的 worktrees。对于你的 [WorktreeCreate hook](https://code.claude.com/docs/zh-CN/hooks.md#worktreecreate) 创建的 worktree,请改为参阅 [WorktreeRemove](https://code.claude.com/docs/zh-CN/hooks.md#worktreeremove)。71当你退出交互式 worktree 会话时,Claude 会检查 worktree 中是否有删除会丢失的工作:已更改或未跟踪的文件、已检出子模块内的未提交工作,以及新提交。这些规则适用于 Claude 使用 git 创建的 worktrees。对于你的 [WorktreeCreate hook](https://code.claude.com/docs/zh-CN/hooks.md#worktreecreate) 创建的 worktree,请改为参阅 [WorktreeRemove](https://code.claude.com/docs/zh-CN/hooks.md#worktreeremove)。


67 81 

68## 恢复 worktree 会话82## 恢复 worktree 会话

69 83 

70当您恢复在 worktree 内结束的会话而未[退出它](#clean-up-worktrees)时,Claude Code 会将会话返回到该 worktree。这适用于交互式恢复、[非交互式模式](https://code.claude.com/docs/zh-CN/headless.md)中带有 `-p` 的 `--continue` 和 `--resume`,以及 Agent SDK。`--continue` 会选择从您启动的目录下记录的最近会话。回到 worktree 内,Claude 仍然可以使用 [`ExitWorktree`](https://code.claude.com/docs/zh-CN/tools-reference) 工具退出它。84当您恢复在 worktree 内结束的会话而未[退出它](#clean-up-worktrees)时,Claude Code 会将会话返回到该 worktree。这适用于交互式恢复、[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中带有 `-p` 的 `--continue` 和 `--resume`,以及 Agent SDK。`--continue` 会选择从您启动的目录下记录的最近会话。回到 worktree 内后,[当会话拥有 `ExitWorktree` 工具时](#claude-has-no-enterworktree-tool),Claude 可以使用 [`ExitWorktree`](https://code.claude.com/docs/zh-CN/tools-reference) 工具退出它。

71 85 

72在将会话返回到其 worktree 之前,Claude Code 会验证 worktree 仍然是与主检出分开的检出,并拒绝重新进入未通过检查的 worktree。对于 git worktree,检查会读取其 git 元数据。没有 git 元数据的 worktree(例如 [`WorktreeCreate` hook](#non-git-version-control) 创建的)可以通过检查;Claude Code 仍然拒绝的情况列在[Claude Code 拒绝使用 worktree](#claude-code-refuses-to-use-a-worktree) 下及其恢复。有关消息和如何从每个消息恢复,请参阅[会话在其 worktree 外恢复](#the-session-resumes-outside-its-worktree)。86在将会话返回到其 worktree 之前,Claude Code 会验证 worktree 仍然是与主检出分开的检出,并拒绝重新进入未通过检查的 worktree。对于 git worktree,检查会读取其 git 元数据。没有 git 元数据的 worktree(例如 [`WorktreeCreate` hook](#non-git-version-control) 创建的)可以通过检查;Claude Code 仍然拒绝的情况列在[Claude Code 拒绝使用 worktree](#claude-code-refuses-to-use-a-worktree) 下及其恢复。有关消息和如何从每个消息恢复,请参阅[会话在其 worktree 外恢复](#the-session-resumes-outside-its-worktree)。

73 87 


91 105 

92Claude Code 应用四个检查:106Claude Code 应用四个检查:

93 107 

94* **文件编辑**:Claude Code 阻止针对主检出中的路径的 `Edit`、`Write` 或 `NotebookEdit`。108* **文件编辑**:Claude Code 阻止针对主检出中的路径的 `Edit`、`Write` 或 `NotebookEdit`。要更改主检出中的文件,请自行编辑,或在那里启动交互式会话。

95* **命令工作目录**:Claude Code 阻止其工作目录解析为主检出的 Bash、PowerShell 或 Monitor 命令,或其工作目录它无法验证保持在其外的命令。109* **命令工作目录**:Claude Code 阻止其工作目录解析为主检出的 Bash、PowerShell 或 Monitor 命令,或其工作目录它无法验证保持在其外的命令。

96* **Git 重定向**:Claude Code 阻止将 git 重定向到主检出的 Bash 或 Monitor 命令。重定向可以通过 `git -C`、`--git-dir`、`GIT_DIR` 或 `GIT_WORK_TREE` 变量,或在运行 git 之前 `cd` 到主检出来进行。110* **Git 重定向**:Claude Code 阻止将 git 重定向到主检出的 Bash 或 Monitor 命令。重定向可以通过 `git -C`、`--git-dir`、`GIT_DIR` 或 `GIT_WORK_TREE` 变量,或在运行 git 之前 `cd` 到主检出来进行。

97* **命令形状**:当 Claude Code 无法从命令文本验证命令运行的任何 git 保持在 worktree 内时,它会阻止 Bash 或 Monitor 命令。例如,当命令名称在运行时计算、语法无法解析,或当诸如 `${!name}` 或 `${ command; }` 之类的扩展可能运行文本中未明确说明的命令时,就会发生这种情况。Claude Code 告诉 Claude 如何重写被拒绝的命令,例如将其分割成普通的单独命令。您无法关闭此检查。111* **命令形状**:当 Claude Code 无法从命令文本验证命令运行的任何 git 保持在 worktree 内时,它会阻止 Bash 或 Monitor 命令。例如,当命令名称在运行时计算、语法无法解析,或当诸如 `${!name}` 或 `${ command; }` 之类的扩展可能运行文本中未明确说明的命令时,就会发生这种情况。Claude Code 告诉 Claude 如何重写被拒绝的命令,例如将其分割成普通的单独命令。您无法关闭此检查。


216 230 

217如果与您传递给 `--worktree` 的名称相同的 worktree 已存在,Claude Code 会打开它而不是创建一个新的。如果 Claude Code 因包含 `belongs to a different repository` 或 `is a leftover worktree` 的错误而停止,请参阅[worktree 目录 `belongs to a different repository`](#belongs-to-a-different-repository)。231如果与您传递给 `--worktree` 的名称相同的 worktree 已存在,Claude Code 会打开它而不是创建一个新的。如果 Claude Code 因包含 `belongs to a different repository` 或 `is a leftover worktree` 的错误而停止,请参阅[worktree 目录 `belongs to a different repository`](#belongs-to-a-different-repository)。

218 232 

219使用默认的 `"fresh"` [基础](#choose-the-base-branch),当以下所有条件都成立时,重新打开的 worktree 会重置为仓库的默认分支而不是在其旧提示处继续:233使用默认的 `"fresh"` [基础](#choose-the-base-branch),当以下所有条件都成立时,重新打开的 worktree 会重置为仓库的默认分支而不是在其原来的顶端继续:

220 234 

221* 它没有未提交的更改或未跟踪的文件。235* 它没有未提交的更改或未跟踪的文件。

222* 它仍然在 Claude Code 为其创建的分支上。236* 它仍然在 Claude Code 为其创建的分支上。


224 238 

225Claude Code 仅从 git 状态检测合并的情况:worktree 推送到的远程分支不再存在,worktree 中的每个提交都已在默认分支上。239Claude Code 仅从 git 状态检测合并的情况:worktree 推送到的远程分支不再存在,worktree 中的每个提交都已在默认分支上。

226 240 

227在所有其他情况下,Claude Code 在其旧提示处重新打开 worktree:241在所有其他情况下,Claude Code 在其原来的顶端重新打开 worktree:

228 242 

229* worktree 未通过任何条件。243* worktree 有任一条件不成立。

230* Claude Code 无法验证 worktree 的状态。244* Claude Code 无法验证 worktree 的状态。

231* `worktree.baseRef` 是 `"head"`。245* `worktree.baseRef` 是 `"head"`。

232* 名称是拉取请求或合并请求引用。246* 名称是拉取请求或合并请求引用。