SpyBara
Go Premium

Documentation 2026-11-03 23:58 UTC to 2026-11-04 23:59 UTC

33 files changed +511 −153. 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

231| 模式 | 行为 | 用例 |231| 模式 | 行为 | 用例 |

232| :- | :- | :- |232| :- | :- | :- |

233| `"default"` | 需要批准且不被允许规则覆盖的工具调用触发你的 `canUseTool` 回调;没有回调意味着拒绝 | 具有自定义批准回调的交互式应用程序 |233| `"default"` | 需要批准且不被允许规则覆盖的工具调用触发你的 `canUseTool` 回调;没有回调意味着拒绝 | 具有自定义批准回调的交互式应用程序 |

234| `"acceptEdits"` | 自动批准文件编辑和常见文件系统命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循默认规则 | 你信任 Claude 的编辑并想要更快的迭代,例如在原型设计期间或在隔离目录中工作时 |234| `"acceptEdits"` | 自动批准您的[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)内的文件编辑和常见文件系统命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循默认规则 | 您信任 Claude 的编辑并想要更快的迭代,例如在原型设计期间或在隔离目录中工作时 |

235| `"plan"` | Claude 探索并规划而不编辑你的源文件;文件编辑永远不会自动批准,并通过你的 `canUseTool` 回调提示 | 你想要 Claude 提议更改而不执行它们,例如在代码审查期间或当你需要在进行更改前批准它们时 |235| `"plan"` | Claude 进行探索和规划。使用 Claude 的文件工具进行的编辑会进入您的 `canUseTool` 回调,即使有允许规则与之匹配 | 您希望 Claude 先生成计划,例如在代码审查期间或进行大型更改之前 |

236| `"dontAsk"` | 从不提示。由 [权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings) 预批准的工具会运行,在 `default` 模式中不需要批准的调用(如您的工作目录内的文件读取)也会运行。所有其他会提示的调用都被拒绝,不过您安装的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) 仍可以批准[其中的部分调用](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。少数调用(如 [从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths))即使您已允许也会被拒绝。有关完整列表,请参阅 [Don't ask 模式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#don’t-ask-mode-dontask) | 无人批准调用的无头 Agent |236| `"dontAsk"` | 从不提示。由 [权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings) 预批准的工具会运行,在 `default` 模式中不需要批准的调用(如您的工作目录内的文件读取)也会运行。所有其他会提示的调用都被拒绝,不过您安装的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) 仍可以批准[其中的部分调用](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。少数调用(如 [从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths))即使您已允许也会被拒绝。有关完整列表,请参阅 [Don't ask 模式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#don’t-ask-mode-dontask) | 无人批准调用的无头 Agent |

237| `"auto"` | 使用模型分类器来审查诸如 shell 命令和网络请求之类的操作,允许或阻止它审查的每一个。有关可用性和决策顺序,请参阅 [自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) | 仍然想要工具使用安全防护的自主代理 |237| `"auto"` | 使用模型分类器来审查诸如 shell 命令和网络请求之类的操作,允许或阻止它审查的每一个。有关可用性和决策顺序,请参阅 [自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) | 仍然想要工具使用安全防护的自主代理 |

238| `"bypassPermissions"` | 运行工具调用而不请求批准,包括对您未在 `allowedTools` 中列出的工具的调用。少数调用仍会进入您的 `canUseTool` 回调,这些调用列在 [Bypass permissions 模式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions) 下。在 TypeScript SDK 中,还需要在 `options` 中设置 `allowDangerouslySkipPermissions: true`。无法在 Unix 上以 root 身份运行。仅在隔离环境中使用,其中 Agent 的操作无法影响您关心的系统 | CI、容器或其他隔离环境 |238| `"bypassPermissions"` | 运行工具调用而不请求批准,包括对您未在 `allowedTools` 中列出的工具的调用。少数调用仍会进入您的 `canUseTool` 回调,这些调用列在 [Bypass permissions 模式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions) 下。在 TypeScript SDK 中,还需要在 `options` 中设置 `allowDangerouslySkipPermissions: true`。无法在 Unix 上以 root 身份运行。仅在隔离环境中使用,其中 Agent 的操作无法影响您关心的系统 | CI、容器或其他隔离环境 |

239 239 

240对于交互式应用程序,使用 `"default"` 和工具批准回调来显示批准提示。对于开发机器上的自主代理,`"acceptEdits"` 自动批准文件编辑和常见文件系统命令(`mkdir`、`touch`、`mv`、`cp` 等),同时仍然在允许规则后面限制其他 `Bash` 命令。为 CI、容器或其他隔离环境保留 `"bypassPermissions"`。有关完整详情,请参阅 [权限](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md)。240对于交互式应用程序,使用 `"default"` 和工具批准回调来显示批准提示。对于在开发机器上编辑文件的 Agent,使用 `"acceptEdits"`。将 `"bypassPermissions"` 保留给 CI、容器或其他隔离环境。有关完整详情,请参阅 [权限](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md)。

241 241 

242### 模型242### 模型

243 243 

Details

14>14>

15> 如果您加载的插件包含 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md),请参阅 [mod 的决定在规则和 hook 之间的位置](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。15> 如果您加载的插件包含 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md),请参阅 [mod 的决定在规则和 hook 之间的位置](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。

16 16 

17当 Claude 请求一个工具时,SDK 按以下顺序检查权限:17当 Claude 请求一个工具时,Claude Code 会在以下步骤中检查该调用。每个步骤都可以对调用作出决定、将其发送到您的 `canUseTool` 回调,或将其传递下去:

18 18 

19**1. Hooks**19**1. Hooks**

20 20 

21首先运行 [hooks](https://code.claude.com/docs/zh-CN/agent-sdk/hooks.md)。Hook 可以直接拒绝调用或将其传递下去。返回 `allow` 的 hook 不会跳过下面的拒绝和询问规则;无论 hook 结果如何,这些规则都会被评估。21运行 [hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks.md)。hook 可以直接拒绝该调用,也可以将其放行。返回 `allow` 的 hook 不会跳过下方的拒绝和询问规则,无论 hook 结果如何,这些规则都会被评估。

22 22 

23返回 `allow` 的 `PreToolUse` hook 也不能批准目标被 Claude Code 识别为 [关键路径](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths) 的 `rm` 或 `rmdir` 命令,例如 `rm -rf ~`。关于该 `allow` 在计划模式下的作用,请参阅 [计划模式下的 hook 批准](https://code.claude.com/docs/zh-CN/permissions.md#hook-approvals-in-plan-mode)。23返回 `allow` 的 `PreToolUse` hook 也不能批准目标被 Claude Code 识别为 [关键路径](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths) 的 `rm` 或 `rmdir` 命令,例如 `rm -rf ~`。关于该 `allow` 在计划模式下的作用,请参阅 [计划模式下的 hook 批准](https://code.claude.com/docs/zh-CN/permissions.md#hook-approvals-in-plan-mode)。

24 24 

25**2. 拒绝规则**25**2. 拒绝规则**

26 26 

27如果来自 `disallowed_tools` 或 [settings.json](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings) 的拒绝规则匹配,调用将被拒绝,且不会调用 [`canUseTool`](https://code.claude.com/docs/zh-CN/agent-sdk/user-input),即使在 [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) 模式下、即使 hook 返回了 `allow` 也是如此。27如果来自 `disallowed_tools` 或 [SDK 加载的设置文件](#rules-in-settings-files) 的拒绝规则匹配,调用将被拒绝,且不会调用 [`canUseTool`](https://code.claude.com/docs/zh-CN/agent-sdk/user-input)。即使在 [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) 模式下、即使 hook 返回了 `allow`,调用也会以这种方式被拒绝。

28 28 

29在 TypeScript SDK 中,如果您将某个 [自定义工具](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools.md#require-approval-for-specific-tools) 的 `permission_policy` 设置为 [`always_deny`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#mcpservertoolpolicy),对该工具的调用会在此步骤被拒绝。29在 TypeScript SDK 中,如果您将某个 [自定义工具](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools.md#require-approval-for-specific-tools) 的 `permission_policy` 设置为 [`always_deny`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#mcpservertoolpolicy),对该工具的调用会在此步骤被拒绝。

30 30 


32 32 

33检查来自 [settings.json](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings) 的 `ask` 规则。如果询问规则匹配,调用会传递到您的 [`canUseTool` 回调](https://code.claude.com/docs/zh-CN/agent-sdk/user-input) 以获得确认,即使在 `bypassPermissions` 模式下也是如此。33检查来自 [settings.json](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings) 的 `ask` 规则。如果询问规则匹配,调用会传递到您的 [`canUseTool` 回调](https://code.claude.com/docs/zh-CN/agent-sdk/user-input) 以获得确认,即使在 `bypassPermissions` 模式下也是如此。

34 34 

35需要用户交互的工具行为相同:`AskUserQuestion` 和 MCP 工具,其服务器设置了 [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/zh-CN/mcp#require-approval-for-a-specific-tool),总是传递到回调,即使当允许规则匹配时也是如此。在 `dontAsk` 模式下,两种情况都被拒绝,因为该模式从不提示。MCP 注解需要 Claude Code v2.1.199 或更高版本。35需要用户交互的工具行为相同。`AskUserQuestion` 以及其服务器设置了 [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具会传递到回调,即使允许规则匹配也是如此。在 `dontAsk` 模式下,这两种情况都会被拒绝,因为该模式会将每个权限提示转为拒绝。MCP 注解需要 Claude Code v2.1.199 或更高版本。

36 36 

37您的组织设置为 `ask` 的 [claude.ai connector](https://code.claude.com/docs/zh-CN/mcp.md#organization-controls-on-connector-tools) 工具也在此步骤离开流程。每个调用都传递到回调,即使在 `bypassPermissions` 模式下,即使当允许规则匹配时也是如此。回调接收原因 `Your organization requires approval for this tool`。在 `dontAsk` 模式下,调用被拒绝,因为该模式从不提示。37您的组织设置为 `ask` 的 [claude.ai connector](https://code.claude.com/docs/zh-CN/mcp.md#organization-controls-on-connector-tools) 工具也在此步骤离开流程。每个调用都传递到回调,即使在 `bypassPermissions` 模式下,即使当允许规则匹配时也是如此。回调接收原因 `Your organization requires approval for this tool`。在 `dontAsk` 模式下,调用被拒绝,因为该模式从不提示。

38 38 


42 42 

43应用活跃的 [权限模式](#permission-modes):43应用活跃的 [权限模式](#permission-modes):

44 44 

45* 在 `bypassPermissions` 模式下,Claude Code 批准到达此步骤的所有内容,除了被识别出的 [关键路径删除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths) 以及被标记为 [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/zh-CN/permission-modes#dangerous-rm-operation-not-ruled-out) 的 Bash 命令,这些会传递下去。45* 在 `bypassPermissions` 模式下,Claude Code 批准到达此步骤的每个调用,除非它属于 [任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves)。关于其中哪些操作会发送到您的 `canUseTool` 回调,请参阅 [绕过权限模式](#bypass-permissions-mode-bypasspermissions)。

46 * 若要在没有提示的情况下运行这些删除操作,请参阅 [关闭关键路径删除提示](https://code.claude.com/docs/zh-CN/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode)。

47* 在 `acceptEdits` 模式下,Claude Code 批准 [接受编辑模式](#accept-edits-mode-acceptedits) 下列出的文件操作。46* 在 `acceptEdits` 模式下,Claude Code 批准 [接受编辑模式](#accept-edits-mode-acceptedits) 下列出的文件操作。

48* 在 `plan` 模式下,无论允许规则如何,Claude Code 都会将文件编辑工具发送到您的 `canUseTool` 回调。47* 在 `plan` 模式下,部分调用会到达您的回调;当自动模式可用时,其他调用则会转到其分类器。有关更多信息,请参阅 [计划模式](#plan-mode-plan)。

49* 在其他模式下,请求传递下去。48* 在 `default` 和 `dontAsk` 模式下,调用会继续进入允许规则。

49* 关于 `auto` 模式,请参阅 [自动模式](#auto-mode-auto)。

50 50 

51**5. 允许规则**51**5. 允许规则**

52 52 


91 91 

92允许规则仅在字面 `mcp__<server>__` 前缀之后接受工具名称通配符。服务器段必须无通配符,以便规则命名您配置的特定服务器:`mcp__puppeteer__*` 匹配来自 `puppeteer` 服务器的每个工具,`mcp__github__get_*` 匹配其 `get_` 工具。未锚定的条目(如 `allowed_tools=["*"]` 或 `allowed_tools=["mcp__*"]`)会被忽略,不会自动批准任何内容。92允许规则仅在字面 `mcp__<server>__` 前缀之后接受工具名称通配符。服务器段必须无通配符,以便规则命名您配置的特定服务器:`mcp__puppeteer__*` 匹配来自 `puppeteer` 服务器的每个工具,`mcp__github__get_*` 匹配其 `get_` 工具。未锚定的条目(如 `allowed_tools=["*"]` 或 `allowed_tools=["mcp__*"]`)会被忽略,不会自动批准任何内容。

93 93 

94`Read` 和 `Edit` 的限定规则采用路径模式。`Edit(path)` 规则管理所有写入文件的内置工具,包括 `Write` 和 `NotebookEdit`;`Write(path)` 规则永远不会被文件权限检查匹配。

95 

96使用 `//path` 表示绝对文件系统路径:`Edit(//secrets/**)` 的拒绝规则会阻止在磁盘上 `/secrets` 下任何位置的写入。使用单个前导斜杠时,`Edit(/secrets/**)` 在规则的源处锚定。对于通过 `allowed_tools` 或 `disallowed_tools` 传递的规则,这意味着会话的工作目录,因此规则不会阻止磁盘上的 `/secrets`。请参阅 [Read 和 Edit 规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit) 了解四种锚定形式以及来自设置文件的规则如何解析。

97 

98> [!WARNING]94> [!WARNING]

99>95>

100> **自动批准的工具永远不会到达 `canUseTool`。** 在任何早期步骤中被批准的工具调用,通过 `acceptEdits` 或 `bypassPermissions`,或通过允许规则,会跳过你的 `canUseTool` 回调,因此你在那里放置的权限检查会被该工具无声地绕过。96> **自动批准的工具永远不会到达 `canUseTool`。** 在任何早期步骤中被批准的工具调用,通过 `acceptEdits` 或 `bypassPermissions`,或通过允许规则,会跳过你的 `canUseTool` 回调,因此你在那里放置的权限检查会被该工具无声地绕过。


105>101>

106> * 您的应用程序标记为 [`always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具:在回调中对该调用作出决定。要阻止这些调用到达,请[在会话中途更改策略](https://code.claude.com/docs/zh-CN/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance)。在 `auto`、`plan` 和 `bypassPermissions` 模式中,该调用也可能在回调之前被批准,具体情况列于[可以批准 `always_ask` 调用的权限模式](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)102> * 您的应用程序标记为 [`always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具:在回调中对该调用作出决定。要阻止这些调用到达,请[在会话中途更改策略](https://code.claude.com/docs/zh-CN/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance)。在 `auto`、`plan` 和 `bypassPermissions` 模式中,该调用也可能在回调之前被批准,具体情况列于[可以批准 `always_ask` 调用的权限模式](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)

107>103>

108> * 被识别出的 `rm` 和 `rmdir` [关键路径移除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths):在 `default`、`acceptEdits` 和 `bypassPermissions` 模式中,在回调中允许或拒绝该移除操作,此时 [`decisionReason`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#canusetool) 以 `Dangerous rm` 开头。对于 `auto` 和 `plan` 模式,请参阅[各权限模式中的关键路径移除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-path-removals-in-each-permission-mode)。识别这些移除操作的检查[可能会遗漏某些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)104> * 被识别出的 `rm` 和 `rmdir` [关键路径移除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths):在 `default`、`acceptEdits` 和 `bypassPermissions` 模式中,在回调中允许或拒绝该移除操作,此时 [`decisionReason`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#canusetool) 以 `Dangerous rm` 开头。对于 `auto` 和 `plan` 模式,请参阅[各权限模式中的关键路径移除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-path-removals-in-each-permission-mode)

109>105>

110> * **裸名称**:像 `Read` 或 `mcp__github__get_issue` 这样的条目会自动批准对该工具的每个调用,[任何模式都不自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves)和[从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths)除外。106> * **裸名称**:像 `Read` 或 `mcp__github__get_issue` 这样的条目会自动批准对该工具的每个调用,[任何模式都不自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves)和[从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths)除外。

111>107>

112> * **限定规则**:像 `Bash(npm test *)` 这样的条目仅自动批准匹配的调用,其他需要批准的 `Bash` 调用仍然会进入回调。108> * **限定规则**:像 `Bash(npm test *)` 这样的条目会自动批准与其匹配的调用,其他需要批准的 `Bash` 调用会进入权限模式。

113>109>

114> 对于必须在每个工具调用上运行的检查,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks):hook 在每个其他步骤之前运行,hook 拒绝即使在 `bypassPermissions` 模式中也适用。110> 要检查由允许规则、`acceptEdits` 或 `bypassPermissions` 批准的调用,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks),它也会针对这些调用运行。hook 拒绝即使在 `bypassPermissions` 模式中也适用。

115 111 

116对于锁定的代理,将 `allowedTools` 与 `permissionMode: "dontAsk"` 配对:112对于锁定的代理,将 `allowedTools` 与 `permissionMode: "dontAsk"` 配对:

117 113 


128 124 

129> [!WARNING]125> [!WARNING]

130>126>

131> **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 预批准你列出的工具。其他未列出的工具不匹配任何允许规则,会进入权限模式,其中 `bypassPermissions` 批准它们。将 `allowed_tools=["Read"]` 与 `permission_mode="bypassPermissions"` 一起设置仍然会批准每个工具,包括 `Bash`、`Write` 和 `Edit`。如果你需要 `bypassPermissions` 但想要阻止特定工具,请使用 `disallowed_tools`。127> **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 预批准您列出的工具。在 `bypassPermissions` 模式中,Claude Code 会批准对未列出工具的调用,除非该调用属于[任何模式都不自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves)。

128>

129> 如果您将 `allowed_tools=["Read"]` 与 `permission_mode="bypassPermissions"` 一起设置,Claude Code 仍然会批准对 `Bash`、`Write` 和 `Edit` 等工具的调用。如果您需要 `bypassPermissions` 但想要阻止特定工具,请使用 `disallowed_tools`。关于在此模式中仍会到达您的 `canUseTool` 回调的调用,请参阅[绕过权限模式](#bypass-permissions-mode-bypasspermissions)。

132 130 

133你也可以在 `.claude/settings.json` 中声明式地配置允许、拒绝和询问规则。当启用 `project` 设置源时会读取这些规则,默认 `query()` 选项就是这样。如果你显式设置 `setting_sources`(TypeScript:`settingSources`),请包含 `"project"` 以使其应用。请参阅[权限设置](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)了解规则语法。131你也可以在 `.claude/settings.json` 中声明式地配置允许、拒绝和询问规则。当启用 `project` 设置源时会读取这些规则,默认 `query()` 选项就是这样。如果你显式设置 `setting_sources`(TypeScript:`settingSources`),请包含 `"project"` 以使其应用。请参阅[权限设置](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)了解规则语法。

134 132 

133关于项目 `.claude/settings.json` 中的允许规则何时生效,请参阅[项目允许规则和工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)。

134 

135### 规则中的路径模式

136 

137`Read` 和 `Edit` 的限定规则采用路径模式。`Edit(path)` 规则管理所有写入文件的内置工具,包括 `Write` 和 `NotebookEdit`,因此对其中任何一个工具编写路径规则时,都请写成 `Edit(path)`。如果您将路径规则写成 `Write(path)` 或 `NotebookEdit(path)`,它[不会匹配任何调用](https://code.claude.com/docs/zh-CN/permissions.md#path-rules-that-never-match),也不会产生任何效果。

138 

139在 `allowed_tools` 和 `disallowed_tools` 中,路径模式以 `//` 开头表示绝对路径,以单个 `/` 开头表示会话工作目录内的路径:

140 

141* **`//path`**:使用 `Edit(//secrets/**)` 的拒绝规则时,Claude Code 会阻止 Claude 的文件工具以及 [`tee` 和 `> file` 重定向等 Bash 命令](https://code.claude.com/docs/zh-CN/permissions#what-read-and-edit-rules-cover)写入磁盘上 `/secrets` 下的内容。Claude 运行的、自行打开文件的脚本仍然可以写入 `/secrets` 下的内容。如需由操作系统强制执行,请参阅[配置沙箱化的 Bash 工具](https://code.claude.com/docs/zh-CN/sandboxing.md)。

142* **`/path`**:`Edit(/secrets/**)` 匹配工作目录内的 `secrets` 目录。

143 

144关于路径模式的其他开头形式,请参阅 [Read 和 Edit 规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)。

145 

135## 权限模式146## 权限模式

136 147 

137权限模式为 Claude 使用工具的方式提供全局控制。您可以在调用 `query()` 时设置权限模式,也可以在流式会话期间动态更改。148权限模式为 Claude 使用工具的方式提供全局控制。您可以在调用 `query()` 时设置权限模式,也可以在流式会话期间动态更改。


146| :- | :- | :- |157| :- | :- | :- |

147| `default` | 标准权限行为 | 没有基于模式的自动批准;需要批准且不匹配任何允许规则的调用会触发您的 `canUseTool` 回调 |158| `default` | 标准权限行为 | 没有基于模式的自动批准;需要批准且不匹配任何允许规则的调用会触发您的 `canUseTool` 回调 |

148| `dontAsk` | 拒绝而不是提示 | 任何原本会提示的调用都会被拒绝,且不调用 `canUseTool`,不过您安装的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) 仍可批准[其中部分调用](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools` 或 `settings.json` 允许规则批准的调用会运行,在 `default` 模式下无需批准的调用也会运行。某些调用,例如[从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths),即使 `allowed_tools` 或允许规则与其匹配也会被拒绝。完整列表请参阅[不询问模式](#don’t-ask-mode-dontask) |159| `dontAsk` | 拒绝而不是提示 | 任何原本会提示的调用都会被拒绝,且不调用 `canUseTool`,不过您安装的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) 仍可批准[其中部分调用](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools` 或 `settings.json` 允许规则批准的调用会运行,在 `default` 模式下无需批准的调用也会运行。某些调用,例如[从网络路径读取](https://code.claude.com/docs/zh-CN/permissions.md#network-paths),即使 `allowed_tools` 或允许规则与其匹配也会被拒绝。完整列表请参阅[不询问模式](#don’t-ask-mode-dontask) |

149| `acceptEdits` | 自动接受文件编辑 | 文件编辑和[文件系统操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)会被自动批准 |160| `acceptEdits` | 自动接受文件编辑 | 您的[工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)内的文件编辑和[文件系统操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)会被自动批准 |

150| `bypassPermissions` | 绕过权限检查 | 工具无需权限提示即可运行,但[任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves),以及在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外您的应用程序[标记为 `always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具除外。请谨慎使用 |161| `bypassPermissions` | 绕过权限检查 | 工具无需权限提示即可运行,但[任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves),以及在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外您的应用程序[标记为 `always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具除外。请谨慎使用 |

151| `plan` | 计划模式 | Claude 进行探索和规划,但不编辑您的源文件;文件编辑永远不会被自动批准,而是通过您的 `canUseTool` 回调进行提示 |162| `plan` | 计划模式 | Claude 进行探索和规划。使用 Claude 的文件工具所做的编辑会交给您的 `canUseTool` 回调,即使某条允许规则与之匹配也是如此 |

152| `auto` | 由模型分类的批准 | 模型分类器会审查 shell 命令和网络请求等操作,对其审查的每个操作予以允许或阻止。有关可用性和决策顺序,请参阅[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) |163| `auto` | 由模型分类的批准 | 模型分类器会审查 shell 命令和网络请求等操作,对其审查的每个操作予以允许或阻止。有关可用性和决策顺序,请参阅[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) |

153 164 

154> [!WARNING]165> [!WARNING]


267 278 

268**自动批准的操作:**279**自动批准的操作:**

269 280 

270* 文件编辑(Edit、Write 工具)281* 使用 Edit、Write 和 NotebookEdit 工具进行的文件编辑

271* 文件系统命令:`mkdir`、`touch`、`rm`、`rmdir`、`mv`、`cp`、`sed`282* 文件系统命令:`mkdir`、`touch`、`rm`、`rmdir`、`mv`、`cp`、`sed`

272 283 

273两者都仅适用于工作目录或 `additionalDirectories` 内的路径。在 `acceptEdits` 模式下,当 Claude 执行以下操作时,Claude Code 不会自动批准该请求:284两者都适用于工作目录或您添加的目录内的路径。在 Python 中使用 `add_dirs` 添加目录,在 TypeScript 中使用 `additionalDirectories` 添加。在 `acceptEdits` 模式下,当 Claude 执行以下操作时,Claude Code 不会自动批准该请求:

274 285 

275* 处理该范围之外的路径286* 处理该范围之外的路径

276* 写入受保护的路径287* 写入[受保护的路径](https://code.claude.com/docs/zh-CN/permission-modes.md#protected-paths)

277* 使用 `rm` 或 `rmdir` 删除 Claude Code 识别为[关键路径](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)的路径288* 使用 `rm` 或 `rmdir` 删除 Claude Code 识别为[关键路径](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)的路径

278* 运行带有例如选项、glob 或 `timeout 5`、`LANG=C` 前缀的 [`touch`](https://code.claude.com/docs/zh-CN/permission-modes#auto-approve-file-edits-with-acceptedits-mode)289* 运行带有例如选项、glob 或 `timeout 5`、`LANG=C` 前缀的 [`touch`](https://code.claude.com/docs/zh-CN/permission-modes#auto-approve-file-edits-with-acceptedits-mode)

279 290 


293 304 

294如果您的 `PreToolUse` hook 对被识别出的关键路径删除、从网络路径读取或对标记为 `always_ask` 的工具的调用返回 `allow`,该调用仍会被拒绝。识别这些删除操作的检查[可能会漏掉某些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)。305如果您的 `PreToolUse` hook 对被识别出的关键路径删除、从网络路径读取或对标记为 `always_ask` 的工具的调用返回 `allow`,该调用仍会被拒绝。识别这些删除操作的检查[可能会漏掉某些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)。

295 306 

296**适用场景:** 您希望为无头 Agent 提供一组固定、明确的工具,并且更倾向于硬性拒绝,而不是默默依赖 `canUseTool` 的缺失。307**适用场景:** 您运行无头 Agent,并希望对每个原本会提示的调用进行硬性拒绝。

297 308 

298#### 绕过权限模式(`bypassPermissions`)309#### 绕过权限模式(`bypassPermissions`)

299 310 


303>314>

304> 请极其谨慎地使用。在此模式下,Claude 拥有完全的系统访问权限。仅在您信任所有可能操作的受控环境中使用。315> 请极其谨慎地使用。在此模式下,Claude 拥有完全的系统访问权限。仅在您信任所有可能操作的受控环境中使用。

305>316>

306> `allowed_tools` 不会约束此模式。每个工具都会被批准,而不仅仅是您列出的工具。以下控制措施仍然适用:317> `allowed_tools` 不会约束此模式,对您未列出的工具的调用也会被批准。以下控制措施仍然适用:

307>318>

308> * 拒绝规则、显式 `ask` 规则和 hook 会在模式检查之前进行评估,仍然可以阻止工具。319> * 拒绝规则、显式 `ask` 规则和 hook 会在模式检查之前进行评估,仍然可以阻止工具。

309> * [您的组织设置为 `ask`](https://code.claude.com/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具、需要用户交互的工具以及被识别出的[关键路径删除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)仍会交给您的 `canUseTool` 回调处理。识别这些删除操作的检查[可能会漏掉某些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths),您也可以[关闭关键路径删除提示](https://code.claude.com/docs/zh-CN/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode)。在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外,对您的应用程序[标记为 `always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具的调用也会交给该回调处理。320> * [您的组织设置为 `ask`](https://code.claude.com/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具、需要用户交互的工具、被识别出的[关键路径删除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths),以及被标记为 [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/zh-CN/permission-modes#dangerous-rm-operation-not-ruled-out) 的 Bash 命令仍会交给您的 `canUseTool` 回调处理。识别关键路径删除的检查[可能会漏掉某些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths),您也可以[关闭关键路径删除提示](https://code.claude.com/docs/zh-CN/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode)。在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外,对您的应用程序[标记为 `always_ask`](https://code.claude.com/docs/zh-CN/agent-sdk/custom-tools#require-approval-for-specific-tools) 的自定义工具的调用也会交给该回调处理。

310> * [跨会话消息传递保护措施](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)仍然适用。321> * [跨会话消息传递保护措施](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)仍然适用。

311 322 

312#### 计划模式(`plan`)323#### 计划模式(`plan`)

313 324 

314Claude 会探索代码库并制定计划,而不编辑您的源文件。在计划模式下,文件编辑永远不会被自动批准,即使某条允许规则与之匹配或 `PreToolUse` hook 返回 `allow` 也是如此。它们会改为通过您的 `canUseTool` 回调进行提示。325Claude 会探索代码库并制定计划。在规划期间,使用 Claude 的文件工具在[受保护路径](https://code.claude.com/docs/zh-CN/permission-modes.md#protected-paths)之外所做的编辑会交给您的 `canUseTool` 回调,即使某条允许规则与之匹配或 `PreToolUse` hook 返回 `allow` 也是如此。[`AskUserQuestion`](https://code.claude.com/docs/zh-CN/agent-sdk/user-input#handle-clarifying-questions) 调用也会交给您的回调,即使某条允许规则指定了该工具。

326 

327当[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)可用时,对于没有允许规则批准的以下调用,Claude Code 会在规划期间将其发送给[自动模式的分类器](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)进行审查,而不是交给您的回调:

328 

329* Shell 命令

330* 网页获取

331* 网页搜索

332* 对其服务器标记为只读的 MCP 工具的调用

333 

334此审查默认开启。要关闭它,请在传递给 `query()` 的 `settings` 选项中或在您的用户设置中将 [`useAutoModeDuringPlan`](https://code.claude.com/docs/zh-CN/settings-reference#useautomodeduringplan) 设置为 `false`。审查关闭时,网页搜索以及对标记为只读的 MCP 工具的调用会交给您的回调。

315 335 

316当会话可以使用自动模式时,Claude 在规划期间运行的命令默认不会交给您的回调,因为[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)使用的分类器模型会[改为审查这些命令](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)。启用该审查后,分类器还可以批准原本会交给您回调的只读调用,例如没有允许规则的 `WebFetch` 调用。336对于 shell 命令和网页获取,下表显示了每个调用是否会交给您的回调:

337 

338| 规划期间的调用 | 审查开启 | 审查关闭,或自动模式不可用 |

339| :- | :- | :- |

340| [只读](https://code.claude.com/docs/zh-CN/permissions.md#read-only-commands) shell 命令,例如 `ls` | 直接运行,不会交给您的回调 | 直接运行,不会交给您的回调 |

341| 没有允许规则批准的其他任何 shell 命令([关键路径删除](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)除外) | 交给分类器,由其批准或拒绝,不经过您的回调 | 交给您的回调 |

342| 对[预先批准的文档域名](https://code.claude.com/docs/zh-CN/tools-reference.md#webfetch-tool-behavior)的 `WebFetch` 调用 | 直接运行,不会交给您的回调 | 直接运行,不会交给您的回调 |

343| 没有允许规则批准的其他任何 `WebFetch` 调用 | 交给分类器,由其批准或拒绝,不经过您的回调 | 交给您的回调 |

344 

345有关分类器连续拒绝多个调用后会发生什么,请参阅[重复阻止阈值](https://code.claude.com/docs/zh-CN/permission-modes.md#repeated-block-thresholds)。

317 346 

318> [!NOTE]347> [!NOTE]

319>348>

320> 在 TypeScript SDK 中,如果您在设置 `permissionMode: 'plan'` 的同时设置了 `allowDangerouslySkipPermissions: true`,文件编辑仍会交给您的 `canUseTool` 回调。要在之后通过 `setPermissionMode()` 将以计划模式启动的会话切换到 `bypassPermissions`,您需要从一开始就设置 `allowDangerouslySkipPermissions`。349> 在 TypeScript SDK 中,如果您在设置 `permissionMode: 'plan'` 的同时设置了 `allowDangerouslySkipPermissions: true`,文件编辑仍会交给您的 `canUseTool` 回调。要在之后通过 `setPermissionMode()` 将以计划模式启动的会话切换到 `bypassPermissions`,您需要从一开始就设置 `allowDangerouslySkipPermissions`。

321 350 

322Claude 可能会在最终确定计划之前使用 `AskUserQuestion` 来澄清需求。有关如何处理这些提示,请参阅[处理批准和用户输入](https://code.claude.com/docs/zh-CN/agent-sdk/user-input.md#handle-clarifying-questions)。351**适用场景:** 您希望 Claude 先制定计划,例如在代码审查期间或进行大型更改之前。

323 

324**适用场景:** 您希望 Claude 提出更改但不执行,例如在代码审查期间,或者您需要在更改生效前先批准时。

325 352 

326#### 自动模式(`auto`)353#### 自动模式(`auto`)

327 354 

Details

1175PermissionMode = Literal[1175PermissionMode = Literal[

1176 "default", # Standard permission behavior1176 "default", # Standard permission behavior

1177 "acceptEdits", # Auto-accept file edits1177 "acceptEdits", # Auto-accept file edits

1178 "plan", # Planning mode - explore without editing1178 "plan", # Planning mode - Claude explores and plans

1179 "dontAsk", # Deny anything not pre-approved instead of prompting1179 "dontAsk", # Deny anything not pre-approved instead of prompting

1180 "bypassPermissions", # Bypass permission checks; explicit ask rules still prompt (use with caution)1180 "bypassPermissions", # Bypass permission checks; explicit ask rules still prompt (use with caution)

1181 "auto", # A model classifier reviews actions such as shell commands and network requests1181 "auto", # A model classifier reviews actions such as shell commands and network requests


1214 1214 

1215返回 `PermissionResult`(`PermissionResultAllow` 或 `PermissionResultDeny`)。1215返回 `PermissionResult`(`PermissionResultAllow` 或 `PermissionResultDeny`)。

1216 1216 

1217回调是 SDK 对交互式权限提示的替代:它仅在[权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)解析为提示时调用。已由 `allowed_tools` 条目、设置中的允许规则或权限模式(如 `acceptEdits` 或 `bypassPermissions`)批准的工具调用永远不会调用它。要把关每个工具调用,请改用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks)。1217该回调取代交互式权限提示。当[权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)解析为提示时,SDK 会调用 `can_use_tool`。以下列任一方式批准的调用会直接运行,不会调用 `can_use_tool`:

1218 

1219* 由 `allowed_tools` 条目或设置中的允许规则批准的调用

1220* 由权限模式批准的调用,例如 `acceptEdits` 模式下的文件编辑

1221 

1222要检查这些调用,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks),它也会针对这些调用运行。

1218 1223 

1219允许规则不会预批准[任何模式都不自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves);见 [权限如何被评估](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated) 了解其中哪些会到达回调,以及在 `dontAsk` 和 `auto` 模式下会发生什么。1224允许规则不会预批准[任何模式都不自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves);见 [权限如何被评估](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated) 了解其中哪些会到达回调,以及在 `dontAsk` 和 `auto` 模式下会发生什么。

1220 1225 


3659 3664 

3660> [!NOTE]3665> [!NOTE]

3661>3666>

3662> 内置沙箱代理基于请求的主机名强制执行网络允许列表,不会终止或检查 TLS 流量,因此 [域名前置](https://en.wikipedia.org/wiki/Domain_fronting) 等技术可能会绕过它。有关详细信息,请参阅 [沙箱安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations),以及 [安全部署](https://code.claude.com/docs/zh-CN/agent-sdk/secure-deployment.md#traffic-forwarding) 以配置 TLS 终止代理。3667> 内置沙箱代理基于请求的主机名强制执行网络允许列表。默认情况下,该代理不会终止或检查 TLS 流量,因此 [域名前置](https://en.wikipedia.org/wiki/Domain_fronting) 等技术可能会绕过允许列表。有关详细信息,请参阅 [沙箱隔离安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations),以及 [安全部署](https://code.claude.com/docs/zh-CN/agent-sdk/secure-deployment.md#traffic-forwarding) 以配置 TLS 终止代理。

3663 3668 

3664### `SandboxIgnoreViolations`3669### `SandboxIgnoreViolations`

3665 3670 

Details

22 22 

23Claude Code 包含多个安全功能来解决常见问题。有关完整详情,请参阅[安全文档](https://code.claude.com/docs/zh-CN/security.md)。23Claude Code 包含多个安全功能来解决常见问题。有关完整详情,请参阅[安全文档](https://code.claude.com/docs/zh-CN/security.md)。

24 24 

25* **权限系统**:每个工具和 bash 命令都可以配置为允许、阻止或提示用户批准。使用 glob 模式创建规则,如"允许所有 npm 命令"或"阻止任何带有 sudo 的命令"。组织可以设置适用于所有用户的策略。请参阅[权限](https://code.claude.com/docs/zh-CN/permissions.md)。25* **权限系统**:权限规则决定工具调用是直接运行、被阻止,还是先请求批准。有关 Bash 规则无法匹配的形式以及规则如何与权限模式结合,请参阅 [Bash 规则无法匹配的内容](https://code.claude.com/docs/zh-CN/permissions.md#bash-rule-limits)和[配置权限](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md)。管理员还可以在[托管设置](https://code.claude.com/docs/zh-CN/permissions.md#managed-settings)中设置规则。

26* **权限的命令解析**:在执行 bash 命令之前,Claude Code 将其解析为 AST 并将结果与您的权限规则进行匹配。无法干净解析或不符合允许规则的命令需要明确批准。一小组构造(如 `eval`)无论允许规则如何都始终需要批准。这是一个权限门,而不是沙箱;除了内置的安全检查(如对 `rm` 和 `rmdir` 的[关键路径检查](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)和[受保护路径](https://code.claude.com/docs/zh-CN/permission-modes.md#protected-paths)列表)外,它不会根据其目标路径或效果推断命令是否危险。26* **关键路径删除**:当权限模式设置为 `default` 时,被识别为删除您的工作目录或其他[关键路径](https://code.claude.com/docs/zh-CN/permission-modes.md#critical-paths)的 `rm` 或 `rmdir` 命令需要批准。匹配的允许规则不会跳过该批准。这是一个权限门,而不是沙箱。要控制 Agent 可以写入的内容,请使用[文件系统控制](#filesystem-configuration)。

27* **Web 搜索摘要**:搜索结果被摘要化,而不是将原始内容直接传递到上下文中,从而降低了来自恶意网络内容的提示注入风险。27* **Web 搜索摘要**:搜索结果被摘要化,而不是将原始内容直接传递到上下文中,从而降低了来自恶意网络内容的提示注入风险。

28* **Sandbox 模式**:Bash 命令可以在限制文件系统和网络访问的沙箱环境中运行。有关详情,请参阅[沙箱文档](https://code.claude.com/docs/zh-CN/sandboxing.md)。28* **Sandbox 模式**:Bash 命令可以在限制文件系统和网络访问的沙箱环境中运行。有关详情,请参阅[沙箱文档](https://code.claude.com/docs/zh-CN/sandboxing.md)。

29 29 


83**工作原理:**83**工作原理:**

84 84 

85* **文件系统**:使用操作系统原语(Linux 上的 `bubblewrap`、macOS 上的 `sandbox-exec`)来限制对配置路径的读/写访问85* **文件系统**:使用操作系统原语(Linux 上的 `bubblewrap`、macOS 上的 `sandbox-exec`)来限制对配置路径的读/写访问

86* **网络**:删除网络命名空间(Linux)或使用 Seatbelt 配置文件(macOS)通过内置代理路由网络流量86* **网络**:在独立的网络命名空间(Linux)中或在 Seatbelt 配置文件(macOS)下运行命令,并通过允许已配置域的内置代理路由其流量。绕过代理连接外部主机的尝试会失败。

87* **配置**:域和文件系统路径的基于 JSON 的允许列表87* **配置**:域和文件系统路径的基于 JSON 的允许列表

88 88 

89**设置:**89**设置:**

90 90 

91```bash theme={null}91有关安装、配置和启动步骤,请参阅[设置并启动运行时](https://code.claude.com/docs/zh-CN/sandbox-environments.md#set-up-and-launch-the-runtime)。

92npm install @anthropic-ai/sandbox-runtime

93```

94 

95然后创建一个配置文件,指定允许的路径和域。

96 92 

97**安全考虑:**93**安全考虑:**

98 94 

991. **同主机内核**:与 VM 不同,沙箱进程共享主机内核。理论上,内核漏洞可能导致逃逸。对于某些威胁模型,这是可以接受的,但如果您需要内核级隔离,请使用 gVisor 或单独的 VM。951. **同主机内核**:与 VM 不同,沙箱进程共享主机内核。理论上,内核漏洞可能导致逃逸。对于某些威胁模型,这是可以接受的,但如果您需要内核级隔离,请使用 gVisor 或单独的 VM。

100 96 

1012. **无 TLS 检查**:代理基于客户端提供的主机名将域列入允许列表,不会终止或检查加密流量。在沙箱内运行的代码可能会使用[域前置](https://en.wikipedia.org/wiki/Domain_fronting)或类似技术来访问允许列表外的主机。如果您的威胁模型需要更强的保证,请配置[TLS 终止代理](#traffic-forwarding)。有关更多详情,请参阅[沙箱安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations)。另外,如果代理对允许的域具有宽松凭证,请确保它无法使用该域来触发其他网络请求或泄露数据。972. **无 TLS 检查**:默认情况下,代理基于客户端提供的主机名将域列入允许列表,不会终止或检查加密流量。在沙箱内运行的代码可能会使用[域前置](https://en.wikipedia.org/wiki/Domain_fronting)或类似技术来访问允许列表外的主机。如果您的威胁模型需要更强的保证,请使用可检查流量的 TLS 终止代理,如[流量转发](#traffic-forwarding)所述。有关更多信息,请参阅[沙箱隔离安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations)。

98 

993. **允许域的凭据**:如果 Agent 对允许的域具有宽松凭据,请确保它无法使用该域来触发其他网络请求或泄露数据。

102 100 

103对于许多单开发人员和 CI/CD 用例,sandbox-runtime 以最少的设置显著提高了标准。下面的部分涵盖了需要更强隔离的部署的容器和 VM。101对于许多单开发人员和 CI/CD 用例,sandbox-runtime 以最少的设置显著提高了标准。下面的部分涵盖了需要更强隔离的部署的容器和 VM。

104 102 


135| `--security-opt seccomp=...` | 限制可用的系统调用;Docker 的默认值阻止约 44 个,自定义配置文件可以阻止更多 |133| `--security-opt seccomp=...` | 限制可用的系统调用;Docker 的默认值阻止约 44 个,自定义配置文件可以阻止更多 |

136| `--read-only` | 使容器的根文件系统不可变,防止代理持久化更改 |134| `--read-only` | 使容器的根文件系统不可变,防止代理持久化更改 |

137| `--tmpfs /tmp:...` | 提供一个可写的临时目录,在容器停止时清除 |135| `--tmpfs /tmp:...` | 提供一个可写的临时目录,在容器停止时清除 |

138| `--network none` | 删除所有网络接口;代理通过下面挂载的 Unix 套接字进行通信 |136| `--network none` | 切断容器与外部网络的连接 |

139| `--memory 2g` | 将内存使用限制为 2GB 以防止资源耗尽 |137| `--memory 2g` | 将内存使用限制为 2GB 以防止资源耗尽 |

140| `--pids-limit 100` | 限制进程数以防止 fork 炸弹 |138| `--pids-limit 100` | 限制进程数以防止 fork 炸弹 |

141| `--user 1000:1000` | 以非 root 用户身份运行 |139| `--user 1000:1000` | 以非 root 用户身份运行 |


144 142 

145**Unix 套接字架构:**143**Unix 套接字架构:**

146 144 

147使用 `--network none`,容器根本没有网络接口。代理到达外部世界的唯一方式是通过挂载的 Unix 套接字,该套接字连接到在主机上运行的代理。此代理可以强制执行域允许列表、注入凭证并记录所有流量。145使用 `--network none` 时,容器内的 DNS 查询或与其他主机的直接连接都会失败。要让容器中的代码访问其他主机,请在主机上运行代理,并将其 Unix 套接字挂载到容器中。如果您将 `ANTHROPIC_BASE_URL` 或 `HTTP_PROXY` 指向 `localhost` 上的某个端口(如[配置 Claude Code 使用代理](#configuring-claude-code-to-use-a-proxy)所示),请在容器内将该端口中继到该套接字。

148 146 

149这与 [sandbox-runtime](https://github.com/anthropics/sandbox-runtime) 使用的架构相同。即使 Agent 通过提示词注入被破坏,它也无法将数据泄露到任意服务器。它只能通过代理进行通信,代理控制哪些域可以访问。有关更多详情,请参阅 [Claude Code 沙箱隔离博客文章](https://www.anthropic.com/engineering/claude-code-sandboxing)。147您可以设置此代理来强制执行域允许列表、注入凭据并记录所有流量。

148 

149> [!WARNING]

150>

151> 在代理的允许列表范围内,Agent 可以向任何允许的域发送数据。请仅允许 Agent 所需的域。

150 152 

151**额外加固选项:**153**额外加固选项:**

152 154 

Details

1340 | "default" // Standard permission behavior1340 | "default" // Standard permission behavior

1341 | "acceptEdits" // Auto-accept file edits1341 | "acceptEdits" // Auto-accept file edits

1342 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt1342 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt

1343 | "plan" // Planning mode - explore without editing1343 | "plan" // Planning mode - Claude explores and plans

1344 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved1344 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved

1345 | "auto"; // A model classifier reviews actions such as shell commands and network requests1345 | "auto"; // A model classifier reviews actions such as shell commands and network requests

1346```1346```


1349 1349 

1350用于控制工具使用的自定义权限函数类型。1350用于控制工具使用的自定义权限函数类型。

1351 1351 

1352该函数是 SDK 中交互式权限提示的替代方案:仅当[权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)的结果为提示时才会调用它。已被 `allowedTools` 条目、设置中的允许规则或权限模式(例如 `acceptEdits` 或 `bypassPermissions`)批准的工具调用永远不会调用它。要对每个工具调用进行把关,请改用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks)。1352该函数取代交互式权限提示。当[权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)最终需要提示时,SDK 会调用 `canUseTool`。通过以下任一方式批准的调用会直接运行,而不会调用 `canUseTool`:

1353 

1354* 由 `allowedTools` 条目或设置中的 allow 规则批准的调用

1355* 由权限模式批准的调用,例如 `acceptEdits` 模式下的文件编辑

1356 

1357要检查这些调用,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks),它也会针对这些调用运行。

1353 1358 

1354允许规则不会预先批准[任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves);有关其中哪些操作会到达回调,以及在 `dontAsk` 和 `auto` 模式下会发生什么,请参阅[权限的评估方式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)。1359允许规则不会预先批准[任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves);有关其中哪些操作会到达回调,以及在 `dontAsk` 和 `auto` 模式下会发生什么,请参阅[权限的评估方式](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)。

1355 1360 


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

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

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

2014* 因 `~/.claude.json` 不是有效 JSON 而被 Claude Code 拒绝的启动,带有 `config_file_invalid`。

2009 2015 

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

2011 2017 


2030 | "bypass_root"2036 | "bypass_root"

2031 | "org_config_required_unavailable"2037 | "org_config_required_unavailable"

2032 | "org_config_refused"2038 | "org_config_refused"

2033 | "sandbox_required_unavailable";2039 | "sandbox_required_unavailable"

2040 | "config_file_invalid";

2034```2041```

2035 2042 

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


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

2058| `org_config_refused` | Anthropic 拒绝为此次登录提供组织的策略和托管设置,例如因为登录已过期或被吊销,或组织不允许此账户使用 Claude Code。需要 Agent SDK v0.3.293 或更高版本 |2065| `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 或更高版本 |2066| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) 已开启且沙箱无法启动。`errors` 中的文本以 `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` 结尾。需要 Agent SDK v0.3.314 或更高版本 |

2067| `config_file_invalid` | `~/.claude.json` 不是有效的 JSON。Claude Code 不会更改该文件,因此在有人修复它之前,重试会以同样的方式失败。`errors` 会指出该文件并说明如何恢复或修复它。请参阅 [\~/.claude.json 中的配置错误](https://code.claude.com/docs/zh-CN/errors.md#configuration-error-in-claude-json)。需要 TypeScript Agent SDK v0.3.318 或更高版本以及 Claude Code v2.1.318 或更高版本 |

2060 2068 

2061### `SDKSystemMessage`2069### `SDKSystemMessage`

2062 2070 


6106 6114 

6107> [!NOTE]6115> [!NOTE]

6108>6116>

6109> 内置沙箱代理根据请求的主机名强制执行 `allowedDomains`,不会终止或检查 TLS 流量,因此[域前置](https://en.wikipedia.org/wiki/Domain_fronting)等技术可能会绕过它。有关详细信息,请参阅[沙箱隔离的安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations);有关配置 TLS 终止代理,请参阅[安全部署](https://code.claude.com/docs/zh-CN/agent-sdk/secure-deployment.md#traffic-forwarding)。6117> 内置沙箱代理根据请求的主机名强制执行 `allowedDomains`。默认情况下,该代理不会终止或检查 TLS 流量,因此[域前置](https://en.wikipedia.org/wiki/Domain_fronting)等技术可能会绕过 `allowedDomains`。有关详细信息,请参阅[沙箱隔离的安全限制](https://code.claude.com/docs/zh-CN/sandboxing.md#security-limitations);有关配置 TLS 终止代理,请参阅[安全部署](https://code.claude.com/docs/zh-CN/agent-sdk/secure-deployment.md#traffic-forwarding)。

6110 6118 

6111### `SandboxFilesystemConfig`6119### `SandboxFilesystemConfig`

6112 6120 

Details

47回调在两种情况下触发:47回调在两种情况下触发:

48 48 

491. **工具需要批准**:Claude 想要使用不被[权限规则](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md)或权限模式自动批准的工具。检查 `tool_name` 以获取工具(例如 `"Bash"`、`"Write"`)。491. **工具需要批准**:Claude 想要使用不被[权限规则](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md)或权限模式自动批准的工具。检查 `tool_name` 以获取工具(例如 `"Bash"`、`"Write"`)。

502. **Claude 提出问题**:Claude 调用 `AskUserQuestion` 工具。检查 `tool_name == "AskUserQuestion"` 以不同方式处理它。如果您指定 `tools` 数组,请包含 `AskUserQuestion` 以使其工作。有关详细信息,请参阅[处理澄清问题](#handle-clarifying-questions)。502. **Claude 提出问题**:Claude 调用 `AskUserQuestion` 工具。检查 `tool_name == "AskUserQuestion"` 是否成立,以便对其进行不同的处理。如果指定了 `tools` 数组,则需要包含 `AskUserQuestion` 才能使其生效。有关更多信息,请参阅[处理澄清问题](#handle-clarifying-questions)。

51 51 

52> [!WARNING]52> [!WARNING]

53>53>

54> **回调永远不会对自动批准的工具触发。** [权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)中任何较早的批准、允许规则或 `acceptEdits` 或 `bypassPermissions` 等模式会在咨询 `canUseTool` 之前解决调用。如果您在 `allowed_tools` 中列出一个工具,仅当[评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)将调用路由回提示(例如询问规则或 `plan` 模式)时,该工具的 `canUseTool` 检查才会运行。对于必须应用于每个工具调用的逻辑,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks),它在流程的其余部分之前执行,可以允许、拒绝或修改请求。54> **较早的步骤可能会在 `canUseTool` 运行之前允许或拒绝调用。** [权限评估流程](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)会在您的回调之前检查拒绝规则、权限模式和允许规则。

55>55>

56> 允许规则不会预先批准[任何模式都不会自动批准的操作](https://code.claude.com/docs/zh-CN/permission-modes.md#actions-no-mode-auto-approves);有关其中哪些到达回调以及在 `dontAsk` 和 `auto` 模式下发生的情况,请参阅[权限如何评估](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)。56> 若要对已被规则或权限模式允许的调用运行您的检查,请使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks),它会针对这些调用运行,并且可以允许、拒绝或修改它们。

57 57 

58您还可以使用 [`PermissionRequest` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks#available-hooks) 在 Claude 等待批准时发送外部通知(Slack、电子邮件、推送)。58您还可以使用 [`PermissionRequest` hook](https://code.claude.com/docs/zh-CN/agent-sdk/hooks#available-hooks) 在 Claude 等待批准时发送外部通知(Slack、电子邮件、推送)。

59 59 

agent-view.md +2 −2

Details

1020 1020 

1021在 macOS 上,后台会话主机作为其自己的进程运行,并与您的终端分别请求对受保护文件夹的访问。如果后台会话在读取 `~/Desktop`、`~/Documents`、`~/Downloads` 或其他受保护位置时报告 `Operation not permitted`,请在系统设置中的隐私和安全 > 文件和文件夹下授予访问权限,或为该条目启用完全磁盘访问。1021在 macOS 上,后台会话主机作为其自己的进程运行,并与您的终端分别请求对受保护文件夹的访问。如果后台会话在读取 `~/Desktop`、`~/Documents`、`~/Downloads` 或其他受保护位置时报告 `Operation not permitted`,请在系统设置中的隐私和安全 > 文件和文件夹下授予访问权限,或为该条目启用完全磁盘访问。

1022 1022 

1023使用本机安装程序,该条目显示为 Claude Code,授予在更新中持续。使用其他安装方法(如 Homebrew 或 npm),该条目显示二进制路径,更新后可能需要再次授予。1023在这两个列表中,查找名为 Claude Code 的条目,或以 `claude` 二进制文件的路径或文件名命名的条目。该文件名可能是一个版本号,例如 `2.1.316`。如果 Claude Code 更新后再次出现 `Operation not permitted`,请查找新条目,例如以新版本命名的条目。如果存在这样的条目,请为其授予访问权限。

1024 1024 

1025### 后台会话无法在 macOS 上访问本地网络主机1025### 后台会话无法在 macOS 上访问本地网络主机

1026 1026 


1067| v2.1.296 | 您[在会话移到后台时](#switch-sessions-without-leaving-the-terminal)输入的提示词或 `!` shell 命令会被停止或保持未发送状态,其文本会保留在提示词历史中。在此版本之前,回复或命令会在您看不到的地方继续运行,并且在 `←` 之后立即发送的提示词可能会在您看不到的情况下运行第二次。在 `SessionStart` hook 仍在运行时键入的提示词会丢失:既不会发送,也不会出现在提示词历史中。 |1067| v2.1.296 | 您[在会话移到后台时](#switch-sessions-without-leaving-the-terminal)输入的提示词或 `!` shell 命令会被停止或保持未发送状态,其文本会保留在提示词历史中。在此版本之前,回复或命令会在您看不到的地方继续运行,并且在 `←` 之后立即发送的提示词可能会在您看不到的情况下运行第二次。在 `SessionStart` hook 仍在运行时键入的提示词会丢失:既不会发送,也不会出现在提示词历史中。 |

1068| v2.1.295 | 在[附加的后台会话](#attach-to-a-session)的空闲输入框中按 `Ctrl+C` 不会影响[自定节奏的 `/loop`](https://code.claude.com/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval) 的待处理唤醒,因此按两次会分离,而循环会继续运行。在该输入框中按 `Esc` 会[停止自定节奏的循环](https://code.claude.com/docs/zh-CN/scheduled-tasks.md#stop-a-loop)并显示 `Pending wakeup cancelled` 通知。在此版本之前,第一次按 `Ctrl+C` 可能会在不提示的情况下结束自定节奏的循环,而 `Esc` 无法停止已随会话移到后台的循环。 |1068| v2.1.295 | 在[附加的后台会话](#attach-to-a-session)的空闲输入框中按 `Ctrl+C` 不会影响[自定节奏的 `/loop`](https://code.claude.com/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval) 的待处理唤醒,因此按两次会分离,而循环会继续运行。在该输入框中按 `Esc` 会[停止自定节奏的循环](https://code.claude.com/docs/zh-CN/scheduled-tasks.md#stop-a-loop)并显示 `Pending wakeup cancelled` 通知。在此版本之前,第一次按 `Ctrl+C` 可能会在不提示的情况下结束自定节奏的循环,而 `Esc` 无法停止已随会话移到后台的循环。 |

1069| v2.1.295 | 在 macOS 和 Linux 上,当 `claude agents` 在没有[监督进程](#keep-sessions-running-after-the-supervisor-stops)运行时退出,它不会自行启动新的监督进程。此后正在运行的会话会在大约一分钟后停止,除非您再次运行 `claude agents`,agent view 在退出时可能会打印一条说明此情况的通知。在此版本之前,退出的 `claude agents` 会启动新的监督进程。 |1069| v2.1.295 | 在 macOS 和 Linux 上,当 `claude agents` 在没有[监督进程](#keep-sessions-running-after-the-supervisor-stops)运行时退出,它不会自行启动新的监督进程。此后正在运行的会话会在大约一分钟后停止,除非您再次运行 `claude agents`,agent view 在退出时可能会打印一条说明此情况的通知。在此版本之前,退出的 `claude agents` 会启动新的监督进程。 |

1070| v2.1.295 | 在使用原生安装程序的 macOS 上,更新后一起重启的后台会话会在持有您所授予的[受保护文件夹访问权限](#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos)的同一 Claude Code 条目下运行。在此版本之前,这些会话可能会改为在二进制文件自身的路径下运行。macOS 会将该路径列为单独的条目,因此更新后可能会再次出现文件夹访问提示。 |1070| v2.1.295 | 在使用原生安装程序的 macOS 上,更新后一起重启的后台会话会从同一个 `~/.local/share/claude/ClaudeCode.app` 文件夹运行其主机进程。在此版本之前,这些进程可能会改为从二进制文件自身的路径运行。macOS 可能会将该路径列为单独的条目,因此更新后可能会再次出现[文件夹访问提示](#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos)。 |

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

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

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

Details

459export ANTHROPIC_BEDROCK_SERVICE_TIER=priority459export ANTHROPIC_BEDROCK_SERVICE_TIER=priority

460```460```

461 461 

462Claude Code 在每个请求上将此作为 `X-Amzn-Bedrock-Service-Tier` 标头发送。层级可用性因模型和区域而异。预留容量使用[预配吞吐量](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) ARN 作为模型 ID,而不是此设置。462对于设置了该变量的会话,Claude Code 会在其发出的每个 [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) 请求上将此值作为 `X-Amzn-Bedrock-Service-Tier` 标头发送,但[模型访问检查](#startup-model-checks)除外。对于发往 [Mantle 端点](#use-the-mantle-endpoint)或经由 [Claude apps 网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway)的请求,此设置不起作用。层级可用性因模型和区域而异。预留容量使用[预配吞吐量](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) ARN 作为模型 ID,而不是此设置。

463 

464若要覆盖您从终端启动的[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md#settings-and-provider),请在设置的 [`env`](https://code.claude.com/docs/zh-CN/settings-reference#env) 块中设置 `ANTHROPIC_BEDROCK_SERVICE_TIER`。只有当启动[监督进程](https://code.claude.com/docs/zh-CN/agent-view.md#the-supervisor-process)的 shell 导出了您 export 的值时,这些会话才会获得该值。

463 465 

464## AWS Guardrails466## AWS Guardrails

465 467 


487 489 

488### 启用 Mantle490### 启用 Mantle

489 491 

490配置了 AWS 凭证后,设置 `CLAUDE_CODE_USE_MANTLE` 以将请求路由到 Mantle 端点:492配置好 AWS 凭据后,设置 `CLAUDE_CODE_USE_MANTLE` 和您的 AWS 区域:

491 493 

492```bash theme={null}494```bash theme={null}

493export CLAUDE_CODE_USE_MANTLE=1495export CLAUDE_CODE_USE_MANTLE=1


587 589 

588* 将模型指定为[推理配置文件](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html) ID590* 将模型指定为[推理配置文件](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html) ID

589 591 

590Claude Code 使用 Amazon Bedrock [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html),不支持 Converse API。

591 

592### 网关或代理后的流式传输错误592### 网关或代理后的流式传输错误

593 593 

594Amazon Bedrock 以二进制事件流格式流式传输 `InvokeModelWithResponseStream` 响应,标头为 `Content-Type: application/vnd.amazon.eventstream`。Claude Code 和 Amazon Bedrock 之间的网关或代理必须转发响应正文及其标头,包括 `Content-Type`,就像 Amazon Bedrock 发送的那样。594Amazon Bedrock 以二进制事件流格式流式传输 `InvokeModelWithResponseStream` 响应,标头为 `Content-Type: application/vnd.amazon.eventstream`。Claude Code 和 Amazon Bedrock 之间的网关或代理必须转发响应正文及其标头,包括 `Content-Type`,就像 Amazon Bedrock 发送的那样。


618* 如果错误命名了 `bedrock-mantle:` 操作,请为您的 IAM 身份授予该操作。618* 如果错误命名了 `bedrock-mantle:` 操作,请为您的 IAM 身份授予该操作。

619* 如果错误没有命名任何操作且您的凭证有效,您的 AWS 账户没有被授予访问您请求的模型的权限。联系您的 AWS 账户团队以请求访问。619* 如果错误没有命名任何操作且您的凭证有效,您的 AWS 账户没有被授予访问您请求的模型的权限。联系您的 AWS 账户团队以请求访问。

620 620 

621命名模型 ID 的 `400` 意味着该模型不在 Mantle 上提供。Mantle 有其自己的模型阵容,与标准 Amazon Bedrock 目录分开,因此推理配置文件 ID(如 `us.anthropic.claude-sonnet-4-6`)将不起作用。使用 Mantle 格式的 ID,或启用[两个端点](#run-mantle-alongside-the-invoke-api),以便 Claude Code 将每个请求路由到模型可用的端点。621指出模型 ID 的 `400` 意味着该模型不在 Mantle 上提供。Mantle 有其自己的模型阵容,与标准 Amazon Bedrock 目录分开,因此推理配置文件 ID(如 `us.anthropic.claude-sonnet-4-6`)不起作用。请使用 Mantle 格式的 ID,或启用[两个端点](#run-mantle-alongside-the-invoke-api),以便 Claude Code 将推理配置文件 ID 发送到 Invoke API。

622 622 

623## 其他资源623## 其他资源

624 624 

Details

155- Integration tests need DATABASE_URL set, see .env.example155- Integration tests need DATABASE_URL set, see .env.example

156```156```

157 157 

158在会话中运行 `/context` 以确认 Claude 已加载该文件。158在会话中运行 [`/context all`](https://code.claude.com/docs/zh-CN/commands#all-commands) 以确认 Claude 已加载该文件。

159 159 

160请注意,类型检查那一行只是命令本身。Claude 需要知道这个命令,以便在工作过程中检查自己的工作。如果您还希望 Claude Code 在 Claude 完成之前*强制*要求类型检查通过,那是 [`Stop` hook](#enforce-the-check-with-a-stop-hook) 的工作。在这个文件中写 `Always typecheck before you finish` 这样的一行,大多数时候有效,但并非每次都有效。160请注意,类型检查那一行只是命令本身。Claude 需要知道这个命令,以便在工作过程中检查自己的工作。如果您还希望 Claude Code 在 Claude 完成之前*强制*要求类型检查通过,那是 [`Stop` hook](#enforce-the-check-with-a-stop-hook) 的工作。在这个文件中写 `Always typecheck before you finish` 这样的一行,大多数时候有效,但并非每次都有效。

161 161 


544在脚本中,您几乎总是需要再加几个标志:544在脚本中,您几乎总是需要再加几个标志:

545 545 

546* [`--bare`](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode) 会跳过 hook、skill、插件、MCP 服务器和 `CLAUDE.md` 文件(包括仓库的和机器的),因此无论在哪里运行,结果都一样。它也从不触及您的 claude.ai 登录:身份验证来自 `ANTHROPIC_API_KEY`、您通过 `--settings` 传入的文件中的 `apiKeyHelper`,或您的云提供商的凭据。546* [`--bare`](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode) 会跳过 hook、skill、插件、MCP 服务器和 `CLAUDE.md` 文件(包括仓库的和机器的),因此无论在哪里运行,结果都一样。它也从不触及您的 claude.ai 登录:身份验证来自 `ANTHROPIC_API_KEY`、您通过 `--settings` 传入的文件中的 `apiKeyHelper`,或您的云提供商的凭据。

547* `--append-system-prompt`、`--mcp-config` 和 `--settings` 会显式传入运行*确实*需要的内容。547* `--append-system-prompt`、`--mcp-config` 和 `--settings` 会显式传入运行*确实*需要的内容。通过 `--settings` 传入的 hook [在 `--bare` 下不会运行](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode),因此对于需要这些 hook 的运行,不要使用 `--bare`。

548* `--allowedTools` 会预先批准其工具,而 [`--permission-mode dontAsk`](https://code.claude.com/docs/zh-CN/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) 会拒绝其他任何原本会触发提示的操作。548* `--allowedTools` 会预先批准其工具,而 [`--permission-mode dontAsk`](https://code.claude.com/docs/zh-CN/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) 会拒绝其他任何原本会触发提示的操作。

549* `--output-format json` 会为您提供一个可供解析的单一结果对象,而搭配 `--verbose` 的 `stream-json` 会在事件发生时流式输出。549* `--output-format json` 会为您提供一个可供解析的单一结果对象,而搭配 `--verbose` 的 `stream-json` 会在事件发生时流式输出。

550 550 

Details

494 494 

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

496* 网关调用区域 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`。

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

498* 如果没有 [`groups` 列表](#send-each-team-to-its-own-upstream),网关允许的每位开发者都可以使用此上游。要限制开发者可以使用的模型,请在 [`managed`](#managed) 策略中设置 `availableModels`。498* 如果没有 [`groups` 列表](#send-each-team-to-its-own-upstream),网关允许的每位开发者都可以使用此上游。要限制开发者可以使用的模型,请在 [`managed`](#managed) 策略中设置 `availableModels`。

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

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


556| `region` | 是 | AWS 区域。网关从它派生端点为 `https://bedrock-mantle.<region>.api.aws/anthropic`。 |556| `region` | 是 | AWS 区域。网关从它派生端点为 `https://bedrock-mantle.<region>.api.aws/anthropic`。 |

557| `models` | 是 | 您的 AWS 帐户在 Mantle 上获授权的模型,按客户端发送的名称命名,如 `claude-haiku-4-5`。只有这些模型会发送到此上游,其他每个模型都跳到下一个上游。 |557| `models` | 是 | 您的 AWS 帐户在 Mantle 上获授权的模型,按客户端发送的名称命名,如 `claude-haiku-4-5`。只有这些模型会发送到此上游,其他每个模型都跳到下一个上游。 |

558| `auth` | 否 | 接受与 [Amazon Bedrock](#amazon-bedrock) 上游的 `auth` 块相同的键,遵循相同的规则。 |558| `auth` | 否 | 接受与 [Amazon Bedrock](#amazon-bedrock) 上游的 `auth` 块相同的键,遵循相同的规则。 |

559| `assume_role` | 否 | 此上游的请求所经由的角色,键与[`bedrock` 上游上的](#bedrock-in-another-aws-account)相同,包括用于[按开发者归属](#per-developer-aws-cost-attribution)的 `session_name`。为该角色授予 Mantle 的 IAM 操作权限。要求网关运行 Claude Code v2.1.318 或更高版本。更早的网关会在启动时退出并报告 `Unrecognized key(s) in object: 'assume_role'`。 |

559| `base_url` | 否 | 覆盖派生的端点。在末尾保留 `/anthropic` 路径。 |560| `base_url` | 否 | 覆盖派生的端点。在末尾保留 `/anthropic` 路径。 |

560 561 

561为上游的 AWS 身份授予 Mantle 自己用于推理和 token 计数的 IAM 操作,[使用 Mantle 端点](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#use-the-mantle-endpoint)中列出了这些操作。562为上游的 AWS 身份授予 Mantle 自己用于推理和 token 计数的 IAM 操作,[使用 Mantle 端点](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#use-the-mantle-endpoint)中列出了这些操作。


565`bedrock` 上游的 `guardrail` 和 `assume_role` 设置不会扩展到 Mantle 提供的请求:566`bedrock` 上游的 `guardrail` 和 `assume_role` 设置不会扩展到 Mantle 提供的请求:

566 567 

567* **`guardrail`**:网关不对发送到 Mantle 的请求应用 [Bedrock 防护栏](#apply-an-amazon-bedrock-guardrail),因此当列出 `mantle` 上游而任何 `bedrock` 上游设置了 `guardrail` 时,网关拒绝启动。568* **`guardrail`**:网关不对发送到 Mantle 的请求应用 [Bedrock 防护栏](#apply-an-amazon-bedrock-guardrail),因此当列出 `mantle` 上游而任何 `bedrock` 上游设置了 `guardrail` 时,网关拒绝启动。

568* **`assume_role`**:`mantle` 上游不接受 [`assume_role`](#bedrock-in-another-aws-account)。Mantle 提供的请求使用 `mantle` 上游自己的 `auth` 凭据发送,且不会[按开发人员归属](#per-developer-aws-cost-attribution)。569* **`assume_role`**:请在 `mantle` 上游本身上设置。没有它时,Mantle 处理的请求会使用 `mantle` 上游自身的 `auth` 凭据发送。

569 570 

570有关 Mantle 自身错误响应的含义,请参阅 [Mantle 端点错误](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#mantle-endpoint-errors)。571有关 Mantle 自身错误响应的含义,请参阅 [Mantle 端点错误](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#mantle-endpoint-errors)。

571 572 

Details

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

425| 开发者登录后,来自该会话的每个请求都失败并返回 `431` 错误 | 每个请求的 `Authorization` 头中的会话令牌列出了开发者的 IdP 组,因此对于属于许多组的开发者,请求头总大小可能超过网关接受的上限 | 请参阅[登录后请求头过大](#request-headers-too-large-after-sign-in),了解适用哪个限制以及需要更改什么 |425| 开发者登录后,来自该会话的每个请求都失败并返回 `431` 错误 | 每个请求的 `Authorization` 头中的会话令牌列出了开发者的 IdP 组,因此对于属于许多组的开发者,请求头总大小可能超过网关接受的上限 | 请参阅[登录后请求头过大](#request-headers-too-large-after-sign-in),了解适用哪个限制以及需要更改什么 |

426| 每个 Amazon Bedrock 请求都返回 502;日志显示 `Could not load credentials from any providers` | 在 EC2 上,IMDSv2 的默认跳数限制为 1,阻止了来自容器内的实例元数据请求。启动和 `/readyz` 仍然通过,因为 AWS SDK 在第一个请求时解析实例凭据,而不是在客户端构造时 | 使用 `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2` 提高跳数限制,或在启动模板中设置它。更改适用于实例上的每个容器。在可用的地方优先使用 ECS 任务角色,它们从 ECS 容器凭据端点读取凭据并完全避免更改,或在专用网关实例上应用更改以限制暴露。 |426| 每个 Amazon Bedrock 请求都返回 502;日志显示 `Could not load credentials from any providers` | 在 EC2 上,IMDSv2 的默认跳数限制为 1,阻止了来自容器内的实例元数据请求。启动和 `/readyz` 仍然通过,因为 AWS SDK 在第一个请求时解析实例凭据,而不是在客户端构造时 | 使用 `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2` 提高跳数限制,或在启动模板中设置它。更改适用于实例上的每个容器。在可用的地方优先使用 ECS 任务角色,它们从 ECS 容器凭据端点读取凭据并完全避免更改,或在专用网关实例上应用更改以限制暴露。 |

427| 日志:一条包含 `upstream <name>: Google issued an access token that expires in <N>s` 的警告,出现在 Google 凭据文件类型为 `external_account` 的上游上 | 请求会一直成功,直到该访问令牌过期;之后除非 `credential_source` 指向的令牌已提前续订,否则请求会失败。 | 如果由某个进程将该令牌写入文件,请让它在旧令牌过期前五分钟以上写入新令牌 |

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

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

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| 在 `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)。 |

Details

131| `session-env/` | 每个会话的环境元数据 |131| `session-env/` | 每个会话的环境元数据 |

132| `tasks/` | 由 task 工具写入的任务列表,每个列表一个目录 |132| `tasks/` | 由 task 工具写入的任务列表,每个列表一个目录 |

133| `shell-snapshots/` | 在启动时捕获的别名、函数和 shell 选项,由 [Bash 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#bash-tool-behavior) 应用于每个命令。在正常退出时删除。扫描清理任何在崩溃后留下的内容。 |133| `shell-snapshots/` | 在启动时捕获的别名、函数和 shell 选项,由 [Bash 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#bash-tool-behavior) 应用于每个命令。在正常退出时删除。扫描清理任何在崩溃后留下的内容。 |

134| `backups/` | `~/.claude.json` 的早期版本,在 Claude Code 重写文件时复制。Claude Code 保留五个最新的版本,加上它无法解析的任何版本的副本。 |134| `backups/` | `~/.claude.json` 的早期版本,在 Claude Code 重写文件时复制。Claude Code 保留五个最新的版本,加上它无法解析的任何版本的副本。超过年龄截止值后,保存您配置的最后一个副本也会被删除。如果当前文件可以解析、保存了您的配置且小于 8 MiB,则会为其留下一个新副本。 |

135| `feedback-bundles/` | 由 `/feedback` 在第三方提供商上或当未配置 Anthropic 凭证时写入的编辑后的记录存档,用于发送到您的 Anthropic 账户团队 |135| `feedback-bundles/` | 由 `/feedback` 在第三方提供商上或当未配置 Anthropic 凭证时写入的编辑后的记录存档,用于发送到您的 Anthropic 账户团队 |

136| `feedback/drafts/` | 排队的 [Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),等待您在 `/feedback` 中审查。在 `cleanupPeriodDays` 或 30 天后扫除,以较短者为准。当队列达到其 10 个草稿的限制时,Claude Code 删除最旧的草稿以腾出空间。 |136| `feedback/drafts/` | 排队的 [Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),等待您在 `/feedback` 中审查。在 `cleanupPeriodDays` 或 30 天后扫除,以较短者为准。当队列达到其 10 个草稿的限制时,Claude Code 删除最旧的草稿以腾出空间。 |

137| `usage-data/` | `report.html` 和由 [`/insights`](https://code.claude.com/docs/zh-CN/costs#analyze-your-usage-patterns) 写入的时间戳报告副本,加上用于构建它们的缓存的每个会话分析数据 |137| `usage-data/` | `report.html` 和由 [`/insights`](https://code.claude.com/docs/zh-CN/costs#analyze-your-usage-patterns) 写入的时间戳报告副本,加上用于构建它们的缓存的每个会话分析数据 |


288| `~/.claude/tasks/` | 您的[任务列表](https://code.claude.com/docs/zh-CN/interactive-mode.md#task-list),包括仍在使用中的列表 |288| `~/.claude/tasks/` | 您的[任务列表](https://code.claude.com/docs/zh-CN/interactive-mode.md#task-list),包括仍在使用中的列表 |

289| `~/.claude/skills/.trash/`、`~/.claude/plugins/.trash/` | 恢复 [synced skills](https://code.claude.com/docs/zh-CN/skills.md#how-synced-skills-behave) 和 [synced plugins](https://code.claude.com/docs/zh-CN/plugins/loading.md#synced-plugins) 的机会,Claude Code 已删除 |289| `~/.claude/skills/.trash/`、`~/.claude/plugins/.trash/` | 恢复 [synced skills](https://code.claude.com/docs/zh-CN/skills.md#how-synced-skills-behave) 和 [synced plugins](https://code.claude.com/docs/zh-CN/plugins/loading.md#synced-plugins) 的机会,Claude Code 已删除 |

290| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`、`~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Claude Code 删除的 plugin 安装记录副本或无法读取的文件副本。没有任何内容读取它们 |290| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`、`~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Claude Code 删除的 plugin 安装记录副本或无法读取的文件副本。没有任何内容读取它们 |

291| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/session-env/`、`~/.claude/shell-snapshots/`、`~/.claude/backups/` | 没有面向用户的内容 |291| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/session-env/`、`~/.claude/shell-snapshots/` | 没有面向用户的内容 |

292| `~/.claude/backups/` | 可用于[恢复 `~/.claude.json`](https://code.claude.com/docs/zh-CN/errors#configuration-error-in-claude-json) 的早期副本 |

292| `~/.claude/todos/`、`~/.claude/statsig/`、`~/.claude/logs/`、`~/.claude/image-cache/` | 无。旧版目录不由当前版本写入。 |293| `~/.claude/todos/`、`~/.claude/statsig/`、`~/.claude/logs/`、`~/.claude/image-cache/` | 无。旧版目录不由当前版本写入。 |

293 294 

294不要删除 `~/.claude.json`、`~/.claude/settings.json` 或 `~/.claude/plugins/`:这些保存您的账户详细信息、偏好和已安装的插件。295不要删除 `~/.claude.json`、`~/.claude/settings.json` 或 `~/.claude/plugins/`:这些保存您的账户详细信息、偏好和已安装的插件。

Details

480* **"Unable to access your repository"**,由线程报告,当其克隆失败时:GitHub 拒绝了克隆、在项目拥有的名称下找不到代码库,或线程被要求启动的分支不存在。480* **"Unable to access your repository"**,由线程报告,当其克隆失败时:GitHub 拒绝了克隆、在项目拥有的名称下找不到代码库,或线程被要求启动的分支不存在。

481* **"Claude can't access"** 一个代码库,在您在 **New project** 对话框或 **Project settings** 中保存代码库时显示。消息继续带有安装链接和重新连接链接。如果 Claude GitHub App 不在该代码库上,使用安装链接,如果它在,使用重新连接链接,因为 GitHub App 可以在 GitHub 上安装而不链接到您连接到 Claude 的账户。如果消息说 GitHub App 已暂停或不包括此代码库,请按照其链接到 GitHub 修复。481* **"Claude can't access"** 一个代码库,在您在 **New project** 对话框或 **Project settings** 中保存代码库时显示。消息继续带有安装链接和重新连接链接。如果 Claude GitHub App 不在该代码库上,使用安装链接,如果它在,使用重新连接链接,因为 GitHub App 可以在 GitHub 上安装而不链接到您连接到 Claude 的账户。如果消息说 GitHub App 已暂停或不包括此代码库,请按照其链接到 GitHub 修复。

482 482 

483要修复任何一个,点击消息提供的按钮,例如 **Install GitHub App** 或 **Select repositories on GitHub**,然后 **Check again**。当受阻的原因在 GitHub 组织一侧时,例如尚未批准应用的所有者或排除 Claude 的 IP 允许列表,消息改为显示 **See how to fix** 链接。如果没有按钮,请按照[设置 GitHub 访问](#set-up-github-access),然后发送另一条消息重试。483要修复"Couldn't start the session"或"Unable to access your repository"的 GitHub 访问问题,请点击消息提供的按钮,例如 **Install on GitHub** 或 **Select repositories**。如果没有按钮,请按照[设置 GitHub 访问](#set-up-github-access)操作。修复后,在项目对话中要求 Claude 为相同的工作启动一个新线程。

484 484 

485### 线程达到使用限制485### 线程达到使用限制

486 486 


505 505 

506| 消息 | 要做什么 |506| 消息 | 要做什么 |

507| :- | :- |507| :- | :- |

508| "Unable to connect to repository",带有"Claude couldn't reach GitHub to fetch your repository" | 等一会儿,然后发送另一条消息重试 |508| "Unable to connect to repository",带有"Claude couldn't reach GitHub to fetch your repository" | 等一会儿,然后在项目对话中要求 Claude 为相同的工作启动一个新线程 |

509| "Unable to connect to repository",带有"Claude couldn't access your repository or environment" | 您的 GitHub 账户需要对代码库的推送访问,环境必须仍然存在。在 **Project settings > Environment** 中检查两者,然后重试 |509| "Unable to connect to repository",带有"Claude couldn't access your repository or environment" | 您的 GitHub 账户需要对代码库的推送访问,环境必须仍然存在。在 **Project settings > Environment** 中检查两者,然后重试 |

510| "Couldn't show the setup proposal" | 您打开的应用比 Claude 发送的 **Setup recommendations** 更旧。刷新页面或重启桌面应用,或要求 Claude 再次提议设置 |510| "Couldn't show the setup proposal" | 您打开的应用比 Claude 发送的 **Setup recommendations** 更旧。刷新页面或重启桌面应用,或要求 Claude 再次提议设置 |

511| "The project's environment was removed" | 在 **Project settings > Environment** 中选择不同的环境;更改适用于新线程 |511| "The project's environment was removed" | 在 **Project settings > Environment** 中选择不同的环境;更改适用于新线程 |

Details

14 14 

15`/context` 命令会显示当前会话中占用上下文窗口的所有内容,并按类别细分:系统提示词、系统工具、MCP 工具、自定义子代理(及其各自的加载来源)、记忆文件、skill 以及对话消息。请首先运行此命令,以确认您的 `CLAUDE.md`、规则或 skill 描述是否已加载。`/context` 中的 skill 部分还包括 [随附 skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills),而 `/skills` 不会列出这些内容。15`/context` 命令会显示当前会话中占用上下文窗口的所有内容,并按类别细分:系统提示词、系统工具、MCP 工具、自定义子代理(及其各自的加载来源)、记忆文件、skill 以及对话消息。请首先运行此命令,以确认您的 `CLAUDE.md`、规则或 skill 描述是否已加载。`/context` 中的 skill 部分还包括 [随附 skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills),而 `/skills` 不会列出这些内容。

16 16 

17在[全屏模式](https://code.claude.com/docs/zh-CN/fullscreen.md)下,`/context` 会折叠逐项细分,因此请运行 `/context all` 将其展开。

18 

17如需查看特定类别的详细信息,请继续使用相应的专用命令:19如需查看特定类别的详细信息,请继续使用相应的专用命令:

18 20 

19| 命令 | 显示内容 |21| 命令 | 显示内容 |

desktop.md +71 −14

Details

84 84 

85权限模式控制 Claude 在会话期间的自主程度:它是否在编辑文件、运行命令或两者之前询问。您可以随时使用输入框下方一行中的模式选择器切换权限模式。要自己批准每项更改,请切换到 Manual。85权限模式控制 Claude 在会话期间的自主程度:它是否在编辑文件、运行命令或两者之前询问。您可以随时使用输入框下方一行中的模式选择器切换权限模式。要自己批准每项更改,请切换到 Manual。

86 86 

87要为新的本地会话设置默认模式,请将 `permissions.defaultMode` 添加到您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)。桌面应用读取与 CLI 相同的设置文件。您在选择器中选择的模式会被记住(按文件夹),并对该文件夹优先于 `defaultMode`,除了 Plan,它仅适用于当前会话。87要为新的本地会话设置默认权限模式,请将 `permissions.defaultMode` 添加到您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)。您在本地会话中选择的模式会按文件夹被记住,并优先于项目 `.claude/` 设置中的 `defaultMode`。新的本地会话仍可能以 `~/.claude/settings.json` 或托管设置中的 `defaultMode` 启动,因此请在发送第一条消息之前检查选择器。如果您选择 Plan,它仅适用于当前会话。

88 88 

89| 模式 | 设置键 | 行为 |89| 模式 | 设置键 | 行为 |

90| - | - | - |90| - | - | - |


1289 1289 

1290> [!WARNING]1290> [!WARNING]

1291>1291>

1292> 如果您使用 Claude 账户登录 Desktop,请不要指望任务能通宵运行。Desktop 仅在自身运行且保持连接时才会为任务续期该登录,因此在您断开连接后,任务的登录可能会过期,随后任务停止。断开连接时剩余的时间不定,可能只有几分钟。1292> 如果您使用 Claude 账户登录 Desktop,请不要指望任务能通宵运行。只有在 Desktop 运行、已连接且已登录时,Desktop 才会为任务续期该登录,因此在您断开连接后,任务的登录可能会过期,任务随之停止。断开连接时剩余的时间不尽相同,可能只有几分钟。

1293>1293>

1294> 到目前为止完成的工作会保留在远程计算机上,您回来后可以发送一条消息继续。1294> 到目前为止完成的工作会保留在远程计算机上,您回来后可以发送一条消息继续。

1295>1295>

1296> 如果任务必须通宵运行:1296> 如果任务必须通宵运行:

1297>1297>

1298> * [保持您的计算机唤醒](https://code.claude.com/docs/zh-CN/desktop-scheduled-tasks.md#how-scheduled-tasks-run)并在线,保持笔记本盖打开并让 Desktop 运行1298> * [让您的计算机保持唤醒](https://code.claude.com/docs/zh-CN/desktop-scheduled-tasks.md#how-scheduled-tasks-run)并在线,保持笔记本盖子打开,并让 Desktop 保持运行和登录状态

1299> * 对远程计算机以及途中的任何跳板机使用无需提示即可工作的登录方式,例如由您的 SSH agent 持有的密钥。这样,Desktop 可以在连接中断后自行重新连接。1299> * 对远程计算机以及途中的任何跳板机使用无需提示即可工作的登录方式,例如由您的 SSH agent 持有的密钥。这样,Desktop 可以在连接中断后自行重新连接。

1300>1300>

1301> 对于必须在您的计算机睡眠或关机时运行的任务,请改为启动[云端会话](#run-long-running-tasks-in-the-cloud)。1301> 对于必须在您的计算机睡眠或关机时运行的任务,请改为启动[云端会话](#run-long-running-tasks-in-the-cloud)。


1303* **睡眠或网络中断后**:如果进程[仍在运行](#limits-while-desktop-is-disconnected)且 Desktop 可以无需提示登录,您会重新获得正在运行的任务。如果无法登录,请[发送消息](#reconnect-after-sleep-or-a-network-loss)。1303* **睡眠或网络中断后**:如果进程[仍在运行](#limits-while-desktop-is-disconnected)且 Desktop 可以无需提示登录,您会重新获得正在运行的任务。如果无法登录,请[发送消息](#reconnect-after-sleep-or-a-network-loss)。

1304* **退出之后**:任务会继续运行,但除非 Desktop 能重新接入其进程,否则当会话再次打开时您会失去该任务。退出之前,请查看 [Desktop 何时可以重新接入](#reopen-a-session-after-you-quit-desktop)。如果您失去了任务,请发送消息以继续。1304* **退出之后**:任务会继续运行,但除非 Desktop 能重新接入其进程,否则当会话再次打开时您会失去该任务。退出之前,请查看 [Desktop 何时可以重新接入](#reopen-a-session-after-you-quit-desktop)。如果您失去了任务,请发送消息以继续。

1305 1305 

1306当您回来而任务尚未完成时,请检查是否有 Desktop 无法重新连接的提示、身份验证错误或等待中的请求:1306当您回来时,如果任务尚未完成,请检查是否出现了 Desktop 的登录页面、Desktop 无法重新连接的提示、身份验证错误或正在等待的请求:

1307 1307 

1308* **登录页面**:登录。如果任务已停止,请发送一条消息以继续。在 Enterprise 套餐中,无论您的活跃程度如何,您的组织都可以[在您登录一定天数后将您注销](https://support.claude.com/en/articles/13163631-configuring-session-security-settings)。使用 Claude 账户时,Desktop 在您注销期间不会为任务续期登录,因此任务可能会停止。

1308* **Desktop 无法重新连接**:会话会说明原因,也可能会有通知说明。Desktop 可能[需要您登录](#reconnect-after-sleep-or-a-network-loss)。1309* **Desktop 无法重新连接**:会话会说明原因,也可能会有通知说明。Desktop 可能[需要您登录](#reconnect-after-sleep-or-a-network-loss)。

1309* **身份验证错误**:[登录令牌或凭据](#limits-while-desktop-is-disconnected)可能已过期。使用 Claude 账户时,请发送消息以继续。使用第三方提供商时,请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1310* **身份验证错误**:[登录令牌或凭据](#limits-while-desktop-is-disconnected)可能已过期。使用 Claude 账户时,请发送消息以继续。使用第三方提供商时,请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。

1310* **等待中的请求**:[回应该请求](#handle-requests-that-arrive-while-you-are-away)1311* **等待中的请求**:[回应该请求](#handle-requests-that-arrive-while-you-are-away)


1602 1603 

1603> [!NOTE]1604> [!NOTE]

1604>1605>

1605> 通过命令创建的连接需要在 macOS 或 Linux 上使用 Claude Desktop v3.6556.0 或更高版本,并使用 Claude 账户登录。管理员可以[将命令分发给团队](#distribute-commands-to-your-team)。1606> 通过命令创建的连接需要在 macOS 或 Linux 上使用 Claude Desktop v3.6556.0 或更高版本,或在 Windows 上使用 v4.16336.0 或更高版本,并使用 Claude 账户登录。在 Windows 上,Desktop 还必须[通过 OpenSSH 客户端连接](#use-your-ssh-configuration)。管理员可以[向团队分发命令](#distribute-commands-to-your-team)。

1606 1607 

1607Desktop 仅在您创建连接或[创建另一台机器](#create-another-machine)时运行该命令,而不是每次连接时都运行。每个条目对应一个连接,指向 Desktop 最近一次从该条目的命令中保存的主机。1608Desktop 仅在您创建连接或[创建另一台机器](#create-another-machine)时运行该命令,而不是每次连接时都运行。每个条目对应一个连接,指向 Desktop 最近一次从该条目的命令中保存的主机。

1608 1609 


1632}1633}

1633```1634```

1634 1635 

1636在 Windows 上,诸如 `acme-dev` 这样的纯名称不起作用,因此请[以程序的完整路径开头编写命令](#write-the-command-on-windows)。

1637 

1635每个条目接受以下字段,其中 `id`、`name` 和 `command` 是必需的:1638每个条目接受以下字段,其中 `id`、`name` 和 `command` 是必需的:

1636 1639 

1637| 字段 | 值 |1640| 字段 | 值 |


1646 1649 

1647##### 编写命令1650##### 编写命令

1648 1651 

1649Desktop 直接启动程序,不经过 shell,也没有终端:1652在 Windows 上,请从[在 Windows 上编写命令](#write-the-command-on-windows)开始,其中说明了以下哪些规则适用于 Windows。

1653 

1654在 macOS 和 Linux 上,Desktop 直接启动程序,不使用 shell,也不使用终端:

1650 1655 

1651* **程序**:写出其名称,或从 `/` 开始的完整路径,不含空格。对于裸名称,Desktop 会在您的登录 shell 导出的 `PATH` 中查找。相对路径(例如 `./acme-dev`)、以 `~` 开头的路径以及 shell 别名和函数都不起作用。1656* **程序**:写出其名称,或从 `/` 开始的完整路径。Desktop 会在您的登录 shell 导出的 `PATH` 中查找纯名称。诸如 `./acme-dev` 之类的相对路径、以 `~` 开头的路径以及 shell 别名和函数都不起作用。

1652* **参数**:用空格分隔普通参数。命令只能包含空格、ASCII 字母、数字以及字符 `+,-./:=@_~`,并且任何单词都不能以 `~` 开头。1657* **路径中的空格**:将程序的完整路径放在单引号中,例如 `'/Users/you/My Tools/make-devbox' create`。引号(单引号或双引号)需要 Claude Desktop v4.16336.0 或更高版本,并且只能用于包裹程序的路径。

1653* **脚本**:如果命令需要其他内容,例如引号、管道、变量或包含 `?` 或 `&` 的 URL,请将其放入脚本中。使脚本可执行,以 `#!` 行开头,并将 `command` 设置为其完整路径,例如 `/Users/you/bin/make-devbox`。在 macOS 上,请勿将脚本放在 Documents、Desktop 和 Downloads 文件夹中,macOS 可能会阻止其运行。1658* **参数**:用空格分隔参数。在引号之外,命令只能包含空格、ASCII 字母、数字以及字符 `+,-./:=@_~`,并且任何单词都不能以 `~` 开头。带引号的路径还可以包含一些其他字符,例如 `(`、`)` 和 `&`。

1659* **脚本**:如果命令需要其他任何内容,例如带引号的参数、管道、变量,或包含 `?` 或 `&` 的 URL,请将其放入脚本中。使脚本可执行,以 `#!` 行开头,并将 `command` 设置为其完整路径,例如 `/Users/you/bin/make-devbox`。在 macOS 上,请勿将脚本放在“文稿”、“桌面”和“下载”文件夹中,macOS 可能会阻止它在这些位置运行。

1654* **输入**:程序没有输入,也没有终端,因此无法在那里提示您。如果您的工具通过浏览器或提示让您登录,请先在终端中登录,并在每次登录失效时重新登录。1660* **输入**:程序没有输入,也没有终端,因此无法在那里提示您。如果您的工具通过浏览器或提示让您登录,请先在终端中登录,并在每次登录失效时重新登录。

1655* **环境**:程序在您的主目录中运行,使用您的登录 shell 导出的变量。Desktop 在启动时读取这些变量,与[`ProxyCommand`](#use-variables-from-your-shell-in-a-proxycommand) 的处理方式相同,因此更改变量后请退出并重新打开 Desktop。1661* **环境**:程序在您的主目录中运行,使用您的登录 shell 导出的变量。Desktop 在启动时读取这些变量,与[`ProxyCommand`](#use-variables-from-your-shell-in-a-proxycommand) 的处理方式相同,因此更改变量后请退出并重新打开 Desktop。

1656* **时间限制**:程序运行超过 10 分钟仍未结束时,Desktop 会将其停止。Desktop 的进度消息不会显示程序的输出。要更早停止程序,请选择该消息旁边的 **Cancel**。1662* **时间限制**:程序运行超过 10 分钟仍未结束时,Desktop 会将其停止。Desktop 的进度消息不会显示程序的输出。要更早停止程序,请选择该消息旁边的 **Cancel**。


1680 1686 

1681如果命令失败,Desktop 消息中的 **View details** 会显示命令写入标准错误的最后一行(如果有)。1687如果命令失败,Desktop 消息中的 **View details** 会显示命令写入标准错误的最后一行(如果有)。

1682 1688 

1689##### 在 Windows 上编写命令

1690 

1691在 Windows 上,`command` 必须以 `.exe`、`.cmd` 或 `.bat` 文件的完整路径开头,从驱动器号开始。Desktop 不会在您的 `PATH` 中查找纯名称,因此 `command` 为 `acme-dev create` 的条目会显示为[灰色](#if-a-command-is-missing-or-gray)。

1692 

1693`%USERPROFILE%\.claude\settings.json` 中的以下条目使用参数 `create` 运行 `C:\Program Files\Acme\acme-dev.exe`。在 JSON 中,每个反斜杠都要写两次,或改用 `/`。使用单引号是因为路径中有空格:

1694 

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

1696{

1697 "sshHostCommands": [

1698 {

1699 "id": "devbox",

1700 "name": "Dev box",

1701 "command": "'C:\\Program Files\\Acme\\acme-dev.exe' create"

1702 }

1703 ]

1704}

1705```

1706 

1707关于路径中的空格、输入、时间限制以及程序打印的内容,请遵循[编写命令](#write-the-command)中的规则。对于其中的其他规则,请改为遵循以下规则:

1708 

1709* **程序**:不要使用诸如 `\\server\share` 之类的网络路径、诸如 `%USERPROFILE%` 之类的变量,或 ASCII 之外的字母。路径中包含其中任何一种时,条目会显示为灰色。如果您的用户文件夹名称中包含此类字母,请将程序放在该文件夹之外。

1710* **参数**:遵循“编写命令”中的“参数”规则。命令还可以包含 `\`,但任何单词都不能以它结尾。

1711* **脚本**:使用 `.cmd` 或 `.bat` 文件,Desktop 会通过 `cmd.exe` 运行它。即使在引号中,文件路径也不能包含 `&`、`^` 或 `;`。在您编写的文件中,请使用 `%*` 读取参数,因为 `%1` 到 `%9` 会在 `,` 和 `=` 处拆分参数。

1712* **环境**:程序获得的是 Desktop 应用的环境变量,而不是 shell 配置文件中的环境变量。更改变量后,请退出并重新打开 Desktop。

1713* **测试**:要查看 Desktop 读取的输出,请在命令提示符中运行命令。将包含空格的路径放在双引号中,并使用 `NUL` 表示无输入,例如 `"C:\Program Files\Acme\acme-dev.exe" create < NUL > host.txt`。该文件必须只包含主机。测试也会创建一台机器,因此请在之后使用您的工具将其删除。

1714 

1715##### 包装会打印其他行的 Windows 工具

1716 

1717如果您的工具在主机之前打印其他行(例如进度消息),请用一个只打印主机的批处理文件将其包装起来。以下文件打印您的工具输出的最后一行,如果您的工具失败,则以您的工具的代码退出:

1718 

1719```batch make-devbox.cmd theme={null}

1720@echo off

1721setlocal

1722set "host="

1723set "out=%TEMP%\acme-dev-%RANDOM%.txt"

1724call "C:\Program Files\Acme\acme-dev.exe" create > "%out%"

1725set "code=%ERRORLEVEL%"

1726for /f "usebackq delims=" %%L in ("%out%") do set "host=%%L"

1727del "%out%"

1728if not "%code%"=="0" exit /b %code%

1729setlocal EnableDelayedExpansion

1730echo(!host!

1731```

1732 

1733将 `command` 设置为该文件的完整路径,例如在 JSON 中写为 `C:\\tools\\make-devbox.cmd`。请保持其最后两行不变,因为它们打印主机而不会将其作为命令运行。

1734 

1683##### 连接到新主机1735##### 连接到新主机

1684 1736 

1685首次连接到每个新主机时,需要回答两个问题:1737首次连接到每个新主机时,需要回答两个问题:

1686 1738 

1687* **主机密钥**:在 OpenSSH 的默认主机密钥检查下,检查密钥的指纹,然后选择是否连接。要跳过此问题,请让您的命令在打印主机之前,使用您的工具在创建机器时获得的密钥,将其添加到 `~/.ssh/known_hosts`。对于 22 以外的端口,该行以 `[host]:port` 开头。如果您的工具会重复使用主机名,也请删除旧密钥所在的行。1739* **主机密钥**:在 OpenSSH 默认的主机密钥检查下,请检查密钥的指纹,然后选择是否连接。要跳过此问题,请让您的命令在打印主机之前将密钥添加到 `~/.ssh/known_hosts`(在 Windows 上为 `%USERPROFILE%\.ssh\known_hosts`):

1740 * 使用您的工具在创建机器时获知的密钥

1741 * 对于 22 以外的端口,以 `[host]:port` 作为该行的开头

1742 * 如果您的工具会重用主机名,也请移除旧密钥所在的行

1688* **文件夹**:选择是否信任您在那里打开的文件夹1743* **文件夹**:选择是否信任您在那里打开的文件夹

1689 1744 

1690请为这些主机保持启用主机密钥检查,并为它们保留 `known_hosts` 文件。如果 `StrictHostKeyChecking` 为 `no` 或 `accept-new`,且 `UserKnownHostsFile` 也为 `/dev/null` 或 `none`,则不会记录任何密钥。之后当您的工具重复使用某个名称时,您可能会在没有任何警告的情况下连接到另一台机器。1745请为这些主机保持启用主机密钥检查,并为它们保留 `known_hosts` 文件。如果 `StrictHostKeyChecking` 为 `no` 或 `accept-new`,且 `UserKnownHostsFile` 也为 `/dev/null` 或 `none`,则不会记录任何密钥。之后当您的工具重复使用某个名称时,您可能会在没有任何警告的情况下连接到另一台机器。


1746 1801 

1747* **键放在哪里**:如果您针对 Claude Code 的 MDM 策略已经设置了某个[策略键](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources),请将其放在那里。否则,请将其放在托管设置文件中。默认情况下,此类策略的优先级高于该文件,此时 Desktop 会忽略文件中的条目。即使在适用[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)的计算机上,也请在计算机上设置它:Desktop 会忽略那里以及项目和本地设置中的该键。1802* **键放在哪里**:如果您针对 Claude Code 的 MDM 策略已经设置了某个[策略键](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources),请将其放在那里。否则,请将其放在托管设置文件中。默认情况下,此类策略的优先级高于该文件,此时 Desktop 会忽略文件中的条目。即使在适用[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)的计算机上,也请在计算机上设置它:Desktop 会忽略那里以及项目和本地设置中的该键。

1748* **`id`**:如果用户的 `sshHostCommands` 条目使用了您的 `id`,则只有您的条目生效。如果其他任何 SSH 连接使用了它(例如用户 `sshConfigs` 中的连接),您的条目会显示为灰色。请选择用户不太可能使用的 `id`。1803* **`id`**:如果用户的 `sshHostCommands` 条目使用了您的 `id`,则只有您的条目生效。如果其他任何 SSH 连接使用了它(例如用户 `sshConfigs` 中的连接),您的条目会显示为灰色。请选择用户不太可能使用的 `id`。

1749* **程序**:请提供其完整路径,因为 Desktop 会在每个用户自己的 `PATH` 中查找裸名称。程序以该用户身份运行,使用其登录 shell 导出的变量。1804* **程序**:提供其完整路径,因为在 macOS 和 Linux 上,Desktop 会在每个用户的 `PATH` 中查找纯名称,而在 Windows 上,使用纯名称的条目会显示为灰色。程序以该用户身份运行,并使用[该用户的变量](#write-the-command)。

1805* **每个平台**:为 Windows 计算机部署一个条目,为 macOS 和 Linux 计算机部署另一个条目。使用 [Windows 路径](#write-the-command-on-windows)的条目在 macOS 和 Linux 上会显示为灰色,使用 macOS 或 Linux 路径的条目在 Windows 上会显示为灰色。

1750* **用户自己的条目**:Desktop 将用户的条目视同 [hook](https://code.claude.com/docs/zh-CN/hooks.md),因为两者都会在计算机上运行程序。要仅允许您的条目,请将 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization) 设置为 `["hooks"]`,或将 `"hooks"` 添加到其列表中。这样也会阻止来自用户、项目和本地设置的 Claude Code hook,且无法保留它们。如果您改为将该键或 [`allowManagedHooksOnly`](https://code.claude.com/docs/zh-CN/settings-reference#allowmanagedhooksonly) 设置为 `true`,则会阻止更多内容,具体见每个键的条目说明。1806* **用户自己的条目**:Desktop 将用户的条目视同 [hook](https://code.claude.com/docs/zh-CN/hooks.md),因为两者都会在计算机上运行程序。要仅允许您的条目,请将 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization) 设置为 `["hooks"]`,或将 `"hooks"` 添加到其列表中。这样也会阻止来自用户、项目和本地设置的 Claude Code hook,且无法保留它们。如果您改为将该键或 [`allowManagedHooksOnly`](https://code.claude.com/docs/zh-CN/settings-reference#allowmanagedhooksonly) 设置为 `true`,则会阻止更多内容,具体见每个键的条目说明。

1751* **所有条目**:要同时关闭您的条目,请在托管设置中设置 [`disableAllHooks`](https://code.claude.com/docs/zh-CN/settings-reference#disableallhooks)。如果您设置了 [`disableDesktopLocalSessions`](https://code.claude.com/docs/zh-CN/settings-reference#disabledesktoplocalsessions),或设置了不允许任何主机的 `sshHostAllowlist`,选择器将不会列出任何 **Create** 或 **Create another** 项。1807* **所有条目**:要同时关闭您的条目,请在托管设置中设置 [`disableAllHooks`](https://code.claude.com/docs/zh-CN/settings-reference#disableallhooks)。如果您设置了 [`disableDesktopLocalSessions`](https://code.claude.com/docs/zh-CN/settings-reference#disabledesktoplocalsessions),或设置了不允许任何主机的 `sshHostAllowlist`,选择器将不会列出任何 **Create** 或 **Create another** 项。

1752* **锁定在哪里生效**:对于这些条目,Desktop 会从服务器托管设置以及计算机自身的文件或策略中读取 `allowManagedHooksOnly`、`strictPluginOnlyCustomization` 和 `disableAllHooks`,并应用更严格的结果。在 Desktop 检查 claude.ai 上的服务器托管设置之前,所有条目都保持灰色,即使您的组织没有任何服务器托管设置也是如此。1808* **锁定在哪里生效**:对于这些条目,Desktop 会从服务器托管设置以及计算机自身的文件或策略中读取 `allowManagedHooksOnly`、`strictPluginOnlyCustomization` 和 `disableAllHooks`,并应用更严格的结果。在 Desktop 检查 claude.ai 上的服务器托管设置之前,所有条目都保持灰色,即使您的组织没有任何服务器托管设置也是如此。


1759在以下情况下,环境选择器不会列出任何 **Create** 或 **Create another** 项:1815在以下情况下,环境选择器不会列出任何 **Create** 或 **Create another** 项:

1760 1816 

1761* **文件**:`~/.claude/settings.json` 包含[无效的 JSON 或被 schema 拒绝的值](https://code.claude.com/docs/zh-CN/settings.md#fix-a-broken-settings-file)、您拼错了键名,或者您将其放在了项目的设置中。请修复该文件。1817* **文件**:`~/.claude/settings.json` 包含[无效的 JSON 或被 schema 拒绝的值](https://code.claude.com/docs/zh-CN/settings.md#fix-a-broken-settings-file)、您拼错了键名,或者您将其放在了项目的设置中。请修复该文件。

1762* **平台和账户**:您使用的是 Windows,或者使用的是[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)而非 Claude 账户。请自行将每个主机添加为 [SSH 连接](#ssh-sessions)。1818* **账户**:您使用的是[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)而不是 Claude 账户。请自行将每个主机添加为 [SSH 连接](#ssh-sessions)。

1819* **Windows**:Desktop 版本早于 v4.16336.0,或未通过 OpenSSH 客户端连接。请更新 Desktop 并满足[使用 OpenSSH 客户端的要求](#use-your-ssh-configuration),然后退出并重新打开 Desktop。

1763* **您组织的设置**:您的管理员关闭了本地会话或 SSH 会话。请询问他们您是否可以使用命令。1820* **您组织的设置**:您的管理员关闭了本地会话或 SSH 会话。请询问他们您是否可以使用命令。

1764* **没有 `ssh` 程序**:Desktop 无法在您的计算机上启动 OpenSSH 客户端。请安装它,或请您的管理员允许它,然后重启 Desktop。1821* **没有 `ssh` 程序**:Desktop 无法在您的计算机上启动 OpenSSH 客户端。请安装它,或请您的管理员允许它,然后重启 Desktop。

1765 1822 

1766无法选择的条目显示为灰色。将鼠标悬停其上即可查看原因:1823无法选择的条目显示为灰色。将鼠标悬停其上即可查看原因:

1767 1824 

1768* **条目中有错误**:修复消息中指出的字段或命令。如果 `id` 已被使用,请为该条目指定另一个。1825* **条目中有错误**:修正消息中指出的字段或命令。如果 `id` 已被使用,请为条目指定另一个。在 Windows 上,命令必须[以程序的完整路径开头](#write-the-command-on-windows)。

1769* **设置文件损坏**:当您自己的设置文件损坏时,管理员的条目可能显示为灰色,并附带指出该文件的消息。[修复该文件](https://code.claude.com/docs/zh-CN/settings.md#fix-a-broken-settings-file)。1826* **设置文件损坏**:当您自己的设置文件损坏时,管理员的条目可能显示为灰色,并附带指出该文件的消息。[修复该文件](https://code.claude.com/docs/zh-CN/settings.md#fix-a-broken-settings-file)。

1770* **新主机**:Desktop 保存主机后的一分钟内,[**Create another**](#create-another-machine) 显示为灰色。请在一分钟后再选择它。在 Claude Desktop v4.4212.0 之前,**Replace Dev box's host** 会显示为灰色 10 分钟。1827* **新主机**:Desktop 保存主机后的一分钟内,[**Create another**](#create-another-machine) 显示为灰色。请在一分钟后再选择它。在 Claude Desktop v4.4212.0 之前,**Replace Dev box's host** 会显示为灰色 10 分钟。

1771* **hook 已关闭或受限**:您自己的条目只在您自己的 hook 可以运行的地方生效。请从您的设置中移除 `disableAllHooks`,或询问您的管理员。1828* **hook 已关闭或受限**:您自己的条目只在您自己的 hook 可以运行的地方生效。请从您的设置中移除 `disableAllHooks`,或询问您的管理员。


1940| `disableMobileSimulatorTools` | 设置为 `true` 以阻止 Claude 在 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md#turn-off-simulator-access)中控制和捕获设备的工具。该窗格仍可用于用户自己的点击;仅删除 Claude 的访问权限。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |1997| `disableMobileSimulatorTools` | 设置为 `true` 以阻止 Claude 在 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md#turn-off-simulator-access)中控制和捕获设备的工具。该窗格仍可用于用户自己的点击;仅删除 Claude 的访问权限。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |

1941| `disableBrowserExternalNavigation` | 设置为 `true` 以完全关闭[浏览器窗格](#browse-external-sites)中的外部浏览。用户和 Claude 都无法导航到外部网站,localhost 开发服务器预览不受影响。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |1998| `disableBrowserExternalNavigation` | 设置为 `true` 以完全关闭[浏览器窗格](#browse-external-sites)中的外部浏览。用户和 Claude 都无法导航到外部网站,localhost 开发服务器预览不受影响。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |

1942| `sshConfigs` | 预配置[SSH 连接](#pre-configure-ssh-connections-for-your-team),在环境选择器中显示。用户无法删除托管连接,也无法编辑除其自己的 **Worktree folder** 之外的任何内容。 |1999| `sshConfigs` | 预配置[SSH 连接](#pre-configure-ssh-connections-for-your-team),在环境选择器中显示。用户无法删除托管连接,也无法编辑除其自己的 **Worktree folder** 之外的任何内容。 |

1943| `sshHostCommands` | 为用户提供[主机来自命令的 SSH 连接](#distribute-commands-to-your-team),与用户自己的连接并存。Desktop 从计算机上的托管设置文件或 MDM 策略中读取它,并在[服务器管理的设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)中忽略它。需要 macOS 或 Linux 上的 Claude Desktop v3.6556.0 或更高版本,并使用 Claude 帐户登录。 |2000| `sshHostCommands` | 为用户提供[主机来自命令的 SSH 连接](#distribute-commands-to-your-team),与用户自己的连接并存。Desktop 从计算机上的托管设置文件或 MDM 策略中读取它,并在[服务器管理的设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)中忽略它。需要 macOS 或 Linux 上的 Claude Desktop v3.6556.0 或更高版本,或 Windows 上的 v4.16336.0 或更高版本,并使用 Claude 帐户登录。在 Windows 上,Desktop 还必须[通过 OpenSSH 客户端连接](#use-your-ssh-configuration)。 |

1944| `sshHostAllowlist` | 限制 [SSH 会话](#restrict-which-ssh-hosts-users-can-connect-to)连接到已解析主机名与这些模式之一匹配的主机。仅从托管设置中读取。 |2001| `sshHostAllowlist` | 限制 [SSH 会话](#restrict-which-ssh-hosts-users-can-connect-to)连接到已解析主机名与这些模式之一匹配的主机。仅从托管设置中读取。 |

1945| `disableDesktopLocalSessions` | 设置为 `true` 以关闭[在设备上运行的 Code 会话](#local-sessions-on-managed-devices),仅保留到其他主机的 SSH 会话和云端会话可用。该值必须是 JSON 布尔值 `true`。仅从托管设置中读取。需要 Claude Desktop v1.37937.0 或更高版本。 |2002| `disableDesktopLocalSessions` | 设置为 `true` 以关闭[在设备上运行的 Code 会话](#local-sessions-on-managed-devices),仅保留到其他主机的 SSH 会话和云端会话可用。该值必须是 JSON 布尔值 `true`。仅从托管设置中读取。需要 Claude Desktop v1.37937.0 或更高版本。 |

1946| `disableSshSavedPasswords` | 设置为 `true` 以阻止 Desktop 提供记住 SSH 密码的选项,并阻止其使用或显示之前保存的密码。启用此设置不会删除这些密码。仅从托管设置中读取。需要 Claude Desktop v1.49585.0 或更高版本。 |2003| `disableSshSavedPasswords` | 设置为 `true` 以阻止 Desktop 提供记住 SSH 密码的选项,并阻止其使用或显示之前保存的密码。启用此设置不会删除这些密码。仅从托管设置中读取。需要 Claude Desktop v1.49585.0 或更高版本。 |

env-vars.md +3 −2

Details

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

140| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | 覆盖 Amazon Bedrock Mantle 端点 URL。请参阅 [Mantle 端点](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#use-the-mantle-endpoint) |140| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | 覆盖 Amazon Bedrock Mantle 端点 URL。请参阅 [Mantle 端点](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#use-the-mantle-endpoint) |

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

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

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

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

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


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

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_BG_STABLE_PATH` | 在使用原生安装程序的 macOS 上,设置为 `1` 可从已安装的二进制文件运行每个[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)的宿主进程,而不是从 `~/.local/share/claude/ClaudeCode.app` 运行。macOS 随后可能会再次请求[文件夹访问](https://code.claude.com/docs/zh-CN/agent-view.md#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos)等权限,包括在每次更新之后。请在用户设置、托管设置文件或 MDM 策略的 [`env` 块](#in-settings-files)中设置它,而不是在 shell 中设置。要移除 `ClaudeCode.app`,请自行删除。需要 Claude Code v2.1.295 或更高版本 |

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_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` | 适用于嵌入 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_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 记忆文件加载到上下文中,包括用户、项目和自动记忆文件 |244| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | 设置为 `1` 可阻止将任何 CLAUDE.md 记忆文件加载到上下文中,包括用户、项目和自动记忆文件 |


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

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

315| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 可跳过 IDE 扩展的自动安装。等同于将 [`autoInstallIdeExtension`](https://code.claude.com/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | 设置为 `1` 可阻止 `/ide` 安装 IDE 扩展。等同于将 [`autoInstallIdeExtension`](https://code.claude.com/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false` |

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

317| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | 对对话应用[空闲压缩](https://code.claude.com/docs/zh-CN/settings-reference.md#idlecompaction)的上下文大小(以 token 计)(默认值:`200000`)。接受正整数,其他值会被忽略。低于 `100000` 的值会被提高到最低阈值 `100000`。对于满足条件的对话,空闲压缩默认开启。要关闭它,请将 `idleCompaction` 设置为 `false`。需要 Claude Code v2.1.290 或更高版本 |318| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | 对对话应用[空闲压缩](https://code.claude.com/docs/zh-CN/settings-reference.md#idlecompaction)的上下文大小(以 token 计)(默认值:`200000`)。接受正整数,其他值会被忽略。低于 `100000` 的值会被提高到最低阈值 `100000`。对于满足条件的对话,空闲压缩默认开启。要关闭它,请将 `idleCompaction` 设置为 `false`。需要 Claude Code v2.1.290 或更高版本 |

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

errors.md +145 −5

Details

55| `spend limit reached` / `spend limit unavailable` | [使用限制](#spend-limit-reached) |55| `spend limit reached` / `spend limit unavailable` | [使用限制](#spend-limit-reached) |

56| `Not logged in · Please run /login` | [身份验证](#not-logged-in) |56| `Not logged in · Please run /login` | [身份验证](#not-logged-in) |

57| `Couldn't save your login` | [身份验证](#couldnt-save-your-login) |57| `Couldn't save your login` | [身份验证](#couldnt-save-your-login) |

58| `Sign in again to take your previous account or API key off the config file.` | [身份验证](#sign-in-again-to-take-your-previous-account-or-api-key-off-the-config-file) |

59| `Your account or API key may still be in the config file. Run claude auth logout.` | [身份验证](#your-account-or-api-key-may-still-be-in-the-config-file) |

58| `Authentication required · Sign in again to continue` | [身份验证](#not-logged-in) |60| `Authentication required · Sign in again to continue` | [身份验证](#not-logged-in) |

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

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


82| `Couldn't verify your organization's policy for remote control` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#couldnt-verify-your-organizations-policy-for-remote-control) |84| `Couldn't verify your organization's policy for remote control` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#couldnt-verify-your-organizations-policy-for-remote-control) |

83| `Remote Control is disabled by your organization's policy` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#remote-control-is-disabled-by-your-organizations-policy) |85| `Remote Control is disabled by your organization's policy` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#remote-control-is-disabled-by-your-organizations-policy) |

84| `Remote Control was turned off by your organization's policy` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#remote-control-was-turned-off-by-your-organizations-policy) |86| `Remote Control was turned off by your organization's policy` | [Troubleshoot Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#remote-control-was-turned-off-by-your-organizations-policy) |

87| `Session failed: working folder not found:` | [Remote Control 故障排除](https://code.claude.com/docs/zh-CN/remote-control.md#working-folder-not-found) |

88| `The program file this Remote Control started from is gone` | [Remote Control 故障排除](https://code.claude.com/docs/zh-CN/remote-control.md#program-file-is-gone) |

89| `Session failed: spawn error:` 后跟一条 `ENOENT` 消息 | [Remote Control 故障排除](https://code.claude.com/docs/zh-CN/remote-control.md#program-file-is-gone) |

85| `OAuth token revoked` / `OAuth token has expired` | [身份验证](#oauth-token-revoked-or-expired) |90| `OAuth token revoked` / `OAuth token has expired` | [身份验证](#oauth-token-revoked-or-expired) |

86| `Failed to authenticate: OAuth token revoked` | [身份验证](#oauth-token-revoked-or-expired) |91| `Failed to authenticate: OAuth token revoked` | [身份验证](#oauth-token-revoked-or-expired) |

87| `Your account does not have access to Claude. Please login again or contact your administrator.` | [身份验证](#oauth-token-revoked-or-expired) |92| `Your account does not have access to Claude. Please login again or contact your administrator.` | [身份验证](#oauth-token-revoked-or-expired) |


165| `Request too large for the API's 32MB request limit` | [请求错误](#request-too-large) |170| `Request too large for the API's 32MB request limit` | [请求错误](#request-too-large) |

166| `Image was too large` | [请求错误](#image-was-too-large) |171| `Image was too large` | [请求错误](#image-was-too-large) |

167| `API Error: an image in the conversation could not be processed and was removed` | [请求错误](#image-was-too-large) |172| `API Error: an image in the conversation could not be processed and was removed` | [请求错误](#image-was-too-large) |

173| `An image in the conversation exceeds the dimension limit for many-image requests` | [请求错误](#image-was-too-large) |

168| `Unable to resize image` | [请求错误](#unable-to-resize-image) |174| `Unable to resize image` | [请求错误](#unable-to-resize-image) |

169| `Request rejected as unprocessable by the model` | [请求错误](#request-rejected-as-unprocessable-by-the-model) |175| `Request rejected as unprocessable by the model` | [请求错误](#request-rejected-as-unprocessable-by-the-model) |

170| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [请求错误](#pdf-errors) |176| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [请求错误](#pdf-errors) |


229| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [命令行错误](#invalid-agents-configuration) |235| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [命令行错误](#invalid-agents-configuration) |

230| `Error: --agents file not found` | [命令行错误](#invalid-agents-configuration) |236| `Error: --agents file not found` | [命令行错误](#invalid-agents-configuration) |

231| `Error: Settings file exceeds the 2MiB limit` | [命令行错误](#settings-file-exceeds-the-2mib-limit) |237| `Error: Settings file exceeds the 2MiB limit` | [命令行错误](#settings-file-exceeds-the-2mib-limit) |

238| `Configuration error in` | [命令行错误](#configuration-error-in-claude-json) |

239| `Claude configuration file at <path> was empty and no backup holds anything: starting with defaults.` | [命令行错误](#claude-configuration-file-was-empty) |

232| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [命令行错误](#the-current-directory-no-longer-exists) |240| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [命令行错误](#the-current-directory-no-longer-exists) |

233| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [命令行错误](#temp-directory-refused-or-cannot-be-created) |241| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [命令行错误](#temp-directory-refused-or-cannot-be-created) |

234| `ENOSPC: no space left on device, mkdir '<dir>'` | [命令行错误](#temp-directory-refused-or-cannot-be-created) |242| `ENOSPC: no space left on device, mkdir '<dir>'` | [命令行错误](#temp-directory-refused-or-cannot-be-created) |


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

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

336| `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) |344| `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) |

345| `This call was not run. The command was approved before Claude Code restarted` | [工具错误](#command-approved-before-a-restart-was-not-run) |

337| `File is too large to read as an image (the limit is 128MB)` | [工具错误](#file-is-too-large-to-read-as-an-image) |346| `File is too large to read as an image (the limit is 128MB)` | [工具错误](#file-is-too-large-to-read-as-an-image) |

338| `Cannot read this as an image: <path> is a pipe or a device` | [工具错误](#file-is-too-large-to-read-as-an-image) |347| `Cannot read this as an image: <path> is a pipe or a device` | [工具错误](#file-is-too-large-to-read-as-an-image) |

339| `subagent_type is required: the general-purpose agent is not available in this session` | [工具错误](#subagent-type-is-required) |348| `subagent_type is required: the general-purpose agent is not available in this session` | [工具错误](#subagent-type-is-required) |


420| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [配置警告](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |429| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [配置警告](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

421| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [配置警告](#skill-or-command-name-refused) |430| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [配置警告](#skill-or-command-name-refused) |

422| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [配置警告](#workspace-has-not-been-trusted) |431| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [配置警告](#workspace-has-not-been-trusted) |

432| `Make this change again later: <path> could not be updated, so it applies to this session only` | [配置警告](#make-this-change-again-later) |

423| `is a network path, which cannot be added as a working directory` | [配置警告](#working-directory-is-a-network-path) |433| `is a network path, which cannot be added as a working directory` | [配置警告](#working-directory-is-a-network-path) |

424| `Remote managed settings failed to load (<cause>)` | [配置警告](#remote-managed-settings-failed-to-load) |434| `Remote managed settings failed to load (<cause>)` | [配置警告](#remote-managed-settings-failed-to-load) |

435| `Your organization requires remote managed settings to load, but they could not be loaded` | [强制执行故障关闭式启动](https://code.claude.com/docs/zh-CN/server-managed-settings.md#enforce-fail-closed-startup) |

436| `Remote managed settings are still loading` | [配置警告](#remote-managed-settings-failed-to-load) |

437| `Remote managed settings did not load` | [配置警告](#remote-managed-settings-failed-to-load) |

438| `Claude Code couldn't load your organization's settings` / `Claude Code couldn't reach Anthropic to load your organization's settings` / `requires them before a session can start` | [配置警告](#couldnt-load-your-organizations-settings) |

439| `Claude Code can't start this session yet` | [配置警告](#couldnt-load-your-organizations-settings) |

440| `Your Claude session has expired. Sign in again to continue (claude auth login).` | [配置警告](#couldnt-load-your-organizations-settings) |

425| `Managed settings were not approved; exiting without applying them.` | [配置警告](#managed-settings-were-not-approved) |441| `Managed settings were not approved; exiting without applying them.` | [配置警告](#managed-settings-were-not-approved) |

426| `Your organization's managed settings need your approval, which couldn't be asked for here.` | [配置警告](#managed-settings-need-your-approval) |442| `Your organization's managed settings need your approval, which couldn't be asked for here.` | [配置警告](#managed-settings-need-your-approval) |

427| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [配置警告](#managed-settings-block-the-default-model) |443| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [配置警告](#managed-settings-block-the-default-model) |


454| `is ignored — managed settings set allowManagedReadPathsOnly` / `is ignored — managed settings set allowManagedDomainsOnly` | [配置警告](#sandbox-allow-entries-are-ignored-under-a-managed-lock) |470| `is ignored — managed settings set allowManagedReadPathsOnly` / `is ignored — managed settings set allowManagedDomainsOnly` | [配置警告](#sandbox-allow-entries-are-ignored-under-a-managed-lock) |

455| `Sandbox mask files left behind at write-deny paths` | [配置警告](#stale-sandbox-mask-files-left-by-a-killed-session) |471| `Sandbox mask files left behind at write-deny paths` | [配置警告](#stale-sandbox-mask-files-left-by-a-killed-session) |

456| `Stale sandbox mask files left by a killed session` | [配置警告](#stale-sandbox-mask-files-left-by-a-killed-session) |472| `Stale sandbox mask files left by a killed session` | [配置警告](#stale-sandbox-mask-files-left-by-a-killed-session) |

473| `Ubuntu's AppArmor restriction on user namespaces stops bubblewrap here` | [沙箱隔离故障排除](https://code.claude.com/docs/zh-CN/sandboxing.md#apparmor-restriction-stops-bubblewrap) |

474| `bwrap: setting up uid map: Permission denied` / `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted` | [沙箱隔离故障排除](https://code.claude.com/docs/zh-CN/sandboxing.md#bwrap-uid-map-permission-denied) |

457| 响应质量似乎比平时低 | [响应质量](#responses-seem-lower-quality-than-usual) |475| 响应质量似乎比平时低 | [响应质量](#responses-seem-lower-quality-than-usual) |

458 476 

459## 自动重试477## 自动重试


1031* 运行 `/login`,使用您的 Claude 订阅或 Console 账户进行身份验证1049* 运行 `/login`,使用您的 Claude 订阅或 Console 账户进行身份验证

1032* 如果您原本希望通过环境变量进行身份验证,请确认在启动 `claude` 的 shell 中已设置并导出 `ANTHROPIC_API_KEY`1050* 如果您原本希望通过环境变量进行身份验证,请确认在启动 `claude` 的 shell 中已设置并导出 `ANTHROPIC_API_KEY`

1033* 对于无法进行交互式登录的 CI 或自动化场景,请配置一个在启动时获取密钥的 [`apiKeyHelper`](https://code.claude.com/docs/zh-CN/settings-reference#apikeyhelper) 脚本1051* 对于无法进行交互式登录的 CI 或自动化场景,请配置一个在启动时获取密钥的 [`apiKeyHelper`](https://code.claude.com/docs/zh-CN/settings-reference#apikeyhelper) 脚本

1052* 如果有人重新登录同一个 claude.ai 账户和组织时,`claude -p` 作业因此消息而退出,请更新执行该登录的 Claude Code。在 v2.1.318 之前,Claude Code 会在该登录过程中、保存新登录之前删除已存储的登录。

1034* 请参阅[身份验证优先级](https://code.claude.com/docs/zh-CN/authentication.md#authentication-precedence),了解存在多个凭据时 Claude Code 使用哪一个1053* 请参阅[身份验证优先级](https://code.claude.com/docs/zh-CN/authentication.md#authentication-precedence),了解存在多个凭据时 Claude Code 使用哪一个

1035 1054 

1036如果系统反复提示您登录,请参阅[未登录或令牌已过期](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#not-logged-in-or-token-expired),了解系统时钟检查以及 macOS 凭据存储的恢复步骤。1055如果系统反复提示您登录,请参阅[未登录或令牌已过期](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#not-logged-in-or-token-expired),了解系统时钟检查以及 macOS 凭据存储的恢复步骤。


1441* 在其他平台上,再次运行 `/login`1460* 在其他平台上,再次运行 `/login`

1442* 如果登录仍然无法保存,请参阅[未登录或令牌已过期](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#not-logged-in-or-token-expired),了解钥匙串解锁命令和其他凭据存储恢复步骤1461* 如果登录仍然无法保存,请参阅[未登录或令牌已过期](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#not-logged-in-or-token-expired),了解钥匙串解锁命令和其他凭据存储恢复步骤

1443 1462 

1463### Sign in again to take your previous account or API key off the config file

1464 

1465登录后出现此警告,表示您之前登录过的任何账户可能仍存储在 [`~/.claude.json`](https://code.claude.com/docs/zh-CN/claude-directory#ce-claude-json) 中:

1466 

1467```text theme={null}

1468Sign in again to take your previous account or API key off the config file.

1469```

1470 

1471如果在 Linux 或 Windows 上通过 Console 登录创建了 API 密钥,该 API 密钥也可能仍在 `~/.claude.json` 中。

1472 

1473**解决方法:**

1474 

1475* 在 shell 中运行 `claude auth login` 重新登录。随后 Claude Code 会重试保存操作,将被替换的账户或 API 密钥从文件中移除。

1476 

1477### Your account or API key may still be in the config file

1478 

1479您运行了 `/logout` 或 `claude auth logout`,Claude Code 已让此进程退出登录,但无法确认 [`~/.claude.json`](https://code.claude.com/docs/zh-CN/claude-directory#ce-claude-json) 中不再保存您的账户。原因可能是保存未生效,或者无法读回文件进行检查。

1480 

1481```text theme={null}

1482Your account or API key may still be in the config file. Run claude auth logout.

1483```

1484 

1485如果在 Linux 或 Windows 上通过 Console 登录创建了 API 密钥,该 API 密钥也可能仍在 `~/.claude.json` 中。

1486 

1487**解决方法:**

1488 

1489* 在 shell 中运行 `claude auth logout` 再次尝试保存。保存成功后,该命令会输出 `Successfully logged out from your Anthropic account.`

1490 

1444### Couldn't start the local listener that receives the browser sign-in1491### Couldn't start the local listener that receives the browser sign-in

1445 1492 

1446来自 `/login`、`claude auth login` 或 `claude setup-token` 的以下每条消息都表示 Claude Code 无法在 `127.0.0.1` 上打开供浏览器返回登录结果的端口。1493来自 `/login`、`claude auth login` 或 `claude setup-token` 的以下每条消息都表示 Claude Code 无法在 `127.0.0.1` 上打开供浏览器返回登录结果的端口。


2420Image was too large. Double press esc to go back and try again with a smaller image.2467Image was too large. Double press esc to go back and try again with a smaller image.

2421API Error: 400 ... image dimensions exceed max allowed size2468API Error: 400 ... image dimensions exceed max allowed size

2422API Error: an image in the conversation could not be processed and was removed.2469API Error: an image in the conversation could not be processed and was removed.

2470An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.

2423```2471```

2424 2472 

2425`could not be processed and was removed` 行表示 API 拒绝了对话中的某张图片,例如超出大小或尺寸限制的图片。2473`could not be processed and was removed` 行表示 API 拒绝了对话中的某张图片,例如超出大小或尺寸限制的图片。


2434 2482 

2435* 在粘贴之前调整图像大小。API 接受单个图像最长边最多 8000 像素的图像,或当上下文中有超过 20 张图像时最多 3000 像素。2483* 在粘贴之前调整图像大小。API 接受单个图像最长边最多 8000 像素的图像,或当上下文中有超过 20 张图像时最多 3000 像素。

2436* 拍摄相关区域的更紧密屏幕截图,而不是整个屏幕2484* 拍摄相关区域的更紧密屏幕截图,而不是整个屏幕

2485* 对于 `dimension limit for many-image requests` 消息,如果消息提及了 `/compact`,请在 Claude Code 提示符处运行它,或以更少的图片开始新会话

2486 

2487`dimension limit for many-image requests` 消息显示的是 API 错误中注明的像素限制。

2437 2488 

2438### 无法调整图像大小2489### 无法调整图像大小

2439 2490 


3223 3274 

3224* 将 `--settings` 指向一个小于 2 MiB 的常规 JSON 设置文件。有关格式,请参阅[设置](https://code.claude.com/docs/zh-CN/settings.md)。3275* 将 `--settings` 指向一个小于 2 MiB 的常规 JSON 设置文件。有关格式,请参阅[设置](https://code.claude.com/docs/zh-CN/settings.md)。

3225 3276 

3277### Configuration error in \~/.claude.json

3278 

3279Claude Code 无法解析 `~/.claude.json`,该文件保存您的账户详细信息、MCP 服务器和每个项目的状态。您的文件未被更改。在您修复该文件之前,每次[非交互式](https://code.claude.com/docs/zh-CN/headless.md)启动(例如 `claude -p`)都会以退出码 1 退出。

3280 

3281当 Claude Code 找到[备份](https://code.claude.com/docs/zh-CN/claude-directory.md#cleaned-up-automatically)时,输出会指出该备份,并打印一行用于将其复制回来的 `cp` 命令:

3282 

3283```text wrap theme={null}

3284Claude configuration file at /home/user/.claude.json is corrupted: <JSON parser's message>

3285The corrupted file has been backed up to: /home/user/.claude/backups/.claude.json.corrupted.1793664000000

3286A backup file exists at: /home/user/.claude/backups/.claude.json.backup.1793660400000

3287You can manually restore it by running: cp -f "/home/user/.claude/backups/.claude.json.backup.1793660400000" "/home/user/.claude.json"

3288 

3289Configuration error in /home/user/.claude.json: <JSON parser's message>

3290```

3291 

3292**解决方法:**

3293 

3294* **输出中有 `cp` 行**:在终端中运行该行。在 Windows 上,请在 PowerShell 中运行。它会用备份(`~/.claude.json` 的较早版本)替换损坏的文件。

3295* **输出中没有 `cp` 行,或运行后错误再次出现**:修复 `~/.claude.json` 中的 JSON;如果 [`~/.claude/backups/`](https://code.claude.com/docs/zh-CN/claude-directory#cleaned-up-automatically) 中有另一个 `.claude.json.backup.<timestamp>` 文件,可将其复制覆盖该文件;或者将该文件重命名。当 `~/.claude.json` 处没有文件时,Claude Code 会以默认设置启动,该文件中保存的内容都将不存在。

3296 

3297在 v2.1.318 之前,非交互式启动打印此错误后,`~/.claude.json` 中会只剩下默认值,因此下一次启动将在没有您配置的情况下运行。

3298 

3299### Claude configuration file was empty and no backup holds anything

3300 

3301启动时出现此消息,表示其指出的文件为空,且该文件的所有 [`.backup` 副本](https://code.claude.com/docs/zh-CN/claude-directory#cleaned-up-automatically)中都没有任何内容。Claude Code 已为该文件所保存的内容使用默认值启动。您的 `settings.json` 文件和 `.mcp.json` 是单独的文件。

3302 

3303```text wrap theme={null}

3304Claude configuration file at /home/user/.claude.json was empty and no backup holds anything: starting with defaults.

3305```

3306 

3307**解决方法:**

3308 

3309* 重新设置您之前在该文件中配置的内容。例如,在终端中使用 `claude mcp add` 添加您 `user` 和 `local` 作用域的 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md#mcp-installation-scopes)。

3310* 如果 Claude Code 要求您重新登录,请重新登录

3311 

3312在 v2.1.318 之前,Claude Code 会将没有备份的空文件报告为[已损坏](#configuration-error-in-claude-json)。

3313 

3226### 当前目录已不存在3314### 当前目录已不存在

3227 3315 

3228您从一个在 shell 进入后被删除或移动的目录中启动了 `claude`,例如被另一个 shell 删除的 worktree 或临时目录。Claude Code 无法读取其工作目录,因此无论是交互模式还是[非交互](https://code.claude.com/docs/zh-CN/headless.md)模式,它都会在启动会话前以退出码 1 退出。在 v2.1.239 之前,Claude Code 会崩溃,并在 stderr 上输出压缩后的 bundle 源代码和原始的 `ENOENT ... uv_cwd` 堆栈,而不是此消息。3316您从一个在 shell 进入后被删除或移动的目录中启动了 `claude`,例如被另一个 shell 删除的 worktree 或临时目录。Claude Code 无法读取其工作目录,因此无论是交互模式还是[非交互](https://code.claude.com/docs/zh-CN/headless.md)模式,它都会在启动会话前以退出码 1 退出。在 v2.1.239 之前,Claude Code 会崩溃,并在 stderr 上输出压缩后的 bundle 源代码和原始的 `ENOENT ... uv_cwd` 堆栈,而不是此消息。


3334* **`Error: Workspace not trusted. <folder> is your home directory`**:由于主目录的信任从不保存,先在那里运行 `claude` 也无济于事。请改为在项目目录中运行 `claude ultrareview`(先在那里运行一次 `claude` 以接受信任对话框),或追加 `--trust-workspace`。3422* **`Error: Workspace not trusted. <folder> is your home directory`**:由于主目录的信任从不保存,先在那里运行 `claude` 也无济于事。请改为在项目目录中运行 `claude ultrareview`(先在那里运行一次 `claude` 以接受信任对话框),或追加 `--trust-workspace`。

3335* **`No answer in time.` 后跟 `Error: Workspace not trusted`**:`Trust <folder>? [y/N]` 问题在 5 分钟内未得到回答。再次运行 `claude ultrareview` 并回答该问题。3423* **`No answer in time.` 后跟 `Error: Workspace not trusted`**:`Trust <folder>? [y/N]` 问题在 5 分钟内未得到回答。再次运行 `claude ultrareview` 并回答该问题。

3336* **`Ultrareview did not start: <folder> is not trusted`**:您在 `Trust <folder>? [y/N]` 问题处拒绝了,例如回答 `n` 或按 Enter。若要开始审查,请再次运行 `claude ultrareview` 并回答 `y`。3424* **`Ultrareview did not start: <folder> is not trusted`**:您在 `Trust <folder>? [y/N]` 问题处拒绝了,例如回答 `n` 或按 Enter。若要开始审查,请再次运行 `claude ultrareview` 并回答 `y`。

3337* **``Ultrareview did not start: `--trust-workspace` takes no value``**:`--trust-workspace` 后面跟着的不是标志,例如 PR 编号或 `false`。如果您不信任该文件夹,请不要使用该标志。要在本次运行中信任它,请将 PR 编号或基础分支放在该标志之前:`claude ultrareview 1234 --trust-workspace`。3425* **``Ultrareview did not start: `--trust-workspace` takes no value``**:`--trust-workspace` 后面跟了标志以外的内容,例如 PR 编号或 `false`。如果您不信任该文件夹,请不要使用该标志。若要在本次运行中信任它,请将 PR 编号或基础分支放在该标志之前:`claude ultrareview 1234 --trust-workspace`。

3338 3426 

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

3340 3428 


3626 3714 

3627以下相关消息会在命令运行之前就出现:3715以下相关消息会在命令运行之前就出现:

3628 3716 

3629* `Shell command permission check failed for pattern "..."`:该命令的权限检查没有允许它。[注入命令的权限检查](https://code.claude.com/docs/zh-CN/skills.md#permission-checks-on-injected-commands)介绍了在各权限模式下哪些结果会导致中止,以及如何通过 `allowed-tools` 预先批准命令3717* `Shell command permission check failed for pattern "..."`:该命令的权限检查未允许它运行。[注入命令的权限检查](https://code.claude.com/docs/zh-CN/skills.md#permission-checks-on-injected-commands)介绍了在每种权限模式下哪些结果会导致中止,以及如何通过 `allowed-tools` 预先批准命令

3630* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``:该 skill 的 frontmatter 要求使用 bash,而机器上没有 bash。请安装 Git for Windows,或将 frontmatter 改为 `shell: powershell`。请参阅[注入命令的运行方式](https://code.claude.com/docs/zh-CN/skills.md#how-injected-commands-run)3718* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``:该 skill 的 frontmatter 要求 bash,而机器上没有安装 bash。请安装 Git for Windows,或将 frontmatter 改为 `shell: powershell`。请参阅[注入命令的运行方式](https://code.claude.com/docs/zh-CN/skills.md#how-injected-commands-run)

3631 3719 

3632**解决方法:**3720**解决方法:**

3633 3721 


3780 3868 

3781* **您没有传入基础分支**:Claude Code 与仓库的默认分支进行了比较,并建议您显式传入基础分支,如上例所示3869* **您没有传入基础分支**:Claude Code 与仓库的默认分支进行了比较,并建议您显式传入基础分支,如上例所示

3782* **您传入的基础分支已存在于您的克隆中**:提示为 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3870* **您传入的基础分支已存在于您的克隆中**:提示为 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3783* **您传入的基础分支不在您的克隆中**:Claude Code 在比较之前从 origin 获取了该分支。提示为 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``;当 Claude Code 无法判断您的克隆是否为浅克隆时,会改为建议 `git fetch --unshallow origin`。在 v2.1.221 之前,对于每个获取的基础分支,提示都会建议 `git fetch --unshallow origin`,而在完整克隆上,该命令会失败并显示 `fatal: --unshallow on a complete repository does not make sense`。3871* **您传入的基础分支不在您的克隆中**:Claude Code 在比较前从 origin 获取了该分支。提示内容为 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``;当 Claude Code 无法判断您的克隆是否为浅克隆时,它会改为建议 `git fetch --unshallow origin`。在 v2.1.221 之前,对于每个获取的基础分支,提示都会建议 `git fetch --unshallow origin`,而在完整克隆上该命令会失败,报错 `fatal: --unshallow on a complete repository does not make sense`。

3784 3872 

3785**解决方法:**3873**解决方法:**

3786 3874 


4666* **对于 Claude 编写的命令**:您无需修复任何内容。该消息会告诉 Claude 如何重写该命令。4754* **对于 Claude 编写的命令**:您无需修复任何内容。该消息会告诉 Claude 如何重写该命令。

4667* **对于 skill 或命令文件**:该消息跟在 `No shell command in <name> was run` 之后。请参阅[在何处找到该字符并将其移除](#no-shell-command-was-run)。4755* **对于 skill 或命令文件**:该消息跟在 `No shell command in <name> was run` 之后。请参阅[在何处找到该字符并将其移除](#no-shell-command-was-run)。

4668 4756 

4757### Claude Code 重启前批准的命令未运行

4758 

4759您批准的一条 shell 命令没有运行,Claude 会收到以下消息作为该命令的结果:

4760 

4761```text wrap theme={null}

4762This call was not run. The command was approved before Claude Code restarted, and Claude Code could not confirm that the shell is back in the directory where it was approved. That directory may be gone or replaced, lie outside the directory where the session started, or be one that Claude Code needs approval to enter or is not allowed to examine. The shell's directory is <directory>. If the command still makes sense, cd to the directory it was meant for and make the call again; it may need approval again.

4763```

4764 

4765该消息的第三句也可能改为 `It does not keep track of that directory across a restart in a session that has been in a worktree.`

4766 

4767**处理方法:**

4768 

4769* 让 Claude 继续;如果系统要求您再次批准该命令,请回应该提示。

4770 

4669### File is too large to read as an image4771### File is too large to read as an image

4670 4772 

4671Claude 尝试使用 [Read 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#read-tool-behavior)将文件作为图像读取,但该文件大于 128 MB,这是 Read 从图像文件加载的上限。未读取任何内容,Claude 会收到以下错误作为工具结果:4773Claude 尝试使用 [Read 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#read-tool-behavior)将文件作为图像读取,但该文件大于 128 MB,这是 Read 从图像文件加载的上限。未读取任何内容,Claude 会收到以下错误作为工具结果:


5818 5920 

5819### Remote managed settings failed to load5921### Remote managed settings failed to load

5820 5922 

5821您的会话符合使用[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)的条件,但 Claude Code 无法获取这些设置,或无法应用服务器返回的内容,因此会在交互式会话中显示此警告。5923您的会话符合使用[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)的条件,但 Claude Code 无法获取这些设置,或无法应用服务器返回的内容,因此会在交互式会话以及 Claude Desktop 的 Code 标签页中显示此警告。

5822 5924 

5823括号中的原因说明了失败的内容,例如 `network error`、`request timed out` 或 `authentication rejected (401)`。原因 `no setting in the server response could be applied as written` 表示服务器已响应,但其返回的设置均未通过[验证](https://code.claude.com/docs/zh-CN/server-managed-settings.md#invalid-entries-in-delivered-settings)。在 v2.1.282 之前,此原因显示为 `server returned invalid settings`。5925括号中的原因说明了失败的内容,例如 `network error`、`request timed out` 或 `authentication rejected (401)`。原因 `no setting in the server response could be applied as written` 表示服务器已响应,但其返回的设置均未通过[验证](https://code.claude.com/docs/zh-CN/server-managed-settings.md#invalid-entries-in-delivered-settings)。在 v2.1.282 之前,此原因显示为 `server returned invalid settings`。

5824 5926 


5827* **存在此前成功获取时缓存的设置**:Claude Code 使用该缓存策略运行会话([被保留的环境变量](https://code.claude.com/docs/zh-CN/server-managed-settings.md#fetch-and-caching-behavior)除外),该行显示 `using cached policy`。5929* **存在此前成功获取时缓存的设置**:Claude Code 使用该缓存策略运行会话([被保留的环境变量](https://code.claude.com/docs/zh-CN/server-managed-settings.md#fetch-and-caching-behavior)除外),该行显示 `using cached policy`。

5828* **无缓存**:Claude Code 在没有服务器托管设置的情况下运行会话,该行显示 `no remote policy applied`。5930* **无缓存**:Claude Code 在没有服务器托管设置的情况下运行会话,该行显示 `no remote policy applied`。

5829 5931 

5932在 Code 标签页中,当您发送消息时,该警告会以一行的形式出现在对话中;当获取状态发生变化时,会出现新的一行。以下三条相关消息也以相同方式出现:

5933 

5934* `Remote managed settings are still loading`:会话继续进行时,获取仍在运行

5935* `Remote managed settings did not load`:获取已结束,但未得到响应

5936* `Remote managed settings have now loaded`:设置在上述某条警告之后加载完成,该行的其余部分说明是否应用了远程策略

5937 

5830**解决方法:**5938**解决方法:**

5831 5939 

5832* 根据消息指出的原因处理:对于网络原因,请检查此计算机能否访问 `api.anthropic.com`;对于身份验证原因,请使用 `/status` 检查您的登录状态5940* 根据消息指出的原因处理:对于网络原因,请检查此计算机能否访问 `api.anthropic.com`;对于身份验证原因,请使用 `/status` 检查您的登录状态


5835 5943 

5836在 v2.1.248 之前,Claude Code 仅在调试日志中报告设置获取失败。5944在 v2.1.248 之前,Claude Code 仅在调试日志中报告设置获取失败。

5837 5945 

5946### Claude Code couldn't load your organization's settings

5947 

5948您的会话尚未启动,因为必须先加载您组织的设置(包括其[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)),而 Claude Code 无法加载它们。例如:

5949 

5950```text theme={null}

5951Claude Code couldn't reach Anthropic to load your organization's settings (could not connect). <Organization name> requires them before a session can start.

5952```

5953 

5954如果消息出现在标题为 `Claude Code can't start this session yet` 的对话框中,设置一旦加载完成,对话框就会关闭,会话随即启动。

5955 

5956在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)和[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,Claude Code 会改为打印该消息并以状态 1 退出。

5957 

5958**解决方法:**

5959 

5960* **`could not connect` 或 `the reply came from a network proxy, not Anthropic`**:请检查您的网络连接;如果在企业网络中,请让 IT 允许通过 HTTPS 访问 `api.anthropic.com/api/claude_code/policy_limits` 和 `api.anthropic.com/api/claude_code/settings`。然后选择 **Retry now**,或再次运行您的命令。

5961* **`timed out`、`Anthropic returned an error` 或 `Anthropic asked it to retry shortly`**:让对话框自动重试,或稍后再次运行您的命令。如果问题持续出现,请查看 [status.anthropic.com](https://status.anthropic.com)。

5962* **`still loading` 或 `couldn't verify your sign-in with Anthropic yet`**:让对话框自动重试,或再次运行您的命令。如果登录相关消息反复出现,请在 shell 中运行 `claude auth login` 重新登录。

5963* **`Your Claude session has expired`**:此计算机上存储的登录信息已失效,因此重试无济于事。在对话框中选择 **Sign in again** 关闭 Claude Code;然后在 shell 中运行 `claude auth login`,即使在会话无法启动时该命令也能正常工作。

5964* **`none of the settings the server returned could be applied as written`**:请让管理员修正组织的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md#invalid-entries-in-delivered-settings),然后重试。

5965 

5838### Managed settings were not approved5966### Managed settings were not approved

5839 5967 

5840您组织的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)包含需要您批准的设置,而您拒绝了[安全批准对话框](https://code.claude.com/docs/zh-CN/server-managed-settings.md#security-approval-dialogs),因此 Claude Code 会在不应用这些设置的情况下退出:5968您组织的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)包含需要您批准的设置,而您拒绝了[安全批准对话框](https://code.claude.com/docs/zh-CN/server-managed-settings.md#security-approval-dialogs),因此 Claude Code 会在不应用这些设置的情况下退出:


6294 6422 

6295在 v2.1.257 之前,`claude doctor` 不会标记这些文件;当会话被终止时,更早的版本也会留下相同的占位文件。6423在 v2.1.257 之前,`claude doctor` 不会标记这些文件;当会话被终止时,更早的版本也会留下相同的占位文件。

6296 6424 

6425### Make this change again later: \~/.claude.json could not be updated

6426 

6427stderr 上的此通知表示对 [`~/.claude.json`](https://code.claude.com/docs/zh-CN/claude-directory#ce-claude-json) 的某项更改(例如登录或对信任提示的回答)未保存到该文件:

6428 

6429```text theme={null}

6430Make this change again later: /home/user/.claude.json could not be updated, so it applies to this session only.

6431```

6432 

6433**解决方法:**

6434 

6435* 在之后的会话中再次进行该更改。例如,再次运行 `/login` 或再次回答信任提示。

6436 

6297## 回复质量似乎低于预期6437## 回复质量似乎低于预期

6298 6438 

6299如果 Claude 的回答似乎不如你预期的那样有能力,但没有显示错误,原因通常是对话状态而不是模型本身。Claude Code 不会无声地更改模型版本。它只能在这些情况下切换到备用模型:6439如果 Claude 的回答似乎不如你预期的那样有能力,但没有显示错误,原因通常是对话状态而不是模型本身。Claude Code 不会无声地更改模型版本。它只能在这些情况下切换到备用模型:

headless.md +3 −1

Details

48 48 

49在 bare 模式下,Claude Code 从不读取 OAuth 凭据或系统密钥链。对于 Anthropic API,请在环境中设置 `ANTHROPIC_API_KEY`(使用在 [Claude Console](https://platform.claude.com) 中创建的密钥),或在 `--settings` JSON 中提供 `apiKeyHelper`。Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 会继续照常读取各自的提供商凭据。49在 bare 模式下,Claude Code 从不读取 OAuth 凭据或系统密钥链。对于 Anthropic API,请在环境中设置 `ANTHROPIC_API_KEY`(使用在 [Claude Console](https://platform.claude.com) 中创建的密钥),或在 `--settings` JSON 中提供 `apiKeyHelper`。Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 会继续照常读取各自的提供商凭据。

50 50 

51在 bare 模式下,Claude 可以使用 Bash、文件读取和文件编辑工具。请使用标志传递您需要的任何上下文:51在 bare 模式下,Claude 可以使用 Bash、文件读取和文件编辑工具。请通过标志传入所需的上下文:

52 52 

53| 要加载的内容 | 使用 |53| 要加载的内容 | 使用 |

54| - | - |54| - | - |


58| [自定义 Agent](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-the-subagent-scope) | `--agents <file-or-json>` |58| [自定义 Agent](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-the-subagent-scope) | `--agents <file-or-json>` |

59| 插件 | `--plugin-dir <path>`, `--plugin-url <url>` |59| 插件 | `--plugin-dir <path>`, `--plugin-url <url>` |

60 60 

61在 bare 模式下,即使您通过 `--settings` 传递 hook,或者 hook 位于您通过标志加载的插件的 [`hooks/hooks.json`](https://code.claude.com/docs/zh-CN/plugins/components#hooks) 或 [`hooks` 清单键](https://code.claude.com/docs/zh-CN/plugins/manifest-reference#hooks) 中,hook 仍然不会运行。对于需要 hook 的运行,请不要使用 bare 模式。

62 

61bare 模式还会限制会话运行期间发生的事情:63bare 模式还会限制会话运行期间发生的事情:

62 64 

63* **MCP 服务器**:只有在命令行中提供的服务器才会连接,例如通过 `--mcp-config`。在交互式会话中,除非您传递 `--ide`,否则 Claude Code 还会跳过自动 IDE 连接。65* **MCP 服务器**:只有在命令行中提供的服务器才会连接,例如通过 `--mcp-config`。在交互式会话中,除非您传递 `--ide`,否则 Claude Code 还会跳过自动 IDE 连接。

Details

96Never edit a migration after it has merged. Add a new migration instead.96Never edit a migration after it has merged. Add a new migration instead.

97```97```

98 98 

99当你从 `packages/api/` 启动 Claude 时,它加载 `packages/api/CLAUDE.md` 和根 `CLAUDE.md`。Claude 看到本地指令与存储库范围的规则一起,上下文中没有来自 `packages/web/` 的指令。对于非 monorepo 树中的任何子目录也是如此。要确认加载了哪些文件,请运行 `/context` 并检查 **Memory files** 下的列表。99当您从 `packages/api/` 启动 Claude 时,它会同时加载 `packages/api/CLAUDE.md` 和根 `CLAUDE.md`。Claude 会同时看到本地指令和仓库范围的规则,上下文中不会有来自 `packages/web/` 的指令。对于非 monorepo 目录树中的任何子目录也是如此。要确认加载了哪些文件,请运行 [`/context all`](https://code.claude.com/docs/zh-CN/commands#all-commands) 并检查 **Memory files** 下的列表。

100 100 

101保持文件随着代码库和模型变化而最新的几种方法:101保持文件随着代码库和模型变化而最新的几种方法:

102 102 

memory.md +6 −4

Details

67 67 

68### 设置项目 CLAUDE.md68### 设置项目 CLAUDE.md

69 69 

70项目 CLAUDE.md 可以存储在 `./CLAUDE.md` 或 `./.claude/CLAUDE.md` 中。创建此文件并添加适用于在项目上工作的任何人的指令:构建和测试命令、编码标准、架构决策、命名约定和常见工作流。这些指令通过版本控制与您的团队共享,因此请关注项目级标准而不是个人偏好。要确认文件已加载,请在会话中运行 `/context` 并检查 **Memory files** 下的列表。70项目 CLAUDE.md 可以存储在 `./CLAUDE.md` 或 `./.claude/CLAUDE.md` 中。创建此文件并添加适用于在项目上工作的任何人的指令:构建和测试命令、编码标准、架构决策、命名约定和常见工作流。这些指令通过版本控制与您的团队共享,因此请关注项目级标准而不是个人偏好。

71 

72要确认文件已加载,请在会话中运行 [`/context all`](https://code.claude.com/docs/zh-CN/commands#all-commands) 并检查 **Memory files** 下的列表。在[全屏模式](https://code.claude.com/docs/zh-CN/fullscreen.md)下,仅运行 `/context` 会折叠该列表。

71 73 

72> [!TIP]74> [!TIP]

73>75>


461* **编辑**:Claude 通过链接读取 `CLAUDE.md`,但 Edit 和 Write 工具[拒绝通过符号链接写入](https://code.claude.com/docs/zh-CN/errors.md#refusing-after-a-symlink-changed),拒绝指示 Claude 编辑链接的目标 `AGENTS.md`463* **编辑**:Claude 通过链接读取 `CLAUDE.md`,但 Edit 和 Write 工具[拒绝通过符号链接写入](https://code.claude.com/docs/zh-CN/errors.md#refusing-after-a-symlink-changed),拒绝指示 Claude 编辑链接的目标 `AGENTS.md`

462* **Windows**:如果您或克隆存储库的任何人在 Windows 上工作,请改用 `@AGENTS.md` 导入。在那里创建符号链接需要管理员权限或开发人员模式,Git 会将提交的符号链接检出为纯文本文件,除非启用了 `core.symlinks`,这会使该克隆具有一行 `CLAUDE.md` 代替您的说明464* **Windows**:如果您或克隆存储库的任何人在 Windows 上工作,请改用 `@AGENTS.md` 导入。在那里创建符号链接需要管理员权限或开发人员模式,Git 会将提交的符号链接检出为纯文本文件,除非启用了 `core.symlinks`,这会使该克隆具有一行 `CLAUDE.md` 代替您的说明

463 465 

464使用任一方法,在您的下一个会话中运行 `/context` 并确认 `CLAUDE.md` 出现在**内存文件**下。466使用任一方法,在您的下一个会话中运行 `/context all` 并确认 `CLAUDE.md` 出现在**记忆文件**下。

465 467 

466### 从其他工具迁移说明468### 从其他工具迁移说明

467 469 


567 569 

568## 使用 `/memory` 查看和编辑570## 使用 `/memory` 查看和编辑

569 571 

570`/memory` 命令列出您的 CLAUDE.md、CLAUDE.local.md 和其他记忆文件在用户和项目作用域内的位置,包括尚不存在的文件的用户和项目 CLAUDE.md 条目。它还允许您开启或关闭自动记忆,并提供打开自动记忆文件夹的选项。选择任何文件即可在您的编辑器中打开它;选择一个尚不存在的文件会先创建它。要检查启动时加载了哪些 `CLAUDE.md` 和规则文件,请运行 `/context`。572`/memory` 命令列出您的 CLAUDE.md、CLAUDE.local.md 和其他记忆文件在用户和项目作用域内的位置,包括尚不存在的文件的用户和项目 CLAUDE.md 条目。它还允许您开启或关闭自动记忆,并提供打开自动记忆文件夹的选项。选择任何文件即可在您的编辑器中打开它;选择一个尚不存在的文件会先创建它。

571 573 

572VS Code 等 GUI 编辑器在单独的窗口中打开文件,您可以在文件打开时继续使用会话。Vim 等终端编辑器会接管终端,直到您退出。574VS Code 等 GUI 编辑器在单独的窗口中打开文件,您可以在文件打开时继续使用会话。Vim 等终端编辑器会接管终端,直到您退出。

573 575 


583 585 

584要调试:586要调试:

585 587 

586* 运行 `/context` 并检查 **Memory files** 下的列表,以验证应在启动时加载的 CLAUDE.md 和 CLAUDE.local.md 文件。如果其中某个文件不在列表中,Claude 就看不到它。使用 `/memory` 打开和编辑文件。588* 运行 `/context all` 并检查 **Memory files** 下的列表,以验证应在启动时加载的 CLAUDE.md 和 CLAUDE.local.md 文件。如果其中某个文件不在列表中,Claude 就看不到它。使用 `/memory` 打开和编辑文件。

587* 如果出现 `Instruction file not loaded` 提示,请参阅[其含义及处理方法](https://code.claude.com/docs/zh-CN/errors.md#instruction-file-not-loaded)。589* 如果出现 `Instruction file not loaded` 提示,请参阅[其含义及处理方法](https://code.claude.com/docs/zh-CN/errors.md#instruction-file-not-loaded)。

588* 工作目录的子目录中的 `CLAUDE.md` 不会出现在 **Memory files** 下,因为它是按需加载而不是在启动时加载的。加载时,终端中会出现一行带有其路径的 `Loaded`。要测试新建的此类文件,请从 shell 中创建它,而不是让 Claude 编写它,然后让 Claude 读取该子目录中的某个文件。590* 工作目录的子目录中的 `CLAUDE.md` 不会出现在 **Memory files** 下,因为它是按需加载而不是在启动时加载的。加载时,终端中会出现一行带有其路径的 `Loaded`。要测试新建的此类文件,请从 shell 中创建它,而不是让 Claude 编写它,然后让 Claude 读取该子目录中的某个文件。

589* 检查相关 CLAUDE.md 是否在为您的会话加载的位置(参见 [选择 CLAUDE.md 文件的位置](#choose-where-to-put-claude-md-files))。591* 检查相关 CLAUDE.md 是否在为您的会话加载的位置(参见 [选择 CLAUDE.md 文件的位置](#choose-where-to-put-claude-md-files))。

Details

245>245>

246> **作为默认值**:在[设置](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中设置 `defaultMode`。桌面应用读取与 CLI 相同的设置文件,并将权限模式应用于新的本地会话。246> **作为默认值**:在[设置](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中设置 `defaultMode`。桌面应用读取与 CLI 相同的设置文件,并将权限模式应用于新的本地会话。

247>247>

248> 您在模式选择器中选择的模式会按文件夹记住,并对该文件夹优先于 `defaultMode`。Plan 是例外:选择它仅适用于当前会话。248> 您在本地会话中通过模式选择器选择的模式会按文件夹记住,并优先于项目 `.claude/` 设置中的 `defaultMode`。新的本地会话仍可能以 `~/.claude/settings.json` 或托管设置中的 `defaultMode` 启动,因此请在发送第一条消息之前检查选择器。如果您选择 Plan,它仅适用于当前会话。

249>249>

250> 有关 `defaultMode` 在设置文件中的位置,请参阅[以不同的权限模式启动](#start-in-a-different-mode)下的示例。250> 有关 `defaultMode` 在设置文件中的位置,请参阅[以不同的权限模式启动](#start-in-a-different-mode)下的示例。

251 251 


372 372 

373* **直接连接到 Anthropic API**:在交互式终端会话以及 `-p`、Agent SDK、[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)和[桌面应用](https://code.claude.com/docs/zh-CN/desktop.md)会话中,无论您的计划或账户类型如何,随 Anthropic 逐步推出而生效。请根据以下最低 Claude Code 版本核对您的会话类型:373* **直接连接到 Anthropic API**:在交互式终端会话以及 `-p`、Agent SDK、[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)和[桌面应用](https://code.claude.com/docs/zh-CN/desktop.md)会话中,无论您的计划或账户类型如何,随 Anthropic 逐步推出而生效。请根据以下最低 Claude Code 版本核对您的会话类型:

374 * 在交互式终端会话中,Pro、Max、Ultra 和 Team 计划请求服务器审查需要 Claude Code v2.1.271 或更高版本。在 Enterprise 计划和 Claude API 账户上,这些会话需要 v2.1.278 或更高版本。374 * 在交互式终端会话中,Pro、Max、Ultra 和 Team 计划请求服务器审查需要 Claude Code v2.1.271 或更高版本。在 Enterprise 计划和 Claude API 账户上,这些会话需要 v2.1.278 或更高版本。

375 * 在 `-p`、Agent SDK、VS Code 扩展和桌面应用会话中,请求服务器审查需要 Claude Code v2.1.281 或更高版本375 * 在 `-p` 和 VS Code 扩展会话中,请求服务器审查需要 Claude Code v2.1.278 或更高版本

376 * 在 Agent SDK 和桌面应用会话中,请求服务器审查需要 Claude Code v2.1.281 或更高版本

376 * 从 v2.1.282 起,[不获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话(例如因为您关闭了遥测)在任何类型的会话中都会默认请求服务器审查377 * 从 v2.1.282 起,[不获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话(例如因为您关闭了遥测)在任何类型的会话中都会默认请求服务器审查

377* **云提供商,或 LLM 网关或代理**:在 [Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 上,以及每当您将 `ANTHROPIC_BASE_URL` 指向 [LLM 网关或代理](https://code.claude.com/docs/zh-CN/llm-gateway)时,无论您的计划如何。默认请求服务器审查需要 Claude Code v2.1.278 或更高版本。378* **云提供商,或 LLM 网关或代理**:在 [Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、Amazon Bedrock、Google Cloud's Agent Platform 和 Microsoft Foundry 上,以及每当您将 `ANTHROPIC_BASE_URL` 指向 [LLM 网关或代理](https://code.claude.com/docs/zh-CN/llm-gateway)时,无论您的计划如何。默认请求服务器审查需要 Claude Code v2.1.278 或更高版本。

378* **已登录的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话**:需要 Claude Code v2.1.280 或更高版本379* **已登录的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话**:需要 Claude Code v2.1.280 或更高版本

permissions.md +1 −1

Details

69 69 

70## 权限模式70## 权限模式

71 71 

72Claude Code 支持多种权限模式来控制工具调用的批准方式。请参阅[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)了解何时使用每种模式。要更改会话启动时的模式,请在您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中设置 `defaultMode`。[会话启动时的模式](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in)涵盖了每个计划的内置默认值以及 VS Code 扩展读取的内容。72Claude Code 支持多种权限模式来控制工具调用的批准方式。请参阅[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)了解何时使用每种模式。要更改新会话的默认权限模式,请在您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中设置 `defaultMode`。[会话启动时的模式](https://code.claude.com/docs/zh-CN/permission-modes.md#which-mode-a-session-starts-in)涵盖了每个计划的内置默认值以及 VS Code 扩展读取的内容。

73 73 

74| 模式 | 描述 |74| 模式 | 描述 |

75| :- | :- |75| :- | :- |

Details

571| :- | :- | :- |571| :- | :- | :- |

572| Hook 命令 | 在 `command` 和 `args` 中的任何地方 | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA`、`CLAUDE_PROJECT_DIR` 和 `CLAUDE_PLUGIN_OPTION_<KEY>` |572| Hook 命令 | 在 `command` 和 `args` 中的任何地方 | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA`、`CLAUDE_PROJECT_DIR` 和 `CLAUDE_PLUGIN_OPTION_<KEY>` |

573| Monitor 命令 | 在 `command` 中的任何地方 | 未导出 |573| Monitor 命令 | 在 `command` 中的任何地方 | 未导出 |

574| MCP `stdio` 服务器 | `command`、`args`、`env` | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA` |574| MCP `stdio` 服务器 | `command`、`args`、`env` | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA`、`CLAUDE_PROJECT_DIR` |

575| MCP `http`、`sse`、`ws` 服务器 | `url`、`headers`、`headersHelper` | 不适用 |575| MCP `http`、`sse`、`ws` 服务器 | `url`、`headers`、`headersHelper` | 不适用 |

576| LSP 服务器 | `command`、`args`、`env`、`workspaceFolder` | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA`、`CLAUDE_PROJECT_DIR` |576| LSP 服务器 | `command`、`args`、`env`、`workspaceFolder` | `CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA`、`CLAUDE_PROJECT_DIR` |

577| Skill、command 和 agent 内容 | Markdown 体中的任何地方 | 不适用 |577| Skill、command 和 agent 内容 | Markdown 体中的任何地方 | 不适用 |

Details

154| 事件 | 触发时机 | hook 可以返回 |154| 事件 | 触发时机 | hook 可以返回 |

155| :- | :- | :- |155| :- | :- | :- |

156| `agent.offer` | 向 Claude 提供某个子代理类型 | `{ isOffered: false }` 以不提供它 |156| `agent.offer` | 向 Claude 提供某个子代理类型 | `{ isOffered: false }` 以不提供它 |

157| `agent.spawn` | 子代理或 [agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友即将启动。对于队友,`e.isTeammate` 为 `true`。 | `next({ ...e, model })` 以选择其模型,或 `{ deny: reason }` |157| `agent.spawn` | 子代理或 [agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友即将启动,或者已完成或已停止的子代理即将再次运行。对于队友,`e.isTeammate` 为 `true`。对于恢复的运行,会设置 `e.resume`。 | `next({ ...e, model })` 以选择即将启动者的模型,或 `{ deny: reason }` |

158 158 

159当 Claude 使用 [`SendMessage`](https://code.claude.com/docs/zh-CN/sub-agents#resume-subagents) 工具恢复子代理时,您的 `agent.spawn` hook 不会再次运行。要拒绝恢复子代理的 `SendMessage` 调用,请在 [`tool.call`](https://code.claude.com/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) hook 中匹配该工具。159当已完成或已停止的子代理即将再次运行时,例如 Claude 使用 [`SendMessage`](https://code.claude.com/docs/zh-CN/sub-agents#resume-subagents) 工具向其发送消息时,您的 `agent.spawn` hook 也会运行。在该事件中,`e.resume` 为 `{ agentId }`。如果您的 hook 会统计子代理数量,请跳过设置了 `e.resume` 的事件,以免恢复的子代理被重复计数。

160 

161返回 `{ deny: reason }` 可拒绝恢复的运行。该运行不会开始,子代理保持原样。当运行是由 `SendMessage` 调用请求的时,Claude 读取到的该调用结果为 `a plugin declined the resume:` 后跟您给出的原因。如果您为恢复的运行向 `next` 传递更改后的事件,例如不同的 `model`,Claude Code 会忽略该更改。

162 

163> [!NOTE]

164>

165> 恢复运行的事件需要 Claude Code v2.1.299 或更高版本。在 v2.1.299 之前,子代理恢复时您的 `agent.spawn` hook 不会运行。在这些版本上,要拒绝恢复子代理的 `SendMessage` 调用,请在 [`tool.call`](https://code.claude.com/docs/zh-CN/plugins/mods/events#guard-or-change-a-tool-call) hook 中匹配该工具。

160 166 

161### 界面167### 界面

162 168 

Details

502* 网络或代理问题:防火墙或代理可能阻止了出站 HTTPS 请求。Remote Control 需要访问端口 443 上的 Anthropic API。502* 网络或代理问题:防火墙或代理可能阻止了出站 HTTPS 请求。Remote Control 需要访问端口 443 上的 Anthropic API。

503* 会话创建失败:如果您还看到 `Session creation failed — see debug log`,失败发生在设置的早期。检查您的订阅是否有效。503* 会话创建失败:如果您还看到 `Session creation failed — see debug log`,失败发生在设置的早期。检查您的订阅是否有效。

504 504 

505### "working folder not found"

506 

507在运行 [`claude remote-control`](#start-a-remote-control-session) 的终端中,`Session failed: working folder not found:` 后跟一个带引号的路径,表示由于该路径下不存在文件夹,会话无法启动。

508 

509* **服务器仍在运行**:恢复该文件夹并再次启动会话,或停止服务器

510* **服务器已退出**:从一个存在的文件夹中再次运行 `claude remote-control`

511 

512在 v2.1.318 之前,以这种方式失败的会话会显示 `Session failed: spawn error:` 以及一条 `ENOENT` 消息,该消息指出的是某个程序文件,而不是缺失的文件夹。

513 

514### "The program file this Remote Control started from is gone"

515 

516运行 [`claude remote-control`](#start-a-remote-control-session) 的终端中出现此警告,表示服务器启动时所用的程序文件已丢失,新会话会运行替换它的较新版本。要让服务器也切换到该版本,请停止服务器并再次运行 `claude remote-control`。如果 Claude Code 安装在网络存储上,请立即重新启动服务器,并按照[在网络存储上安装](https://code.claude.com/docs/zh-CN/setup.md#install-on-network-storage)操作。否则,新会话无需重新启动即可启动。

517 

518当程序文件丢失且 Claude Code 找不到可运行的较新版本时,新会话会失败。终端会显示诸如 `Session failed: spawn error:` 后跟一条 `ENOENT` 消息之类的错误。请停止服务器,如果 `claude` 无法在您的 shell 中运行,请再次[安装 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#install-claude-code),然后再次运行 `claude remote-control`。在 v2.1.318 之前,即使已安装较新版本,新会话也会以这种方式失败。

519 

505### "Couldn't reconnect to your Remote Control session"520### "Couldn't reconnect to your Remote Control session"

506 521 

507当您使用 `claude --resume` 或 `claude --continue` 恢复对话时,Claude Code 会重新连接到该对话中记录的 Remote Control 会话。此消息意味着重新连接因可能是临时的原因(例如网络中断或服务器错误)而失败,因此 Claude Code 无法确认远程会话是否仍然存在。522当您使用 `claude --resume` 或 `claude --continue` 恢复对话时,Claude Code 会重新连接到该对话中记录的 Remote Control 会话。此消息意味着重新连接因可能是临时的原因(例如网络中断或服务器错误)而失败,因此 Claude Code 无法确认远程会话是否仍然存在。

sandboxing.md +59 −27

Details

71* **Overrides**:选择在沙箱中失败的命令是否可以回退到在沙箱外运行。这对应 [`allowUnsandboxedCommands`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-allowunsandboxedcommands) 设置71* **Overrides**:选择在沙箱中失败的命令是否可以回退到在沙箱外运行。这对应 [`allowUnsandboxedCommands`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-allowunsandboxedcommands) 设置

72* **Config**:查看解析后的沙箱设置72* **Config**:查看解析后的沙箱设置

73 73 

74如果面板只显示 Dependencies 选项卡,则表示缺少必需的软件包。请按照[设置 Linux 和 WSL2](#set-up-linux-and-wsl2) 中的说明进行安装,重启 Claude Code,然后再次运行 `/sandbox`。74如果面板只显示 Dependencies 选项卡,则表示沙箱尚无法启动。请按照[设置 Linux 和 WSL2](#set-up-linux-and-wsl2) 中的说明修复该选项卡报告的问题,重启 Claude Code,然后再次运行 `/sandbox`。

75 75 

76**2. 选择模式**76**2. 选择模式**

77 77 


97 97 

98> [!WARNING]98> [!WARNING]

99>99>

100> 默认情况下,如果由于缺少依赖或平台不受支持而导致沙箱无法启动,Claude Code 会在不使用沙箱的情况下运行命令。要让 Claude Code 改为在启动时退出,请将 [`sandbox.failIfUnavailable`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-failifunavailable) 设置为 `true`。需要将沙箱隔离作为安全关卡的托管部署可以使用此设置。100> 默认情况下,如果平台不支持沙箱或启动时的依赖检查失败,Claude Code 会在不使用沙箱的情况下运行命令。要让 Claude Code 改为在启动时退出,请将 [`sandbox.failIfUnavailable`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-failifunavailable) 设置为 `true`。需要将沙箱隔离作为安全关卡的托管部署可以使用此设置。

101 101 

102### 确认命令在沙箱内运行102### 确认命令在沙箱内运行

103 103 


135 135 

136Ripgrep 已随原生 Claude Code 二进制文件捆绑提供。seccomp 过滤器是可选的,用于增加对 Unix 域套接字的阻止。如果缺少该过滤器,请使用 `npm install -g @anthropic-ai/sandbox-runtime` 进行安装。136Ripgrep 已随原生 Claude Code 二进制文件捆绑提供。seccomp 过滤器是可选的,用于增加对 Unix 域套接字的阻止。如果缺少该过滤器,请使用 `npm install -g @anthropic-ai/sandbox-runtime` 进行安装。

137 137 

138当缺少必需的依赖时,在安装之前 Dependencies 选项卡是唯一显示的选项卡。当仅缺少可选的 seccomp 过滤器时,Dependencies 选项卡会与其他选项卡一起显示。依赖检查在启动时运行,因此安装软件包后请重启 Claude Code,以便 `/sandbox` 检测到它们。138* **Dependencies 是唯一的选项卡**:沙箱无法启动。请安装该选项卡列为缺失的内容;如果它报告了 Ubuntu 的 AppArmor 限制,请[为 bubblewrap 添加 AppArmor 配置文件](#add-an-apparmor-profile-for-bubblewrap)

139* **Dependencies 与其他选项卡一起显示**:该选项卡列出了缺失的可选项,例如 seccomp 过滤器。沙箱在没有它的情况下也可以启动,因此仅当您需要它所增加的功能时才需安装

139 140 

140> [accordion] Ubuntu 24.04 及更高版本:允许 bubblewrap 创建用户命名空间141依赖检查在启动时运行,因此安装软件包后请重启 Claude Code,以便 `/sandbox` 检测到它们。

141>

142> 在 Ubuntu 24.04 及更高版本上,默认的 AppArmor 策略会阻止 bubblewrap 创建其隔离所需的用户命名空间。

143>

144> 要检查您的环境(包括 WSL2 内部)是否强制执行此限制,请运行 `sysctl kernel.apparmor_restrict_unprivileged_userns`。如果该命令返回 `0`,请跳过此步骤。如果输出 `No such file or directory` 错误,则表示该键不存在,也可以跳过此步骤。如果返回 `1`,请添加一个授予 `bwrap` 此能力的 AppArmor 配置文件:

145>

146> ```bash theme={null}

147> sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'

148> abi <abi/4.0>,

149> include <tunables/global>

150>

151> profile bwrap /usr/bin/bwrap flags=(unconfined) {

152> userns,

153> include if exists <local/bwrap>

154> }

155> EOF

156> ```

157>

158> 该配置文件仅适用于 `bwrap` 本身,而不适用于它在沙箱内运行的命令。重新加载 AppArmor 以使其生效:

159>

160> ```bash theme={null}

161> sudo systemctl reload apparmor

162> ```

163 142 

164> [accordion] WSL2 注意事项143> [accordion] WSL2 注意事项

165>144>


167>146>

168> 在 WSL2 上,WSL 会通过 Unix 套接字将 Windows 二进制文件(例如 `cmd.exe`、`powershell.exe` 或 `/mnt/c/` 下的任何内容)的启动交给 Windows 主机处理,因此沙箱命令能否启动这些程序取决于沙箱的 [Unix 套接字设置](https://code.claude.com/docs/zh-CN/settings-reference.md#sandbox-network-allowunixsockets):必须先安装可选的 seccomp 过滤器,才能阻止该套接字。要允许这些启动,请设置 `allowAllUnixSockets`,这会向沙箱命令开放所有 Unix 套接字。147> 在 WSL2 上,WSL 会通过 Unix 套接字将 Windows 二进制文件(例如 `cmd.exe`、`powershell.exe` 或 `/mnt/c/` 下的任何内容)的启动交给 Windows 主机处理,因此沙箱命令能否启动这些程序取决于沙箱的 [Unix 套接字设置](https://code.claude.com/docs/zh-CN/settings-reference.md#sandbox-network-allowunixsockets):必须先安装可选的 seccomp 过滤器,才能阻止该套接字。要允许这些启动,请设置 `allowAllUnixSockets`,这会向沙箱命令开放所有 Unix 套接字。

169 148 

149#### 为 bubblewrap 添加 AppArmor 配置文件

150 

151如果 Claude Code 运行的是 `/usr/bin/bwrap`,并且出现以下任一情况,请添加该配置文件:

152 

153* Claude Code [报告 Ubuntu 对用户命名空间的 AppArmor 限制](#apparmor-restriction-stops-bubblewrap)

154* 在[该限制开启时](#bwrap-uid-map-permission-denied),沙箱命令失败并显示 `bwrap: setting up uid map: Permission denied` 或 `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted`

155 

156Claude Code 会运行 `PATH` 上的第一个 `bwrap`,除非托管设置在 [`sandbox.bwrapPath`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-bwrappath) 中指定了一个。要查看排在最前面的是哪个 `bwrap`,请在用于启动 Claude Code 的 shell 中运行 `which bwrap`。如果 Claude Code 运行的是 `/usr/bin/bwrap` 以外的任何路径,请改为[使用 `sysctl` 解除该限制](#apparmor-restriction-stops-bubblewrap)。

157 

158要为 `/usr/bin/bwrap` 添加配置文件,请运行以下命令:

159 

160```bash theme={null}

161sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'

162abi <abi/4.0>,

163include <tunables/global>

164 

165profile bwrap /usr/bin/bwrap flags=(unconfined) {

166 userns,

167 include if exists <local/bwrap>

168}

169EOF

170```

171 

172重新加载 AppArmor 以使其生效:

173 

174```bash theme={null}

175sudo systemctl reload apparmor

176```

177 

178然后重启 Claude Code,并[确认沙箱正常工作](#confirm-commands-run-inside-the-sandbox)。

179 

170### 沙箱模式180### 沙箱模式

171 181 

172Claude Code 提供两种沙箱模式。在这两种模式下,沙箱都会强制执行相同的文件系统和网络限制;区别仅在于沙箱命令是自动批准还是需要明确的权限。182Claude Code 提供两种沙箱模式。在这两种模式下,沙箱都会强制执行相同的文件系统和网络限制;区别仅在于沙箱命令是自动批准还是需要明确的权限。


716 726 

717除 `enabled` 之外的两个设置项控制沙箱无法运行命令时会发生什么:727除 `enabled` 之外的两个设置项控制沙箱无法运行命令时会发生什么:

718 728 

719* **`failIfUnavailable`**:缺少依赖(例如 Linux 上的 bubblewrap)时会阻止 Claude Code 启动,而不是回退到非沙箱化执行729* **`failIfUnavailable`**:当平台不支持沙箱或启动时的依赖检查失败时,Claude Code 会拒绝启动,而不是回退到非沙箱化执行

720* **`allowUnsandboxedCommands: false`**:Claude Code 忽略 `dangerouslyDisableSandbox` 逃生舱,因此当命令在沙箱下失败时,Claude 无法在沙箱外重试该命令730* **`allowUnsandboxedCommands: false`**:Claude Code 忽略 `dangerouslyDisableSandbox` 逃生舱,因此当命令在沙箱下失败时,Claude 无法在沙箱外重试该命令

721 731 

722请考虑同时添加以下内容:732请考虑同时添加以下内容:


902 912 

903在无特权容器中,[bubblewrap](#os-level-enforcement) 无法挂载新的 `/proc` 文件系统,因此沙箱化命令会因 `bwrap` 错误(如 `Can't mount proc on /newroot/proc: Operation not permitted`)而失败。将 [`enableWeakerNestedSandbox`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-enableweakernestedsandbox) 设置为 `true`,以便沙箱改为绑定挂载容器现有的 `/proc`。仅当外部容器已提供您需要的隔离边界时才使用此设置,因为该设置会向沙箱化命令公开进程信息,而新的 `/proc` 挂载会隐藏这些信息。913在无特权容器中,[bubblewrap](#os-level-enforcement) 无法挂载新的 `/proc` 文件系统,因此沙箱化命令会因 `bwrap` 错误(如 `Can't mount proc on /newroot/proc: Operation not permitted`)而失败。将 [`enableWeakerNestedSandbox`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-enableweakernestedsandbox) 设置为 `true`,以便沙箱改为绑定挂载容器现有的 `/proc`。仅当外部容器已提供您需要的隔离边界时才使用此设置,因为该设置会向沙箱化命令公开进程信息,而新的 `/proc` 挂载会隐藏这些信息。

904 914 

915### Ubuntu 的 AppArmor 限制阻止了 bubblewrap

916 

917在 Linux 和 WSL2 上,消息 `Ubuntu's AppArmor restriction on user namespaces stops bubblewrap here` 表示 Ubuntu 的 AppArmor 限制导致沙箱无法启动。

918 

919要让沙箱启动,请通过以下两种方式之一解除该限制:

920 

921* 如果 Claude Code 运行的是 `/usr/bin/bwrap`,请[为 bubblewrap 添加 AppArmor 配置文件](#add-an-apparmor-profile-for-bubblewrap)

922* 在您的 shell 中运行 `sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0`,这会为机器上的所有程序解除该限制,并持续到您重新启动为止

923 

924然后重新启动 Claude Code 并[确认沙箱正常工作](#confirm-commands-run-inside-the-sandbox)。

925 

926在您解除该限制之前,命令会在常规权限流程下不使用沙箱运行;如果 [`sandbox.failIfUnavailable`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-failifunavailable) 为 `true`,Claude Code 则会拒绝启动。

927 

928### 沙箱化命令因 `bwrap: setting up uid map: Permission denied` 失败

929 

930在 Linux 和 WSL2 上,此错误或 `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted` 可能意味着 Ubuntu 对用户命名空间的 AppArmor 限制正在阻止 bubblewrap。要进行检查,请在您的 shell 中运行 `sysctl kernel.apparmor_restrict_unprivileged_userns`:

931 

932* `kernel.apparmor_restrict_unprivileged_userns = 1`:该限制已启用。如果 Claude Code 运行的是 `/usr/bin/bwrap`,请[添加 AppArmor 配置文件](#add-an-apparmor-profile-for-bubblewrap),或运行 `sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0`,这会为所有程序解除该限制,直到您重新启动为止。然后重新启动 Claude Code 并[确认沙箱正常工作](#confirm-commands-run-inside-the-sandbox)

933* 任何其他输出:该限制不是原因。要报告此故障,请在 Claude Code 提示符处运行 [`/feedback`](https://code.claude.com/docs/zh-CN/commands#all-commands)

934 

935在 v2.1.310 之前,Claude Code 不会在启动时检查此限制,因此 `/sandbox` 不会报告它。

936 

905### 0 字节只读文件出现在 `.claude` 设置路径中,且"是的,不要再问"无法保存937### 0 字节只读文件出现在 `.claude` 设置路径中,且"是的,不要再问"无法保存

906 938 

907在 Linux 和 WSL2 上,沙箱化命令运行期间,沙箱通过在尚不存在的文件位置创建 0 字节只读占位符来保持对该文件的写入拒绝。沙箱随后会移除占位符。939在 Linux 和 WSL2 上,沙箱化命令运行期间,沙箱通过在尚不存在的文件位置创建 0 字节只读占位符来保持对该文件的写入拒绝。沙箱随后会移除占位符。

Details

472 472 

473要确认 trap 是否生效,请在 `trap` 行正下方添加一行,调用一个不存在的命令,例如 `no-such-command`。从您的 shell 运行 hook 文件,检查 `echo $?` 是否输出 `1`,然后删除该行。473要确认 trap 是否生效,请在 `trap` 行正下方添加一行,调用一个不存在的命令,例如 `no-such-command`。从您的 shell 运行 hook 文件,检查 `echo $?` 是否输出 `1`,然后删除该行。

474 474 

475#### 了解发送生成请求的原因

476 

477您的 hook 会在 `CLAUDE_RUNNER_SPAWN_REASON` 中收到每个生成请求的原因,因此您可以连同 `CLAUDE_RUNNER_SESSION_UUID` 一起记录 hook 运行的原因。需要编排器上安装 Claude Code v2.1.318 或更高版本。请以 `"${CLAUDE_RUNNER_SPAWN_REASON:-}"` 形式读取它,因为它可能未设置;无论其值为何,都请启动运行器。如果您的 hook 根据它进行分支,请保留一个默认分支,因为 Anthropic 可能会添加新的值。

478 

479要查找早先请求的原因,请在每个编排器副本的日志中搜索 `session=` 以及该会话的 `CLAUDE_RUNNER_SESSION_UUID`,而不是其 `session_...` ID。`ok session=` 和 `nack session=` 行会在 `reason=` 之后显示 `CLAUDE_RUNNER_SPAWN_REASON` 的值;如果该变量未设置,则显示 `reason=-`:

480 

481* **`[runner:orchestrator] ok session=`**:hook 以 0 退出

482* **`[runner:orchestrator] nack session=`**:编排器正在向 Anthropic 报告失败的生成请求

483 

484每个值仅给出 Anthropic 为该会话记录的最后一个原因,而不是其历史记录:

485 

486| 值 | 发生了什么 | 检查什么 |

487| :- | :- | :- |

488| `session_created` | 这是新会话的第一次生成请求 | 无需检查。不要依赖它来识别会话的第一次请求,因为在固定队列运行器或待命运行器持有过该会话之后,您的 hook 看到的第一次请求可能携带 `runner_lost`。 |

489| `no_runner_registered` | 在 `--expected-spawn-seconds` 内没有运行器为上一次请求注册,且 Anthropic 没有为其记录任何失败报告 | 该会话较早的日志行中出现 `stop: no nack for session=` 或 `nack failed session=`,表示未记录任何失败报告。请查看其之前的任何 hook 错误;如果编排器当时正在停止,请参阅[停止或重启编排器](#stop-or-restart-the-orchestrator)。在出现 `ok session=` 行之后,请检查其运行器是否已启动并在 `--expected-spawn-seconds` 内注册。如果没有任何副本记录该请求,请检查您的编排器是否发生重启以及是否有 `poll failed` 行。 |

490| `hook_failed` | 您的编排器报告上一次请求失败且可以重试,例如因为您的 hook 以 1 退出,或在 `--hook-timeout` 结束时仍在运行。当您的编排器未运行 hook 就将请求交还给 Anthropic 时(例如编排器正在停止时),该值也相同。 | 找到此请求之前该会话的最后一行 `[runner:orchestrator] nack session=` 或 `stop: handing back session=`。编排器发送的生成错误位于 `reason=` 值之后,并可能延续到后续几行。`handing back session=` 行表示编排器当时正在停止且未运行 hook,因此 hook 无需修复。 |

491| `runner_lost` | 持有该会话的运行器停止向 Anthropic 报告、已注销或已被删除 | 查找是什么停止了运行器或切断了它与 Anthropic 的连接,例如节点驱逐、内存不足终止、竞价实例回收,或您自己的发布或缩容 |

492| `runner_reported_failure` | 上一个运行器报告会话在其上失败,例如在检出期间 | 查看上一个运行器的日志。如果许多会话都得到此值,请检查镜像和仓库设置。 |

493| `resumed` | 会话曾被暂停,现在再次需要运行器。例如,其运行器在 [`--release-idle-session-min`](#make-on-demand-runners-exit-when-idle) 下释放了它,之后它收到了新消息。 | 无需检查 |

494| `requeued` | 会话被放回队列,例如当 Owner 选择 **Retry** 或被阻止的会话收到新消息时 | 如果同一会话反复得到此值,请查看其 `nack session=` 行上的错误。如果其 hook 以 0 退出,请查看运行器的日志。 |

495| `server_retry` | Anthropic 放弃了上一次请求,或放弃了在其运行器上启动该会话,并正在重试。您的 hook 没有失败。 | 单次请求无需检查。如果该值反复出现(无论是在一个会话上还是在许多会话上),请向[您的 Anthropic 客户团队](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#report-an-issue)报告。 |

496| `prewarm` | 这是预热请求,尚无会话 | 无需检查 |

497 

475### 停止或重启编排器498### 停止或重启编排器

476 499 

477要在不中断正在运行的 `spawn-runner` hook 的情况下停止或重启编排器,请使用 [`--shutdown-drain-sec`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#orchestrator-cli-flags) 启动它。这样,收到 `SIGTERM` 时,编排器会给正在运行的 hook 最多您所设置的秒数来完成。要选择该值并相应地设置您的进程管理器,请参阅[确定 `--shutdown-drain-sec` 和编排器的停止超时时间](#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)。500要在不中断正在运行的 `spawn-runner` hook 的情况下停止或重启编排器,请使用 [`--shutdown-drain-sec`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#orchestrator-cli-flags) 启动它。这样,收到 `SIGTERM` 时,编排器会给正在运行的 hook 最多您所设置的秒数来完成。要选择该值并相应地设置您的进程管理器,请参阅[确定 `--shutdown-drain-sec` 和编排器的停止超时时间](#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)。

Details

172 172 

173通过 [Claude apps 网关](#platform-availability)登录的客户端会从网关获取其设置,并在会话开始前等待该获取完成,因此下面列表中的获取不适用于它。[强制失败即关闭的启动](#enforce-fail-closed-startup)介绍了该获取失败时会发生什么。173通过 [Claude apps 网关](#platform-availability)登录的客户端会从网关获取其设置,并在会话开始前等待该获取完成,因此下面列表中的获取不适用于它。[强制失败即关闭的启动](#enforce-fail-closed-startup)介绍了该获取失败时会发生什么。

174 174 

175> [!NOTE]

176>

177> 对于存储在机器上的 Team 或 Enterprise claude.ai 登录,Anthropic 可能会要求在会话开始前获取您组织的设置。在这种情况下,无论下面的列表如何说明,开发者在以下情况下都[无法启动会话](https://code.claude.com/docs/zh-CN/errors.md#couldnt-load-your-organizations-settings):

178>

179> * 其登录已过期,直到他们运行 `claude auth login`

180> * Claude Code 既没有这些设置,也没有最近的缓存副本。请检查机器是否能够访问 `api.anthropic.com`

181>

182> 如果启动消息中包含 `before a session can start` 或 `Your Claude session has expired`,则表示该要求适用。

183 

175**首次启动且无缓存设置:**184**首次启动且无缓存设置:**

176 185 

177* 当开发者在启动时登录(例如首次运行或执行 `/logout` 之后),Claude Code 会在打开会话前等待获取最多五秒。如果策略及时到达,Claude Code 会从第一个屏幕开始执行它,并在该屏幕上显示您的 [`companyAnnouncements`](https://code.claude.com/docs/zh-CN/settings-reference#companyannouncements)。当负载需要[安全批准](#security-approval-dialogs)时,Claude Code 会结束等待,并在开发者批准后应用该负载186* 当开发者在启动时登录(例如首次运行或执行 `/logout` 之后),Claude Code 会在打开会话前等待获取最多五秒。如果策略及时到达,Claude Code 会从第一个屏幕开始执行它,并在该屏幕上显示您的 [`companyAnnouncements`](https://code.claude.com/docs/zh-CN/settings-reference#companyannouncements)。当负载需要[安全批准](#security-approval-dialogs)时,Claude Code 会结束等待,并在开发者批准后应用该负载

178* 在任何其他启动情况下,以及当这五秒等待结束时,Claude Code 会在获取继续进行的同时打开会话,因此在设置加载和限制生效之前会有一段短暂的时间窗口187* 在任何其他启动情况下,以及当这五秒等待结束时,Claude Code 会在获取继续进行的同时打开会话,因此在设置加载和限制生效之前会有一段短暂的时间窗口

179* 如果获取失败,Claude Code 会在没有服务器托管设置的情况下继续运行,并在交互式会话中警告没有远程策略生效;端点托管设置仍然生效。如果某个托管来源设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup),Claude Code 则会退出188* 如果获取失败,Claude Code 会在没有服务器托管设置的情况下继续运行,并在交互式会话和 [Claude Desktop 的 Code 标签页](https://code.claude.com/docs/zh-CN/desktop.md)中警告没有远程策略生效;端点托管设置仍然生效。如果某个托管来源设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup),Claude Code 则会退出

180 189 

181**后续启动且有缓存设置:**190**后续启动且有缓存设置:**

182 191 


186* 缓存的 [`prependPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#prependplugins)、[`appendPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#appendplugins) 或 [`enabledPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#enabledplugins) 值在会话的获取确认负载之前,无法移除内置守卫、更改其位置或将其关闭195* 缓存的 [`prependPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#prependplugins)、[`appendPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#appendplugins) 或 [`enabledPlugins`](https://code.claude.com/docs/zh-CN/settings-reference#enabledplugins) 值在会话的获取确认负载之前,无法移除内置守卫、更改其位置或将其关闭

187* 在[端点托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#choose-a-delivery-mechanism)自行列出或启用插件的机器上,仅由缓存列表启用的插件在获取确认负载之前被视为[用户的](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#install-your-organizations-mods)插件,而不是您组织的插件196* 在[端点托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#choose-a-delivery-mechanism)自行列出或启用插件的机器上,仅由缓存列表启用的插件在获取确认负载之前被视为[用户的](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#install-your-organizations-mods)插件,而不是您组织的插件

188* Claude Code 在后台获取最新设置197* Claude Code 在后台获取最新设置

189* 缓存的设置在网络故障期间保持有效。如果启动时的获取失败,Claude Code 会在交互式会话中警告缓存的策略正在生效198* 缓存的设置在网络故障期间保持有效。如果启动时的获取失败,Claude Code 会在交互式会话和 Code 标签页中警告缓存的策略正在生效

190* 在获取成功之前,启动时暂缓的值保持暂缓199* 在获取成功之前,启动时暂缓的值保持暂缓

191 200 

192Claude Code 会暂缓缓存的 `env` 块中的若干类变量,直到服务器为该会话确认负载。这可以防止缓存的代理、证书颁发机构、端点或凭据值对确认负载的设置获取进行重定向、拦截或重新身份验证。这项加固仅适用于从服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)不受影响。被暂缓的类别包括:201Claude Code 会暂缓缓存的 `env` 块中的若干类变量,直到服务器为该会话确认负载。这可以防止缓存的代理、证书颁发机构、端点或凭据值对确认负载的设置获取进行重定向、拦截或重新身份验证。这项加固仅适用于从服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)不受影响。被暂缓的类别包括:


221 * 其中没有任何设置回退到更严格的值。230 * 其中没有任何设置回退到更严格的值。

222 * 负载中包含除这两个保留期键之外的其他键。231 * 负载中包含除这两个保留期键之外的其他键。

223 232 

224 此时,启动通知、`/status` 和 `claude doctor` 会报告[加载失败](https://code.claude.com/docs/zh-CN/errors.md#remote-managed-settings-failed-to-load),原因为 `no setting in the server response could be applied as written`,该条目会说明会话基于哪个策略运行。[强制失败即关闭的启动](#enforce-fail-closed-startup)的客户端则会在启动时退出。233 此时,启动通知、`/status` 和 `claude doctor` 会报告[加载失败](https://code.claude.com/docs/zh-CN/errors.md#remote-managed-settings-failed-to-load),原因为 `no setting in the server response could be applied as written`,该条目会说明会话基于哪个策略运行。[强制失败即关闭的启动](#enforce-fail-closed-startup)的客户端则会在启动时退出。如果启动时停止并显示消息,提示您的组织要求 `before a session can start` 获取其设置,请参阅[Claude Code 无法加载您组织的设置](https://code.claude.com/docs/zh-CN/errors.md#couldnt-load-your-organizations-settings)。

225* [安全批准对话框](#security-approval-dialogs)评估的是修复后的负载,因此被剥离的无效条目永远不会被提交批准,也永远不会执行。234* [安全批准对话框](#security-approval-dialogs)评估的是修复后的负载,因此被剥离的无效条目永远不会被提交批准,也永远不会执行。

226 235 

227要调试分发问题,请运行 `claude --debug-file <path>` 并在日志中搜索 `Remote settings`。在将负载更改推广到整个组织之前,请先在测试机器上使用 `claude doctor` 进行验证。236要调试分发问题,请运行 `claude --debug-file <path>` 并在日志中搜索 `Remote settings`。在将负载更改推广到整个组织之前,请先在测试机器上使用 `claude doctor` 进行验证。

228 237 

229### 强制失败即关闭的启动238### 强制失败即关闭的启动

230 239 

231默认情况下,如果启动时远程设置获取失败,CLI 会使用上一次成功获取时缓存的设置继续运行,但 Claude Code 在获取成功之前[暂缓的值](#fetch-and-caching-behavior)除外。在从未获取过这些设置的机器上,CLI 会在没有服务器托管设置的情况下继续运行,并仍然应用设备上的任何[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)。240默认情况下,如果启动时远程设置获取失败,CLI 会使用上一次成功获取时缓存的设置继续运行。Claude Code [暂缓的值](#fetch-and-caching-behavior)在获取成功之前保持暂缓。在从未获取过这些设置的机器上,CLI 会在没有服务器托管设置的情况下继续运行,并仍然应用设备上的任何[端点托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)。[Anthropic 也可能改为要求必须获取这些设置](#fetch-and-caching-behavior)。

232 241 

233要阻止客户端在使用缓存的或缺失的服务器托管设置时启动,请在您的托管设置中设置 `forceRemoteSettingsRefresh: true`。242要阻止客户端在使用缓存的或缺失的服务器托管设置时启动,请在您的托管设置中设置 `forceRemoteSettingsRefresh: true`。

234 243 


370| 用户删除缓存的设置文件 | 发生[首次启动行为](#fetch-and-caching-behavior) |379| 用户删除缓存的设置文件 | 发生[首次启动行为](#fetch-and-caching-behavior) |

371| 用户运行修改的 Claude Code 二进制文件 | 能够运行修改的客户端的用户可以绕过任何客户端控制 |380| 用户运行修改的 Claude Code 二进制文件 | 能够运行修改的客户端的用户可以绕过任何客户端控制 |

372| 用户运行较旧的 Claude Code 版本 | 早于服务器管理设置的版本不会获取或应用它们 |381| 用户运行较旧的 Claude Code 版本 | 早于服务器管理设置的版本不会获取或应用它们 |

373| API 不可用 | 如果可用,缓存的设置应用,但 Claude Code 在获取成功前暂扣的[值](#fetch-and-caching-behavior)除外。没有缓存的情况下,Claude Code 在下次成功获取前不强制执行任何服务器管理的设置,但仍然在设备上应用任何[端点管理的设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)。使用 `forceRemoteSettingsRefresh: true` 时,CLI 退出而不是继续,但[`claude auth` 子命令](#enforce-fail-closed-startup)除外。通过[Claude 应用网关](#platform-availability)登录的客户端在启动时退出而没有该设置,具有相同的 `claude auth` 豁免 |382| API 不可用 | 如果可用,则应用缓存的设置。没有缓存的情况下,Claude Code 在下次成功获取前不强制执行任何服务器管理的设置。[获取和缓存行为](#fetch-and-caching-behavior)列出了例外情况,包括 Anthropic 要求这些设置的情况。使用 `forceRemoteSettingsRefresh: true` 时,CLI 退出而不是继续,但[`claude auth` 子命令](#enforce-fail-closed-startup)除外。通过[Claude 应用网关](#platform-availability)登录的客户端在启动时退出而没有该设置,具有相同的 `claude auth` 豁免 |

374| 用户使用不同的组织进行身份验证 | 不为托管组织外的账户传递设置,包括使用 [Console API 密钥](#platform-availability)进行身份验证的会话 |383| 用户使用不同的组织进行身份验证 | 不为托管组织外的账户传递设置,包括使用 [Console API 密钥](#platform-availability)进行身份验证的会话 |

375| 用户配置[第三方模型提供商](#platform-availability) | 服务器管理的设置被绕过。这包括设置 `CLAUDE_CODE_USE_BEDROCK`、`CLAUDE_CODE_USE_MANTLE`、`CLAUDE_CODE_USE_VERTEX`、`CLAUDE_CODE_USE_FOUNDRY`、`CLAUDE_CODE_USE_ANTHROPIC_AWS` 或非默认的 `ANTHROPIC_BASE_URL` |384| 用户配置[第三方模型提供商](#platform-availability) | 服务器管理的设置被绕过。这包括设置 `CLAUDE_CODE_USE_BEDROCK`、`CLAUDE_CODE_USE_MANTLE`、`CLAUDE_CODE_USE_VERTEX`、`CLAUDE_CODE_USE_FOUNDRY`、`CLAUDE_CODE_USE_ANTHROPIC_AWS` 或非默认的 `ANTHROPIC_BASE_URL` |

376| 网络流量被拦截或重定向 | 禁用的 TLS 验证或拦截的流量可以改变客户端接收的设置 |385| 网络流量被拦截或重定向 | 禁用的 TLS 验证或拦截的流量可以改变客户端接收的设置 |

settings.md +2 −2

Details

199* **设置错误**:用户、项目或本地文件有无效的 JSON 或架构拒绝的值。在交互式会话启动时,Claude Code 显示一个对话框,让您在 Claude 的帮助下修复文件、退出,或在不加载这些损坏设置的情况下继续。199* **设置错误**:用户、项目或本地文件有无效的 JSON 或架构拒绝的值。在交互式会话启动时,Claude Code 显示一个对话框,让您在 Claude 的帮助下修复文件、退出,或在不加载这些损坏设置的情况下继续。

200* **设置警告**:仅单个条目失败,如格式错误的权限规则或未知的 hook 事件名称。Claude Code 跳过这些值并保持文件的其余部分生效。200* **设置警告**:仅单个条目失败,如格式错误的权限规则或未知的 hook 事件名称。Claude Code 跳过这些值并保持文件的其余部分生效。

201* **托管设置**:Claude Code 继续强制执行文件的其余部分。[托管设置中的无效条目](https://code.claude.com/docs/zh-CN/managed-settings.md#invalid-entries-in-managed-settings)说明它删除什么以及哪些键回退到更严格的值,直到您修复它们。对于不是有效 JSON 的托管设置文档,请参阅[托管设置文档无法解析](https://code.claude.com/docs/zh-CN/errors.md#managed-settings-document-could-not-be-parsed)。201* **托管设置**:Claude Code 继续强制执行文件的其余部分。[托管设置中的无效条目](https://code.claude.com/docs/zh-CN/managed-settings.md#invalid-entries-in-managed-settings)说明它删除什么以及哪些键回退到更严格的值,直到您修复它们。对于不是有效 JSON 的托管设置文档,请参阅[托管设置文档无法解析](https://code.claude.com/docs/zh-CN/errors.md#managed-settings-document-could-not-be-parsed)。

202* **配置错误**:`~/.claude.json` 无法解析。Claude Code 将损坏的文件复制到 `~/.claude/backups/.claude.json.corrupted.<timestamp>` 并询问是否退出并手动修复它或重置为默认配置;`-p` 运行打印错误并退出。要恢复您之前的状态,复制回 `~/.claude/backups/` 中最近五个 `.claude.json.backup.<timestamp>` 文件之一,Claude Code 在写入文件前保存。202* **配置错误**:[`~/.claude.json`](https://code.claude.com/docs/zh-CN/claude-directory#ce-claude-json) 无法解析。`claude -p` 运行会退出,您的文件保持不变。请参阅 [Configuration error in \~/.claude.json](https://code.claude.com/docs/zh-CN/errors.md#configuration-error-in-claude-json) 以恢复较早的副本。Claude Code 将损坏的文件复制到 `~/.claude/backups/.claude.json.corrupted.<timestamp>`,并在交互式会话中询问是退出并修复它,还是重置为默认配置。当文件为空且没有可恢复的备份时,Claude Code 以默认设置启动。

203 203 

204在您继续后,运行 `/status` 以查看受影响的文件,`claude doctor` 以查看每个错误的详情。204在您继续后,运行 `/status` 以查看受影响的文件,`claude doctor` 以查看每个错误的详情。

205 205 

206`-p` 运行显示无对话框。除非[托管设置文档无法解析](https://code.claude.com/docs/zh-CN/errors.md#managed-settings-document-could-not-be-parsed),Claude Code 跳过损坏的文件或值并继续其余的,因此在忽略设置的 `-p` 运行后,运行 `claude doctor` 以查看它删除了什么。206`-p` 运行不显示对话框。除非[托管设置文档无法解析](https://code.claude.com/docs/zh-CN/errors.md#managed-settings-document-could-not-be-parsed),Claude Code 会跳过损坏的用户、项目或本地文件或其损坏的值,并继续处理其余部分。在忽略某项设置的 `-p` 运行之后,请从终端运行 `claude doctor` 以查看它删除了什么。

207 207 

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

209 209 

Details

40| [`autoCompactWindow`](#autocompactwindow) | 设置上下文达到多满时 Claude Code 执行[压缩](https://code.claude.com/docs/zh-CN/context-window.md) | 记忆与上下文 | 任意文件 |40| [`autoCompactWindow`](#autocompactwindow) | 设置上下文达到多满时 Claude Code 执行[压缩](https://code.claude.com/docs/zh-CN/context-window.md) | 记忆与上下文 | 任意文件 |

41| [`autoConnectIde`](#autoconnectide) | 从外部终端自动连接到正在运行的 [VS Code](https://code.claude.com/docs/zh-CN/vs-code.md) 或 [JetBrains](https://code.claude.com/docs/zh-CN/jetbrains.md#from-external-terminals) IDE | 全局配置设置 | 全局配置 |41| [`autoConnectIde`](#autoconnectide) | 从外部终端自动连接到正在运行的 [VS Code](https://code.claude.com/docs/zh-CN/vs-code.md) 或 [JetBrains](https://code.claude.com/docs/zh-CN/jetbrains.md#from-external-terminals) IDE | 全局配置设置 | 全局配置 |

42| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | 在 claude.ai 用量限制重置后,在已打开的会话中等待并[自动继续任务](https://code.claude.com/docs/zh-CN/interactive-mode.md#wait-for-a-usage-limit-to-reset) | 界面与终端 | 用户或托管 |42| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | 在 claude.ai 用量限制重置后,在已打开的会话中等待并[自动继续任务](https://code.claude.com/docs/zh-CN/interactive-mode.md#wait-for-a-usage-limit-to-reset) | 界面与终端 | 用户或托管 |

43| [`autoInstallIdeExtension`](#autoinstallideextension) | 关闭从 VS Code 终端自动安装 [IDE 扩展](https://code.claude.com/docs/zh-CN/vs-code.md#install-the-extension) | 全局配置设置 | 全局配置 |43| [`autoInstallIdeExtension`](#autoinstallideextension) | 允许 `/ide` 从外部终端安装 [IDE 扩展](https://code.claude.com/docs/zh-CN/vs-code.md#install-the-extension) | 全局配置设置 | 全局配置 |

44| [`autoMemoryDirectory`](#automemorydirectory) | 将[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#auto-memory)存储在您选择的目录中 | 记忆与上下文 | 任意文件 |44| [`autoMemoryDirectory`](#automemorydirectory) | 将[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#auto-memory)存储在您选择的目录中 | 记忆与上下文 | 任意文件 |

45| [`autoMemoryEnabled`](#automemoryenabled) | 关闭或开启[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#auto-memory) | 记忆与上下文 | 任意文件 |45| [`autoMemoryEnabled`](#automemoryenabled) | 关闭或开启[自动记忆](https://code.claude.com/docs/zh-CN/memory.md#auto-memory) | 记忆与上下文 | 任意文件 |

46| [`autoMode`](#automode) | 为[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)分类器添加您自己的允许和拒绝规则 | 权限设置 | 用户或托管 |46| [`autoMode`](#automode) | 为[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)分类器添加您自己的允许和拒绝规则 | 权限设置 | 用户或托管 |


139| [`outputStyle`](#outputstyle) | 通过[输出样式](https://code.claude.com/docs/zh-CN/output-styles.md)更改 Claude 的角色、语气和输出格式 | 模型与回复 | 任意文件 |139| [`outputStyle`](#outputstyle) | 通过[输出样式](https://code.claude.com/docs/zh-CN/output-styles.md)更改 Claude 的角色、语气和输出格式 | 模型与回复 | 任意文件 |

140| [`parentSettingsBehavior`](#parentsettingsbehavior) | 在部署[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)时,应用或丢弃 [SDK 或 IDE 宿主](https://code.claude.com/docs/zh-CN/managed-settings.md#let-an-embedding-host-add-policy)传入的限制 | 企业与托管设置 | 托管 |140| [`parentSettingsBehavior`](#parentsettingsbehavior) | 在部署[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)时,应用或丢弃 [SDK 或 IDE 宿主](https://code.claude.com/docs/zh-CN/managed-settings.md#let-an-embedding-host-add-policy)传入的限制 | 企业与托管设置 | 托管 |

141| [`permissionExplainerEnabled`](#permissionexplainerenabled) | 已在 v2.1.257 中移除,shell 权限提示上的 `Ctrl+E` 命令说明也一并移除 | 全局配置设置 | 全局配置 |141| [`permissionExplainerEnabled`](#permissionexplainerenabled) | 已在 v2.1.257 中移除,shell 权限提示上的 `Ctrl+E` 命令说明也一并移除 | 全局配置设置 | 全局配置 |

142| [`permissions`](#permissions) | 设置允许、询问和拒绝规则以及初始[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md) | 权限设置 | 任意文件 |142| [`permissions`](#permissions) | 设置允许、询问和拒绝规则以及默认的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md) | 权限设置 | 任意文件 |

143| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | 授予 Claude 访问[当前目录之外的目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)中文件的能力 | 权限设置 | 任意文件 |143| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | 授予 Claude 访问[当前目录之外的目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)中文件的能力 | 权限设置 | 任意文件 |

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.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)除外 | 权限设置 | 任意文件 |

148| [`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) | 权限设置 | 任意文件 |

149| [`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),包括读取包含机密的文件 | 权限设置 | 任意文件 |

150| [`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) | 权限设置 | 任意文件 |

151| [`plansDirectory`](#plansdirectory) | 选择[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)写入计划文件的位置 | 记忆与上下文 | 任意文件 |151| [`plansDirectory`](#plansdirectory) | 选择[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)写入计划文件的位置 | 记忆与上下文 | 任意文件 |


804 804 

805## 权限设置805## 权限设置

806 806 

807决定 Claude 无需询问即可执行哪些操作、会话以哪种权限模式启动,以及自动模式的分类器允许哪些操作。有关规则语法和权限模型,请参阅[配置权限](https://code.claude.com/docs/zh-CN/permissions.md)。807决定 Claude 无需询问即可执行哪些操作、新会话的默认权限模式,以及自动模式的分类器允许哪些操作。有关规则语法和权限模型,请参阅[配置权限](https://code.claude.com/docs/zh-CN/permissions.md)。

808 808 

809### `allowManagedPermissionRulesOnly`809### `allowManagedPermissionRulesOnly`

810 810 


899 899 

900### `permissions`900### `permissions`

901 901 

902控制 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.*` 键都嵌套在此对象下。

903 903 

904* **作用域**:[`Any file`](#scopes)904* **作用域**:[`Any file`](#scopes)

905* **类型**:包含 `allow`、`ask`、`deny`、`additionalDirectories`、`blockReadsOutsideWorkingDirectories`、`blockWritesOutsideWorkingDirectories`、`defaultMode`、`disableBypassPermissionsMode` 和 `disableAutoMode` 的对象905* **类型**:包含 `allow`、`ask`、`deny`、`additionalDirectories`、`blockReadsOutsideWorkingDirectories`、`blockWritesOutsideWorkingDirectories`、`defaultMode`、`disableBypassPermissionsMode` 和 `disableAutoMode` 的对象


1137 1137 

1138### `permissions.defaultMode`1138### `permissions.defaultMode`

1139 1139 

1140设置新会话启动时的[权限模式](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)启动。1140设置新会话的默认[权限模式](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)。

1141 1141 

1142* **作用域**:[`Any file`](#scopes)。`auto` 和 `bypassPermissions` 在项目或本地设置中不生效,因此请改为在 `~/.claude/settings.json` 中设置它们。在 v2.1.257 之前,`bypassPermissions` 在任何文件中都会生效。对于 VS Code 扩展启动的对话,Claude Code 仅读取用户、托管和 `--settings` 中的值。1142* **作用域**:[`Any file`](#scopes)。`auto` 和 `bypassPermissions` 在项目或本地设置中不生效,因此请改为在 `~/.claude/settings.json` 中设置它们。在 v2.1.257 之前,`bypassPermissions` 在任何文件中都会生效。对于 VS Code 扩展启动的对话,Claude Code 仅读取用户、托管和 `--settings` 中的值。

1143* **类型**:字符串,取值之一:1143* **类型**:字符串,取值之一:


1267 1267 

1268### `sandbox.failIfUnavailable`1268### `sandbox.failIfUnavailable`

1269 1269 

1270当 `sandbox.enabled` 为 `true` 但由于缺少依赖或平台不受支持而导致沙箱无法启动时,让 Claude Code 在启动时报错退出。没有此键时,Claude Code 会在沙箱外运行命令。将沙箱隔离作为安全门槛的托管部署可以使用此设置。1270当 `sandbox.enabled` 为 `true`,但由于平台不支持或依赖检查失败而导致沙箱无法启动时,让 Claude Code 在启动时报错退出。如果没有此键,Claude Code 会在沙箱外运行命令。将沙箱隔离作为安全关卡的托管部署可以使用此设置。

1271 1271 

1272在沙箱不支持的平台上,启用此键后 Claude Code 将无法启动。请参阅[使用托管设置强制沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md#enforce-sandboxing-with-managed-settings)。1272在沙箱不支持的平台上,启用此键后 Claude Code 将无法启动。请参阅[使用托管设置强制沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md#enforce-sandboxing-with-managed-settings)。

1273 1273 


5087 5087 

5088### `sshHostCommands`5088### `sshHostCommands`

5089 5089 

5090向 [Desktop](https://code.claude.com/docs/zh-CN/desktop.md#create-an-ssh-connection-from-a-command) 环境选择器添加其主机来自某个命令的 SSH 连接。当您创建连接或替换其主机时,Desktop 会在您的计算机上运行该条目的命令,并连接到该命令输出的主机。需要在 macOS 或 Linux 上使用 Claude Desktop v3.6556.0 或更高版本,并使用 Claude 账户登录。5090向 [Desktop](https://code.claude.com/docs/zh-CN/desktop.md#create-an-ssh-connection-from-a-command) 环境选择器添加其主机来自某个命令的 SSH 连接。当您创建连接或为其创建另一台机器时,Desktop 会在您的计算机上运行该条目的命令,并连接到该命令输出的主机。

5091 

5092需要在 macOS 或 Linux 上使用 Claude Desktop v3.6556.0 或更高版本,或在 Windows 上使用 v4.16336.0 或更高版本,并使用 Claude 账户登录。在 Windows 上,Desktop 还必须[通过 OpenSSH 客户端连接](https://code.claude.com/docs/zh-CN/desktop.md#use-your-ssh-configuration)。

5091 5093 

5092* **作用域**:[`User or managed`](#scopes)。只有桌面应用读取此设置项。它从计算机上的[一个托管设置文件或 MDM 策略](https://code.claude.com/docs/zh-CN/desktop.md#distribute-commands-to-your-team)读取托管条目,并忽略[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)中的此设置项。5094* **作用域**:[`User or managed`](#scopes)。只有桌面应用读取此设置项。它从计算机上的[一个托管设置文件或 MDM 策略](https://code.claude.com/docs/zh-CN/desktop.md#distribute-commands-to-your-team)读取托管条目,并忽略[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)中的此设置项。

5093* **类型**:对象数组,每个对象包含必需的 `id`、`name` 和 `command`,以及可选的 `sshIdentityFile` 和 `startDirectory`。Desktop 在不使用 shell 的情况下启动 `command`,因此请[将其写为程序加普通参数](https://code.claude.com/docs/zh-CN/desktop.md#write-the-command)。5095* **类型**:对象数组,每个对象包含必需的 `id`、`name` 和 `command`,以及可选的 `sshIdentityFile` 和 `startDirectory`。Desktop 不会将 `command` 作为 shell 语法读取,因此管道和变量不起作用:请[将其写为程序及其参数](https://code.claude.com/docs/zh-CN/desktop.md#write-the-command)。

5094* **默认值**:未设置5096* **默认值**:未设置

5095 5097 

5096此示例添加一个名为 `Dev box` 的连接,其中 `acme-dev create` 代表您自己的工具:5098此示例添加一个名为 `Dev box` 的连接,其中 `acme-dev create` 代表您自己的工具:


5107}5109}

5108```5110```

5109 5111 

5112在 Windows 上,像 `acme-dev` 这样的单纯名称不起作用,因此请[以程序的完整路径作为命令开头](https://code.claude.com/docs/zh-CN/desktop.md#write-the-command-on-windows)。

5113 

5110在 Claude Code v2.1.307 之前,Edit 工具会拒绝向有效设置文件添加此设置项的更改,并报错 `Unrecognized field: sshHostCommands`。在这些版本上,请改用文本编辑器添加此设置项;Claude Code 可以加载包含此设置项的文件。在 Desktop 中,起作用的版本是 [Code 标签页的 Claude Code 版本](https://code.claude.com/docs/zh-CN/desktop.md#claude-code-version-in-the-code-tab),而不是您终端中的版本。5114在 Claude Code v2.1.307 之前,Edit 工具会拒绝向有效设置文件添加此设置项的更改,并报错 `Unrecognized field: sshHostCommands`。在这些版本上,请改用文本编辑器添加此设置项;Claude Code 可以加载包含此设置项的文件。在 Desktop 中,起作用的版本是 [Code 标签页的 Claude Code 版本](https://code.claude.com/docs/zh-CN/desktop.md#claude-code-version-in-the-code-tab),而不是您终端中的版本。

5111 5115 

5112## 身份验证与提供商5116## 身份验证与提供商


5583 5587 

5584阻止 CLI 启动,直到 Claude Code 重新获取了最新的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)。如果获取失败,Claude Code 会退出,而不是使用缓存的设置或在没有设置的情况下继续运行。如果您的环境无法接受会话在没有托管策略的情况下运行,哪怕只是短暂的时间窗口,请设置此项。5588阻止 CLI 启动,直到 Claude Code 重新获取了最新的[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md)。如果获取失败,Claude Code 会退出,而不是使用缓存的设置或在没有设置的情况下继续运行。如果您的环境无法接受会话在没有托管策略的情况下运行,哪怕只是短暂的时间窗口,请设置此项。

5585 5589 

5586未设置此键时,Claude Code 不会因获取操作而阻止启动,不过当开发者在启动时登录时,它会最多等待五秒钟以完成获取。Cloud 网关会话始终会等待,如果无法连接到网关则会退出。5590未设置此键时,Claude Code 不会因获取操作而阻止启动,不过当开发者在启动时登录时,它会最多等待五秒钟以完成获取。[Anthropic 可以要求必须获取这些设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md#fetch-and-caching-behavior),此时在没有这些设置的情况下确实会阻止启动。Cloud gateway 会话会等待,如果无法连接到网关则会退出。

5587 5591 

5588* **作用域**:[`Managed`](#scopes)。Claude Code 会遵循任何管理员控制的托管来源中的 `true`,即使该来源不是最高优先级的来源。5592* **作用域**:[`Managed`](#scopes)。Claude Code 会遵循任何管理员控制的托管来源中的 `true`,即使该来源不是最高优先级的来源。

5589* **类型**:Boolean5593* **类型**:Boolean

5590 * `true`:Claude Code 阻止启动,直到重新获取了最新的服务器托管设置,如果获取失败则退出5594 * `true`:Claude Code 阻止启动,直到重新获取了最新的服务器托管设置,如果获取失败则退出

5591 * `false`:Claude Code 不会因获取操作而阻止启动,不过在登录启动时会最多等待五秒钟以完成获取5595 * `false`:除非 Anthropic 要求必须获取这些设置,否则 Claude Code 不会因获取操作而阻止启动,不过在登录启动时会最多等待五秒钟以完成获取

5592* **默认值**:`false`5596* **默认值**:`false`

5593 5597 

5594```json managed-settings.json theme={null}5598```json managed-settings.json theme={null}


5823 5827 

5824### `autoInstallIdeExtension`5828### `autoInstallIdeExtension`

5825 5829 

5826从 VS Code 终端运行 Claude Code 时,自动安装 Claude Code IDE 扩展。在 VS Code 或 JetBrains 终端内运行 Claude Code 时,此项在 `/config` 中显示为 **Auto-install IDE extension**。5830从外部终端运行 [`/ide`](https://code.claude.com/docs/zh-CN/commands) 命令时,允许该命令在正在运行的 VS Code、Cursor 或 Devin Desktop 中安装 Claude Code IDE 扩展。Claude Code 启动时不会安装该扩展。在 VS Code 或 JetBrains 终端内运行 Claude Code 时,此项在 `/config` 中显示为 **Auto-install IDE extension**。

5827 5831 

5828* **作用域**:[`Global config`](#scopes)5832* **作用域**:[`Global config`](#scopes)

5829* **类型**:Boolean5833* **类型**:Boolean

5830 * `true`:从 VS Code 终端运行 Claude Code 时,它会自动安装 IDE 扩展5834 * `true`:`/ide` 会安装该扩展

5831 * `false`:Claude Code 不会自动安装扩展5835 * `false`:`/ide` 不会安装该扩展

5832* **默认值**:`true`5836* **默认值**:`true`

5833* **单会话覆盖**:将 [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 `1` 可在单个会话中跳过安装,即使此键为 `true`5837* **单会话覆盖**:将 [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 `1` 可在单个会话中跳过安装,即使此键为 `true`

5834 5838 

skills.md +1 −1

Details

404| `allowed-tools` | 否 | 在调用此 skill 的轮次中,Claude 无需请求权限即可使用的工具。当您发送下一条消息时,该授予即被清除。接受以空格或逗号分隔的字符串,或 YAML 列表。请参阅[为 skill 预先批准工具](#pre-approve-tools-for-a-skill)。 |404| `allowed-tools` | 否 | 在调用此 skill 的轮次中,Claude 无需请求权限即可使用的工具。当您发送下一条消息时,该授予即被清除。接受以空格或逗号分隔的字符串,或 YAML 列表。请参阅[为 skill 预先批准工具](#pre-approve-tools-for-a-skill)。 |

405| `disallowed-tools` | 否 | 在此 skill 处于活动状态时,从 Claude 可用工具池中移除的工具。适用于永远不应调用某些工具的自主 skill,例如对后台循环禁用 `AskUserQuestion`。接受以空格或逗号分隔的字符串,或 YAML 列表。当您发送下一条消息时,该限制即被清除。与拒绝规则一样,只要还有其他工具存在,该字段就无法移除 [`EndConversation`](https://code.claude.com/docs/zh-CN/tools-reference#endconversation-tool-behavior)。 |405| `disallowed-tools` | 否 | 在此 skill 处于活动状态时,从 Claude 可用工具池中移除的工具。适用于永远不应调用某些工具的自主 skill,例如对后台循环禁用 `AskUserQuestion`。接受以空格或逗号分隔的字符串,或 YAML 列表。当您发送下一条消息时,该限制即被清除。与拒绝规则一样,只要还有其他工具存在,该字段就无法移除 [`EndConversation`](https://code.claude.com/docs/zh-CN/tools-reference#endconversation-tool-behavior)。 |

406| `model` | 否 | 此 skill 处于活动状态时使用的模型。该覆盖适用于当前轮次的剩余部分,且不会保存到设置中。当您发送下一个提示词时,会话模型即恢复。接受与 [`/model`](https://code.claude.com/docs/zh-CN/model-config) 相同的值,或使用 `inherit` 保留当前活动的模型。被组织的 [`availableModels`](https://code.claude.com/docs/zh-CN/model-config#restrict-model-selection) 允许列表排除的值不会被使用,会话将保留其当前模型。在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)下,以及在[分类器审查命令时的计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)下,自动模式不支持的模型同样不会被使用,会话将保留其当前模型。使用 `context: fork` 时,该值改为设置[分叉子代理的模型](#run-skills-in-a-subagent),被排除的值遵循[与子代理模型覆盖相同的规则](https://code.claude.com/docs/zh-CN/model-config.md#restrict-model-selection)。 |406| `model` | 否 | 此 skill 处于活动状态时使用的模型。该覆盖适用于当前轮次的剩余部分,且不会保存到设置中。当您发送下一个提示词时,会话模型即恢复。接受与 [`/model`](https://code.claude.com/docs/zh-CN/model-config) 相同的值,或使用 `inherit` 保留当前活动的模型。被组织的 [`availableModels`](https://code.claude.com/docs/zh-CN/model-config#restrict-model-selection) 允许列表排除的值不会被使用,会话将保留其当前模型。在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)下,以及在[分类器审查命令时的计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)下,自动模式不支持的模型同样不会被使用,会话将保留其当前模型。使用 `context: fork` 时,该值改为设置[分叉子代理的模型](#run-skills-in-a-subagent),被排除的值遵循[与子代理模型覆盖相同的规则](https://code.claude.com/docs/zh-CN/model-config.md#restrict-model-selection)。 |

407| `effort` | 否 | 当前轮次剩余部分的 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。覆盖会话的 effort 级别,但不会覆盖 [`CLAUDE_CODE_EFFORT_LEVEL`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量。使用 `context: fork` 时,该值改为设置分叉子代理的 effort 级别。省略该字段时,级别由 [effort 解析顺序](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)决定。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。 |407| `effort` | 否 | 当前轮次剩余部分的 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。覆盖会话的 effort 级别,但不会覆盖 [`CLAUDE_CODE_EFFORT_LEVEL`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量。使用 `context: fork` 时,该值改为设置分叉子代理的 effort 级别。省略该字段时,级别由 [effort 解析顺序](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)决定。对于使用其他模型的分叉,请参阅[子代理和队友的 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#effort-level-of-subagents-and-teammates)。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。 |

408| `context` | 否 | 设置为 `fork` 可在分叉的子代理上下文中运行。请参阅[在子代理中运行 skill](#run-skills-in-a-subagent)。 |408| `context` | 否 | 设置为 `fork` 可在分叉的子代理上下文中运行。请参阅[在子代理中运行 skill](#run-skills-in-a-subagent)。 |

409| `agent` | 否 | 设置 `context: fork` 时使用的子代理类型。 |409| `agent` | 否 | 设置 `context: fork` 时使用的子代理类型。 |

410| `background` | 否 | 仅在使用 `context: fork` 时适用。设置为 `false` 可在调用该 skill 的轮次中等待分叉子代理的结果,而不是[在后台运行它](#run-skills-in-a-subagent)。默认值:`true`。 |410| `background` | 否 | 仅在使用 `context: fork` 时适用。设置为 `false` 可在调用该 skill 的轮次中等待分叉子代理的结果,而不是[在后台运行它](#run-skills-in-a-subagent)。默认值:`true`。 |

Details

1264 1264 

1265一旦 Keychain 再次可写,Claude Code 在下次写入凭据时将凭据移回。要立即强制执行,请运行 `/logout` 然后 `/login`。注销会删除所有存储的凭据,包括纯文本文件的内容、已保存的 MCP 服务器登录和插件敏感值,因此预期之后需要重新授权 MCP 服务器和重新输入插件密钥。再次登录会将您的登录存储在 Keychain 中。1265一旦 Keychain 再次可写,Claude Code 在下次写入凭据时将凭据移回。要立即强制执行,请运行 `/logout` 然后 `/login`。注销会删除所有存储的凭据,包括纯文本文件的内容、已保存的 MCP 服务器登录和插件敏感值,因此预期之后需要重新授权 MCP 服务器和重新输入插件密钥。再次登录会将您的登录存储在 Keychain 中。

1266 1266 

1267#### 在网络主目录上登录失败

1268 

1269当请求失败并显示 `API Error: 401`,且您的[配置目录](https://code.claude.com/docs/zh-CN/claude-directory.md)位于网络文件系统上时,请检查该文件系统或您在其上的配额是否已满。如果没有剩余空间,Claude Code 将无法把新的或续期的登录保存到纯文本 [`.credentials.json` 文件](https://code.claude.com/docs/zh-CN/authentication#credential-management),而 `claude auth login` 仍可能打印 `Login successful.`

1270 

1271**1. 在文件系统上腾出空间**

1272 

1273删除存放 `~/.claude` 或您在 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars) 中设置的目录的文件系统上不再需要的文件。

1274 

1275**2. 再次登录**

1276 

1277在 Claude Code 输入框中运行 `/login`,或在您的 shell 中运行 `claude auth login`。

1278 

1279在 v2.1.318 之前,当 Claude Code 在已满的网络文件系统上保存登录文件时,可能会用空文件替换仍然有效的已存储登录。之后的命令随后会报告 `Not logged in`。

1280 

1267### Bedrock、Agent Platform 或 Foundry 凭据未加载1281### Bedrock、Agent Platform 或 Foundry 凭据未加载

1268 1282 

1269如果您配置了 Claude Code 以使用云提供商,并在 Amazon Bedrock 上看到 `Could not load credentials from any providers`、在 Google Cloud 的 Agent Platform 上看到 `Could not load the default credentials` 或在 Microsoft Foundry 上看到 `ChainedTokenCredential authentication failed`,您的云提供商 CLI 可能在当前 shell 中未进行身份验证。1283如果您配置了 Claude Code 以使用云提供商,并在 Amazon Bedrock 上看到 `Could not load credentials from any providers`、在 Google Cloud 的 Agent Platform 上看到 `Could not load the default credentials` 或在 Microsoft Foundry 上看到 `ChainedTokenCredential authentication failed`,您的云提供商 CLI 可能在当前 shell 中未进行身份验证。

vs-code.md +7 −2

Details

818 818 

819### 在 VS Code 中运行 CLI819### 在 VS Code 中运行 CLI

820 820 

821如需在不离开 VS Code 的情况下使用 CLI,请在 Windows/Linux 上按 `` Ctrl+` ``,或在 Mac 上按 `` Cmd+` `` 打开集成终端,然后运行 `claude`。CLI 会自动与您的 IDE 集成,以支持 diff 查看和诊断信息共享等功能。如果您使用外部终端,请在 Claude Code 中运行 `/ide` 将其连接到 VS Code。821如需在不离开 VS Code 的情况下使用 CLI,请在 Windows/Linux 上按 `` Ctrl+` ``,或在 Mac 上按 `` Cmd+` `` 打开集成终端,然后运行 `claude`。启动 `claude` 并不会安装扩展。如果没有安装扩展,在集成终端中运行 `/ide` 会报告 "No available IDEs detected",而 `/status` 会将 IDE 显示为 "Not connected"。

822 

823如需获得 diff 查看和诊断信息共享等功能,请从集成终端或外部终端将 CLI 连接到扩展:

824 

825* **集成终端**:[安装扩展](#install-the-extension),然后启动 `claude`。CLI 会自动连接。

826* **外部终端**:在 Claude Code 中运行 `/ide` 以连接到 VS Code。如果 VS Code 正在运行但未安装扩展,`/ide` 会自动安装扩展,除非您关闭了 [`autoInstallIdeExtension`](https://code.claude.com/docs/zh-CN/settings-reference#autoinstallideextension)。

822 827 

823安装扩展并不会将 `claude` 添加到您的 shell PATH 中。扩展为其聊天面板捆绑了一份私有的 CLI 副本,但要在终端中输入 `claude`,需要进行[独立 CLI 安装](https://code.claude.com/docs/zh-CN/setup.md)。只需安装一次,本页中的命令(包括 `claude mcp add` 和 `claude --resume`)即可在任何终端中使用。如果安装后仍然找不到 `claude`,请[验证您的 PATH](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#verify-your-path)。828安装扩展并不会将 `claude` 添加到您的 shell PATH 中。扩展为其聊天面板捆绑了一份私有的 CLI 副本,但要在终端中输入 `claude`,需要进行[独立 CLI 安装](https://code.claude.com/docs/zh-CN/setup.md)。只需安装一次,本页中的命令(包括 `claude mcp add` 和 `claude --resume`)即可在任何终端中使用。如果安装后仍然找不到 `claude`,请[验证您的 PATH](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#verify-your-path)。

824 829 


10862. 搜索"Claude Code"10912. 搜索"Claude Code"

10873. 点击 **Uninstall**10923. 点击 **Uninstall**

1088 1093 

1089如果您在 VS Code 集成终端中运行 `claude`,Claude Code 会自动重新安装该扩展。要使其保持卸载状态,请在 `/config` 中关闭 **Auto-install IDE extension**,或将 [`autoInstallIdeExtension`](https://code.claude.com/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false`。您也可以将 [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量设置为 `1`。1094启动 `claude` 时,该扩展会保持卸载状态。如果您在 VS Code 运行期间从外部终端运行 `/ide`,Claude Code 会重新安装该扩展。要阻止这种情况,请在 `~/.claude.json` 中将 [`autoInstallIdeExtension`](https://code.claude.com/docs/zh-CN/settings-reference#autoinstallideextension) 设置为 `false`,或在集成终端中通过 `/config` 关闭 **Auto-install IDE extension**。您也可以将 [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量设置为 `1`。

1090 1095 

1091如果还要删除扩展数据并重置所有设置,请删除您所用平台上该扩展的存储目录。1096如果还要删除扩展数据并重置所有设置,请删除您所用平台上该扩展的存储目录。

1092 1097