SpyBara
Go Premium

Documentation 2026-10-27 22:59 UTC to 2026-10-28 23:57 UTC

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

211. **接收提示。** Claude 接收你的提示,以及系统提示、工具定义和对话历史。SDK 产生一个 [`SystemMessage`](#message-types),子类型为 `"init"`,包含会话元数据。211. **接收提示。** Claude 接收你的提示,以及系统提示、工具定义和对话历史。SDK 产生一个 [`SystemMessage`](#message-types),子类型为 `"init"`,包含会话元数据。

222. **评估并响应。** Claude 评估当前状态并确定如何继续。它可能用文本响应、请求一个或多个工具调用,或两者都有。SDK 产生一个或多个 [`AssistantMessage`](#message-types) 对象,每个内容块一个,例如文本块或工具调用请求。222. **评估并响应。** Claude 评估当前状态并确定如何继续。它可能用文本响应、请求一个或多个工具调用,或两者都有。SDK 产生一个或多个 [`AssistantMessage`](#message-types) 对象,每个内容块一个,例如文本块或工具调用请求。

233. **执行工具。** SDK 运行每个请求的工具并收集结果。每组工具结果反馈给 Claude 以做出下一个决定。你可以使用 [hooks](https://code.claude.com/docs/zh-CN/agent-sdk/hooks.md) 在工具运行前拦截、修改或阻止工具调用。233. **执行工具。** SDK 运行每个请求的工具并收集结果。每组工具结果反馈给 Claude 以做出下一个决定。你可以使用 [hooks](https://code.claude.com/docs/zh-CN/agent-sdk/hooks.md) 在工具运行前拦截、修改或阻止工具调用。

244. **重复。** 步骤 2 和 3 作为一个循环重复。每个完整循环是一个轮次。Claude 继续调用工具并处理结果,直到产生没有工具调用的响应。244. **重复。** 步骤 2 和 3 作为一个循环重复。Claude 继续调用工具并处理结果,直到产生不含工具调用的回复。

255. **返回结果。** SDK 产生最终的 [`AssistantMessage`](#message-types),包含文本响应(无工具调用),然后是 [`ResultMessage`](#message-types),包含最终文本、令牌使用、成本和会话 ID。255. **返回结果。** SDK 产生最终的 [`AssistantMessage`](#message-types),包含文本响应(无工具调用),然后是 [`ResultMessage`](#message-types),包含最终文本、令牌使用、成本和会话 ID。

26 26 

27一个快速问题("这里有什么文件?")可能需要一两个轮次调用 `Glob` 并响应结果。一个复杂任务("重构认证模块并更新测试")可以跨多个轮次链接数十个工具调用,读取文件、编辑代码和运行测试,Claude 根据每个结果调整其方法。27一个简单的问题(例如"这里有什么文件?")可能需要两到三个[轮次](#turns-and-messages):一到两个轮次调用 `Glob`,然后一个轮次根据结果进行回复。一个复杂的任务(例如"重构认证模块并更新测试")可能会跨多个轮次串联数十个工具调用,Claude 会根据每个结果进行调整。

28 28 

29## 轮次和消息29## 轮次和消息

30 30 

31轮次是循环内的一个往返:Claude 产生包含工具调用的输出,SDK 执行这些工具,结果自动反馈给 Claude。这发生在不将控制权交回给你的代码的情况下。轮次继续进行,直到 Claude 产生没有工具调用的输出,此时循环结束并交付最终结果。31轮次是循环中的一次往返:Claude 产生输出,如果输出中包含工具调用,SDK 会执行这些工具,结果自动反馈给 Claude。这一过程不会将控制权交回给您的代码。轮次持续进行,直到 Claude 产生不含工具调用的输出,此时循环结束并交付最终结果。

32 32 

33考虑对于提示"修复 auth.ts 中的失败测试"的完整会话可能是什么样子。33考虑对于提示"修复 auth.ts 中的失败测试"的完整会话可能是什么样子。

34 34 

Details

1274| `updated_input` | `dict[str, Any] \| None` | `None` | 要使用的修改后的输入而不是原始输入 |1274| `updated_input` | `dict[str, Any] \| None` | `None` | 要使用的修改后的输入而不是原始输入 |

1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 要应用的权限更新 |1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 要应用的权限更新 |

1276 1276 

1277如果您返回的 `PermissionResultAllow` 在 `updated_permissions` 中包含超过 4,096 项,Claude Code 会将该结果视为无效并拒绝该工具调用。每个 [`PermissionUpdate`](#permissionupdate) 计为一项,其 `rules` 或 `directories` 列表中的每个条目也各计为一项。拒绝消息以 `updatedPermissions may hold at most 4096 updates, rules and directories in all.` 结尾。为避免被拒绝,请返回不超过 4,096 项。

1278 

1277### `PermissionResultDeny`1279### `PermissionResultDeny`

1278 1280 

1279指示应拒绝工具调用的结果。1281指示应拒绝工具调用的结果。

Details

1156 1156 

1157新增的文件夹会一直作为会话的一部分。当您再次调用 `reloadPlugins()` 时,Claude Code 会将其与其他插件一起重新加载,您无需再次在 `addPlugins` 中传入它。1157新增的文件夹会一直作为会话的一部分。当您再次调用 `reloadPlugins()` 时,Claude Code 会将其与其他插件一起重新加载,您无需再次在 `addPlugins` 中传入它。

1158 1158 

1159##### `reloadPlugins()` 未加载 `addPlugins` 文件夹的情况1159##### 当 `reloadPlugins()` 未加载 `addPlugins` 文件夹时

1160 1160 

1161如果 `reloadPlugins()` 被拒绝,`addPlugins` 中的文件夹都不会被添加,因此重试时请再次在 `addPlugins` 中传入它们。当拒绝由以下某个原因导致时,会话会保留其原有的插件:1161如果 `reloadPlugins()` 被拒绝,`addPlugins` 中的文件夹都不会被添加,因此重试时请再次在 `addPlugins` 中传入它们。当拒绝由以下某个原因导致时,会话会保留其原有的插件:

1162 1162 


1405 };1405 };

1406```1406```

1407 1407 

1408如果您返回 `allow` 且 `updatedPermissions` 中的项超过 4,096 个,Claude Code 会将结果视为无效并拒绝该工具调用。每个更新计为一项,其 `rules` 或 `directories` 列表中的每个条目也各计为一项。拒绝消息以 `updatedPermissions may hold at most 4096 updates, rules and directories in all` 结尾。要使调用被允许,请返回不超过 4,096 项。1408如果您返回 `allow` 且 `updatedPermissions` 中的项超过 4,096 个,Claude Code 会将该结果视为无效并拒绝工具调用。每个更新计为一项,其 `rules` 或 `directories` 列表中的每个条目也各计为一项。拒绝消息以 `updatedPermissions may hold at most 4096 updates, rules and directories in all.` 结尾。要使调用被允许,请返回不超过 4,096 项。

1409 1409 

1410### `ToolConfig`1410### `ToolConfig`

1411 1411 


4704 humanSchedule: string;4704 humanSchedule: string;

4705 recurring: boolean;4705 recurring: boolean;

4706 durable?: boolean; // true when persisted to .claude/scheduled_tasks.json; false when session-only4706 durable?: boolean; // true when persisted to .claude/scheduled_tasks.json; false when session-only

4707 nextFireAt?: number;

4707};4708};

4708```4709```

4709 4710 

4710返回作业 ID 和计划的人类可读描述。4711返回作业 ID、计划的人类可读描述以及下次运行时间。`nextFireAt` 以纪元毫秒给出该时间,且已应用[抖动](https://code.claude.com/docs/zh-CN/scheduled-tasks.md#jitter),因此它就是作业被设定的运行时间。该字段需要 TypeScript Agent SDK v0.3.299 或更高版本以及 Claude Code v2.1.299 或更高版本。

4711 4712 

4712### CronDelete4713### CronDelete

4713 4714 


4734 prompt: string;4735 prompt: string;

4735 recurring?: boolean;4736 recurring?: boolean;

4736 durable?: boolean;4737 durable?: boolean;

4738 nextFireAt?: number;

4737 }[];4739 }[];

4738};4740};

4739```4741```

4740 4742 

4741返回计划的 cron 作业:来自 `.claude/scheduled_tasks.json` 的持久作业和来自当前会话的仅会话作业。仅会话作业携带 `durable: false`;从磁盘读取的作业省略该字段。4743返回计划的 cron 作业:来自 `.claude/scheduled_tasks.json` 的持久作业和来自当前会话的仅会话作业。仅会话作业携带 `durable: false`;从磁盘读取的作业省略该字段。

4742 4744 

4745`nextFireAt` 是作业的下次运行时间(以纪元毫秒表示),已包含[抖动](https://code.claude.com/docs/zh-CN/scheduled-tasks.md#jitter)。任何值都不会早于 `CronList` 调用的时间:对于运行时间[已过但未运行](https://code.claude.com/docs/zh-CN/scheduled-tasks.md#how-scheduled-tasks-run)的作业,该字段携带调用时的时间。该字段需要 TypeScript Agent SDK v0.3.299 或更高版本以及 Claude Code v2.1.299 或更高版本。

4746 

4743### ScheduleWakeup4747### ScheduleWakeup

4744 4748 

4745**工具名称:** `ScheduleWakeup`4749**工具名称:** `ScheduleWakeup`


5457};5461};

5458```5462```

5459 5463 

5464`setMcpServers()` 返回的 Promise 会在新添加的 stdio、HTTP 和 SSE 服务器连接成功或失败后 resolve,因此已连接服务器的工具在下一轮次即可使用。

5465 

5460调用 `setMcpServers()` 时,Claude Code 会应用以下规则:5466调用 `setMcpServers()` 时,Claude Code 会应用以下规则:

5461 5467 

5462* **调用未指定的服务器**:在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外,Claude Code 会断开先前 `setMcpServers()` 调用添加的服务器以及进程内 SDK 服务器的连接,并在 `removed` 中列出它们。其他服务器会继续运行,且不会列在 `removed` 中,其中包括来自 [`mcpServers`](#options) 选项的 stdio、HTTP 和 SSE 服务器、来自设置文件的服务器以及插件提供的服务器。5468* **调用未指定的服务器**:在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)之外,Claude Code 会断开先前 `setMcpServers()` 调用添加的服务器以及进程内 SDK 服务器的连接,并在 `removed` 中列出它们。其他服务器会继续运行,且不会列在 `removed` 中,其中包括来自 [`mcpServers`](#options) 选项的 stdio、HTTP 和 SSE 服务器、来自设置文件的服务器以及插件提供的服务器。


5466* **CLI 在启动时启动的内置服务器**:如果调用指定了其中之一,Claude Code 会丢弃该条目并在 `errors` 中报告它。5472* **CLI 在启动时启动的内置服务器**:如果调用指定了其中之一,Claude Code 会丢弃该条目并在 `errors` 中报告它。

5467* **与 MCP 安装作用域(例如 `.mcp.json`)中的服务器同名的 stdio、HTTP 或 SSE 服务器**:在该名称下,会话使用您的服务器的工具,而不是[安装作用域服务器](https://code.claude.com/docs/zh-CN/mcp.md#mcp-installation-scopes)的工具。在 Claude Code v2.1.305 之前,当您的应用[重新加载插件](#query-object)时,Claude Code 可能会断开您的服务器的连接并改为连接安装作用域服务器。5473* **与 MCP 安装作用域(例如 `.mcp.json`)中的服务器同名的 stdio、HTTP 或 SSE 服务器**:在该名称下,会话使用您的服务器的工具,而不是[安装作用域服务器](https://code.claude.com/docs/zh-CN/mcp.md#mcp-installation-scopes)的工具。在 Claude Code v2.1.305 之前,当您的应用[重新加载插件](#query-object)时,Claude Code 可能会断开您的服务器的连接并改为连接安装作用域服务器。

5468 5474 

5469Promise 会在新添加的 stdio、HTTP 和 SSE 服务器连接成功或失败后 resolve,因此已连接服务器的工具在下一轮次即可使用。

5470 

5471`added` 列出 Claude Code 添加或替换的服务器,无论它们是否已连接。连接失败的服务器会同时出现在 `added` 和 `errors` 中,失败文本位于 `errors` 下,并在 [`mcpServerStatus()`](#methods) 中有一行 `failed`。在 Claude Code v2.1.257 之前,连接尝试抛出异常的服务器只会在 `errors` 下报告。5475`added` 列出 Claude Code 添加或替换的服务器,无论它们是否已连接。连接失败的服务器会同时出现在 `added` 和 `errors` 中,失败文本位于 `errors` 下,并在 [`mcpServerStatus()`](#methods) 中有一行 `failed`。在 Claude Code v2.1.257 之前,连接尝试抛出异常的服务器只会在 `errors` 下报告。

5472 5476 

5477以 `Blocked by enterprise` 开头的 `errors` 值表示策略拒绝了该服务器,而不是连接失败:

5478 

5479* `Blocked by enterprise policy (allowedMcpServers/deniedMcpServers)`:该服务器不在 `added` 中。某个 [`deniedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists) 条目与其匹配,或者设置了 `allowedMcpServers` 列表但其中未包含该服务器。如果该列表位于您通过 [`settingSources`](#options) 加载的设置文件中,请编辑该文件。如果它位于托管设置中,请让您的管理员进行更改。

5480* `Blocked by enterprise managed policy`:该服务器在 `added` 中,并在 `mcpServerStatus()` 中有一行 `failed`。请询问管理员是哪项策略阻止了它。

5481 

5473### `RewindFilesResult`5482### `RewindFilesResult`

5474 5483 

5475`rewindFiles()` 操作的结果。5484`rewindFiles()` 操作的结果。

Details

24 24 

25## 使用 Bedrock 登录25## 使用 Bedrock 登录

26 26 

27如果您拥有 AWS 凭证并想通过 Amazon Bedrock 开始使用 Claude Code,登录向导会引导您完成整个过程。您需要在每个账户上完成一次 AWS 端的先决条件;向导会处理 Claude Code 端的事务。27如果您拥有 AWS 凭据,并希望通过 Amazon Bedrock 开始使用 Claude Code,登录向导会引导您完成整个过程。每个账户只需完成一次 AWS 端的前提条件;Claude Code 端的设置由向导处理。

28 28 

29**1. 在您的 AWS 账户中启用 Anthropic 模型**29**1. 在您的 AWS 账户中启用 Anthropic 模型**

30 30 

31在 [Amazon Bedrock 控制台](https://console.aws.amazon.com/bedrock/)中,打开模型目录,选择一个 Anthropic 模型,并提交用例表单。提交后立即授予访问权限。有关 AWS Organizations 的信息,请参阅[提交用例详情](#1-submit-use-case-details);有关您的角色所需的权限,请参阅 [IAM 配置](#iam-configuration)。31在 [Amazon Bedrock 控制台](https://console.aws.amazon.com/bedrock/)中,打开 Model catalog,选择一个 Anthropic 模型,然后提交用例表单。提交后即可立即获得访问权限。有关 AWS Organizations,请参阅[提交用例详细信息](#1-submit-use-case-details);有关您的角色所需的权限,请参阅 [IAM 配置](#iam-configuration)。

32 32 

33**2. 启动 Claude Code 并选择 Amazon Bedrock**33**2. 启动 Claude Code 并选择 Amazon Bedrock**

34 34 

35运行 `claude`。在登录提示处,选择**第三方平台**,然后选择 **Amazon Bedrock**。如果您已经登录并看到聊天提示,请运行 `/setup-bedrock` 打开向导。在设置 `CLAUDE_CODE_USE_BEDROCK=1` 之前,Claude Code [会从命令菜单中隐藏该命令](https://code.claude.com/docs/zh-CN/commands.md#how-the-command-menu-matches-what-you-type);请完整输入它。35运行 `claude`。在登录提示中,选择 **3rd-party platform**,然后选择 **Amazon Bedrock**。如果您已经登录并看到的是聊天输入框,请运行 `/setup-bedrock` 打开向导。在设置 `CLAUDE_CODE_USE_BEDROCK=1` 之前,Claude Code 会[在命令菜单中隐藏该命令](https://code.claude.com/docs/zh-CN/commands.md#how-the-command-menu-matches-what-you-type);请完整输入该命令。

36 36 

37**3. 按照向导提示操作**37**3. 按照向导提示操作**

38 38 

39选择您如何向 AWS 进行身份验证:从您的 `~/.aws` 目录检测到的 AWS 配置文件、Amazon Bedrock API 密钥、访问密钥和密钥,或已在您的环境中的凭证。向导会询问您的区域,验证您的账户可以调用哪些 Claude 模型,并让您固定它们。它将结果保存到您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)的 `env` 块中,因此您无需自己导出环境变量。39选择您向 AWS 进行身份验证的方式:从您的 `~/.aws` 目录中检测到的 AWS 配置文件、Amazon Bedrock API 密钥、访问密钥和密钥,或环境中已有的凭据。向导会询问您的区域,验证您的账户可以调用哪些 Claude 模型,并允许您固定这些模型。它会将结果保存到您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)的 `env` 块中,因此您无需自行导出环境变量。

40 40 

41登录后,随时运行 `/setup-bedrock` 重新打开向导并更改您的凭证、区域或模型固定。模型固定步骤从您当前固定的模型开始。向导写入 `~/.claude/settings.json`,或在设置了 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars#variables) 时写入 `$CLAUDE_CONFIG_DIR/settings.json`。41登录后,您可以随时运行 `/setup-bedrock` 重新打开向导,以更改您的凭据、区域或固定的模型。模型固定步骤会从您当前固定的模型开始。向导会写入 `~/.claude/settings.json`;如果设置了 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars#variables),则写入 `$CLAUDE_CONFIG_DIR/settings.json`。

42 42 

43## 手动设置43## 手动设置

44 44 

authentication.md +33 −22

Details

10 10 

11## 登录 Claude Code11## 登录 Claude Code

12 12 

13[安装 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#install-claude-code) 后,在终端中运行 `claude`。首次启动时,Claude Code 会打开浏览器窗口供您登录,但在以下情况下,它可以跳过登录提示:13[安装 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#install-claude-code) 后,在终端中运行 `claude`。Claude Code 首次启动时会打开浏览器窗口供您登录,但以下情况除外,此时可以跳过登录提示:

14 14 

15* **API 密钥**:您已设置 `ANTHROPIC_API_KEY` 环境变量,并在 Claude Code 询问是否使用该密钥时批准了它15* **API 密钥**:您已设置 `ANTHROPIC_API_KEY` 环境变量,并在 Claude Code 询问是否使用该密钥时予以批准

16* **之前已登录**:您在首次会话之前已在 shell 中运行过 [`claude auth login`](https://code.claude.com/docs/zh-CN/cli-reference#cli-commands),或者您重建了一个将凭据保存在 [卷](https://code.claude.com/docs/zh-CN/devcontainer.md#persist-authentication-and-settings-across-rebuilds) 中的开发容器。如果仍然看到登录提示,请 [查看可能的原因](#login-prompt-still-appears-after-an-earlier-sign-in)。16* **之前已登录**:您在首次会话之前已在 shell 中运行过 [`claude auth login`](https://code.claude.com/docs/zh-CN/cli-reference#cli-commands),或者您重建了一个将凭据保存在[卷](https://code.claude.com/docs/zh-CN/devcontainer.md#persist-authentication-and-settings-across-rebuilds)中的开发容器。如果仍然看到登录提示,请[查看可能的原因](#login-prompt-still-appears-after-an-earlier-sign-in)。

17 17 

18如果浏览器没有自动打开,请按 `c` 将登录 URL 复制到剪贴板,然后将其粘贴到浏览器中。18如果浏览器没有自动打开,请按 `c` 将登录 URL 复制到剪贴板,然后将其粘贴到浏览器中。

19 19 

20如果您的浏览器在您登录后显示登录代码而不是重定向回来,请将其粘贴到终端的 `Paste code here if prompted` 提示符处。这种情况在浏览器无法访问 Claude Code 的本地回调服务器时会发生,这在 WSL2、SSH 会话和容器中很常见。20如果登录后浏览器显示登录代码而不是重定向回来,请在终端的 `Paste code here if prompted` 提示处粘贴该代码。

21 21 

22登录完成后,终端会显示 `Login successful`,并提示您按 `Enter` 继续。22登录完成后,终端会显示 `Login successful`,并提示您按 `Enter` 继续。

23 23 

24您可以使用以下任何账户类型进行身份验证:24您可以使用以下任一账户类型进行身份验证:

25 25 

26* **Claude Pro 或 Max 订阅**:使用您的 claude.ai 账户登录。在 [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max) 订阅。26* **Claude Pro 或 Max 订阅**:使用您的 claude.ai 账户登录。请在 [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max) 订阅。

27* **Claude for Teams 或 Enterprise**:使用您的团队管理员邀请您的 claude.ai 账户登录。27* **Claude for Teams 或 Enterprise**:使用团队管理员邀请您加入的 claude.ai 账户登录。

28* **Claude Console**:使用您的 Console 凭证登录。您的管理员必须先 [邀请您](#claude-console-authentication)。您可以在有或没有 [创建 API 密钥](#sign-in-without-an-api-key) 的情况下登录。28* **Claude Console**:使用您的 Console 凭据登录。您的管理员必须先[邀请您](#claude-console-authentication)。您可以在[创建 API 密钥](#sign-in-without-an-api-key)或不创建 API 密钥的情况下登录。

29* **云提供商**:如果您的组织使用 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Google Cloud's Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md),请在运行 `claude` 之前设置所需的环境变量,或在登录提示符处选择 **3rd-party platform**,这将为 Bedrock 和 Vertex AI 启动交互式设置向导。不需要浏览器登录。29* **云提供商**:如果您的组织使用 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Google Cloud 的 Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md),请在运行 `claude` 之前设置所需的环境变量,或在登录提示处选择 **3rd-party platform**,这会启动 Bedrock 和 Vertex AI 的交互式设置向导。无需浏览器登录。

30* **云网关**:如果您的组织运行自托管的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway),请通过 `/login` 使用企业 SSO 登录。网关颁发的令牌是会话的唯一凭证。30* **Cloud gateway**:如果您的组织运行自托管的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway),请通过 `/login` 使用企业 SSO 登录。网关颁发的令牌是该会话的唯一凭据。

31 31 

32管理员可以指导开发人员使用哪种登录方法,并要求 claude.ai 登录属于特定组织;请参阅 [限制登录到您的组织](#restrict-login-to-your-organization)。32管理员可以指定开发人员使用的登录方式,并要求 claude.ai 登录必须属于特定组织;请参阅[将登录限制为您的组织](#restrict-login-to-your-organization)。

33 33 

34要登出并重新身份验证,请在 Claude Code 提示符处输入 `/logout`。登出还会重置您的首次启动设置状态,因此下次运行 `claude` 时,它会再次引导您完成登录和设置。34要注销并重新进行身份验证,请在 Claude Code 输入框中输入 `/logout`。注销还会重置您的首次启动设置状态,因此下次运行 `claude` 时,它会再次引导您完成登录和设置。

35 35 

36如果您在登录时遇到问题,请参阅 [身份验证故障排除](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#login-and-authentication)。36如果您在登录时遇到问题,请参阅[身份验证故障排除](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#login-and-authentication)。

37 37 

38### 之前已登录但仍出现登录提示38### 之前已登录但仍出现登录提示

39 39 

40如果您之前已登录,但首次启动设置仍显示登录提示而没有 [跳过它](#log-in-to-claude-code),请检查以下可能的原因:40如果您之前已登录,但首次启动设置显示了登录提示而不是[跳过它](#log-in-to-claude-code),请检查以下可能的原因:

41 41 

42* **登录已过期**:您之前的登录已过期,且 Claude Code 无法刷新它。请在提示处重新登录。42* **登录已过期**:您之前的登录已过期,且 Claude Code 无法刷新。请在提示处重新登录。

43* **登录仅限于特定组织**:管理员在托管设置中设置了 [`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid),以 [要求使用特定组织的账户登录](#restrict-login-to-your-organization)。无论您的账户是否属于这些组织之一,都会出现该提示。请使用属于所要求组织的账户登录。如果您没有这样的账户,请联系管理员将您添加进去。43* **登录限制为特定组织**:管理员在托管设置中设置了 [`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid),以[要求从特定组织登录](#restrict-login-to-your-organization)。无论您的账户是否属于这些组织,都会出现该提示。请使用属于所需组织的账户登录。如果您没有此类账户,请让管理员将您添加进去。

44* **要求特定登录方法**:您的登录类型不符合设置文件中 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的要求。设置为 `"claudeai"` 时,之前通过 Claude Console 登录获得的 API 密钥不算作已有登录。设置为 `"console"` 时,claude.ai 账户不算作已有登录。请使用该设置所指定类型的账户登录。44* **要求的登录方式**:您的登录类型不符合设置文件中 [`forceLoginMethod`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginmethod) 的要求。设置为 `"claudeai"` 时,之前通过 Claude Console 登录获得的 API 密钥不算作现有登录。设置为 `"console"` 时,claude.ai 账户不算作现有登录。请使用该设置所指定类型的账户登录。

45* **旧版本**:在 v2.1.290 之前,无论您是否已登录,设置过程中都会出现该提示。[更新 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code) 即可跳过它。45* **旧版本**:在 v2.1.290 之前,无论您是否已登录,设置期间都会出现该提示。请[更新 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code) 以跳过它。

46 46 

47### 使用多个账户登录47### 使用多个账户登录

48 48 

49要同时保持登录多个账户(例如工作和个人账户),请为每个账户提供自己的配置目录。启动 `claude` 时,将 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量设置为您要使用的账户的目录。每个目录都有自己的设置、会话历史记录和 claude.ai 登录或 API 密钥。例如,在 Bash 或 Zsh 中,将此别名添加到 `~/.bashrc` 或 `~/.zshrc`,以便 `claude-work` 使用您的工作账户,而 `claude` 保持您的个人账户:49要同时保持多个账户的登录状态(例如工作账户和个人账户),请为每个账户提供单独的配置目录。启动 `claude` 时,将 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量设置为您要使用的账户所对应的目录。每个目录都有自己的设置、会话历史记录以及 claude.ai 登录或 API 密钥。例如,在 Bash 或 Zsh 中,将以下别名添加到 `~/.bashrc` 或 `~/.zshrc`,这样 `claude-work` 使用您的工作账户,而 `claude` 保留您的个人账户:

50 50 

51```bash theme={null}51```bash theme={null}

52alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'52alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'

53```53```

54 54 

55首次打开新终端并运行 `claude-work` 后,Claude Code 会引导您完成新目录的登录和设置。单独的目录不会将两个 Claude Console 登录 [不带 API 密钥](#sign-in-without-an-api-key) 分开,因为 Claude Code 将这种类型的登录存储在配置目录之外。55打开新终端并首次运行 `claude-work` 后,Claude Code 会引导您为新目录完成登录和设置。对于[不使用 API 密钥](#sign-in-without-an-api-key)的两个 Claude Console 登录,单独的目录无法将它们区分开,因为 Claude Code 将此类登录存储在配置目录之外。

56 56 

57## 设置团队身份验证57## 设置团队身份验证

58 58 


127您不会在每台机器上都获得选择。Claude Code 在以下情况下会在不询问的情况下创建 API 密钥:127您不会在每台机器上都获得选择。Claude Code 在以下情况下会在不询问的情况下创建 API 密钥:

128 128 

129* 您针对云提供商运行,例如 [Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry](https://code.claude.com/docs/zh-CN/third-party-integrations.md) 或 [AWS 上的 Claude Platform](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)129* 您针对云提供商运行,例如 [Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry](https://code.claude.com/docs/zh-CN/third-party-integrations.md) 或 [AWS 上的 Claude Platform](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)

130* 任何设置文件设置 [`forceLoginOrgUUID`](#restrict-login-to-your-organization),或将 `forceLoginMethod` 设置为 `"claudeai"` 或 `"console"`130* 任何设置文件设置 [`forceLoginOrgUUID`](#restrict-login-to-your-organization),或将 `forceLoginMethod` 设置为 `"claudeai"`

131* `forceLoginMethod` 为 `"console"` 且没有任何设置文件设置 `forceLoginOrgUUID`,直到您在登录失败后从错误屏幕重试为止

131* 您机器上存在托管设置源(例如托管设置文件、MDM 配置文件或缓存的服务器托管设置),但 Claude Code [无法读取它](https://code.claude.com/docs/zh-CN/managed-settings.md#invalid-entries-in-managed-settings),且没有其他托管源提供策略132* 您机器上存在托管设置源(例如托管设置文件、MDM 配置文件或缓存的服务器托管设置),但 Claude Code [无法读取它](https://code.claude.com/docs/zh-CN/managed-settings.md#invalid-entries-in-managed-settings),且没有其他托管源提供策略

132 133 

133在无密钥登录之前取消设置 `ANTHROPIC_API_KEY`。134在无密钥登录之前取消设置 `ANTHROPIC_API_KEY`。


140 141 

141关于配置文件的所有其他内容都适用于此登录,包括它在您的其他凭证中的排名、您在 `/status` 中获得的 `Profile` 行,以及需要 claude.ai 登录的功能。请参阅 [Anthropic 配置文件和联合凭证](#anthropic-profiles-and-federation-credentials)。142关于配置文件的所有其他内容都适用于此登录,包括它在您的其他凭证中的排名、您在 `/status` 中获得的 `Profile` 行,以及需要 claude.ai 登录的功能。请参阅 [Anthropic 配置文件和联合凭证](#anthropic-profiles-and-federation-credentials)。

142 143 

144#### 在托管机器上停止提供无密钥登录

145 

146要让 Claude Code 停止提供 [无密钥登录](#sign-in-without-an-api-key),请使用您的设备管理工具将 [托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md) 中的 [`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid) 部署到每位开发人员的机器上。将其设置为您的 [Console 组织 ID](https://platform.claude.com/settings/organization)。部署之前,请确保每位开发人员都拥有 [可以创建 API 密钥的角色](#claude-console-authentication)。部署之后,没有该角色的开发人员将无法在 `/login` 处登录 Console。

147 

148如果仅将 `forceLoginMethod` 设置为 `"console"`,开发人员可以重试失败的登录并选择无密钥选项。部署 `forceLoginOrgUUID` 后,登录屏幕会移除该选项,但开发人员仍可以使用他们已有的或通过 [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) 创建的 [Anthropic 配置文件](#anthropic-profiles-and-federation-credentials)。部署之后,请在每台机器上按如下方式处理这些凭据和登录:

149 

150* **无密钥登录**:要将开发人员切换到 API 密钥,请让他们注销后再次登录 Console,这会创建密钥。对于无密钥登录,他们在 shell 中运行 `claude auth logout`。对于 `ant auth login` 配置文件,他们运行 `ant auth logout`。如果机器上同时存在配置文件和 API 密钥,Claude Code 会拒绝该会话,因此他们需要先注销。

151* **环境和辅助程序凭据**:Claude Code 会拒绝使用 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 进行身份验证的会话,即使这些凭据由托管设置提供。请删除这些凭据,然后让开发人员运行 `/login` 以创建已保存的 API 密钥。

152* **claude.ai 登录**:Claude Code 会 [拒绝登录](#restrict-login-to-your-organization) 到您未列出的组织,包括机器上已在使用的组织。要保留某个组织,请将其添加到 `forceLoginOrgUUID` 数组中。

153 

143### 云提供商身份验证154### 云提供商身份验证

144 155 

145对于使用 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 的团队:156对于使用 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 的团队:


172* **`claude setup-token` 和 `/install-github-app`**:仅强制执行 `forceLoginMethod`,因此它们可以在不同的组织中铸造令牌183* **`claude setup-token` 和 `/install-github-app`**:仅强制执行 `forceLoginMethod`,因此它们可以在不同的组织中铸造令牌

173* **[网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 登录**:由 `forceLoginMethod: "gateway"` 选择而不是受其限制,并且不针对 Anthropic 组织进行身份验证,因此 `forceLoginOrgUUID` 不适用;使用您的网关身份提供商来限制访问184* **[网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 登录**:由 `forceLoginMethod: "gateway"` 选择而不是受其限制,并且不针对 Anthropic 组织进行身份验证,因此 `forceLoginOrgUUID` 不适用;使用您的网关身份提供商来限制访问

174 185 

175通过您的设备管理工具部署密钥。[服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md) 仅到达已经通过您的组织身份验证的账户,因此它们无法重定向开发人员的首次登录。如果您的组织也分发服务器托管设置,请在两个地方设置密钥:托管设置源 [不合并](https://code.claude.com/docs/zh-CN/server-managed-settings.md#settings-precedence),缓存的服务器托管设置替换设备托管文件,除了几个 [按密钥例外](https://code.claude.com/docs/zh-CN/server-managed-settings.md#per-key-exceptions-across-managed-sources)。`forceLoginOrgUUID` 和 `forceLoginMethod` 的 `"claudeai"` 和 `"console"` 值不在这些例外中,因此在两个地方都保留它们。186通过您的设备管理工具部署 `forceLoginMethod` 和 `forceLoginOrgUUID`。开发人员只有在通过您的组织身份验证之后才会收到 [服务器托管设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md),因此您无法使用这些设置重定向首次登录。如果您还从 claude.ai 分发服务器托管设置,请在每个客户端都运行 v2.1.299 或更高版本之前,也在那里设置这两个设置项。有关此后在何处设置这些设置项以及应用哪个源的值,请参阅 [哪个托管源提供登录设置项](https://code.claude.com/docs/zh-CN/managed-settings.md#which-managed-source-supplies-login-keys)。

176 187 

177在 [网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 部署中,也要将 `forceLoginMethod` 和 `forceLoginOrgUUID` 保留在 [网关提供的设置](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed) 之外。188在 [网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 部署中,也要将 `forceLoginMethod` 和 `forceLoginOrgUUID` 保留在 [网关提供的设置](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#managed) 之外。

178 189 

Details

157 157 

158## 使用 `/auto-mode-setup` 生成环境条目158## 使用 `/auto-mode-setup` 生成环境条目

159 159 

160运行 `/auto-mode-setup` 让 Claude Code 从你的项目和最近的会话中草拟 `autoMode.environment` 条目,有时还会草拟[规则条目](#override-the-block-and-allow-rules)。如果你接受草稿,Claude Code 会将其写入 `~/.claude/settings.json`。160运行 `/auto-mode-setup`,让 Claude Code 根据您的项目以及您在该项目中的近期会话,起草 `autoMode.environment` 条目,有时也会起草[规则条目](#override-the-block-and-allow-rules)。如果您接受该草稿,Claude Code 会将其写入 `~/.claude/settings.json`。

161 161 

162> [!NOTE]162> [!NOTE]

163>163>

164> `/auto-mode-setup` 适用于 Pro、Max、Team 和 Enterprise 计划,以及使用 Claude Console API 密钥的情况。在 Pro、Max 或 Team 计划中,需要 v2.1.228 或更高版本;在原生 Windows 上需要 v2.1.233 或更高版本。在 Enterprise 计划中或使用 Claude Console API 密钥时,需要 v2.1.283 或更高版本。如果您的会话中缺少该命令,请参阅 [`/auto-mode-setup` 返回 "Unknown command"](#auto-mode-setup-returns-unknown-command)。164> `/auto-mode-setup` 适用于 Pro、Max、Team 和 Enterprise 计划,以及使用 Claude Console API 密钥的情况。在 Pro、Max 或 Team 计划中,您需要 v2.1.228 或更高版本,在原生 Windows 上则需要 v2.1.233 或更高版本。在 Enterprise 计划中或使用 Claude Console API 密钥时,您需要 v2.1.283 或更高版本。如果您的会话中没有该命令,请参阅 [`/auto-mode-setup` 返回 "Unknown command"](#auto-mode-setup-returns-unknown-command)。

165 165 

166### `/auto-mode-setup` 读取的内容166### `/auto-mode-setup` 读取的内容

167 167 

168如果 `~/.claude/settings.json` 已经包含 `autoMode` 条目,Claude Code 会首先询问是否添加到你的环境列表或替换它,并且无论哪种方式都会保留你编写的规则。然后 Claude Code 会询问你如何使用此项目,并在扫描任何内容之前提供两个可选扫描。在扫描中,Claude Code 始终读取这些来源:168如果 `~/.claude/settings.json` 中已有 `autoMode` 条目,Claude Code 会首先询问是添加到您的环境列表还是替换它,无论哪种方式都会保留您编写的规则。随后,Claude Code 会询问您如何使用此项目,并在扫描任何内容之前提供两项可选扫描。在扫描中,Claude Code 始终读取以下来源:

169 169 

170* 此项目的 `CLAUDE.md`、`README.md`、配置文件和 git 远程170* 此项目的 `CLAUDE.md`、`README.md`、配置文件和 Git 远程地址

171* 你的 `autoMode` 和 `permissions.allow` 设置171* 您的 `autoMode` 和 `permissions.allow` 设置

172* Claude 在你最近在此项目中的会话中运行的命令的主机、存储桶和命令名称,从不读取你的消息172* Claude 在您于此项目中的近期会话里运行的命令所涉及的主机、存储桶和命令名称,但绝不包括您的消息

173 173 

174两个可选扫描各添加一个来源:174两项可选扫描各增加一个来源:

175 175 

176* 你的 shell 历史记录中每个命令的第一个单词176* 您的 shell 历史记录中每条命令的第一个单词

177* 你主目录下的远程主机和存储库名称177* 您主目录下各仓库的远程主机和名称

178 178 

179### 审查并保存草稿179### 审阅并保存草稿

180 180 

181Claude Code 在后台扫描,然后向你显示草稿。你可以整体接受或丢弃它,所以之后编辑 `~/.claude/settings.json` 来调整单个条目。当你接受时,Claude Code 会写入草稿并将其与你已有的设置协调:181Claude Code 在后台进行扫描,然后向您展示草稿。您只能整体接受或放弃该草稿,因此如需调整单个条目,请在之后编辑 `~/.claude/settings.json`。当您接受时,Claude Code 会写入草稿,并将其与您已有的设置进行协调:

182 182 

183* Claude Code 写入 `environment` 列表时不包含 `"$defaults"`,因为草稿明确说明了它保持不变的内置条目183* Claude Code 写入的 `environment` 列表不包含 `"$defaults"`,因为草稿已逐一列出其未更改的内置条目

184* Claude Code 在草稿添加条目的 `allow`、`soft_deny` 和 `hard_deny` 列表中各包含 `"$defaults"`,除非你已经编写了不包含它的 `allow` 列表,这样你未替换的[内置规则](#override-the-block-and-allow-rules)仍然有效184* 对于草稿添加了条目的 `allow`、`soft_deny` 和 `hard_deny` 列表,Claude Code 会在每个列表中包含 `"$defaults"`,除非您已经编写了不含它的 `allow` 列表,这样您未替换的[内置规则](#override-the-block-and-allow-rules)将继续生效

185* 保存后,Claude Code 会提供删除 `~/.claude/settings.json` 中自动模式忽略的 `permissions.allow` 规则,例如 `Bash(*)`,或自动批准破坏性命令的规则185* 保存后,Claude Code 会提议删除 `~/.claude/settings.json` 中被自动模式忽略的 `permissions.allow` 规则(例如 `Bash(*)`),或会自动批准破坏性命令的规则

186 186 

187然后运行 `claude auto-mode config` 来[查看有效结果](#inspect-the-defaults-and-your-effective-config)。187然后运行 `claude auto-mode config` 以[查看最终生效的结果](#inspect-the-defaults-and-your-effective-config)。

188 188 

189### 关闭 `/auto-mode-setup`189### 关闭 `/auto-mode-setup`

190 190 

191一旦自动模式阻止了多个操作,而你仍然没有 `autoMode.environment` 条目,Claude Code 会在回合结束时显示一个标题为"教自动模式了解你的环境?"的对话框,并提供为你运行 `/auto-mode-setup`。要停止该提议但保留命令,请在该对话框中选择**不再显示**。191当自动模式已阻止了若干操作,而您仍没有任何 `autoMode.environment` 条目时,Claude Code 会在某一轮次结束时显示一个标题为 "Teach auto mode about your environment?" 的对话框,并提议为您运行 `/auto-mode-setup`。若要停止此提议但保留该命令,请在该对话框中选择 **Don't show again**。

192 192 

193要同时关闭命令和提议,请将此 [`skillOverrides`](https://code.claude.com/docs/zh-CN/skills#override-skill-visibility-from-settings) 条目添加到 `~/.claude/settings.json`:193若要同时关闭该命令和此提议,请将以下 [`skillOverrides`](https://code.claude.com/docs/zh-CN/skills#override-skill-visibility-from-settings) 条目添加到 `~/.claude/settings.json`:

194 194 

195```json theme={null}195```json theme={null}

196{196{


200}200}

201```201```

202 202 

203`/auto-mode-setup` 是一个内置命令而不是[捆绑技能](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills),所以这个 `skillOverrides` 条目仍然适用于它,但 [`disableBundledSkills`](https://code.claude.com/docs/zh-CN/settings-reference#disablebundledskills) 不会将其关闭。203`/auto-mode-setup` 是内置命令而非[随附 skill](https://code.claude.com/docs/zh-CN/skills.md#bundled-skills),因此此 `skillOverrides` 条目仍然适用于它,但 [`disableBundledSkills`](https://code.claude.com/docs/zh-CN/settings-reference#disablebundledskills) 无法将其关闭。

204 204 

205### `/auto-mode-setup` 返回 "Unknown command"205### `/auto-mode-setup` 返回 "Unknown command"

206 206 

207如果在 Claude Code 输入框中输入 `/auto-mode-setup` 后显示 `Unknown command: /auto-mode-setup`,请检查以下原因:207如果在 Claude Code 输入框中键入 `/auto-mode-setup` 时输出 `Unknown command: /auto-mode-setup`,请检查以下原因:

208 208 

209* **安装或升级后的首个会话**:启动一个新会话。如果该命令在新会话中仍然缺失,请参阅[后续会话同样缺少该命令的设置情况](https://code.claude.com/docs/zh-CN/env-vars.md#first-session-after-an-install-or-upgrade)。209* **安装或升级后的第一个会话**:启动一个新会话。如果新会话中仍然没有该命令,请参阅[后续会话启动时也不包含该命令的设置情况](https://code.claude.com/docs/zh-CN/env-vars.md#first-session-after-an-install-or-upgrade)。

210* **版本过旧**:在 shell 中运行 `claude --version`。如果版本低于[您的计划所需的最低版本](#generate-environment-entries),请[更新 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)。210* **版本过旧**:在 shell 中运行 `claude --version`。如果版本低于[您所用计划的最低版本](#generate-environment-entries),请[更新 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)。

211* **遥测已关闭、第三方提供商或 Claude apps 网关**:在 v2.1.304 之前,该命令在[已关闭功能标志获取的会话](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)中不可用。如果您的会话属于这种情况,请将 Claude Code [更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)到 v2.1.304 或更高版本。211* **遥测已关闭、第三方提供商或 Claude 应用网关**:在 v2.1.304 之前,该命令在[已关闭功能标志获取的会话](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)中不可用。如果您的会话属于其中之一,请将 Claude Code [更新](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)到 v2.1.304 或更高版本。

212 212 

213在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,该命令会显示 `/auto-mode-setup isn't available in this environment.`。请改为在终端的交互式会话中运行它。213在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,该命令会改为输出 `/auto-mode-setup isn't available in this environment.`。请在终端的交互式会话中运行它。

214 214 

215## 覆盖阻止和允许规则215## 覆盖阻止和允许规则

216 216 

Details

52 52 

53## 示例:构建 webhook 接收器53## 示例:构建 webhook 接收器

54 54 

55本演练构建一个单文件服务器,该服务器侦听 HTTP 请求并将其转发到您的 Claude Code 会话中。最后,任何可以发送 HTTP POST 的东西,如 CI 管道、监控警报或 `curl` 命令,都可以将事件推送到 Claude。55本演练将构建一个单文件服务器,它监听 HTTP 请求并将其转发到您的 Claude Code 会话中。完成后,任何能够发送 HTTP POST 的对象,例如 CI 流水线、监控告警或 `curl` 命令,都可以向 Claude 推送事件。

56 56 

57此示例使用 [Bun](https://bun.sh) 作为运行时,用于其内置的 HTTP 服务器和 TypeScript 支持。您可以改用 [Node](https://nodejs.org) 或 [Deno](https://deno.com);唯一的要求是 [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk)。57本示例使用 [Bun](https://bun.sh) 作为运行时,因为它内置了 HTTP 服务器和 TypeScript 支持。您也可以改用 [Node](https://nodejs.org) 或 [Deno](https://deno.com);唯一的要求是 [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk)。

58 58 

59**1. 创建项目**59**1. 创建项目**

60 60 

61[permission relay](#relay-permission-prompts) 示例直接导入 `zod`,因此它与 MCP SDK 一起安装。创建一个新目录并安装两者:61[权限中继](#relay-permission-prompts)示例会直接导入 `zod`,因此需要将其与 MCP SDK 一起安装。创建一个新目录并安装两者:

62 62 

63```bash theme={null}63```bash theme={null}

64mkdir webhook-channel && cd webhook-channel64mkdir webhook-channel && cd webhook-channel


67 67 

68**2. 编写频道服务器**68**2. 编写频道服务器**

69 69 

70创建一个名为 `webhook.ts` 的文件。这是您的整个频道服务器:它通过 stdio 连接到 Claude Code,并在端口 8788 上侦听 HTTP POST。当请求到达时,它将主体作为频道事件推送到 Claude。70创建一个名为 `webhook.ts` 的文件。这就是您的整个频道服务器:它通过 stdio 连接到 Claude Code,并在端口 8788 上监听 HTTP POST。当请求到达时,它会将请求体作为频道事件推送给 Claude。

71 71 

72```ts title="webhook.ts" theme={null}72```ts title="webhook.ts" theme={null}

73#!/usr/bin/env bun73#!/usr/bin/env bun

74import { Server } from '@modelcontextprotocol/sdk/server/index.js'74import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'75import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 76 

77// 创建 MCP 服务器并将其声明为频道77// Create the MCP server and declare it as a channel

78const mcp = new Server(78const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },79 { name: 'webhook', version: '0.0.1' },

80 {80 {

81 // 这个键使其成为频道 — Claude Code 为其注册侦听器81 // this key is what makes it a channel — Claude Code registers a listener for it

82 capabilities: { experimental: { 'claude/channel': {} } },82 capabilities: { experimental: { 'claude/channel': {} } },

83 // Claude Code 在服务器连接时将其传递给 Claude 作为上下文,以便它知道如何处理这些事件83 // Claude Code delivers this to Claude as context when the server connects, so it knows how to handle these events

84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',

85 },85 },

86)86)

87 87 

88// 通过 stdio 连接到 Claude Code(Claude Code 生成此进程)88// Connect to Claude Code over stdio (Claude Code spawns this process)

89await mcp.connect(new StdioServerTransport())89await mcp.connect(new StdioServerTransport())

90 90 

91// 启动一个 HTTP 服务器,将每个 POST 转发给 Claude91// Start an HTTP server that forwards every POST to Claude

92Bun.serve({92Bun.serve({

93 port: 8788, // 任何开放端口都可以93 port: 8788, // any open port works

94 // 仅限本地主机:此机器外的任何东西都无法 POST94 // localhost-only: nothing outside this machine can POST

95 hostname: '127.0.0.1',95 hostname: '127.0.0.1',

96 async fetch(req) {96 async fetch(req) {

97 const body = await req.text()97 const body = await req.text()

98 await mcp.notification({98 await mcp.notification({

99 method: 'notifications/claude/channel',99 method: 'notifications/claude/channel',

100 params: {100 params: {

101 content: body, // 成为 <channel> 标签的主体101 content: body, // becomes the body of the <channel> tag

102 // 每个键都成为标签属性,例如 <channel path="/" method="POST">102 // each key becomes a tag attribute, e.g. <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },104 },

105 })105 })


108})108})

109```109```

110 110 

111该文件按顺序配置服务器、连接和启动 HTTP 侦听器:111该文件依次配置服务器、通过 stdio 连接,并启动 HTTP 监听器:

112 112 

113* **服务器配置**:使用 `claude/channel` 在其能力中创建 MCP 服务器,这是告诉 Claude Code 这是一个频道的原因。Claude Code 在服务器连接时将 [`instructions`](#server-options) 字符串传递给 Claude 作为上下文:告诉 Claude 期望什么事件、是否回复以及如果应该回复,如何路由回复。113* **服务器配置**:创建在其 capabilities 中包含 `claude/channel` 的 MCP 服务器,正是这一点告诉 Claude Code 这是一个频道。服务器连接时,Claude Code 会将 [`instructions`](#server-options) 字符串作为上下文传递给 Claude:告诉 Claude 应预期哪些事件、是否需要回复,以及如需回复应如何路由回复。

114* **Stdio 连接**:通过 stdin/stdout 连接到 Claude Code。这对任何 [MCP 服务器](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) 都是标准的。114* **Stdio 连接**:通过 stdin/stdout 连接到 Claude Code。这对任何 [MCP 服务器](https://modelcontextprotocol.io/docs/concepts/transports#standard-io)来说都是标准做法。

115* **HTTP 侦听器**:在端口 8788 上启动本地 Web 服务器。每个 POST 主体都通过 `mcp.notification()` 作为频道事件转发给 Claude。`content` 成为事件主体,每个 `meta` 条目成为 `<channel>` 标签上的属性。侦听器需要访问 `mcp` 实例,因此它在同一进程中运行。对于更大的项目,您可以将其拆分为单独的模块。115* **HTTP 监听器**:在端口 8788 上启动本地 Web 服务器。每个 POST 请求体都会通过 `mcp.notification()` 作为频道事件转发给 Claude。`content` 成为事件正文,每个 `meta` 条目成为 `<channel>` 标签上的一个属性。监听器需要访问 `mcp` 实例,因此它在同一进程中运行。对于较大的项目,您可以将其拆分为单独的模块。

116 116 

117**3. 向 Claude Code 注册您的服务器**117**3. 向 Claude Code 注册您的服务器**

118 118 

119将服务器添加到您的 MCP 配置中,以便 Claude Code 知道如何启动它。对于同一目录中的项目级 `.mcp.json`,使用相对路径。对于 `~/.claude.json` 中的用户级配置,使用完整的绝对路径,以便可以从任何项目找到服务器:119将服务器添加到您的 MCP 配置中,以便 Claude Code 知道如何启动它。对于同一目录中的项目级 `.mcp.json`,请使用相对路径。对于 `~/.claude.json` 中的用户级配置,请使用完整的绝对路径,以便从任何项目都能找到该服务器:

120 120 

121```json title=".mcp.json" theme={null}121```json title=".mcp.json" theme={null}

122{122{


126}126}

127```127```

128 128 

129Claude Code 在启动时读取您的 MCP 配置并将每个服务器作为子进程生成。129Claude Code 在启动时读取您的 MCP 配置,并将每个服务器作为子进程启动。

130 130 

131**4. 测试它**131**4. 测试**

132 132 

133在研究预览期间,自定义频道不在允许列表上,因此使用开发标志启动 Claude Code:133在研究预览期间,自定义频道不在允许列表中,因此请使用开发标志启动 Claude Code:

134 134 

135```bash theme={null}135```bash theme={null}

136claude --dangerously-load-development-channels server:webhook136claude --dangerously-load-development-channels server:webhook

137```137```

138 138 

139Claude Code 首先显示一个全屏警告对话框,列出您正在加载的开发频道。选择**我正在使用此进行本地开发**继续,或选择**退出**退出。139Claude Code 首先会显示一个全屏警告对话框,列出您正在加载的开发频道。选择 **I am using this for local development** 继续,或选择 **Exit** 退出。

140 140 

141第一次在此项目中启动会话时,Claude Code 在使用来自 `.mcp.json` 的新服务器之前也会要求同意。对话框报告"在此项目中找到新的 MCP 服务器:webhook"。选择**使用此 MCP 服务器**继续。141当您首次在此项目中启动会话时,Claude Code 还会在使用 `.mcp.json` 中的新服务器之前征求您的同意。对话框会显示"New MCP server found in this project: webhook"。选择 **Use this MCP server** 继续。

142 142 

143接受后,Claude Code 将您的 `webhook.ts` 作为子进程生成,HTTP 侦听器自动在您配置的端口上启动(此示例中为 8788)。您不需要自己运行服务器。143接受后,Claude Code 会将您的 `webhook.ts` 作为子进程启动,HTTP 监听器会在您配置的端口(本示例中为 8788)上自动启动。您无需自行运行服务器。

144 144 

145启动横幅下方的暗淡通知确认频道已注册:`Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`。145启动横幅下方的一条暗色提示会确认频道已注册:`Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`。

146 146 

147如果您看到"被组织政策阻止",您的组织管理员需要[启用频道](https://code.claude.com/docs/zh-CN/channels.md#enterprise-controls)。147如果您看到"blocked by org policy",则需要您的组织管理员先[启用频道](https://code.claude.com/docs/zh-CN/channels.md#enterprise-controls)。

148 148 

149在单独的终端中,通过向您的服务器发送带有消息的 HTTP POST 来模拟 webhook。此示例向端口 8788 发送 CI 失败警报(或您配置的任何端口):149在另一个终端中,通过向服务器发送带有消息的 HTTP POST 来模拟 webhook。本示例向端口 8788(或您配置的任何端口)发送一条 CI 失败告警:

150 150 

151```bash theme={null}151```bash theme={null}

152curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"152curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

153```153```

154 154 

155有效负载作为 `<channel>` 标签到达 Claude 的上下文中:155负载会以 `<channel>` 标签的形式到达 Claude 的上下文:

156 156 

157```text theme={null}157```text theme={null}

158<channel source="webhook" path="/" method="POST">158<channel source="webhook" path="/" method="POST">


160</channel>160</channel>

161```161```

162 162 

163您的终端将事件呈现为单行摘要 `← webhook: build failed on main: https://ci.example.com/run/1234`,而不是原始标签。然后您会看到 Claude 开始响应:读取文件、运行命令或消息要求的任何操作。这是一个单向频道,因此 Claude 在您的会话中行动,但不会通过 webhook 发送任何内容回复。要添加回复,请参阅[公开回复工具](#expose-a-reply-tool)。163您的终端会将该事件渲染为单行摘要 `← webhook: build failed on main: https://ci.example.com/run/1234`,而不是原始标签。随后您会看到 Claude 开始响应:读取文件、运行命令,或执行消息所要求的任何操作。这是一个单向频道,因此 Claude 会在您的会话中采取行动,但不会通过 webhook 发回任何内容。要添加回复功能,请参阅[公开回复工具](#expose-a-reply-tool)。

164 164 

165如果事件没有到达,诊断取决于 `curl` 返回的内容:165如果事件没有到达,诊断方法取决于 `curl` 返回的结果:

166 166 

167* **`curl` 成功但没有任何内容到达 Claude**:在您的会话中运行 `/mcp` 以检查服务器的状态。`failed` 状态通常意味着您的服务器文件中存在依赖项或导入错误。要查看 stderr 跟踪,请使用 `claude --debug --dangerously-load-development-channels server:webhook` 重新启动,并检查 `~/.claude/debug/<session-id>.txt` 处的调试日志。167* **`curl` 成功但没有任何内容到达 Claude**:在会话中运行 `/mcp` 检查服务器状态。`failed` 状态通常表示服务器文件中存在依赖或导入错误。要查看 stderr 跟踪信息,请使用 `claude --debug --dangerously-load-development-channels server:webhook` 重新启动,并检查位于 `~/.claude/debug/<session-id>.txt` 的调试日志。

168* **`curl` 失败,显示"connection refused"**:端口要么尚未绑定,要么来自较早运行的陈旧进程正在占用它。`lsof -i :<port>` 显示正在侦听的内容;在重新启动会话之前 `kill` 陈旧进程。168* **`curl` 失败并显示"connection refused"**:端口要么尚未绑定,要么被先前运行遗留的进程占用。`lsof -i :<port>` 可显示正在监听的进程;在重新启动会话之前,请先 `kill` 掉遗留进程。

169 169 

170[fakechat 服务器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)使用 Web UI、文件附件和用于双向聊天的回复工具扩展此模式。170[fakechat 服务器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)在此模式的基础上进行了扩展,增加了 Web UI、文件附件以及用于双向聊天的回复工具。

171 171 

172## 在研究预览期间测试172## 在研究预览期间测试

173 173 

checkpointing.md +27 −27

Details

8 8 

9Claude Code 自动跟踪 Claude 在工作时所做的文件编辑,允许您快速撤销更改并回溯到之前的状态,以防任何事情出现偏差。9Claude Code 自动跟踪 Claude 在工作时所做的文件编辑,允许您快速撤销更改并回溯到之前的状态,以防任何事情出现偏差。

10 10 

11## checkpointing 如何工作11## 检查点的工作原理

12 12 

13当您与 Claude 合作时,checkpointing 会自动捕获每次您发送开始一个回合的提示前代码的状态。13在您与 Claude 协作时,检查点功能会在您发送每条开启新轮次的提示词之前,自动捕获代码的状态。

14 14 

15### 自动跟踪15### 自动跟踪

16 16 

17Claude Code 跟踪其文件编辑工具所做的所有更改:17Claude Code 会跟踪其文件编辑工具所做的所有更改:

18 18 

19* 每个您发送的开始一个回合的提示都会创建一个新的 checkpoint19* 您发送的每条开启新轮次的提示词都会创建一个新的检查点

20* Claude Code 在一个会话中保留最近 100 个 checkpoint 的文件快照。丢弃较旧的 checkpoint 会删除没有其他 checkpoint 引用的快照文件,除了每个文件的第一个快照,VS Code 扩展将其用作会话 diffs 的基线。20* Claude Code 会为会话中最近的 100 个检查点保留文件快照。丢弃较旧的检查点时,会删除不再被任何剩余检查点引用的快照文件,但每个文件的首个快照除外,VS Code 扩展会将其用作会话 diff 的基线。

21* Claude Code 将 checkpoints 与对话一起保存,因此您可以在恢复会话后仍然运行 `/rewind`21* Claude Code 会将检查点与对话一起保存,因此在恢复会话后您仍然可以运行 `/rewind`

22* Claude Code 在 [retention sweep](https://code.claude.com/docs/zh-CN/claude-directory.md#cleaned-up-automatically) 中删除会话的文件快照,默认情况下在会话最后一次保存后约 30 天。回溯到快照已消失的 checkpoint 可能会失败,出现 [`No files were restored`](https://code.claude.com/docs/zh-CN/errors#no-files-were-restored) 错误。要保留快照更长时间,请设置 [`cleanupPeriodDays`](https://code.claude.com/docs/zh-CN/settings-reference#cleanupperioddays)。22* Claude Code 会在[保留期清理](https://code.claude.com/docs/zh-CN/claude-directory.md#cleaned-up-automatically)中删除会话的文件快照,默认情况下约为该会话最后一次保存快照后的 30 天。回退到快照已被删除的检查点时,可能会失败并显示 [`No files were restored`](https://code.claude.com/docs/zh-CN/errors#no-files-were-restored)。如需更长时间地保留快照,请设置 [`cleanupPeriodDays`](https://code.claude.com/docs/zh-CN/settings-reference#cleanupperioddays)。

23 23 

24### 回溯和总结24### 回退与摘要

25 25 

26运行 `/rewind`,或在提示输入为空时按两次 `Esc`,打开回溯菜单。26运行 `/rewind`,或在提示词输入框为空时按两次 `Esc`,即可打开回退菜单。

27 27 

28> [!NOTE]28> [!NOTE]

29>29>

30> 如果提示输入包含文本,双 `Esc` 会清除它而不是打开菜单。清除的文本会保存到您的输入历史记录中,因此在您完成回溯菜单后,按 `Up` 可以调用它。30> 如果提示词输入框中有文本,双击 `Esc` 会清除该文本,而不是打开菜单。被清除的文本会保存到输入历史记录中,因此在回退菜单中操作完成后,按 `Up` 即可找回。

31 31 

32回溯菜单列出了您在会话期间发送的提示词。选择您想要操作的点,然后选择一个操作:32回退菜单会列出您在会话期间发送的提示词。选择您要操作的位置,然后选择一个操作:

33 33 

34* **恢复代码和对话**:将代码和对话都恢复到该点34* **Restore code and conversation**:将代码和对话都恢复到该位置

35* **恢复对话**:回溯到该消息,同时保持当前代码35* **Restore conversation**:回退到该消息,同时保留当前代码

36* **恢复代码**:恢复文件更改,同时保持对话36* **Restore code**:还原文件更改,同时保留对话

37* **从此处总结**:将此点之后的对话压缩为摘要,释放 context window 空间37* **Summarize from here**:将从该位置开始往后的对话压缩为摘要,以释放上下文窗口空间

38* **到此处总结**:将此点之前的对话压缩为摘要,保持后续消息完整38* **Summarize up to here**:将该位置之前的对话压缩为摘要,并完整保留之后的消息

39* **算了**:返回消息列表而不做任何更改39* **Never mind**:返回消息列表,不做任何更改

40 40 

41两个代码恢复选项仅在所选 checkpoint 具有要恢复的跟踪文件更改时出现。如果该点之后没有捕获文件编辑,菜单仅提供 **恢复对话**、总结选项和 **算了**。41只有当所选检查点存在可还原的已跟踪文件更改时,才会显示这两个代码恢复选项。如果在该位置之后没有捕获到任何文件编辑,菜单只会提供 **Restore conversation**、摘要选项和 **Never mind**。

42 42 

43恢复对话或选择"从此处总结"后,所选消息的原始提示会恢复到输入字段中,以便您可以重新发送或编辑它。43恢复对话或选择 Summarize from here 后,所选消息中的原始提示词会恢复到输入框中,以便您重新发送或编辑。

44 44 

45选择"到此处总结"会让您留在对话末尾,输入字段为空。使用任一总结选项,**总结的对话** 标记会出现在对话中压缩消息的位置。45选择 Summarize up to here 后,您会停留在对话末尾,输入框为空。无论选择哪个摘要选项,对话中被压缩消息所在的位置都会显示一个 **Summarized conversation** 标记。

46 46 

47#### 如果您在发送下一个提示词之前退出,已回溯的消息可能会重新出现47#### 如果在发送下一条提示词之前退出,已回退的消息可能会重新出现

48 48 

49要再次移除重新出现的消息,请在该会话中运行 `/rewind` 并选择相同的提示词,然后选择 **恢复对话**。在退出之前,请向 Claude 发送一个提示词,因为 Claude Code 会将回溯后的对话与该提示词一起保存。您已恢复的文件会保持回溯后的状态。49要再次移除重新出现的消息,请在该会话中运行 `/rewind` 并选择同一条提示词,然后选择 **Restore conversation**。在退出之前,请向 Claude 发送一条提示词,因为 Claude Code 会将回退后的对话与该提示词一起保存。您已恢复的文件会保持回退后的状态。

50 50 

51#### 回溯过去已清除的对话51#### 回退到已清除的对话之前

52 52 

53如果您在同一 Claude Code 进程中较早运行了 `/clear`,回溯菜单会在列表顶部显示一个额外的条目,标记为 `/resume <session-id> (previous session)`。选择它可以恢复在 `/clear` 运行前活跃的对话。该条目在您退出 Claude Code 或恢复不同会话之前可用。53如果您之前在同一个 Claude Code 进程中运行过 `/clear`,回退菜单会在列表顶部显示一个额外条目,标记为 `/resume <session-id> (previous session)`。选择该条目即可恢复运行 `/clear` 之前处于活动状态的对话。在您退出 Claude Code 或恢复其他会话之前,该条目会一直可用。

54 54 

55#### 指导总结55#### 引导摘要

56 56 

57总结不会改变磁盘上的文件,原始消息保留在会话记录中,因此 Claude 仍然可以参考详细信息。要指导总结的重点,用箭头键突出显示 **总结** 选项,并在行显示 **add context (optional)** 的位置输入说明,然后按 `Enter`。用其数字键选择选项会立即总结,无需说明。57摘要不会更改磁盘上的文件,原始消息也会保留在会话记录中,因此 Claude 仍然可以引用其中的细节。如需引导摘要的侧重点,请使用方向键高亮某个 **Summarize** 选项,在该行显示 **add context (optional)** 的位置输入说明,然后按 `Enter`。使用数字键选择该选项则会立即生成摘要,不附带任何说明。

58 58 

59> [!NOTE]59> [!NOTE]

60>60>

61> 总结将您保持在同一会话中并压缩上下文,类似于有针对性的 `/compact`。要尝试不同的方法,同时保持原始会话完整,请改用 [`/branch`](https://code.claude.com/docs/zh-CN/sessions#branch-a-session) 或 `claude --continue --fork-session`。61> 摘要会让您停留在同一会话中并压缩上下文,类似于有针对性的 `/compact`。如果想在完整保留原始会话的同时另起分支尝试不同的方法,请改用 [`/branch`](https://code.claude.com/docs/zh-CN/sessions#branch-a-session) 或 `claude --continue --fork-session`。

62 62 

63## 常见用例63## 常见用例

64 64 

chrome.md +54 −54

Details

49>49>

50> Chrome 集成不可通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 等第三方提供商获得。如果您仅通过第三方提供商访问 Claude,则需要单独的 claude.ai 账户来使用此功能。50> Chrome 集成不可通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 等第三方提供商获得。如果您仅通过第三方提供商访问 Claude,则需要单独的 claude.ai 账户来使用此功能。

51 51 

52## 在 CLI 中开始52## 在 CLI 中开始使用

53 53 

54**1. 使用 Chrome 启动 Claude Code**54**1. 使用 Chrome 启动 Claude Code**

55 55 


59claude --chrome59claude --chrome

60```60```

61 61 

62首次使用 Chrome 启动时,Claude Code 会显示一个一次性对话框,介绍该集成并解释网站权限的工作原理。按 Enter 继续。62首次使用 Chrome 启动时,Claude Code 会显示一个一次性对话框,介绍该集成并说明站点权限的工作方式。按 Enter 继续。

63 63 

64要在未来的会话中启用 Chrome 而无需该标志,请参阅[默认启用 Chrome](#enable-chrome-by-default)。64如需在以后的会话中无需该标志即可启用 Chrome,请参阅[默认启用 Chrome](#enable-chrome-by-default)。

65 65 

66**2. 要求 Claude 使用浏览器**66**2. 让 Claude 使用浏览器**

67 67 

68此示例导航到页面、与其交互并报告其发现,全部来自您的终端或编辑器:68此示例会导航到一个页面、与之交互并报告发现的内容,所有操作都可以在终端或编辑器中完成:

69 69 

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

71Go to code.claude.com/docs, click on the search box,71Go to code.claude.com/docs, click on the search box,

72type "hooks", and tell me what results appear72type "hooks", and tell me what results appear

73```73```

74 74 

75如果 Claude Code 在浏览器操作前要求权限,请批准它。对话框以 `Claude in Chrome wants to` 开头,并提供在该会话中允许该网站上所有操作的选项。Claude 打开一个新标签页并开始任务。75如果 Claude Code 在执行浏览器操作前请求权限,请批准。该对话框以 `Claude in Chrome wants to` 开头,并提供在本次会话中允许该站点上所有操作的选项。Claude 会打开一个新标签页并开始执行任务。

76 76 

77随时运行 `/chrome` 以检查连接状态、管理权限、重新连接扩展程序或选择要使用的已连接浏览器。当状态面板显示"Status: 已启用"和"Extension: 已安装"时,集成正在工作。77随时运行 `/chrome` 可检查连接状态、管理权限、重新连接扩展程序,或选择要使用的已连接浏览器。当状态面板显示“状态:已启用”和“扩展程序:已安装”时,表示集成正常工作。

78 78 

79如果连接了多个浏览器,您可以选择 Claude 使用哪一个。当浏览器操作在您选择之前开始时,Claude 会提示您选择一个。要稍后切换浏览器,运行 `/chrome` 并选择**选择浏览器…**。即使另一个浏览器连接,Claude 也会继续使用您的选择。79如果连接了多个浏览器,您可以选择 Claude 使用哪一个。如果在您做出选择之前就开始了浏览器操作,Claude 会提示您选择一个。如需之后切换浏览器,请运行 `/chrome` 并选择 **Select browser…**。即使有其他浏览器连接,Claude 也会继续使用您选择的浏览器。

80 80 

81对于 VS Code,请参阅[在 VS Code 中使用 Chrome 自动化浏览器任务](https://code.claude.com/docs/zh-CN/vs-code.md#automate-browser-tasks-with-chrome)。81对于 VS Code,请参阅 [VS Code 中的浏览器自动化](https://code.claude.com/docs/zh-CN/vs-code.md#automate-browser-tasks-with-chrome)。

82 82 

83### 当 Claude 要求时安装扩展程序83### 在 Claude 询问时安装扩展程序

84 84 

85当 Claude 在交互式会话中需要您的浏览器,而 Claude Code 未检测到扩展程序时,Claude Code 会显示标题为"Claude wants to use your browser"的安装提示。Claude Code 每个会话最多询问一次。85当 Claude 在交互式会话中需要使用您的浏览器,而 Claude Code 未检测到扩展程序时,Claude Code 会显示一个标题为“Claude wants to use your browser”的安装提示。Claude Code 每个会话最多询问一次。

86 86 

87该提示提供三个选择:87该提示提供三个选项:

88 88 

89* **安装扩展程序**:在您的浏览器中打开扩展程序安装页面并启动引导式设置。Claude Code 等待安装、连接扩展程序,并在同一会话中启用浏览器工具。当连接准备好时,选择"Continue with browser tools",Claude 在您的浏览器中恢复任务。您可以通过选择"Continue without browser tools"离开设置,稍后使用 `/chrome` 完成。89* **Install extension**:在浏览器中打开扩展程序安装页面并启动引导式设置。Claude Code 会等待安装完成、连接扩展程序,并在同一会话中启用浏览器工具。连接就绪后,选择“Continue with browser tools”,Claude 会在您的浏览器中继续执行任务。您可以选择“Continue without browser tools”退出设置,之后再通过 `/chrome` 完成设置。

90* **暂不**:继续执行任务而不使用浏览器工具。Claude Code 可以在稍后的会话中再次询问。90* **Not now**:在不使用浏览器工具的情况下继续执行任务。Claude Code 可能会在之后的会话中再次询问。

91* **不再询问**:在未来的会话中停止该提示。您仍然可以随时使用 `/chrome` 设置集成。91* **Don't ask again**:在以后的会话中不再显示该提示。您仍可随时通过 `/chrome` 设置该集成。

92 92 

93两个托管 MCP 策略会关闭该提示:93有两种托管 MCP 策略会关闭该提示:

94 94 

95* 如果您的组织使用 [`deniedMcpServers` 托管设置](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists)阻止 `claude-in-chrome` MCP 服务器,Claude Code 不会显示安装提示。95* 如果您的组织通过 [`deniedMcpServers` 托管设置](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists)阻止了 `claude-in-chrome` MCP 服务器,Claude Code 不会显示安装提示。

96* 如果您的组织部署了 [`managed-mcp.json`](https://code.claude.com/docs/zh-CN/managed-mcp#exclusive-control-with-managed-mcp-json) 文件,但未[在托管集合中允许 Claude in Chrome](https://code.claude.com/docs/zh-CN/managed-mcp.md#allow-claude-in-chrome-alongside-the-managed-set),Claude Code 不会显示安装提示。96* 如果您的组织部署了 [`managed-mcp.json`](https://code.claude.com/docs/zh-CN/managed-mcp#exclusive-control-with-managed-mcp-json) 文件,但没有[在托管集之外允许 Claude in Chrome](https://code.claude.com/docs/zh-CN/managed-mcp.md#allow-claude-in-chrome-alongside-the-managed-set),Claude Code 不会显示安装提示。

97 97 

98### 默认启用 Chrome98### 默认启用 Chrome

99 99 

100要连接 Chrome 而无需每次都传递 `--chrome`,请在 CLI 会话中运行 `/chrome` 并选择 **Enabled by default**。在 [VS Code 扩展程序](https://code.claude.com/docs/zh-CN/vs-code.md#automate-browser-tasks-with-chrome)中,在输入框中键入 `/chrome` 并打开 **Enabled by default** 开关。两者共享同一个设置,因此在任一处启用它,都会同时对 CLI 和 VS Code 启用。100如需无需每次传递 `--chrome` 即可连接 Chrome,请在 CLI 会话中运行 `/chrome` 并选择**默认启用**。在 [VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md#automate-browser-tasks-with-chrome)中,在输入框中输入 `/chrome` 并打开**默认启用**开关。两者共享同一个设置,因此在任一处启用后,CLI 和 VS Code 都会启用该设置。

101 101 

102启用该设置且使用 Claude Code v2.1.287 或更高版本时,每个 VS Code 会话在启动时就会连接到您的浏览器,因此 Claude 无需您键入 `@browser` 即可使用它。在更早的版本中,或在关闭该设置时,VS Code 会话会在您键入 `@browser` 时连接。102启用该设置并使用 Claude Code v2.1.287 或更高版本时,每个 VS Code 会话都会在启动时连接到您的浏览器,因此 Claude 无需您输入 `@browser` 即可使用浏览器。在更早的版本中,或者关闭该设置时,VS Code 会话会在您输入 `@browser` 时连接。

103 103 

104当 Chrome 未运行时,Claude Code 正常启动。104Chrome 未运行时,Claude Code 会正常启动。

105 105 

106> [!NOTE]106> [!NOTE]

107>107>

108> 默认启用 Chrome 会增加上下文使用,因为浏览器工具及其说明始终被加载。如果您注意到上下文消耗增加,请关闭此设置,仅在需要时连接:在 CLI 中使用 `--chrome`,或在 VS Code 输入框中键入 [`@browser`](https://code.claude.com/docs/zh-CN/vs-code#automate-browser-tasks-with-chrome)。108> 默认启用 Chrome 会增加上下文使用量,因为浏览器工具及其说明会始终被加载。如果您注意到上下文消耗增加,请关闭该设置,仅在需要时连接:在 CLI 中使用 `--chrome`,或在 VS Code 输入框中输入 [`@browser`](https://code.claude.com/docs/zh-CN/vs-code#automate-browser-tasks-with-chrome)。

109 109 

110### 管理网站权限110### 管理站点权限

111 111 

112网站级权限从 Chrome 扩展程序继承。在 Chrome 扩展程序设置中管理权限,以控制 Claude 可以浏览、点击和输入的网站。在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中,当自动模式分类器本身批准对网站的浏览器调用时,扩展程序会跳过该调用的自己的按网站检查,除非您的权限规则拒绝任何网站对 Claude in Chrome 的访问。112站点级权限继承自 Chrome 扩展程序。在 Chrome 扩展程序设置中管理权限,以控制 Claude 可以在哪些站点上浏览、点击和输入。在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)下,当自动模式分类器本身批准了对某个站点的浏览器调用时,扩展程序会跳过该调用的逐站点检查,除非您的权限规则拒绝 Claude in Chrome 访问任何站点。

113 113 

114### VS Code 会话中的权限提示114### VS Code 会话中的权限提示

115 115 

116在 VS Code 会话中,当 Claude Code 在浏览器操作前询问您时,提示会以卡片形式显示在聊天面板中。当该操作针对您尚未允许的网站时,该卡片还会提供允许该网站的选项。116在 VS Code 会话中,当 Claude Code 在执行浏览器操作前进行询问时,提示会以卡片形式显示在聊天面板中。当操作针对您尚未允许的站点时,该卡片还会提供允许该站点的选项。

117 117 

118在因 [Enabled by default](#enable-chrome-by-default) 已开启而在启动时连接到您浏览器的会话中,在 Manual、Edit automatically、Auto 和 Bypass permissions 模式下,对于您尚未允许的网站,Claude Code 会在浏览器操作前询问您。在 Auto 和 Bypass permissions 模式下,这一行为持续到您在该会话中键入 `@browser` 为止。118在因启用了[默认启用](#enable-chrome-by-default)而在启动时连接到浏览器的会话中,无论处于 Manual、Edit automatically、Auto 还是 Bypass permissions 模式,Claude Code 在对您尚未允许的站点执行浏览器操作前都会询问您。在 Auto 和 Bypass permissions 模式下,此行为会持续到您在该会话中输入 `@browser` 为止。

119 119 

120### 计划模式中的浏览器工具120### 计划模式下的浏览器工具

121 121 

122在[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)中,在 Claude 记录 GIF、打开新标签页或运行快捷方式之前会出现权限提示。在交互式 CLI 会话中,如果[可用绕过权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)且[功能标志获取](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)已关闭,这些调用将在没有提示的情况下运行。122在[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)下,Claude 在录制 GIF、打开新标签页或运行快捷方式之前会显示权限提示。在交互式 CLI 会话中,如果[绕过权限模式可用](https://code.claude.com/docs/zh-CN/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)且[功能标志获取](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)已关闭,这些调用将在不提示的情况下运行。

123 123 

124当 `tabs_context_mcp` 调用设置 `createIfEmpty` 时也会提示,包含任何这些操作的 `browser_batch` 调用也是如此。124设置了 `createIfEmpty` 的 `tabs_context_mcp` 调用也会触发提示,包含上述任一操作的 `browser_batch` 调用同样如此。

125 125 

126## 示例工作流126## 示例工作流

127 127 

128这些示例展示了将浏览器操作与编码任务结合的常见方式。运行 `/mcp`,选择 `claude-in-chrome`,然后选择**查看工具**以查看可用浏览器工具的完整列表。128以下示例展示了将浏览器操作与编码任务结合使用的常见方式。运行 `/mcp`,选择 `claude-in-chrome`,然后选择 **View tools**,即可查看可用浏览器工具的完整列表。

129 129 

130### 测试本地网络应用130### 测试本地 Web 应用程序

131 131 

132在开发网络应用时,要求 Claude 验证您的更改是否正常工作:132开发 Web 应用时,可以让 Claude 验证您的更改是否正常工作:

133 133 

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

135I just updated the login form validation. Can you open localhost:3000,135I just updated the login form validation. Can you open localhost:3000,


137messages appear correctly?137messages appear correctly?

138```138```

139 139 

140Claude 导航到您的本地服务器、与表单交互并报告其观察到的内容。140Claude 会导航到您的本地服务器,与表单进行交互,并报告其观察到的情况。

141 141 

142### 使用控制台日志进行调试142### 使用控制台日志进行调试

143 143 

144Claude 可以读取控制台输出以帮助诊断问题。告诉 Claude 要查找的模式,而不是要求所有控制台输出,因为日志可能很冗长:144Claude 可以读取控制台输出来帮助诊断问题。由于日志可能非常冗长,请告诉 Claude 需要查找哪些模式,而不是要求获取全部控制台输出:

145 145 

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

147Open the dashboard page and check the console for any errors when147Open the dashboard page and check the console for any errors when

148the page loads.148the page loads.

149```149```

150 150 

151Claude 读取控制台消息,可以过滤特定模式或错误类型。151Claude 会读取控制台消息,并可以筛选特定模式或错误类型。

152 152 

153### 自动填充表单153### 自动填写表单

154 154 

155加快重复数据输入任务的速度:155加快重复性数据录入任务:

156 156 

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

158I have a spreadsheet of customer contacts in contacts.csv. For each row,158I have a spreadsheet of customer contacts in contacts.csv. For each row,


160name, email, and phone fields.160name, email, and phone fields.

161```161```

162 162 

163Claude 读取您的本地文件、导航网络界面并为每条记录输入数据。163Claude 会读取您的本地文件,在 Web 界面中导航,并为每条记录输入数据。

164 164 

165### 将文件上传到网页165### 向网页上传文件

166 166 

167Claude 可以将您计算机中的文件附加到页面上的上传字段。Claude Code 读取文件并将其内容发送到浏览器,因此上传在本地和远程会话中都有效。167Claude 可以将您计算机上的文件附加到页面上的上传字段中。Claude Code 会读取文件并将其内容发送到浏览器,因此上传在本地会话和远程会话中均可正常工作。

168 168 

169此示例将日志文件附加到表单:169以下示例将一个日志文件附加到表单:

170 170 

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

172Open the bug tracker at bugs.example.com, create a new issue,172Open the bug tracker at bugs.example.com, create a new issue,


175 175 

176如果 Claude 拒绝附加文件或上传失败,请检查以下原因:176如果 Claude 拒绝附加文件或上传失败,请检查以下原因:

177 177 

178* **权限**:Claude 只能在会话被允许读取文件时上传文件,因此[权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)拒绝对文件的 `Read` 访问也会阻止上传。178* **权限**:只有当会话被允许读取某个文件时,Claude 才能上传该文件,因此拒绝对文件进行 `Read` 访问的[权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings)也会阻止上传该文件。

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

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

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

182 182 

183### 在 Google Docs 中起草内容183### 在 Google Docs 中起草内容

184 184 

185使用 Claude 直接在您的文档中写入,无需 API 设置:185使用 Claude 直接在您的文档中撰写内容,无需进行 API 设置:

186 186 

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

188Draft a project update based on the recent commits and add it to my188Draft a project update based on the recent commits and add it to my

189Google Doc at docs.google.com/document/d/abc123189Google Doc at docs.google.com/document/d/abc123

190```190```

191 191 

192Claude 打开文档、点击编辑器并输入内容。这适用于您已登录的任何网络应用:Gmail、Notion、Sheets 等。192Claude 会打开文档,点击进入编辑器并输入内容。这适用于您已登录的任何 Web 应用:Gmail、Notion、Sheets 等。

193 193 

194### 从网页中提取数据194### 从网页中提取数据

195 195 


200availability for each item. Save the results as a CSV file.200availability for each item. Save the results as a CSV file.

201```201```

202 202 

203Claude 导航到页面、读取内容并将数据编译成结构化格式。203Claude 会导航到该页面,读取内容,并将数据整理为结构化格式。

204 204 

205### 运行多站点工作流205### 运行多站点工作流

206 206 

207协调多个网站之间的任务:207跨多个网站协调任务:

208 208 

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

210Check my calendar for meetings tomorrow, then for each meeting with210Check my calendar for meetings tomorrow, then for each meeting with


212about what they do.212about what they do.

213```213```

214 214 

215Claude 跨标签页工作以收集信息并完成工作流。215Claude 会在多个标签页之间工作,以收集信息并完成工作流。

216 216 

217### 录制演示 GIF217### 录制演示 GIF

218 218 

219创建浏览器交互的可共享录制:219创建可分享的浏览器交互录制:

220 220 

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

222Record a GIF showing how to complete the checkout flow, from adding222Record a GIF showing how to complete the checkout flow, from adding

223an item to the cart through to the confirmation page.223an item to the cart through to the confirmation page.

224```224```

225 225 

226Claude 录制交互序列并将其保存为 GIF 文件。录制捕获浏览器中可见的所有内容,包括已登录页面上的帐户详细信息,因此在与团队外部共享之前请查看。226Claude 会录制交互过程并将其保存为 GIF 文件。录制内容会捕获浏览器中可见的所有内容,包括已登录页面上的账户详细信息,因此在与团队以外的人员分享之前,请先进行检查。

227 227 

228### 将屏幕截图保存到磁盘228### 将屏幕截图保存到磁盘

229 229 

230要求 Claude 将屏幕截图保存为文件:230让 Claude 将屏幕截图保存为文件:

231 231 

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

233Take a screenshot of the checkout page and save it to disk233Take a screenshot of the checkout page and save it to disk

234```234```

235 235 

236Claude 将图像保存到磁盘并报告文件路径。236Claude 会将图像保存到磁盘并报告文件路径。

237 237 

238## 故障排除238## 故障排除

239 239 

Details

446 446 

447即使设置了全部五个锁定,以下父进程提供的设置仍会通过过滤器:447即使设置了全部五个锁定,以下父进程提供的设置仍会通过过滤器:

448 448 

449* **`forceLoginOrgUUID`**:当最高优先级的管理员来源未设置组织 UUID 时,Claude Code 会采用父进程提供的值。网关登录不检查此键。最高优先级管理员来源中的组织 UUID 会阻止父进程的值,并成为 Claude Code 强制执行的值。449* **`forceLoginOrgUUID`**:当 Claude Code 应用的托管设置未设置组织 UUID 时,Claude Code 会采用父进程提供的值。网关登录不检查此键。Claude Code 应用的托管设置中的组织 UUID 会阻止父进程的值,并成为 Claude Code 强制执行的组织 UUID。如果您的机器群固定了某个 Anthropic 组织,请参阅[哪个托管来源提供登录键](https://code.claude.com/docs/zh-CN/managed-settings.md#which-managed-source-supplies-login-keys),了解应在何处设置 `forceLoginOrgUUID`。

450* **`allowedMcpServers`**:当没有生效的管理员列表时,Claude Code 会采用父进程提供的允许列表。`allowManagedMcpServersOnly` 不会阻止它,因为该锁定会将胜出的列表作为托管值强制执行,在没有管理员来源提供列表时,这也包括父进程提供的列表。最高优先级管理员来源中的列表会阻止父进程的列表,并成为 Claude Code 强制执行的列表,因此请在那里、在锁定旁边设置 `allowedMcpServers`。在 v2.1.223 之前,任何管理员来源中这两个键之一的值都会阻止父进程的值。450* **`allowedMcpServers`**:当没有生效的管理员列表时,Claude Code 会采用父进程提供的允许列表。`allowManagedMcpServersOnly` 不会阻止它,因为该锁定会将胜出的列表作为托管值强制执行,在没有管理员来源提供列表时,这也包括父进程提供的列表。最高优先级管理员来源中的列表会阻止父进程的列表,并成为 Claude Code 强制执行的列表,因此请在那里、在锁定旁边设置 `allowedMcpServers`。在 v2.1.223 之前,任何管理员来源中这两个键之一的值都会阻止父进程的值。

451* **`availableModels`**:当胜出的托管来源未设置模型列表时,Claude Code 会采用父进程提供的模型列表。如果您的机器群限制模型,请在胜出来源中设置 `availableModels`。451* **`availableModels`**:当胜出的托管来源未设置模型列表时,Claude Code 会采用父进程提供的模型列表。如果您的机器群限制模型,请在胜出来源中设置 `availableModels`。

452* **`allowedProviders`**:当胜出的托管来源未设置 API 提供商允许列表时,Claude Code 会采用父进程提供的该列表。如果您的机器群限制开发人员可以使用的 API 提供商,请在胜出来源中设置 `allowedProviders`。需要 Claude Code v2.1.285 或更高版本。452* **`allowedProviders`**:当胜出的托管来源未设置 API 提供商允许列表时,Claude Code 会采用父进程提供的该列表。如果您的机器群限制开发人员可以使用的 API 提供商,请在胜出来源中设置 `allowedProviders`。需要 Claude Code v2.1.285 或更高版本。


454* **`blockedMarketplaces`**:父进程提供的市场拒绝列表会通过,并添加到托管来源设置的任何拒绝列表中,因为拒绝列表只会进一步增加限制。需要 Claude Code v2.1.282 或更高版本。454* **`blockedMarketplaces`**:父进程提供的市场拒绝列表会通过,并添加到托管来源设置的任何拒绝列表中,因为拒绝列表只会进一步增加限制。需要 Claude Code v2.1.282 或更高版本。

455* **`strictPluginOnlyCustomization`**:无论设置了何种锁定,此键都会通过过滤器,并且它会让 Claude Code 忽略开发人员自己的自定义内容,包括保护性 hook。没有任何锁定能阻止它。455* **`strictPluginOnlyCustomization`**:无论设置了何种锁定,此键都会通过过滤器,并且它会让 Claude Code 忽略开发人员自己的自定义内容,包括保护性 hook。没有任何锁定能阻止它。

456 456 

457在默认的“先到先得”设置下,只有当管理员值位于最高优先级管理员来源中时,才会阻止父进程的值,但在 [MCP 服务器锁定](#lock-behavior-across-sources)开启期间的 `allowedMcpServers` 除外。在 `managedSourcesBehavior` 合并选项下,改由 [Claude Code 如何组合托管来源](https://code.claude.com/docs/zh-CN/managed-settings.md#how-claude-code-combines-managed-sources)说明应用哪个来源的值。457如果您将 `managedSourcesBehavior` 设置为 `"merge"`,请查看[每种键应用哪个来源的值](https://code.claude.com/docs/zh-CN/managed-settings.md#compose-every-managed-source)。

458 458 

459#### 父设置中的 hook 和 skill 键如何生效459#### 父设置中的 hook 和 skill 键如何生效

460 460 

Details

421 421 

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

423models:423models:

424 - id: claude-opus-restricted # 自定义 id,不是内置模型名称424 - id: restricted-claude-opus-4-8 # 自定义 id,不是内置模型名称

425 upstream_model:425 upstream_model:

426 bedrock-isolated: us.anthropic.claude-opus-4-8 # 唯一提供它的上游426 bedrock-isolated: us.anthropic.claude-opus-4-8 # 唯一提供它的上游

427```427```


631 631 

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

633 633 

634对于 Anthropic API 上游,[`timeouts.upstream_ttfb_ms`](#http-tuning) 限制在关闭上游上的等待。该设置不适用于其他提供商,网关等待最多一小时以便上游开始响应。634网关等待响应开始的时长如下:

635 

636* **`provider: anthropic` 上游**:[`timeouts.upstream_ttfb_ms`](#http-tuning),默认 120 秒

637* **其他提供商**:最多一小时。要缩短流式请求的等待时间,请在网关 v2.1.295 或更高版本上设置 `timeouts.upstream_ttfb_ms`。非流式模型请求无论如何都最多等待一小时

635 638 

636`404` 是按上游模型可用性,因此未启用模型的上游不阻止提供它的后续上游。无法解析请求的模型的上游被跳过而不进行网络往返。639`404` 是按上游模型可用性,因此未启用模型的上游不阻止提供它的后续上游。无法解析请求的模型的上游被跳过而不进行网络往返。

637 640 


875 policies:878 policies:

876 - match: { groups: [restricted-projects] }879 - match: { groups: [restricted-projects] }

877 cli:880 cli:

878 availableModels: [claude-opus-restricted]881 availableModels: [restricted-claude-opus-4-8]

879 enforceAvailableModels: true882 enforceAvailableModels: true

880 model: claude-opus-restricted883 model: restricted-claude-opus-4-8

884 env:

885 ANTHROPIC_DEFAULT_OPUS_MODEL: restricted-claude-opus-4-8 # opus and Default resolve to the ID too

881```886```

882 887 

883#### 会导致网关在启动时停止的匹配器值888#### 会导致网关在启动时停止的匹配器值


1148 1153 

1149`blockReadsOutsideWorkingDirectories`、`disableBypassPermissionsMode`、`configRecheckIntervalMinutes` 和 `sshClientPath` 需要网关服务器上的 Claude Code v2.1.281 或更高版本。`microsoftAuthBroker` 的 `required` 值以及 Microsoft 365 `managedMcpServers` 条目的 `continuousAccessEvaluation` 字段也是如此。早于 `required` 值的 Claude Desktop 版本会将其读取为 `disabled`,因此请仅在每位成员的 Claude Desktop 都支持后再设置 `required`。Claude Desktop 的[托管配置参考](https://claude.com/docs/third-party/claude-desktop/configuration)列出了首次读取每个键的版本。1154`blockReadsOutsideWorkingDirectories`、`disableBypassPermissionsMode`、`configRecheckIntervalMinutes` 和 `sshClientPath` 需要网关服务器上的 Claude Code v2.1.281 或更高版本。`microsoftAuthBroker` 的 `required` 值以及 Microsoft 365 `managedMcpServers` 条目的 `continuousAccessEvaluation` 字段也是如此。早于 `required` 值的 Claude Desktop 版本会将其读取为 `disabled`,因此请仅在每位成员的 Claude Desktop 都支持后再设置 `required`。Claude Desktop 的[托管配置参考](https://claude.com/docs/third-party/claude-desktop/configuration)列出了首次读取每个键的版本。

1150 1155 

1156> [!NOTE]

1157>

1158> [`sshTransport`](https://claude.com/docs/third-party/claude-desktop/configuration#sshtransport) 需要网关服务器上为 Claude Code v2.1.293 或更高版本。

1159 

1151如果您在策略的 `desktop` 块中设置了 `orgPluginSettings`,网关会以 Claude Desktop 1.15200.0 及更高版本读取的数组形式提供它。较旧的桌面客户端会忽略该数组且不执行任何插件工具策略,因此在依赖它之前,请将成员更新到 1.15200.0 或更高版本。1160如果您在策略的 `desktop` 块中设置了 `orgPluginSettings`,网关会以 Claude Desktop 1.15200.0 及更高版本读取的数组形式提供它。较旧的桌面客户端会忽略该数组且不执行任何插件工具策略,因此在依赖它之前,请将成员更新到 1.15200.0 或更高版本。

1152 1161 

1153##### 角色策略如何继承基础 `desktop` 块1162##### 角色策略如何继承基础 `desktop` 块


1398| `limits` | `max_request_bytes` | 32 MiB | 入站请求体的最大大小;超出大小的请求会在缓冲请求体之前收到 `413`。对于大型文件或图片请求,请调高此值。 |1407| `limits` | `max_request_bytes` | 32 MiB | 入站请求体的最大大小;超出大小的请求会在缓冲请求体之前收到 `413`。对于大型文件或图片请求,请调高此值。 |

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

1400| `limits` | `max_url_length` | 未设置 | 设置后,过长的 URL 返回 `414` |1409| `limits` | `max_url_length` | 未设置 | 设置后,过长的 URL 返回 `414` |

1401| `timeouts` | `upstream_ttfb_ms` | 120000 | 等待上游响应头的最长时间(首字节时间)。之后响应体以流式传输,不设总时长上限。适用于直连 Anthropic 的上游路径;对于其他所有提供商,网关最多等待一小时让响应开始。 |1410| `timeouts` | `upstream_ttfb_ms` | 120000 | 等待上游响应标头的最长时间(首字节时间)。之后响应体以流式传输,没有总时长上限。如果未设置此键,默认值适用于 `provider: anthropic` 上游;对于其他所有提供商,网关最多等待一小时让响应开始。如需缩短此等待时间,请参阅[多个上游](#multiple-upstreams)。 |

1402| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 对未经身份验证的设备授权端点按 IP 施加的速率限制。对于位于共享出口 IP 或 NAT 之后的大型组织,请调高此值。[大规模推广](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#large-rollouts)说明了如何确定其大小。这些限制仅适用于设备授权登录流程,不适用于 `/v1/messages` 推理。请参阅[用户码暴力破解防护](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#user-code-brute-force-resistance)。 |1411| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 对未经身份验证的设备授权端点按 IP 施加的速率限制。对于位于共享出口 IP 或 NAT 之后的大型组织,请调高此值。[大规模推广](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#large-rollouts)说明了如何确定其大小。这些限制仅适用于设备授权登录流程,不适用于 `/v1/messages` 推理。请参阅[用户码暴力破解防护](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#user-code-brute-force-resistance)。 |

1403| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | 对 `/device` 处 `user_code` 提交按 IP 施加的速率限制。它用于阻止他人猜测其他开发者的码。[大规模推广](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#large-rollouts)说明了可以将其调高到什么程度。 |1412| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | 对 `/device` 处 `user_code` 提交按 IP 施加的速率限制。它用于阻止他人猜测其他开发者的码。[大规模推广](https://code.claude.com/docs/zh-CN/claude-apps-gateway-deploy.md#large-rollouts)说明了可以将其调高到什么程度。 |

1404 1413 

Details

228 228 

229Teleport 需要 claude.ai 订阅身份验证。请找到与您相符的情况:229Teleport 需要 claude.ai 订阅身份验证。请找到与您相符的情况:

230 230 

231* **您通过 API 密钥进行身份验证**:运行 `/login` 以改为使用您的 claude.ai 账户登录231* **您使用 API 密钥或 Console 账户登录**:在您的 shell 中运行 `claude auth login`,然后使用 claude.ai 登录

232* **错误指明了您的提供商**:云端会话无法通过第三方提供商使用。请参阅[错误表](#errors-when-sending-to-a-cloud-session)232* **错误指明了您的提供商**:云端会话无法通过第三方提供商使用。请参阅[错误表](#errors-when-sending-to-a-cloud-session)

233* **您已通过 claude.ai 登录**:您的组织可能已禁用云端会话233* **您已通过 claude.ai 登录**:您的组织可能已禁用云端会话

234 234 


437 437 

438### 无法获取组织 UUID438### 无法获取组织 UUID

439 439 

440`claude --cloud` 和 `claude --teleport` 需要使用 claude.ai 账户登录。如果您使用 API 密钥进行身份验证,或者存储的账户详情已过期,您会看到以下情况之一:440`claude --cloud` 和 `claude --teleport` 需要使用 claude.ai 账户登录。如果您改为使用 API 密钥或 Console 登录进行身份验证,或者存储的账户详情已过期,您会看到以下消息之一:

441 441 

442* `Unable to get organization UUID`442* `Unable to get organization UUID`

443* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``443* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

444* ``Cloud sessions aren't available with this Console sign-in. They need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

444* 在不带会话 ID 运行 `claude --teleport` 时,会话选择器中显示 `Error loading Claude Code sessions`445* 在不带会话 ID 运行 `claude --teleport` 时,会话选择器中显示 `Error loading Claude Code sessions`

445 446 

446在 shell 中运行 [`claude auth login`](https://code.claude.com/docs/zh-CN/cli-reference#cli-commands) 以使用您的 claude.ai 账户登录,然后重试该命令。在正在运行的会话中,`/login` 的作用相同。如果错误中提到的是您的提供商,请参阅[错误表](#errors-when-sending-to-a-cloud-session):云端会话无法通过第三方提供商使用。447在 shell 中运行 [`claude auth login`](https://code.claude.com/docs/zh-CN/cli-reference#cli-commands) 以使用您的 claude.ai 账户登录,然后重试该命令。在正在运行的会话中,`/login` 的作用相同。如果错误中提到的是您的提供商,请参阅[错误表](#errors-when-sending-to-a-cloud-session):云端会话无法通过第三方提供商使用。

Details

99 99 

100以下要求决定您是否可以添加机密,以及添加后 Agent 代理是否可以使用它:100以下要求决定您是否可以添加机密,以及添加后 Agent 代理是否可以使用它:

101 101 

102* **Role**:在 Pro、Max 和 Team 计划上,无论您的角色如何,您都可以在自己的环境中添加和删除机密。在 Team 和 Enterprise 上,所有者在您的 claude.ai 组织中持有组织管理员角色,管理员(Admin)不持有,这会改变您在以下情况下看到的内容:102* **Role**:在所有计划上,无论您的角色如何,您都可以在自己的环境中添加和删除机密。在 Team 和 Enterprise 上,所有者在您的 claude.ai 组织中持有组织管理员角色,管理员(Admin)不持有,这会改变您在以下情况下看到的内容:

103 * **Enterprise 上您自己的环境**:拥有组织管理员角色时,您可以添加和删除机密。没有该角色时,**Network secrets** 行会打开机密列表,并显示说明"Only an organization admin can add or delete network secrets",且没有 **Add secret** 或删除按钮。请让所有者将机密添加到[共享环境](#organization-shared-environments),然后在该环境中运行您的会话103 * **您自己的环境**:没有组织管理员角色时,**Add secret** 会打开一个[简化表单](#add-a-secret-without-the-role)

104 * **共享环境**:所有者从管理设置中[添加和删除其机密](#add-a-credential)。没有组织管理员角色时,请让所有者添加机密,因为该环境的对话框中没有 **Network secrets** 部分104 * **共享环境**:所有者从管理设置中[添加和删除其机密](#add-a-credential)。没有组织管理员角色时,请让所有者添加机密,因为该环境的对话框中没有 **Network secrets** 部分

105 * **Team 上您自己的环境**:没有组织管理员角色时,**Add secret** 会打开一个只接受一个主机的[简化表单](#add-a-secret-without-the-role)

106* **Environment type**:一个已存在的 Anthropic 托管云环境。[自托管环境](https://code.claude.com/docs/zh-CN/self-hosted-environments)没有网络机密105* **Environment type**:一个已存在的 Anthropic 托管云环境。[自托管环境](https://code.claude.com/docs/zh-CN/self-hosted-environments)没有网络机密

107* **API reachability**:API 接受来自互联网的连接,因为请求从 Anthropic 的网络发出106* **API reachability**:API 接受来自互联网的连接,因为请求从 Anthropic 的网络发出

108* **Encryption keys**:如果您的组织使用客户管理的加密密钥,则无法保存网络机密107* **Encryption keys**:如果您的组织使用客户管理的加密密钥,则无法保存网络机密


111 110 

112机密需要逐个添加。要更改机密的主机或值,请将其删除后重新添加。111机密需要逐个添加。要更改机密的主机或值,请将其删除后重新添加。

113 112 

114要向[共享环境](#organization-shared-environments)添加机密,请从[管理设置](https://claude.ai/admin-settings)中的 **Cloud environments** 页面打开该环境进行编辑,然后在其 **Network secrets** 部分从步骤 2 继续。如果您使用的是 Team 计划且不持有[组织管理员角色](#requirements),请在您自己的环境中执行步骤 1,然后[填写简化表单](#add-a-secret-without-the-role)。113要向[共享环境](#organization-shared-environments)添加机密,请从[管理设置](https://claude.ai/admin-settings)中的 **Cloud environments** 页面打开该环境进行编辑,然后在其 **Network secrets** 部分从步骤 2 继续。如果您使用的是 Team 或 Enterprise 计划且不持有[组织管理员角色](#requirements),请在您自己的环境中执行步骤 1,然后[填写简化表单](#add-a-secret-without-the-role)。

115 114 

116**1. 打开环境的网络机密**115**1. 打开环境的网络机密**

117 116 


133 132 

134要确认机密是否有效,请在该环境中启动会话并让 Claude 调用 API,例如使用 `curl`。API 的响应就如同请求中带有密钥一样,而密钥不会出现在会话的环境变量或任何文件中。如果列表将某个机密标记为 **Not sent**,其下方的说明会解释原因和处理方法。两个主机重叠但不完全匹配的机密不会显示标记,而 Agent 代理只会发送其中一个。133要确认机密是否有效,请在该环境中启动会话并让 Claude 调用 API,例如使用 `curl`。API 的响应就如同请求中带有密钥一样,而密钥不会出现在会话的环境变量或任何文件中。如果列表将某个机密标记为 **Not sent**,其下方的说明会解释原因和处理方法。两个主机重叠但不完全匹配的机密不会显示标记,而 Agent 代理只会发送其中一个。

135 134 

136#### 在没有组织管理员角色的 Team 计划上添加机密135#### 在没有组织管理员角色的情况下添加机密

137 136 

138如果您使用的是 Team 计划且不持有[组织管理员角色](#requirements),**Add secret** 表单只接受针对一个主机的一个机密。选择您环境的 [**Network secrets** 行](#add-a-credential),然后选择 **Add secret**。填写以下字段,然后选择表单中的 **Add secret** 按钮:137如果您使用的是 Team 或 Enterprise 计划且不持有[组织管理员角色](#requirements),**Add secret** 表单只接受针对一个主机的一个机密。选择您环境的 [**Network secrets** 行](#add-a-credential),然后选择 **Add secret**。填写以下字段,然后选择表单中的 **Add secret** 按钮:

139 138 

140* **Host**:获得该机密的唯一主机,例如 `api.example.com`。该表单不接受 `*.` 通配符139* **Host**:获得该机密的唯一主机,例如 `api.example.com`。该表单不接受 `*.` 通配符

141* **Name**:机密的可选标签140* **Name**:机密的可选标签

computer-use.md +9 −9

Details

70 70 

71## 按会话批准应用71## 按会话批准应用

72 72 

73启用 `computer-use` 服务器不会授予 Claude 访问您机器上每个应用的权限。Claude 在会话中第一次需要特定应用时,您的终端中会出现一个提示,显示:73启用 `computer-use` 服务器并不会授予 Claude 访问您机器上所有应用的权限。在一个会话中,Claude 首次需要使用某个特定应用时,终端中会出现一个权限提示,显示:

74 74 

75* Claude 想要控制哪些应用75* Claude 想要控制哪些应用

76* 任何额外请求的权限,例如剪贴板访问76* 请求的任何额外权限,例如剪贴板访问

77* Claude 工作时将隐藏多少其他应用77* Claude 工作期间将隐藏多少个其他应用

78 78 

79选择**允许此会话**或**拒绝**。批准持续当前会话。当 Claude 一起请求多个应用时,您可以一次批准多个应用。79选择 **Allow for this session** 或 **Deny**。批准仅在当前会话中有效。当 Claude 同时请求多个应用时,您可以一次性批准它们。

80 80 

81具有广泛影响的应用在提示中显示额外警告,以便您知道批准它们授予什么:81影响范围较广的应用会在权限提示中显示额外警告,以便您了解批准它们意味着授予哪些权限:

82 82 

83| 警告 | 适用于 |83| 警告 | 适用于 |

84| :- | :- |84| :- | :- |

85| 等同于 shell 访问 | Terminal、iTerm、VS Code、Warp 和其他终端和 IDE |85| 等同于 shell 访问 | Terminal、iTerm、VS Code、Warp 以及其他终端和 IDE |

86| 可以读取或写入任何文件 | Finder |86| 可以读取或写入任何文件 | Finder |

87| 可以更改系统设置 | System Settings |87| 可以更改系统设置 | System Settings |

88 88 

89这些应用不被阻止。警告让您决定任务是否值得那个级别的访问。89这些应用并不会被阻止。该警告让您能够判断任务是否需要这种级别的访问权限。

90 90 

91批准 Finder 以让 Claude 点击桌面、Dock 或 Finder 窗口。91批准 Finder 后,Claude 即可点击桌面、Dock 或 Finder 窗口。

92 92 

93Claude 的控制级别也因应用类别而异:浏览器和交易平台是仅查看的,终端和 IDE 是仅点击的,其他所有内容都获得完全控制。有关完整的分层细分,请参阅 [Desktop 中的应用权限](https://code.claude.com/docs/zh-CN/desktop.md#app-permissions)。93Claude 的控制级别也因应用类别而异:浏览器和交易平台仅可查看,终端和 IDE 仅可点击,其他所有应用则获得完全控制。有关完整的层级划分,请参阅 [Desktop 中的应用权限](https://code.claude.com/docs/zh-CN/desktop.md#app-permissions)。

94 94 

95## Claude 如何在您的屏幕上工作95## Claude 如何在您的屏幕上工作

96 96 

context-window.md +10 −10

Details

43 43 

44skill 主体在压缩后重新注入,但大型 skill 会被截断以适应每个 skill 的上限,一旦超过总预算,最旧的已调用 skill 就会被删除。截断保留文件的开头,因此请将最重要的指令放在 `SKILL.md` 的顶部附近。44skill 主体在压缩后重新注入,但大型 skill 会被截断以适应每个 skill 的上限,一旦超过总预算,最旧的已调用 skill 就会被删除。截断保留文件的开头,因此请将最重要的指令放在 `SKILL.md` 的顶部附近。

45 45 

46## 当您的上下文填满时46## 当上下文填满时

47 47 

48Claude Code 在您接近限制时自动压缩,因此完整的上下文窗口不会结束您的会话。自动传递的工作方式与时间线中的 `/compact` 步骤相同。有关它保留的内容,请参阅[当上下文填满时](https://code.claude.com/docs/zh-CN/how-claude-code-works.md#when-context-fills-up)。有关 Claude Code 何时还会压缩您闲置的对话,请参阅[空闲压缩](https://code.claude.com/docs/zh-CN/settings-reference.md#idlecompaction)。48Claude Code 会在接近上限时自动压缩,因此上下文窗口填满并不会结束您的会话。自动压缩的工作方式与时间线中的 `/compact` 步骤相同。有关它会保留哪些内容,请参阅[当上下文填满时](https://code.claude.com/docs/zh-CN/how-claude-code-works.md#when-context-fills-up)。关于 Claude Code 何时也会压缩您闲置的对话,请参阅[空闲压缩](https://code.claude.com/docs/zh-CN/settings-reference.md#idlecompaction)。

49 49 

50您也可以在自动传递运行之前采取行动:50您也可以在自动压缩运行之前采取行动:

51 51 

52* **带有焦点的压缩**:在开始长时间的新任务之前,运行带有指令的 `/compact`,例如 `/compact focus on the auth bug fix`。摘要保留您选择的内容,而不是自动传递猜测的重要内容。52* **带重点进行压缩**:在开始一项较长的新任务之前,运行带有指令的 `/compact`,例如 `/compact focus on the auth bug fix`。摘要会保留您选择的内容,而不是自动压缩所推测的重要内容。

53* **压缩对话的一部分**:运行 `/rewind`,选择一条消息,然后选择**从此处总结**或**总结到此处**。有关每个选项保留的内容以及如何指导摘要,请参阅[回退和总结](https://code.claude.com/docs/zh-CN/checkpointing.md#rewind-and-summarize)。53* **压缩部分对话**:运行 `/rewind`,选择一条消息,然后选择 **Summarize from here** 或 **Summarize up to here**。有关每个选项会保留哪些内容以及如何引导摘要,请参阅[回退与摘要](https://code.claude.com/docs/zh-CN/checkpointing.md#rewind-and-summarize)。

54* **更早压缩**:运行 [`/autocompact`](https://code.claude.com/docs/zh-CN/commands#all-commands) 并指定令牌计数,例如 `/autocompact 500k`,以设置在自动传递运行之前上下文窗口的填充程度。有关接受的值和覆盖,请参阅[设置自动压缩窗口](https://code.claude.com/docs/zh-CN/model-config.md#set-the-auto-compact-window)。54* **更早进行压缩**:运行带有 token 数量的 [`/autocompact`](https://code.claude.com/docs/zh-CN/commands#all-commands),例如 `/autocompact 500k`,以设置上下文窗口填充到多满时运行自动压缩。有关可接受的值和覆盖方式,请参阅[设置自动压缩窗口](https://code.claude.com/docs/zh-CN/model-config.md#set-the-auto-compact-window)。

55* **在任务之间清除**:切换到不相关的工作时运行 `/clear`。旧对话会挤出您接下来需要的文件,并在每条消息上花费令牌。55* **在任务之间清除**:切换到不相关的工作时运行 `/clear`。旧的对话会挤占您接下来需要的文件,并且在每条消息上都会消耗 token。

56* **委托大型读取**:将研究发送给[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md),以便文件内容保留在其上下文窗口中,而不是您的。56* **委派大量读取**:将研究工作交给[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md),这样文件内容会保留在它的上下文窗口中,而不是您的上下文窗口中。

57 57 

58如果您需要更大的窗口而不是更小的对话,Fable 模型、Sonnet 5 及更高版本、Haiku 5.5、Opus 4.6 及更高版本以及 Sonnet 4.6 支持 100 万 token 的上下文窗口。有关按计划的可用性以及如何选择 `[1m]` 模型变体,请参阅[扩展上下文](https://code.claude.com/docs/zh-CN/model-config.md#extended-context)。压缩在更大的限制下以相同的方式工作。58如果您需要更大的窗口而不是更短的对话,Fable 模型、Sonnet 5 及更高版本、Haiku 5.5、Opus 4.6 及更高版本以及 Sonnet 4.6 支持 100 万 token 的上下文窗口。有关各计划的可用性以及如何选择 `[1m]` 模型变体,请参阅[扩展上下文](https://code.claude.com/docs/zh-CN/model-config.md#extended-context)。在更大的上限下,压缩的工作方式相同。

59 59 

60自动压缩运行的位置取决于您的模型和配置。有关每个模型的边界,请参阅[默认自动压缩阈值](https://code.claude.com/docs/zh-CN/model-config.md#default-auto-compact-thresholds),如果 Claude Code 为您的模型 ID(例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名)假设了错误的窗口,请参阅[更正网关或自定义模型 ID 的窗口](https://code.claude.com/docs/zh-CN/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)。60自动压缩的运行时机取决于您的模型和配置。有关每个模型的边界,请参阅[默认自动压缩阈值](https://code.claude.com/docs/zh-CN/model-config.md#default-auto-compact-thresholds);如果 Claude Code 为您的模型 ID(例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名)假定了错误的窗口,请参阅[为网关或自定义模型 ID 更正窗口](https://code.claude.com/docs/zh-CN/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)。

61 61 

62## 检查您自己的会话62## 检查您自己的会话

63 63 

Details

36以下进程不通过启动器启动:36以下进程不通过启动器启动:

37 37 

38* 您自己在终端中启动的会话,它运行的方式取决于您如何调用它。要覆盖这些会话,在 `PATH` 上较早的目录中放置一个名为 `claude` 的脚本,该脚本使用真实二进制文件运行您的启动器;不要替换托管符号链接。后台服务及其会话启动时不进行 `PATH` 查询,所以两个启动器不会在那里堆叠。38* 您自己在终端中启动的会话,它运行的方式取决于您如何调用它。要覆盖这些会话,在 `PATH` 上较早的目录中放置一个名为 `claude` 的脚本,该脚本使用真实二进制文件运行您的启动器;不要替换托管符号链接。后台服务及其会话启动时不进行 `PATH` 查询,所以两个启动器不会在那里堆叠。

39* `claude-cli://` 深层链接的第一个进程,操作系统的协议处理程序直接启动。该会话之后在后台启动的所有内容都通过启动器运行。要完全关闭此路径,请使用 `disableDeepLinkRegistration` 设置 [prevent handler registration](https://code.claude.com/docs/zh-CN/deep-links.md#registration-and-supported-platforms)。39* 从 `claude-cli://` 深层链接打开的会话,它会在新终端中启动,而不经过您的启动器。要防止深层链接为新用户打开会话,请在该用户首次运行 Claude Code 之前将 [`disableDeepLinkRegistration`](https://code.claude.com/docs/zh-CN/settings-reference#disabledeeplinkregistration) 设置为 `"disable"`。对于已有[已注册处理程序](https://code.claude.com/docs/zh-CN/deep-links.md#registration-and-supported-platforms)的用户,深层链接仍会继续打开会话,因为该设置不会移除处理程序。

40* `--worktree` 与 `--tmux` 结合执行的重新启动:终端多路复用器启动该窗格,而不是 Claude Code 的二进制文件。40* `--worktree` 与 `--tmux` 结合执行的重新启动:终端多路复用器启动该窗格,而不是 Claude Code 的二进制文件。

41* [Claude in Chrome](https://code.claude.com/docs/zh-CN/chrome.md) 注册的本机消息主机:浏览器启动它,而不是 Claude Code 的二进制文件。41* [Claude in Chrome](https://code.claude.com/docs/zh-CN/chrome.md) 注册的本机消息主机:浏览器启动它,而不是 Claude Code 的二进制文件。

42 42 

data-usage.md +26 −26

Details

10 10 

11### 数据训练政策11### 数据训练政策

12 12 

13**消费者用户(免费、Pro 和 Max 计划)**:13**消费者用户(Free、Pro 和 Max 计划)**:

14我们让您可以选择是否允许您的数据用于改进未来的 Claude 模型。当此设置打开时,我们将使用来自免费、Pro 和 Max 账户的数据来训练新模型(包括当您从这些账户使用 Claude Code 时)。14我们让您自行选择是否允许将您的数据用于改进未来的 Claude 模型。当此设置开启时,我们将使用来自 Free、Pro 和 Max 账户的数据训练新模型(包括您通过这些账户使用 Claude Code 时)。

15 15 

16**商业用户**:(Team 和 Enterprise 计划、API、第三方平台和 Claude Gov)维持现有政策:除非客户选择向我们提供数据以改进模型(例如,[开发者合作伙伴计划](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)),否则 Anthropic 不会使用在商业条款下发送到 Claude Code 的代码或提示来训练生成模型。16**商业用户**:(Team 和 Enterprise 计划、API、第三方平台以及 Claude Gov)维持现有政策:Anthropic 不会使用在商业条款下发送给 Claude Code 的代码或提示词来训练生成式模型,除非客户已选择向我们提供其数据以用于模型改进(例如 [Developer Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program))。

17 17 

18### 开发者合作伙伴计划18### Development Partner Program

19 19 

20如果您明确选择加入向我们提供材料以进行训练的方法,例如通过[开发者合作伙伴计划](https://support.claude.com/en/articles/11174108-about-the-development-partner-program),我们可能会使用这些提供的材料来训练我们的模型。组织管理员可以明确选择为其组织加入开发者合作伙伴计划。请注意,此计划仅适用于 Anthropic 第一方 API,不适用于 Amazon Bedrock 或 Google Cloud 的 Agent Platform 用户。20如果您明确选择加入向我们提供训练材料的方式,例如通过 [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program),我们可能会使用所提供的这些材料来训练我们的模型。组织管理员可以为其组织明确选择加入 Development Partner Program。请注意,此计划仅适用于 Anthropic 第一方 API,不适用于 Amazon Bedrock 或 Google Cloud's Agent Platform 用户。

21 21 

22### 使用 `/feedback` 命令的反馈22### 使用 `/feedback` 命令提交反馈

23 23 

24如果您选择使用 `/feedback` 命令向我们发送有关 Claude Code 的反馈,我们可能会使用您的反馈来改进我们的产品和服务。通过 `/feedback` 共享的文稿,或通过 `/bug` 和 `/share` 共享的文稿(这些命令通过相同的路径报告),将保留 5 年。24如果您选择使用 `/feedback` 命令向我们发送有关 Claude Code 的反馈,我们可能会使用您的反馈来改进我们的产品和服务。通过 `/feedback` 共享的会话记录,以及通过经由同一路径报告的 `/bug` 和 `/share` 共享的会话记录,将保留 5 年。

25 25 

26使用[Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),Claude 还可以起草反馈报告并在您的机器上将其排队供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容,发送的草稿会通过与其他 `/feedback` 报告相同的提交路径和保留期。26借助 [Claude 起草的反馈](https://code.claude.com/docs/zh-CN/tools-reference.md#sendfeedback-tool-behavior),Claude 还可以起草反馈报告并将其排队保存在您的机器上,供您审阅。在您选择发送草稿之前,Claude Code 不会发送任何内容;已发送的草稿与其他 `/feedback` 报告采用相同的提交路径和保留期限。

27 27 

28### 会话质量调查28### 会话质量调查

29 29 

30当您在 Claude Code 中看到"Claude 在此会话中表现如何?"提示时,对此调查的响应(包括选择"关闭")仅记录您的评分。作为评分提示本身的一部分,我们不收集或存储任何对话文稿、输入、输出或其他会话数据。与竖起大拇指/竖起大拇指向下反馈或 `/feedback` 报告不同,此会话质量调查是一个简单的产品满意度指标。30当您在 Claude Code 中看到"How is Claude doing this session?"提示时,回应此调查(包括选择"Dismiss")仅会记录您的评分。我们不会在评分提示本身中收集或存储任何对话记录、输入、输出或其他会话数据。与点赞/点踩反馈或 `/feedback` 报告不同,此会话质量调查只是一个简单的产品满意度指标。

31 31 

32在评分提示之后,您可能会看到一个单独的后续问题,询问"Anthropic 可以查看您的会话文稿以帮助我们改进 Claude Code 吗?"。这是与评分不同的可选第二步:32在评分提示之后,您可能会看到一个单独的后续问题:"Can Anthropic look at your session transcript to help us improve Claude Code?"。这是一个与评分不同的可选第二步:

33 33 

34* **是**:将您的对话文稿、任何子代理文稿和来自磁盘的原始会话日志文件上传到 Anthropic。已知的 API 密钥和令牌模式在上传前被编辑。源代码、文件内容和其他对话内容按原样上传。共享的文稿保留最多 6 个月。在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和已登录的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话上,"是"会将相同的有效负载写入 `~/.claude/feedback-bundles/` 下的本地存档,而不是上传;在您转发该文件之前,没有任何内容离开您的机器。34* **Yes**:将您的对话会话记录、所有子代理会话记录以及磁盘上的原始会话日志文件上传到 Anthropic。已知的 API 密钥和 token 模式会在上传前被脱敏处理。源代码、文件内容和其他对话内容将按原样上传。共享的会话记录最多保留 6 个月。在 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 以及已登录的 [Claude apps gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 会话中,选择 Yes 会将相同的负载写入 `~/.claude/feedback-bundles/` 下的本地归档文件,而不是上传;在您转发该文件之前,任何内容都不会离开您的机器。

35* **否**:拒绝而不发送任何内容35* **No**:拒绝且不发送任何内容

36* **不再询问**:拒绝并停止此后续在未来会话中出现36* **Don't ask again**:拒绝并在今后的会话中不再显示此后续问题

37 37 

38除非您明确选择**是**,否则不会上传任何内容。具有[零数据保留](https://code.claude.com/docs/zh-CN/zero-data-retention.md)的组织,或组织政策禁用产品反馈的组织,或设置了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 的组织,永远不会看到此后续。您对此调查的响应(包括评分提示后提交的会话文稿)不会影响您的数据训练偏好,也不能用于训练我们的 AI 模型。38除非您明确选择 **Yes**,否则不会上传任何内容。启用了[零数据保留](https://code.claude.com/docs/zh-CN/zero-data-retention.md)的组织、通过组织策略禁用了产品反馈的组织,或设置了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 的环境,永远不会看到此后续问题。您对此调查的回应(包括在评分提示后提交的会话记录)不会影响您的数据训练偏好,也不能用于训练我们的 AI 模型。

39 39 

40要禁用这些调查,请设置 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`。当设置了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,调查也会被禁用。通过自己的 [OpenTelemetry 收集器](https://code.claude.com/docs/zh-CN/monitoring-usage.md)阻止非必要流量但捕获调查响应的组织可以通过设置 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1` 来选择重新启用调查。然后调查仅将评分记录到配置的收集器。文稿共享后续和所有其他 Anthropic 绑定的反馈流量保持禁用。要控制频率而不是禁用,请在您的设置文件中将 [`feedbackSurveyRate`](https://code.claude.com/docs/zh-CN/settings-reference#feedbacksurveyrate) 设置为 `0` 到 `1` 之间的概率。40要禁用这些调查,请设置 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`。当设置了 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,调查也会被禁用。阻止非必要流量但通过自己的 [OpenTelemetry 收集器](https://code.claude.com/docs/zh-CN/monitoring-usage.md)采集调查回应的组织,可以通过设置 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1` 重新启用调查。此时调查仅将评分记录到所配置的收集器。会话记录共享后续问题以及所有其他发往 Anthropic 的反馈流量仍保持禁用。如果想控制频率而不是禁用,请在设置文件中将 [`feedbackSurveyRate`](https://code.claude.com/docs/zh-CN/settings-reference#feedbacksurveyrate) 设为介于 `0` 和 `1` 之间的概率值。

41 41 

42### 数据保留42### 数据保留

43 43 

44Anthropic 根据您的账户类型和偏好保留 Claude Code 数据。44Anthropic 根据您的账户类型和偏好保留 Claude Code 数据。

45 45 

46**消费者用户(免费、Pro 和 Max 计划)**:46**消费者用户(Free、Pro 和 Max 计划)**:

47 47 

48* 允许数据用于模型改进的用户:5 年保留期以支持模型开发和安全改进48* 允许将数据用于模型改进的用户:保留期为 5 年,以支持模型开发和安全性改进

49* 不允许数据用于模型改进的用户:30 天保留期49* 不允许将数据用于模型改进的用户:保留期为 30 天

50* 隐私设置可以随时在 [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls) 更改。50* 隐私设置可随时在 [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls) 更改。

51 51 

52**商业用户(Team、Enterprise 和 API)**:52**商业用户(Team、Enterprise 和 API)**:

53 53 

54* 标准:30 天保留期54* 标准:保留期为 30 天

55* [零数据保留](https://code.claude.com/docs/zh-CN/zero-data-retention.md):适用于 Claude for Enterprise 上 Claude Code 的合格账户。ZDR 不包含在标准 Enterprise 计划中;它由您的账户团队在确认符合条件后按组织启用55* [零数据保留](https://code.claude.com/docs/zh-CN/zero-data-retention.md):适用于 Claude for Enterprise 上 Claude Code 的合格账户。ZDR 不包含在标准 Enterprise 计划中;由您的客户团队在确认资格后按组织逐一启用

56* 本地缓存:Claude Code 客户端默认在 `~/.claude/projects/` 下以纯文本形式本地存储会话文稿 30 天,以启用会话恢复。使用 `cleanupPeriodDays` 调整该期间。有关存储的内容以及如何清除的信息,请参阅[应用程序数据](https://code.claude.com/docs/zh-CN/claude-directory.md#application-data)。56* 本地缓存:Claude Code 客户端默认会将会话记录以明文形式在本地 `~/.claude/projects/` 下存储 30 天,以支持会话恢复。可通过 `cleanupPeriodDays` 调整该期限。有关存储内容以及如何清除,请参阅[应用数据](https://code.claude.com/docs/zh-CN/claude-directory.md#application-data)。

57 57 

58 在 Claude Desktop 或 Cowork 中启动或最近继续的会话的文稿[默认情况下不受该限制](https://code.claude.com/docs/zh-CN/claude-directory.md#cleaned-up-automatically)。58 在 Claude Desktop 或 Cowork 中启动或最近一次继续的会话,其会话记录[默认不受该期限限制](https://code.claude.com/docs/zh-CN/claude-directory.md#cleaned-up-automatically)。

59 59 

60您可以随时删除单个云会话。删除会话会永久删除该会话的事件数据。有关如何删除会话的说明,请参阅[删除会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#delete-sessions)。60您可以随时删除单个云端会话。删除会话会永久移除该会话的事件数据。有关如何删除会话的说明,请参阅[删除会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#delete-sessions)。

61 61 

62在我们的[隐私中心](https://privacy.anthropic.com/)了解有关数据保留实践的更多信息。62在我们的[隐私中心](https://privacy.anthropic.com/)了解有关数据保留做法的更多信息。

63 63 

64有关完整详情,请查看我们的[商业服务条款](https://www.anthropic.com/legal/commercial-terms)(适用于 Team、Enterprise 和 API 用户)或[消费者条款](https://www.anthropic.com/legal/consumer-terms)(适用于免费、Pro 和 Max 用户)和[隐私政策](https://www.anthropic.com/legal/privacy)。64有关完整详情,请查阅我们的[商业服务条款](https://www.anthropic.com/legal/commercial-terms)(适用于 Team、Enterprise 和 API 用户)或[消费者条款](https://www.anthropic.com/legal/consumer-terms)(适用于 Free、Pro 和 Max 用户)以及[隐私政策](https://www.anthropic.com/legal/privacy)。

65 65 

66## 数据访问66## 数据访问

67 67 

Details

47 47 

48## 检查 MCP 服务器48## 检查 MCP 服务器

49 49 

50运行 `/mcp` 来查看每个配置的服务器、其连接状态以及你是否为当前项目批准了它。服务器可以定义正确但仍然不提供工具,原因有几个常见的:50运行 `/mcp` 可查看每个已配置的服务器、其连接状态,以及您是否已为当前项目批准该服务器。服务器即使定义正确,也可能因以下几个常见原因而无法提供工具:

51 51 

52* `.mcp.json` 中的项目范围服务器需要一次性批准。如果提示被关闭,服务器将保持禁用状态,直到你从 `/mcp` 批准它。52* `.mcp.json` 中项目作用域的服务器需要一次性批准。如果该提示被关闭,服务器将保持禁用状态,直到您从 `/mcp` 中批准它。

53* 启动失败的服务器在 `/mcp` 中显示为失败。`command` 或 `args` 中的相对文件路径是一个常见原因,因为它们相对于你启动 Claude Code 的目录而不是 `.mcp.json` 的位置进行解析。53* 启动失败的服务器在 `/mcp` 中会显示为失败。`command` 或 `args` 中的相对文件路径是常见原因,因为它们是相对于您启动 Claude Code 的目录解析的,而不是相对于 `.mcp.json` 所在的位置。

54* 显示为已连接但列出零个工具的服务器已成功启动但没有返回工具列表。从 `/mcp` 选择**重新连接**。如果计数保持为零,运行 `claude --debug=mcp` 并在 `~/.claude/debug/<session-id>.txt` 的调试日志中读取服务器的 stderr。54* 显示为已连接但工具数量为零的服务器已成功启动,但没有返回工具列表。请从 `/mcp` 中选择 **Reconnect**。如果数量仍为零,请运行 `claude --debug=mcp`,并在 `~/.claude/debug/<session-id>.txt` 的调试日志中查看该服务器的 stderr 输出。

55 55 

56对于配置位置和范围规则,请参阅 [MCP](https://code.claude.com/docs/zh-CN/mcp.md)。56有关配置位置和作用域规则,请参阅 [MCP](https://code.claude.com/docs/zh-CN/mcp.md)。

57 57 

58## 检查 hook58## 检查 hook

59 59 

desktop.md +42 −42

Details

43在发送第一条消息之前,请在输入框下方的一行中选择环境、项目文件夹、权限模式和模型:43在发送第一条消息之前,请在输入框下方的一行中选择环境、项目文件夹、权限模式和模型:

44 44 

45* **环境**:使用环境选择器(该行中的第一个控件)选择 Claude 运行的位置。请参阅[环境配置](#environment-configuration)。45* **环境**:使用环境选择器(该行中的第一个控件)选择 Claude 运行的位置。请参阅[环境配置](#environment-configuration)。

46 * 如果新会话的输入框下方没有环境选择器,请按照[早期布局的步骤](#check-which-layout-you-have)操作。46 * 如果新会话的输入框下方没有显示环境,请按照[早期布局的步骤](#check-which-layout-you-have)操作。

47* **项目文件夹**:点击环境选择器旁边的项目文件夹控件,选择 Claude 工作的文件夹。47* **项目文件夹**:点击环境选择器旁边的项目文件夹控件,选择 Claude 工作的文件夹。

48 * **云端会话**:选择[仓库](#run-long-running-tasks-in-the-cloud)而不是文件夹48 * **云端会话**:选择[仓库](#run-long-running-tasks-in-the-cloud)而不是文件夹

49 * **[已保存的本地或 SSH 环境](#create-a-saved-environment)**:该环境已包含其文件夹,因此该行不显示项目文件夹控件。要更改文件夹,请[编辑该环境](#use-edit-or-remove-a-saved-environment)。49 * **[已保存的本地或 SSH 环境](#create-a-saved-environment)**:该环境已包含其文件夹,因此该行不显示项目文件夹控件。要更改文件夹,请[编辑该环境](#use-edit-or-remove-a-saved-environment)。


314 314 

315两种布局的模型选择器旁都有使用环形图。点击它可查看您的计划使用情况,该使用情况在您所有的 Claude Code 使用入口之间共享。315两种布局的模型选择器旁都有使用环形图。点击它可查看您的计划使用情况,该使用情况在您所有的 Claude Code 使用入口之间共享。

316 316 

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

318 318 

319计算机使用让 Claude 打开你的应用、控制你的屏幕,并像你一样直接在你的机器上工作。要求 Claude 与没有 CLI 的桌面工具交互,或自动化只能通过 GUI 工作的东西。对于运行和测试 iOS 应用,Desktop 会打开专用的 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md),而不是控制你的屏幕;该窗格无需启用计算机使用即可工作。319Computer use 让 Claude 能够打开您的应用、控制您的屏幕,并像您一样直接在您的计算机上工作。您可以让 Claude 操作没有 CLI 的桌面工具,或自动化只能通过 GUI 完成的任务。对于运行和测试 iOS 应用,Desktop 会打开专用的 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md),而不是控制您的屏幕;该窗格无需启用 computer use 即可使用。

320 320 

321> [!NOTE]321> [!NOTE]

322>322>

323> 计算机使用是 macOS 和 Windows 上的研究预览版,需要 Pro 或 Max 计划。它在 Team 或 Enterprise 计划上不可用。Claude Desktop 应用必须运行。在 macOS 上,计算机使用需要 macOS 14 或更高版本。323> Computer use 是 macOS 和 Windows 上的研究预览版功能,需要 Pro 或 Max 计划。Team 或 Enterprise 计划不提供此功能。Claude Desktop 应用必须处于运行状态。在 macOS 上,computer use 需要 macOS 14 或更高版本。

324 324 

325计算机使用默认关闭。[在设置中启用它](#enable-computer-use),然后 Claude 才能控制你的屏幕。在 macOS 上,你还需要授予辅助功能和屏幕录制权限。325Computer use 默认处于关闭状态。在 Claude 能够控制您的屏幕之前,请先[在设置中启用它](#enable-computer-use)。在 macOS 上,您还需要授予辅助功能和屏幕录制权限。

326 326 

327在 macOS 上,计算机使用也可以在后台运行:Claude 在你批准的应用中工作,同时你继续工作。327在 macOS 上,computer use 还可以在后台运行:Claude 在您已批准的应用中工作,同时您可以继续自己的工作。

328 328 

329> [!WARNING]329> [!WARNING]

330>330>

331> 与[沙箱化 Bash 工具](https://code.claude.com/docs/zh-CN/sandboxing.md)不同,计算机使用在你的实际桌面上运行,可以访问你批准的任何内容。Claude 检查每个操作并标记来自屏幕内容的潜在提示注入,但信任边界不同。有关最佳实践,请参阅[计算机使用安全指南](https://support.claude.com/en/articles/14128542)。331> 与[沙箱隔离的 Bash 工具](https://code.claude.com/docs/zh-CN/sandboxing.md)不同,computer use 在您的实际桌面上运行,可以访问您批准的任何内容。Claude 会检查每个操作,并标记来自屏幕内容的潜在提示词注入,但信任边界有所不同。有关最佳实践,请参阅 [computer use 安全指南](https://support.claude.com/en/articles/14128542)。

332 332 

333### 何时应用计算机使用333### Computer use 的适用场景

334 334 

335Claude 有多种方式与应用或服务交互,计算机使用是最广泛和最慢的。它首先尝试最精确的工具:335Claude 有多种方式与应用或服务交互,其中 computer use 的适用范围最广,但速度最慢。Claude 会优先尝试最精确的工具:

336 336 

337* 如果你有一个服务的[连接器](#connect-external-tools),Claude 使用连接器。337* 如果您有某个服务的[连接器](#connect-external-tools),Claude 会使用该连接器。

338* 如果任务是 shell 命令,Claude 使用 Bash。338* 如果任务是 shell 命令,Claude 会使用 Bash。

339* 如果任务是浏览器工作且你已设置[Chrome 中的 Claude](https://code.claude.com/docs/zh-CN/chrome.md),Claude 使用那个。339* 如果任务是浏览器操作,并且您已设置 [Claude in Chrome](https://code.claude.com/docs/zh-CN/chrome.md),Claude 会使用它。

340* 如果任务是运行或测试 iOS 应用,Claude 使用 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md),它不使用屏幕控制。340* 如果任务是运行或测试 iOS 应用,Claude 会使用 [iOS Simulator 窗格](https://code.claude.com/docs/zh-CN/desktop-ios-simulator.md),该窗格不使用屏幕控制。

341* 如果以上都不适用,Claude 使用计算机使用。341* 如果以上都不适用,Claude 会使用 computer use。

342 342 

343[按应用访问层](#app-permissions)强化了这一点:浏览器限制为仅查看,终端和 IDE 限制为仅点击,即使计算机使用处于活跃状态,也会引导 Claude 使用专用工具。屏幕控制保留给其他工具无法到达的东西,如原生应用、硬件控制面板或没有 API 的专有工具。343[按应用划分的访问级别](#app-permissions)进一步强化了这一点:浏览器的权限上限为仅查看,终端和 IDE 的上限为仅点击,从而在 computer use 处于活动状态时仍引导 Claude 使用专用工具。屏幕控制仅保留给其他方式无法触及的对象,例如原生应用、硬件控制面板或没有 API 的专有工具。

344 344 

345### 启用计算机使用345### 启用 computer use

346 346 

347计算机使用默认关闭。如果你要求 Claude 做需要它的事情而它关闭时,Claude 会告诉你如果在设置中启用计算机使用,它可以完成任务。347Computer use 默认处于关闭状态。如果在其关闭时您要求 Claude 执行需要它的操作,Claude 会告诉您,只要在设置中启用 computer use,它就可以完成该任务。

348 348 

349**1. 更新桌面应用**349**1. 更新桌面应用**

350 350 

351确保你有最新版本的 Claude Desktop。在 macOS 和 Windows 上,在 [claude.com/download](https://claude.com/download) 下载或更新;在 Linux 上,通过你的包管理器更新([说明](https://code.claude.com/docs/zh-CN/desktop-linux.md))。然后重启应用。351请确保您使用的是最新版本的 Claude Desktop。在 macOS 和 Windows 上,请前往 [claude.com/download](https://claude.com/download) 下载或更新;在 Linux 上,请通过您的包管理器更新([说明](https://code.claude.com/docs/zh-CN/desktop-linux.md))。然后重启应用。

352 352 

353**2. 打开切换**353**2. 打开开关**

354 354 

355在桌面应用中,打开**设置**,然后:355在桌面应用中,打开 **Settings**,然后:

356 356 

357* **如果设置菜单中列出了此计算机**:转到**此计算机 > 系统**357* **如果 Settings 菜单中列出了 This computer**:前往 **This computer > System**

358* **否则**:转到**功能**358* **否则**:前往 **Capabilities**

359 359 

360在**计算机使用**下,打开**启用计算机使用**:360在 **Computer use** 下,打开 **Enable computer use**:

361 361 

362* **Windows**:开关立即生效,设置完成362* **Windows**:开关立即生效,设置完成

363* **macOS**:继续下一步363* **macOS**:继续下一步

364 364 

365如果你看不到切换,确认你在 macOS 或 Windows 上使用 Pro 或 Max 计划,然后更新并重启应用。365如果您没有看到该开关,请确认您使用的是 macOS 或 Windows,并且拥有 Pro 或 Max 计划,然后更新并重启应用。

366 366 

367**3. 授予 macOS 权限**367**3. 授予 macOS 权限**

368 368 

369在 macOS 上,在切换生效之前授予两个系统权限:369在 macOS 上,开关生效前需要授予两项系统权限:

370 370 

371* **Accessibility**:让 Claude 点击、输入和滚动371* **辅助功能**:让 Claude 能够点击、输入和滚动

372* **Screen Recording**:让 Claude 看到你屏幕上的内容372* **屏幕录制**:让 Claude 能够看到您屏幕上的内容

373 373 

374设置页面显示每个权限的当前状态。如果任一被拒绝,点击徽章打开相关的系统设置窗格。374设置页面会显示每项权限的当前状态。如果其中任一权限被拒绝,请点击相应标识以打开对应的系统设置窗格。

375 375 

376### 应用权限376### 应用权限

377 377 

378Claude 第一次需要使用应用时,会话中会出现提示。点击**允许此会话**或**拒绝**。批准持续当前会话,或在 [Dispatch 生成的会话](#sessions-from-dispatch)中持续 30 分钟。378Claude 首次需要使用某个应用时,您的会话中会出现一个权限提示。点击 **Allow for this session** 或 **Deny**。批准在当前会话中有效,在 [Dispatch 创建的会话](#sessions-from-dispatch)中则有效 30 分钟。

379 379 

380提示还显示 Claude 为该应用获得的控制级别。这些层由应用类别固定,无法更改:380该提示还会显示 Claude 对该应用获得的控制级别。这些级别按应用类别固定,无法更改:

381 381 

382| 层 | Claude 可以做什么 | 适用于 |382| 级别 | Claude 可以执行的操作 | 适用于 |

383| :- | :- | :- |383| :- | :- | :- |

384| 仅查看 | 在屏幕截图中看到应用 | 浏览器、交易平台 |384| 仅查看 | 在屏幕截图中查看应用 | 浏览器、交易平台 |

385| 仅点击 | 点击和滚动,但不能输入或使用快捷键 | 终端、IDE |385| 仅点击 | 点击和滚动,但不能输入或使用快捷键 | 终端、IDE |

386| 完全控制 | 点击、输入、拖动和使用快捷键 | 其他所有内容 |386| 完全控制 | 点击、输入、拖动和使用快捷键 | 其他所有应用 |

387 387 

388像终端、Finder 或文件浏览器以及系统设置或设置这样具有广泛影响的应用在提示中显示额外警告,以便你知道批准它们授予什么。388影响范围较广的应用(例如终端、Finder 或文件资源管理器,以及系统设置或设置)会在提示中显示额外警告,以便您了解批准它们意味着授予了什么权限。

389 389 

390在设置中,您[启用计算机使用](#enable-computer-use)时所在的**计算机使用**部分包含以下选项:390在设置中,您[启用 computer use](#enable-computer-use) 的 **Computer use** 部分包含以下选项:

391 391 

392* **拒绝的应用**:在此处添加应用以拒绝它们而不提示。Claude 可能仍然通过允许应用中的操作间接影响被拒绝的应用,但它无法直接与被拒绝的应用交互。392* **Denied apps**:将应用添加到此处即可直接拒绝,而无需提示。Claude 仍可能通过在已允许应用中的操作间接影响被拒绝的应用,但无法直接与被拒绝的应用交互。

393* **Claude 完成时取消隐藏应用**:当计算机使用不在后台运行时,Claude 隐藏你的其他窗口,以便它仅与批准的应用交互。当 Claude 完成时,隐藏的窗口被恢复,除非你关闭此设置。393* **Unhide apps when Claude finishes**:当 computer use 未在后台运行时,Claude 会在工作期间隐藏您的其他窗口,以便只与已批准的应用交互。Claude 完成后,隐藏的窗口会恢复显示,除非您关闭此设置。

394 394 

395## 管理会话395## 管理会话

396 396 


861 861 

862> [!NOTE]862> [!NOTE]

863>863>

864> 如果您的环境选择器位于输入框上方,则您使用的是[早期布局](#check-which-layout-you-have),该布局没有已保存的本地环境。请改用[本地环境编辑器](#use-the-local-environment-editor)。864> 如果新会话在输入框下方没有显示环境,则说明您使用的是[早期布局](#check-which-layout-you-have),该布局没有已保存的本地环境。请改用[本地环境编辑器](#use-the-local-environment-editor)。

865 865 

866**1. 打开本地环境的表单**866**1. 打开本地环境的表单**

867 867 


963>963>

964> 如果您将 Desktop 与[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)配合使用,SSH 会话需要单独设置。请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。964> 如果您将 Desktop 与[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)配合使用,SSH 会话需要单独设置。请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。

965 965 

966在 [**New environment** 对话框](#create-a-saved-environment)中添加 SSH 连接,然后在该连接上启动会话。如果新会话的输入框下方没有环境选择器,则您使用的是早期布局。请参阅[检查您使用的布局](#check-which-layout-you-have)。966在 [**New environment** 对话框](#create-a-saved-environment)中添加 SSH 连接,然后在该连接上启动会话。如果新会话在输入框下方没有显示环境,则说明您使用的是早期布局。请参阅[检查您使用的布局](#check-which-layout-you-have)。

967 967 

968**1. 打开 New environment 对话框**968**1. 打开 New environment 对话框**

969 969 


2122 2122 

2123### 检查您使用的布局2123### 检查您使用的布局

2124 2124 

2125如果新会话的输入框下方没有[环境选择器](#start-a-session),则说明您使用的是早期布局:2125如果新会话在输入框上方而不是下方显示[环境](#start-a-session),则说明您使用的是早期布局:

2126 2126 

2127* **[低于 v2.37337.0 的 Desktop](#check-your-version)**:请更新以获取当前布局。在 macOS 上选择 **Claude > Check for Updates…**,或在 Windows 上选择 **Help > Check for Updates…**。2127* **[低于 v2.37337.0 的 Desktop](#check-your-version)**:请更新以获取当前布局。在 macOS 上选择 **Claude > Check for Updates…**,或在 Windows 上选择 **Help > Check for Updates…**。

2128* **会话在您计算机上运行的[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)**:当前布局需要 Claude Desktop v3.1623.0 或更高版本,因此请[检查您的版本](#check-your-version)。要进行更新,请在 macOS 上选择 **Claude > Check for Updates…**,或在 Windows 上选择 **Help > Check for Updates…**。如果您的组织[关闭了自动更新](#device-management-policies),**Check for Updates…** 会被隐藏,此时请向管理员索取 v3.1623.0 或更高版本。2128* **会话在您计算机上运行的[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)**:当前布局需要 Claude Desktop v3.1623.0 或更高版本,因此请[检查您的版本](#check-your-version)。要进行更新,请在 macOS 上选择 **Claude > Check for Updates…**,或在 Windows 上选择 **Help > Check for Updates…**。如果您的组织[关闭了自动更新](#device-management-policies),**Check for Updates…** 会被隐藏,此时请向管理员索取 v3.1623.0 或更高版本。

2129* **会话在您组织基础设施上运行的第三方提供商**:当您的组织在其自己的基础设施上而不是在您的计算机上运行会话时,Desktop 会保留早期布局,更新不会改变布局。如果您不清楚会话在哪里运行,请询问管理员。2129* **会话在您组织基础设施上运行的第三方提供商**:当前布局需要 Claude Desktop v4.29.0 或更高版本,因此请[检查您的版本](#check-your-version)。如果您使用的是较旧的版本,请向管理员索取 v4.29.0 或更高版本。如果您不清楚会话在哪里运行,请询问管理员。

2130 2130 

2131在早期布局中,在输入框上方选择环境和项目文件夹,在其下方的一行中选择权限模式和模型。早期布局没有[会话详细信息面板](#see-session-details)和[已保存的本地和 SSH 环境](#create-a-saved-environment)。2131在早期布局中,在输入框上方选择环境以及任何项目文件夹或仓库,在其下方的一行中选择权限模式和模型。早期布局没有[会话详细信息面板](#see-session-details)和[已保存的本地和 SSH 环境](#create-a-saved-environment)。

2132 2132 

2133### Code 选项卡中的 403 或身份验证错误2133### Code 选项卡中的 403 或身份验证错误

2134 2134 

Details

57 57 

58在[输入框下方的一行](https://code.claude.com/docs/zh-CN/desktop.md#start-a-session)中,点击第一个控件(即环境选择器),然后选择**本地**分组中的第一项。接着点击环境选择器旁边的项目文件夹控件,选择**打开文件夹…**,并选择您的项目目录。58在[输入框下方的一行](https://code.claude.com/docs/zh-CN/desktop.md#start-a-session)中,点击第一个控件(即环境选择器),然后选择**本地**分组中的第一项。接着点击环境选择器旁边的项目文件夹控件,选择**打开文件夹…**,并选择您的项目目录。

59 59 

60如果输入框下方没有出现环境选择器,说明您使用的是早期布局。请参阅[检查您使用的布局](https://code.claude.com/docs/zh-CN/desktop.md#check-which-layout-you-have)。60如果新会话的输入框下方没有显示环境,说明您使用的是早期布局。请参阅[检查您使用的布局](https://code.claude.com/docs/zh-CN/desktop.md#check-which-layout-you-have)。

61 61 

62> [!TIP]62> [!TIP]

63>63>

devcontainer.md +1 −1

Details

79 79 

80> [!NOTE]80> [!NOTE]

81>81>

82> 如果浏览器登录完成但回调从未到达容器,请复制浏览器中显示的代码并将其粘贴到终端中的 `Paste code here if prompted` 提示处。当编辑器的端口转发不路由 localhost 回调时,可能会发生这种情况。82> 对于 Anthropic 登录:如果没有打开浏览器,或者浏览器完成登录后显示 `localhost` 连接错误,请使用终端粘贴提示上方显示的登录 URL。将其复制到浏览器中并在浏览器中登录,然后将浏览器显示的代码粘贴到该提示处。如果粘贴没有任何反应,请参阅[在 WSL2、SSH 或容器中 OAuth 登录失败](https://code.claude.com/docs/zh-CN/troubleshoot-install.md#oauth-login-fails-in-wsl2-ssh-or-containers)。

83 83 

84## 在重建过程中保持身份验证和设置84## 在重建过程中保持身份验证和设置

85 85 

env-vars.md +3 −3

Details

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

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

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

236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 设置为 `1` 可从 Bash、PowerShell 和子代理工具中移除 `run_in_background` 参数,并关闭 Ctrl+B 快捷键以及 [fork 的 skill](https://code.claude.com/docs/zh-CN/skills.md#run-skills-in-a-subagent) 的后台运行。此后 Claude Code 也不再自动将子代理、长 MCP 工具调用和超时的 shell 命令移至后台。[MCP 任务](https://code.claude.com/docs/zh-CN/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task)和 [Monitor 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#monitor-tool)仍在后台运行 |236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 设置为 `1` 可从 Bash、PowerShell 和子代理工具中移除 `run_in_background` 参数,并关闭 Ctrl+B 快捷键以及[分叉 skill](https://code.claude.com/docs/zh-CN/skills.md#run-skills-in-a-subagent) 的后台运行。Claude Code 随后也会停止自动将子代理、长时间 MCP 工具调用和超时的 shell 命令移至后台。[MCP 任务](https://code.claude.com/docs/zh-CN/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task)和 [Monitor 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#monitor-tool)仍会在后台运行。若要同时关闭[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md#turn-off-agent-view),请将 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 设置为 `1` |

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

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


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

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

278| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 可禁用[工作流](https://code.claude.com/docs/zh-CN/workflows.md#turn-workflows-off)。等同于 [`disableWorkflows`](https://code.claude.com/docs/zh-CN/settings-reference#disableworkflows) 设置 |278| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 设置为 `1` 可禁用[工作流](https://code.claude.com/docs/zh-CN/workflows.md#turn-workflows-off)。等同于 [`disableWorkflows`](https://code.claude.com/docs/zh-CN/settings-reference#disableworkflows) 设置 |

279| `CLAUDE_CODE_EFFORT_LEVEL` | 为受支持的模型设置 effort 级别。取值:`low`、`medium`、`high`、`xhigh`、`max`,或 `auto`(使用模型默认值)。可用级别取决于模型。优先于 `--effort`、`/effort` 以及 `modelSettings` 和 `effortLevel` 设置。[`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) 上限仍然适用。请参阅[调整 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level) |279| `CLAUDE_CODE_EFFORT_LEVEL` | 为支持的模型设置 effort 级别。取值:`low`、`medium`、`high`、`xhigh` 或 `max`。可用级别取决于模型。优先于 `--effort`、`/effort` 以及 `modelSettings` 和 `effortLevel` 设置。[`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) 上限仍然适用。设置为 `auto` 或 `unset` 可让 Claude Code [不发送 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#send-no-effort-level),从而由 API 为该模型应用其自身的默认值。请参阅[调整 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level) |

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

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

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


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

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

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

587* 让 Claude Code [排除其输入 schema 会被 API 拒绝的 MCP 工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas);它仍会发送该 schema,包含该 schema 的请求会失败,并返回[按位置指明该工具的 400 错误](https://code.claude.com/docs/zh-CN/errors.md#tool-input-schema-is-invalid)587* 让 Claude Code [排除其输入 schema 会被 API 拒绝的 MCP 工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas)

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

589 589 

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

errors.md +297 −263

Details

219| `Cloud sessions use your claude.ai login`,出现在指明某个凭据的策略拒绝消息末尾 | [命令行错误](#cloud-sessions-use-your-claude-ai-login) |219| `Cloud sessions use your claude.ai login`,出现在指明某个凭据的策略拒绝消息末尾 | [命令行错误](#cloud-sessions-use-your-claude-ai-login) |

220| `Couldn't verify your organization's policy for cloud sessions` | [命令行错误](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |220| `Couldn't verify your organization's policy for cloud sessions` | [命令行错误](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

221| `Cloud sessions aren't available:`,后跟无法加载您组织策略的原因 | [命令行错误](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |221| `Cloud sessions aren't available:`,后跟无法加载您组织策略的原因 | [命令行错误](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

222| `Cloud sessions aren't available with this Console sign-in. They need a claude.ai sign-in.` | [无法获取组织 UUID](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#unable-to-get-organization-uuid) |

222| `Cloud sessions need a claude.ai sign-in` | [无法获取组织 UUID](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#unable-to-get-organization-uuid) |223| `Cloud sessions need a claude.ai sign-in` | [无法获取组织 UUID](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#unable-to-get-organization-uuid) |

223| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [命令行错误](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |224| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [命令行错误](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

224| `Error: --json-schema is not a valid JSON Schema` | [命令行错误](#the-json-schema-value-is-not-a-valid-json-schema) |225| `Error: --json-schema is not a valid JSON Schema` | [命令行错误](#the-json-schema-value-is-not-a-valid-json-schema) |


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

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

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

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

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

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

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


397| `Claude Code process exited with code N` | [包装器和 IDE 错误](#claude-code-process-exited-with-code-n) |399| `Claude Code process exited with code N` | [包装器和 IDE 错误](#claude-code-process-exited-with-code-n) |

398| `The connection to Claude Code ended before this message completed` | [包装器和 IDE 错误](#the-connection-to-claude-code-ended-before-this-message-completed) |400| `The connection to Claude Code ended before this message completed` | [包装器和 IDE 错误](#the-connection-to-claude-code-ended-before-this-message-completed) |

399| `Could not locate the Claude CLI on PATH` | [包装器和 IDE 错误](#could-not-locate-the-claude-cli-on-path) |401| `Could not locate the Claude CLI on PATH` | [包装器和 IDE 错误](#could-not-locate-the-claude-cli-on-path) |

402| `The Claude Code program for this computer, the <build> build, could not be found` | [包装器和 IDE 错误](#the-claude-code-program-for-this-computer-could-not-be-found) |

400| `Restored the code, but skipped N files` | [Rewind 警告和错误](#restored-the-code-but-skipped-files) |403| `Restored the code, but skipped N files` | [Rewind 警告和错误](#restored-the-code-but-skipped-files) |

401| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [Rewind 警告和错误](#no-files-were-restored) |404| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [Rewind 警告和错误](#no-files-were-restored) |

402| `Transcript writes are failing (...)` | [会话保存警告](#transcript-writes-are-failing) |405| `Transcript writes are failing (...)` | [会话保存警告](#transcript-writes-are-failing) |


485 488 

486从 v2.1.198 开始,通常的微调器提示在重试期间被抑制。一旦错误原因被揭示,如果故障是 529 过载,倒计时下方的行也命名了检查服务状态的位置:Anthropic API 上的 `status.claude.com`,或其他配置上的提供商或网关主机。489从 v2.1.198 开始,通常的微调器提示在重试期间被抑制。一旦错误原因被揭示,如果故障是 529 过载,倒计时下方的行也命名了检查服务状态的位置:Anthropic API 上的 `status.claude.com`,或其他配置上的提供商或网关主机。

487 490 

488如果在请求仍然待处理时响应流上 20 秒内没有数据到达,微调器显示 `Waiting for API response · will retry in … · check your network`,然后任何重试都尚未开始。请求尚未失败:倒计时运行到 Claude Code 中止停滞连接的点。中止后,您看到的内容取决于响应已进行的距离:491#### Waiting for API response

492 

493`Waiting for API response · will retry in … · check your network` 横幅表示 Claude Code 已等待至少 20 秒,但未收到某个请求的任何数据。请求尚未失败:倒计时运行到 Claude Code 中止停滞连接的点。如果发生中止:

489 494 

490* 在 Claude 完成文本块或工具调用之前,或在完成思考之后开始一个,Claude Code 重试请求或以错误结束轮次。[Automatic retries](#automatic-retries) 说明它重试哪些停滞以及多少次。495* 在 Claude 完成文本块或工具调用之前,或在完成思考之后开始一个,Claude Code 重试请求或以错误结束轮次。[Automatic retries](#automatic-retries) 说明它重试哪些停滞以及多少次。

491* 在 Claude 完成文本块或工具调用之后,或在完成思考之后开始一个,但在 Claude 完成响应之前,Claude Code 保留 Claude 完成的内容,从 Claude 完成的任何工具调用继续轮次,并显示 [The response above may be incomplete](#the-response-above-may-be-incomplete)。在非交互式会话中,以及对于任何会话中的子代理响应,Claude Code 可能首先提示 Claude 继续响应;该条目说明何时执行以及何时您仍然在那里看到通知。496* 在 Claude 完成文本块或工具调用之后,或在完成思考之后开始一个,但在 Claude 完成响应之前,Claude Code 保留 Claude 完成的内容,从 Claude 完成的任何工具调用继续轮次,并显示 [The response above may be incomplete](#the-response-above-may-be-incomplete)。在非交互式会话中,以及对于任何会话中的子代理响应,Claude Code 可能首先提示 Claude 继续响应;该条目说明何时执行以及何时您仍然在那里看到通知。

492* 在 Claude 完成响应之后,Claude Code 正常结束轮次。497* 在 Claude 完成响应之后,Claude Code 正常结束轮次。

493 498 

494一旦数据恢复或重试成功,横幅会自动清除。如果它在每次尝试时重新出现,将其视为 [network issue](#unable-to-connect-to-api)。在 v2.1.185 之前,横幅在 10 秒后出现,措辞不同。499一旦数据恢复或重试成功,横幅会自动清除。如果它在每次尝试时重新出现,将其视为 [network issue](#unable-to-connect-to-api)。如果您通过网关连接,请参阅[通过网关连接时等待横幅时隐时现](#waiting-banner-behind-a-gateway)。在 v2.1.185 之前,横幅在 10 秒后出现,措辞不同。

495 

496当 Claude 咨询 [advisor](https://code.claude.com/docs/zh-CN/advisor.md) 时,横幅在 90 秒无数据后出现,而不是 20 秒,因为长时间的顾问审查可能在远超 20 秒的时间内不发送任何数据。在 v2.1.214 之前,20 秒阈值也适用于顾问调用,所以横幅在顾问审查期间出现,即使没有任何问题。

497 500 

498#### 通过网关连接时等待横幅时隐时现501#### 通过网关连接时等待横幅时隐时现

499 502 


2495 2498 

2496**要做什么:**2499**要做什么:**

2497 2500 

2498* 如果您的 Claude Code 版本早于 v2.1.216,运行 `claude update`。2501* 如果您的 Claude Code 版本早于 v2.1.300,请在 shell 中运行 [`claude update`](https://code.claude.com/docs/zh-CN/setup#update-claude-code)。在 v2.1.300 之前,Claude Code 不会[在不带被拒绝工具参数的情况下重试请求](https://code.claude.com/docs/zh-CN/mcp.md#tools-whose-input-schema-the-api-refuses),因此每个包含该工具的请求都会重复出现此错误。

2499* 删除或[禁用](https://code.claude.com/docs/zh-CN/mcp.md#disable-a-server-without-removing-it)声明无效 schema 的 MCP 服务器。该错误仅按位置命名工具。在 v2.1.216 或更高版本上,检查每个服务器的日志,查找命名其输入 schema 会被拒绝的工具的行。如果没有日志命名一个,一次禁用一个服务器。2502* 删除或[禁用](https://code.claude.com/docs/zh-CN/mcp.md#disable-a-server-without-removing-it)声明无效 schema 的 MCP 服务器。该错误仅按位置命名工具。在 v2.1.216 或更高版本上,检查每个服务器的日志,查找命名其输入 schema 会被拒绝的工具的行。如果没有日志命名一个,一次禁用一个服务器。

2500* 如果您维护服务器,请修复工具的 `input_schema`。schema 必须是有效的 JSON Schema,顶级属性名称必须为 1 到 64 个字符长,并仅使用 ASCII 字母和数字、`_`、`.` 和 `-`。请参阅[具有无效输入 schema 的工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas)。2503* 如果您维护服务器,请修复工具的 `input_schema`。schema 必须是有效的 JSON Schema,顶级属性名称必须为 1 到 64 个字符长,并仅使用 ASCII 字母和数字、`_`、`.` 和 `-`。请参阅[具有无效输入 schema 的工具](https://code.claude.com/docs/zh-CN/mcp.md#tools-with-invalid-input-schemas)。

2501 2504 


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

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

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

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

3299 3302 

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

3301 3304 


3587 3590 

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

3589 3592 

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

3591* ``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)3594* ``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)

3592* `No shell command in <name> was run`:文件中某个 `!` 命令包含制表符或换行符以外的原始控制字符,因此所有命令都不会运行。请参阅[如何找到并删除该字符](#no-shell-command-was-run)

3593 3595 

3594**解决方法:**3596**解决方法:**

3595 3597 


3599 3601 

3600### skill 或命令中的 shell 命令均未运行3602### skill 或命令中的 shell 命令均未运行

3601 3603 

3602skill 或自定义命令文件中的某个 `` !`<command>` `` [动态上下文命令](https://code.claude.com/docs/zh-CN/skills.md#inject-dynamic-context)包含除制表符或换行符之外的原始控制字符。Claude Code 会在文件中的任何命令运行之前拒绝整个调用。3604`No shell command in <name> was run` 表示该 skill 或命令文件中的某个 `` !`<command>` `` [动态上下文命令](https://code.claude.com/docs/zh-CN/skills.md#inject-dynamic-context)包含 Bash 或 PowerShell 工具拒绝的字符:

3605 

3606* **两种工具**:除制表符或换行符以外的原始控制字符

3607* **PowerShell 工具**:此外还有 U+FEFF 或 U+180E

3603 3608 

3604消息会指出本应运行这些命令的 shell 工具(Bash 或 PowerShell),并以被拒绝的命令结尾。每个此类字符都会被替换为 `�`,以便您看到它的位置:3609消息末尾会附上被拒绝的命令,并将每个被拒绝的字符显示为 `�`,如以下 Bash 工具示例所示:

3605 3610 

3606```text theme={null}3611```text theme={null}

3607No shell command in /my-skill was run, because the Bash tool does not accept one of them: command contains control characters that would be hidden in the approval dialog. Unprintable characters are shown as � below: remove them from the skill or command file, or from the arguments or options substituted into it.3612No shell command in /my-skill was run, because the Bash tool does not accept one of them: command contains control characters that would be hidden in the approval dialog. Unprintable characters are shown as � below: remove them from the skill or command file, or from the arguments or options substituted into it.


3610 3615 

3611**解决方法:**3616**解决方法:**

3612 3617 

3613* 在消息末尾引用的命令中找到每个 `�`。从 skill 或命令文件中,或从代入文件的参数或选项中,删除它所代表的字符。3618* 在消息末尾引用的命令中找到每个 `�`。从 [skill 或命令文件](https://code.claude.com/docs/zh-CN/skills.md#where-skills-live)中,或从替换到该文件中的参数或[选项](https://code.claude.com/docs/zh-CN/plugins/manifest-reference.md#user-configuration)中,移除它所代表的字符。

3614 3619 

3615### 使用 `--print` 时必须提供输入3620### 使用 `--print` 时必须提供输入

3616 3621 


3739 3744 

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

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

3742* **您传入的基础分支不在您的克隆中**: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`。3747* **您传入的基础分支不在克隆中**: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`。

3743 3748 

3744**解决方法:**3749**解决方法:**

3745 3750 


4568 4573 

4569在 v2.1.281 之前,Read、Write、Edit 或 NotebookEdit 路径中的空字节会以指出 `Path contains null bytes` 的错误结束整个轮次,且工具根本不会运行。4574在 v2.1.281 之前,Read、Write、Edit 或 NotebookEdit 路径中的空字节会以指出 `Path contains null bytes` 的错误结束整个轮次,且工具根本不会运行。

4570 4575 

4576### Command contains an invisible character

4577 

4578[PowerShell 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#powershell-tool)拒绝运行包含 U+FEFF 或 U+180E 的命令:

4579 

4580```text theme={null}

4581Error: command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run. Remove the character, keep the text that needs it in a file that the command reads, or write it as $([char]0xFEFF) or $([char]0x180E) inside a double-quoted string

4582```

4583 

4584**处理方法:**

4585 

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

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

4588 

4571### File is too large to read as an image4589### File is too large to read as an image

4572 4590 

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


5431* 将 PATH 条目设置为用户或系统环境变量,而不是在您的 PowerShell 配置文件中。扩展不运行您的配置文件,因此仅存在于那里的 PATH 编辑永远无法到达它。5449* 将 PATH 条目设置为用户或系统环境变量,而不是在您的 PowerShell 配置文件中。扩展不运行您的配置文件,因此仅存在于那里的 PATH 编辑永远无法到达它。

5432* 更改 PATH 后重启 VS Code。扩展检查 VS Code 在启动时捕获的 PATH,因此 PATH 更改仅在重启后生效。5450* 更改 PATH 后重启 VS Code。扩展检查 VS Code 在启动时捕获的 PATH,因此 PATH 更改仅在重启后生效。

5433 5451 

5452### The Claude Code program for this computer could not be found

5453 

5454[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)查找其内置捆绑的 Claude Code 副本,但没有找到为您的计算机构建的版本。该消息会指明您的计算机所需的构建版本:

5455 

5456```text theme={null}

5457The Claude Code program for this computer, the Linux (linux-x64) build, could not be found.

5458```

5459 

5460**应该怎么做:**

5461 

5462* 如果消息说明了扩展包含的是哪个构建版本,则说明您安装的是适用于其他平台的扩展包:请安装为消息中指明的构建版本制作的扩展包

5463* 如果消息没有说明扩展包含的是哪个构建版本,请从编辑器的扩展视图中重新安装 Claude Code 扩展

5464* 或者,无论哪种情况,都可以将 [`claudeCode.claudeProcessWrapper`](https://code.claude.com/docs/zh-CN/vs-code#extension-settings) 设置为单独安装的 `claude` 二进制文件

5465 

5466在 v2.1.290 之前,此错误显示为 `Unsupported platform: <platform>-<arch>. No compatible Claude Code binary found.`

5467 

5434### Claude Code 的连接在此消息完成前结束5468### Claude Code 的连接在此消息完成前结束

5435 5469 

5436[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)将您的消息发送到 `claude` 进程,连接在进程确认或完成之前无错误地结束。扩展无法判断消息是否已处理,因此它要求您再次发送:5470[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)将您的消息发送到 `claude` 进程,连接在进程确认或完成之前无错误地结束。扩展无法判断消息是否已处理,因此它要求您再次发送:


5549 5583 

5550## 配置警告5584## 配置警告

5551 5585 

5552要查找 Claude Code 在交互式会话启动时给出的警告,请先查看启动横幅下方,然后查看调试日志:5586要查找 Claude Code 在交互式会话启动时给出的警告,请先查看启动横幅下方,再查看调试日志:

5553 5587 

5554* **启动横幅下方的行**:某些有关[权限规则](https://code.claude.com/docs/zh-CN/permissions.md)的警告,例如 [`⚠ Deny rule Bsh matches no tool · check for typos`](#matches-no-tool)5588* **启动横幅下方的行**:部分关于[权限规则](https://code.claude.com/docs/zh-CN/permissions.md)的警告,例如 [`⚠ Deny rule Bsh matches no tool · check for typos`](#matches-no-tool)

5555* **调试日志**:Claude Code 仅在调试模式下保留此日志。要读取其中的警告,请从 shell 使用 `claude --debug-file <path>` 启动 Claude Code,然后打开该路径下的文件。5589* **调试日志**:Claude Code 仅在调试模式下保留此日志。要读取其中的警告,请在 shell 中使用 `claude --debug-file <path>` 启动 Claude Code,然后打开该路径下的文件。

5556 5590 

5557在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中([后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)之外),请在 stderr 上查找启动警告。5591在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,且不在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中时,请在 stderr 上查找启动警告。

5558 5592 

5559在 v2.1.305 之前,在交互式会话中也请查看 stderr,包括现在显示为横幅下方行的权限规则警告。5593在 v2.1.305 之前,交互式会话中也需要在 stderr 上查找,包括现在显示为横幅下方行的权限规则警告。

5560 5594 

5561### Claude Code 因无法恢复的界面错误而退出5595### Claude Code exited after an unrecoverable interface error

5562 5596 

5563当 Claude Code 退出时,它会打印此消息,因为其终端界面在任一渲染器中遇到了无法恢复的错误。第二句仅在[全屏](https://code.claude.com/docs/zh-CN/fullscreen.md)渲染器启动时发生错误时出现:5597当 Claude Code 因其终端界面遇到无法恢复的错误而退出时(无论使用哪种渲染器),会打印此消息。仅当错误发生在[全屏](https://code.claude.com/docs/zh-CN/fullscreen.md)渲染器启动期间时,才会出现第二句:

5564 5598 

5565```text theme={null}5599```text theme={null}

5566Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).5600Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).

5567```5601```

5568 5602 

5569**要做什么:**5603**解决方法:**

5570 5604 

5571* 再次启动 Claude Code。要继续该对话,请在同一目录中运行 `claude --resume`。5605* 重新启动 Claude Code。要继续之前的对话,请在同一目录中运行 `claude --resume`。

5572* 如果消息命名全屏渲染器,[全屏渲染](https://code.claude.com/docs/zh-CN/fullscreen.md#fullscreen-renderer-didnt-finish-starting)说明下一次启动的操作,这取决于您如何打开全屏,以及如何再次尝试全屏或保持经典渲染器。5606* 如果消息提到全屏渲染器,[全屏渲染](https://code.claude.com/docs/zh-CN/fullscreen.md#fullscreen-renderer-didnt-finish-starting)说明了下次启动时的行为(这取决于您启用全屏的方式),以及如何再次尝试全屏或保留经典渲染器。

5573 5607 

5574在 v2.1.236 之前,Claude Code 在此类错误后退出而不打印消息。5608在 v2.1.236 之前,Claude Code 在发生此类错误后会直接退出而不打印消息。

5575 5609 

5576### Agent 描述超过 15.0k token 限制5610### Agent descriptions are over the 15.0k-token limit

5577 5611 

5578Claude Code 将此警告显示为对话视图中的启动通知,而不是在 stderr 上。您的[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)(内置子代理除外)的组合描述超过 Claude Code 估计的 15,000 个 token。每个 Agent 计算其名称加上其 `description` frontmatter。Claude Code 加载每个 Agent,无论总数是否超过限制,因此警告不会改变加载的内容。5612Claude Code 将此警告作为启动通知显示在对话视图中,而不是输出到 stderr。按 Claude Code 的估算,除内置子代理外,您的[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)描述总量超过 15,000 个 token。每个 Agent 计入其名称及其 `description` frontmatter。无论总量是否超过限制,Claude Code 都会加载所有 Agent,因此该警告不会改变加载的内容。

5579 5613 

5580```text theme={null}5614```text theme={null}

5581Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/5615Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/

5582```5616```

5583 5617 

5584**要做什么:**5618**解决方法:**

5585 5619 

5586* 缩短您的 Agent 文件的 `description` frontmatter,或要求 Claude 为您修剪它们。5620* 缩短 Agent 文件中的 `description` frontmatter,或让 Claude 帮您精简。

5587* 删除您不再使用的 Agent 文件。5621* 删除不再使用的 Agent 文件。

5588 5622 

5589### Hook needs quotes around a path with a space5623### Hook needs quotes around a path with a space

5590 5624 

5591对话视图中的此通知表示某个 hook 的脚本未运行,因为其路径包含空格且未加引号。该 hook 是 shell 形式的 [`asyncRewake`](https://code.claude.com/docs/zh-CN/hooks#run-hooks-in-the-background) hook。在其 `command` 中,诸如 `python3` 的解释器后跟一个未加引号的路径占位符,而解析后的路径包含空格。5625对话视图中的此通知表示某个 hook 的脚本未运行,因为其路径包含空格且未加引号。该 hook 是 shell 形式的 [`asyncRewake`](https://code.claude.com/docs/zh-CN/hooks#run-hooks-in-the-background) hook。在其 `command` 中,`python3` 等解释器后面跟着一个未加引号的路径占位符,而解析后的路径包含空格。

5592 5626 

5593通知以该 hook 的事件名称开头,并命名该脚本:5627通知以 hook 的事件名称开头,并指出脚本名称:

5594 5628 

5595```text theme={null}5629```text theme={null}

5596Stop hook needs quotes around a path with a space (check.py)5630Stop hook needs quotes around a path with a space (check.py)

5597```5631```

5598 5632 

5599**要做什么:**5633**解决方法:**

5600 5634 

5601* 在运行通知所命名脚本的 hook 的 `command` 中,用双引号将路径括起来。在 JSON 文件中,将其写为 `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`。5635* 在运行通知所指脚本的 hook 的 `command` 中,用双引号包裹路径。在 JSON 文件中,写作 `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`。

5602 5636 

5603### Instruction file not loaded5637### Instruction file not loaded

5604 5638 

5605交互式会话的对话视图中的此通知表示某个已存在的[记忆文件](https://code.claude.com/docs/zh-CN/memory.md#how-claude-md-files-load)未被加载。某项读取限制正在生效。5639交互式会话对话视图中的此通知表示某个存在的[记忆文件](https://code.claude.com/docs/zh-CN/memory.md#how-claude-md-files-load)未被加载,原因是存在读取限制。

5606 5640 

5607```text theme={null}5641```text theme={null}

5608Instruction file not loaded (a Read deny rule covers it):5642Instruction file not loaded (a Read deny rule covers it):

5609path: .claude/rules/shared.md5643path: .claude/rules/shared.md

5610```5644```

5611 5645 

5612括号内容说明原因,例如:5646括号中说明原因,例如:

5613 5647 

5614* **`a Read deny rule covers it`**:某条 `Read` [拒绝规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)与该文件按原样书写的路径或其链接指向的位置匹配5648* **`a Read deny rule covers it`**:某条 `Read` [拒绝规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)匹配该文件的书面路径或其上链接所指向的位置

5615* **`it's read from outside your working directories, where reads are blocked`**:在 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 开启时,该文件解析到[工作目录](https://code.claude.com/docs/zh-CN/settings-reference.md#permissions-blockreadsoutsideworkingdirectories)之外5649* **`it's read from outside your working directories, where reads are blocked`**:在启用 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-blockreadsoutsideworkingdirectories) 时,该文件解析到了[工作目录](https://code.claude.com/docs/zh-CN/settings-reference.md#permissions-blockreadsoutsideworkingdirectories)之外

5616* **`where it leads couldn't be worked out`**:例如,该文件是一个直接或通过其他链接指回自身的链接5650* **`where it leads couldn't be worked out`**:例如,该文件是一个直接或通过其他链接指回自身的链接

5617 5651 

5618当 Claude 处理某个子目录中的文件时,若该子目录自身的记忆文件无法加载,相同的行会在该轮次中出现在对话里。当被扣留的文件多于这些行所列出的文件时,最后一行会对其余文件计数,例如 `and 3 more instruction files not loaded`。5652当 Claude 在某个子目录中处理文件、而该子目录自身的记忆文件无法加载时,相同的行会在该轮次中出现在对话里。当被拦截的文件多于列出的行时,最后一行会统计其余数量,例如 `and 3 more instruction files not loaded`。

5619 5653 

5620**要做什么:**5654**解决方法:**

5621 5655 

5622* 如果该限制是有意为之,则无需操作:会话在没有该文件指令的情况下运行。5656* 如果该限制是有意为之,则无需处理:会话在没有该文件指令的情况下运行。

5623* 要加载因 `a Read deny rule covers it` 而被扣留的文件,请[删除或缩小该规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions)。然后启动新会话。5657* 要加载因 `a Read deny rule covers it` 而被拦截的文件,请[删除或收窄该规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions),然后启动新会话。

5624* 要加载因 `it's read from outside your working directories, where reads are blocked` 而被扣留的文件,请将该文件或其链接目标移到工作目录内。然后启动新会话。5658* 要加载因 `it's read from outside your working directories, where reads are blocked` 而被拦截的文件,请将该文件或其链接目标移到工作目录内,然后启动新会话。

5625* 要加载因 `where it leads couldn't be worked out` 而被扣留的文件,请检查该文件是否是指回自身的链接。如果是,请将链接指向一个存在的文件,或用常规文件替换它。然后启动新会话。5659* 要加载因 `where it leads couldn't be worked out` 而被拦截的文件,请检查该文件是否是指回自身的链接。如果是,请将链接指向一个存在的文件,或用普通文件替换它,然后启动新会话。

5626 5660 

5627在 v2.1.292 之前,该通知在同一行中原因之后的末尾命名文件。5661在 v2.1.292 之前,通知会在同一行的原因之后列出文件名。

5628 5662 

5629### skill、命令或工作流未被加载,因为其名称是保留的5663### A skill, command, or workflow wasn't loaded because its name is reserved

5630 5664 

5631skill 文件夹、frontmatter `name`、`.claude/commands/` 中的文件或子文件夹,或[保存的工作流](https://code.claude.com/docs/zh-CN/workflows.md#save-the-workflow-for-reuse)使用名称 `anthropic-skills` 或以 `anthropic-skills:` 开头的名称。Claude Code [为从 claude.ai 同步的 skill 保留该名称](https://code.claude.com/docs/zh-CN/skills.md#names-reserved-for-synced-skills),不加载该项。5665某个 skill 文件夹、frontmatter 中的 `name`、`.claude/commands/` 中的文件或子文件夹,或某个[已保存的工作流](https://code.claude.com/docs/zh-CN/workflows.md#save-the-workflow-for-reuse)使用了名称 `anthropic-skills` 或以 `anthropic-skills:` 开头的名称。Claude Code [将该名称保留给从 claude.ai 同步的 skill](https://code.claude.com/docs/zh-CN/skills.md#names-reserved-for-synced-skills),因此不会加载该项。

5632 5666 

5633Claude Code 将此警告显示为对话视图中的启动通知,而不是在 stderr 上:5667Claude Code 将此警告作为启动通知显示在对话视图中,而不是输出到 stderr:

5634 5668 

5635```text theme={null}5669```text theme={null}

5636Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account5670Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account

5637```5671```

5638 5672 

5639通知命名它拒绝的第一项需要更改的内容:要重命名的文件夹或文件、要编辑的 `name:` 行,或要重命名的工作流。当拒绝多个项时,通知以计数结尾,例如 `· 2 more`,[调试日志](https://code.claude.com/docs/zh-CN/debug-your-config.md)命名每一个。5673通知会针对被拒绝的第一项说明需要更改的内容:要重命名的文件夹或文件、要编辑的 `name:` 行,或要重命名的工作流。当被拒绝的项不止一个时,通知末尾会带有计数,例如 `· 2 more`,[调试日志](https://code.claude.com/docs/zh-CN/debug-your-config.md)会列出每一项。

5640 5674 

5641**要做什么:**5675**解决方法:**

5642 5676 

5643* 重命名通知命名的项,或编辑它指向的 `name:` 行,然后重启会话。5677* 重命名通知所指的项,或编辑其指向的 `name:` 行,然后重启会话。

5644 5678 

5645在 v2.1.282 之前,Claude Code 加载具有这些名称的 skill 和命令。5679在 v2.1.282 之前,Claude Code 会加载使用这些名称的 skill 和命令。

5646 5680 

5647### Skill or command name refused5681### Skill or command name refused

5648 5682 

5649此启动通知表示 Claude Code 拒绝了至少一个 [skill 或自定义命令](https://code.claude.com/docs/zh-CN/skills.md)的名称,因此它未被加载,或在没有其 `name` 字段的情况下加载:5683此启动通知表示 Claude Code 拒绝了至少一个 [skill 或自定义命令](https://code.claude.com/docs/zh-CN/skills.md)的名称,因此它未被加载,或在不带 `name` 字段的情况下加载:

5650 5684 

5651```text theme={null}5685```text theme={null}

56521 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters56861 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5653```5687```

5654 5688 

5655* **未加载**:Claude Code 拒绝了 skill 或命令所使用的名称,例如其目录名称,或命令文件的名称或子文件夹。它不会出现在 `/` 菜单中,Claude 也无法调用它。它在调试日志中的行显示为 `<name> is not offered`。5689* **未加载**:Claude Code 拒绝了 skill 或命令所使用的名称,例如其目录名、命令文件名或子文件夹。它不会出现在 `/` 菜单中,Claude 也无法调用它。它在调试日志中的行为 `<name> is not offered`。

5656* **`name` 字段被忽略**:Claude Code 拒绝了 skill 的 frontmatter `name`。该 skill 仍会加载,但 `/` 菜单不显示该 `name` 值,输入它也不会调用该 skill。它在调试日志中的行显示为 `<name value> is not shown for <skill>`。5690* **忽略 `name` 字段**:Claude Code 拒绝了 skill 的 frontmatter `name`。该 skill 仍会加载,但 `/` 菜单不显示该 `name` 值,输入它也不会调用该 skill。它在调试日志中的行为 `<name value> is not shown for <skill>`。

5657 5691 

5658**要做什么:**5692**解决方法:**

5659 5693 

5660* 从 shell 使用 `claude --debug` 启动 Claude Code,并在[调试日志](https://code.claude.com/docs/zh-CN/debug-your-config.md)中搜索 `[names]`。通知计数的每个名称在其中都有一行。该行会将某些隐藏字符写成代码,例如用 `\u{200B}` 表示零宽空格,以便您看到它们的位置。5694* 在 shell 中使用 `claude --debug` 启动 Claude Code,并在[调试日志](https://code.claude.com/docs/zh-CN/debug-your-config.md)中搜索 `[names]`。通知统计的每个名称在其中各有一行。该行会将部分隐藏字符写成代码,例如用 `\u{200B}` 表示零宽空格,以便您看出它们的位置。

5661* 通过重命名文件夹或文件或编辑 `name:` 行来删除 [skill 名称不能包含的字符](https://code.claude.com/docs/zh-CN/skills.md#characters-a-skill-name-cant-hold),或缩短超过 256 个字符的名称。然后重启会话,除非该文件位于 Claude Code [监视更改](https://code.claude.com/docs/zh-CN/skills.md#live-change-detection)的目录中。对于来自非您编写的插件的 skill,请要求插件作者重命名它。5695* 通过重命名文件夹或文件、或编辑 `name:` 行来删除 [skill 名称不能包含的字符](https://code.claude.com/docs/zh-CN/skills.md#characters-a-skill-name-cant-hold),或缩短超过 256 个字符的名称。然后重启会话,除非该文件位于 Claude Code [监视更改](https://code.claude.com/docs/zh-CN/skills.md#live-change-detection)的目录中。对于来自非您编写的插件的 skill,请让插件作者重命名。

5662 5696 

5663### 工作区尚未被信任5697### Workspace has not been trusted

5664 5698 

5665Claude Code 在项目的 `.claude/settings.json` 或 `.claude/settings.local.json` 中找到了 `permissions.allow` 规则或 `permissions.additionalDirectories` 条目,但未应用它们,因为[来自项目设置的允许规则需要工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)。计数、设置名称和消息中命名的文件因您的配置而异。`deny` 和 `ask` 规则不受影响。5699Claude Code 在项目的 `.claude/settings.json` 或 `.claude/settings.local.json` 中发现了 `permissions.allow` 规则或 `permissions.additionalDirectories` 条目,但没有应用它们,因为[来自项目设置的允许规则需要工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)。消息中的数量、设置名称和文件会因您的配置而异。`deny` 和 `ask` 规则不受影响。

5666 5700 

5667```text theme={null}5701```text theme={null}

5668Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.5702Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.

5669```5703```

5670 5704 

5671**要做什么:**5705**解决方法:**

5672 5706 

5673* 在目录中运行 `claude` 并接受信任对话框。[项目允许规则和工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)说明该接受涵盖的文件夹。5707* 在该目录中运行 `claude` 并接受信任对话框。[项目允许规则与工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)说明了该接受操作覆盖哪个文件夹。

5674* 在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中使用 `-p` 不显示对话框。使用消息打印的确切 `projects` 键在 `~/.claude.json` 中设置 `hasTrustDialogAccepted` 条目。5708* 在使用 `-p` 的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下不会显示对话框。请使用消息中打印的确切 `projects` 键,在 `~/.claude.json` 中设置 `hasTrustDialogAccepted` 条目。

5675* 如果消息命名 `.claude/settings.local.json` 并且您在 git 仓库外或主目录中启动了 Claude Code,请更新到 v2.1.200 或更高版本。版本 2.1.196 至 2.1.199 在这些工作区中将您自己的 `.claude/settings.local.json` 视为仓库提供的。在 v2.1.207 及更高版本上,如果您尚未信任该文件夹,在 git 仓库外仅更新是不够的:确定文件夹不在仓库内会运行 git,Claude Code 仅在您接受信任对话框后才运行该检查,因此请使用第一步。您的主目录和任何其他[配置主目录](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)是豁免的,不等待对话框。请参阅[项目允许规则和工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)。5709* 如果消息指出的是 `.claude/settings.local.json`,并且您是在 git 仓库之外或主目录中启动 Claude Code 的,请更新到 v2.1.200 或更高版本。版本 2.1.196 至 2.1.199 在这些工作区中会将您自己的 `.claude/settings.local.json` 视为由仓库提供。在 v2.1.207 及更高版本中,如果您尚未信任该文件夹,在 git 仓库之外仅更新是不够的:判断文件夹是否不在仓库内需要运行 git,而 Claude Code 只会在您接受信任对话框后才运行该检查,因此请使用第一步。您的主目录以及任何其他[配置主目录](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)不受此限制,无需等待对话框。请参阅[项目允许规则与工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)。

5676 5710 

5677### 工作目录是网络路径5711### Working directory is a network path

5678 5712 

5679Claude Code 不将网络路径添加为工作目录。查找网络路径可能会联系它命名的主机,在 Windows 上该联系可能会向主机发送您的凭据。因此 Claude Code 拒绝该路径而不查找它。5713Claude Code 不会将网络路径添加为工作目录。查找网络路径可能会联系其指定的主机,而在 Windows 上,这种联系可能会向该主机发送您的凭据。因此,Claude Code 会在不查找的情况下拒绝该路径。

5680 5714 

5681当您使用网络路径运行 `/add-dir` 时,您会看到此消息:5715当您使用网络路径运行 `/add-dir` 时会看到此消息:

5682 5716 

5683```text theme={null}5717```text theme={null}

5684\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).5718\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).

5685```5719```

5686 5720 

5687当您改为在启动时通过 `--add-dir` 或 `permissions.additionalDirectories` 传递网络路径时,Claude Code 启动时不包含该目录。在交互式会话中,您在启动时看不到该消息,因为它与其他[启动警告](#configuration-warnings)一起写入调试日志。5721如果改为在启动时通过 `--add-dir` 或 `permissions.additionalDirectories` 传入网络路径,Claude Code 会在不包含该目录的情况下启动。在交互式会话中,您不会在启动时看到此消息,因为它会与其他[启动警告](#configuration-warnings)一起写入调试日志。

5688 5722 

5689Claude Code 以这种方式拒绝的路径包括:5723Claude Code 以这种方式拒绝的路径包括:

5690 5724 

5691* UNC 共享,例如 `\\server\share`5725* UNC 共享,例如 `\\server\share`

5692* 自动挂载路径,例如 `/net/<host>`,除非您从该主机的自动挂载下的目录启动了 Claude Code。对该自动挂载下的读取仍会经过[网络路径检查](https://code.claude.com/docs/zh-CN/permissions.md#network-paths)。5726* 自动挂载路径,例如 `/net/<host>`,除非您是从该主机自动挂载下的目录启动 Claude Code 的。该自动挂载下的读取仍会经过[网络路径检查](https://code.claude.com/docs/zh-CN/permissions.md#network-paths)。

5693* 通过符号链接或连接点到达网络位置的本地路径5727* 通过符号链接或联接点到达网络位置的本地路径

5694 5728 

5695映射的驱动器号和 `\\wsl$` 路径不计为网络路径。5729映射的驱动器号和 `\\wsl$` 路径不算作网络路径。

5696 5730 

5697**要做什么:**5731**解决方法:**

5698 5732 

5699* 在 Windows 上,将共享映射到驱动器号,并在启动时传递该驱动器。例如,在 PowerShell 中运行 `net use Z: \\server\share`,然后运行 `claude --add-dir Z:\`。5733* 在 Windows 上,将共享映射到驱动器号,并在启动时传入该驱动器。例如,在 PowerShell 中运行 `net use Z: \\server\share`,然后运行 `claude --add-dir Z:\`。

5700* 在 macOS 或 Linux 上,将共享挂载到本地路径并改为添加该路径。5734* 在 macOS 或 Linux 上,将共享挂载到本地路径,然后改为添加该路径。

5701* 如果路径在 `permissions.additionalDirectories` 中,请从列出它的设置文件中删除它。5735* 如果该路径位于 `permissions.additionalDirectories` 中,请从列出它的设置文件中删除它。

5702 5736 

5703在 v2.1.257 之前,Claude Code 接受可达的网络路径作为工作目录。5737在 v2.1.257 之前,Claude Code 会接受可访问的网络路径作为工作目录。

5704 5738 

5705### 远程托管设置加载失败5739### Remote managed settings failed to load

5706 5740 

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

5708 5742 

5709括号中的原因命名失败的内容,例如 `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`。5743括号中的原因说明了失败的内容,例如 `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`。

5710 5744 

5711该行的其余部分说明会话运行的策略:5745该行的其余部分说明会话使用的策略:

5712 5746 

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

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

5715 5749 

5716**要做什么:**5750**解决方法:**

5717 5751 

5718* 对消息命名的原因采取行动:对于网络原因,检查此计算机是否可以到达 `api.anthropic.com`;对于身份验证原因,使用 `/status` 检查您的登录5752* 根据消息指出的原因处理:对于网络原因,请检查此计算机能否访问 `api.anthropic.com`;对于身份验证原因,请使用 `/status` 检查您的登录状态

5719* 对于 `no setting in the server response could be applied as written`,要求您的管理员更正服务器上的设置5753* 对于 `no setting in the server response could be applied as written`,请让管理员修正服务器上的设置

5720* 运行 `/status` 或 `claude doctor` 以获取完整诊断5754* 运行 `/status` 或 `claude doctor` 获取完整诊断

5721 5755 

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

5723 5757 

5724### 托管设置未被批准5758### Managed settings were not approved

5725 5759 

5726您的组织的[服务器托管设置](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 退出而不应用它们:5760您组织的[服务器托管设置](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 会在不应用这些设置的情况下退出:

5727 5761 

5728```text theme={null}5762```text theme={null}

5729Managed settings were not approved; exiting without applying them.5763Managed settings were not approved; exiting without applying them.

5730```5764```

5731 5765 

5732**要做什么:**5766**解决方法:**

5733 5767 

5734* 再次启动 Claude Code 并批准对话框以在您的组织设置下继续。拒绝的对话框不会被记住,因此在下一次启动时会再次出现。5768* 再次启动 Claude Code 并批准该对话框,以便在组织设置下继续使用。被拒绝的对话框不会被记住,因此下次启动时会再次出现。

5735* 如果您对对话框列出的设置不确定,请在批准前询问维护您的组织托管设置的人5769* 如果您对对话框列出的某项设置不确定,请在批准前咨询负责维护组织托管设置的人员

5736 5770 

5737### 托管设置需要您的批准5771### Managed settings need your approval

5738 5772 

5739您的组织的[服务器托管设置](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 plugin` 命令无法从键盘读取,因此无法显示该对话框。当您通过管道传递或重定向其输入,并且在 macOS 和 Linux 上它也无法打开 `/dev/tty` 时,就会发生这种情况。该命令在进行任何更改之前已停止:5773您组织的[服务器托管设置](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 plugin` 命令无法从键盘读取输入,因此无法显示该对话框。当您通过管道或重定向传入其输入、且(在 macOS 和 Linux 上)它也无法打开 `/dev/tty` 时,就会发生这种情况。该命令在做出任何更改之前就已停止:

5740 5774 

5741```text theme={null}5775```text theme={null}

5742Your organization's managed settings need your approval, which couldn't be asked for here. Run `claude` in a terminal and approve them, then run this command again.5776Your organization's managed settings need your approval, which couldn't be asked for here. Run `claude` in a terminal and approve them, then run this command again.

5743```5777```

5744 5778 

5745**要做什么:**5779**解决方法:**

5746 5780 

5747* 在终端中运行 `claude`,并在对话框出现时批准这些设置,然后再次运行相同的 `claude plugin` 命令。Claude Code 将批准和已批准的设置保存在您的[配置目录](https://code.claude.com/docs/zh-CN/server-managed-settings.md#approval-memory)中。如果已停止的命令以其他用户身份运行或设置了 `CLAUDE_CONFIG_DIR`,请以相同方式运行 `claude`,以便两者使用同一目录。5781* 在终端中运行 `claude`,在对话框出现时批准这些设置,然后再次运行同一 `claude plugin` 命令。Claude Code 会将批准记录和已批准的设置保存在您的[配置目录](https://code.claude.com/docs/zh-CN/server-managed-settings.md#approval-memory)中。如果停止的命令是以其他用户身份运行的,或设置了 `CLAUDE_CONFIG_DIR`,请以相同方式运行 `claude`,使两者使用同一目录。

5748 5782 

5749### 托管设置阻止默认模型5783### Managed settings block the default model

5750 5784 

5751您的组织的[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)阻止默认选项解析到的模型以及它可以降级到的每个模型。将在默认选项上启动的会话在启动时退出,而不是运行被阻止的模型。您看到的消息取决于阻止它的设置。当 [`deniedModels`](https://code.claude.com/docs/zh-CN/model-config#block-specific-models-or-versions) 列表阻止它时,消息显示为:5785您组织的[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)阻止了 Default 选项解析到的模型,以及它可以降级到的所有模型。本应使用 Default 选项启动的会话会在启动时退出,而不是运行被阻止的模型。您看到的消息取决于阻止它的设置。当 [`deniedModels`](https://code.claude.com/docs/zh-CN/model-config#block-specific-models-or-versions) 列表阻止它时,消息为:

5752 5786 

5753```text theme={null}5787```text theme={null}

5754Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".5788Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

5755```5789```

5756 5790 

5757当 [`availableModelsMatch`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodelsmatch) 设置为 `"exact"` 的 `availableModels` 列表省略它时,消息显示为:5791当 [`availableModelsMatch`](https://code.claude.com/docs/zh-CN/settings-reference#availablemodelsmatch) 设为 `"exact"` 的 `availableModels` 列表未包含它时,消息为:

5758 5792 

5759```text theme={null}5793```text theme={null}

5760Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".5794Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".

5761```5795```

5762 5796 

5763**要做什么:**5797**解决方法:**

5764 5798 

5765* 如果您管理设置,请将您的用户可以运行的模型添加到 `availableModels`,或缩小阻止每个备用模型的 `deniedModels` 条目。[阻止特定模型或版本](https://code.claude.com/docs/zh-CN/model-config.md#block-specific-models-or-versions)描述默认选项如何降级5799* 如果您负责管理这些设置,请向 `availableModels` 添加用户可以运行的模型,或收窄阻止所有备用模型的 `deniedModels` 条目。[阻止特定模型或版本](https://code.claude.com/docs/zh-CN/model-config.md#block-specific-models-or-versions)介绍了 Default 选项的降级方式

5766* 如果您不管理它们,请将消息发送给您的管理员。您自己的设置文件无法扩大托管的 `availableModels` 或 `deniedModels` 列表5800* 如果您不负责管理这些设置,请将消息发送给管理员。您自己的设置文件无法扩大托管的 `availableModels` 或 `deniedModels` 列表

5767 5801 

5768### 托管设置不允许此 API 提供商5802### Managed settings don't allow this API provider

5769 5803 

5770您的组织的[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)设置了 [`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 列表,会话的 API 提供商不在其上,或会话使用的端点不是按该条目要求的方式固定的。Claude Code 在启动时、登录前或会话下次联系 API 时拒绝。消息以允许的提供商开头:5804您组织的[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)设置了 [`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 列表,而会话的 API 提供商不在该列表中,或者会话使用的端点未按该条目要求的方式固定。Claude Code 会在启动时、登录前或会话下次联系 API 时拒绝。消息以允许的提供商开头:

5771 5805 

5772```text theme={null}5806```text theme={null}

5773Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.5807Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

5774```5808```

5775 5809 

5776当列表为空时,消息改为显示:5810当列表为空时,消息改为:

5777 5811 

5778```text theme={null}5812```text theme={null}

5779Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.5813Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.

5780```5814```

5781 5815 

5782当每个条目都无法识别时,括号内容改为 `(allowedProviders lists only unrecognized entries)`。5816当所有条目都无法识别时,括号内容改为 `(allowedProviders lists only unrecognized entries)`。

5783 5817 

5784**要做什么:**5818**解决方法:**

5785 5819 

5786* 按照消息的 `To continue:` 步骤进行5820* 按照消息中 `To continue:` 的步骤操作

5787* 如果您管理设置,消息中以 `Admins:` 开头的行命名要添加的条目或要固定的值,[`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 条目说明哪个源的 `env` 块可以固定它5821* 如果您负责管理这些设置,消息中以 `Admins:` 开头的行会指出要添加的条目或要固定的值,[`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 条目说明了哪些来源的 `env` 块可以固定它

5788 5822 

5789### MCP 服务器被企业托管策略阻止5823### MCP server is blocked by enterprise managed policy

5790 5824 

5791您在 `/mcp` 中的服务器上选择了**重新连接**,或在那里重新打开了禁用的服务器,而[限制 MCP 服务器](https://code.claude.com/docs/zh-CN/managed-mcp.md)的设置阻止了该服务器。Claude Code 拒绝连接它并显示:5825您在 `/mcp` 中对某个服务器选择了 **Reconnect**,或在其中重新启用了已禁用的服务器,而某项[限制 MCP 服务器](https://code.claude.com/docs/zh-CN/managed-mcp.md)的设置阻止了该服务器。Claude Code 拒绝连接它并显示:

5792 5826 

5793```text theme={null}5827```text theme={null}

5794MCP server <name> is blocked by enterprise managed policy5828MCP server <name> is blocked by enterprise managed policy

5795```5829```

5796 5830 

5797这些设置中的任何一个都可以产生该消息:5831以下任一设置都可能导致此消息:

5798 5832 

5799* 与服务器匹配的 [`deniedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists) 条目,包括您自己的 `~/.claude/settings.json` 或项目的 `.claude/settings.json` 中的条目5833* 与该服务器匹配的 [`deniedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists) 条目,包括您自己的 `~/.claude/settings.json` 或项目的 `.claude/settings.json` 中的条目

5800* 服务器不匹配的 [`allowedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists) 列表5834* 该服务器不匹配的 [`allowedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists) 列表

5801* 锁定了 `mcp` 的 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization),这会阻止在 `~/.claude.json` 和 `.mcp.json` 中配置的服务器5835* 锁定了 `mcp` 的 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization),它会阻止在 `~/.claude.json` 和 `.mcp.json` 中配置的服务器

5802* [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/mcp#disable-claude-ai-connectors),当服务器是 claude.ai 连接器时5836* 当服务器是 claude.ai 连接器时的 [`disableClaudeAiConnectors`](https://code.claude.com/docs/zh-CN/mcp#disable-claude-ai-connectors)

5803 5837 

5804**要做什么:**5838**解决方法:**

5805 5839 

5806* 检查您自己的用户和项目设置文件中是否有这些设置之一,并更改或删除它5840* 检查您自己的用户和项目设置文件中是否有上述设置之一,并更改或删除它

5807* 如果您自己的设置都不能解释该阻止,请询问您的管理员哪个托管设置阻止了服务器5841* 如果您自己的设置都无法解释该阻止,请询问管理员是哪项托管设置阻止了该服务器

5808 5842 

5809在 v2.1.257 之前,`/mcp` 中的**重新连接**和重新启用可以连接被会话中途策略更新阻止的服务器。5843在 v2.1.257 之前,`/mcp` 中的 **Reconnect** 和重新启用操作可以连接被会话中途策略更新所阻止的服务器。

5810 5844 

5811### MCP 服务器名称是保留的5845### MCP server name is reserved

5812 5846 

5813此消息命名您的某个 MCP 服务器,其名称属于 Claude Code 保留的名称,例如其内置服务器的名称:5847此消息指出您的某个 MCP 服务器,其名称属于 Claude Code 保留的名称,例如其内置服务器的名称:

5814 5848 

5815```text theme={null}5849```text theme={null}

5816"workspace" is a reserved MCP server name and was not loaded5850"workspace" is a reserved MCP server name and was not loaded

5817```5851```

5818 5852 

5819**要做什么:**5853**解决方法:**

5820 5854 

5821* 在定义该服务器的位置重命名它,例如从 `workspace` 改为 `my-workspace`5855* 在定义该服务器的位置重命名它,例如从 `workspace` 改为 `my-workspace`

5822* 有关其他需要避免的保留名称,请参阅 [MCP 配置警告](https://code.claude.com/docs/zh-CN/mcp.md#configuration-warnings)5856* 有关需要避免的其他保留名称,请参阅 [MCP 配置警告](https://code.claude.com/docs/zh-CN/mcp.md#configuration-warnings)

5823 5857 

5824### 托管设置文档无法解析5858### Managed settings document could not be parsed

5825 5859 

5826您的组织部署了[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),其中一个部署的文档存在但无法解析为 JSON 对象,因此 Claude Code 在启动时以退出码 1 退出,而不是在没有该文档所携带策略的情况下运行。该行在消息前命名失败的源:5860您的组织部署了[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),其中某个已部署的文档存在但无法解析为 JSON 对象,因此 Claude Code 在启动时以退出码 1 退出,而不是在缺少该文档所含策略的情况下运行。该行会在消息之前指出失败的来源:

5827 5861 

5828```text theme={null}5862```text theme={null}

5829/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.5863/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.

5830```5864```

5831 5865 

5832源是以下之一:5866来源为以下之一:

5833 5867 

5834* `managed-settings.json` 文件的路径或 `managed-settings.d` 下的放入文件5868* `managed-settings.json` 文件或 `managed-settings.d` 下的附加文件的路径

5835* macOS 托管首选项配置文件,`per-user managed preferences` 或 `device-level managed preferences`5869* macOS 托管偏好设置描述文件,`per-user managed preferences` 或 `device-level managed preferences`

5836* Windows 注册表值,`Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`5870* Windows 注册表值,`Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`

5837 5871 

5838[查找 Claude Code 删除的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)列出了使每个源无法解析的原因。5872[查找 Claude Code 丢弃的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)列出了导致各来源无法解析的情况。

5839 5873 

5840即使另一个管理员源提供了有效策略,Claude Code 也会拒绝启动。您在交互式会话、`claude -p`、Agent SDK 会话、[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)和大多数子命令(包括 `claude doctor`)中都会看到此错误。该拒绝有意采用失败关闭:Claude Code 无法解析的文档中的设置无法被强制执行,强行启动会在没有组织控制的情况下运行会话。5874即使另一个管理员来源提供了有效策略,Claude Code 也会拒绝启动。您会在交互式会话、`claude -p`、Agent SDK 会话、[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)以及大多数子命令(包括 `claude doctor`)中看到此错误。这种拒绝是有意采用的失败即关闭策略:Claude Code 无法解析的文档中的设置无法被强制执行,而强行启动会使会话在没有组织管控的情况下运行。

5841 5875 

5842可解析文档中的 schema 问题不会产生此错误。[查找 Claude Code 删除的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)涵盖 Claude Code 对此类问题的处理方式。5876可解析文档中的 schema 问题不会产生此错误。[查找 Claude Code 丢弃的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)介绍了 Claude Code 如何处理这类问题。

5843 5877 

5844当 `managed-settings.d/` 目录存在但无法列出时,Claude Code 改为报告 `Managed settings drop-in directory could not be read:`,后跟底层错误。[查找 Claude Code 删除的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)涵盖读取失败何时会在启动时退出。5878当 `managed-settings.d/` 目录存在但无法列出时,Claude Code 会改为报告 `Managed settings drop-in directory could not be read:`,后跟底层错误。[查找 Claude Code 丢弃的条目](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)介绍了读取失败何时会导致启动时退出。

5845 5879 

5846**要做什么:**5880**解决方法:**

5847 5881 

5848* 如果您管理计算机,请修复命名的文档使其解析为 JSON 对象,或删除文件、配置文件或注册表值。空的 `managed-settings.json` 计为 `{}`,不会阻止启动。5882* 如果您负责管理该计算机,请修复所指出的文档使其能解析为 JSON 对象,或删除该文件、描述文件或注册表值。空的 `managed-settings.json` 会被视为 `{}`,不会阻止启动。

5849* 如果您不管理,请要求您的管理员修复部署的文档。您自己的设置文件中的任何内容都不会导致或清除此错误。5883* 如果您不负责管理,请让管理员修复已部署的文档。您自己的设置文件不会导致或消除此错误。

5850 5884 

5851### 无法读取托管策略设置5885### Unable to read managed policy settings

5852 5886 

5853您的组织部署了[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),其中一个部署的源存在但无法读取,原因例如 I/O 错误,而不是操作系统拒绝读取。在没有其他管理员源提供策略的情况下,Claude Code 在启动时退出,而不是在没有该源可能携带的策略的情况下运行:5887您的组织部署了[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),其中某个已部署的来源存在但无法读取,原因是 I/O 错误等,而不是操作系统拒绝读取。在没有其他管理员来源提供策略的情况下,Claude Code 会在启动时退出,而不是在缺少该来源可能包含的策略的情况下运行:

5854 5888 

5855```text theme={null}5889```text theme={null}

5856Unable to read managed policy settings.5890Unable to read managed policy settings.


5860Detail: <source>: <reason>5894Detail: <source>: <reason>

5861```5895```

5862 5896 

5863在相同的状态下,登录流程、来自已运行会话的 API 请求和 [`claude gateway`](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 服务器会被拒绝,并显示第一行的一个变体,其中命名 [`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders)。5897在同样的状态下,登录流程、已在运行的会话发出的 API 请求以及 [`claude gateway`](https://code.claude.com/docs/zh-CN/claude-apps-gateway) 服务器都会被拒绝,并显示第一行的一个变体,其中会提到 [`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders)。

5864 5898 

5865操作系统拒绝的读取(例如对仅限 root 的文件)不会导致此退出:[会话启动时不使用该源的策略](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)。对于无法解析的源,Claude Code 以[命名该源的不同消息](#managed-settings-document-could-not-be-parsed)退出。5899被操作系统拒绝的读取(例如读取仅 root 可访问的文件)不会导致此退出:[会话会在不含该来源策略的情况下启动](https://code.claude.com/docs/zh-CN/managed-settings.md#find-entries-claude-code-dropped)。对于无法解析的来源,Claude Code 会以[另一条指出该来源的消息](#managed-settings-document-could-not-be-parsed)退出。

5866 5900 

5867**要做什么:**5901**解决方法:**

5868 5902 

5869* 如果您管理计算机,请修复 `Detail:` 行命名的问题,以便部署的源可以被读取,或删除该源5903* 如果您负责管理该计算机,请修复 `Detail:` 行指出的问题,使已部署的来源能够被读取,或删除该来源

5870* 如果您不管理,请将消息发送给您的管理员。您自己的设置文件中的任何内容都不会导致或清除此错误5904* 如果您不负责管理,请将消息发送给管理员。您自己的设置文件不会导致或消除此错误

5871 5905 

5872在 v2.1.285 之前,仅使用 claude.ai 或 Claude Console 凭据登录的会话以此消息退出,并且操作系统拒绝的读取也会产生它。5906在 v2.1.285 之前,只有使用 claude.ai 或 Claude Console 凭据登录的会话才会以此消息退出,并且被操作系统拒绝的读取也会产生此消息。

5873 5907 

5874### Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded5908### Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded

5875 5909 

5876`-p` 运行中的此 stderr 块表示某个[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)源包含 Claude Code 无法加载的 hook 条目。该 hook 不会运行;当某行将该源的 `hooks` 字段列为已忽略时,该源的所有 hook 都不会运行。5910`-p` 运行输出的这段 stderr 内容表示某个[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)来源包含 Claude Code 无法加载的 hook 条目。该 hook 不会运行;当某一行列出该来源的 `hooks` 字段被忽略时,该来源的所有 hook 都不会运行。

5877 5911 

5878每行命名源、字段(如有)以及问题,例如未知的 hook `type` 或在 `hooks` 键之外声明的 hook:5912每一行会指出来源、字段(如有)以及问题,例如未知的 hook `type`,或在 `hooks` 键之外声明的 hook:

5879 5913 

5880```text theme={null}5914```text theme={null}

5881Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded; fix or remove each entry:5915Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded; fix or remove each entry:

5882 <source> (<field>): <message>5916 <source> (<field>): <message>

5883```5917```

5884 5918 

5885**要做什么:**5919**解决方法:**

5886 5920 

5887* 如果您管理该源,请修复或删除该块列出的每个条目。[Hook 配置](https://code.claude.com/docs/zh-CN/hooks.md#configuration)展示了 Claude Code 在 `hooks` 下期望的结构。5921* 如果您负责管理该来源,请修复或删除列出的每个条目。[Hook 配置](https://code.claude.com/docs/zh-CN/hooks.md#configuration)展示了 Claude Code 在 `hooks` 下期望的结构。

5888* 如果某行的源是 `parent managed settings`,则表示启动 Claude Code 的应用程序将该条目作为[父设置](https://code.claude.com/docs/zh-CN/managed-settings.md#parent-settings-from-embedding-hosts)传入,因此请向该应用程序的开发者报告5922* 如果某一行的来源是 `parent managed settings`,说明启动 Claude Code 的应用程序将该条目作为[父级设置](https://code.claude.com/docs/zh-CN/managed-settings.md#parent-settings-from-embedding-hosts)传入,请将其报告给该应用程序的开发者

5889* 否则,请将该块发送给您的管理员5923* 否则,请将这段内容发送给管理员

5890 5924 

5891在 v2.1.300 之前,`-p` 运行会将此情况列在 `Managed settings failed to load; policies from the failed source are NOT in effect:` 标题下。5925在 v2.1.300 之前,`-p` 运行会将此情况列在 `Managed settings failed to load; policies from the failed source are NOT in effect:` 标题下。

5892 5926 

5893### otelHeadersHelper 失败5927### otelHeadersHelper failed

5894 5928 

5895当 [`otelHeadersHelper`](https://code.claude.com/docs/zh-CN/settings-reference#otelheadershelper) 脚本失败或打印不符合[脚本要求](https://code.claude.com/docs/zh-CN/monitoring-usage.md#script-requirements)的输出时,Claude Code 将此警告显示为终端界面中的通知,每个交互式会话一次。5929当 [`otelHeadersHelper`](https://code.claude.com/docs/zh-CN/settings-reference#otelheadershelper) 脚本失败,或其输出不符合[脚本要求](https://code.claude.com/docs/zh-CN/monitoring-usage.md#script-requirements)时,Claude Code 会在终端界面中以通知形式显示此警告,每个交互式会话显示一次。

5896 5930 

5897当脚本持续失败时,导出失败,您的遥测后端从会话中接收不到任何内容。5931只要脚本持续失败,导出就会失败,您的遥测后端将收不到该会话的任何数据。

5898 5932 

5899`See /status:` 后的文本说明失败的内容,例如脚本的退出码后跟其错误输出:5933`See /status:` 之后的文本说明了失败内容,例如脚本的退出码及其错误输出:

5900 5934 

5901```text theme={null}5935```text theme={null}

5902otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable5936otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable

5903```5937```

5904 5938 

5905**要做什么:**5939**解决方法:**

5906 5940 

5907* 运行 `/status` 以读取失败详情。5941* 运行 `/status` 查看失败详情。

5908* 修复脚本使其在 30 秒内以 0 退出,并在 stdout 上打印由字符串标头值组成的 JSON 对象。请参阅[脚本要求](https://code.claude.com/docs/zh-CN/monitoring-usage.md#script-requirements)。5942* 修复脚本,使其在 30 秒内以 0 退出,并在 stdout 上打印一个值为字符串的请求头 JSON 对象。请参阅[脚本要求](https://code.claude.com/docs/zh-CN/monitoring-usage.md#script-requirements)。

5909* 如果您的组织通过[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)部署脚本,请要求维护它们的人修复它。5943* 如果您的组织通过[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)部署该脚本,请让负责维护的人员修复它。

5910 5944 

5911在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中使用 `-p` 时,相同的失败改为在 stderr 上显示为 `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>`。5945在使用 `-p` 的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,同样的失败会改为在 stderr 上显示为 `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>`。

5912 5946 

5913### headersHelper 未运行5947### headersHelper not run

5914 5948 

5915Claude Code 仅使用 MCP 服务器的静态 `headers` 连接了它,并跳过了服务器的 [`headersHelper`](https://code.claude.com/docs/zh-CN/mcp#use-dynamic-headers-for-custom-authentication),因为该助手是 shell 命令,而该文件夹没有保存的信任。当您手动在 `~/.claude.json` 中设置其条目时,或在主目录外,当您在交互式会话中为其接受信任对话框时,文件夹获得保存的信任。请参阅[在 headersHelper 运行前信任文件夹](https://code.claude.com/docs/zh-CN/mcp.md#trust-a-folder-before-its-headershelper-runs)了解此检查适用于哪些服务器。5949Claude Code 仅使用静态 `headers` 连接了某个 MCP 服务器,并跳过了该服务器的 [`headersHelper`](https://code.claude.com/docs/zh-CN/mcp#use-dynamic-headers-for-custom-authentication),因为该 helper 是一条 shell 命令,而该文件夹没有已保存的信任。当您手动在 `~/.claude.json` 中设置文件夹的条目,或(在主目录之外)在交互式会话中接受该文件夹的信任对话框时,该文件夹即获得已保存的信任。有关此检查适用于哪些服务器,请参阅[在运行 headersHelper 之前信任文件夹](https://code.claude.com/docs/zh-CN/mcp.md#trust-a-folder-before-its-headershelper-runs)。

5916 5950 

5917Claude Code 仅在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中写入此行,每个服务器一次。在交互式会话中,它改为将相同的拒绝写入调试日志。5951Claude Code 仅在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下写入此行,每个服务器一次。在交互式会话中,它会改为将相同的拒绝信息写入调试日志。

5918 5952 

5919```text theme={null}5953```text theme={null}

5920MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.5954MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.

5921```5955```

5922 5956 

5923消息打印的 `projects` 键就是[项目允许规则和工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)中说明的 Claude Code 用来记录信任的文件夹。为父文件夹接受信任对话框不满足该检查,`-p` 或 SDK 会话也不满足。5957消息打印的 `projects` 键就是[项目允许规则与工作区信任](https://code.claude.com/docs/zh-CN/permissions.md#project-allow-rules-and-workspace-trust)中所述 Claude Code 用于记录信任的文件夹。接受父文件夹的信任对话框不能满足此检查,`-p` 或 SDK 会话也不能满足。

5924 5958 

5925**要做什么:**5959**解决方法:**

5926 5960 

5927* 在消息命名的文件夹中运行 `claude`,接受信任对话框,然后再次运行您的 `-p` 或 SDK 命令5961* 在消息指出的文件夹中运行 `claude`,接受信任对话框,然后再次运行您的 `-p` 或 SDK 命令

5928* 在 `~/.claude.json` 中自己设置 `hasTrustDialogAccepted` 条目,使用消息打印的确切 `projects` 键5962* 使用消息打印的确切 `projects` 键,自行在 `~/.claude.json` 中设置 `hasTrustDialogAccepted` 条目

5929* 如果您在主目录中启动了会话,请从您已信任的项目目录工作。当您在主目录中接受信任对话框时,Claude Code 仅为当前会话保持该信任。5963* 如果您是在主目录中启动会话的,请改在已信任的项目目录中工作。当您在主目录中接受信任对话框时,Claude Code 仅在当前会话中保留该信任。

5930 5964 

5931### 格式错误的 Tool(content) 规则5965### Malformed Tool(content) rule

5932 5966 

5933您的某个设置文件中的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax)不具有 `Tool` 或 `Tool(content)` 的形式,例如因为右括号后跟有文本或缺少其中一个括号。Claude Code 跳过该规则,并在交互式会话启动时的无效设置对话框中以及 [`claude doctor`](https://code.claude.com/docs/zh-CN/debug-your-config#check-resolved-settings) 输出中列出它:5967您某个设置文件中的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#permission-rule-syntax)不符合 `Tool` 或 `Tool(content)` 的形式,例如右括号后面还有文本,或缺少其中一个括号。Claude Code 会跳过该规则,并在交互式会话启动时的无效设置对话框以及 [`claude doctor`](https://code.claude.com/docs/zh-CN/debug-your-config#check-resolved-settings) 输出中列出它:

5934 5968 

5935```text theme={null}5969```text theme={null}

5936Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal5970Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal

5937```5971```

5938 5972 

5939**要做什么:**5973**解决方法:**

5940 5974 

5941* 在消息列出的设置文件中,重写规则使其在其右括号处结束,例如用 `Bash(ls *)` 代替 `Bash(ls) x`5975* 在消息所列的设置文件中重写该规则,使其以右括号结尾,例如用 `Bash(ls *)` 代替 `Bash(ls) x`

5942* 将内容内的括号保留原样。它们是字面量,因此诸如 `Edit(./Finance (2024)/**)` 的规则无需转义即有效5976* 内容中的括号保持原样即可。它们按字面处理,因此 `Edit(./Finance (2024)/**)` 这样的规则无需转义即有效

5943 5977 

5944在 v2.1.260 之前,Claude Code 将具有不匹配括号的规则报告为 `Mismatched parentheses`。5978在 v2.1.260 之前,Claude Code 会将括号不匹配的规则报告为 `Mismatched parentheses`。

5945 5979 

5946### Matches no tool · check for typos5980### Matches no tool · check for typos

5947 5981 

5948启动横幅下方的这一行命名了一条拒绝或询问[权限规则](https://code.claude.com/docs/zh-CN/permissions.md),Claude Code 无法识别其工具名称,因此该规则不适用于您想要的工具。写成 `Bsh` 的拒绝规则不会应用于 Bash,使用工具在会话记录中显示的标签而非其规范名称的规则也不会。该行按您书写的原样重复该规则:5982启动横幅下方的这一行指出某条拒绝或询问[权限规则](https://code.claude.com/docs/zh-CN/permissions.md)的工具名称 Claude Code 无法识别,因此该规则不会应用到您想要的工具上。写成 `Bsh` 的拒绝规则不会应用到 Bash,使用工具在会话记录中显示的标签而非其规范名称的规则也不会生效。该行会按您书写的原样重复该规则:

5949 5983 

5950```text theme={null}5984```text theme={null}

5951⚠ Deny rule Bsh matches no tool · check for typos5985⚠ Deny rule Bsh matches no tool · check for typos

5952```5986```

5953 5987 

5954在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中,Claude Code 改为在 stderr 上打印较长形式的警告:5988在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,Claude Code 会改为在 stderr 上打印较长形式的警告:

5955 5989 

5956```text theme={null}5990```text theme={null}

5957Permission deny rule "Bsh" matches no known tool — check for typos.5991Permission deny rule "Bsh" matches no known tool — check for typos.

5958```5992```

5959 5993 

5960**要做什么:**5994**解决方法:**

5961 5995 

5962* 更正规则中的工具名称,例如用 `Bash` 代替 `Bsh`。在[工具参考](https://code.claude.com/docs/zh-CN/tools-reference.md)中查找规范名称。5996* 更正规则中的工具名称,例如用 `Bash` 代替 `Bsh`。可在[工具参考](https://code.claude.com/docs/zh-CN/tools-reference.md)中查找规范名称。

5963* 要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。其详情会说明规则的来源,例如 `From project local settings`,或对于 `--disallowedTools` 值显示 `From CLI argument`。5997* 要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。其详情会说明来源,例如 `From project local settings`,或对于 `--disallowedTools` 值显示 `From CLI argument`。

5964* 如果详情显示 `From enterprise managed settings`,请将该行转发给维护您的[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)的人,因为您无法自己更改该规则。5998* 如果详情显示 `From enterprise managed settings`,请将该行转发给负责维护您[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)的人员,因为您无法自行更改该规则。

5965 5999 

5966在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中或使用 `--output-format json` 或 `stream-json` 时,Claude Code 将警告写入调试日志而不是 stderr。使用 `--debug` 运行以在 `~/.claude/debug/<session-id>.txt` 处捕获它。6000在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,或使用 `--output-format json` 或 `stream-json` 时,Claude Code 会将警告写入调试日志而不是 stderr。使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它。

5967 6001 

5968在 v2.1.305 之前,交互式会话在启动时在 stderr 上打印较长形式,而不是显示该行。6002在 v2.1.305 之前,交互式会话会在启动时于 stderr 上打印较长形式的警告,而不是显示该行。

5969 6003 

5970### 不匹配文件权限检查6004### Is not matched by file permission checks

5971 6005 

5972Claude Code 在您的某个[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)、[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)或 `--allowedTools`、`--disallowedTools` 或 `--settings` 标志值中找到了带有路径的 `Write`、`NotebookEdit`、`MultiEdit` 或 `Glob` [权限规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)。它仅针对 `Edit` 和 `Read` 规则检查文件权限,因此从不查询命名其他文件工具之一的路径规则。它保留该规则且不改变其他任何内容。6006Claude Code 在您的某个[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)、[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),或 `--allowedTools`、`--disallowedTools`、`--settings` 标志值中,发现了带路径的 `Write`、`NotebookEdit`、`MultiEdit` 或 `Glob` [权限规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit)。Claude Code 仅根据 `Edit` 和 `Read` 规则检查文件权限,因此永远不会参考指定其他文件工具的路径规则。它会保留该规则,不做其他更改。

5973 6007 

5974* **交互式会话**:完整警告写入[调试日志](#configuration-warnings),此形式的拒绝或询问规则还会在启动横幅下方显示为以下行:6008* **交互式会话**:完整警告会写入[调试日志](#configuration-warnings),此类形式的拒绝或询问规则还会在启动横幅下方显示为如下一行:

5975 6009 

5976 ```text theme={null}6010 ```text theme={null}

5977 ⚠ Deny rule Write(docs/**) never matches · use Edit(docs/**)6011 ⚠ Deny rule Write(docs/**) never matches · use Edit(docs/**)

5978 ```6012 ```

5979 6013 

5980 此形式的允许规则不会显示行。要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。6014 此类形式的允许规则不会显示行。要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。

5981* **使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)**:stderr 上的完整警告命名该规则、括号中的来源以及要写入的替换内容:6015* **使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)**:stderr 上的完整警告会指出规则、括号中的来源以及应写入的替代规则:

5982 6016 

5983 ```text theme={null}6017 ```text theme={null}

5984 Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).6018 Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).

5985 ```6019 ```

5986* **[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md),或使用 `--output-format json` 或 `stream-json`**:完整警告写入调试日志而不是 stderr,以保持机器读取的输出干净。使用 `--debug` 运行以在 `~/.claude/debug/<session-id>.txt` 处捕获它。6020* **[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md),或使用 `--output-format json` 或 `stream-json`**:完整警告会写入调试日志而不是 stderr,以保持机器读取的输出干净。使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它。

5987 6021 

5988**要做什么:**6022**解决方法:**

5989 6023 

5990* 将 `Write(path)`、`NotebookEdit(path)` 和旧版 `MultiEdit(path)` 规则替换为 `Edit(path)`。`Edit` 规则涵盖所有文件编辑工具。6024* 将 `Write(path)`、`NotebookEdit(path)` 和旧版 `MultiEdit(path)` 规则替换为 `Edit(path)`。`Edit` 规则涵盖所有文件编辑工具。

5991* 除了在 `--allowedTools` 中(Claude Code 接受 `Glob` 规则而不警告),将 `Glob(path)` 规则替换为 `Read(path)`。6025* 将 `Glob(path)` 规则替换为 `Read(path)`,但在 `--allowedTools` 中除外,Claude Code 在其中接受 `Glob` 规则而不发出警告。

5992* 在完整警告括号中命名的来源处修复规则:设置文件路径,或对于 `--allowed-tools` 和 `--disallowed-tools` 则是标志本身。磁盘上不存在的 `claude-settings-<hash>.json` 路径代表内联 `--settings` 值。请修复您传递给该标志的 JSON。6026* 在规则的来源处修复它,完整警告会在括号中指出来源:设置文件路径,或对于 `--allowed-tools` 和 `--disallowed-tools` 则是标志本身。磁盘上不存在的 `claude-settings-<hash>.json` 路径代表内联的 `--settings` 值。请修复您传给该标志的 JSON。

5993* 将诸如 `Write` 或 `Glob` 的裸工具名称规则保留原样。Claude Code 在[工具级别](https://code.claude.com/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)匹配它们,不对它们发出警告。6027* 不要改动 `Write` 或 `Glob` 等仅含工具名的规则。Claude Code 在[工具级别](https://code.claude.com/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)匹配它们,不会对其发出警告。

5994* 对于来自托管设置的规则,完整警告的括号显示 `managed policy settings`,该规则在 `/permissions` 中的详情显示 `From enterprise managed settings`。请将该警告转发给维护您的托管设置的人,因为您无法自己清除它。6028* 对于来自托管设置的规则,完整警告括号中显示 `managed policy settings`,`/permissions` 中该规则的详情显示 `From enterprise managed settings`。请将该警告转发给负责维护托管设置的人员,因为您无法自行消除它。

5995 6029 

5996在 v2.1.210 之前,Claude Code 接受这些规则而不警告。在 v2.1.305 之前,交互式会话在 stderr 上打印完整警告。6030在 v2.1.210 之前,Claude Code 接受这些规则而不发出警告。在 v2.1.305 之前,交互式会话会在 stderr 上打印完整警告。

5997 6031 

5998### 在命令的其余部分之前有通配符6032### Has a wildcard before the rest of the command

5999 6033 

6000Claude Code 在您的某个[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)、[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)或 `--allowedTools` 或 `--settings` 标志值中找到了一个 `Bash` 允许规则,其 `*` 出现在决定命令类型的后续单词之前,例如 `Bash(git * main)` 或 `Bash(git -C * status *)`。`*` 匹配任何文本,包括在该位置插入的选项:`Bash(git * main)` 也会批准 `git -c core.fsmonitor=<script> diff main`,其中 `-c` 会使 git 运行命令所命名的程序。[通配符模式](https://code.claude.com/docs/zh-CN/permissions.md#wildcard-patterns)显示匹配规则。6034Claude Code 在您的某个[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)、[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md),或 `--allowedTools`、`--settings` 标志值中,发现了一条 `Bash` 允许规则,其 `*` 出现在决定命令身份的后续单词之前,例如 `Bash(git * main)` 或 `Bash(git -C * status *)`。`*` 匹配任意文本,包括插入在该位置的选项:`Bash(git * main)` 也会批准 `git -c core.fsmonitor=<script> diff main`,其中 `-c` 会让 git 运行命令中指定的程序。[通配符模式](https://code.claude.com/docs/zh-CN/permissions.md#wildcard-patterns)介绍了匹配规则。

6001 6035 

6002此警告的目的是让您缩小通配符范围超出预期的规则。Claude Code 保留该规则且不改变其匹配方式。在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中,stderr 上的警告命名该规则及括号中的来源:6036此警告的目的是让您收窄通配符范围超出预期的规则。Claude Code 会保留该规则,不改变其匹配方式。在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,stderr 上的警告会指出规则及括号中的来源:

6003 6037 

6004```text theme={null}6038```text theme={null}

6005Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).6039Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).

6006```6040```

6007 6041 

6008在交互式会话中,完整警告写入[调试日志](#configuration-warnings),该规则在启动横幅下方显示为以下行:6042在交互式会话中,完整警告会写入[调试日志](#configuration-warnings),该规则会在启动横幅下方显示为如下一行:

6009 6043 

6010```text theme={null}6044```text theme={null}

6011⚠ Allow rule Bash(git -C * status *) allows any option at its * · use an exact value6045⚠ Allow rule Bash(git -C * status *) allows any option at its * · use an exact value


6013 6047 

6014要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。6048要查找规则的定义位置,请在会话中运行 `/permissions` 并选择该规则。

6015 6049 

6016**要做什么:**6050**解决方法:**

6017 6051 

6018* 将子命令前的 `*` 替换为您想要的确切值:用 `Bash(git checkout main)` 代替 `Bash(git * main)`。6052* 将子命令之前的 `*` 替换为您想要的确切值:用 `Bash(git checkout main)` 代替 `Bash(git * main)`。

6019* 将每个 `*` 移到子命令后:用 `Bash(git status *)` 代替 `Bash(git -C * status *)`。为您想允许的每个子命令写一条规则。6053* 将所有 `*` 移到子命令之后:用 `Bash(git status *)` 代替 `Bash(git -C * status *)`。为每个要允许的子命令各写一条规则。

6020* 在完整警告括号中命名的来源处修复规则:设置文件路径,或 `--allowed-tools` 标志本身。磁盘上不存在的 `claude-settings-<hash>.json` 路径代表内联 `--settings` 值。请修复您传递给该标志的 JSON。6054* 在规则的来源处修复它,完整警告会在括号中指出来源:设置文件路径,或 `--allowed-tools` 标志本身。磁盘上不存在的 `claude-settings-<hash>.json` 路径代表内联的 `--settings` 值。请修复您传给该标志的 JSON。

6021* 对于来自托管设置的规则,完整警告的括号显示 `managed policy settings`,该规则在 `/permissions` 中的详情显示 `From enterprise managed settings`。请将该警告转发给维护您的托管设置的人,因为您无法自己清除它。6055* 对于来自托管设置的规则,完整警告括号中显示 `managed policy settings`,`/permissions` 中该规则的详情显示 `From enterprise managed settings`。请将该警告转发给负责维护托管设置的人员,因为您无法自行消除它。

6022 6056 

6023在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中或使用 `--output-format json` 或 `stream-json` 时,Claude Code 将警告写入调试日志而不是 stderr,以保持机器读取的输出干净。使用 `--debug` 运行以在 `~/.claude/debug/<session-id>.txt` 处捕获它。在 v2.1.246 之前,Claude Code 接受这些规则而不警告。6057在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,或使用 `--output-format json` 或 `stream-json` 时,Claude Code 会将警告写入调试日志而不是 stderr,以保持机器读取的输出干净。使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它。在 v2.1.246 之前,Claude Code 接受这些规则而不发出警告。

6024 6058 

6025在 v2.1.305 之前,交互式会话在 stderr 上打印完整警告,而不是显示一行。6059在 v2.1.305 之前,交互式会话会在 stderr 上打印完整警告,而不是显示一行。

6026 6060 

6027### 拒绝 Bash 也会关闭 PowerShell 工具6061### Denying Bash also turns off the PowerShell tool

6028 6062 

6029您移除了整个 Bash 工具,例如使用 `--disallowedTools Bash`,或在您的某个设置文件中使用裸 `Bash` 或 `Bash(*)` [拒绝规则](https://code.claude.com/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)。在安装了 Git Bash 的 Windows 上,[拒绝 Bash 也会关闭 PowerShell 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#bash-deny-rules-also-turn-off-the-powershell-tool),因此会话启动时没有任何 shell 工具。6063您移除了整个 Bash 工具,例如使用 `--disallowedTools Bash`,或在某个设置文件中使用仅含 `Bash` 或 `Bash(*)` 的[拒绝规则](https://code.claude.com/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)。在安装了 Git Bash 的 Windows 上,[拒绝 Bash 也会关闭 PowerShell 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#bash-deny-rules-also-turn-off-the-powershell-tool),因此会话启动时没有任何 shell 工具。

6030 6064 

6031在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中,Claude Code 在启动时在 stderr 上打印此警告,而交互式会话仅将其写入[调试日志](#configuration-warnings):6065在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,Claude Code 会在启动时于 stderr 上打印此警告,而交互式会话只会将其写入[调试日志](#configuration-warnings):

6032 6066 

6033```text theme={null}6067```text theme={null}

6034Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.6068Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.

6035```6069```

6036 6070 

6037**要做什么:**6071**解决方法:**

6038 6072 

6039* 要让 Claude 使用 PowerShell,请在您的环境中或设置文件的 `env` 块中将 [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 `1`,如[启用 PowerShell 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#enable-the-powershell-tool)所示。之后 PowerShell 工具会与您的 Bash 拒绝规则并存并保持启用。6073* 要让 Claude 使用 PowerShell,请在您的环境中或设置文件的 `env` 块中将 [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](https://code.claude.com/docs/zh-CN/env-vars) 设为 `1`,如[启用 PowerShell 工具](https://code.claude.com/docs/zh-CN/tools-reference.md#enable-the-powershell-tool)所示。这样 PowerShell 工具会与您的 Bash 拒绝规则同时保持启用。

6040* 要阻止特定命令而不是整个工具,请在同一设置文件或标志中将裸 `Bash` 条目替换为限定范围的规则,例如 `Bash(git push *)`。Claude 会保留 Bash 工具,而 PowerShell 工具会保持关闭,直到您同时设置该变量或添加限定范围的 [`PowerShell` 权限规则](https://code.claude.com/docs/zh-CN/permissions#powershell)。6074* 要阻止特定命令而不是整个工具,请在同一设置文件或标志中,将仅含 `Bash` 的条目替换为有范围的规则,例如 `Bash(git push *)`。Claude 会保留 Bash 工具,而 PowerShell 工具会保持关闭,直到您同时设置该变量或添加有范围的 [`PowerShell` 权限规则](https://code.claude.com/docs/zh-CN/permissions#powershell)。

6041 6075 

6042在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中或使用 `--output-format json` 或 `stream-json` 时,Claude Code 将警告写入调试日志而不是 stderr。使用 `--debug` 运行以在 `~/.claude/debug/<session-id>.txt` 处捕获它。在 v2.1.287 之前,Claude Code 以同样的方式关闭 PowerShell 工具,但不打印警告。6076在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,或使用 `--output-format json` 或 `stream-json` 时,Claude Code 会将警告写入调试日志而不是 stderr。使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它。在 v2.1.287 之前,Claude Code 会以相同方式关闭 PowerShell 工具,但不打印警告。

6043 6077 

6044在 v2.1.305 之前,交互式会话也会在启动时在 stderr 上打印该警告。6078在 v2.1.305 之前,交互式会话也会在启动时于 stderr 上打印该警告。

6045 6079 

6046### crossSessionInbound 必须是 accept、hold 或 refuse 之一6080### crossSessionInbound must be one of accept, hold, refuse

6047 6081 

6048某个设置文件将 [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound) 设置为 Claude Code 无法识别的值,例如拼写错误 `"reject"`。警告的第二句取决于哪个文件包含该值;在用户、项目、本地或 `--settings` 文件中,它显示为:6082某个设置文件将 [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound) 设为 Claude Code 无法识别的值,例如拼写错误的 `"reject"`。警告的第二句取决于该值所在的文件;在用户、项目、本地或 `--settings` 文件中,警告为:

6049 6083 

6050```text theme={null}6084```text theme={null}

6051"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.6085"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.

6052```6086```

6053 6087 

6054在[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)中,Claude Code 将无法识别的值视为 `refuse`(最严格的值),警告说明跨会话消息将被拒绝,直到管理员修复它。有关保留行为如何与您的其他设置文件中的值结合,请参阅 [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound)。6088在[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)中,Claude Code 会将无法识别的值视为最严格的值 `refuse`,警告会说明在管理员修复之前,跨会话消息将被拒收。有关暂存行为如何与您其他设置文件中的值组合,请参阅 [`crossSessionInbound`](https://code.claude.com/docs/zh-CN/settings-reference#crosssessioninbound)。

6055 6089 

6056**要做什么:**6090**解决方法:**

6057 6091 

6058* 将该键设置为 `"accept"`、`"hold"` 或 `"refuse"`,或删除它6092* 将该键设为 `"accept"`、`"hold"` 或 `"refuse"`,或将其删除

6059* 当警告命名托管设置时,要求管理员修复该值6093* 当警告指出是托管设置时,请让管理员修复该值

6060 6094 

6061在 v2.1.248 之前,Claude Code 忽略无法识别的值而不警告。6095在 v2.1.248 之前,Claude Code 会忽略无法识别的值而不发出警告。

6062 6096 

6063### ANTHROPIC\_FOUNDRY\_RESOURCE 必须是 Foundry 资源名称6097### ANTHROPIC\_FOUNDRY\_RESOURCE must be a Foundry resource name

6064 6098 

6065您将 [`ANTHROPIC_FOUNDRY_RESOURCE`](https://code.claude.com/docs/zh-CN/env-vars) 设置为了裸 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 资源名称以外的内容,例如端点 URL 或其主机名。Claude Code 在发送请求前拒绝了该值。该消息出现在 Claude 回复的位置,而不是作为启动警告:6099您将 [`ANTHROPIC_FOUNDRY_RESOURCE`](https://code.claude.com/docs/zh-CN/env-vars) 设为了单纯的 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 资源名称以外的内容,例如端点 URL 或其主机名。Claude Code 在发送请求之前拒绝了该值。此消息会出现在 Claude 回复的位置,而不是作为启动警告:

6066 6100 

6067```text theme={null}6101```text theme={null}

6068API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.6102API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.

6069```6103```

6070 6104 

6071**要做什么:**6105**解决方法:**

6072 6106 

6073* 将 `ANTHROPIC_FOUNDRY_RESOURCE` 仅设置为资源名称,然后重启 Claude Code。对于端点 `https://my-resource.services.ai.azure.com/anthropic`,名称为 `my-resource`。6107* 将 `ANTHROPIC_FOUNDRY_RESOURCE` 仅设为资源名称,然后重启 Claude Code。对于端点 `https://my-resource.services.ai.azure.com/anthropic`,名称为 `my-resource`。

6074* 若要改为提供完整的端点 URL,请将 [`ANTHROPIC_FOUNDRY_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 设置为该 URL 并删除 `ANTHROPIC_FOUNDRY_RESOURCE`,然后重启 Claude Code。Claude Code 只接受这两个变量之一。6108* 若要改为提供完整的端点 URL,请将 [`ANTHROPIC_FOUNDRY_BASE_URL`](https://code.claude.com/docs/zh-CN/env-vars) 设为该 URL 并删除 `ANTHROPIC_FOUNDRY_RESOURCE`,然后重启 Claude Code。Claude Code 只接受这两个变量之一。

6075 6109 

6076### 200K 限制未被强制执行6110### The 200K limit isn't enforced

6077 6111 

6078您设置了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](https://code.claude.com/docs/zh-CN/env-vars),这通常使[自动压缩](https://code.claude.com/docs/zh-CN/model-config.md#default-auto-compact-thresholds)将 1M 上下文模型上的会话保持在 200K 窗口内,但没有压缩阈值将此会话限制在 200K 或以下,因此对话可以超过它。6112您设置了 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](https://code.claude.com/docs/zh-CN/env-vars),它通常会让[自动压缩](https://code.claude.com/docs/zh-CN/model-config.md#default-auto-compact-thresholds)将使用 1M 上下文模型的会话限制在 200K 窗口内,但没有任何压缩阈值将此会话限制在 200K 或以下,因此对话可能会超出该限制。

6079 6113 

6080```text theme={null}6114```text theme={null}

6081CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).6115CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).

6082```6116```

6083 6117 

6084Claude Code 会为它识别为具有原生 1M 窗口的每个模型自行强制执行 200K 限制,对于它无法识别的模型 ID,它会在其假设的窗口处压缩。当其他配置使该强制执行失效时,会出现此警告:6118对于 Claude Code 识别为原生具有 1M 窗口的每个模型,Claude Code 会自行强制执行 200K 限制;对于无法识别的模型 ID,它会在其假定的窗口处进行压缩。当其他配置使该强制执行失效时,就会出现此警告:

6085 6119 

6086* 模型 ID 不是 Claude Code 能识别的,例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名,并且您设置了 [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](https://code.claude.com/docs/zh-CN/env-vars) 或使用 [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](https://code.claude.com/docs/zh-CN/env-vars) 将假设的窗口提高到 200K 以上。在这种情况下,消息还会提供 `or update to a Claude Code version that recognizes <model>` 作为补救措施。6120* 模型 ID 不是 Claude Code 能识别的,例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名,并且您设置了 [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](https://code.claude.com/docs/zh-CN/env-vars),或通过 [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](https://code.claude.com/docs/zh-CN/env-vars) 将假定窗口提高到 200K 以上。在这种情况下,消息还会提供 `or update to a Claude Code version that recognizes <model>` 作为补救措施。

6087* 通过 [`ANTHROPIC_BETAS`](https://code.claude.com/docs/zh-CN/env-vars) 或 [`--betas`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 标志请求的 `context-1m` 测试版仍然会在接受该测试版的模型上向 API 请求 1M 窗口,而没有任何机制在 200K 处压缩会话6121* 通过 [`ANTHROPIC_BETAS`](https://code.claude.com/docs/zh-CN/env-vars) 或 [`--betas`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 标志请求的 `context-1m` beta 仍会在接受该 beta 的模型上向 API 请求 1M 窗口,而没有任何机制在 200K 处压缩会话

6088 6122 

6089**要做什么:**6123**解决方法:**

6090 6124 

6091* 设置 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](https://code.claude.com/docs/zh-CN/env-vars),或将 [`autoCompactWindow`](https://code.claude.com/docs/zh-CN/settings-reference#autocompactwindow) 设置为 `200000`,以便自动压缩在 200K 边界处压缩6125* 设置 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](https://code.claude.com/docs/zh-CN/env-vars),或将 [`autoCompactWindow`](https://code.claude.com/docs/zh-CN/settings-reference#autocompactwindow) 设置设为 `200000`,使自动压缩在 200K 边界处压缩

6092* 如果消息命名了此版本无法识别的模型 ID,请运行 `claude update`。能够将该 ID 识别为 1M 上下文模型的版本会强制执行该限制,无需进一步配置。6126* 如果消息指出的是当前版本无法识别的模型 ID,请运行 `claude update`。能将该 ID 识别为 1M 上下文模型的版本会强制执行该限制,无需进一步配置。

6093* 如果您希望会话改为使用模型的完整窗口,请取消设置 `CLAUDE_CODE_DISABLE_1M_CONTEXT`;该警告仅报告 200K 限制未被强制执行6127* 如果您希望会话改为使用模型的完整窗口,请取消设置 `CLAUDE_CODE_DISABLE_1M_CONTEXT`;该警告仅报告 200K 限制未被强制执行

6094 6128 

6095在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中,此警告出现在 stderr 上。在交互式会话、[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中或使用 `--output-format json` 或 `stream-json` 时,它改为写入调试日志。使用 `--debug` 运行以在 `~/.claude/debug/<session-id>.txt` 处捕获它。6129在使用文本输出的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,此警告会出现在 stderr 上。在交互式会话、[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中,或使用 `--output-format json` 或 `stream-json` 时,它会改为写入调试日志。使用 `--debug` 运行可在 `~/.claude/debug/<session-id>.txt` 中捕获它。

6096 6130 

6097在 v2.1.305 之前,交互式会话在启动时在 stderr 上打印该警告。6131在 v2.1.305 之前,交互式会话会在启动时于 stderr 上打印该警告。

6098 6132 

6099### 请求上无法识别的模型 ID6133### Unrecognized model ID on a request

6100 6134 

6101Claude Code 为您的 Claude Code 版本无法识别的模型 ID 发送了请求,并且找不到将该 ID 映射到它能识别的模型的 [`modelOverrides`](https://code.claude.com/docs/zh-CN/model-config#override-model-ids-per-version) 条目。Claude Code 仍然使用您配置的 ID 发送请求,不会退出或切换模型。6135Claude Code 针对您的 Claude Code 版本无法识别的模型 ID 发送了请求,并且没有找到将该 ID 映射到可识别模型的 [`modelOverrides`](https://code.claude.com/docs/zh-CN/model-config#override-model-ids-per-version) 条目。Claude Code 仍会使用您配置的 ID 发送请求,不会退出或切换模型。

6102 6136 

6103```text theme={null}6137```text theme={null}

6104[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}6138[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}

6105```6139```

6106 6140 

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

6108 6142 

6109* `model`:您配置的模型字符串6143* `model`:您配置的模型字符串

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

6111 6145 

6112Claude Code 根据您的运行方式将该行写入以下两个位置之一:6146根据运行方式,Claude Code 会将该行写入以下两个位置之一:

6113 6147 

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

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

6116 6150 

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

6118 6152 

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

6120 6154 

6121**要做什么:**6155**解决方法:**

6122 6156 

6123* 如果您是有意设置该 ID 的,例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名,请在您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中添加一个以该 ID 为值的 [`modelOverrides`](https://code.claude.com/docs/zh-CN/model-config#override-model-ids-per-version) 条目。使用 Anthropic 模型 ID 作为键,而不是诸如 `opus` 的系列别名。对于示例行中的 `my-proxy-model`,添加此条目:6157* 如果您是有意设置该 ID 的,例如 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)别名,请在您的[设置文件](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)中添加一个 [`modelOverrides`](https://code.claude.com/docs/zh-CN/model-config#override-model-ids-per-version) 条目,以该 ID 作为值。请使用 Anthropic 模型 ID 作为键,而不是 `opus` 等系列别名。对于示例行中的 `my-proxy-model`,请添加以下条目:

6124 6158 

6125 ```json theme={null}6159 ```json theme={null}

6126 {6160 {


6130 }6164 }

6131 ```6165 ```

6132 6166 

6133 然后 Claude Code 会将 `my-proxy-model` 视为 `claude-opus-4-6` 并停止写入该行。6167 之后,Claude Code 会将 `my-proxy-model` 视为 `claude-opus-4-6`,并停止写入该行。

6134 6168 

6135* 如果该 ID 命名的模型比您的 Claude Code 版本更新,请运行 `claude update`6169* 如果该 ID 指的是比您的 Claude Code 版本更新的模型,请运行 `claude update`

6136 6170 

6137* 如果该 ID 是拼写错误,请在包含它的[可设置模型的位置](https://code.claude.com/docs/zh-CN/model-config.md#setting-your-model)或[别名变量](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)中修复它。如果 `query_source` 以 `agent:` 开头,请改为在您设置[子代理模型](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)的地方修复它。6171* 如果该 ID 是拼写错误,请在保存它的[可设置模型的位置](https://code.claude.com/docs/zh-CN/model-config.md#setting-your-model)或[别名变量](https://code.claude.com/docs/zh-CN/model-config.md#environment-variables)中修正。如果 `query_source` 以 `agent:` 开头,请改为在设置[子代理模型](https://code.claude.com/docs/zh-CN/sub-agents.md#choose-a-model)的位置修正。

6138 6172 

6139在 v2.1.233 之前,Claude Code 在为无法识别的模型 ID 发送请求时不写入任何行。6173在 v2.1.233 之前,Claude Code 在针对无法识别的模型 ID 发送请求时不会写入任何行。

6140 6174 

6141### 托管锁定下沙箱允许条目被忽略6175### Sandbox allow entries are ignored under a managed lock

6142 6176 

6143`/status` 和 `claude doctor` 中的此警告表示托管设置设置了 [`allowManagedReadPathsOnly`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) 或 [`allowManagedDomainsOnly`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-allowmanageddomainsonly),因此该警告所命名文件中的 [`allowRead`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-filesystem-allowread) 或 [`allowedDomains`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-alloweddomains) 条目不适用:6177`/status` 和 `claude doctor` 中的此警告表示托管设置设置了 [`allowManagedReadPathsOnly`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) 或 [`allowManagedDomainsOnly`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-allowmanageddomainsonly),因此警告所指文件中的 [`allowRead`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-filesystem-allowread) 或 [`allowedDomains`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-alloweddomains) 条目不会生效:

6144 6178 

6145```text wrap theme={null}6179```text wrap theme={null}

6146sandbox.filesystem.allowRead is ignored — managed settings set allowManagedReadPathsOnly, so only allowRead paths from managed settings are honored. The 3 entries in /home/you/.claude/settings.json will NOT apply (see https://code.claude.com/docs/en/settings#sandbox-settings).6180sandbox.filesystem.allowRead is ignored — managed settings set allowManagedReadPathsOnly, so only allowRead paths from managed settings are honored. The 3 entries in /home/you/.claude/settings.json will NOT apply (see https://code.claude.com/docs/en/settings#sandbox-settings).

6147```6181```

6148 6182 

6149对于网络锁定,警告命名 `sandbox.network.allowedDomains` 和 `allowManagedDomainsOnly`,并显示 `only allowed domains (and WebFetch domain rules) from managed settings are honored`。6183对于网络锁定,警告会指出 `sandbox.network.allowedDomains` 和 `allowManagedDomainsOnly`,并说明 `only allowed domains (and WebFetch domain rules) from managed settings are honored`。

6150 6184 

6151**要做什么:**6185**解决方法:**

6152 6186 

6153* 您不必对该警告采取行动6187* 您无需对此警告采取行动

6154* 如果您需要这些路径或域,而您组织的托管设置设置了该锁定,请要求您的管理员将它们添加到这些设置中。在您同时从所命名的文件中删除这些条目之前,警告会一直存在。6188* 如果您需要这些路径或域名,且是组织的托管设置设置了该锁定,请让管理员将它们添加到这些设置中。在您同时从所指文件中删除这些条目之前,警告会一直存在。

6155* 要清除警告,请从所命名的文件中删除这些条目。对于您共享的文件,例如项目的 `.claude/settings.json`,您可以为没有该锁定的团队成员保留这些条目,并让警告继续显示。6189* 要消除警告,请从所指文件中删除这些条目。对于共享的文件(例如项目的 `.claude/settings.json`),您可以为没有该锁定的团队成员保留这些条目,并让警告继续显示。

6156 6190 

6157### Sandbox mask files left behind at write-deny paths6191### Sandbox mask files left behind at write-deny paths

6158 6192 

6159`claude doctor` 和 `/status` 中的此警告列出掩码文件:位于[沙箱](https://code.claude.com/docs/zh-CN/sandboxing.md)拒绝写入的路径上的 0 字节只读占位符文件。当启用了沙箱隔离并打开文件系统隔离时,它会在 Linux 和 WSL2 上出现。在包含这些文件的项目中没有打开任何 Claude Code 会话后,请从 shell 中删除它们。6193`claude doctor` 和 `/status` 中的此警告会列出掩码文件:位于[沙箱](https://code.claude.com/docs/zh-CN/sandboxing.md)拒绝写入的路径上的 0 字节只读占位文件。在 Linux 和 WSL2 上启用沙箱隔离且开启文件系统隔离时会出现此警告。当包含这些文件的项目中没有打开任何 Claude Code 会话时,请从 shell 中删除它们。

6160 6194 

6161沙箱在沙箱中的命令运行时创建占位符,并在命令结束时将其删除。在以下情况下会留下占位符:6195沙箱会在沙箱化命令运行时创建占位文件,并在命令结束时将其删除。在以下情况下,占位文件会残留:

6162 6196 

6163* 会话在命令结束前被终止,例如通过 SIGKILL6197* 会话在命令结束前被终止,例如被 SIGKILL 终止

6164* 您在沙箱中的命令仍在运行时退出了会话,例如在后台运行的命令6198* 您在沙箱化命令仍在运行时退出了会话,例如后台运行的命令

6165 6199 

6166在 `claude doctor` 中,警告显示为:6200在 `claude doctor` 中,警告为:

6167 6201 

6168```text theme={null}6202```text theme={null}

6169- Sandbox mask files left behind at write-deny paths: /home/you/project/.claude/settings.local.json6203- Sandbox mask files left behind at write-deny paths: /home/you/project/.claude/settings.local.json

6170 Fix: A session leaves one where it was killed, or where it exited while a sandboxed command was still running. Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start6204 Fix: A session leaves one where it was killed, or where it exited while a sandboxed command was still running. Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start

6171```6205```

6172 6206 

6173**要做什么:**6207**解决方法:**

6174 6208 

6175* 退出在包含所列文件的项目中打开的每个 Claude Code 会话(包括 `/status` 显示该警告的任何会话),然后在 shell 中操作。另一个会话的沙箱仍在使用的占位符是该会话写入保护的有效组成部分6209* 退出包含所列文件的项目中打开的所有 Claude Code 会话(包括 `/status` 显示该警告的任何会话),然后在 shell 中操作。另一个会话的沙箱仍在使用的占位文件是该会话写入保护中正在生效的一部分

6176* 在 shell 中,使用 `rm` 删除每个列出的文件,如果 `rm` 询问是否删除写保护文件,请确认。警告最多命名三个文件并对其余文件计数,因此删除后请再次运行 `claude doctor`,直到警告不再出现6210* 在 shell 中使用 `rm` 删除列出的每个文件,如果 `rm` 询问是否删除写保护文件,请确认。警告最多列出三个文件并统计其余数量,因此删除后请再次运行 `claude doctor`,直到警告不再出现

6177* 如果您使用"是,不要再问"保存的权限选择没有生效,请在删除占位符后再次保存6211* 如果您通过 "Yes, and don't ask again" 保存的权限选择没有生效,请在删除占位文件后重新保存

6178 6212 

6179在 v2.1.309 之前,该警告显示为 `Stale sandbox mask files left by a killed session`。6213在 v2.1.309 之前,该警告显示为 `Stale sandbox mask files left by a killed session`。

6180 6214 

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

6182 6216 

6183## 回复质量似乎低于预期6217## 回复质量似乎低于预期

6184 6218 

fast-mode.md +32 −30

Details

8 8 

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

10>10>

11> 快速模式处于[研究预览](#research-preview)阶段。该功能、定价和可用性可能会根据反馈而改变。11> Claude Opus 5.5 的快速模式现已可用,Claude Opus 5 和 Claude Opus 4.8 的快速模式目前为[研究预览版](#research-preview)。

12 12 

13快速模式是 Claude Opus 的高速配置,使模型速度提高最多 2.5 倍,但每个令牌的成本更高。当您需要速度进行交互式工作(如快速迭代或实时调试)时,使用 `/fast` 将其打开,当成本比延迟更重要时,将其关闭。13快速模式是 Claude Opus 的高速配置,使模型速度提高最多 2.5 倍,但每个令牌的成本更高。当您需要速度进行交互式工作(如快速迭代或实时调试)时,使用 `/fast` 将其打开,当成本比延迟更重要时,将其关闭。

14 14 


20 20 

21* 使用 `/fast` 在 Claude Code CLI 中切换快速模式。[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)在选定的模型支持快速模式时提供**切换快速模式**命令。Claude Code 将该切换保存到您的 [`fastMode` 设置](#toggle-fast-mode)。21* 使用 `/fast` 在 Claude Code CLI 中切换快速模式。[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)在选定的模型支持快速模式时提供**切换快速模式**命令。Claude Code 将该切换保存到您的 [`fastMode` 设置](#toggle-fast-mode)。

22* 快速模式定价在 Opus 5.5 上为 $8/$40 MTok 输入/输出,在 Opus 5 和 Opus 4.8 上为 $10/$50 MTok 输入/输出。22* 快速模式定价在 Opus 5.5 上为 $8/$40 MTok 输入/输出,在 Opus 5 和 Opus 4.8 上为 $10/$50 MTok 输入/输出。

23* 可供订阅计划(Pro/Max/Team/Enterprise)上的 Claude Code 用户和 Claude 控制台使用。Team 和 Enterprise 组织需要所有者先启用它,Console 组织需要先配置访问权限,两者都在[要求](#requirements)下描述。23* 可供订阅计划(Pro/Max/Team/Enterprise)上的 Claude Code 用户和 Claude 控制台使用。Team 和 Enterprise 组织需要所有者先启用它,Console 组织需要先配置访问权限才能在 Opus 5 或 Opus 4.8 上使用它。[要求](#requirements)对这两者进行了说明。

24* 对于订阅计划(Pro/Max/Team/Enterprise)上的 Claude Code 用户,快速模式仅通过使用额度提供,不包含在订阅速率限制中。24* 对于订阅计划(Pro/Max/Team/Enterprise)上的 Claude Code 用户,快速模式仅通过使用额度提供,不包含在订阅速率限制中。

25 25 

26## 切换快速模式26## 切换快速模式

27 27 

28在 CLI 中,通过以下任一方式切换快速模式:28在 CLI 中,可以通过以下任一方式切换快速模式:

29 29 

30* 运行 `/fast`,按空格键打开或关闭,然后按 Enter 键确认30* 运行 `/fast`,按 Space 切换开启或关闭,然后按 Enter 确认

31* 在您的[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)中设置 `"fastMode": true`31* 在[用户设置文件](https://code.claude.com/docs/zh-CN/settings.md)中设置 `"fastMode": true`

32 32 

33默认情况下,在交互式会话中打开的快速模式在会话之间保持。您可以配置快速模式在每个会话时重置。有关详细信息,请参阅[要求每个会话选择加入](#require-per-session-opt-in)。33默认情况下,在交互式会话中开启的快速模式会跨会话保留。您可以将快速模式配置为每个会话重置。有关详细信息,请参阅[要求按会话选择启用](#require-per-session-opt-in)。

34 34 

35在[云会话](#use-fast-mode-in-cloud-sessions)之外,在[非交互式模式](https://code.claude.com/docs/zh-CN/headless.md)中使用 `-p` 标志,`/fast` 仅在使用快速模式在其 [`--settings`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 值中启动的会话中工作,例如 `claude -p --settings '{"fastMode": true}'`;切换然后仅适用于该会话,不会保存为您的默认值。`-p` 形式需要 Claude Code v2.1.205 或更高版本。在非交互式模式的其他地方,该命令报告快速模式不可用。35在[云端会话](#use-fast-mode-in-cloud-sessions)之外,在使用 `-p` 标志的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下,`/fast` 仅在其 [`--settings`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 值中包含快速模式的会话中有效,例如 `claude -p --settings '{"fastMode": true}'`;此时切换仅适用于该会话,不会保存为您的默认设置。`-p` 形式需要 Claude Code v2.1.205 或更高版本。在非交互模式的其他情况下,该命令会报告快速模式不可用。

36 36 

37您可以在 Claude 工作时运行 `/fast`,Claude Code 会在不等待当前轮次结束的情况下切换快速模式。Claude Code 以其原始速度完成正在运行的轮次,因此速度变化从您的下一轮开始生效。如果您当前的模型不支持快速模式,打开它也会切换您的模型,Claude Code 会在该轮次的下一个请求中使用新模型。37您可以在 Claude 工作时运行 `/fast`,Claude Code 会切换快速模式,而无需等待当前轮次结束。Claude Code 会以原来的速度完成正在运行的轮次,因此速度变化从您的下一轮次开始生效。如果您当前的模型不支持快速模式,开启快速模式还会切换您的模型,Claude Code 会从该轮次中的下一个请求开始使用新模型。

38 38 

39为了获得最佳成本效率,在会话开始时启用快速模式,而不是在对话中途切换。有关详细信息,请参阅[了解成本权衡](#understand-the-cost-tradeoff)。39为获得最佳成本效益,请在会话开始时启用快速模式,而不是在对话中途切换。有关详细信息,请参阅[了解成本权衡](#understand-the-cost-tradeoff)。

40 40 

41启用快速模式时:41启用快速模式时:

42 42 

43* 如果您当前的模型不支持快速模式,Claude Code 会切换到 Opus43* 如果您当前的模型不支持快速模式,Claude Code 会切换到 Opus

44* 您将看到确认消息:"Fast mode ON"44* 您将看到一条确认消息:"Fast mode ON"

45* 快速模式处于活动状态时,提示旁边会出现一个小的 `↯` 图标45* 快速模式处于活动状态时,提示词旁边会出现一个小的 `↯` 图标

46* 随时再次运行 `/fast` 以检查快速模式是否打开或关闭46* 随时再次运行 `/fast` 可检查快速模式是开启还是关闭

47 47 

48Opus 5.5 是 Claude Code v2.1.280 及更高版本中的快速模式默认值。在 v2.1.280 之前,快速模式自 v2.1.219 起默认为 Opus 5。48在 Claude Code v2.1.280 及更高版本中,Opus 5.5 是快速模式的默认模型。在 v2.1.280 之前,从 v2.1.219 起快速模式默认使用 Opus 5。

49 49 

50当您再次使用 `/fast` 禁用快速模式时,您仍然保持在 Opus 上。要切换到不同的模型,请使用 `/model`。50当您再次使用 `/fast` 禁用快速模式时,您仍将使用 Opus。要切换到其他模型,请使用 `/model`。

51 51 

52### 在快速模式打开时切换模型52### 在快速模式开启时切换模型

53 53 

54快速模式在两个方向上都遵循您的模型切换:54快速模式会双向跟随您的模型切换:

55 55 

56* **切换离开**:当您切换到不支持快速模式的模型时,Claude Code 会关闭快速模式。这包括 Opus 4.7;在 v2.1.221 之前,快速模式在切换到 Opus 4.7 后保持打开,API 拒绝了请求。56* **切换离开**:当您切换到不支持快速模式的模型时,Claude Code 会关闭快速模式。这包括 Opus 4.7;在 v2.1.221 之前,切换到 Opus 4.7 后快速模式仍保持开启,API 会拒绝这些请求。

57* **切换回来**:当您保存的快速模式偏好设置为打开时,切换回支持的 Opus 模型会再次打开快速模式,这与新会话默认启动的偏好设置相同。模型切换永远不会为保存的偏好设置为关闭的会话打开快速模式,配置了[每个会话选择加入](#require-per-session-opt-in)后,切换回也不会打开它;运行 `/fast` 以重新启用它。57* **切换回来**:当您保存的快速模式偏好为开启时(新会话默认即从该偏好开始),切换回受支持的 Opus 模型会再次开启快速模式。对于保存的偏好为关闭的会话,模型切换永远不会开启快速模式;如果配置了[按会话选择启用](#require-per-session-opt-in),切换回来也不会开启快速模式;请运行 `/fast` 重新启用。

58 58 

59每当模型切换打开或关闭快速模式时,Claude Code 都会显示 `Fast mode ON` 或 `Fast mode OFF` 确认,`↯` 图标在快速模式打开时出现。无论您使用 `/model`、[`/config model=<model>`](https://code.claude.com/docs/zh-CN/settings) 切换,还是从通过[远程控制](https://code.claude.com/docs/zh-CN/remote-control.md)连接的设备切换,这都适用。59每当模型切换开启或关闭快速模式时,Claude Code 都会显示 `Fast mode ON` 或 `Fast mode OFF` 确认消息,并且在快速模式开启时会出现 `↯` 图标。无论您是使用 `/model`、使用 [`/config model=<model>`](https://code.claude.com/docs/zh-CN/settings) 还是从通过 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 连接的设备进行切换,都是如此。

60 60 

61Claude Code 在模型切换、重新连接或失败的[可用性检查](#use-fast-mode-behind-proxies-and-llm-gateways)后,会将会话的快速模式状态重新发送到通过 Remote Control 连接的设备。61在模型切换、重新连接或[可用性检查](#use-fast-mode-behind-proxies-and-llm-gateways)失败后,Claude Code 会将会话的快速模式状态重新发送到通过 Remote Control 连接的设备。

62 62 

63### 在云会话中使用快速模式63### 在云端会话中使用快速模式

64 64 

65当快速模式在您的账户上可用时,快速模式在[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中工作,无论会话是在 Anthropic 管理的基础设施还是[自托管运行器](https://code.claude.com/docs/zh-CN/self-hosted-environments)上运行。需要会话环境中的 Claude Code v2.1.271 或更高版本。65当您的账户可以使用快速模式时,快速模式可在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中使用,无论会话是在 Anthropic 托管的基础设施上运行还是在[自托管运行器](https://code.claude.com/docs/zh-CN/self-hosted-environments)上运行。需要会话环境中的 Claude Code 为 v2.1.271 或更高版本。

66 66 

67在会话中输入 `/fast on` 以打开快速模式。它仅对该会话保持打开,不会保存为您的默认值。[要求](#requirements)也适用于云会话。67在会话中输入 `/fast on` 以开启快速模式。它仅对该会话保持开启,不会保存为您的默认设置。[要求](#requirements)同样适用于云端会话。

68 68 

69在浏览器中访问 [claude.ai/code](https://claude.ai/code),您也可以从消息框上的模型菜单打开和关闭快速模式。当您的计划包含快速模式且所选模型支持它时,菜单会显示该开关。69在 [claude.ai/code](https://claude.ai/code) 的浏览器中,您还可以从消息框上的模型菜单开启和关闭快速模式。当您的套餐包含快速模式且所选模型支持快速模式时,菜单会显示该开关。

70 70 

71## 了解成本权衡71## 了解成本权衡

72 72 


119 119 

120快速模式需要以下所有条件:120快速模式需要以下所有条件:

121 121 

122* **仅限 Anthropic API 或订阅**:快速模式可通过 Anthropic 控制台 API 和使用使用额度的 Claude 订阅计划获得。它在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude Platform 上不可用。控制台组织还必须[为您的组织配置快速模式访问权限](#enable-fast-mode-for-your-organization)。122* **仅限 Anthropic API 或订阅**:快速模式可通过 Anthropic 控制台 API 和使用使用额度的 Claude 订阅套餐获得。它在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude Platform 上不可用。控制台组织还必须[配置快速模式访问权限](#enable-fast-mode-for-your-organization),才能在 Opus 5 或 Opus 4.8 上使用快速模式。

123* **为订阅计划启用使用额度**:在 Pro、Max、Team 或 Enterprise 计划上,您的账户必须[启用使用额度](https://code.claude.com/docs/zh-CN/costs.md#add-usage-credits-to-your-subscription),这允许在您的计划包含的使用量之外进行计费。在启用之前,`/fast` 显示"Fast mode requires usage credits"。您启用它们的方式取决于您的计划:123* **为订阅计划启用使用额度**:在 Pro、Max、Team 或 Enterprise 计划上,您的账户必须[启用使用额度](https://code.claude.com/docs/zh-CN/costs.md#add-usage-credits-to-your-subscription),这允许在您的计划包含的使用量之外进行计费。在启用之前,`/fast` 显示"Fast mode requires usage credits"。您启用它们的方式取决于您的计划:

124 * 在 Pro 和 Max 上,在 claude.ai 上的[**Settings > Usage**](https://claude.ai/settings/usage)的**Usage credits**部分中启用它们,或运行 `/usage-credits` 来打开该页面。124 * 在 Pro 和 Max 上,在 claude.ai 上的[**Settings > Usage**](https://claude.ai/settings/usage)的**Usage credits**部分中启用它们,或运行 `/usage-credits` 来打开该页面。

125 * 在 Team 和 Enterprise 上,具有计费访问权限的成员在[**Organization settings > Usage**](https://claude.ai/admin-settings/usage)处为组织启用它们,没有访问权限的成员运行 `/usage-credits` 向组织的管理员发送请求。125 * 在 Team 和 Enterprise 上,具有计费访问权限的成员在[**Organization settings > Usage**](https://claude.ai/admin-settings/usage)处为组织启用它们,没有访问权限的成员运行 `/usage-credits` 向组织的管理员发送请求。


129> 快速模式使用直接计入使用额度,即使您的计划上还有剩余使用量。129> 快速模式使用直接计入使用额度,即使您的计划上还有剩余使用量。

130 130 

131* **付费控制台组织**:Claude 控制台账户不使用使用额度,您的组织按令牌为快速模式付费,与其余 API 使用量一起。在控制台的免费 Evaluation 计划上,`/fast` 显示"Fast mode unavailable during evaluation. Please purchase credits."。要清除它,在您的[控制台计费设置](https://platform.claude.com/settings/billing)中购买额度。131* **付费控制台组织**:Claude 控制台账户不使用使用额度,您的组织按令牌为快速模式付费,与其余 API 使用量一起。在控制台的免费 Evaluation 计划上,`/fast` 显示"Fast mode unavailable during evaluation. Please purchase credits."。要清除它,在您的[控制台计费设置](https://platform.claude.com/settings/billing)中购买额度。

132 

133 Opus 5.5 上的快速模式还取决于您的组织的[使用层级](https://platform.claude.com/docs/en/api/rate-limits)。

132* **团队和企业的所有者启用**:快速模式默认对团队和企业组织禁用。所有者必须明确[启用快速模式](#enable-fast-mode-for-your-organization),用户才能访问它。134* **团队和企业的所有者启用**:快速模式默认对团队和企业组织禁用。所有者必须明确[启用快速模式](#enable-fast-mode-for-your-organization),用户才能访问它。

133 135 

134> [!NOTE]136> [!NOTE]


144 146 

145您启用快速模式的位置取决于您的组织使用的产品:147您启用快速模式的位置取决于您的组织使用的产品:

146 148 

147* **控制台**(API 客户):管理员在 [Claude Code 偏好设置](https://platform.claude.com/claude-code/preferences)中启用它。快速模式处于[研究预览](#research-preview)中,因此您的组织还必须在快速模式请求成功之前配置快速模式访问权限。要获得访问权限,请联系您的账户经理或加入等待列表,如[Claude API 上的快速模式](https://platform.claude.com/docs/en/build-with-claude/fast-mode)中所述。149* **控制台**(API 客户):管理员在 [Claude Code 偏好设置](https://platform.claude.com/claude-code/preferences)中启用它

148 

149 没有配置的访问权限,API 会以 429 拒绝每个快速模式请求,Claude Code 会将每个拒绝视为[快速模式速率限制](#handle-rate-limits)。与速率限制的冷却时间不同,拒绝会继续,直到配置了访问权限。

150* **Claude AI**(团队和企业):所有者在[**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code)中启用它150* **Claude AI**(团队和企业):所有者在[**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code)中启用它

151 151 

152使用 Claude Opus 5 或 Claude Opus 4.8 的控制台组织还需要配置访问权限,如 [Claude API 上的快速模式](https://platform.claude.com/docs/en/build-with-claude/fast-mode)中所述。如果没有该访问权限,这些模型上的快速模式请求会触发[快速模式速率限制](#handle-rate-limits),并回退到标准速度,直到配置了访问权限。

153 

152另一个完全禁用快速模式的选项是设置 `CLAUDE_CODE_DISABLE_FAST_MODE=1`。请参阅[环境变量](https://code.claude.com/docs/zh-CN/env-vars.md)。154另一个完全禁用快速模式的选项是设置 `CLAUDE_CODE_DISABLE_FAST_MODE=1`。请参阅[环境变量](https://code.claude.com/docs/zh-CN/env-vars.md)。

153 155 

154### 在代理和 LLM 网关后面使用快速模式156### 在代理和 LLM 网关后面使用快速模式


201 203 

202## 处理速率限制204## 处理速率限制

203 205 

204快速模式与标准 Opus 有单独的速率限制。所有支持的 Opus 模型共享一个快速模式速率限制池:任何模型上的使用都会从相同的限制中扣除。当您达到快速模式速率限制时:206快速模式与标准 Opus 有单独的速率限制;对于 Console 组织,Claude Platform 的[速率限制](https://platform.claude.com/docs/en/api/rate-limits)页面对此进行了说明。当您达到快速模式速率限制时:

205 207 

2061. 快速模式自动回退到标准速度2081. 快速模式自动回退到标准速度

2072. `↯` 图标变灰以指示冷却2092. `↯` 图标变灰以指示冷却


217 219 

218## 研究预览220## 研究预览

219 221 

220快速模式是一个研究预览功能。这意味着:222Claude Opus 5 和 Claude Opus 4.8 的快速模式是一个研究预览功能。这意味着:

221 223 

222* 该功能可能会根据反馈而改变224* 该功能可能会根据反馈而改变

223* 可用性和定价可能会改变225* 可用性和定价可能会改变

Details

90 <tr>90 <tr>

91 <td>[Fast mode](https://code.claude.com/docs/zh-CN/fast-mode.md)</td>91 <td>[Fast mode](https://code.claude.com/docs/zh-CN/fast-mode.md)</td>

92 <td>✓([所有者启用](https://code.claude.com/docs/zh-CN/fast-mode.md#enable-fast-mode-for-your-organization) Team 和 Enterprise)</td>92 <td>✓([所有者启用](https://code.claude.com/docs/zh-CN/fast-mode.md#enable-fast-mode-for-your-organization) Team 和 Enterprise)</td>

93 <td>✓(预配置的组织)</td>93 <td>✓(Opus 5 和 4.8 需要预配置)</td>

94 <td>✗</td>94 <td>✗</td>

95 <td>✗</td>95 <td>✗</td>

96 <td>✗</td>96 <td>✗</td>


285 285 

286**不可用:** 所有[需要 Claude 订阅的功能](#features-that-require-a-claude-subscription)。286**不可用:** 所有[需要 Claude 订阅的功能](#features-that-require-a-claude-subscription)。

287 287 

288[按提供商变化的 CLI 功能](#cli-capabilities-that-vary-by-provider)中的所有内容都可用,除了 [fast mode](https://code.claude.com/docs/zh-CN/fast-mode.md) 需要[预配置访问](https://code.claude.com/docs/zh-CN/fast-mode.md#enable-fast-mode-for-your-organization)。在 claude.ai Team 或 Enterprise 组织中配置的 [Server-managed settings](https://code.claude.com/docs/zh-CN/server-managed-settings.md) 不会作用于使用 Console API 密钥进行身份验证的会话。有关如何覆盖这些会话,请参阅[平台可用性](https://code.claude.com/docs/zh-CN/server-managed-settings.md#platform-availability)。288[按提供商变化的 CLI 功能](#cli-capabilities-that-vary-by-provider)中的所有内容都可用,除了使用 Claude Opus 5 或 Claude Opus 4.8 的 [fast mode](https://code.claude.com/docs/zh-CN/fast-mode.md) 需要[预配置访问](https://code.claude.com/docs/zh-CN/fast-mode.md#enable-fast-mode-for-your-organization)。在 claude.ai Team 或 Enterprise 组织中配置的 [Server-managed settings](https://code.claude.com/docs/zh-CN/server-managed-settings.md) 不会作用于使用 Console API 密钥进行身份验证的会话。有关如何覆盖这些会话,请参阅[平台可用性](https://code.claude.com/docs/zh-CN/server-managed-settings.md#platform-availability)。

289 289 

290**部分支持:**290**部分支持:**

291 291 

github-actions.md +56 −56

Details

19 19 

20您可以通过以下两种方式之一设置 Claude Code GitHub Action:20您可以通过以下两种方式之一设置 Claude Code GitHub Action:

21 21 

22* **快速设置**:从 Claude Code 运行 `/install-github-app`。Claude Code 安装 GitHub App、添加您的身份验证密钥并为您准备工作流拉取请求22* **快速设置**:在 Claude Code 中运行 `/install-github-app`。Claude Code 会为您安装 GitHub App、添加身份验证密钥,并准备好工作流 Pull Request

23* **手动设置**:安装应用、添加密钥并自己将工作流文件复制到您的仓库。当您不在本地运行 Claude Code、命令失败或您想完全控制工作流文件时,请使用此路径23* **手动设置**:自行安装应用、添加密钥,并将工作流文件复制到仓库中。如果您不在本地运行 Claude Code、该命令执行失败,或者您希望完全掌控工作流文件,请使用此方式

24 24 

25对于任一路径,您需要对仓库具有管理员访问权限。25无论采用哪种方式,您都需要拥有该仓库的管理员权限。

26 26 

27### 快速设置27### 快速设置

28 28 

29`/install-github-app` 仅适用于 github.com 仓库。如果您的仓库的 git 远程在 gitlab.com 或 bitbucket.org 上,该命令会打印通知并退出,而不是开始设置。要从 GitLab 管道运行 Claude Code,请参阅 [Claude Code GitLab CI/CD](https://code.claude.com/docs/zh-CN/gitlab-ci-cd.md)。29`/install-github-app` 仅适用于 github.com 仓库。如果仓库的 git 远程地址位于 gitlab.com 或 bitbucket.org,该命令会输出提示并退出,而不会开始设置。如需在 GitLab 流水线中运行 Claude Code,请参阅 [Claude Code GitLab CI/CD](https://code.claude.com/docs/zh-CN/gitlab-ci-cd.md)。

30 30 

31在开始之前,安装 [GitHub CLI](https://cli.github.com) 并使用 `gh auth login` 进行身份验证。Claude Code 会检查它并在缺少时警告您。31开始之前,请安装 [GitHub CLI](https://cli.github.com) 并使用 `gh auth login` 进行身份验证。Claude Code 会检查该工具,如果缺失会发出警告。

32 32 

33在您想要连接的仓库中打开 `claude`,运行 `/install-github-app`,然后按照提示操作。Claude Code 安装 Claude GitHub App,然后为工作流设置身份验证密钥:33在要连接的仓库中打开 `claude`,运行 `/install-github-app`,然后按照提示操作。Claude Code 会安装 Claude GitHub App,然后为工作流设置身份验证密钥:

34 34 

35* 如果 Claude Code 已经有 API 密钥,它会重用该密钥,并提供保留仓库现有 `ANTHROPIC_API_KEY` 密钥的选项(如果已设置)35* 如果 Claude Code 已有 API 密钥,则会复用该密钥;如果仓库已设置 `ANTHROPIC_API_KEY` 密钥,还会询问是否保留现有密钥

36* 否则,选择使用您的 Claude 订阅创建长期令牌或粘贴 API 密钥36* 否则,您可以选择使用 Claude 订阅创建长期令牌,或粘贴 API 密钥

37 37 

38Claude Code 将凭证保存为仓库密钥,对于 API 密钥命名为 `ANTHROPIC_API_KEY`,对于订阅令牌命名为 `CLAUDE_CODE_OAUTH_TOKEN`。38Claude Code 会将凭据保存为仓库密钥:API 密钥命名为 `ANTHROPIC_API_KEY`,订阅令牌命名为 `CLAUDE_CODE_OAUTH_TOKEN`。

39 39 

40Claude Code 然后推送一个包含您选择的工作流文件的分支,已设置为使用该密钥,并在您的浏览器中打开 GitHub,准备创建拉取请求。创建并合并该拉取请求,`@claude` 就可以在仓库中工作。40随后,Claude Code 会推送一个包含您所选工作流文件的分支,这些文件已配置为使用该密钥,并在浏览器中打开 GitHub,其中已准备好待创建的 Pull Request。创建并合并该 Pull Request 后,即可在仓库中使用 `@claude`。

41 41 

42要停止设置过程中途,请按 Esc。已在进行的步骤会完成,之后的步骤不会开始。关闭消息列出了仓库中已发生的事情,例如推送的分支或保存的密钥。42如需在设置中途停止,请按 Esc。正在进行的步骤会完成,后续步骤不会再开始。结束消息会列出仓库中已经发生的操作,例如已推送的分支或已保存的密钥。

43 43 

44如果您选择审查工作流,Claude 会在拉取请求本身上发布每个审查,作为它发现的每个问题的内联评论或在它没有发现任何问题时作为一个摘要评论。Claude 会跳过一些拉取请求,例如草稿。[审查工作流示例](#run-a-skill)使用相同的 skill 并列出它们。在 v2.1.229 之前,Claude 仅将其审查写入工作流运行日志。44如果您选择了审查工作流,Claude 会将每次审查直接发布在 Pull Request 上:对发现的每个问题发布行内评论,若未发现问题则发布一条摘要评论。Claude 会跳过某些 Pull Request,例如草稿。[审查工作流示例](#run-a-skill)使用相同的 skill 并列出了这些情况。在 v2.1.229 之前,Claude 仅将审查结果写入工作流运行日志。

45 45 

46要更新早期版本生成的审查工作流,请执行以下操作之一:46如需更新由早期版本生成的审查工作流,请执行以下任一操作:

47 47 

48* 再次运行 `/install-github-app`。当仓库已经有 `claude.yml` 时,选择**使用最新版本更新工作流文件**。Claude Code 将新的工作流文件副本推送到新分支并打开拉取请求,与首次安装相同。48* 再次运行 `/install-github-app`。当仓库中已有 `claude.yml` 时,选择 **Update workflow file with latest version**。Claude Code 会将最新的工作流文件推送到新分支并打开 Pull Request,与首次安装时相同。

49* 自己将 `--comment` 参数和 `claude_args` 行从[审查工作流示例](#run-a-skill)添加到已检入的文件,这会保留您对其所做的任何其他编辑。49* 自行将 [审查工作流示例](#run-a-skill)中的 `--comment` 参数和 `claude_args` 行添加到已提交的文件中,这样可以保留您对该文件所做的其他修改。

50 50 

51安装 GitHub App 后,Claude Code 会询问是否继续进行 GitHub Actions 设置。选择**暂时跳过**以仅安装 GitHub App。稍后再次运行 `/install-github-app` 以完成工作流和密钥步骤。51安装 GitHub App 后,Claude Code 会询问是否继续进行 GitHub Actions 设置。选择 **Skip for now** 将在仅安装 GitHub App 的状态下停止。之后可再次运行 `/install-github-app` 来完成工作流和密钥步骤。

52 52 

53> [!NOTE]53> [!NOTE]

54>54>

55> * 安装 GitHub App 时,您授予它多个权限。有关完整集合,请参阅 [GitHub App 权限](#github-app-permissions)55> * 安装 GitHub App 时,您会授予它多项权限。完整列表请参阅 [GitHub App 权限](#github-app-permissions)

56> * 快速设置适用于 Claude API 和 Claude 订阅。如果您使用 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry,请参阅[将 Claude Code GitHub Actions 与云提供商一起使用](https://code.claude.com/docs/zh-CN/github-actions-cloud-providers.md)56> * 快速设置适用于 Claude API 和 Claude 订阅。如果您使用 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry,请参阅[在云服务提供商上使用 Claude Code GitHub Actions](https://code.claude.com/docs/zh-CN/github-actions-cloud-providers.md)

57 57 

58### 手动设置58### 手动设置

59 59 

60要在不运行 `/install-github-app` 的情况下配置 Claude Code GitHub Action,请安装应用、添加密钥并自己复制工作流文件:60如需在不运行 `/install-github-app` 的情况下配置 Claude Code GitHub Action,请自行安装应用、添加密钥并复制工作流文件:

61 61 

62**1. 安装 Claude GitHub App**62**1. 安装 Claude GitHub App**

63 63 

64将 [Claude GitHub App](https://github.com/apps/claude) 安装到您的仓库。Claude Code GitHub Action 依赖于应用的三个权限:64将 [Claude GitHub App](https://github.com/apps/claude) 安装到您的仓库。Claude Code GitHub Action 依赖该应用的以下三项权限:

65 65 

66* **Contents**:读写,以便 Claude 可以修改仓库文件66* **Contents**:读写,以便 Claude 可以修改仓库文件

67* **Issues**:读写,以便 Claude 可以响应 issue67* **Issues**:读写,以便 Claude 可以回复 issue

68* **Pull requests**:读写,以便 Claude 可以创建 PR 并推送更改68* **Pull requests**:读写,以便 Claude 可以创建 PR 并推送更改

69 69 

70在安装期间,您还授予其他 Claude 功能使用的权限。有关完整集合,请参阅 [GitHub App 权限](#github-app-permissions)。70安装过程中,您还会授予其他 Claude 功能所使用的权限。完整列表请参阅 [GitHub App 权限](#github-app-permissions)。

71 71 

72**2. 添加身份验证密钥**72**2. 添加身份验证密钥**

73 73 

74根据您的身份验证方式,将以下密钥之一添加到您的仓库。请参阅 GitHub 的[在 GitHub Actions 中使用密钥](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)指南。74根据您的身份验证方式,向仓库添加以下密钥之一。请参阅 GitHub 的[在 GitHub Actions 中使用密钥](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)指南。

75 75 

76* `ANTHROPIC_API_KEY`:来自 [Claude Console](https://platform.claude.com) 的 Claude API 密钥76* `ANTHROPIC_API_KEY`:来自 [Claude Console](https://platform.claude.com) 的 Claude API 密钥

77* `CLAUDE_CODE_OAUTH_TOKEN`:使用您的 Claude 订阅进行身份验证的 OAuth 令牌,在 Pro、Max、Team 和 Enterprise 计划上可用。通过在本地运行 `claude setup-token` 生成一个。请参阅[生成长期令牌](https://code.claude.com/docs/zh-CN/authentication.md#generate-a-long-lived-token)77* `CLAUDE_CODE_OAUTH_TOKEN`:使用您的 Claude 订阅进行身份验证的 OAuth 令牌,适用于 Pro、Max、Team 和 Enterprise 套餐。在本地运行 `claude setup-token` 即可生成。请参阅[生成长期令牌](https://code.claude.com/docs/zh-CN/authentication.md#generate-a-long-lived-token)

78 78 

79在工作流文件中,将密钥传递给匹配的输入:`anthropic_api_key` 用于 API 密钥,或 `claude_code_oauth_token` 用于 OAuth 令牌。79在工作流文件中,将密钥传递给对应的输入:API 密钥使用 `anthropic_api_key`,OAuth 令牌使用 `claude_code_oauth_token`。

80 80 

81**3. 复制工作流文件**81**3. 复制工作流文件**

82 82 

83将 [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) 复制到您的仓库的 `.github/workflows/` 目录。该文件是一个工作的工作流,不仅仅是一个示例。按照提交的方式,Claude 在任何人在 issue 或拉取请求中提及 `@claude` 时响应,使用 `ANTHROPIC_API_KEY` 密钥进行身份验证。如果您改为添加了 `CLAUDE_CODE_OAUTH_TOKEN`,请将工作流的 `anthropic_api_key` 行更改为 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`。83将 [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) 复制到仓库的 `.github/workflows/` 目录中。该文件是一个可直接使用的工作流,而不仅仅是示例。按提交时的状态,每当有人在 issue 或 Pull Request 中提及 `@claude` 时,Claude 都会做出回应,并使用 `ANTHROPIC_API_KEY` 密钥进行身份验证。如果您添加的是 `CLAUDE_CODE_OAUTH_TOKEN`,请将工作流中的 `anthropic_api_key` 行改为 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`。

84 84 

85> [!TIP]85> [!TIP]

86>86>

87> 设置后,通过在 issue 或 PR 评论中标记 `@claude` 来测试 Claude Code GitHub Action。87> 设置完成后,在 issue 或 PR 评论中标记 `@claude` 来测试 Claude Code GitHub Action。

88 88 

89### 为组织设置89### 为组织进行设置

90 90 

91使用快速设置或手动设置,您一次配置一个仓库。要在整个组织中推出 Claude Code GitHub Action:91无论是快速设置还是手动设置,每次只能配置一个仓库。如需在整个组织中推广 Claude Code GitHub Action:

92 92 

93* 在组织级别安装一次 [Claude GitHub App](https://github.com/apps/claude),选择所有仓库或选定列表93* 在组织级别安装一次 [Claude GitHub App](https://github.com/apps/claude),选择所有仓库或指定的仓库列表

94* 将身份验证密钥存储为组织级别的 Actions 密钥,以便每个仓库不需要自己的副本94* 将身份验证密钥存储为组织级别的 Actions 密钥,这样每个仓库就无需单独保存副本

95* 将工作流文件添加到应该运行 Claude Code GitHub Action 的每个仓库,或将作业定义一次作为[可重用工作流](https://docs.github.com/en/actions/using-workflows/reusing-workflows),每个仓库都调用它95* 将工作流文件添加到每个需要运行 Claude Code GitHub Action 的仓库,或将该作业定义为一个[可复用工作流](https://docs.github.com/en/actions/using-workflows/reusing-workflows),供各仓库调用

96 96 

97对于跨仓库共享的密钥,使用来自 [Claude Console](https://platform.claude.com) 的 API 密钥进行身份验证,而不是 OAuth 令牌,因为 OAuth 令牌与运行 `claude setup-token` 的人的订阅相关联。97对于跨仓库共享的密钥,请使用来自 [Claude Console](https://platform.claude.com) 的 API 密钥进行身份验证,而不是 OAuth 令牌,因为 OAuth 令牌与运行 `claude setup-token` 的用户的订阅绑定。

98 98 

99要完全避免存储长期密钥,通过工作负载身份联合进行身份验证,其中 Claude Code GitHub Action 将工作流的 GitHub OpenID Connect (OIDC) 令牌交换为通过 Claude Console 服务账户的 Claude API 访问。设置这些输入:99如需完全避免存储长期密钥,请通过工作负载身份联合进行身份验证:Claude Code GitHub Action 会通过 Claude Console 服务账号,将工作流的 GitHub OpenID Connect (OIDC) 令牌交换为 Claude API 访问权限。请设置以下输入:

100 100 

101* `anthropic_federation_rule_id`:联合规则 ID,`fdrl_...`101* `anthropic_federation_rule_id`:联合规则 ID,`fdrl_...`

102* `anthropic_organization_id`:您的 Anthropic 组织 ID102* `anthropic_organization_id`:您的 Anthropic 组织 ID

103* `anthropic_service_account_id`:服务账户 ID,`svac_...`。可选,因为您在 Console 中创建的联合规则已经针对服务账户103* `anthropic_service_account_id`:服务账号 ID,`svac_...`。可选,因为您在 Console 中创建的联合规则已指向某个服务账号

104* `anthropic_workspace_id`:工作区 ID,`wrkspc_...`。当联合规则针对单个工作区时可选104* `anthropic_workspace_id`:工作区 ID,`wrkspc_...`。当联合规则指向单个工作区时为可选

105 105 

106授予工作流 `id-token: write` 权限,Claude Code GitHub Action 需要它来进行联合交换,即使您传递自己的 `github_token`。有关 Console 端配置,请参阅 [Claude Code GitHub Action 的设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)。106为工作流授予 `id-token: write` 权限。即使您传入了自己的 `github_token`,Claude Code GitHub Action 也需要此权限来完成联合交换。Console 端的配置请参阅 [Claude Code GitHub Action 设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)。

107 107 

108有关安全审查中的数据处理和保留问题,请参阅[数据使用](https://code.claude.com/docs/zh-CN/data-usage.md)和[安全](https://code.claude.com/docs/zh-CN/security.md)。108关于安全审查中涉及的数据处理和保留问题,请参阅[数据使用](https://code.claude.com/docs/zh-CN/data-usage.md)和[安全](https://code.claude.com/docs/zh-CN/security.md)。

109 109 

110### 卸载110### 卸载

111 111 

112要删除 Claude Code GitHub Action,请撤销适用于您的安装的每个设置部分:112如需移除 Claude Code GitHub Action,请撤销您的安装中适用的每一项设置:

113 113 

114* **工作流文件**:从 `.github/workflows/` 中删除使用 `anthropics/claude-code-action` 的工作流。如果您使用了快速设置,请查找 `claude.yml`,如果您选择了审查工作流,请查找 `claude-code-review.yml`。删除工作流后,Claude Code GitHub Action 不再运行114* **工作流文件**:从 `.github/workflows/` 中删除使用 `anthropics/claude-code-action` 的工作流。如果您使用的是快速设置,请查找 `claude.yml`,如果选择了审查工作流,还需查找 `claude-code-review.yml`。删除工作流后,Claude Code GitHub Action 将不再运行

115* **密钥**:从仓库中删除 `ANTHROPIC_API_KEY` 或 `CLAUDE_CODE_OAUTH_TOKEN` 密钥,如果您[跨仓库共享它](#set-up-for-an-organization),也从组织级别的 Actions 密钥中删除。如果您删除密钥,它持有的凭证保持有效。要完全停用 API 密钥,也在 [Claude Console](https://platform.claude.com) 中删除密钥115* **密钥**:从仓库中删除 `ANTHROPIC_API_KEY` 或 `CLAUDE_CODE_OAUTH_TOKEN` 密钥;如果您已[跨仓库共享该密钥](#set-up-for-an-organization),还需从组织级别的 Actions 密钥中删除。删除密钥后,其中保存的凭据仍然有效。如需彻底停用 API 密钥,还需在 [Claude Console](https://platform.claude.com) 中删除该密钥

116* **GitHub App**:在您的仓库或组织设置中的 GitHub Apps 下卸载 Claude GitHub App,但仅当您不将其用于另一个 Claude 功能(如 Code Review 或 web auto-fix)时116* **GitHub App**:在仓库或组织设置的 GitHub Apps 下卸载 Claude GitHub App,但前提是您没有将其用于其他 Claude 功能,例如 Code Review 或网页版自动修复

117 117 

118如果您配置了[云提供商](https://code.claude.com/docs/zh-CN/github-actions-cloud-providers.md),也删除提供商密钥,例如 `AWS_ROLE_TO_ASSUME`、`GCP_*` 密钥或 `AZURE_*` 密钥,并卸载自定义 GitHub App 及其 `APP_ID` 和 `APP_PRIVATE_KEY` 密钥。118如果您配置了[云服务提供商](https://code.claude.com/docs/zh-CN/github-actions-cloud-providers.md),还需删除提供商密钥,例如 `AWS_ROLE_TO_ASSUME`、`GCP_*` 密钥或 `AZURE_*` 密钥,并卸载自定义 GitHub App 及其 `APP_ID` 和 `APP_PRIVATE_KEY` 密钥。

119 119 

120### GitHub App 权限120### GitHub App 权限

121 121 

122[Claude GitHub App](https://github.com/apps/claude) 由与 GitHub 集成的每个 Claude 功能共享,包括 Claude Code GitHub Action、[Code Review](https://code.claude.com/docs/zh-CN/code-review.md) 和 [Claude Code on the web](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#auto-fix-pull-requests) 上的 auto-fix。GitHub App 有一个覆盖其所有功能的单一权限集,因此该集包括 Claude Code GitHub Action 不使用的一些权限。122[Claude GitHub App](https://github.com/apps/claude) 由所有与 GitHub 集成的 Claude 功能共享,包括 Claude Code GitHub Action、[Code Review](https://code.claude.com/docs/zh-CN/code-review.md) 以及云端会话中的 [Pull Request 自动修复](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#auto-fix-pull-requests)。一个 GitHub App 只有一套涵盖其所有功能的权限,因此其中包含一些 Claude Code GitHub Action 并不使用的权限。

123 123 

124安装应用时,您授予以下权限:124安装该应用时,您会授予以下权限:

125 125 

126| 权限 | 访问 |126| 权限 | 访问级别 |

127| - | - |127| - | - |

128| Actions | 读写 |128| Actions | 读写 |

129| Administration | 读 |129| Administration | 读取 |

130| Checks | 读写 |130| Checks | 读写 |

131| Contents | 读写 |131| Contents | 读写 |

132| Discussions | 读写 |132| Discussions | 读写 |

133| Issues | 读写 |133| Issues | 读写 |

134| Members | 读 |134| Members | 读取 |

135| Merge queues | 读 |135| Merge queues | 读取 |

136| Metadata | 读 |136| Metadata | 读取 |

137| Pull requests | 读写 |137| Pull requests | 读写 |

138| Repository hooks | 读写 |138| Repository hooks | 读写 |

139| Statuses | 读 |139| Statuses | 读取 |

140| Workflows | 读写 |140| Workflows | 读写 |

141 141 

142权限集也可以在使用它的功能之前更改。当应用请求它之前没有的权限时,GitHub 会提示账户所有者批准它,对于组织安装则提示组织所有者,安装保持其旧权限直到他们这样做。例如,当 Actions 访问从读更改为写时,应用可以重新运行工作流而不仅仅查看运行和日志,因此 GitHub 要求所有者批准更改。142权限集也可能先于使用这些权限的功能而发生变化。当应用请求之前没有的权限时,GitHub 会提示账号所有者(对于组织安装则为组织所有者)进行批准,在其批准之前,安装将保留原有权限。例如,当 Actions 访问权限从读取变为读写时,应用将能够重新运行工作流,而不仅仅是查看运行记录和日志,因此 GitHub 会请求所有者批准此更改。

143 143 

144安装应用时,您接受其完整权限集。GitHub 不允许您接受子集。如果您的组织仅需要 Claude Code GitHub Action 使用的权限,请按照 [Claude Code GitHub Action 的设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)创建一个具有 Contents、Issues 和 Pull requests 的自定义 GitHub App。自定义应用仅覆盖 Claude Code GitHub Action。Code Review 和 web auto-fix 仍然需要官方应用。144安装该应用即表示您接受其完整的权限集。GitHub 不允许只接受其中一部分。如果您的组织要求仅授予 Claude Code GitHub Action 所使用的权限,请按照 [Claude Code GitHub Action 设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)创建一个仅包含 Contents、Issues 和 Pull requests 权限的自定义 GitHub App。自定义应用仅适用于 Claude Code GitHub Action。Code Review 和网页版自动修复仍需使用官方应用。

145 145 

146有关 Claude Code GitHub Action 如何限制 Claude 对这些权限的操作的详细信息,请参阅[安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。146关于 Claude Code GitHub Action 如何限制 Claude 使用这些权限的详细信息,请参阅[安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。

147 147 

148## 交互和自动化模式148## 交互和自动化模式

149 149 


241 - uses: anthropics/claude-code-action@v1241 - uses: anthropics/claude-code-action@v1

242 with:242 with:

243 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}243 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

244 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"244 plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"

245 plugins: "code-review@claude-code-plugins"245 plugins: "code-review@claude-plugins-official"

246 prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"246 prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

247 claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'247 claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

248```248```

Details

221 221 

222如果审查或 Anthropic 托管的云会话超时,您的 GHES 实例可能无法从 Anthropic 基础设施访问。确认您的防火墙允许来自 Anthropic 的 [出站 IP 地址](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) 的入站连接。[自托管环境](https://code.claude.com/docs/zh-CN/self-hosted-environments) 中的会话从您的网络内部访问 GHES,因此当其中一个无法克隆时,请改为检查运行器自己的网络路径。对于存储库选择器和其他托管的会话前流程,请参阅 [网络要求](#network-requirements)。222如果审查或 Anthropic 托管的云会话超时,您的 GHES 实例可能无法从 Anthropic 基础设施访问。确认您的防火墙允许来自 Anthropic 的 [出站 IP 地址](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) 的入站连接。[自托管环境](https://code.claude.com/docs/zh-CN/self-hosted-environments) 中的会话从您的网络内部访问 GHES,因此当其中一个无法克隆时,请改为检查运行器自己的网络路径。对于存储库选择器和其他托管的会话前流程,请参阅 [网络要求](#network-requirements)。

223 223 

224### 连接测试通过但第二项测试失败

225 

226第二项测试以 Anthropic 托管的云端会话的方式连接到您的 GHES 实例。根据您看到的消息,确定应检查防火墙还是重试:

227 

228* **`Connection test passed, but a second test failed.`**:如果您的实例位于防火墙之后,请允许 Anthropic 的所有 [出站 IP 地址](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses),因为即使防火墙阻止了其中部分地址,连接测试也可能通过。您也可以在几分钟后重试。

229* **`Connection test passed, but a second test could not run.`**:请在几分钟后重试。

230 

231要再次测试,请在 [**Organization settings > Git providers**](https://claude.ai/admin-settings/source-control#github-enterprise) 中打开该连接的 **More options** 菜单,然后选择 **Test connection**。

232 

224### 会话启动失败,显示 `Unable to get organization UUID`233### 会话启动失败,显示 `Unable to get organization UUID`

225 234 

226Claude Code 无法从您的凭据中读取 claude.ai 组织。使用 `/login` 登录,使用您的 Team 或 Enterprise 组织中的账户,因为 GitHub Enterprise Server 支持仅限于这些计划。有关原因和此状态产生的其他消息,请参阅 [Unable to get organization UUID](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#unable-to-get-organization-uuid)。235Claude Code 无法从您的凭据中读取 claude.ai 组织。使用 `/login` 登录,使用您的 Team 或 Enterprise 组织中的账户,因为 GitHub Enterprise Server 支持仅限于这些计划。有关原因和此状态产生的其他消息,请参阅 [Unable to get organization UUID](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#unable-to-get-organization-uuid)。

hooks-guide.md +75 −75

Details

73 73 

74按 `Esc` 返回 CLI。按 `Shift+Tab` 直到状态栏显示 `⏸ manual mode on`,要求 Claude 做需要权限的事情,然后切换离开终端。您应该会收到桌面通知。74按 `Esc` 返回 CLI。按 `Shift+Tab` 直到状态栏显示 `⏸ manual mode on`,要求 Claude 做需要权限的事情,然后切换离开终端。您应该会收到桌面通知。

75 75 

76## 你可以自动化什么76## 可以自动化的内容

77 77 

78Hooks 让你在 Claude Code 生命周期中的关键点运行代码:编辑后格式化文件、在执行前阻止命令、在 Claude 需要输入时发送通知、在会话开始时注入上下文等。有关完整的 hook 事件列表,请参阅 [Hooks 参考](https://code.claude.com/docs/zh-CN/hooks.md#hook-lifecycle)。78hook 让您可以在 Claude Code 生命周期的关键节点运行代码:在编辑后格式化文件、在命令执行前阻止命令、在 Claude 需要输入时发送通知、在会话开始时注入上下文,等等。有关 hook 事件的完整列表,请参阅 [Hooks 参考](https://code.claude.com/docs/zh-CN/hooks.md#hook-lifecycle)。

79 79 

80每个示例都包含一个现成的配置块,你可以将其添加到 [设置文件](#configure-hook-location)。80每个示例都包含一个可直接使用的配置块,您可以将其添加到[设置文件](#configure-hook-location)中。

81 81 

82有关运行单独模型审查并将发现反馈回会话的 hooks 的生产示例,请参阅 [`security-guidance` 插件如何与 Claude Code 集成](https://code.claude.com/docs/zh-CN/security-guidance#how-the-plugin-integrates-with-claude-code)。82有关运行独立模型审查并将发现结果反馈回会话的 hook 的生产示例,请参阅 [`security-guidance` 插件如何与 Claude Code 集成](https://code.claude.com/docs/zh-CN/security-guidance#how-the-plugin-integrates-with-claude-code)。

83 83 

84### 在 Claude 需要输入时获得通知84### 在 Claude 需要输入时收到通知

85 85 

86每当 Claude 完成工作并需要你的输入时获得桌面通知,这样你可以切换到其他任务而无需检查终端。86每当 Claude 完成工作并需要您输入时,都会收到桌面通知,这样您就可以切换到其他任务,而无需时刻查看终端。

87 87 

88此 hook 使用 `Notification` 事件,Claude Code 会在 Claude 等待输入或权限时触发该事件。请参阅[每个通知类型何时触发](https://code.claude.com/docs/zh-CN/hooks.md#notification)以了解确切的时间。88此 hook 使用 `Notification` 事件,Claude Code 会在 Claude 等待输入或权限时触发该事件。有关确切的触发时机,请参阅[各通知类型的触发时机](https://code.claude.com/docs/zh-CN/hooks.md#notification)。

89 89 

90下面的每个选项卡使用平台的原生通知命令。将其添加到 `~/.claude/settings.json`:90下面的每个选项卡都使用该平台的原生通知命令。将以下内容添加到 `~/.claude/settings.json`:

91 91 

92**macOS**92**macOS**

93 93 


109}109}

110```110```

111 111 

112> **如果没有通知出现**112> **如果没有出现通知**

113>113>

114> `osascript` 通过内置的 Script Editor 应用程序路由通知。如果 Script Editor 没有通知权限,命令会静默失败,macOS 也不会提示您授予该权限。114> `osascript` 通过内置的“脚本编辑器”应用发送通知。如果“脚本编辑器”没有通知权限,该命令会静默失败,并且 macOS 不会提示您授予权限。

115>115>

116> 在 Terminal 中运行一次以下命令,使 Script Editor 出现在您的通知设置中:116> 在终端中运行一次以下命令,使“脚本编辑器”出现在通知设置中:

117>117>

118> ```bash theme={null}118> ```bash theme={null}

119> osascript -e 'display notification "test"'119> osascript -e 'display notification "test"'

120> ```120> ```

121>121>

122> 现在还不会出现任何内容。打开 **System Settings > Notifications**,在列表中找到 **Script Editor**,并打开 **Allow Notifications**。再次运行该命令以确认测试通知出现。122> 此时还不会显示任何内容。打开 **System Settings > Notifications**,在列表中找到 **Script Editor**,然后打开 **Allow Notifications**。再次运行该命令,确认测试通知出现。

123 123 

124**Linux**124**Linux**

125 125 


141}141}

142```142```

143 143 

144> **如果没有通知出现**144> **如果没有出现通知**

145>145>

146> `notify-send` 需要一个桌面通知守护程序,无头服务器、SSH 会话和大多数容器都没有。首先直接测试该命令:146> `notify-send` 需要桌面通知守护进程,而无头服务器、SSH 会话和大多数容器都没有该进程。请先直接测试该命令:

147>147>

148> ```bash theme={null}148> ```bash theme={null}

149> notify-send 'Claude Code' 'test'149> notify-send 'Claude Code' 'test'

150> ```150> ```

151>151>

152> 如果找不到该命令,请在 Debian 和 Ubuntu 上安装 `libnotify-bin` 包,或安装你的发行版的等效包。152> 如果找不到该命令,请在 Debian 和 Ubuntu 上安装 `libnotify-bin` 软件包,或安装您所用发行版中的等效软件包。

153 153 

154**Windows (PowerShell)**154**Windows (PowerShell)**

155 155 


171}171}

172```172```

173 173 

174> **如果没有对话框出现**174> **如果没有出现对话框**

175>175>

176> 此命令打开一个对话框而不是屏幕角落的通知,因此对话框可能会在您的终端窗口后面打开。首先在 PowerShell 中直接测试该命令。176> 此命令打开的是一个对话框,而不是屏幕角落的通知,因此该对话框可能会在终端窗口后面打开。请先在 PowerShell 中直接测试该命令。

177>177>

178> 如果您在 WSL 中运行 Claude Code,`powershell.exe` 必须通过 Windows 互操作在您的 `PATH` 上可用。178> 如果您在 WSL 中运行 Claude Code,则 `powershell.exe` 必须能够通过 Windows 互操作在您的 `PATH` 中使用。

179 179 

180空的 `matcher` 对所有通知类型触发。要仅在特定事件上触发,请将其设置为以下值之一:180空的 `matcher` 会对所有通知类型触发。若只想在特定事件时触发,请将其设置为以下值之一:

181 181 

182| Matcher | 触发时机 |182| 匹配器 | 触发时机 |

183| :- | :- |183| :- | :- |

184| `permission_prompt` | Claude 需要你批准工具使用或沙箱命令的[网络请求](https://code.claude.com/docs/zh-CN/sandboxing.md#network-isolation),且提示已等待约六秒 |184| `permission_prompt` | Claude 需要您批准某次工具使用或某个沙箱命令的[网络请求](https://code.claude.com/docs/zh-CN/sandboxing.md#network-isolation),且该提示已等待约六秒 |

185| `idle_prompt` | Claude 完成响应约 60 秒前,且你自那以后没有输入 |185| `idle_prompt` | Claude 大约 60 秒前已完成回复,且您此后一直没有输入 |

186| `auth_success` | 身份验证完成 |186| `auth_success` | 身份验证完成 |

187| `elicitation_dialog` | MCP 服务器打开引导表单,且你约六秒内没有输入 |187| `elicitation_dialog` | MCP 服务器打开了一个信息征询表单,且您约六秒没有输入 |

188| `elicitation_url_dialog` | MCP 服务器要求你打开浏览器 URL,且你约六秒内没有输入 |188| `elicitation_url_dialog` | MCP 服务器要求您在浏览器中打开某个 URL,且您约六秒没有输入 |

189| `elicitation_complete` | MCP 服务器报告[URL 模式引导](https://code.claude.com/docs/zh-CN/hooks.md#elicitation-input)已完成 |189| `elicitation_complete` | MCP 服务器报告某个 [URL 模式信息征询](https://code.claude.com/docs/zh-CN/hooks.md#elicitation-input)已完成 |

190| `elicitation_response` | MCP 引导响应被发送回服务器 |190| `elicitation_response` | MCP 信息征询的响应被发回服务器 |

191| `agent_needs_input` | 后台会话开始等待你的输入,同时 [agent view](https://code.claude.com/docs/zh-CN/agent-view.md) 打开。也在终端会话显示你一个[代理团队队友的终端设置问题](https://code.claude.com/docs/zh-CN/agent-teams.md#choose-a-display-mode)或自动模式的[分类器请求费用](https://code.claude.com/docs/zh-CN/auto-mode-classifier-billing.md)通知时触发,且你约六秒内没有输入 |191| `agent_needs_input` | 在 [Agent 视图](https://code.claude.com/docs/zh-CN/agent-view.md)打开时,某个后台会话开始等待您的输入。当终端会话向您显示 [agent team 队友的终端设置问题](https://code.claude.com/docs/zh-CN/agent-teams.md#choose-a-display-mode)或自动模式关于[分类器请求费用](https://code.claude.com/docs/zh-CN/auto-mode-classifier-billing.md)的通知,且您约六秒没有输入时,也会触发 |

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

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

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

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

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

197 197 

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

199 199 

200`quota_auto_resume_fired`、`quota_auto_resume_stale` 和 `quota_auto_resume_disabled` 匹配器需要 Claude Code v2.1.234 或更高版本。200`quota_auto_resume_fired`、`quota_auto_resume_stale` 和 `quota_auto_resume_disabled` 匹配器需要 Claude Code v2.1.234 或更高版本。

201 201 

202在终端会话中,沙箱命令的网络请求的 `permission_prompt` 需要 Claude Code v2.1.246 或更高版本。202在终端会话中,针对沙箱命令网络请求的 `permission_prompt` 需要 Claude Code v2.1.246 或更高版本。

203 203 

204队友的终端设置问题的 `agent_needs_input` 需要 Claude Code v2.1.248 或更高版本。204针对队友终端设置问题的 `agent_needs_input` 需要 Claude Code v2.1.248 或更高版本。

205 205 

206在 Claude Code 输入框中输入 `/hooks`,并确认该 hook 出现在 `Notification` 下。206在 Claude Code 输入框中键入 `/hooks`,确认该 hook 出现在 `Notification` 下。

207 207 

208### 编辑后自动格式化代码208### 编辑后自动格式化代码

209 209 

210在 Claude 编辑的每个文件上自动运行 [Prettier](https://prettier.io/),以便格式保持一致而无需手动干预。210对 Claude 编辑的每个文件自动运行 [Prettier](https://prettier.io/),从而无需手动干预即可保持格式一致。

211 211 

212此 hook 使用带有 `Edit|Write` 匹配器的 `PostToolUse` 事件,因此它仅在文件编辑工具之后运行。该命令使用 [`jq`](https://jqlang.org/) 提取编辑的文件路径并将其传递给 Prettier。将其添加到项目根目录中的 `.claude/settings.json`:212此 hook 使用带有 `Edit|Write` 匹配器的 `PostToolUse` 事件,因此仅在文件编辑工具之后运行。该命令使用 [`jq`](https://jqlang.org/) 提取被编辑文件的路径,并将其传递给 Prettier。将以下内容添加到项目根目录中的 `.claude/settings.json`:

213 213 

214```json theme={null}214```json theme={null}

215{215{


229}229}

230```230```

231 231 

232要测试 hook,请要求 Claude 向 JavaScript 文件添加一行带有单引号字符串的代码,然后打开该文件:使用 Prettier 的默认设置,hook 会将它们重写为双引号。232要测试该 hook,请让 Claude 向某个 JavaScript 文件添加一行包含单引号字符串的代码,然后打开该文件:在 Prettier 的默认设置下,该 hook 会将它们改写为双引号。

233 233 

234当 hook 成功时,Claude Code 在对话中不显示任何内容。要确认 hook 已运行,请检查编辑的文件是否已重新格式化,或参阅[检查 hook 执行了什么](#check-what-a-hook-did)。234hook 成功执行时,Claude Code 不会在对话中显示任何内容。要确认 hook 已运行,请检查被编辑的文件是否已重新格式化,或参阅[检查 hook 执行了什么](#check-what-a-hook-did)。

235 235 

236要重新格式化特定文件,无论它如何更改,包括当 `Bash` 命令重写它时,请改用 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged) hook。236若要在特定文件发生任何变更时(包括被 `Bash` 命令改写时)重新格式化该文件,请改用 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged) hook。

237 237 

238> [!NOTE]238> [!NOTE]

239>239>

240> 本页上的 Bash 示例使用 `jq` 进行 JSON 解析。使用 `brew install jq`(macOS)、`apt-get install jq`(Debian 和 Ubuntu)安装它,或参阅 [`jq` 下载](https://jqlang.org/download/)。240> 本页的 Bash 示例使用 `jq` 解析 JSON。在 macOS 上使用 `brew install jq` 安装,在 Debian 和 Ubuntu 上使用 `apt-get install jq` 安装,或参阅 [`jq` 下载](https://jqlang.org/download/)。

241 241 

242### 阻止对受保护文件的编辑242### 阻止编辑受保护的文件

243 243 

244防止 Claude 修改敏感文件,如 `.env`、`package-lock.json` 或 `.git/` 中的任何内容。Claude 会收到解释编辑被阻止原因的反馈,因此它可以调整其方法。244防止 Claude 修改敏感文件,例如 `.env`、`package-lock.json` 或 `.git/` 中的任何内容。Claude 会收到说明编辑被阻止原因的反馈,从而可以调整其做法。

245 245 

246此示例使用 hook 调用的单独脚本文件。该脚本根据受保护模式列表检查目标文件路径,并以代码 2 退出以阻止编辑。246此示例使用一个由 hook 调用的独立脚本文件。该脚本将目标文件路径与受保护模式列表进行比对,并以退出码 2 退出以阻止编辑。

247 247 

248**1. 创建 hook 脚本**248**1. 创建 hook 脚本**

249 249 

250将其保存到 `.claude/hooks/protect-files.sh`:250将以下内容保存到 `.claude/hooks/protect-files.sh`:

251 251 

252```bash theme={null}252```bash theme={null}

253#!/bin/bash253#!/bin/bash


271exit 0271exit 0

272```272```

273 273 

274**2. 使脚本可执行(macOS 和 Linux)**274**2. 在 macOS 和 Linux 上使脚本可执行**

275 275 

276Hook 脚本必须可执行才能让 Claude Code 运行它们:276hook 脚本必须具有可执行权限,Claude Code 才能运行它们:

277 277 

278```bash theme={null}278```bash theme={null}

279chmod +x .claude/hooks/protect-files.sh279chmod +x .claude/hooks/protect-files.sh


281 281 

282**3. 注册 hook**282**3. 注册 hook**

283 283 

284将 `PreToolUse` hook 添加到 `.claude/settings.json`,在任何 `Edit` 或 `Write` 工具调用之前运行脚本:284向 `.claude/settings.json` 添加一个 `PreToolUse` hook,在任何 `Edit` 或 `Write` 工具调用之前运行该脚本:

285 285 

286```json theme={null}286```json theme={null}

287{287{


303 303 

304**4. 测试 hook**304**4. 测试 hook**

305 305 

306要求 Claude 向你的 `.env` 文件添加注释。Claude Code 在它运行前阻止编辑,并将脚本的 `Blocked:` 消息作为反馈传递给 Claude。306让 Claude 向您的 `.env` 文件添加一条注释。Claude Code 会在编辑执行前将其阻止,并将脚本的 `Blocked:` 消息作为反馈传递给 Claude。

307 307 

308### 压缩后重新注入上下文308### 上下文压缩后重新注入上下文

309 309 

310当 Claude 的上下文窗口填满时,压缩会总结对话以释放空间。这可能会丢失重要细节。使用带有 `compact` 匹配器的 `SessionStart` hook 在每次压缩后重新注入关键上下文。310当 Claude 的上下文窗口填满时,压缩会总结对话以释放空间。这可能会丢失重要细节。使用带有 `compact` 匹配器的 `SessionStart` hook,在每次压缩后重新注入关键上下文。

311 311 

312Claude Code 将你的命令写入 stdout 的任何纯文本添加到 Claude 的上下文中。此示例提醒 Claude 项目约定和最近的工作。将其添加到项目根目录中的 `.claude/settings.json`:312Claude Code 会将您的命令写入 stdout 的纯文本添加到 Claude 的上下文中。此示例提醒 Claude 项目约定和近期工作。将以下内容添加到项目根目录中的 `.claude/settings.json`:

313 313 

314```json theme={null}314```json theme={null}

315{315{


329}329}

330```330```

331 331 

332你可以用任何产生动态输出的命令替换 `echo`,如 `git log --oneline -5` 来显示最近的提交。有关在每个会话开始时注入上下文,请考虑改用 [CLAUDE.md](https://code.claude.com/docs/zh-CN/memory.md)。有关环境变量,请参阅参考中的 [`CLAUDE_ENV_FILE`](https://code.claude.com/docs/zh-CN/hooks#persist-environment-variables)。332您可以将 `echo` 替换为任何产生动态输出的命令,例如使用 `git log --oneline -5` 显示最近的提交。若要在每次会话开始时注入上下文,请考虑改用 [CLAUDE.md](https://code.claude.com/docs/zh-CN/memory.md)。有关环境变量,请参阅参考中的 [`CLAUDE_ENV_FILE`](https://code.claude.com/docs/zh-CN/hooks#persist-environment-variables)。

333 333 

334### 审计配置更改334### 审计配置变更

335 335 

336跟踪会话期间设置或 skills 文件何时更改。`ConfigChange` 事件在外部进程或编辑器修改配置文件时触发,因此你可以记录更改以进行合规性检查或阻止未授权的修改。336跟踪会话期间设置文件或 skill 文件何时发生变更。当外部进程或编辑器修改配置文件时,会触发 `ConfigChange` 事件,因此您可以记录变更以满足合规要求,或阻止未经授权的修改。

337 337 

338此示例将每个更改附加到审计日志。将其添加到 `~/.claude/settings.json`:338此示例将每次变更追加到审计日志中。将以下内容添加到 `~/.claude/settings.json`:

339 339 

340```json theme={null}340```json theme={null}

341{341{


355}355}

356```356```

357 357 

358匹配器按配置类型过滤:`user_settings`、`project_settings`、`local_settings`、`policy_settings` 或 `skills`。要阻止更改生效,以代码 2 退出或返回 `{"decision": "block"}`。有关完整的输入架构,请参阅 [ConfigChange 参考](https://code.claude.com/docs/zh-CN/hooks.md#configchange)。358匹配器按配置类型进行筛选:`user_settings`、`project_settings`、`local_settings`、`policy_settings` 或 `skills`。若要阻止变更生效,请以退出码 2 退出或返回 `{"decision": "block"}`。有关完整的输入 schema,请参阅 [ConfigChange 参考](https://code.claude.com/docs/zh-CN/hooks.md#configchange)。

359 359 

360要确认 hook 记录更改,请在会话运行时在另一个编辑器中编辑设置文件,然后打开 `~/claude-config-audit.log`:hook 为每个更改附加一个 JSON 行,包含时间戳、源和文件路径。360要确认该 hook 会记录变更,请在会话运行期间用另一个编辑器编辑某个设置文件,然后打开 `~/claude-config-audit.log`:该 hook 会为每次变更追加一行 JSON,其中包含时间戳、来源和文件路径。

361 361 

362### 当目录或文件更改时重新加载环境362### 目录或文件变更时重新加载环境

363 363 

364某些项目根据你所在的目录设置不同的环境变量。[direnv](https://direnv.net/) 之类的工具在你的 shell 中自动执行此操作,但 Claude 的 Bash 工具不会自动拾取这些更改。364有些项目会根据您所在的目录设置不同的环境变量。[direnv](https://direnv.net/) 等工具会在您的 shell 中自动完成此操作,但 Claude 的 Bash 工具本身不会获取这些变更。

365 365 

366配对 `SessionStart` hook 和 `CwdChanged` hook 可以解决这个问题。`SessionStart` 加载你启动时所在目录的变量,`CwdChanged` 在 Claude 每次更改目录时重新加载它们。两者都写入 `CLAUDE_ENV_FILE`,Claude Code 在每个 Bash 命令之前作为脚本前导运行。将其添加到 `~/.claude/settings.json`:366将 `SessionStart` hook 与 `CwdChanged` hook 搭配使用即可解决此问题。`SessionStart` 加载您启动时所在目录的变量,而 `CwdChanged` 会在 Claude 每次切换目录时重新加载这些变量。两者都会写入 `CLAUDE_ENV_FILE`,Claude Code 会在每个 Bash 命令之前将其作为脚本前导运行。将以下内容添加到 `~/.claude/settings.json`:

367 367 

368```json theme={null}368```json theme={null}

369{369{


392}392}

393```393```

394 394 

395在每个包含 `.envrc` 的目录中运行一次 `direnv allow`,以便 direnv 被允许加载它。如果你使用 devbox 或 nix 而不是 direnv,相同的模式适用于 `devbox shellenv` 或 `devbox global shellenv` 代替 `direnv export bash`。395在每个包含 `.envrc` 的目录中运行一次 `direnv allow`,以允许 direnv 加载它。如果您使用 devbox 或 nix 而不是 direnv,同样的模式也适用,只需用 `devbox shellenv` 或 `devbox global shellenv` 替换 `direnv export bash`。

396 396 

397要对特定文件而不是每个目录更改做出反应,请使用 `FileChanged` 和 `matcher` 列出要监视的文件名,用 `|` 分隔。要构建监视列表,Claude Code 将此值分割为文字文件名而不是作为正则表达式进行评估。有关当文件更改时相同值如何也过滤哪些 hook 组运行,请参阅 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged)。此示例监视工作目录中 `.envrc` 和 `.env` 的更改:397若要对特定文件而不是每次目录变更做出响应,请使用 `FileChanged`,并在 `matcher` 中列出要监视的文件名,以 `|` 分隔。构建监视列表时,Claude Code 会将该值拆分为字面文件名,而不是将其作为正则表达式求值。有关同一个值如何在文件变更时筛选要运行的 hook 组,请参阅 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged)。此示例监视工作目录中的 `.envrc` 和 `.env`:

398 398 

399```json theme={null}399```json theme={null}

400{400{


414}414}

415```415```

416 416 

417有关输入架构、`watchPaths` 输出和 `CLAUDE_ENV_FILE` 详情,请参阅 [CwdChanged](https://code.claude.com/docs/zh-CN/hooks.md#cwdchanged) 和 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged) 参考条目。417有关输入 schema、`watchPaths` 输出以及 `CLAUDE_ENV_FILE` 的详细信息,请参阅 [CwdChanged](https://code.claude.com/docs/zh-CN/hooks.md#cwdchanged) 和 [FileChanged](https://code.claude.com/docs/zh-CN/hooks.md#filechanged) 参考条目。

418 418 

419### 自动批准特定权限提示419### 自动批准特定的权限提示

420 420 

421跳过你总是允许的工具调用的批准对话。此示例自动批准 `ExitPlanMode`,这是 Claude 在完成呈现计划并要求继续时调用的工具,因此你不会在每次计划准备好时被提示。421对于您始终允许的工具调用,跳过批准对话框。此示例自动批准 `ExitPlanMode`,即 Claude 在展示完计划并请求继续时调用的工具,这样每次计划就绪时都不会提示您。

422 422 

423与上面的退出代码示例不同,自动批准需要你的 hook 将 JSON 决策写入 stdout。Claude Code 运行 `PermissionRequest` hooks 当它即将要求你的权限时,如果你的 hook 返回 `"behavior": "allow"`,Claude Code 代表你回答请求。423与上面的退出码示例不同,自动批准要求您的 hook 将 JSON 决策写入 stdout。Claude Code 在即将向您请求权限时运行 `PermissionRequest` hook,如果您的 hook 返回 `"behavior": "allow"`,Claude Code 就会代表您响应该请求。

424 424 

425匹配器将 hook 的范围限制为仅 `ExitPlanMode`,因此没有其他提示受到影响。将其添加到 `~/.claude/settings.json`:425匹配器将该 hook 仅限定于 `ExitPlanMode`,因此不会影响其他提示。将以下内容添加到 `~/.claude/settings.json`:

426 426 

427```json theme={null}427```json theme={null}

428{428{


442}442}

443```443```

444 444 

445当 hook 批准时,Claude Code 退出计划模式并恢复进入计划模式之前处于活动状态的任何权限模式。成绩单显示"Allowed by PermissionRequest hook",其中对话会出现。hook 路径始终保持当前对话:它无法清除上下文并以对话可以的方式启动新的实现会话。445当该 hook 批准时,Claude Code 会退出计划模式,并恢复您进入计划模式之前处于活动状态的权限模式。会话记录会在原本出现对话框的位置显示“Allowed by PermissionRequest hook”。hook 路径始终保留当前对话:它无法像对话框那样清除上下文并开始一个全新的实现会话。

446 446 

447要改为设置特定的权限模式,你的 hook 的输出可以包含一个 `updatedPermissions` 数组,其中包含 `setMode` 条目。`mode` 值是任何权限模式,如 `default`、`acceptEdits` 或 `bypassPermissions`,`destination: "session"` 仅将其应用于当前会话。447若要改为设置特定的权限模式,您的 hook 输出可以包含一个带有 `setMode` 条目的 `updatedPermissions` 数组。`mode` 值可以是任何权限模式,例如 `default`、`acceptEdits` 或 `bypassPermissions`,而 `destination: "session"` 会使其仅对当前会话生效。

448 448 

449> [!NOTE]449> [!NOTE]

450>450>

451> `bypassPermissions` 仅在你启动会话时绕过模式已经可用的情况下才适用:`--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions` 或 [用户设置、`--settings` 或托管设置](https://code.claude.com/docs/zh-CN/settings-reference#permissions-defaultmode) 中的 `permissions.defaultMode: "bypassPermissions"`。如果绕过模式已被 [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/zh-CN/permissions#managed-settings) 禁用,或你是在[受限模式](https://code.claude.com/docs/zh-CN/cli-reference.md#cli-flags)中启动会话,则它不适用。451> `bypassPermissions` 仅在您启动会话时 bypass 模式已可用的情况下才会生效:通过 `--dangerously-skip-permissions`、`--permission-mode bypassPermissions`、`--allow-dangerously-skip-permissions`,或在[用户设置、`--settings` 或托管设置](https://code.claude.com/docs/zh-CN/settings-reference#permissions-defaultmode)中设置 `permissions.defaultMode: "bypassPermissions"`。如果 bypass 模式已被 [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/zh-CN/permissions#managed-settings) 禁用,或者您在[受限模式](https://code.claude.com/docs/zh-CN/cli-reference.md#cli-flags)下启动了会话,则它不会生效。

452>452>

453> Claude Code 永远不会将其保存为 `defaultMode`。453> Claude Code 永远不会将其保存为 `defaultMode`。

454 454 

455要将会话切换到 `acceptEdits`,你的 hook 将此 JSON 写入 stdout:455若要将会话切换到 `acceptEdits`,您的 hook 将以下 JSON 写入 stdout:

456 456 

457```json theme={null}457```json theme={null}

458{458{


468}468}

469```469```

470 470 

471保持匹配器尽可能狭窄。匹配 `.*` 或留下匹配器为空会自动批准每个工具权限提示,包括文件写入和 shell 命令。有关完整的决策字段集,请参阅 [PermissionRequest 参考](https://code.claude.com/docs/zh-CN/hooks.md#permissionrequest-decision-control)。471请让匹配器尽可能精确。匹配 `.*` 或将匹配器留空会自动批准所有工具权限提示,包括文件写入和 shell 命令。有关完整的决策字段集,请参阅 [PermissionRequest 参考](https://code.claude.com/docs/zh-CN/hooks.md#permissionrequest-decision-control)。

472 472 

473## Hooks 如何工作473## Hooks 如何工作

474 474 

Details

332* 在您通过终端、桌面应用或 VS Code 扩展进行工作的本地会话中,后台命令没有时间限制。在无人值守运行的会话中(例如 `-p` 运行或云端会话),Claude Code 会在后台命令达到其[时间限制](https://code.claude.com/docs/zh-CN/tools-reference.md#time-limit-for-background-commands)时停止它332* 在您通过终端、桌面应用或 VS Code 扩展进行工作的本地会话中,后台命令没有时间限制。在无人值守运行的会话中(例如 `-p` 运行或云端会话),Claude Code 会在后台命令达到其[时间限制](https://code.claude.com/docs/zh-CN/tools-reference.md#time-limit-for-background-commands)时停止它

333* 由前台[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)启动的后台命令在该子代理的运行结束时结束,无论是完成、失败还是被中断;请参阅工具参考中的[后台命令何时停止](https://code.claude.com/docs/zh-CN/tools-reference.md#when-a-background-command-stops)333* 由前台[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)启动的后台命令在该子代理的运行结束时结束,无论是完成、失败还是被中断;请参阅工具参考中的[后台命令何时停止](https://code.claude.com/docs/zh-CN/tools-reference.md#when-a-background-command-stops)

334 334 

335要关闭后台命令,请将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量设置为 `1`。设置后,您还将无法使用后台子代理、后台 fork skill 以及 `Ctrl+B`。以 [bare 模式](https://code.claude.com/docs/zh-CN/headless.md#start-faster-with-bare-mode)启动具有相同效果。335要关闭后台命令,请将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量设置为 `1`。设置后,您还将无法使用 `Ctrl+B` 快捷键和[其他后台功能](https://code.claude.com/docs/zh-CN/env-vars.md#variables),例如[在后台运行 skill](https://code.claude.com/docs/zh-CN/skills.md#run-skills-in-a-subagent)。以 [bare 模式](https://code.claude.com/docs/zh-CN/headless.md#start-faster-with-bare-mode)启动具有相同效果。

336 336 

337**常见的后台命令:**337**常见的后台命令:**

338 338 


738 738 

739```text theme={null}739```text theme={null}

740Usage limit reached · limit resets 3:45pm740Usage limit reached · limit resets 3:45pm

741Continuing automatically at 3:45pm · esc to cancel741Continuing automatically at 3:45pm · Esc to cancel

742```742```

743 743 

744这两行在这些文字之后都可能带有更多内容,例如第一行中的帮助链接,或第二行中的 `/usage-credits to continue now`。当等待自动开始时,对话中也会记录一行 `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`。744这两行在这些文字之后都可能带有更多内容,例如第一行中的帮助链接,或第二行中的 `/usage-credits to continue now`。当等待自动开始时,对话中也会记录一行 `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`。

745 745 

746保持会话打开。接下来发生的情况取决于等待如何结束:746保持会话打开。接下来发生的情况取决于等待如何结束:

747 747 

748* **在重置时**:第二行变为 `Continuing shortly · esc to cancel`。然后对话中出现 `Usage limit reset · continuing automatically`,Claude Code 提示 Claude 从停止的地方继续任务。它不会重新发送您的最后一条消息。748* **在重置时**:第二行变为 `Continuing shortly · Esc to cancel`。然后对话中出现 `Usage limit reset · Continuing automatically`,Claude Code 提示 Claude 从停止的地方继续任务。它不会重新发送您的最后一条消息。

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

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

751 751 

managed-mcp.md +10 −10

Details

510 510 

511当 `allowManagedMcpServersOnly` 为 `true` 时,来自用户、项目和本地设置的允许列表被忽略。拒绝列表仍然从每个设置范围合并,因此用户总是可以为自己阻止服务器。511当 `allowManagedMcpServersOnly` 为 `true` 时,来自用户、项目和本地设置的允许列表被忽略。拒绝列表仍然从每个设置范围合并,因此用户总是可以为自己阻止服务器。

512 512 

513## 限制如何向用户显示513## 限制如何向用户呈现

514 514 

515关于当部署 `managed-mcp.json` 且会话也有 `--mcp-config` 服务器时用户在启动时看到的内容,请参阅[使用 managed-mcp.json 的独占控制](#exclusive-control-with-managed-mcp-json)。使用此表格来识别其他报告,并在推出更改之前告诉用户应该期望什么:515关于部署了 `managed-mcp.json` 且会话中同时存在 `--mcp-config` 服务器时用户在启动时看到的内容,请参阅[使用 managed-mcp.json 进行独占控制](#exclusive-control-with-managed-mcp-json)。使用下表识别其他报告,并在推出变更之前告知用户预期会看到什么:

516 516 

517| 限制 | 用户看到的内容 |517| 限制 | 用户看到的内容 |

518| :- | :- |518| :- | :- |

519| `managed-mcp.json` 存在且用户运行 `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |519| 存在 `managed-mcp.json`,且用户运行 `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |

520| `managed-mcp.json` 存在且可以在 Chrome 中运行 Claude 的用户运行 `claude --chrome` | Claude Code 在启动时退出,显示 `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` |520| 存在 `managed-mcp.json`,且原本可以运行 Claude in Chrome 的用户运行 `claude --chrome` | Claude Code 在启动时退出,并显示 `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` |

521| 服务器在拒绝列表上且用户运行 `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |521| 服务器位于拒绝列表中,且用户运行 `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

522| 服务器不在允许列表上且用户运行 `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |522| 服务器不在允许列表中,且用户运行 `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

523| [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization) 为 `true` 或包含 `mcp`,且用户运行 `claude mcp add` | [`Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide`](https://code.claude.com/docs/zh-CN/errors#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |523| [`strictPluginOnlyCustomization`](https://code.claude.com/docs/zh-CN/settings-reference#strictpluginonlycustomization) 为 `true` 或包含 `mcp`,且用户运行 `claude mcp add` | [`Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide`](https://code.claude.com/docs/zh-CN/errors#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |

524| 用户在来自 `managedMcpServers` 的服务器上运行 `claude mcp remove` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |524| 用户对来自 `managedMcpServers` 的服务器运行 `claude mcp remove` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |

525| 之前配置的服务器现在被策略阻止 | 服务器从 `/mcp` 和 `claude mcp list` 中消失 |525| 先前已配置的服务器现在被策略阻止 | 该服务器从 `/mcp` 和 `claude mcp list` 中消失 |

526| 服务器在会话运行时被阻止,用户选择**重新连接**或在 `/mcp` 中将其重新打开 | [`MCP server <name> is blocked by enterprise managed policy`](https://code.claude.com/docs/zh-CN/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |526| 服务器在会话运行期间被阻止,且用户在 `/mcp` 中选择 **Reconnect** 或将其重新启用 | [`MCP server <name> is blocked by enterprise managed policy`](https://code.claude.com/docs/zh-CN/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |

527 527 

528当服务器无声地消失时,用户无法获得策略是原因的信号,因此在推出新限制时,告诉受影响的用户哪些服务器被阻止。528当服务器静默消失时,用户不会收到任何提示表明原因是策略,因此在推出新限制时,请告知受影响的用户哪些服务器被阻止。

529 529 

530## 监控 MCP 使用情况530## 监控 MCP 使用情况

531 531 

Details

178* [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/zh-CN/server-managed-settings)178* [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/zh-CN/server-managed-settings)

179* `env`,跨管理员源按变量合并:每个变量来自定义它的最高优先级源,因此较低源填充较高源未设置的变量。少数变量遵循自己的规则;[跨托管源的每个键异常](https://code.claude.com/docs/zh-CN/server-managed-settings.md#per-key-exceptions-across-managed-sources) 命名每一个。需要 Claude Code v2.1.223 或更高版本。在 v2.1.223 之前,Claude Code 仅应用选定源的整个 `env` 块179* `env`,跨管理员源按变量合并:每个变量来自定义它的最高优先级源,因此较低源填充较高源未设置的变量。少数变量遵循自己的规则;[跨托管源的每个键异常](https://code.claude.com/docs/zh-CN/server-managed-settings.md#per-key-exceptions-across-managed-sources) 命名每一个。需要 Claude Code v2.1.223 或更高版本。在 v2.1.223 之前,Claude Code 仅应用选定源的整个 `env` 块

180 180 

181[网关登录键](#choose-a-delivery-mechanism) 遵循单独的规则。Claude Code 从不从服务器管理的设置读取它们,因此当服务器管理的设置是选定的源时,机器上排名最高的具有策略键的管理员源仍然提供它们。排名低于该源的管理员源中的值,或 HKCU 注册表中的值,被忽略。

182 

183[`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 有自己的规则:其条目的 Scope 注释说明机器上设置的列表如何与服务器管理的列表组合。需要 Claude Code v2.1.285 或更高版本。181[`allowedProviders`](https://code.claude.com/docs/zh-CN/settings-reference#allowedproviders) 有自己的规则:其条目的 Scope 注释说明机器上设置的列表如何与服务器管理的列表组合。需要 Claude Code v2.1.285 或更高版本。

184 182 

185当管理员源设置 `allowManagedMcpServersOnly` 或 `allowedMcpServers` 列表且该值不是生效的值时,`/status` 和 `claude doctor` 命名该源和键。183当管理员源设置 `allowManagedMcpServersOnly` 或 `allowedMcpServers` 列表且该值不是生效的值时,`/status` 和 `claude doctor` 命名该源和键。

186 184 

185#### 哪个托管源提供登录键

186 

187在具有 MDM 策略或托管设置文件的机器上,Claude Code 从该策略或文件中获取登录键,即使对于 [远程设置](#how-claude-code-combines-managed-sources) 也设置了的键也是如此。来自 claude.ai 管理控制台的设置属于远程设置,因此请在 MDM 策略或文件中设置登录键,例如 [`forceLoginOrgUUID`](https://code.claude.com/docs/zh-CN/settings-reference#forceloginorguuid)。

188 

189如果机器同时具有 MDM 策略和托管设置文件,请使用 MDM 策略。当该策略设置了任何 [策略键](#how-claude-code-combines-managed-sources) 时,Claude Code 会忽略文件中的登录键,[即使在 `managedSourcesBehavior: "merge"` 下也是如此](#compose-every-managed-source)。

190 

191登录键包括:

192 

193* 设置为 `"claudeai"` 或 `"console"` 的 `forceLoginOrgUUID` 和 `forceLoginMethod`:如果策略或文件省略了其中任一键,则远程设置中的值适用。在每个客户端都运行 v2.1.299 或更高版本之前,也请在 claude.ai 的 [服务器管理的设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md) 中设置这些键

194* [网关登录键](#choose-a-delivery-mechanism):Claude Code 不会将远程设置中的值用于网关登录

195 

187### 组合每个托管源196### 组合每个托管源

188 197 

189要让 Claude Code 应用您的组织交付的每个管理员源,请在您部署的最高排名源中将 [`managedSourcesBehavior`](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior) 设置为 `"merge"`。Claude Code 仅从具有该键或策略键的最高排名源读取该键,因此较低源无法选择自己与上面的源合并,从不接收服务器管理设置的机器也需要在其 MDM 配置文件中有该键。用户可写的 HKCU 注册表永远不会与另一个源合并。需要 Claude Code v2.1.242 或更高版本。198要让 Claude Code 应用您的组织交付的每个管理员源,请在您部署的最高排名源中将 [`managedSourcesBehavior`](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior) 设置为 `"merge"`。Claude Code 仅从具有该键或策略键的最高排名源读取该键,因此较低源无法选择自己与上面的源合并,从不接收服务器管理设置的机器也需要在其 MDM 配置文件中有该键。用户可写的 HKCU 注册表永远不会与另一个源合并。需要 Claude Code v2.1.242 或更高版本。


199| 限制允许列表 | 从设置它的最高排名源整体取值,不添加来自较低源的条目 | `availableModels`、`allowedMcpServers`、`strictKnownMarketplaces`、`allowedChannelPlugins` 和 `fallbackModel` 链 |208| 限制允许列表 | 从设置它的最高排名源整体取值,不添加来自较低源的条目 | `availableModels`、`allowedMcpServers`、`strictKnownMarketplaces`、`allowedChannelPlugins` 和 `fallbackModel` 链 |

200| 整体取值 | 从设置它的最高排名源整体取值,不组合来自较低源的条目或字段 | `sandbox.credentials.awsPairs`、`sandbox.ripgrep` |209| 整体取值 | 从设置它的最高排名源整体取值,不组合来自较低源的条目或字段 | `sandbox.credentials.awsPairs`、`sandbox.ripgrep` |

201| 提供的 MCP 服务器 | 组合来自每个源的服务器名称;当两个源设置相同的名称时,应用较高排名源的整个条目 | `managedMcpServers` |210| 提供的 MCP 服务器 | 组合来自每个源的服务器名称;当两个源设置相同的名称时,应用较高排名源的整个条目 | `managedMcpServers` |

202| 仅从最高排名源读取的键 | 忽略每个较低源中的键,即使最高排名源未设置它 | 凭据助手如 `apiKeyHelper`、登录 pin 如 `forceLoginOrgUUID`、`modelPicker`、`permissions.defaultMode` |211| 仅从最高排名源读取的键 | 忽略每个较低源中的键,即使最高排名源未设置它 | `modelPicker`、`permissions.defaultMode` 以及凭据助手如 `apiKeyHelper` |

203| `env` | 在任一设置下跨管理员源按变量合并,如 [从每个管理员源读取的键](#keys-read-from-every-admin-source) 所述 | |212| `env` | 在任一设置下跨管理员源按变量合并,如 [从每个管理员源读取的键](#keys-read-from-every-admin-source) 所述 | |

213| 登录键 | 在任一设置下,从 MDM 策略或托管设置文件中获取(以其中带有 [策略键](#how-claude-code-combines-managed-sources) 的排名较高者为准),[优先于远程设置](#which-managed-source-supplies-login-keys) | `forceLoginOrgUUID`、`forceLoginMethod` 和 [网关登录键](#choose-a-delivery-mechanism) |

204| 所有其他键 | 从设置它的最高排名源取值 | `model`、`cleanupPeriodDays` |214| 所有其他键 | 从设置它的最高排名源取值 | `model`、`cleanupPeriodDays` |

205 215 

206要确认机器上组合了哪些源,请 [读取 `/status` 中的 `Setting sources` 行](#read-the-source-in-/status);该部分说明每个标签的含义。216要确认机器上组合了哪些源,请 [读取 `/status` 中的 `Setting sources` 行](#read-the-source-in-/status);该部分说明每个标签的含义。


228Claude Code 也对父提供的值本身应用这些检查:238Claude Code 也对父提供的值本身应用这些检查:

229 239 

230* 当任何管理员源设置 `allowManagedPermissionRulesOnly` 时,Claude Code 会删除 [父提供的](https://code.claude.com/docs/zh-CN/claude-apps-gateway#restrict-parent-settings) 权限允许规则和 `additionalDirectories`,即使较高优先级源未设置该键。该键对您自己的权限规则的影响来自 Claude Code 应用的托管设置,或来自您选择合并的父设置240* 当任何管理员源设置 `allowManagedPermissionRulesOnly` 时,Claude Code 会删除 [父提供的](https://code.claude.com/docs/zh-CN/claude-apps-gateway#restrict-parent-settings) 权限允许规则和 `additionalDirectories`,即使较高优先级源未设置该键。该键对您自己的权限规则的影响来自 Claude Code 应用的托管设置,或来自您选择合并的父设置

231* Claude Code 强制执行它应用的托管设置中的 `forceLoginOrgUUID` 或 `allowedMcpServers` 值,并阻止父提供的值。在 MCP 允许列表锁之外,Claude Code 不应用的较低管理员源中的值既不应用也不阻止父的值。241* Claude Code 强制执行它应用的托管设置中的 `forceLoginOrgUUID` 或 `allowedMcpServers` 值,并阻止父提供的值。如果您交付多个托管源,请参阅 [哪个源提供 `forceLoginOrgUUID`](#which-managed-source-supplies-login-keys)。

232 242 

233 在 Claude Code v2.1.273 或更高版本上,当 `allowManagedMcpServersOnly` 打开时,来自设置一个的最高排名管理员源的 `allowedMcpServers` 列表应用并阻止父的,作为 [跨源键](#keys-read-from-every-admin-source)。父的列表仅在没有管理员源设置一个时应用。[`managedSourcesBehavior`](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior) 条目说明在 `"merge"` 下哪个源提供每个键。在 v2.1.223 之前,任何管理员源中的值都会阻止父的值243 在 Claude Code v2.1.273 或更高版本上,当 `allowManagedMcpServersOnly` 打开时,来自设置一个的最高排名管理员源的 `allowedMcpServers` 列表应用并阻止父的,作为 [跨源键](#keys-read-from-every-admin-source)。父的列表仅在没有管理员源设置一个时应用。[`managedSourcesBehavior`](https://code.claude.com/docs/zh-CN/settings-reference#managedsourcesbehavior) 条目说明在 `"merge"` 下哪个源提供每个键。在 v2.1.223 之前,任何管理员源中的值都会阻止父的值

234* 对于 `availableModels`,Claude Code 强制执行它应用的托管设置中的值并阻止父提供的列表244* 对于 `availableModels`,Claude Code 强制执行它应用的托管设置中的值并阻止父提供的列表

mcp.md +93 −66

Details

242/mcp242/mcp

243```243```

244 244 

245删除远程服务器时,Claude Code 也会删除为该服务器存储的 OAuth 令牌和客户端注册。245移除远程服务器时,Claude Code 还会删除它为该服务器存储的 OAuth 令牌和客户端注册信息。Claude Code 不会在签发这些令牌的授权服务器上撤销令牌。如果授权服务器支持撤销,要撤销令牌,请在运行 `claude mcp remove <name>` 之前,先在 shell 中运行 [`claude mcp logout <name>`](#authenticate-from-the-command-line)。

246 246 

247#### 服务器状态247#### 服务器状态

248 248 


252 252 

253此列表中的状态报告配置决策而不是连接尝试,因此 Claude Code 在不连接到服务器的情况下打印它们:253此列表中的状态报告配置决策而不是连接尝试,因此 Claude Code 在不连接到服务器的情况下打印它们:

254 254 

255* ``⏸ Pending approval (run `claude` to approve)``:来自 `.mcp.json` 且您尚未批准的项目作用域服务器。Claude Code 会在 `claude mcp list` 和 `claude mcp get <name>` 中都显示它。以交互方式运行 `claude` 来查看并批准它。255* ``⏸ Pending approval (run `claude` to approve)``:来自 `.mcp.json` 且您尚未批准的项目作用域服务器。Claude Code 会在 `claude mcp list` 和 `claude mcp get <name>` 中都显示它。以交互方式运行 `claude` 以审查并批准它。

256* `✘ Rejected (see disabledMcpjsonServers in settings)`:由 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-CN/settings-reference#disabledmcpjsonservers) 条目拒绝的 `.mcp.json` 服务器。Claude Code 仅在 `claude mcp get <name>` 中显示它。256* `✘ Rejected (see disabledMcpjsonServers in settings)`:由 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-CN/settings-reference#disabledmcpjsonservers) 条目拒绝的 `.mcp.json` 服务器。Claude Code 仅在 `claude mcp get <name>` 中显示它。

257* `⊘ Disabled for this project (re-enable via /mcp)`:项目的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 列表命名的服务器。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都显示它。从 `/mcp` 面板重新打开服务器。257* `⊘ Disabled for this project (re-enable via /mcp)`:项目的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 列表命名的服务器。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都显示它。从 `/mcp` 面板重新打开服务器。

258* `✘ Blocked by enterprise managed policy`:被您组织的某项策略拒绝的服务器。Claude Code 会在 `claude mcp list` 和 `claude mcp get <name>` 中都显示它。被[托管 MCP 配置](https://code.claude.com/docs/zh-CN/managed-mcp.md#how-restrictions-appear-to-users)中的允许列表、拒绝列表或其他限制阻止的服务器,会在这两个命令中都被隐藏,而不是以此状态显示。请询问您的管理员是哪项策略阻止了该服务器。

258 259 

259#### 项目服务器批准和工作区信任260#### 项目服务器批准和工作区信任

260 261 


471要更改或关闭自动后台化:472要更改或关闭自动后台化:

472 473 

473* 设置以毫秒为单位的 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量以更改阈值,或设置为 `0` 以关闭自动后台化。设置为 `0` 时,Claude 在交互式会话中也会[等待 MCP 任务](#make-claude-wait-for-the-result-of-an-mcp-task)474* 设置以毫秒为单位的 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量以更改阈值,或设置为 `0` 以关闭自动后台化。设置为 `0` 时,Claude 在交互式会话中也会[等待 MCP 任务](#make-claude-wait-for-the-result-of-an-mcp-task)

474* 将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 `1`,这会将其与后台命令和后台子代理一起关闭475* 将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 `1`,以关闭自动后台化和[后台命令](https://code.claude.com/docs/zh-CN/tools-reference.md#background-commands)

475 476 

476某些调用永远不会移到后台:477某些调用永远不会移到后台:

477 478 


722 723 

723有关使用插件捆绑 MCP 服务器的详细信息,请参阅 [插件组件参考](https://code.claude.com/docs/zh-CN/plugins/components.md#mcp-servers)。724有关使用插件捆绑 MCP 服务器的详细信息,请参阅 [插件组件参考](https://code.claude.com/docs/zh-CN/plugins/components.md#mcp-servers)。

724 725 

725## MCP 安装范围726## MCP 安装作用域

726 727 

727MCP 服务器可以在三个不同的范围级别进行配置。您选择的范围控制服务器在哪些项目中加载以及配置是否与您的团队共享。管理员还可以通过[托管配置](#managed-mcp-configuration)为每个用户部署或提供服务器。728MCP 服务器可以在三个作用域中进行配置。您选择的作用域决定了服务器在哪些项目中加载,以及配置是否与团队共享。管理员还可以通过[托管配置](#managed-mcp-configuration)为所有用户部署或提供服务器。

728 729 

729| 范围 | 加载位置 | 与团队共享 | 存储位置 |730| 作用域 | 加载范围 | 与团队共享 | 存储位置 |

730| - | - | - | - |731| - | - | - | - |

731| [本地](#local-scope) | 仅当前项目 | 否 | `~/.claude.json` |732| [Local](#local-scope) | 仅当前项目 | 否 | `~/.claude.json` |

732| [项目](#project-scope) | 仅当前项目 | 是,通过版本控制 | 项目根目录中的 `.mcp.json` |733| [Project](#project-scope) | 仅当前项目 | 是,通过版本控制 | 项目根目录中的 `.mcp.json` |

733| [用户](#user-scope) | 您的所有项目 | 否 | `~/.claude.json` |734| [User](#user-scope) | 您的所有项目 | 否 | `~/.claude.json` |

734 735 

735### 本地范围736### Local 作用域

736 737 

737本地范围是默认范围。本地范围的服务器仅在您添加它的项目中加载,并对您保持私密。Claude Code 将其存储在 `~/.claude.json` 中该项目的路径下,因此相同的服务器不会出现在您的其他项目中。对个人开发服务器、实验配置或包含您不想在版本控制中的凭据的服务器使用本地范围。738Local 作用域是默认作用域。Local 作用域的服务器仅在添加它的项目中加载,并且仅对您本人可见。Claude Code 将其存储在 `~/.claude.json` 中该项目的路径下,因此同一服务器不会出现在您的其他项目中。Local 作用域适用于个人开发服务器、实验性配置,或包含您不希望纳入版本控制的凭据的服务器。

738 739 

739> [!NOTE]740> [!NOTE]

740>741>

741> MCP 服务器的"本地范围"术语与一般本地设置不同。MCP 本地范围的服务器存储在 `~/.claude.json`(您的主目录)中,而一般本地设置使用 `.claude/settings.local.json`(在项目目录中)。有关设置文件位置的详细信息,请参阅[设置](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)。742> MCP 服务器的"local 作用域"一词与一般的本地设置不同。MCP local 作用域服务器存储在 `~/.claude.json`(您的主目录)中,而一般的本地设置使用 `.claude/settings.local.json`(位于项目目录中)。有关设置文件位置的详细信息,请参阅[设置](https://code.claude.com/docs/zh-CN/settings.md#where-settings-live)。

742 743 

743```bash theme={null}744```bash theme={null}

744# 添加本地范围的服务器(默认)745# Add a local-scoped server (default)

745claude mcp add --transport http stripe https://mcp.stripe.com746claude mcp add --transport http stripe https://mcp.stripe.com

746 747 

747# 显式指定本地范围748# Explicitly specify local scope

748claude mcp add --transport http stripe --scope local https://mcp.stripe.com749claude mcp add --transport http stripe --scope local https://mcp.stripe.com

749```750```

750 751 

751该命令将服务器写入 `~/.claude.json` 中您当前项目的条目。下面的示例显示从 `/path/to/your/project` 运行时的结果:752该命令会将服务器写入 `~/.claude.json` 中当前项目对应的条目。以下示例展示了从 `/path/to/your/project` 运行该命令后的结果:

752 753 

753```json theme={null}754```json theme={null}

754{755{


765}766}

766```767```

767 768 

768### 项目范围769### Project 作用域

769 770 

770项目范围的服务器通过在项目根目录中存储配置在 `.mcp.json` 文件中来启用团队协作。当您添加项目范围的服务器时,Claude Code 会自动创建或更新此文件,使用适当的配置结构。将 `.mcp.json` 检入版本控制,以便您团队中的每个人都能获得相同的 MCP 工具和服务。771Project 作用域的服务器通过将配置存储在项目根目录下的 `.mcp.json` 文件中来支持团队协作。添加 Project 作用域的服务器时,Claude Code 会自动创建或更新此文件,并写入相应的配置结构。请将 `.mcp.json` 提交到版本控制中,以便团队中的每个人都能获得相同的 MCP 工具和服务。

771 772 

772```bash theme={null}773```bash theme={null}

773# 添加项目范围的服务器774# Add a project-scoped server

774claude mcp add --transport http shared-server --scope project https://example.com/mcp775claude mcp add --transport http shared-server --scope project https://example.com/mcp

775```776```

776 777 


787}788}

788```789```

789 790 

790出于安全原因,Claude Code 在交互式会话中使用来自 `.mcp.json` 文件的项目范围的服务器之前会提示批准。要重置这些批准选择,请运行 `claude mcp reset-project-choices`。791出于安全考虑,在交互式会话中,Claude Code 会在使用 `.mcp.json` 文件中的 Project 作用域服务器之前请求批准。要重置这些批准选择,请运行 `claude mcp reset-project-choices`。

791 792 

792在 `claude -p` 运行、[Agent SDK](https://code.claude.com/docs/zh-CN/headless.md) 会话以及[项目](https://code.claude.com/docs/zh-CN/claude-projects.md#what-threads-pick-up-from-your-repositories)线程之外的[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 无法显示该提示:它加载项目范围的服务器而不询问。Claude Code 还会在您以 `bypassPermissions` 模式启动的会话中跳过提示,其中用户设置或托管设置中设置了 [`skipDangerousModePermissionPrompt`](https://code.claude.com/docs/zh-CN/settings-reference#skipdangerousmodepermissionprompt)。要无论如何保持服务器不加载:793在 `claude -p` 运行、[Agent SDK](https://code.claude.com/docs/zh-CN/headless.md) 会话以及[项目](https://code.claude.com/docs/zh-CN/claude-projects.md#what-threads-pick-up-from-your-repositories)线程之外的[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 无法显示该确认提示:它会直接加载 Project 作用域的服务器而不询问。如果您在用户设置或托管设置中设置了 [`skipDangerousModePermissionPrompt`](https://code.claude.com/docs/zh-CN/settings-reference#skipdangerousmodepermissionprompt),并以 `bypassPermissions` 模式启动会话,Claude Code 也会跳过该确认提示。如果仍要排除某个服务器:

793 794 

794* 将其添加到 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-CN/settings-reference#disabledmcpjsonservers),这会在每个权限模式中阻止它。795* 将其添加到 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-CN/settings-reference#disabledmcpjsonservers),这会在所有权限模式下阻止它。

795* 使用 [`--setting-sources`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 或 SDK 的 `settingSources` 选项完全排除项目设置。796* 使用 [`--setting-sources`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 或 SDK 的 `settingSources` 选项完全排除项目设置。

796* 使用 [`--strict-mcp-config`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 启动会话。Claude Code 随后仅使用您通过 `--mcp-config` 传递的 MCP 服务器。跳过 Claude Code 未加载的项目范围服务器的批准提示需要 Claude Code v2.1.246 或更高版本;在 v2.1.246 之前,严格会话仍然会等待它们的批准,这会导致后台会话在启动时等待。有关该标志在托管 MCP 文件下的作用,请参阅[使用 managed-mcp.json 进行独占控制](https://code.claude.com/docs/zh-CN/managed-mcp.md#exclusive-control-with-managed-mcp-json)。797* 使用 [`--strict-mcp-config`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 启动会话。此时 Claude Code 仅使用您通过 `--mcp-config` 传入的 MCP 服务器。对于 Claude Code 未加载的 Project 作用域服务器跳过批准提示,需要 Claude Code v2.1.246 或更高版本;在 v2.1.246 之前,strict 会话仍会等待对这些服务器的批准,导致后台会话在启动时处于等待状态。有关在托管 MCP 文件下该标志的作用,请参阅[使用 managed-mcp.json 进行独占控制](https://code.claude.com/docs/zh-CN/managed-mcp.md#exclusive-control-with-managed-mcp-json)。

797 798 

798[项目服务器批准和工作区信任](#project-server-approvals-and-workspace-trust)涵盖了提交到存储库的批准如何与工作区信任交互。799[项目服务器批准与工作区信任](#project-server-approvals-and-workspace-trust)介绍了提交到仓库中的批准如何与工作区信任相互作用。

799 800 

800### 用户范围801### User 作用域

801 802 

802用户范围的服务器存储在 `~/.claude.json` 中,并提供跨项目可访问性,使其在您机器上的所有项目中可用,同时对您的用户帐户保持私密。此范围适用于个人实用程序服务器、开发工具或您在不同项目中经常使用的服务。803User 作用域的服务器存储在 `~/.claude.json` 中,提供跨项目的可访问性,使其在您机器上的所有项目中均可用,同时仅对您的用户账户可见。此作用域适用于个人实用工具服务器、开发工具,或您在不同项目中经常使用的服务。

803 804 

804```bash theme={null}805```bash theme={null}

805# 添加用户服务器806# Add a user server

806claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic807claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

807```808```

808 809 

809### 范围层次结构和优先级810### 作用域层级与优先级

810 811 

811当具有相同名称的服务器在多个位置定义时,Claude Code 连接到它一次,使用来自最高优先级源的定义。整个服务器条目来自该源;字段不会跨范围合并。812当同一服务器在多个位置定义时,Claude Code 只会连接一次,并使用优先级最高的来源中的定义。会使用该来源中的整个服务器条目;各作用域之间的字段不会合并。

812 813 

8131. 本地范围8141. Local 作用域

8142. 项目范围8152. Project 作用域

8153. 用户范围8163. User 作用域

8164. [插件提供的服务器](https://code.claude.com/docs/zh-CN/plugins/components.md#mcp-servers)8174. [插件提供的服务器](https://code.claude.com/docs/zh-CN/plugins/components.md#mcp-servers)

8175. [claude.ai 连接器](#use-mcp-servers-from-claude-ai)8185. [claude.ai 连接器](#use-mcp-servers-from-claude-ai)

818 819 

819Claude Code 按名称匹配三个范围中的重复项。插件和连接器按端点匹配,因此指向与上述服务器相同的 URL 或命令的连接器被视为重复项。820Claude Code 在三个作用域之间按名称匹配重复项。对于插件和连接器,则按端点匹配,因此如果某个插件或连接器指向的 URL 或命令与上述某个已启用的服务器相同,则视为重复项。

820 821 

821当两个 URL 拼写仅在方案或主机的字母大小写、方案的默认端口(例如 `https` 上的 `:443`)或尾部斜杠方面不同时,它们被视为相同的端点。不同的路径、查询字符串、用户信息或非默认端口会使两个服务器不同。822如果两种 URL 写法仅在以下方面不同,则视为同一端点:scheme 或 host 的字母大小写、scheme 的默认端口(例如 `https` 上的 `:443`),或末尾的斜杠。路径、查询字符串、userinfo 或非默认端口不同,则视为两个服务器。

822 823 

823您的组织通过 [`managedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#provide-servers-through-managed-settings) 托管设置提供的服务器排名高于所有这些,因此当其中一个重复它时,Claude Code 连接组织的定义。需要 Claude Code v2.1.259 或更高版本。824您的组织通过 [`managedMcpServers`](https://code.claude.com/docs/zh-CN/managed-mcp#provide-servers-through-managed-settings) 托管设置提供的服务器优先级高于上述所有来源,因此当上述某个服务器与之重复时,Claude Code 会连接组织的定义。需要 Claude Code v2.1.259 或更高版本。

824 825 

825如果您在[桌面应用的代码选项卡](https://code.claude.com/docs/zh-CN/desktop.md#mcp-servers-from-the-claude-desktop-chat-app)中打开本地会话,其中 `~/.claude.json`(用户范围)的顶级和 `.mcp.json` 中具有相同的 stdio 服务器名称,代码选项卡使用 `~/.claude.json` 定义。826如果您在 [Desktop 应用的 Code 标签页](https://code.claude.com/docs/zh-CN/desktop.md#mcp-servers-from-the-claude-desktop-chat-app)中打开本地会话,而 `~/.claude.json` 顶层(User 作用域)和 `.mcp.json` 中存在同名的 stdio 服务器,Code 标签页会使用 `~/.claude.json` 中的定义。

826 827 

827### `.mcp.json` 中的环境变量扩展828### `.mcp.json` 中的环境变量扩展

828 829 

829Claude Code 支持 `.mcp.json` 文件中的环境变量扩展,允许团队共享配置,同时为特定于机器的路径和 API 密钥等敏感值保持灵活性。830Claude Code 支持在 `.mcp.json` 文件中进行环境变量扩展,使团队能够共享配置,同时对特定于机器的路径和 API 密钥等敏感值保持灵活性。

830 831 

831#### 支持的语法832您可以在服务器的 `command`、`args`、`env`、`url` 或 `headers` 值中引用环境变量,支持以下两种形式:

832 833 

833* `${VAR}`:扩展为环境变量 `VAR` 的值834* `${VAR}`:扩展为环境变量 `VAR` 的值

834* `${VAR:-default}`:如果设置了 `VAR`,则扩展为 `VAR`,否则使用 `default`835* `${VAR:-default}`:如果已设置 `VAR`,则扩展为 `VAR` 的值;如果未设置,则扩展为 `default`

835 836 

836#### 扩展位置837#### 变量扩展示例

837 838 

838环境变量可以在以下位置扩展:839在此服务器条目中,URL 是 `API_BASE_URL` 的值后接 `/mcp`,默认值为 `https://api.example.com`,API 密钥来自 `API_KEY`:

839 

840* `command`:服务器可执行文件路径

841* `args`:命令行参数

842* `env`:传递给服务器的环境变量

843* `url`:对于 HTTP 服务器类型

844* `headers`:对于 HTTP 服务器身份验证

845 

846#### 带有变量扩展的示例

847 840 

848```json theme={null}841```json theme={null}

849{842{


861 854 

862#### 未设置且无默认值的变量855#### 未设置且无默认值的变量

863 856 

864如果未设置所需的环境变量且没有默认值,配置仍然会加载:Claude Code 在 `claude mcp list` 输出中为该服务器报告缺失变量警告,并按原样使用未扩展的 `${VAR}` 文本。设置变量或添加 `:-default` 回退,以便服务器使用您想要的值启动。在远程服务器的 `url` 和 `headers` 中,某些凭据变量[读取为空](#credential-variables-that-read-as-empty),没有警告。857如果引用的环境变量未设置且没有默认值,配置仍会加载:Claude Code 会在 `claude mcp list` 输出中针对该服务器报告缺少变量的警告,并按原样使用未扩展的 `${VAR}` 文本。请设置该变量或添加 `:-default` 回退值,以便服务器使用您预期的值启动。在远程服务器的 `url` 和 `headers` 中,某些凭据变量则会[读取为空](#credential-variables-that-read-as-empty),且不会给出警告。

858 

859#### 设置为空字符串的变量

860 

861如果您将变量设置为空字符串,它仍被视为已设置,因此 `${VAR:-default}` 引用会扩展为空字符串,而不是 `default`。以[示例服务器](#example-with-variable-expansion)为例,如果您将 `API_BASE_URL` 设置为空字符串,其 `url` 会变为 `/mcp`,并且 `claude mcp list` 会报告 `'url' is not a valid URL`。要使用默认值,请取消设置该变量,而不是将其设置为空字符串。

865 862 

866#### 读取为空的凭据变量863#### 读取为空的凭据变量

867 864 

868在远程服务器的 `url` 和 `headers` 中,Claude Code 从您的环境中读取凭据变量为空,而不是扩展它们。这可以防止项目的 `.mcp.json` 或插件将您的 Claude Code 或云提供商凭据发送到它命名的服务器。如果您写入 `Bearer ${ANTHROPIC_AUTH_TOKEN}`,服务器会收到 `Bearer ` 而没有凭据,并拒绝请求,通常返回 `401`。Claude Code 将其报告为连接失败。865在远程服务器的 `url` 和 `headers` 中,Claude Code 会将环境中的凭据变量读取为空,而不是扩展它们。这可以防止项目的 `.mcp.json` 或插件将您的 Claude Code 或云提供商凭据发送到其指定的服务器。如果您写入 `Bearer ${ANTHROPIC_AUTH_TOKEN}`,服务器会收到不含凭据的 `Bearer `,并拒绝该请求,通常返回 `401`。Claude Code 会将其报告为连接失败。

869 866 

870涵盖的名称包括:867涵盖的名称包括:

871 868 

872* Claude Code 自己的凭据,例如 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN`869* Claude Code 自身的凭据,例如 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN`

873* 您的云提供商的凭据,例如 `AWS_BEARER_TOKEN_BEDROCK`870* 您的云提供商凭据,例如 `AWS_BEARER_TOKEN_BEDROCK`

874* 您的环境携带的其他凭据,例如 `HTTPS_PROXY` 和 `NPM_TOKEN`871* 您的环境中携带的其他凭据,例如 `HTTPS_PROXY` 和 `NPM_TOKEN`

875 872 

876涵盖的名称读取为空,无论您是否设置了变量,其上的 `:-default` 回退被忽略。提供商基础 URL(例如 `ANTHROPIC_BASE_URL`)仍然会扩展,因此 `"url": "${ANTHROPIC_BASE_URL}/mcp"` 有效,除非 URL 的值本身嵌入凭据(例如用户名和密码)。873无论您是否设置了该变量,涵盖的名称都会读取为空,并且其上的 `:-default` 回退值会被忽略。`ANTHROPIC_BASE_URL` 等提供商基础 URL 仍会扩展,因此 `"url": "${ANTHROPIC_BASE_URL}/mcp"` 可以正常工作,除非该 URL 的值本身嵌入了凭据,例如用户名和密码。

877 874 

878此集合之外的名称(例如 `API_KEY`)按原样扩展。要向服务器提供涵盖的凭据之一,请将其复制到具有您自己的名称的变量中,并改为引用该名称。875此集合之外的名称(例如 `API_KEY`)会按原样扩展。要向服务器提供某个涵盖的凭据,请将其复制到您自己命名的变量中,并改为引用该名称。

879 876 

880当远程服务器的 `url` 或 `headers` 引用您已设置的涵盖变量时,Claude Code 在调试日志行中命名它。要读取该行,请运行 `claude --debug-file /tmp/claude-debug.log` 并在该文件中搜索 `never expanded toward a remote server`。877当远程服务器的 `url` 或 `headers` 引用了您已设置的涵盖变量时,Claude Code 会在一行调试日志中指出该变量。要查看该行,请运行 `claude --debug-file /tmp/claude-debug.log`,并在该文件中搜索 `never expanded toward a remote server`。

881 878 

882#### 引用在 `/mcp` 和 CLI 输出中的显示方式879#### 引用在 `/mcp` 和 CLI 输出中的显示方式

883 880 

884对于本地、项目或用户[范围](#mcp-installation-scopes)中的服务器,以下界面按名称而不是按其解析值显示 `${VAR}` 引用:881对于 local、project 或 user [作用域](#mcp-installation-scopes)中的服务器,以下使用入口会按名称显示 `${VAR}` 引用,而不是显示其解析后的值:

885 882 

886* 服务器的 `/mcp` 详细视图中的 URL 或命令行883* 服务器 `/mcp` 详情视图中的 URL 或命令行

887* `claude mcp list` 和 `claude mcp get` 输出884* `claude mcp list` 和 `claude mcp get` 的输出

888 885 

889`/mcp` 详细视图在 Claude Code v2.1.268 或更高版本中以这种方式显示引用。886在 Claude Code v2.1.268 或更高版本中,`/mcp` 详情视图会以这种方式显示引用。

890 887 

891对于您的组织通过 `managedMcpServers` 设置提供的服务器,这些界面仅显示[URL 的主机](https://code.claude.com/docs/zh-CN/managed-mcp.md#what-users-can-see-and-change)。888对于您的组织通过 `managedMcpServers` 设置提供的服务器,这些使用入口仅显示 [URL 的主机](https://code.claude.com/docs/zh-CN/managed-mcp.md#what-users-can-see-and-change)。

892 889 

893要检查当连接失败时 `claude mcp list`、`claude mcp get` 和 `/mcp` 显示的内容,请参阅[服务器状态详情](#server-status-detail)。890要查看连接失败时 `claude mcp list`、`claude mcp get` 和 `/mcp` 显示的内容,请参阅[服务器状态详情](#server-status-detail)。

894 891 

895## 实际示例892## 实际示例

896 893 


1146 1143 

1147如果该作用域不在您的固定 `oauth.scopes` 中,请添加它,然后运行 `/mcp` 并再次对服务器进行身份验证。Claude Code 请求固定作用域而不是服务器命名的作用域,因此如果您在不添加它的情况下再次进行身份验证,您获得的令牌仍然缺少它。1144如果该作用域不在您的固定 `oauth.scopes` 中,请添加它,然后运行 `/mcp` 并再次对服务器进行身份验证。Claude Code 请求固定作用域而不是服务器命名的作用域,因此如果您在不添加它的情况下再次进行身份验证,您获得的令牌仍然缺少它。

1148 1145 

1146### 对位于需要身份验证的代理后面的服务器使用 OAuth

1147 

1148如果您的 MCP 服务器在一个会检查其自身标头的代理或网关后面使用 OAuth,当 OAuth 请求到达时不带该标头,登录就会失败。通过该代理登录需要 Claude Code v2.1.299 或更高版本,并且需要同时配置该标头和登录:

1149 

1150* **代理的标头**:使用 [`--header`](#option-1-add-a-remote-http-server)、`headers` 字段或 [`headersHelper`](#use-dynamic-headers-for-custom-authentication),以代理读取的名称传递它

1151* **OAuth 登录**:不要在配置的标头中包含 `Authorization`,然后在 shell 中使用 `claude mcp login <name>` 登录。如果您配置了 `Authorization` 标头,Claude Code 会将其用作服务器的凭据,并且不会为该服务器回退到 OAuth。

1152 

1149### 使用动态标头进行自定义身份验证1153### 使用动态标头进行自定义身份验证

1150 1154 

1151如果您的 MCP 服务器使用 OAuth 以外的身份验证方案,例如 Kerberos、短期令牌或内部 SSO,请使用 `headersHelper` 在连接时生成请求标头。Claude Code 运行命令并将其输出合并到连接标头中。1155当 Kerberos、短期令牌或内部 SSO 等身份验证需要在连接时生成标头时,请将服务器的 `headersHelper` 设置为一个命令。Claude Code 在连接时运行该命令,并将其输出合并到它发送的标头中。此示例使用脚本:

1152 1156 

1153```json theme={null}1157```json theme={null}

1154{1158{


1552 1556 

1553## 具有无效输入架构的工具1557## 具有无效输入架构的工具

1554 1558 

1555Claude API 检查请求中每个工具的输入架构,当任何一个架构失败时会拒绝整个请求,因此单个 MCP 工具的格式错误的架构会导致包含它的每个请求都以 400 错误失败。Claude Code 在加载服务器的工具时自己运行 API 的两个检查,并排除每个会失败的工具,这样服务器的其他工具可以继续工作:1559> [!NOTE]

1560>

1561> 如果会话因按位置指明某个工具的 400 错误而失败,请按照[工具输入 schema 无效](https://code.claude.com/docs/zh-CN/errors.md#tool-input-schema-is-invalid)中的步骤操作。

1562 

1563如果 MCP 服务器的某个工具的输入 schema 违反了 API 强制执行的两条规则中的任意一条,Claude Code 会排除该工具。服务器的其他工具不受影响。Claude Code 在加载服务器的工具时会检查这两条规则:

1556 1564 

1557* 顶级属性名称必须为 1 到 64 个字符长,并且只能使用 ASCII 字母和数字、`_`、`.` 和 `-`1565* 顶级属性名称必须为 1 到 64 个字符长,并且只能使用 ASCII 字母和数字、`_`、`.` 和 `-`

1558* 架构必须对 JSON Schema draft 2020-12 元架构有效。Claude Code 对未声明 `$schema` 的架构和声明 draft 2020-12 的架构应用此检查。声明任何其他方言的架构会跳过此检查,尽管上面的属性名称检查仍然适用1566* 架构必须对 JSON Schema draft 2020-12 元架构有效。Claude Code 对未声明 `$schema` 的架构和声明 draft 2020-12 的架构应用此检查。声明任何其他方言的架构会跳过此检查,尽管上面的属性名称检查仍然适用

1559 1567 

1560当 Claude Code 排除一个工具时,它会在服务器的日志中记录原因,并告诉 Claude 它排除了哪些工具以及原因,这样你可以询问 Claude 为什么工具缺失。如果你修复了服务器上的架构,下次 Claude Code 加载服务器的工具时该工具就会回来。1568当 Claude Code 排除一个工具时,它会在服务器的日志中记录原因,并告诉 Claude 它排除了哪些工具以及原因,这样你可以询问 Claude 为什么工具缺失。如果你修复了服务器上的架构,下次 Claude Code 加载服务器的工具时该工具就会回来。

1561 1569 

1562Claude Code 通过从 Anthropic 获取的功能标志打开排除。在 [禁用标志获取的部署](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching) 上,或在标志从未到达的机器上(例如隔离的机器),Claude Code 仍然运行检查并在服务器的日志中记录哪个工具会被拒绝,但仍然将工具的架构发送到 API。API 拒绝包含该架构的请求,并 [以 400 错误按其位置命名工具](https://code.claude.com/docs/zh-CN/errors.md#tool-input-schema-is-invalid)。在 v2.1.216 之前,没有部署运行这些检查。1570当[功能标志获取](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)处于关闭状态或标志从未到达时(例如在隔离的机器上),违反规则的工具不会被排除:

1571 

1572* Claude 会获得未经更改的工具,服务器的日志会为其记录 `input schema would be rejected by the Anthropic API`

1573* 如果 API 随后拒绝了该 schema,请参阅 [API 拒绝其输入 schema 的工具](#tools-whose-input-schema-the-api-refuses)

1574 

1575在 v2.1.216 之前,没有部署运行这些检查。

1563 1576 

1564[根级组合器处理](#tool-input-schemas-with-a-root-level-combinator) 是独立的,当标志获取关闭或标志从未到达时保持其自己的行为。1577[根级组合器处理](#tool-input-schemas-with-a-root-level-combinator) 是独立的,当标志获取关闭或标志从未到达时保持其自己的行为。

1565 1578 

1579### API 拒绝其输入 schema 的工具

1580 

1581如果调试日志中的某一行包含 `the API refused this tool's input schema`,则该行指明了一个在请求中被 API 拒绝其 schema 的工具。Claude Code 会重新发送该请求,并将该工具声明为不带参数。

1582 

1583* **如果会话因按位置指明某个工具的 400 错误而失败**:请按照[工具输入 schema 无效](https://code.claude.com/docs/zh-CN/errors.md#tool-input-schema-is-invalid)中的步骤操作

1584* **如果您使用该服务器**:无需执行任何操作。Claude 仍然可以调用该工具,但看不到其参数

1585* **如果您维护该服务器**:在服务器上修复该工具的输入 schema。该日志行以 `The API said:` 以及 API 拒绝该 schema 的原因结尾。请验证服务器收到的参数,因为 Claude 在调用该工具时看不到其参数

1586 

1587在 v2.1.300 之前,每个包含被拒绝 schema 的轮次都会因[按位置指明该工具的 400 错误](https://code.claude.com/docs/zh-CN/errors.md#tool-input-schema-is-invalid)而失败。

1588 

1566## 名称超过 128 个字符的工具1589## 名称超过 128 个字符的工具

1567 1590 

1568如果 `/mcp` 列出了某个 Claude 无法调用的工具,请检查该工具的完整名称是否超过 128 个字符。在会话中运行 `/mcp` 并选择该工具,即可查看其完整名称,例如 `mcp__<server>__<tool>`。当 MCP 工具的完整名称超过 128 个字符时,Claude Code 会将其从发送给 Claude 的工具中排除。Claude API 会拒绝包含此类工具的请求,因此排除该工具可以确保服务器的其他工具正常工作。1591如果 `/mcp` 列出了某个 Claude 无法调用的工具,请检查该工具的完整名称是否超过 128 个字符。在会话中运行 `/mcp` 并选择该工具,即可查看其完整名称,例如 `mcp__<server>__<tool>`。当 MCP 工具的完整名称超过 128 个字符时,Claude Code 会将其从发送给 Claude 的工具中排除。Claude API 会拒绝包含此类工具的请求,因此排除该工具可以确保服务器的其他工具正常工作。


1709 1732 

1710在 v2.1.296 之前,较短的限制为 2,048 个字符;在 v2.1.295 之前,该限制适用于每个工具描述,包括通过工具搜索加载的工具描述。1733在 v2.1.296 之前,较短的限制为 2,048 个字符;在 v2.1.295 之前,该限制适用于每个工具描述,包括通过工具搜索加载的工具描述。

1711 1734 

1712Anthropic 在 `api.anthropic.com` 托管的部分 MCP 服务器,其描述和说明会完整地传达给 Claude。要更改会话中其他 MCP 服务器的限制,请将 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](https://code.claude.com/docs/zh-CN/env-vars#variables) 设置为字符数。您设置的数值会同时替换这两个限制:例如,`8192` 会提高较短的限制并降低较长的限制。此变量需要 Claude Code v2.1.280 或更高版本。1735#### 更改描述长度限制

1736 

1737要更改会话中 MCP 服务器的 4,096 和 16,384 个字符的[默认限制](#for-mcp-server-authors),请将 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](https://code.claude.com/docs/zh-CN/env-vars#variables) 设置为字符数。Claude Code 会将该数值同时用于这两个限制。例如,设置为 `8192` 时,会提高服务器说明和预先加载的工具描述的 4,096 个字符限制,并降低通过工具搜索加载的工具描述的 16,384 个字符限制。此变量需要 Claude Code v2.1.280 或更高版本。

1738 

1739Anthropic 在 `api.anthropic.com` 托管的部分 MCP 服务器,其描述和说明会完整地传达给 Claude,设置此变量不会截断它们。

1713 1740 

1714#### 将工具标记为预先加载或保持延迟1741#### 将工具标记为预先加载或保持延迟

1715 1742 

Details

65| `✘ Connection error` | 连接尝试抛出错误。请参阅 [故障排除](#troubleshooting) |65| `✘ Connection error` | 连接尝试抛出错误。请参阅 [故障排除](#troubleshooting) |

66| ``⏸ Pending approval (run `claude` to approve)`` | 您尚未批准的项目范围服务器。请参阅 [直接编辑 .mcp.json](#edit-mcp-json-directly) |66| ``⏸ Pending approval (run `claude` to approve)`` | 您尚未批准的项目范围服务器。请参阅 [直接编辑 .mcp.json](#edit-mcp-json-directly) |

67| `⊘ Disabled for this project (re-enable via /mcp)` | 由项目的 `disabledMcpServers` 列表为此项目关闭的服务器。请参阅 [禁用服务器而不删除它](https://code.claude.com/docs/zh-CN/mcp.md#disable-a-server-without-removing-it) |67| `⊘ Disabled for this project (re-enable via /mcp)` | 由项目的 `disabledMcpServers` 列表为此项目关闭的服务器。请参阅 [禁用服务器而不删除它](https://code.claude.com/docs/zh-CN/mcp.md#disable-a-server-without-removing-it) |

68| `✘ Blocked by enterprise managed policy` | 您组织的某项策略阻止了此服务器,因此 Claude Code 不会连接。请询问您的管理员是哪项策略。请参阅 [服务器状态](https://code.claude.com/docs/zh-CN/mcp.md#server-status) |

68 69 

69某些旧版 Windows 控制台,例如 Windows 10 上的默认控制台,不支持这些 Unicode 字形,并显示 `√` 和 `×` 代替 `✔` 和 `✘`。70某些旧版 Windows 控制台,例如 Windows 10 上的默认控制台,不支持这些 Unicode 字形,并显示 `√` 和 `×` 代替 `✔` 和 `✘`。

70 71 

model-config.md +19 −2

Details

679在终端输入框中键入时,该词还可以将该轮次提升到 `xhigh` effort。当它可以这样做时,该词会以彩虹色显示。需要 Claude Code v2.1.311 或更高版本。如果您开始新轮次时该词没有以彩虹色显示,请尝试以下方法之一:679在终端输入框中键入时,该词还可以将该轮次提升到 `xhigh` effort。当它可以这样做时,该词会以彩虹色显示。需要 Claude Code v2.1.311 或更高版本。如果您开始新轮次时该词没有以彩虹色显示,请尝试以下方法之一:

680 680 

681* 在不以 `/` 开头的提示词中重新键入该词,并确保它不在引号、括号、路径或命令等任何内容之内681* 在不以 `/` 开头的提示词中重新键入该词,并确保它不在引号、括号、路径或命令等任何内容之内

682* 如果 `CLAUDE_CODE_EFFORT_LEVEL` 设置为低于 `xhigh` 的级别,请取消设置它;或将您自己的 [`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) 提高到 `xhigh` 或更高;或请组织管理员提高您的[组织限制](#organization-effort-limits)682* 如果 `CLAUDE_CODE_EFFORT_LEVEL` 设置为低于 `xhigh` 的级别,请取消设置它。或者将您自己的 [`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) 提高到 `xhigh` 或更高,或请组织管理员提高您的[组织限制](#organization-effort-limits)

683* 在会话中运行 `/model` 切换到 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 5.1 模型。在该词无法提升轮次的情况下(例如在 Amazon Bedrock 上),请改为[设置 effort 级别](#set-the-effort-level)683* 在会话中运行 `/model` 切换到 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 5.1 模型。在该词无法提升轮次的情况下(例如在 Amazon Bedrock 上),请改为[设置 effort 级别](#set-the-effort-level)

684 684 

685#### 设置 effort 级别685#### 设置 effort 级别


689* **`/effort`**:运行 `/effort` 不带参数以打开交互式滑块,`/effort` 后跟级别名称以直接设置它,或 `/effort auto` 以清除活动模型的保存级别689* **`/effort`**:运行 `/effort` 不带参数以打开交互式滑块,`/effort` 后跟级别名称以直接设置它,或 `/effort auto` 以清除活动模型的保存级别

690* **在 `/model` 中**:选择模型时使用左/右箭头键调整 effort 滑块690* **在 `/model` 中**:选择模型时使用左/右箭头键调整 effort 滑块

691* **`--effort` 标志**:启动 Claude Code 时传递级别名称以为单个会话设置它691* **`--effort` 标志**:启动 Claude Code 时传递级别名称以为单个会话设置它

692* **环境变量**:将 `CLAUDE_CODE_EFFORT_LEVEL` 设置为级别名称或 `auto`692* **环境变量**:将 `CLAUDE_CODE_EFFORT_LEVEL` 设置为级别名称。要让 Claude Code [不发送 effort 级别](#send-no-effort-level),请改为将其设置为 `auto` 或 `unset`

693* **设置**:在 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings) 中设置每个模型的级别,或将 [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 设置为 `low`、`medium`、`high` 或 `xhigh` 作为没有级别的模型的默认值。`max` 在任一键中都不被接受为级别,`ultracode` 有其自己的 [`ultracode`](https://code.claude.com/docs/zh-CN/settings-reference#ultracode) 键693* **设置**:在 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings) 中设置每个模型的级别,或将 [`effortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#effortlevel) 设置为 `low`、`medium`、`high` 或 `xhigh` 作为没有级别的模型的默认值。`max` 在任一键中都不被接受为级别,`ultracode` 有其自己的 [`ultracode`](https://code.claude.com/docs/zh-CN/settings-reference#ultracode) 键

694* **从连接的设备**:在 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#what-connected-devices-see) 会话中,从您的手机或浏览器上的 effort 控件中选择级别。该级别仅适用于当前会话。需要 Claude Code v2.1.234 或更高版本694* **从连接的设备**:在 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md#what-connected-devices-see) 会话中,从您的手机或浏览器上的 effort 控件中选择级别。该级别仅适用于当前会话。需要 Claude Code v2.1.234 或更高版本

695* **Skill 和子代理 frontmatter**:在 [skill](https://code.claude.com/docs/zh-CN/skills.md#frontmatter-reference) 或[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#supported-frontmatter-fields) markdown 文件中设置 `effort` 以在该 skill 或子代理运行时覆盖 effort 级别695* **Skill 和子代理 frontmatter**:在 [skill](https://code.claude.com/docs/zh-CN/skills.md#frontmatter-reference) 或[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#supported-frontmatter-fields) markdown 文件中设置 `effort` 以在该 skill 或子代理运行时覆盖 effort 级别


711 711 

712在 v2.1.242 之前,Claude Code 可能会将 `/effort` 本身排队直到轮次结束;在不[获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话中(例如在[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)上)则始终如此。712在 v2.1.242 之前,Claude Code 可能会将 `/effort` 本身排队直到轮次结束;在不[获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话中(例如在[第三方提供商](https://code.claude.com/docs/zh-CN/third-party-integrations.md)上)则始终如此。

713 713 

714#### 不发送 effort 级别

715 

716当 Claude Code 不向[支持的模型](#adjust-effort-level)发送 effort 级别时,将应用 [API 的默认值](https://platform.claude.com/docs/en/build-with-claude/effort),而不是 Claude Code 的默认值。要让 Claude Code 不发送任何级别,请从导出了 `CLAUDE_CODE_EFFORT_LEVEL` 且其值为 `auto` 或 `unset` 的 shell 中启动 `claude`,这两个值的作用相同:

717 

718```bash theme={null}

719export CLAUDE_CODE_EFFORT_LEVEL=auto

720```

721 

722未发送任何级别时,会话标题和页脚不显示 effort 级别。要确认未发送任何级别,请在 Claude Code 提示符处运行 `/effort status`:

723 

724* **`Effort level: auto`**:未发送任何 effort 级别。

725* **`Effort level: auto (currently <level>)`**:仍在发送级别。如果低于 `max` 的 [`maxEffortLevel`](https://code.claude.com/docs/zh-CN/settings-reference#maxeffortlevel) 设置适用于活动模型,Claude Code 会发送其自己为该模型设定的默认值,并降低到该上限。请移除该设置或将其设置为 `max`。

726 

727> [!NOTE]

728>

729> 在 v2.1.304 之前,即使未发送任何级别,`/effort status` 也会打印 `Effort level: auto (currently high)`。

730 

714#### 自适应推理和固定思考预算731#### 自适应推理和固定思考预算

715 732 

716自适应推理使思考在每一步上可选,因此 Claude 可以更快地响应常规提示词,并为受益于它的步骤保留更深入的思考。如果您想要 Claude 比当前级别产生的更频繁或更少地思考,您可以直接在您的提示词或 `CLAUDE.md` 中说出来;模型在其 effort 设置内响应该指导。733自适应推理使思考在每一步上可选,因此 Claude 可以更快地响应常规提示词,并为受益于它的步骤保留更深入的思考。如果您想要 Claude 比当前级别产生的更频繁或更少地思考,您可以直接在您的提示词或 `CLAUDE.md` 中说出来;模型在其 effort 设置内响应该指导。

Details

861* `output_tokens`:输出 token 数量861* `output_tokens`:输出 token 数量

862* `cache_read_tokens`:从缓存读取的 token 数量862* `cache_read_tokens`:从缓存读取的 token 数量

863* `cache_creation_tokens`:用于创建缓存的 token 数量863* `cache_creation_tokens`:用于创建缓存的 token 数量

864* `cache_creation_5m_tokens`、`cache_creation_1h_tokens`:API 响应报告的以五分钟[缓存生命周期](https://code.claude.com/docs/zh-CN/prompt-caching.md#cache-lifetime)写入缓存的 token 数量,以及以一小时生命周期写入的数量。当 API 响应未报告这两项时,两者均为 `0`,即使 `cache_creation_tokens` 大于零也是如此。需要 Claude Code v2.1.300 或更高版本

864* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。865* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。

865* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送;有关其出现的条件,请参阅[事件关联属性](#event-correlation-attributes)表866* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送;有关其出现的条件,请参阅[事件关联属性](#event-correlation-attributes)表

866* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态867* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态

Details

287claude --permission-mode acceptEdits287claude --permission-mode acceptEdits

288```288```

289 289 

290## 使用 plan mode 在编辑前进行分析290## 使用计划模式在编辑前进行分析

291 291 

292Plan mode 告诉 Claude 研究并提议更改而不进行编辑。Claude 读取文件、运行 shell 命令进行探索并编写计划,但不编辑您的源代码。除了在[绕过权限可用](#skip-all-checks-with-bypasspermissions-mode)的交互式终端会话中,编辑保持阻止状态,直到您批准计划。292计划模式让 Claude 研究并提出更改方案,但不实际执行更改。Claude 会读取文件、运行 shell 命令进行探索并编写计划,但不会编辑您的源代码。除了在[可使用绕过权限](#skip-all-checks-with-bypasspermissions-mode)的交互式终端会话中之外,在您批准计划之前,编辑操作始终处于阻止状态。

293 293 

294shell 命令在规划期间发生的情况取决于会话,以下第一个匹配的情况适用:294规划期间 shell 命令的处理方式取决于会话,以下情况中第一个匹配的情况适用:

295 295 

296* **具有可用绕过权限的交互式终端会话**:分类器和提示都不适用于规划命令。[使用 bypassPermissions 模式跳过所有检查](#skip-all-checks-with-bypasspermissions-mode)涵盖仍会在那里提示的少数事项。296* **可使用绕过权限的交互式终端会话**:规划命令既不经过分类器,也不会弹出提示。[使用 bypassPermissions 模式跳过所有检查](#skip-all-checks-with-bypasspermissions-mode)介绍了在这种情况下仍会提示的少数几种操作。

297* **[Auto mode](https://code.claude.com/docs/zh-CN/auto-mode-config.md)可用且 `useAutoModeDuringPlan` 设置打开**,默认情况下是这样:分类器审查 shell 命令(除了[关键路径移除](#critical-paths))而不是提示您。批准的命令运行,拒绝的命令被阻止。297* **[自动模式](https://code.claude.com/docs/zh-CN/auto-mode-config.md)可用且 `useAutoModeDuringPlan` 设置已开启**(默认开启):分类器会审查除[关键路径删除](#critical-paths)以外的 shell 命令,而不是提示您。获批准的命令会运行,被拒绝的命令会被阻止。

298* **Auto mode 不可用,或 `useAutoModeDuringPlan` 关闭**:[内置只读集合](https://code.claude.com/docs/zh-CN/permissions.md#read-only-commands)外的命令会提示批准,包括当沙箱的[自动允许模式](https://code.claude.com/docs/zh-CN/sandboxing.md#sandbox-modes)启用时。298* **自动模式不可用,或 `useAutoModeDuringPlan` 已关闭**:[内置只读命令集](https://code.claude.com/docs/zh-CN/permissions.md#read-only-commands)以外的命令会提示您批准,即使启用了沙箱的[自动允许模式](https://code.claude.com/docs/zh-CN/sandboxing.md#sandbox-modes)也是如此。

299 299 

300通过按 `Shift+Tab` 或在单个提示前加上 `/plan` 进入 plan mode。您也可以从 CLI 启动 plan mode:300按 `Shift+Tab` 或在单条提示词前加上 `/plan` 前缀即可进入计划模式。您也可以从 CLI 以计划模式启动:

301 301 

302```bash theme={null}302```bash theme={null}

303claude --permission-mode plan303claude --permission-mode plan

304```304```

305 305 

306再次按 `Shift+Tab` 以退出 plan mode 而不批准计划。306再次按 `Shift+Tab` 可在不批准计划的情况下退出计划模式。

307 307 

308### 审查并批准计划308### 审阅并批准计划

309 309 

310当计划准备好时,Claude 会呈现它并询问如何继续。从该提示中,您可以选择:310计划准备就绪后,Claude 会展示计划并询问如何继续。在该提示中,您可以选择:

311 311 

312* **是的,并使用自动模式**:批准并以[自动模式](#eliminate-prompts-with-auto-mode)启动。如果自动模式不[可用于您的会话](#eliminate-prompts-with-auto-mode),例如因为您的组织关闭了它,此选项读取**是的,自动接受编辑**。如果您使用启用的绕过权限启动会话,该选项读取**是的,并为此会话切换到绕过权限(无进一步提示)**。312* **Yes, and use auto mode**:批准并以[自动模式](#eliminate-prompts-with-auto-mode)开始。如果自动模式[对您的会话不可用](#eliminate-prompts-with-auto-mode)(例如因为您的组织已将其关闭),此选项将显示为 **Yes, auto-accept edits**。如果您在启动会话时启用了绕过权限,此选项则显示为 **Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session**。

313* **是的,手动批准编辑**:批准并逐个审查每个编辑。313* **Yes, manually approve edits**:批准并逐一审阅每项编辑。

314* **否,继续规划**:保持在 plan mode 并告诉 Claude 要更改什么。314* **No, keep planning**:保持在计划模式,并告诉 Claude 需要更改什么。

315 315 

316批准计划退出 plan mode 并将会话切换到每个批准选项描述的权限模式,因此 Claude 开始编辑。要再次规划,使用 `Shift+Tab` 循环回到 plan mode,或在下一个提示前加上 `/plan`。316批准计划会退出计划模式,并将会话切换到各批准选项所描述的权限模式,然后 Claude 开始编辑。如需再次规划,可使用 `Shift+Tab` 循环切换回计划模式,或在下一条提示词前加上 `/plan` 前缀。

317 317 

318按 `Ctrl+G` 在默认文本编辑器中打开建议的计划并在 Claude 继续之前直接编辑它。当启用 [`showClearContextOnPlanAccept`](https://code.claude.com/docs/zh-CN/settings-reference#showclearcontextonplanaccept) 时,列表获得第一个选项,该选项批准计划并清除规划上下文。318按 `Ctrl+G` 可在默认文本编辑器中打开所提议的计划,并在 Claude 继续之前直接编辑。启用 [`showClearContextOnPlanAccept`](https://code.claude.com/docs/zh-CN/settings-reference#showclearcontextonplanaccept) 后,列表中会新增第一个选项,用于批准计划并清除规划上下文。

319 319 

320接受计划也会根据计划为会话提供[生成的标题](https://code.claude.com/docs/zh-CN/sessions.md#name-your-sessions),除非您已经命名了会话。320接受计划还会根据计划为会话[生成标题](https://code.claude.com/docs/zh-CN/sessions.md#name-your-sessions),除非您已经为该会话命名。

321 321 

322### 将 plan mode 设置为默认值322### 将计划模式设为默认

323 323 

324要使 plan mode 成为项目的终端会话的默认值,请在 `.claude/settings.json` 中将 `defaultMode` 设置为 `plan`,如[以不同的权限模式启动](#start-in-a-different-mode)下的示例所示。[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)启动的对话不读取项目设置以获取起始权限模式。在那里,改为在您的 VS Code 用户设置中将 `claudeCode.initialPermissionMode` 设置为 `plan`。324要将计划模式设为项目终端会话的默认模式,请在 `.claude/settings.json` 中将 `defaultMode` 设置为 `plan`,放置方式参见[以其他权限模式启动](#start-in-a-different-mode)下的示例。[VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)启动的对话不会从项目设置中读取初始权限模式。在该扩展中,请改为在 VS Code 用户设置中将 `claudeCode.initialPermissionMode` 设置为 `plan`。

325 325 

326## 使用自动模式消除权限提示326## 使用自动模式消除权限提示

327 327 

Details

4 4 

5# Anthropic 的插件市场5# Anthropic 的插件市场

6 6 

7> Anthropic 官方、社区和演示插件市场的 Claude Code:它们的名称、存储库、如何添加每个市场,以及在哪里浏览它们的插件。7> Anthropic 为 Claude Code 提供的官方和社区插件市场:它们的名称、仓库、如何添加每个市场,以及在哪里浏览它们的插件。

8 8 

9Anthropic 为 Claude Code 发布了三个通用插件市场:[官方](https://github.com/anthropics/claude-plugins-official)、[社区](https://github.com/anthropics/claude-plugins-community)和[演示](https://github.com/anthropics/claude-code)。每个都是其自己的 GitHub 存储库中的插件目录。当你在 Claude Code 会话中从其中一个安装插件时,你在 `@` 后面输入市场的名称,如 `/plugin install commit-commands@claude-plugins-official`。9Anthropic 为 Claude Code 发布了两个通用插件市场:[官方](https://github.com/anthropics/claude-plugins-official)和[社区](https://github.com/anthropics/claude-plugins-community)。每个都是其自己的 GitHub 仓库中的插件目录。当您在 Claude Code 会话中从其中一个安装插件时,需要在 `@` 后面输入市场的名称,如 `/plugin install commit-commands@claude-plugins-official`。

10 10 

11使用此页面来区分这三个市场,并找到检查官方市场是否包含给定插件的位置。11使用此页面来区分这两个市场,并找到检查官方市场是否包含给定插件的位置。

12 12 

13> [!NOTE]13> [!NOTE]

14>14>


19 19 

20转到你需要的页面部分:20转到你需要的页面部分:

21 21 

22* 要按存储库、市场名称和获取方式来区分这三个市场,请参阅 [Anthropic 的插件市场](#anthropic%E2%80%99s-marketplaces)。22* 要按仓库、市场名称和获取方式来区分这两个市场,请参阅 [Anthropic 的插件市场](#anthropic’s-marketplaces)。

23* 要在官方市场中查找插件,请参阅[在官方市场中查找插件](#find-plugins-in-the-official-marketplace)。23* 要在官方市场中查找插件,请参阅[在官方市场中查找插件](#find-plugins-in-the-official-marketplace)。

24 24 

25## Anthropic 的插件市场25## Anthropic 的插件市场

26 26 

27市场是一个插件目录,由存储库在其 `.claude-plugin/marketplace.json` 文件中定义。官方、社区和演示市场各自来自自己的 GitHub 存储库。Anthropic 还发布主题特定的市场,例如 `anthropics/skills` 和 `anthropics/knowledge-work-plugins`,你可以在 Claude Code 会话中使用 `/plugin marketplace add <owner>/<repo>` 添加。27市场是一个插件目录,由仓库在其 `.claude-plugin/marketplace.json` 文件中定义。官方市场和社区市场各自来自自己的 GitHub 仓库。Anthropic 还发布主题特定的市场,例如 `anthropics/skills` 和 `anthropics/knowledge-work-plugins`,您可以在 Claude Code 会话中使用 `/plugin marketplace add <owner>/<repo>` 添加。

28 28 

29此表给出了每个市场的存储库和市场名称,这是你从该市场安装插件时在 `@` 后面输入的内容。社区市场的名称是 `claude-community`,而不是其存储库名称。29此表给出了每个市场的存储库和市场名称,这是你从该市场安装插件时在 `@` 后面输入的内容。社区市场的名称是 `claude-community`,而不是其存储库名称。

30 30 

31| | 官方 | 社区 | 演示 |31| | 官方 | 社区 |

32| :- | :- | :- | :- |32| :- | :- | :- |

33| 存储库 | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) | [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/plugins) |33| 仓库 | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) |

34| 市场名称 | `claude-plugins-official` | `claude-community` | `claude-code-plugins` |34| 市场名称 | `claude-plugins-official` | `claude-community` |

35| 其中包含的内容 | Anthropic 维护的插件,加上来自合作伙伴和其他作者的插件 | 第三方插件,由其作者提交给 Anthropic | 一小组示例插件,展示插件可以包含的内容 |35| 其中包含的内容 | Anthropic 维护的插件,加上来自合作伙伴和其他作者的插件 | 第三方插件,由其作者提交给 Anthropic |

36| 获取方式 | Claude Code 在你首次启动交互式终端会话时添加它,除非[托管策略](https://code.claude.com/docs/zh-CN/plugins/org.md#allow-the-official-marketplace-and-your-own)或 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` 阻止它。如果缺少,请参阅[市场 `claude-plugins-official` 未找到](https://code.claude.com/docs/zh-CN/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) | 你在 Claude Code 会话中使用 `/plugin marketplace add anthropics/claude-plugins-community` 添加它 | 你在 Claude Code 会话中使用 `/plugin marketplace add anthropics/claude-code` 添加它 |36| 获取方式 | Claude Code 在您首次启动交互式终端会话时添加它,除非[托管策略](https://code.claude.com/docs/zh-CN/plugins/org.md#allow-the-official-marketplace-and-your-own)或 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` 阻止它。如果缺少,请参阅[市场 `claude-plugins-official` 未找到](https://code.claude.com/docs/zh-CN/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) | 您在 Claude Code 会话中使用 `/plugin marketplace add anthropics/claude-plugins-community` 添加它 |

37 37 

38如果你编写了插件并希望其他人安装它,请参阅[发布插件](https://code.claude.com/docs/zh-CN/plugins/publish.md),其中涵盖了你自己的市场和提交到 Anthropic 的目录。38如果你编写了插件并希望其他人安装它,请参阅[发布插件](https://code.claude.com/docs/zh-CN/plugins/publish.md),其中涵盖了你自己的市场和提交到 Anthropic 的目录。

39 39 

40### `anthropics/claude-code` 中的演示市场40### 已弃用的 `claude-code-plugins` 市场

41 41 

42如果教程或较旧的说明告诉你运行 `/plugin marketplace add anthropics/claude-code`,这会添加演示市场,名为 `claude-code-plugins`。它不是官方市场。42> [!WARNING]

43>

44> `anthropics/claude-code` 中的 `claude-code-plugins` 市场已弃用。要添加插件,请在 shell 中运行 `claude plugin install <plugin>@claude-plugins-official`,并跳过任何运行 `/plugin marketplace add anthropics/claude-code` 的教程步骤。

45 

46除非您安装了下面两个插件之一,否则可以保持您的 `claude-code-plugins` 插件和该市场不变。它们会从 `claude-plugins-official` 仓库进行更新。

43 47 

44演示市场的大多数插件也在官方市场中以相同的名称存在。例如,`code-review`、`feature-dev` 和 `commit-commands` 都在两者中。请从 `claude-plugins-official` 安装这些插件,以免安装两个副本。48* **`ralph-wiggum`**:此插件现在名为 `ralph-loop`,其命令以 `/ralph-loop:` 开头。如果这些命令不可用,请在 shell 中运行 `claude plugin install ralph-loop@claude-plugins-official`。

49* **`claude-opus-4-5-migration`**:此插件已停用,请在 shell 中运行 `claude plugin uninstall claude-opus-4-5-migration@claude-code-plugins` 将其移除。

50 

51如果有任何其他插件停止工作,请参阅[插件已安装但无法工作](https://code.claude.com/docs/zh-CN/plugins/troubleshooting.md#plugin-installed-but-not-working)。

45 52 

46## 在官方市场中查找插件53## 在官方市场中查找插件

47 54 


62 69 

63要从桌面应用或脚本安装,或查看云会话加载的内容,请参阅[安装插件](https://code.claude.com/docs/zh-CN/plugins/install.md)。70要从桌面应用或脚本安装,或查看云会话加载的内容,请参阅[安装插件](https://code.claude.com/docs/zh-CN/plugins/install.md)。

64 71 

65### 添加社区或演示市场72### 添加社区市场

66 

67社区和演示市场在你在 Claude Code 会话中添加它们之前不会注册:

68 73 

69* **社区**:运行 `/plugin marketplace add anthropics/claude-plugins-community`,然后使用 `@claude-community` 后缀安装。74社区市场在您添加之前不会注册。在 Claude Code 会话中运行 `/plugin marketplace add anthropics/claude-plugins-community`,然后使用 `@claude-community` 后缀安装。

70* **演示**:运行 `/plugin marketplace add anthropics/claude-code`,然后使用 `@claude-code-plugins` 后缀安装。

71 75 

72如果 `claude-plugins-official` 不在 `/plugin` 的 **Marketplaces** 选项卡上,用 `/plugin marketplace add anthropics/claude-plugins-official` 以相同的方式添加它。76如果 `claude-plugins-official` 不在 `/plugin` 的 **Marketplaces** 选项卡上,用 `/plugin marketplace add anthropics/claude-plugins-official` 以相同的方式添加它。

73 77 

Details

638| 退出码 | 结论行 | 含义 |638| 退出码 | 结论行 | 含义 |

639| :- | :- | :- |639| :- | :- | :- |

640| `0` | `Validation passed` 或 `Validation passed with warnings` | 清单可以加载。使用 `--strict` 时,也没有警告 |640| `0` | `Validation passed` 或 `Validation passed with warnings` | 清单可以加载。使用 `--strict` 时,也没有警告 |

641| `1` | `Validation failed` 或 `Validation failed (--strict treats warnings as errors)` | 存在错误,或在 `--strict` 下存在警告 |641| `1` | `Validation failed` 或 `Validation failed (--strict treats warnings as errors)` | 存在错误,或在 `--strict` 下存在警告。无论是否使用 `--strict`,[建议](#advice-on-the-readme)都不计入 |

642| `2` | `Unexpected error during validation: <reason>` | 验证器本身失败,例如遇到不可读的路径 |642| `2` | `Unexpected error during validation: <reason>` | 验证器本身失败,例如遇到不可读的路径 |

643 643 

644使用 `--json` 时,Claude Code 将报告作为一个 JSON 对象写入 stdout,包含以下顶级字段:644使用 `--json` 时,Claude Code 将报告作为一个 JSON 对象写入 stdout,包含以下顶级字段:


647* `strict`:运行是否将警告视为错误647* `strict`:运行是否将警告视为错误

648* `target`:Claude Code 验证的解析后路径648* `target`:Claude Code 验证的解析后路径

649* `manifest`:清单自身的结果,对于没有清单的运行为 `null`649* `manifest`:清单自身的结果,对于没有清单的运行为 `null`

650* `contents`:每个文件的结果,各自指明其 `file`,并携带 `errors`、`warnings` 和 `notes` 数组650* `contents`:每个文件的结果,各自指明其 `file`,并携带 `errors`、`warnings` 和 `notes` 数组。没有错误、警告或说明的文件不会有条目,因此没有可报告的内容时 `contents` 为空。对于[同时包含 `marketplace.json` 和 `plugin.json` 的目录](#validate-a-directory),`manifest` 为 `marketplace.json` 的结果,`plugin.json` 的结果放在 `contents` 中

651 * `gatingHooks`:每个可以拒绝操作的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) hook(例如 `tool.call` hook)是否具有 [`.catch` 处理程序](https://code.claude.com/docs/zh-CN/plugins/mods/events#handle-a-hook-that-fails)。每一项给出 `module`、`pattern`、`hook` 和 `hasCatch`。需要 Claude Code v2.1.290 或更高版本651 * `gatingHooks`:每个可以拒绝操作的 [mod](https://code.claude.com/docs/zh-CN/plugins/mods/overview.md) hook(例如 `tool.call` hook)是否具有 [`.catch` 处理程序](https://code.claude.com/docs/zh-CN/plugins/mods/events#handle-a-hook-that-fails)。每一项给出 `module`、`pattern`、`hook` 和 `hasCatch`。需要 Claude Code v2.1.290 或更高版本

652* `advice`:本次运行给出的[建议](#advice-on-the-readme),每个条目以 `file` 指明 README,并携带 `message` 以及要粘贴的 `installLine`。没有建议时为空。需要 Claude Code v2.1.295 或更高版本

652 653 

653以 `2` 退出时,命令不向 stdout 写入任何内容。错误消息输出到 stderr。654以 `2` 退出时,命令不向 stdout 写入任何内容。错误消息输出到 stderr。

654 655 

656#### 关于 README 的建议

657 

658`claude plugin validate` 输出中的 `Advice` 块表示某个插件的 README 中没有从市场安装该插件的行,并为您提供一行可添加的内容。建议既不是错误也不是警告。无论是否使用 `--strict`,它都不会改变结论行或退出码。它需要 Claude Code v2.1.295 或更高版本。

659 

660例如,验证 `acme-tools` 市场的目录时,会为其 `deploy-helper` 插件打印以下建议:

661 

662```text theme={null}

663Validating marketplace manifest: /path/to/acme-tools/.claude-plugin/marketplace.json

664 

665ℹ Advice (does not change the verdict):

666 

667 ❯ /path/to/acme-tools/plugins/deploy-helper/README.md: This README has no line that installs "deploy-helper" from a marketplace. Add the install line, which works in one step on Claude Code 2.1.275 or later.

668 /plugin install deploy-helper --marketplace acme/tools

669 

670✔ Validation passed

671```

672 

673要清除该建议,请将建议的行粘贴到其指出的 README 中,然后在 shell 中再次运行 `claude plugin validate`。`Advice` 块将消失。

674 

675如果建议的行包含占位符 `<owner>/<repo>`,原样粘贴不会清除该建议。请先获取真实来源:

676 

677* **您验证的是插件自身的目录**:当市场从其自身内部的某个目录列出该插件时,请改为验证该市场的目录。当市场从其他位置(例如 GitHub 仓库)列出该插件时,请自行填写 `<owner>/<repo>`

678* **您验证的是市场的目录**:Claude Code 会根据该目录顶层 `.git` 目录的 `origin` 远程填写来源。当无法使用该远程时(例如不存在远程),请自行将 `<owner>/<repo>` 替换为您市场的来源

679 

680当 `plugin install` 或其简写形式 `plugin i` 在同一行后接以下任一内容时,您已编写的安装行会被计入。`/plugin` 和 `claude plugin` 两种写法都计入:

681 

682* `<plugin>@<marketplace>`,例如 `/plugin install deploy-helper@acme-tools`

683* 插件名称和 `--marketplace <source>`,例如 `/plugin install deploy-helper --marketplace acme/tools`

684 

655## claude plugin marketplace 命令685## claude plugin marketplace 命令

656 686 

657从您的 shell 运行 `claude plugin marketplace <subcommand>` 来添加、列出、刷新和移除您安装插件的市场。687从您的 shell 运行 `claude plugin marketplace <subcommand>` 来添加、列出、刷新和移除您安装插件的市场。

Details

376* [插件结构和测试](https://claude.com/docs/plugins/build):同一插件文件夹在 claude.ai 和 Cowork 中安装。某些组件仅限 Claude Code,[组件支持表](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app)列出了在每个平台上加载的组件376* [插件结构和测试](https://claude.com/docs/plugins/build):同一插件文件夹在 claude.ai 和 Cowork 中安装。某些组件仅限 Claude Code,[组件支持表](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app)列出了在每个平台上加载的组件

377* [插件清单参考](https://code.claude.com/docs/zh-CN/plugins/manifest-reference.md):每个 `plugin.json` 字段、路径规则和目录377* [插件清单参考](https://code.claude.com/docs/zh-CN/plugins/manifest-reference.md):每个 `plugin.json` 字段、路径规则和目录

378* [技能](https://code.claude.com/docs/zh-CN/skills.md):编写您的插件提供的技能378* [技能](https://code.claude.com/docs/zh-CN/skills.md):编写您的插件提供的技能

379* [Anthropic 在 claude-code 存储库中的插件](https://github.com/anthropics/claude-code/tree/main/plugins):本页面布局的完整工作示例,例如 `feature-dev` 和 `code-review`379* [Anthropic 在 claude-plugins-official 仓库中的插件](https://github.com/anthropics/claude-plugins-official/tree/main/plugins):本页面布局的完整工作示例,例如 `feature-dev` 和 `code-review`

Details

220 220 

221## 托管你的 marketplace221## 托管你的 marketplace

222 222 

223一旦你可以从你自己机器上的 marketplace 安装 plugin,如[创建一个 marketplace](#create-a-marketplace) 中所示,将 marketplace 目录推送到 git 主机。223当您能够像[创建市场](#create-a-marketplace)中那样,在自己的机器上从市场安装插件后,请将市场目录推送到 git 托管平台。推送之前,请为市场指定一个其他作者不太可能使用的顶层 `name`,因为用户[不能拥有两个同名的市场](https://code.claude.com/docs/zh-CN/plugins/marketplace-reference.md#marketplace-file)。

224 224 

225你的队友然后在他们的 shell 中为 GitHub 仓库运行 `claude plugin marketplace add <owner>/<repo>`,或使用仓库 URL 运行相同的命令。然后他们按名称安装 plugin,如[演练](#create-a-marketplace)中所示。225你的队友然后在他们的 shell 中为 GitHub 仓库运行 `claude plugin marketplace add <owner>/<repo>`,或使用仓库 URL 运行相同的命令。然后他们按名称安装 plugin,如[演练](#create-a-marketplace)中所示。

226 226 

Details

193 193 

194| Source | What you type | Example |194| Source | What you type | Example |

195| :- | :- | :- |195| :- | :- | :- |

196| GitHub repository | `owner/repo`。添加 `#ref` 以固定分支或标签。 | `/plugin marketplace add anthropics/claude-code`,或 `/plugin marketplace add your-org/plugins#v1.2.0` 以固定 `v1.2.0` 标签 |196| GitHub 仓库 | `owner/repo`。添加 `#ref` 以固定分支或标签。 | `/plugin marketplace add anthropics/claude-plugins-official`,或 `/plugin marketplace add your-org/plugins#v1.2.0` 以固定 `v1.2.0` 标签 |

197| Git repository on any host | 完整的克隆 URL。添加 `#ref` 以固定分支或标签。 | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |197| Git repository on any host | 完整的克隆 URL。添加 `#ref` 以固定分支或标签。 | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |

198| Local directory or file | 相对或绝对路径到包含 `.claude-plugin/marketplace.json` 的目录,或到 JSON 文件本身。以 `./` 或 `../` 开始相对路径,因为 Claude Code 将裸 `name/name` 读取为 GitHub 存储库。 | `/plugin marketplace add ./my-marketplace` |198| Local directory or file | 相对或绝对路径到包含 `.claude-plugin/marketplace.json` 的目录,或到 JSON 文件本身。以 `./` 或 `../` 开始相对路径,因为 Claude Code 将裸 `name/name` 读取为 GitHub 存储库。 | `/plugin marketplace add ./my-marketplace` |

199| Hosted `marketplace.json` | 其 `https://` URL | `/plugin marketplace add https://example.com/marketplace.json` |199| Hosted `marketplace.json` | 其 `https://` URL | `/plugin marketplace add https://example.com/marketplace.json` |


383 383 

384## Next steps384## Next steps

385 385 

386* [Anthropic's marketplaces](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md):官方、社区和演示市场的区别以及在哪里浏览每个市场386* [Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md):官方市场和社区市场的区别以及在哪里浏览每个市场

387* [Plugin loading reference](https://code.claude.com/docs/zh-CN/plugins/loading.md):为什么插件加载、未加载或在更新后未更改387* [Plugin loading reference](https://code.claude.com/docs/zh-CN/plugins/loading.md):为什么插件加载、未加载或在更新后未更改

388* [Plugin security and trust](https://code.claude.com/docs/zh-CN/plugins/security.md):在从您不认识的市场安装插件前要查看的内容388* [Plugin security and trust](https://code.claude.com/docs/zh-CN/plugins/security.md):在从您不认识的市场安装插件前要查看的内容

389* [Troubleshoot plugins](https://code.claude.com/docs/zh-CN/plugins/troubleshooting.md):安装和市场错误消息及其修复389* [Troubleshoot plugins](https://code.claude.com/docs/zh-CN/plugins/troubleshooting.md):安装和市场错误消息及其修复

Details

392| `$.session.messages()` | 最新的 4,096 个条目 |392| `$.session.messages()` | 最新的 4,096 个条目 |

393| `$.ui.invalidate('ui.render')` 重绘 | 限制为每秒 10 次;在终端中,对于可见窗格、展开区域以及输入框下方的提示行,限制为每秒 30 次。更早到达的调用会被合并。 |393| `$.ui.invalidate('ui.render')` 重绘 | 限制为每秒 10 次;在终端中,对于可见窗格、展开区域以及输入框下方的提示行,限制为每秒 30 次。更早到达的调用会被合并。 |

394| `$.ui.toast` | 显示 4 秒,除非您传入 `{ timeoutMs }`。在[经典渲染器](https://code.claude.com/docs/zh-CN/fullscreen.md#enable-fullscreen-rendering)中,mod 较新的 toast 可能会[取代其较早的 toast](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear),无论较早的 toast 正在显示还是正在等待显示。 |394| `$.ui.toast` | 显示 4 秒,除非您传入 `{ timeoutMs }`。在[经典渲染器](https://code.claude.com/docs/zh-CN/fullscreen.md#enable-fullscreen-rendering)中,mod 较新的 toast 可能会[取代其较早的 toast](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear),无论较早的 toast 正在显示还是正在等待显示。 |

395| 非用户主动打开的窗格 | 从终端第 144 列起放置;用户打开过一次后,从第 110 列起放置 |395| 非用户主动打开的窗格 | 终端至少 144 列宽时放置;用户打开过一次后,110 列宽即可 |

396| mods API 调用参数的嵌套深度 | 28,000 层。超过此深度,调用会被拒绝,消息以 `nesting deeper than 28000 levels is not supported` 结尾。需要 Claude Code v2.1.299 或更高版本。 |396| mods API 调用参数的嵌套深度 | 28,000 层。超过此深度,调用会被拒绝,消息以 `nesting deeper than 28000 levels is not supported` 结尾。需要 Claude Code v2.1.299 或更高版本。 |

397| 传递给 `next` 的已更改事件的嵌套深度,[异步生成器 hook](#events)(例如 `turn.step` 上的 hook)除外 | 28,000 层。超过此深度,`next` 会拒绝,消息以 `nesting deeper than 28000 levels is not supported` 结尾。需要 Claude Code v2.1.299 或更高版本。 |397| 传递给 `next` 的已更改事件的嵌套深度,[异步生成器 hook](#events)(例如 `turn.step` 上的 hook)除外 | 28,000 层。超过此深度,`next` 会拒绝,消息以 `nesting deeper than 28000 levels is not supported` 结尾。需要 Claude Code v2.1.299 或更高版本。 |

398| hook 返回值的嵌套深度,`ui.render`、`ui.resolve` 和异步生成器 hook 除外 | 28,000 层。超过此深度,该 hook 的结果会被拒绝,[报告此问题的通知](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)中包含 `nesting deeper than 28000 levels is not supported`。需要 Claude Code v2.1.299 或更高版本。 |398| hook 返回值的嵌套深度,`ui.render`、`ui.resolve` 和异步生成器 hook 除外 | 28,000 层。超过此深度,该 hook 的结果会被拒绝,[报告此问题的通知](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)中包含 `nesting deeper than 28000 levels is not supported`。需要 Claude Code v2.1.299 或更高版本。 |

Details

66>66>

67> 插件市场不是 [Claude Marketplace](https://claude.com/marketplace)。Claude Marketplace 是 claude.com/marketplace 上的网站,您可以在其中浏览插件、连接器、合作伙伴产品和服务合作伙伴。它不是您使用 `/plugin marketplace add` 添加的市场。67> 插件市场不是 [Claude Marketplace](https://claude.com/marketplace)。Claude Marketplace 是 claude.com/marketplace 上的网站,您可以在其中浏览插件、连接器、合作伙伴产品和服务合作伙伴。它不是您使用 `/plugin marketplace add` 添加的市场。

68 68 

69Claude Code 在您第一次启动交互式终端会话时添加 Anthropic 的官方市场,除非[托管策略](https://code.claude.com/docs/zh-CN/plugins/org.md#allow-the-official-marketplace-and-your-own)阻止它。Claude Code 不会自行添加 Anthropic 的社区和演示市场。要区分三个 Anthropic 市场,请阅读 [Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md)。要查看官方市场列出的内容,请在会话中打开 `/plugin` 的**发现**选项卡,或浏览 [Claude Marketplace](https://claude.com/marketplace/plugins)。69Claude Code 在您第一次启动交互式终端会话时添加 Anthropic 的官方市场,除非[托管策略](https://code.claude.com/docs/zh-CN/plugins/org.md#allow-the-official-marketplace-and-your-own)阻止它。Claude Code 不会自行添加 Anthropic 的社区市场。要区分 Anthropic 的各个市场,请阅读 [Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md)。要查看官方市场列出的内容,请在会话中打开 `/plugin` 的**发现**选项卡,或浏览 [Claude Marketplace](https://claude.com/marketplace/plugins)。

70 70 

71此图显示了从市场到您的会话的路径。市场列出一个插件,您安装该插件,Claude Code 加载其组件。71此图显示了从市场到您的会话的路径。市场列出一个插件,您安装该插件,Claude Code 加载其组件。

72 72 


88 88 

89市场的名称将其放在三个层级之一中。Claude Code 仅接受来自 `github.com/anthropics/` 存储库的官方和社区名称:89市场的名称将其放在三个层级之一中。Claude Code 仅接受来自 `github.com/anthropics/` 存储库的官方和社区名称:

90 90 

91* **官方**:具有 Anthropic [官方市场名称](https://code.claude.com/docs/zh-CN/plugins/security.md#official-marketplace-names)之一的市场,包括 `claude-plugins-official` 和演示市场 `claude-code-plugins`。91* **官方**:具有 Anthropic [官方市场名称](https://code.claude.com/docs/zh-CN/plugins/security.md#official-marketplace-names)之一的市场,包括 `claude-plugins-official` 和 `claude-code-plugins`。

92* **社区**:具有 Anthropic 社区名称之一的市场,例如 `claude-community`。[按名称识别 Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/security.md#marketplace-tiers)列出了它们。92* **社区**:具有 Anthropic 社区名称之一的市场,例如 `claude-community`。[按名称识别 Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/security.md#marketplace-tiers)列出了它们。

93* **第三方**:所有其他市场。您的同事或您的组织发布的市场是第三方。93* **第三方**:所有其他市场。您的同事或您的组织发布的市场是第三方。

94 94 

Details

96}96}

97```97```

98 98 

99在您的 shell 中,推送前在仓库中运行 `claude plugin validate .`。有关该运行检查的内容,请参阅[验证目录](https://code.claude.com/docs/zh-CN/plugins/cli-reference.md#validate-a-directory)。99将 `your-marketplace` 替换为其他作者不太可能选用的名称,因为用户[不能拥有两个同名的市场](https://code.claude.com/docs/zh-CN/plugins/marketplace-reference.md#marketplace-file)。在您的 shell 中,推送前在仓库中运行 `claude plugin validate .`。有关该运行检查的内容,请参阅[验证目录](https://code.claude.com/docs/zh-CN/plugins/cli-reference.md#validate-a-directory)。

100 100 

101[创建市场](https://code.claude.com/docs/zh-CN/plugins/create-marketplace.md)涵盖了一个存储库中有多个插件的布局。101[创建市场](https://code.claude.com/docs/zh-CN/plugins/create-marketplace.md)涵盖了一个存储库中有多个插件的布局。

102 102 

Details

76* `first-party-plugins`76* `first-party-plugins`

77* `claude-tag-plugins`77* `claude-tag-plugins`

78 78 

79有关官方、社区和演示市场的区别以及在哪里浏览每个市场列出的内容,请参阅 [Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md)。79有关官方市场和社区市场的区别以及在哪里浏览每个市场列出的内容,请参阅 [Anthropic 的市场](https://code.claude.com/docs/zh-CN/plugins/anthropic-marketplaces.md)。

80 80 

81## 在安装前审查插件81## 在安装前审查插件

82 82 

remote-control.md +84 −84

Details

37 * 如果您仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,Remote Control 保持可用,除非您的组织需要[受信任的设备](#trusted-devices)。如果需要,取消设置该变量以使用 Remote Control。使用设置了任一变量的 Remote Control 需要 Claude Code v2.1.283 或更高版本,在 Claude Desktop 应用中则需要 v2.1.304 或更高版本。37 * 如果您仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,Remote Control 保持可用,除非您的组织需要[受信任的设备](#trusted-devices)。如果需要,取消设置该变量以使用 Remote Control。使用设置了任一变量的 Remote Control 需要 Claude Code v2.1.283 或更高版本,在 Claude Desktop 应用中则需要 v2.1.304 或更高版本。

38* **工作区信任**:在您尚未信任的目录中,`claude remote-control` 会打印信任该目录会启用的功能,并在启动前询问 `Trust <directory>? [y/N]`。回答 `y` 会保存该选择,但在您的主目录中除外,在主目录中信任永远不会被保存,每次运行时都会返回该问题。当其标准输入或输出不是终端时,该命令无法询问并以 [`Workspace not trusted`](https://code.claude.com/docs/zh-CN/errors#workspace-not-trusted-when-starting-remote-control) 错误退出。38* **工作区信任**:在您尚未信任的目录中,`claude remote-control` 会打印信任该目录会启用的功能,并在启动前询问 `Trust <directory>? [y/N]`。回答 `y` 会保存该选择,但在您的主目录中除外,在主目录中信任永远不会被保存,每次运行时都会返回该问题。当其标准输入或输出不是终端时,该命令无法询问并以 [`Workspace not trusted`](https://code.claude.com/docs/zh-CN/errors#workspace-not-trusted-when-starting-remote-control) 错误退出。

39 39 

40## 启动远程控制会话40## 启动 Remote Control 会话

41 41 

42您可以从 CLI、[Claude Desktop 应用](https://code.claude.com/docs/zh-CN/desktop.md)或 VS Code 扩展启动远程控制会话。CLI 提供三种调用模式;Desktop 应用和 VS Code 使用 `/remote-control` 命令。42您可以从 CLI、[Claude Desktop 应用](https://code.claude.com/docs/zh-CN/desktop.md)或 VS Code 扩展启动 Remote Control 会话。CLI 提供三种调用模式;Desktop 应用和 VS Code 使用 `/remote-control` 命令。

43 43 

44**服务器模式**44**服务器模式**

45 45 

46在您的项目目录中,运行:46在项目目录中运行:

47 47 

48```bash theme={null}48```bash theme={null}

49claude remote-control49claude remote-control

50```50```

51 51 

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

53 53 

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

55 55 

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

57 57 

58| 标志 | 描述 |58| 标志 | 描述 |

59| - | - |59| - | - |

60| `--name "My Project"` | 设置自定义会话标题,在 claude.ai/code 的会话列表中可见。 |60| `--name "My Project"` | 设置自定义会话标题,该标题会显示在 claude.ai/code 的会话列表中。 |

61| `--remote-control-session-name-prefix <prefix>` | 当未设置显式名称时,自动生成的会话名称的前缀。默认为您机器的主机名,生成类似 `myhost-graceful-unicorn` 的名称。设置 `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` 可获得相同效果。 |61| `--remote-control-session-name-prefix <prefix>` | 未设置显式名称时,自动生成的会话名称所用的前缀。默认为您机器的主机名,生成类似 `myhost-graceful-unicorn` 的名称。设置 `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` 可达到相同效果。 |

62| `-c`, `--continue` | 恢复此目录中最后一个服务器启动的会话,而不是创建新会话。请参阅[停止服务器后恢复会话](#resume-sessions-after-stopping-the-server)。不能与 `--session-id`、`--spawn`、`--capacity` 或 `--create-session-in-dir` 结合使用。需要 Claude Code v2.1.200 或更高版本。 |62| `-c`, `--continue` | 恢复此目录中上一个服务器启动时使用的会话,而不是创建新会话。请参阅[停止服务器后恢复会话](#resume-sessions-after-stopping-the-server)。不能与 `--session-id`、`--spawn`、`--capacity` 或 `--create-session-in-dir` 组合使用。需要 Claude Code v2.1.200 或更高版本。 |

63| `--session-id <id>` | 按其 ID 恢复一个会话。请参阅[停止服务器后恢复会话](#resume-sessions-after-stopping-the-server)。不能与 `--continue`、`--spawn`、`--capacity` 或 `--create-session-in-dir` 结合使用。需要 Claude Code v2.1.200 或更高版本。 |63| `--session-id <id>` | 按 ID 恢复某个会话。请参阅[停止服务器后恢复会话](#resume-sessions-after-stopping-the-server)。不能与 `--continue`、`--spawn`、`--capacity` 或 `--create-session-in-dir` 组合使用。需要 Claude Code v2.1.200 或更高版本。 |

64| `--spawn <mode>` | 服务器创建会话的方式。 • `same-dir`(未保存模式时的默认值):所有会话共享当前工作目录,因此如果编辑相同文件可能会冲突。 • `worktree`:每个按需会话获得自己的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md)。需要 git 仓库或 [`WorktreeCreate` hook](https://code.claude.com/docs/zh-CN/hooks#worktreecreate)。 • `session`:单会话模式。恰好服务一个会话并拒绝其他连接。仅在启动时设置。 在运行时按 `w` 在 `same-dir` 和 `worktree` 之间切换。您切换到的模式会成为[此项目的默认模式](#set-the-default-spawn-mode-for-a-project)。 |64| `--spawn <mode>` | 服务器创建会话的方式。 • `same-dir`(未保存模式时的默认值):所有会话共享当前工作目录,因此编辑相同文件时可能会发生冲突。 • `worktree`:每个按需创建的会话都有自己的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md)。需要 git 仓库或 [`WorktreeCreate` hook](https://code.claude.com/docs/zh-CN/hooks#worktreecreate)。 • `session`:单会话模式。仅服务一个会话并拒绝其他连接。只能在启动时设置。 在运行时按 `w` 可在 `same-dir` 和 `worktree` 之间切换。您切换到的模式会成为[此项目的默认模式](#set-the-default-spawn-mode-for-a-project)。 |

65| `--capacity <N>` | 最大并发会话数。默认为 32。不能与 `--spawn=session` 一起使用。 |65| `--capacity <N>` | 最大并发会话数。默认为 32。不能与 `--spawn=session` 一起使用。 |

66| `--[no-]create-session-in-dir` | 服务器启动时在当前目录中预创建一个会话,以便您有地方立即输入。在 `worktree` 模式下,此会话保留在当前目录中,而按需会话获得隔离的 worktree。默认启用。如果您传递 `--no-create-session-in-dir` 以不创建任何会话启动,Claude Code 会在您停止服务器时存档服务器的会话,因此没有任何内容可[恢复](#resume-sessions-after-stopping-the-server)。 |66| `--[no-]create-session-in-dir` | 服务器启动时在当前目录中预先创建一个会话,以便您可以立即开始输入。在 `worktree` 模式下,此会话保留在当前目录中,而按需创建的会话则获得独立的 worktree。默认开启。如果您传入 `--no-create-session-in-dir` 以不带任何会话启动,Claude Code 会在您停止服务器时归档服务器的会话,因此将没有可[恢复](#resume-sessions-after-stopping-the-server)的会话。 |

67| `--permission-mode <mode>` | 为服务器的会话设置起始[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md),例如 `acceptEdits`。接受 `manual` 作为 `default` 的别名;无法识别的模式会在启动时停止服务器并列出有效模式。 |67| `--permission-mode <mode>` | 为服务器的会话设置初始[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md),例如 `acceptEdits`。接受 `manual` 作为 `default` 的别名;无法识别的模式会使服务器在启动时停止并列出有效模式。 |

68| `--chrome` / `--no-chrome` | 在服务器创建的会话中打开或关闭 [Chrome 集成](https://code.claude.com/docs/zh-CN/chrome.md),以便 Claude 可以在您从另一台设备工作时在您的机器上使用 Chrome。如果没有任一标志,服务器预创建的会话和您从 claude.ai/code 或 Claude 应用自己启动的任何会话都以 Chrome 关闭开始,即使您[默认启用了 Chrome](https://code.claude.com/docs/zh-CN/chrome.md#enable-chrome-by-default)。服务器为您的[项目](https://code.claude.com/docs/zh-CN/claude-projects.md)线程之一启动的会话改为遵循该设置,除非在 `bypassPermissions` 模式下。需要 Claude Code v2.1.273 或更高版本。 |68| `--chrome` / `--no-chrome` | 在服务器创建的会话中打开或关闭 [Chrome 集成](https://code.claude.com/docs/zh-CN/chrome.md),以便您在另一台设备上工作时 Claude 可以使用您机器上的 Chrome。如果不带任一标志,服务器预先创建的会话以及您自己从 claude.ai/code 或 Claude 应用启动的任何会话都会以关闭 Chrome 的状态开始,即使您已[默认启用 Chrome](https://code.claude.com/docs/zh-CN/chrome.md#enable-chrome-by-default)。服务器为您的某个[项目](https://code.claude.com/docs/zh-CN/claude-projects.md)线程启动的会话则遵循该设置,但 `bypassPermissions` 模式除外。需要 Claude Code v2.1.273 或更高版本。 |

69| `-d`, `--debug[=<filter>]` | 为服务器打开调试日志记录,可选择按类别过滤。仅以 `=` 形式传递过滤器,例如 `--debug=api,hooks`。需要 Claude Code v2.1.282 或更高版本。 |69| `-d`, `--debug[=<filter>]` | 为服务器开启调试日志,可选择按类别过滤。只能以 `=` 形式传入过滤器,例如 `--debug=api,hooks`。需要 Claude Code v2.1.282 或更高版本。 |

70| `--debug-file <path>` | 将调试日志写入给定文件。 |70| `--debug-file <path>` | 将调试日志写入指定文件。 |

71| `--verbose` | 显示详细的连接和会话日志。 |71| `--verbose` | 显示详细的连接和会话日志。 |

72| `--sandbox`, `--no-sandbox` | 已在 v2.1.300 中移除。如果您传递任一标志,服务器会[报错退出](https://code.claude.com/docs/zh-CN/errors.md#sandbox-is-not-supported-by-claude-remote-control)而不是启动。 |72| `--sandbox`, `--no-sandbox` | 已在 v2.1.300 中移除。如果您传入任一标志,服务器会[报错退出](https://code.claude.com/docs/zh-CN/errors.md#sandbox-is-not-supported-by-claude-remote-control),而不是启动。 |

73 73 

74如果您在 `remote-control` 之前传递全局 `claude` 标志,或包装脚本添加了一个,Claude Code 不会将该标志转移到服务器创建的会话。Claude Code 仅在已知删除该标志不会改变这些会话可以执行的操作时才允许该标志通过,例如 `--verbose` 或 `--model`。对于任何其他标志,例如 `--settings`,Claude Code [拒绝启动](https://code.claude.com/docs/zh-CN/errors.md#not-carried-over-to-the-sessions-remote-control-starts)并命名要删除的标志。74如果您在 `remote-control` 之前传入全局 `claude` 标志,或者包装脚本添加了此类标志,Claude Code 不会将该标志传递给服务器创建的会话。只有在确知丢弃该标志不会改变这些会话的能力时,Claude Code 才会放行该标志,例如 `--verbose` 或 `--model`。对于任何其他标志,例如 `--settings`,Claude Code 会[拒绝启动](https://code.claude.com/docs/zh-CN/errors.md#not-carried-over-to-the-sessions-remote-control-starts)并指出需要移除的标志。

75 75 

76要对服务器启动的会话进行沙箱处理,请在设置文件中打开[沙箱](https://code.claude.com/docs/zh-CN/sandboxing.md)。76要对服务器启动的会话进行沙箱隔离,请在设置文件中开启[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)。

77 77 

78要在终端中打印 `remote-control` 标志,请运行 `claude remote-control --help`。在 v2.1.302 之前,如果没有符合条件的登录,该命令会改为返回[故障排除](#troubleshooting)下列出的错误之一。78要在终端中打印 `remote-control` 的标志,请运行 `claude remote-control --help`。在 v2.1.302 之前,如果没有符合条件的登录,该命令会返回[故障排除](#troubleshooting)中列出的某个错误。

79 79 

80**交互式会话**80**交互式会话**

81 81 


85claude --remote-control85claude --remote-control

86```86```

87 87 

88可选择为会话传递名称:88可以选择为会话传入一个名称:

89 89 

90```bash theme={null}90```bash theme={null}

91claude --remote-control "My Project"91claude --remote-control "My Project"

92```92```

93 93 

94这为您提供了一个完整的交互式会话在您的终端中,您也可以从 claude.ai 或 Claude 应用远程控制。与 `claude remote-control`(服务器模式)不同,您可以在会话也可远程使用时在本地输入消息。94这会在终端中为您提供一个完整的交互式会话,您还可以从 claude.ai 或 Claude 应用控制它。与 `claude remote-control`(服务器模式)不同,您可以在本地输入消息,同时该会话也可供远程使用。

95 95 

96**从现有会话**96**从现有会话**

97 97 

98如果您已经在 Claude Code 会话中并想远程继续它,请使用 `/remote-control`(或 `/rc`)命令:98如果您已经在 Claude Code 会话中,并希望远程继续该会话,请使用 `/remote-control`(或 `/rc`)命令:

99 99 

100```text theme={null}100```text theme={null}

101/remote-control101/remote-control

102```102```

103 103 

104传递名称作为参数以设置自定义会话标题:104传入名称作为参数以设置自定义会话标题:

105 105 

106```text theme={null}106```text theme={null}

107/remote-control My Project107/remote-control My Project

108```108```

109 109 

110这启动一个远程控制会话,该会话延续您当前的对话历史。110这会启动一个 Remote Control 会话,并沿用您当前的对话历史。

111 111 

112在您接受远程控制的一次性确认之前,在 `/remote-control` 连接之前会出现一个对话框。选择**启用远程控制**以接受并连接。如果您选择**算了**或按 Esc,Claude Code 不会连接,并在您下次运行 `/remote-control` 时再次询问。112在您接受 Remote Control 的一次性确认之前,`/remote-control` 连接前会出现一个对话框。选择 **Enable Remote Control** 即可接受并连接。如果您选择 **Never mind** 或按 Esc,Claude Code 不会连接,并会在您下次运行 `/remote-control` 时再次询问。

113 113 

114`--verbose` 标志不适用于此命令。114此命令不支持 `--verbose` 标志。

115 115 

116**VS Code**116**VS Code**

117 117 

118在 [Claude Code VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)中,在提示框中输入 `/remote-control` 或 `/rc`。118在 [Claude Code VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)中,在输入框中输入 `/remote-control` 或 `/rc`。

119 119 

120```text theme={null}120```text theme={null}

121/remote-control121/remote-control

122```122```

123 123 

124当远程控制打开时,Claude Code 在提示框页脚中显示**远程控制**指示器。会话连接后,单击指示器直接转到会话,或在 [claude.ai/code](https://claude.ai/code) 的会话列表中找到它。Claude Code 还在对话中发布会话 URL。要断开连接,再次运行 `/remote-control`。124Remote Control 开启期间,Claude Code 会在输入框底部显示 **Remote Control** 指示器。会话连接后,点击该指示器即可直接进入会话,或在 [claude.ai/code](https://claude.ai/code) 的会话列表中找到它。Claude Code 还会在对话中发布会话 URL。要断开连接,请再次运行 `/remote-control`。

125 125 

126与 CLI 不同,VS Code 命令不接受名称参数或显示 QR 码。会话标题从您的对话历史或第一个提示派生。126与 CLI 不同,VS Code 命令不接受名称参数,也不显示二维码。会话标题来自您的对话历史或第一条提示词。

127 127 

128**Desktop 应用**128**Desktop 应用**

129 129 

130在 [Claude Desktop 应用](https://code.claude.com/docs/zh-CN/desktop.md)的代码选项卡中的本地会话中,在提示框中输入 `/remote-control` 或 `/rc`。130在 [Claude Desktop 应用](https://code.claude.com/docs/zh-CN/desktop.md) Code 标签页的本地会话中,在输入框中输入 `/remote-control` 或 `/rc`。

131 131 

132```text theme={null}132```text theme={null}

133/remote-control133/remote-control

134```134```

135 135 

136会话连接后,在 [claude.ai/code](https://claude.ai/code) 的会话列表中找到它。要断开连接,再次运行 `/remote-control`。136会话连接后,在 [claude.ai/code](https://claude.ai/code) 的会话列表中找到它。要断开连接,请再次运行 `/remote-control`。

137 137 

138要改为默认为每个会话打开远程控制,请参阅[为所有会话启用远程控制](#enable-remote-control-for-all-sessions)。138如果要改为默认为每个会话开启 Remote Control,请参阅[为所有会话启用 Remote Control](#enable-remote-control-for-all-sessions)。

139 139 

140### 检查连接状态140### 检查连接状态

141 141 

142在交互式会话中,当远程控制已连接时,终端显示一个 `/rc active` 指示器,该指示器链接到 claude.ai 上的会话。当终端太窄无法容纳它时,指示器被隐藏。要查看会话 URL 和用于[从另一台设备连接](#connect-from-another-device)的 QR 码,再次运行 `/remote-control` 以打开状态面板。该面板还允许您断开远程控制,同时您的本地会话继续运行。142在交互式会话中,Remote Control 已连接时,终端会显示一个 `/rc active` 指示器,该指示器链接到 claude.ai 上的会话。当终端太窄无法容纳时,该指示器会被隐藏。要查看会话 URL 和用于[从另一台设备连接](#connect-from-another-device)的二维码,请再次运行 `/remote-control` 以打开状态面板。您还可以在该面板中断开 Remote Control,同时本地会话继续运行。

143 143 

144如果连接在交互式会话中失败,指示器会更改以显示失败,Claude Code 会在通知中显示原因并将其添加到对话中。运行 `/remote-control` 以重新连接,除非原因说会话在其他地方更改:144如果交互式会话中的连接失败,指示器会变为显示失败状态,Claude Code 会在通知中显示原因并将其添加到对话中。运行 `/remote-control` 即可重新连接,除非原因表明会话已在其他地方发生变化:

145 145 

146* **另一个连接接管了此会话**:另一台设备或 Claude Code 会话现在拥有它。仅当您想取回它时才运行 `/remote-control`。146* **Another connection took over this session**:另一台设备或另一个 Claude Code 会话现在持有该会话。仅当您想夺回它时才运行 `/remote-control`。

147* **此会话从另一台设备或应用结束或存档**:仅当您想要会话返回时才运行 `/remote-control`。Claude Code 重新打开存档的会话。147* **This session was ended or archived from another device or app**:仅当您想恢复该会话时才运行 `/remote-control`。Claude Code 会重新打开已归档的会话。

148* **服务器不再报告此会话**:它可能已从另一台设备或应用中删除。148* **The server no longer reports this session**:该会话可能已从另一台设备或应用中删除。

149 149 

150### 从另一台设备连接150### 从另一台设备连接

151 151 

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

153 153 

154* **打开会话 URL** 在任何浏览器中直接转到 [claude.ai/code](https://claude.ai/code) 上的会话。154* 在任意浏览器中**打开会话 URL**,直接进入 [claude.ai/code](https://claude.ai/code) 上的会话。

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

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

157 157 

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

159 159 

160远程会话标题按以下顺序选择:160远程会话标题按以下顺序选择:

161 161 

1621. 您传递给 `--name`、`--remote-control` 或 `/remote-control` 的名称1621. 您传给 `--name`、`--remote-control` 或 `/remote-control` 的名称

1632. 您使用 `/rename` 设置的标题1632. 您使用 `/rename` 设置的标题

1643. 现有对话历史中最后一条有意义的消息1643. 现有对话历史中最后一条有意义的消息

1654. 自动生成的名称,如 `myhost-graceful-unicorn`,其中 `myhost` 是您机器的主机名或您使用 `--remote-control-session-name-prefix` 设置的前缀1654. 自动生成的名称,例如 `myhost-graceful-unicorn`,其中 `myhost` 是您机器的主机名或您通过 `--remote-control-session-name-prefix` 设置的前缀

166 166 

167如果您未设置显式名称,Claude Code 会在您发送提示后更新标题以反映您的提示。当您从 claude.ai 或 Claude 应用重命名会话时,Claude Code 也会更新 `claude --resume` 中显示的本地标题。167如果您没有设置显式名称,Claude Code 会在您发送提示词后更新标题以反映该提示词。当您从 claude.ai 或 Claude 应用重命名会话时,Claude Code 也会更新 `claude --resume` 中显示的本地标题。

168 168 

169如果您还没有 Claude 应用,请在 Claude Code 内运行 `/mobile` 以显示 [claude.ai/mobile](https://claude.ai/mobile) 的 QR 码,该码会打开适合您手机的应用商店。169如果您还没有 Claude 应用,请在 Claude Code 中运行 `/mobile` 以显示 [claude.ai/mobile](https://claude.ai/mobile) 的二维码,它会为您的手机打开相应的应用商店。

170 170 

171### 连接的设备看到的内容171### 已连接设备看到的内容

172 172 

173连接的设备显示您终端中的对话。这些情况超出了普通消息:173已连接的设备会实时显示终端中的对话。以下情况超出了普通消息的范畴:

174 174 

175* **压缩和 `/clear`**:当 Claude Code [压缩对话](https://code.claude.com/docs/zh-CN/context-window.md#what-survives-compaction)时,连接的设备显示进度,然后显示对话被压缩的位置。当您运行 `/clear` 时,对话也在连接的设备上重置。175* **压缩和 `/clear`**:在 Claude Code [压缩对话](https://code.claude.com/docs/zh-CN/context-window.md#what-survives-compaction)时,已连接的设备会显示进度,然后显示对话被压缩的位置。当您运行 `/clear` 时,已连接设备上的对话也会重置。

176* **使用 `/resume` 切换对话**:连接的设备不接收切换到的对话的标题或早期历史,但双向的新消息进出您终端中打开的任何对话。要从设备再次处理原始对话,请在您的终端中运行 `/resume` 并切换回它。176* **使用 `/resume` 切换对话**:已连接的设备不会收到切换到的对话的标题或早期历史,但双向的新消息都会发往或来自终端中当前打开的对话。要再次从设备上处理原来的对话,请在终端中运行 `/resume` 并切换回该对话。

177* **使用 `/teleport` 拉取会话**:当您使用 `/teleport` 将[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#from-cloud-to-terminal)拉入您的终端时,连接的设备不接收拉取的对话的早期历史。双向的新消息进出拉取的对话,该对话现在是您终端中打开的对话。177* **使用 `/teleport` 拉取会话**:当您使用 `/teleport` 将[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#from-cloud-to-terminal)拉取到终端时,已连接的设备不会收到被拉取对话的早期历史。双向的新消息都会发往或来自被拉取的对话,该对话现在就是终端中打开的对话。

178* **来自您其他会话的消息**:借助[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md),同一连接会在您位于不同机器上的自己的会话之间传递消息。178* **来自您其他会话的消息**:借助[跨会话消息](https://code.claude.com/docs/zh-CN/cross-session-messaging.md),同一连接会在您位于不同机器上的各个会话之间传递消息。

179* **您的更改的差异**:当会话的目录在 git 存储库中时,连接的设备的差异窗格显示您的更改。在具有超过存储库默认分支的提交的分支上,窗格显示自分支从它分离以来的更改,包括您未提交的编辑。在默认分支本身上,或在不超过它的分支上,窗格仅显示您未提交的更改。179* **您的更改的 diff**:当会话的目录位于 git 仓库中时,已连接设备的 diff 面板会显示您的更改。在领先于仓库默认分支的分支上,该面板会显示自该分支从默认分支分出以来的更改,包括您未提交的编辑。在默认分支本身或不领先于默认分支的分支上,该面板仅显示您未提交的更改。

180* **模型**:当您从连接的设备选择[模型](https://code.claude.com/docs/zh-CN/model-config.md)时,Claude Code 在该模型上运行会话。需要 Claude Code v2.1.238 或更高版本。您从设备的模型控制中选择的模型仅适用于当前会话。当您从设备向交互式会话发送 `/model <name>` 时,Claude Code 也会为新会话设置您的默认值。180* **模型**:当您从已连接的设备选择[模型](https://code.claude.com/docs/zh-CN/model-config.md)时,Claude Code 会使用该模型运行会话。需要 Claude Code v2.1.238 或更高版本。从设备的模型控件中选择的模型仅适用于当前会话。当您从设备向交互式会话发送 `/model <name>` 时,Claude Code 还会设置新会话的默认模型。

181* **努力级别**:当您从连接的设备设置[努力级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)时,使用 `/effort` 或设备的努力控制,Claude Code 将其应用于您机器上的会话。如果您使用 `CLAUDE_CODE_EFFORT_LEVEL` 固定了一个级别,会话保持该级别,Claude Code 拒绝从努力控制中选择不同的级别。从努力控制中选择级别需要您机器上的 Claude Code v2.1.234 或更高版本。181* **Effort 级别**:当您从已连接的设备使用 `/effort` 或设备的 effort 控件设置 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)时,Claude Code 会将其应用到您机器上的会话。如果您已使用 `CLAUDE_CODE_EFFORT_LEVEL` 固定了级别,会话将保持该级别,Claude Code 会拒绝从 effort 控件中选择的其他级别。从 effort 控件中选择级别需要您机器上的 Claude Code 为 v2.1.234 或更高版本。

182* **连接失败后重新连接**:运行 `/remote-control` 以重新连接。如果压缩重写了对话或您在此期间使用 `/resume` 切换了对话,Claude Code 会存档它正在使用的服务器会话,而不是将其留在会话列表中。您仍然可以在 claude.ai/code 的[已存档会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#find-an-archived-session)中找到该会话。在设备仍然连接时切换对话不会存档会话。182* **连接失败后重新连接**:运行 `/remote-control` 即可重新连接。如果在此期间压缩重写了对话,或者您使用 `/resume` 切换了对话,Claude Code 会归档它一直在使用的服务器会话,而不是将其留在会话列表中。您仍然可以在 claude.ai/code 的[已归档会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md#find-an-archived-session)中找到该会话。在设备仍处于连接状态时切换对话不会归档该会话。

183 183 

184### 为所有会话启用远程控制184### 为所有会话启用 Remote Control

185 185 

186远程控制仅在您显式运行 `claude remote-control`、`claude --remote-control` 或 `/remote-control` 时激活,除非打开了自动连接。要为每个交互式会话打开自动连接,请在 Claude Code 内运行 `/config` 并设置**为所有会话启用远程控制**。切换有三个值:186除非开启了自动连接,否则只有在您显式运行 `claude remote-control`、`claude --remote-control` 或 `/remote-control` 时,Remote Control 才会激活。要为每个交互式会话开启自动连接,请在 Claude Code 中运行 `/config` 并设置 **Enable Remote Control for all sessions**。该开关有三个值:

187 187 

188* **`true`**:当交互式会话启动时自动连接。188* **`true`**:交互式会话启动时自动连接。

189* **`false`**:关闭自动连接,尽管来自[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)的 `true` 会优先,因为 Claude Code 将选择保存到您的用户设置。项目或本地设置(`.claude/settings.json`、`.claude/settings.local.json`)中的 `false` 即使在托管 `true` 上也会关闭自动连接。189* **`false`**:关闭自动连接,但[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)中的 `true` 优先级更高,因为 Claude Code 会将此选择保存到您的用户设置中。项目或本地设置(`.claude/settings.json`、`.claude/settings.local.json`)中的 `false` 即使在托管设置为 `true` 时也会关闭自动连接。

190* **`default`**:清除您的选择并遵循您组织的管理员默认值(如果已设置),否则遵循 Claude Code 的当前默认值。如果您设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,请参阅[设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时的自动连接](#auto-connect-with-disable-telemetry-or-do-not-track)。190* **`default`**:清除您的选择,如果您的组织设置了管理员默认值,则遵循该默认值,否则遵循 Claude Code 的当前默认值。如果您设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,请参阅[设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时的自动连接](#auto-connect-with-disable-telemetry-or-do-not-track)。

191 191 

192VS Code 扩展和 Desktop 应用也有自动连接开关:192VS Code 扩展和 Desktop 应用也有自动连接开关:

193 193 

194* **VS Code 扩展**:[命令菜单](https://code.claude.com/docs/zh-CN/vs-code.md#use-the-prompt-box)的设置部分中的**为所有会话启用远程控制**。194* **VS Code 扩展**:[命令菜单](https://code.claude.com/docs/zh-CN/vs-code.md#use-the-prompt-box) Settings 部分中的 **Enable Remote Control for all sessions**。

195* **Desktop 应用**:**Settings > Code** 或 **Settings > Claude Code** 中的 **Connect new sessions to Remote Control**。请参阅[控制哪些会话出现在您的其他设备上](https://code.claude.com/docs/zh-CN/desktop.md#control-which-sessions-appear-on-your-other-devices)。195* **Desktop 应用**:**Settings > Code** 或 **Settings > Claude Code** 中的 **Connect new sessions to Remote Control**。请参阅[控制哪些会话显示在您的其他设备上](https://code.claude.com/docs/zh-CN/desktop.md#control-which-sessions-appear-on-your-other-devices)。

196 196 

197要改为从设置文件打开自动连接,请在您的用户 `~/.claude/settings.json` 或[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)中将 [`remoteControlAtStartup`](https://code.claude.com/docs/zh-CN/settings-reference#remotecontrolatstartup) 设置为 `true`。在项目或本地设置(`.claude/settings.json`、`.claude/settings.local.json`)中,Claude Code 遵守 `false` 并为该存储库关闭自动连接,但忽略 `true`,因此已检入的文件无法为打开存储库的每个人打开远程控制。197如果要改为通过设置文件开启自动连接,请在您的用户 `~/.claude/settings.json` 或[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)中将 [`remoteControlAtStartup`](https://code.claude.com/docs/zh-CN/settings-reference#remotecontrolatstartup) 设为 `true`。在项目或本地设置(`.claude/settings.json`、`.claude/settings.local.json`)中,Claude Code 会遵循 `false` 并为该仓库关闭自动连接,但会忽略 `true`,因此签入仓库的文件无法为每个打开该仓库的人开启 Remote Control。

198 198 

199自动连接使用您自己的 claude.ai 帐户登录,因此它启动的会话仅出现在您自己帐户的 Claude 应用中,并且不向任何其他人授予访问权限。199自动连接使用您自己的 claude.ai 账户登录,因此它启动的会话仅显示在您自己账户的 Claude 应用中,不会向任何其他人授予访问权限。

200 200 

201启用此设置后,每个交互式 Claude Code 进程注册一个远程会话。如果您运行多个实例,每个实例都获得自己的远程会话。要从单个进程运行多个并发会话,请改为使用[服务器模式](#start-a-remote-control-session)。201开启此设置后,每个交互式 Claude Code 进程都会注册一个远程会话。如果您运行多个实例,每个实例都会获得自己的远程会话。要从单个进程运行多个并发会话,请改用[服务器模式](#start-a-remote-control-session)。

202 202 

203#### 设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时的自动连接203#### 设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时的自动连接

204 204 

205如果仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,您的会话不会通过您组织的管理员默认值或 Claude Code 自身的默认值自动连接。如果有其他因素导致 Remote Control 对您不可用,例如 `DISABLE_GROWTHBOOK` 或 LLM 网关,请改为从[要求](#requirements)开始。205如果仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK`,您的会话不会通过组织的管理员默认值或 Claude Code 自身的默认值自动连接。如果是其他原因导致您无法使用 Remote Control,例如 `DISABLE_GROWTHBOOK` 或 LLM 网关,请改为从[要求](#requirements)开始排查。

206 206 

207在仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 的情况下打开自动连接之前,请确认您的 Claude Code 版本满足[这些变量的要求](#requirements)。然后检查您的组织是否要求[受信任设备](#trusted-devices):207在仅设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 的情况下开启自动连接之前,请确认您的 Claude Code 版本满足[这些变量的要求](#requirements)。然后检查您的组织是否要求 [Trusted Devices](#trusted-devices):

208 208 

209* **不要求**:在 `/config` 中将 **Enable Remote Control for all sessions** 设置为 `true`。209* **不要求**:在 `/config` 中将 **Enable Remote Control for all sessions** 设为 `true`。

210* **要求**:设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时,Remote Control 不可用。取消设置您所设置的这两个变量中的任意一个。如果您的会话仍未自动连接,请在 `/config` 中将 **Enable Remote Control for all sessions** 设置为 `true`。210* **要求**:设置了 `DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 时无法使用 Remote Control。请取消设置这两个变量中您设置的那个。如果您的会话仍未自动连接,请在 `/config` 中将 **Enable Remote Control for all sessions** 设为 `true`。

211 211 

212### 停止服务器后恢复会话212### 停止服务器后恢复会话

213 213 

214当您使用 Ctrl+C 停止 `claude remote-control` 时,它正在服务的会话停止从您的手机或浏览器响应。只要您没有在同一目录中运行另一个 `claude remote-control` 并且没有使用 `--no-create-session-in-dir` 启动此会话,Claude Code 就不会存档它们。要恢复它们,请在同一目录中运行以下命令之一:214当您使用 Ctrl+C 停止 `claude remote-control` 时,它所服务的会话将不再响应来自您手机或浏览器的操作。只要您没有在同一目录中运行另一个 `claude remote-control`,并且启动此服务器时没有使用 `--no-create-session-in-dir`,Claude Code 就不会归档这些会话。要恢复它们,请在同一目录中运行以下命令之一:

215 215 

216* **`claude remote-control`**:恢复服务器正在服务的每个会话。216* **`claude remote-control`**:恢复服务器所服务的所有会话。

217* **`claude remote-control --continue`**:仅恢复服务器启动的会话,并在该会话结束时退出。如果此目录没有记录,Claude Code 使用此存储库其他 git worktree 中最新的。217* **`claude remote-control --continue`**:仅恢复服务器启动时使用的会话,并在该会话结束时退出。如果此目录中没有记录,Claude Code 会使用此仓库其他 git worktree 中最新的记录。

218* **`claude remote-control --session-id <id>`**:仅恢复您传递其 ID 的会话,并在该会话结束时退出。ID 是会话 URL 在 claude.ai/code 中 `/code/` 和任何 `?` 之间的部分。218* **`claude remote-control --session-id <id>`**:仅恢复您传入 ID 的会话,并在该会话结束时退出。该 ID 是 claude.ai/code 上会话 URL 中位于 `/code/` 与任何 `?` 之间的部分。

219 219 

220这些命令在服务器停止后约四小时内有效。之后,运行 `claude remote-control` 以启动新会话。如果您在此期间存档了会话,`--continue` 和 `--session-id` 在 Claude Code v2.1.228 或更高版本上取消存档它。220这些命令在服务器停止后约四小时内有效。之后,请运行 `claude remote-control` 启动新会话。如果您在此期间归档了某个会话,在 Claude Code v2.1.228 或更高版本上,`--continue` 和 `--session-id` 会取消归档该会话。

221 221 

222要恢复您使用 `claude --remote-control` 或 `/remote-control` 启动的会话,请使用 `claude --continue` 或 `claude --resume` 恢复对话。有关恢复的对话以何种权限模式启动,请参阅[恢复时的权限模式](https://code.claude.com/docs/zh-CN/sessions.md#permission-mode-on-resume)。如果 Remote Control 无法重新连接,请参阅[无法重新连接到您的 Remote Control 会话](#couldnt-reconnect-to-your-remote-control-session)。222要恢复您使用 `claude --remote-control` 或 `/remote-control` 启动的会话,请使用 `claude --continue` 或 `claude --resume` 恢复对话。关于恢复的对话以何种权限模式启动,请参阅[恢复时的权限模式](https://code.claude.com/docs/zh-CN/sessions.md#permission-mode-on-resume)。如果 Remote Control 没有重新连接,请参阅[无法重新连接到您的 Remote Control 会话](#couldnt-reconnect-to-your-remote-control-session)。

223 223 

224如果您在第一个终端仍然打开远程控制的情况下在第二个终端中恢复对话,Claude Code 会在第二个终端中打印 `Remote Control not started here` 通知,并改为在那里关闭远程控制,而不是从第一个终端取走会话。在第二个终端中运行 `/remote-control` 以将远程控制移动到它。224如果您在第二个终端中恢复对话,而第一个终端仍开启着 Remote Control,Claude Code 会在第二个终端中打印 `Remote Control not started here` 通知,并在那里保持 Remote Control 关闭,而不是从第一个终端夺走该会话。在第二个终端中运行 `/remote-control` 即可将 Remote Control 转移到该终端。

225 225 

226当您在具有远程控制的 Claude Desktop 或 IDE 扩展中恢复对话时,Claude Code 会将其重新附加到现有 claude.ai 会话,而不是向会话列表添加新会话。226当您在 Claude Desktop 或 IDE 扩展中恢复一个曾开启 Remote Control 的对话时,Claude Code 会将其重新关联到现有的 claude.ai 会话,而不是在会话列表中新增一个会话。

227 227 

228### 设置项目的默认生成模式228### 为项目设置默认 spawn 模式

229 229 

230如果 `claude remote-control` 在启动时打印 `Spawn mode: <mode> (saved for this folder; press w to change)`,则表示服务器正在以之前为此项目保存的生成模式启动。230如果 `claude remote-control` 在启动时打印 `Spawn mode: <mode> (saved for this folder; press w to change)`,则表示服务器正在以之前为此项目保存的 spawn 模式启动。

231 231 

232保存的模式来自您在自己的终端中做出的选择。如果 `claude remote-control` 曾在那里询问 `Spawn mode for this project:`,Claude Code 会保留您的回答:`1` 表示 `same-dir`,`2` 表示 `worktree`。如果您在其运行时按了 `w`,Claude Code 会保留您切换到的模式,即使该次运行是使用 `--spawn same-dir` 或 `--spawn worktree` 启动的。232保存的模式来自您在自己终端中做出的选择。如果 `claude remote-control` 在那里询问过 `Spawn mode for this project:`,Claude Code 会保留您的回答:`1` 表示 `same-dir`,`2` 表示 `worktree`。如果您在其运行时按了 `w`,Claude Code 会保留您切换到的模式,即使该次运行是使用 `--spawn same-dir` 或 `--spawn worktree` 启动的。

233 233 

234* 当服务器以 `same-dir` 或 `worktree` 模式运行时,在服务器的终端中按 `w` 切换到另一种模式。切换需要 git 仓库或 `WorktreeCreate` hook。234* 当服务器以 `same-dir` 或 `worktree` 模式运行时,在服务器的终端中按 `w` 即可切换到另一种模式。切换需要 git 仓库或 `WorktreeCreate` hook。

235* 要在某一次运行中使用不同的模式,请传递 `--spawn <mode>`。235* 要在某一次运行中使用不同的模式,请传入 `--spawn <mode>`。

236 236 

237## 连接和安全237## 连接和安全

238 238 

Details

18 18 

19当每个会话需要运行器无法自行完成的设置时,使用包装脚本:为会话创建者配置作用域的短期凭据、导出特定于环境的密钥、准备语言工具链或围绕子进程应用资源限制。运行器每个会话启动一次您的包装脚本,而不是 Claude Code 二进制文件。通过 `exec` 进入 `$CLAUDE_RUNNER_CLAUDE_BIN`(运行器自己的二进制文件)来结束包装脚本,以便信号和退出码正确传播。19当每个会话需要运行器无法自行完成的设置时,使用包装脚本:为会话创建者配置作用域的短期凭据、导出特定于环境的密钥、准备语言工具链或围绕子进程应用资源限制。运行器每个会话启动一次您的包装脚本,而不是 Claude Code 二进制文件。通过 `exec` 进入 `$CLAUDE_RUNNER_CLAUDE_BIN`(运行器自己的二进制文件)来结束包装脚本,以便信号和退出码正确传播。

20 20 

21启动运行器时,使用 `--exec-path` 或 `SELF_HOSTED_RUNNER_EXEC_PATH` 指向包装脚本:21启动运行器时,使用 `--exec-path` 或 `SELF_HOSTED_RUNNER_EXEC_PATH` 指向包装脚本,并按照[快速入门](https://code.claude.com/docs/zh-CN/self-hosted-environments-quickstart.md#set-up-manually)中的说明替换 `<writable-dir>`:

22 22 

23```bash theme={null}23```bash theme={null}

24claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --exec-path /etc/claude/session-wrapper.sh24claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --base-dir '<writable-dir>' --exec-path /etc/claude/session-wrapper.sh

25```25```

26 26 

27运行器在包装脚本的环境中设置以下内容:27运行器在包装脚本的环境中设置以下内容:


457 457 

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

459 459 

460### 停止或重启编排器

461 

462要在不中断正在运行的 `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)。

463 

464以下启动命令允许 70 秒:

465 

466```bash theme={null}

467claude self-hosted-runner orchestrator \

468 --environment-secret-file /etc/claude/environment-secret \

469 --hooks-dir /etc/claude/hooks \

470 --shutdown-drain-sec 70

471```

472 

473当已发送的轮询和每个 hook 都完成后,编排器即退出。当 `--shutdown-drain-sec` 的秒数用尽时,仍在运行的 hook 会收到 `SIGTERM`,编排器随即退出。第二个 `SIGTERM` 或任何 `SIGINT` 会产生相同效果,且不再等待。包含 `[runner:orchestrator] stop summary:` 的日志行会按每个 hook 和生成请求的结束方式进行计数。

474 

475如果不使用 `--shutdown-drain-sec`,编排器会在收到 `SIGTERM` 或 `SIGINT` 时立即停止。每个正在运行的 hook 都会收到 `SIGTERM`,且不会通知 Anthropic。这样,运行器从未启动的会话可能会一直停留在队列中,直到 Anthropic [重新请求它](#the-spawn-runner-hook),这会在 `--expected-spawn-seconds`(默认 120 秒)过后发生。

476 

477> [!NOTE]

478>

479> `--shutdown-drain-sec` 需要 Claude Code v2.1.299 或更高版本。较旧的版本会在启动时以 `error: unknown flag --shutdown-drain-sec` 退出。

480 

481#### 确定 `--shutdown-drain-sec` 和编排器的停止超时时间

482 

483在默认设置下,请使用 [`--shutdown-drain-sec 70`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#orchestrator-cli-flags) 并将停止超时时间设为 85 秒,即在 Kubernetes 上使用 `terminationGracePeriodSeconds: 85`,或在 systemd 下使用 `TimeoutStopSec=85`。如果您更改了 `--hook-timeout`,请按比例调整这两个值:

484 

485* **`--shutdown-drain-sec`**:至少为 `--hook-timeout` 加 10 秒,以便在 `SIGTERM` 之前刚启动的 hook 仍能完成

486* **停止超时时间**:至少为 `--shutdown-drain-sec` 加 15 秒。编排器会在启动时记录此数值:请查找包含 `shutdown drain:` 的行。

487 

488请让您的进程管理器只发送一个 `SIGTERM`,且仅发送给编排器进程,因为第二个 `SIGTERM` 会缩短 `--shutdown-drain-sec` 的等待时间。如果您保留 systemd 的默认设置 [`KillMode=control-group`](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy#what-reaches-a-running-post-session-hook),hook 也会收到 `SIGTERM`,hook 可能会在提交其工作负载之前终止。在更改 `KillMode` 之前,请检查您的 `spawn-runner` hook 是如何启动运行器的:

489 

490* **如果您的 hook 将其工作负载提交到平台后即退出**:将编排器作为该单元的主进程运行,并设置 `KillMode=mixed`,这样只会向该进程发送 `SIGTERM`。

491* **如果您的 hook 在编排器自身的单元中以进程形式启动运行器**:`KillMode=mixed` 不会向这些运行器发送 `SIGTERM`。相反,systemd 稍后会向它们发送 `SIGKILL`,因此它们会在未排空其会话、也未运行其 `post-session` hook 的情况下退出。

492 

460## 将模型请求发送到 Bedrock 或 Agent Platform493## 将模型请求发送到 Bedrock 或 Agent Platform

461 494 

462如果您的组织需要模型请求通过其自己的 AWS 或 Google Cloud 账户,请为 runner 配置 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md) 或 [Google Cloud 的 Agent Platform(前身为 Vertex AI)](https://code.claude.com/docs/zh-CN/google-vertex-ai.md)。之后,该 runner 启动的每个会话都会使用您的云凭据在您的云账户中调用模型。如果没有此配置,会话会将模型请求发送到 Anthropic API。495如果您的组织需要模型请求通过其自己的 AWS 或 Google Cloud 账户,请为 runner 配置 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md) 或 [Google Cloud 的 Agent Platform(前身为 Vertex AI)](https://code.claude.com/docs/zh-CN/google-vertex-ai.md)。之后,该 runner 启动的每个会话都会使用您的云凭据在您的云账户中调用模型。如果没有此配置,会话会将模型请求发送到 Anthropic API。

Details

583 583 

584## 关闭时序584## 关闭时序

585 585 

586收到 `SIGTERM` 后,运行器需要时间在编排器将其终止之前干净地关闭其会话。运行器会在启动时记录所需时长,在默认设置下,该日志行包含 `This runner needs up to 80s`。请将编排器的停止超时时间设置为至少该秒数:在 Kubernetes 上为 `terminationGracePeriodSeconds`,在 Docker Compose 上为 `stop_grace_period`,或您所用平台的等效设置。Kubernetes 默认为 30 秒,因此如果不进行此设置,它可能会在运行器完成之前停止 pod。586> [!NOTE]

587>

588> 这些时序适用于运行器。`claude self-hosted-runner orchestrator` 进程有其自己的时序:请参阅[调整 `--shutdown-drain-sec` 和编排器的停止超时时间](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)。

589 

590每个运行器会在启动时记录收到 `SIGTERM` 后干净地关闭其会话最多需要多长时间,例如在默认设置下为 `This runner needs up to 80s`。停止超时时间是指您的进程管理器在发送 `SIGTERM` 后、终止运行器之前等待的时长。请将其设置为至少该记录时间:

591 

592* **Kubernetes**:`terminationGracePeriodSeconds`。Kubernetes 默认为 30 秒,因此如果不进行此设置,它可能会在运行器完成之前停止 pod。

593* **Docker Compose**:`stop_grace_period`

587 594 

588收到 `SIGTERM` 时,运行器停止接受新会话。随后,除非您设置了 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal) 来推迟,否则它会开始一次优雅关闭,称为排空。排空包含三个步骤:595收到 `SIGTERM` 时,运行器停止接受新会话。随后,除非您设置了 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal) 来推迟,否则它会开始一次优雅关闭,称为排空。排空包含三个步骤:

589 596 


744 751 

745**2. 启动运行器**752**2. 启动运行器**

746 753 

747在您的 shell 中,使用 `--hold-idle-file`、`--release-idle-session-min` 和 [`--max-hold-min`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 启动运行器,后者是保留的上限,从会话进入空闲时开始计算。如果不设置,上限为一天。请将其设置为高于 `--release-idle-session-min`,否则不会保留任何会话。此示例在 30 分钟后释放空闲会话,并在被保留的会话进入空闲后最多 4 小时将其释放:754在您的 shell 中,使用 `--hold-idle-file`、`--release-idle-session-min` 和 [`--max-hold-min`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 启动运行器,后者是保留的上限,从会话进入空闲时开始计算。如果不设置,上限为一天。请将其设置为高于 `--release-idle-session-min`,否则不会保留任何会话。按照[快速入门](https://code.claude.com/docs/zh-CN/self-hosted-environments-quickstart.md#set-up-manually)中的说明替换 `<writable-dir>`。此示例在 30 分钟后释放空闲会话,并在被保留的会话进入空闲后最多 4 小时将其释放:

748 755 

749```bash theme={null}756```bash theme={null}

750claude self-hosted-runner \757claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \758 --environment-secret-file /etc/claude/environment-secret \

759 --base-dir '<writable-dir>' \

752 --release-idle-session-min 30 \760 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \761 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240762 --max-hold-min 240


816 * **未提交的更改仍会丢失**:要提示 Claude 在完成响应时提交并推送,请参阅[提示会话推送其工作](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)824 * **未提交的更改仍会丢失**:要提示 Claude 在完成响应时提交并推送,请参阅[提示会话推送其工作](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)

817* **因运行器丢失而中断的命令可能会再次运行**:当会话在另一个运行器上恢复时,Claude 会看到被中断的工具调用,其结果表明该调用的执行结果未知。825* **因运行器丢失而中断的命令可能会再次运行**:当会话在另一个运行器上恢复时,Claude 会看到被中断的工具调用,其结果表明该调用的执行结果未知。

818* **会话中途添加的仓库可能无法克隆**:Claude 通过 HTTPS 使用 `git clone` 克隆它。在未启用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的运行器上,如果主机上没有任何内容能够读取该仓库,克隆会因 git 身份验证错误而失败。如有可能,请在创建会话时选择会话所需的每个仓库。826* **会话中途添加的仓库可能无法克隆**:Claude 通过 HTTPS 使用 `git clone` 克隆它。在未启用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的运行器上,如果主机上没有任何内容能够读取该仓库,克隆会因 git 身份验证错误而失败。如有可能,请在创建会话时选择会话所需的每个仓库。

827 * **会话恢复时**:[`checkout` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#checkout) 也会为添加的仓库运行,此时 [`CLAUDE_RUNNER_REPO_REF`](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#checkout) 为空,因此请确保您的 hook 能够处理这种情况。

819* **某些连接器不出现在自托管会话中**:您在 claude.ai Settings 中尚未连接的连接器不在自托管会话中列出,会话不会提示您连接它。首先在 Settings 中连接它,然后启动新会话。向已运行的会话添加连接器也不会使其工具对 Claude 可用;启动新会话以获取新添加的连接器。828* **某些连接器不出现在自托管会话中**:您在 claude.ai Settings 中尚未连接的连接器不在自托管会话中列出,会话不会提示您连接它。首先在 Settings 中连接它,然后启动新会话。向已运行的会话添加连接器也不会使其工具对 Claude 可用;启动新会话以获取新添加的连接器。

820* **当有人归档或删除会话,或从会话菜单中释放其运行器时**:不要依赖 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 的推送。要在这些情况下保存提交,请从 [`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 将 `HEAD` 推送到一个救援分支。如果您以那里的示例为基础,请让它在没有任何未提交内容时也执行推送,因为该示例仅在创建快照提交之后才推送。829* **当有人归档或删除会话,或从会话菜单中释放其运行器时**:不要依赖 [`--push-outcome-on-release`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 的推送。要在这些情况下保存提交,请从 [`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 将 `HEAD` 推送到一个救援分支。如果您以那里的示例为基础,请让它在没有任何未提交内容时也执行推送,因为该示例仅在创建快照提交之后才推送。

821 830 


833 842 

834常见问题:843常见问题:

835 844 

836* **运行器未出现在环境中**:确认主机可以通过 HTTPS 到达 `api.anthropic.com`,环境密钥是最新的,并且主机时钟与实际时间相差在五分钟以内;更大的时间偏差会导致身份验证失败。运行器在身份验证失败时会记录 `[runner:fatal]` 和拒绝原因。845* **运行器未出现在环境中**:确认主机可以通过 HTTPS 到达 `api.anthropic.com`,并且环境密钥是最新的。运行器在身份验证失败时会记录 `[runner:fatal]` 和拒绝原因。

837* **运行器在启动时退出,显示 `cannot create or write to base directory`**:运行器无法创建或写入 `--base-dir`,其默认值为 `/workspace`。修复目录的所有权或将 `--base-dir` 指向可写路径,如 [保持基础目录和容量在运行器之间相同](#keep-the-base-directory-and-capacity-identical-across-runners) 中所述。如果运行器改为记录 `[runner:fatal]` 说基础目录检查超时,则该目录位于挂起的 NFS 或 CSI 挂载上。检查挂载健康状况而不是权限。运行器在打开 `--log-file` 之前将这两个启动失败打印到 stderr,因此请在终端或您的平台的容器日志中查找它们,而不是日志文件。在 v2.1.225 之前,运行器在启动时不检查基础目录,此错误配置在拾取后失败会话。846* **运行器在启动时退出,显示 `cannot create or write to base directory`**:运行器无法创建或写入 `--base-dir`,其默认值为 `/workspace`。修复目录的所有权或将 `--base-dir` 指向可写路径,如 [保持基础目录和容量在运行器之间相同](#keep-the-base-directory-and-capacity-identical-across-runners) 中所述。如果运行器改为记录 `[runner:fatal]` 说基础目录检查超时,则该目录位于挂起的 NFS 或 CSI 挂载上。检查挂载健康状况而不是权限。运行器在打开 `--log-file` 之前将这两个启动失败打印到 stderr,因此请在终端或您的平台的容器日志中查找它们,而不是日志文件。在 v2.1.225 之前,运行器在启动时不检查基础目录,此错误配置在拾取后失败会话。

838* **运行器在启动时退出,显示 `RegisterRunner failed:` 和 TLS 证书错误**:例如,错误可能是 `self signed certificate in certificate chain`。运行器不信任其收到的证书背后的证书颁发机构(CA),在执行 TLS 检查的代理之后就会发生这种情况。在运行器的环境中将 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/zh-CN/network-config#custom-ca-certificates) 设置为包含代理根 CA 的 PEM 文件。847* **运行器在启动时退出,显示 `RegisterRunner failed:` 和 TLS 证书错误**:例如,错误可能是 `self signed certificate in certificate chain`。运行器不信任其收到的证书背后的证书颁发机构(CA),在执行 TLS 检查的代理之后就会发生这种情况。在运行器的环境中将 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/zh-CN/network-config#custom-ca-certificates) 设置为包含代理根 CA 的 PEM 文件。

839 848 

840 您无需再为会话设置它,会话会继承它。Git 不读取它:对于通过该代理进行的克隆,还需设置 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)。849 您无需再为会话设置它,会话会继承它。Git 不读取它:对于通过该代理进行的克隆,还需设置 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)。

841* **您的启动脚本打印包含 `Resource temporarily unavailable` 的写入错误并退出**:您的脚本与其启动的 `claude self-hosted-runner` 或 [编排器](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration.md#on-demand-runners) 进程共享 stdout 或 stderr,而该进程已将该共享管道或套接字切换为非阻塞模式。当管道已满时,脚本的写入会因该操作系统错误而失败,而不是等待;在 `set -e` 下,脚本会退出。850* **您的启动脚本打印包含 `Resource temporarily unavailable` 的写入错误并退出**:您的脚本与其启动的 `claude self-hosted-runner` 或 [编排器](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration.md#on-demand-runners) 进程共享 stdout 或 stderr,而该进程已将该共享管道或套接字切换为非阻塞模式。当管道已满时,脚本的写入会因该操作系统错误而失败,而不是等待;在 `set -e` 下,脚本会退出。

842 851 

843 要消除该错误,请将运行器或编排器的输出发送到您脚本的用户可以创建的文件。在启动它的命令后追加 `>> "$HOME/claude-runner.log" 2>&1`,并放在任何将其置于后台运行的 `&` 之前:852 要消除该错误,请将运行器或编排器的输出发送到您脚本的用户可以创建的文件。在启动它的命令后追加 `>> "$HOME/claude-runner.log" 2>&1`,并放在任何将其置于后台运行的 `&` 之前,然后按照 [快速入门](https://code.claude.com/docs/zh-CN/self-hosted-environments-quickstart.md#set-up-manually) 中的说明替换 `<writable-dir>`:

844 853 

845 ```bash theme={null}854 ```bash theme={null}

846 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret >> "$HOME/claude-runner.log" 2>&1855 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --base-dir '<writable-dir>' >> "$HOME/claude-runner.log" 2>&1

847 ```856 ```

848 857 

849 您脚本自身的输出仍然输出到原来的位置,而运行器写入 stdout 和 stderr 的内容(包括其启动错误)会写入该文件。请使用此 shell 重定向,而不是仅使用 [`--log-file`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags),后者会将日志镜像到文件,同时运行器仍继续写入 stdout 和 stderr。如果您已经传递了 `--log-file`,也请保留它,因为重定向不会改变该文件接收的内容。858 您脚本自身的输出仍然输出到原来的位置,而运行器写入 stdout 和 stderr 的内容(包括其启动错误)会写入该文件。请使用此 shell 重定向,而不是仅使用 [`--log-file`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags),后者会将日志镜像到文件,同时运行器仍继续写入 stdout 和 stderr。如果您已经传递了 `--log-file`,也请保留它,因为重定向不会改变该文件接收的内容。


901 在 v2.1.274 之前,运行器在几次尝试后停止重试失败的获取,并等待下一个计划的获取。失败的轮次不会触发获取,因此每个轮次都会失败,显示 401,直到下一个计划的获取。910 在 v2.1.274 之前,运行器在几次尝试后停止重试失败的获取,并等待下一个计划的获取。失败的轮次不会触发获取,因此每个轮次都会失败,显示 401,直到下一个计划的获取。

902* **轮次在 claude.ai/code 中失败,显示 `This model needs a newer version of Claude Code`**:您的运行器用于启动会话的 Claude Code 版本低于该会话的模型所要求的版本,因此 API [拒绝了该请求](https://code.claude.com/docs/zh-CN/errors.md#claude-code-does-not-support-this-model)。按照 [固定版本](#pin-the-version) 中的说明,将运行器升级到消息要求的版本或更高版本。在此之前,用户可以在会话中选择其他模型。911* **轮次在 claude.ai/code 中失败,显示 `This model needs a newer version of Claude Code`**:您的运行器用于启动会话的 Claude Code 版本低于该会话的模型所要求的版本,因此 API [拒绝了该请求](https://code.claude.com/docs/zh-CN/errors.md#claude-code-does-not-support-this-model)。按照 [固定版本](#pin-the-version) 中的说明,将运行器升级到消息要求的版本或更高版本。在此之前,用户可以在会话中选择其他模型。

903* **Pod 在耗尽中途被杀死**:将 `terminationGracePeriodSeconds` 提高到至少运行器在启动时记录的值。请参阅 [关闭时序](#shutdown-timing)。912* **Pod 在耗尽中途被杀死**:将 `terminationGracePeriodSeconds` 提高到至少运行器在启动时记录的值。请参阅 [关闭时序](#shutdown-timing)。

913* **运行器记录一条以 `was paused or too slow` 结尾的 `[runner:log]` 行**:运行器仍在运行,无需重新启动。在该行中指明的 stdout 或 stderr 流被再次读取之前,运行器丢弃了该流中除最新 256 KiB 之外的所有行。如果您传递了 [`--log-file`](https://code.claude.com/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags),请在该文件中查找被丢弃的行。

914* **运行器记录 `Nobody can read this process's stdout anymore`**:读取运行器 stdout 的一方已不存在,因此运行器在其剩余运行期间不再向 stdout 写入,并继续运行。只要 stderr 仍处于打开状态,此行以及运行器之后的状态行(包括 `[runner:fatal]` 行)都会写入 stderr,因此请在 stderr 中读取它们。

904 915 

905初始化日志后,运行器将其生命周期日志(包括 `[runner:fatal]` 行)写入 stdout,将调试输出写入 stderr,全部作为纯文本行而不是 JSON。上述故障排除条目中描述的基础目录失败在该点之前打印到 stderr。使用 `--log-file` 捕获两个流,这也让 `self-hosted-runner doctor` 能够跟踪它们,或使用您的平台的日志收集。916初始化日志后,运行器将其生命周期日志(包括 `[runner:fatal]` 行)写入 stdout,将调试输出写入 stderr,全部作为纯文本行而不是 JSON。上述故障排除条目中描述的基础目录失败在该点之前打印到 stderr。使用 `--log-file` 捕获两个流,这也让 `self-hosted-runner doctor` 能够跟踪它们,或使用您的平台的日志收集。

906 917 

Details

29 29 

30* 一个 Linux 或 macOS 主机或容器,具有到 `api.anthropic.com` 的出站 HTTPS、到 `claude.ai` 和下面安装步骤重定向到的下载主机的出站 HTTPS,以及到您的 git 主机的出站 HTTPS 用于克隆;[网络要求表](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#network-requirements)有完整列表。Windows 不支持作为运行器主机;改为在 Linux 容器中运行运行器。开发人员工作站不受影响,因为会话从浏览器中的 claude.ai 启动。30* 一个 Linux 或 macOS 主机或容器,具有到 `api.anthropic.com` 的出站 HTTPS、到 `claude.ai` 和下面安装步骤重定向到的下载主机的出站 HTTPS,以及到您的 git 主机的出站 HTTPS 用于克隆;[网络要求表](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#network-requirements)有完整列表。Windows 不支持作为运行器主机;改为在 Linux 容器中运行运行器。开发人员工作站不受影响,因为会话从浏览器中的 claude.ai 启动。

31* 一个用于测试会话的仓库:可以是公共仓库,也可以是此主机已能通过其 HTTPS URL 克隆且无需提供凭据的仓库。仅有 SSH 密钥是不够的,因为运行器克隆的是仓库的 `https://` URL。要改为通过 SSH 克隆,请参阅[为私有网络重写 git URL](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)。31* 一个用于测试会话的仓库:可以是公共仓库,也可以是此主机已能通过其 HTTPS URL 克隆且无需提供凭据的仓库。仅有 SSH 密钥是不够的,因为运行器克隆的是仓库的 `https://` URL。要改为通过 SSH 克隆,请参阅[为私有网络重写 git URL](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)。

32* 与实时同步的时钟,例如使用 NTP。当时钟偏离超过五分钟时,身份验证失败;请参阅[故障排除](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#troubleshooting)。32* 与实时同步的时钟,例如使用 NTP。

33 33 

34### 运行器主机上的软件34### 运行器主机上的软件

35 35 

Details

48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | 每次会话结束时(包括 runner 关闭时)[`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 的时间预算 |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | 每次会话结束时(包括 runner 关闭时)[`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 的时间预算 |

49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | 未设置 | runner 在每次连接您的出口代理时运行的 shell 命令,其去除首尾空白后的 stdout 用作 `Proxy-Authorization` 标头值。需要 `HTTPS_PROXY` 或 `HTTP_PROXY`,且不能与 `--proxy-authorization-file` 同时使用。请参阅[向出口代理进行身份验证](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。需要 Claude Code v2.1.238 或更高版本。 |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | 未设置 | runner 在每次连接您的出口代理时运行的 shell 命令,其去除首尾空白后的 stdout 用作 `Proxy-Authorization` 标头值。需要 `HTTPS_PROXY` 或 `HTTP_PROXY`,且不能与 `--proxy-authorization-file` 同时使用。请参阅[向出口代理进行身份验证](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。需要 Claude Code v2.1.238 或更高版本。 |

50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | 未设置 | runner 在每次连接您的出口代理时读取的文件,其去除首尾空白后的内容用作 `Proxy-Authorization` 标头值。对于由其他进程原地轮换的令牌,请使用此标志。要求与 `--proxy-authorization-command` 相同,且不能与其同时使用。请参阅[向出口代理进行身份验证](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。需要 Claude Code v2.1.238 或更高版本。 |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | 未设置 | runner 在每次连接您的出口代理时读取的文件,其去除首尾空白后的内容用作 `Proxy-Authorization` 标头值。对于由其他进程原地轮换的令牌,请使用此标志。要求与 `--proxy-authorization-command` 相同,且不能与其同时使用。请参阅[向出口代理进行身份验证](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)。需要 Claude Code v2.1.238 或更高版本。 |

51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | 关闭 | 在由 runner 发起的会话结束(例如排空或空闲释放)时,在删除工作区之前将跟踪的结果分支推送到 `origin`,以便进行中的提交在重启后得以保留。尽力而为;会为关闭预算增加 30 秒,且需要 git 2.29 或更高版本才能从推送的分支恢复。启用前请限制谁可以推送到 `claude/*` 引用;请参阅[恢复的会话会丢失未推送的工作](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#additional-limitations)。通过 `checkout` 生命周期 hook 检出的仓库不会被推送;请改为在 [`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 中为其创建快照。 |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | 关闭 | 在 runner 因排空或空闲释放等原因主动结束会话时,在删除工作区之前将跟踪的结果分支推送到 `origin`,以便进行中的提交在重启后得以保留。尽力而为;会为关闭预算增加 30 秒,且需要 git 2.29 或更高版本才能从推送的分支恢复。启用前请限制谁可以推送到 `claude/*` 引用;请参阅[恢复的会话会丢失未推送的工作](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#additional-limitations)。通过 `checkout` 生命周期 hook 检出的仓库不会被推送;请改为在 [`post-session` hook](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#post-session) 中为其创建快照。 |

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 在轮次结束或会话等待用户操作后,若不活动达 N 分钟,则释放会话槽位。[某些会话不计为空闲](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle),因此请搭配 `--kill-session-after-min` 使用。已完成的后台任务会使会话保持忙碌状态,最长不超过 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 窗口。要推迟释放,请设置 [`--hold-idle-file`](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run)。`0` 表示禁用。 |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 在轮次结束或会话等待用户操作后,若不活动达 N 分钟,则释放会话槽位。[某些会话不计为空闲](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle),因此请搭配 `--kill-session-after-min` 使用。已完成的后台任务会使会话保持忙碌状态,最长不超过 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 窗口。要推迟释放,请设置 [`--hold-idle-file`](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run)。`0` 表示禁用。 |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 关闭 | 当会话在此 runner 上结束时,无论结果如何,都删除该会话在 `<base-dir>/_sessions/` 下的每会话目录。[复用预热的检出](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)介绍了这些目录保存的内容,以及它们保留时谁可以读取。删除是尽力而为的:如果 runner 在清理运行之前被终止或到达其排空截止时间,每会话目录将保留原位。启用该标志后,失败或中断的会话的调试日志不会保留在磁盘上。需要 Claude Code v2.1.268 或更高版本。 |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 关闭 | 当会话在此 runner 上结束时,无论结果如何,都删除该会话在 `<base-dir>/_sessions/` 下的每会话目录。[复用预热的检出](https://code.claude.com/docs/zh-CN/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)介绍了这些目录保存的内容,以及它们保留时谁可以读取。删除是尽力而为的:如果 runner 在清理运行之前被终止或到达其排空截止时间,每会话目录将保留原位。启用该标志后,失败或中断的会话的调试日志不会保留在磁盘上。需要 Claude Code v2.1.268 或更高版本。 |

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 未设置 | 在以秒为单位的绝对 Unix 时间戳处让 runner 退役,适用于会在已知时间终止 runner 的基础设施;[Runner 生命周期](https://code.claude.com/docs/zh-CN/self-hosted-environments#runner-lifecycle)介绍了释放顺序以及如何确定余量。早于 2001 年或晚于 5138 年的值会被该标志拒绝,并被该环境变量忽略。 |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 未设置 | 在以秒为单位的绝对 Unix 时间戳处让 runner 退役,适用于会在已知时间终止 runner 的基础设施;[Runner 生命周期](https://code.claude.com/docs/zh-CN/self-hosted-environments#runner-lifecycle)介绍了释放顺序以及如何确定余量。早于 2001 年或晚于 5138 年的值会被该标志拒绝,并被该环境变量忽略。 |


95| `--hook-timeout <sec>` | `60` | 在这么多秒后终止钩子的进程树。超时加其 5 秒杀死宽限期必须保持在 `--expected-spawn-seconds` 以下;编排器在启动时强制执行此操作。 |95| `--hook-timeout <sec>` | `60` | 在这么多秒后终止钩子的进程树。超时加其 5 秒杀死宽限期必须保持在 `--expected-spawn-seconds` 以下;编排器在启动时强制执行此操作。 |

96| `--expected-spawn-seconds <sec>` | `120` | 从编排器收到生成请求到运行器注册的预期 p99 时间,包括在您的平台上等待容量的任何时间。服务器强制的范围为 10 到 3600。在每次轮询时作为服务器端租约发送;如果没有运行器在其过期前注册,会话将使用新的订单 ID 重新提供。所有副本必须共享此值。 |96| `--expected-spawn-seconds <sec>` | `120` | 从编排器收到生成请求到运行器注册的预期 p99 时间,包括在您的平台上等待容量的任何时间。服务器强制的范围为 10 到 3600。在每次轮询时作为服务器端租约发送;如果没有运行器在其过期前注册,会话将使用新的订单 ID 重新提供。所有副本必须共享此值。 |

97| `--min-idle <n>` | `0` | 通过主动生成待命运行器来保持至少 N 个空闲会话槽。`0` 禁用预热。与运行器的 `--exit-if-unused-min` 配对,以便多余的待命运行器回收自己。 |97| `--min-idle <n>` | `0` | 通过主动生成待命运行器来保持至少 N 个空闲会话槽。`0` 禁用预热。与运行器的 `--exit-if-unused-min` 配对,以便多余的待命运行器回收自己。 |

98| `--shutdown-drain-sec <n>` | `0` | 收到 `SIGTERM` 时,停止轮询生成请求,并给正在运行的 `spawn-runner` hook 和任何尚未得到响应的轮询最多这么多秒来完成,之后停止剩余的部分。设为 `0` 时立即停止。最大值为 `3600`,编排器在启动时强制执行此限制。要选择合适的值,请参阅[确定 `--shutdown-drain-sec` 和编排器的停止超时时间](https://code.claude.com/docs/zh-CN/self-hosted-environments-configuration#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)。需要 Claude Code v2.1.299 或更高版本。 |

98| `--debug-dir <path>` | 未设置 | 将每个生成请求的工作订单和钩子 stderr 写入磁盘。仅用于调试;永远不要在生产中设置。 |99| `--debug-dir <path>` | 未设置 | 将每个生成请求的工作订单和钩子 stderr 写入磁盘。仅用于调试;永远不要在生产中设置。 |

99 100 

100### SCM 连接器标志101### SCM 连接器标志

Details

154 * **遥测单元**:`OTEL_EXPORTER_OTLP_*` 导出器键、`OTEL_LOG_*` 内容捕获开关、`OTEL_LOGS_EXPORTER`,以及 beta 追踪变量 `ENABLE_BETA_TRACING_DETAILED` 和 `BETA_TRACING_ENDPOINT`,作为一个整体跟随设置了其中任意一个的最高来源。提供 `otelHeadersHelper` 凭据键的来源也会占据该单元,但只有当它是所选来源时才会落地这些变量:一个未被选中但提供了该键的来源不会贡献其中任何变量,并且仍会阻止较低来源填补它们。无论哪种情况,来自一个来源的导出器端点都绝不会与来自另一个来源的凭据配对。154 * **遥测单元**:`OTEL_EXPORTER_OTLP_*` 导出器键、`OTEL_LOG_*` 内容捕获开关、`OTEL_LOGS_EXPORTER`,以及 beta 追踪变量 `ENABLE_BETA_TRACING_DETAILED` 和 `BETA_TRACING_ENDPOINT`,作为一个整体跟随设置了其中任意一个的最高来源。提供 `otelHeadersHelper` 凭据键的来源也会占据该单元,但只有当它是所选来源时才会落地这些变量:一个未被选中但提供了该键的来源不会贡献其中任何变量,并且仍会阻止较低来源填补它们。无论哪种情况,来自一个来源的导出器端点都绝不会与来自另一个来源的凭据配对。

155 * **与凭据配对的路由**:将路由变量与仅限所选来源的凭据键(例如 `apiKeyHelper` 或 `otelHeadersHelper`)配对的来源,只有在赢得该槽位时才会贡献这些路由变量。155 * **与凭据配对的路由**:将路由变量与仅限所选来源的凭据键(例如 `apiKeyHelper` 或 `otelHeadersHelper`)配对的来源,只有在赢得该槽位时才会贡献这些路由变量。

156* **`allowedProviders`**:机器上设置的列表与服务器托管列表按照[其条目的作用域说明](https://code.claude.com/docs/zh-CN/settings-reference.md#allowedproviders)进行组合。需要 Claude Code v2.1.285 或更高版本156* **`allowedProviders`**:机器上设置的列表与服务器托管列表按照[其条目的作用域说明](https://code.claude.com/docs/zh-CN/settings-reference.md#allowedproviders)进行组合。需要 Claude Code v2.1.285 或更高版本

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

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

158 159 

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

Details

2424 2424 

2425对于满足以下所有条件的对话,空闲压缩默认开启:2425对于满足以下所有条件的对话,空闲压缩默认开启:

2426 2426 

2427* **会话**:您处于交互式终端会话中,或者在 [Anthropic 选定的账户](#idle-compaction-in-vs-code-and-the-desktop-app)上使用 VS Code 扩展的聊天面板或桌面应用的 Code 标签页2427* **会话**:您处于交互式终端会话中、VS Code 扩展的聊天面板中,或者在会话运行于您的计算机上或通过 SSH 运行时处于桌面应用的 Code 标签页中

2428* **自动压缩**:[`autoCompactEnabled`](#autocompactenabled) 已开启2428* **自动压缩**:[`autoCompactEnabled`](#autocompactenabled) 已开启

2429* **提示缓存**:该对话使用[一小时提示缓存 TTL](https://code.claude.com/docs/zh-CN/prompt-caching.md#which-ttl-each-request-gets)2429* **提示缓存**:该对话使用[一小时提示缓存 TTL](https://code.claude.com/docs/zh-CN/prompt-caching.md#which-ttl-each-request-gets)

2430* **功能标志**:Claude Code 可以[从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)2430* **功能标志**:Claude Code 可以[从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)

2431* **大小**:对话的上下文已达到 token 阈值,您可以将其从默认的 200,000 进行[更改](#change-the-idle-compaction-threshold)2431* **大小**:对话的上下文已达到 token 阈值,您可以将其从默认的 200,000 进行[更改](#change-the-idle-compaction-threshold)

2432* **空闲时间**:自上次请求以来已过去约 54 分钟,且此时您的计算机处于唤醒状态2432* **空闲时间**:自上次请求以来已过去约一小时,且在此期间您的计算机保持唤醒状态

2433 2433 

2434要关闭空闲压缩,请将此键设置为 `false`。2434要关闭空闲压缩,请将此键设置为 `false`。

2435 2435 


2475Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json2475Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json

2476```2476```

2477 2477 

2478您无需执行任何操作。要关闭空闲压缩,请在 `~/.claude/settings.json` 或其他[设置文件](https://code.claude.com/docs/zh-CN/settings.md#settings-files-and-who-they-affect)中将 `idleCompaction` 设置为 `false`。2478您无需执行任何操作。要关闭空闲压缩,请在运行该会话的计算机或 WSL 发行版上的 `~/.claude/settings.json` 中,或在其他[设置文件](https://code.claude.com/docs/zh-CN/settings.md#settings-files-and-who-they-affect)中,将 `idleCompaction` 设置为 `false`。

2479 

2480在 VS Code 扩展的聊天面板和桌面应用的 Code 标签页中,空闲压缩会为 Anthropic 选定的账户运行。Claude Code 会在您离开期间编写摘要,然后仅当您的下一条消息距上次请求一小时或更久时,才使用该摘要进行压缩。

2481 2479 

2482### `plansDirectory`2480### `plansDirectory`

2483 2481 


5173 5171 

5174### `forceLoginMethod`5172### `forceLoginMethod`

5175 5173 

5176限制用户可以使用哪种账户登录。设置为 `"claudeai"` 仅允许 claude.ai 账户,设置为 `"console"` 仅允许 Claude Console 账户,设置为 `"gateway"` 则将用户引导至 [cloud gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway),而不是第一方登录。管理员在托管设置中设置此项,并与 [`forceLoginOrgUUID`](#forceloginorguuid) 搭配使用,使开发者的 claude.ai 登录限定在一个组织内。如果您在任何设置文件中将其设置为 `"claudeai"` 或 `"console"`,Claude Code 还会在该文件适用的会话中停止提供[无密钥 Console 登录](https://code.claude.com/docs/zh-CN/authentication.md#sign-in-without-an-api-key)。5174限制用户可以使用哪种账户登录。设置为 `"claudeai"` 仅允许 claude.ai 账户,设置为 `"console"` 仅允许 Claude Console 账户,设置为 `"gateway"` 则将用户引导至 [cloud gateway](https://code.claude.com/docs/zh-CN/claude-apps-gateway),而不是第一方登录。管理员在托管设置中设置此项,并与 [`forceLoginOrgUUID`](#forceloginorguuid) 搭配使用,使开发者的 claude.ai 登录限定在一个组织内。

5175 

5176如果您在任何设置文件中将其设置为 `"claudeai"`,Claude Code 还会在该文件适用的会话中停止提供[无密钥 Console 登录](https://code.claude.com/docs/zh-CN/authentication.md#sign-in-without-an-api-key)。仅设置 `"console"` 时,用户在登录失败后仍可访问无密钥登录。要让 Claude Code 停止提供该登录方式,请参阅[在托管机器上停止提供无密钥登录](https://code.claude.com/docs/zh-CN/authentication.md#stop-offering-the-keyless-sign-in-on-managed-machines),其中还列出了 `forceLoginOrgUUID` 带来的其他变化。

5177 5177 

5178* **作用域**:[`Any file`](#scopes)。Claude Code 仅在与 [`forceLoginGatewayUrl`](#forcelogingatewayurl) 相同的来源中认可 `"gateway"`,在其他任何地方都将其视为未设置。5178* **作用域**:[`Any file`](#scopes)。Claude Code 仅在与 [`forceLoginGatewayUrl`](#forcelogingatewayurl) 相同的来源中认可 `"gateway"`,在其他任何地方都将其视为未设置。

5179* **类型**:字符串,以下之一:5179* **类型**:字符串,以下之一:


5585| 限制类允许列表 | 从设置了该列表的最高来源整体采用该列表,不添加较低来源中的条目。当最高来源未设置时,从下一个来源整体采用 | [`availableModels`](#availablemodels)、[`allowedMcpServers`](#allowedmcpservers)、[`allowedProviders`](#allowedproviders)、[`strictKnownMarketplaces`](#strictknownmarketplaces)、[`allowedChannelPlugins`](#allowedchannelplugins) 以及 [`fallbackModel`](#fallbackmodel) 链 |5585| 限制类允许列表 | 从设置了该列表的最高来源整体采用该列表,不添加较低来源中的条目。当最高来源未设置时,从下一个来源整体采用 | [`availableModels`](#availablemodels)、[`allowedMcpServers`](#allowedmcpservers)、[`allowedProviders`](#allowedproviders)、[`strictKnownMarketplaces`](#strictknownmarketplaces)、[`allowedChannelPlugins`](#allowedchannelplugins) 以及 [`fallbackModel`](#fallbackmodel) 链 |

5586| 整体采用的值 | 从设置了该值的最高来源整体采用该值,不合并较低来源中的条目或字段。当最高来源未设置时,从下一个来源整体采用 | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs)、[`sandbox.ripgrep`](#sandbox-ripgrep) |5586| 整体采用的值 | 从设置了该值的最高来源整体采用该值,不合并较低来源中的条目或字段。当最高来源未设置时,从下一个来源整体采用 | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs)、[`sandbox.ripgrep`](#sandbox-ripgrep) |

5587| 提供的 MCP 服务器 | 合并所有来源中的服务器名称。当两个来源设置了相同的名称时,应用较高来源的完整条目 | [`managedMcpServers`](#managedmcpservers) |5587| 提供的 MCP 服务器 | 合并所有来源中的服务器名称。当两个来源设置了相同的名称时,应用较高来源的完整条目 | [`managedMcpServers`](#managedmcpservers) |

5588| 仅从最高优先级来源读取 | 仅从包含策略键的最高优先级来源读取该键,因此即使最高来源未设置该键,较低来源的值也会被忽略 | [`apiKeyHelper`](#apikeyhelper)、[`awsAuthRefresh`](#awsauthrefresh)、[`awsCredentialExport`](#awscredentialexport)、[`gcpAuthRefresh`](#gcpauthrefresh)、[`otelHeadersHelper`](#otelheadershelper)、`proxyAuthHelper`、[`forceLoginOrgUUID`](#forceloginorguuid)、[`forceLoginMethod`](#forceloginmethod) 的 `"claudeai"` 和 `"console"` 值、[`parentSettingsBehavior`](#parentsettingsbehavior)、[`modelPicker`](#modelpicker)、[`policyHelper`](#policyhelper)、[`permissions.defaultMode`](#permissions-defaultmode) |5588| 仅从最高优先级来源读取 | 仅从包含策略键的最高优先级来源读取该键,因此即使最高来源未设置该键,较低来源的值也会被忽略 | [`apiKeyHelper`](#apikeyhelper)、[`awsAuthRefresh`](#awsauthrefresh)、[`awsCredentialExport`](#awscredentialexport)、[`gcpAuthRefresh`](#gcpauthrefresh)、[`otelHeadersHelper`](#otelheadershelper)、`proxyAuthHelper`、[`parentSettingsBehavior`](#parentsettingsbehavior)、[`modelPicker`](#modelpicker)、[`policyHelper`](#policyhelper)、[`permissions.defaultMode`](#permissions-defaultmode) |

5589| `env` | 在 `"first-wins"` 和 `"merge"` 下均[按变量跨管理员来源合并](https://code.claude.com/docs/zh-CN/managed-settings.md#keys-read-from-every-admin-source) | [`env`](#env) |5589| `env` | 在 `"first-wins"` 和 `"merge"` 下均[按变量跨管理员来源合并](https://code.claude.com/docs/zh-CN/managed-settings.md#keys-read-from-every-admin-source) | [`env`](#env) |

5590| 其他所有键 | 从设置了该值的最高来源采用该值 | [`cleanupPeriodDays`](#cleanupperioddays)、[`model`](#model) |5590| 其他所有键 | 从设置了该值的最高来源采用该值 | [`cleanupPeriodDays`](#cleanupperioddays)、[`model`](#model) |

5591 5591 


5596* **[`policyHelper`](#policyhelper)**:仅当包含策略键的最高来源是 MDM 策略或托管设置文件时,Claude Code 才会遵循此键,因此在服务器托管设置下它不生效。5596* **[`policyHelper`](#policyhelper)**:仅当包含策略键的最高来源是 MDM 策略或托管设置文件时,Claude Code 才会遵循此键,因此在服务器托管设置下它不生效。

5597* **[`modelOverrides`](#modeloverrides)**:与 `availableModels` 配对。Claude Code 从设置了 `modelOverrides` 的最高来源采用它,除非某个更高的来源设置了 `availableModels` 但未设置 `modelOverrides`。在这种情况下,它会忽略所有来源中的 `modelOverrides`。5597* **[`modelOverrides`](#modeloverrides)**:与 `availableModels` 配对。Claude Code 从设置了 `modelOverrides` 的最高来源采用它,除非某个更高的来源设置了 `availableModels` 但未设置 `modelOverrides`。在这种情况下,它会忽略所有来源中的 `modelOverrides`。

5598* **[`forceLoginGatewayUrl`](#forcelogingatewayurl)、[`gatewayInternalNetworks`](#gatewayinternalnetworks) 以及 [`forceLoginMethod`](#forceloginmethod) 的 `"gateway"` 值**:Claude Code 从不从服务器托管设置中读取这些项,因此其中的值既不会生效,也不会覆盖 MDM 策略或托管设置文件中设置的值。在计算机上的管理员来源中,仅由包含策略键的排名最高的来源提供这些项,无论是否同时存在服务器托管设置。5598* **[`forceLoginGatewayUrl`](#forcelogingatewayurl)、[`gatewayInternalNetworks`](#gatewayinternalnetworks) 以及 [`forceLoginMethod`](#forceloginmethod) 的 `"gateway"` 值**:Claude Code 从不从服务器托管设置中读取这些项,因此其中的值既不会生效,也不会覆盖 MDM 策略或托管设置文件中设置的值。在计算机上的管理员来源中,仅由包含策略键的排名最高的来源提供这些项,无论是否同时存在服务器托管设置。

5599* **[`forceLoginOrgUUID`](#forceloginorguuid) 以及 [`forceLoginMethod`](#forceloginmethod) 的 `"claudeai"` 和 `"console"` 值**:请在[哪个托管来源提供登录键](https://code.claude.com/docs/zh-CN/managed-settings.md#which-managed-source-supplies-login-keys)中查找适用的值,而不是在表中查找。

5599* **[`allowedProviders`](#allowedproviders)**:在应用表中的规则之后,计算机自身的列表仍会限制结果,如其条目的作用域说明所述。5600* **[`allowedProviders`](#allowedproviders)**:在应用表中的规则之后,计算机自身的列表仍会限制结果,如其条目的作用域说明所述。

5600 5601 

5601要确认计算机上合并了哪些来源,请运行 `/status` 并[查看 `Setting sources` 行](https://code.claude.com/docs/zh-CN/managed-settings#read-the-source-in-/status)。5602要确认计算机上合并了哪些来源,请运行 `/status` 并[查看 `Setting sources` 行](https://code.claude.com/docs/zh-CN/managed-settings#read-the-source-in-/status)。

skills.md +10 −3

Details

395| 字段 | 必需 | 描述 |395| 字段 | 必需 | 描述 |

396| :- | :- | :- |396| :- | :- | :- |

397| `name` | 否 | 在 `/` 菜单中显示的命令名称。默认为目录名称。有关该字段如何与您为调用 skill 而输入的名称交互,请参阅 [skill 如何获得其命令名称](#how-a-skill-gets-its-command-name)。 |397| `name` | 否 | 在 `/` 菜单中显示的命令名称。默认为目录名称。有关该字段如何与您为调用 skill 而输入的名称交互,请参阅 [skill 如何获得其命令名称](#how-a-skill-gets-its-command-name)。 |

398| `description` | 建议 | skill 的功能以及何时使用它。Claude 据此决定何时应用该 skill。如果省略,则使用 markdown 内容的第一个非空行。请将关键用例放在最前面:为减少上下文占用,`description` 和 `when_to_use` 的合并文本在 skill 列表中会被截断为 1,536 个字符。 |398| `description` | 建议 | skill 的功能以及何时使用它。Claude 据此决定何时应用该 skill。如果省略,则使用 markdown 内容的第一个非空行。请将关键用例放在最前面:为减少上下文占用,`description` 和 `when_to_use` 的合并文本在 skill 列表中会被截断为 1,536 个字符。文本中的尖括号会[显示为 `&lt;` 和 `&gt;`](#angle-brackets-in-a-skill-description)。 |

399| `when_to_use` | 否 | 关于 Claude 何时应调用该 skill 的附加上下文,例如触发短语或示例请求。在 skill 列表中附加到 `description` 之后,并计入 1,536 个字符的上限。 |399| `when_to_use` | 否 | 关于 Claude 何时应调用该 skill 的附加上下文,例如触发短语或示例请求。在 skill 列表中附加到 `description` 之后,并计入 1,536 个字符的上限。 |

400| `argument-hint` | 否 | 自动补全期间显示的提示,用于指示预期的参数。示例:`[issue-number]` 或 `[filename] [format]`。 |400| `argument-hint` | 否 | 自动补全期间显示的提示,用于指示预期的参数。示例:`[issue-number]` 或 `[filename] [format]`。 |

401| `arguments` | 否 | 用于 skill 内容中 [`$name` 替换](#available-string-substitutions)的命名位置参数。接受以空格分隔的字符串或 YAML 列表。名称按顺序映射到参数位置。 |401| `arguments` | 否 | 用于 skill 内容中 [`$name` 替换](#available-string-substitutions)的命名位置参数。接受以空格分隔的字符串或 YAML 列表。名称按顺序映射到参数位置。 |


778 778 

779使用默认的 `bash` shell,将 `|| true` 附加到任何你期望退出非零的其他命令。一个在发现问题时退出 1 的检查脚本就是一个例子。779使用默认的 `bash` shell,将 `|| true` 附加到任何你期望退出非零的其他命令。一个在发现问题时退出 1 的检查脚本就是一个例子。

780 780 

781#### 注入命令中的控制字符781#### 未运行任何 shell 命令时

782 782 

783`No shell command in <name> was run` 表示该文件中的某个 `!` 命令包含制表符或换行符以外的原始控制字符,因此其中所有命令都不会运行。请参阅[如何查找并删除该字符](https://code.claude.com/docs/zh-CN/errors.md#no-shell-command-was-run)。783`No shell command in <name> was run` 表示其中某个 shell 命令包含该工具不接受的字符。要查找并删除该字符,请参阅[错误参考](https://code.claude.com/docs/zh-CN/errors.md#no-shell-command-was-run)。

784 784 

785#### 注入命令的权限检查785#### 注入命令的权限检查

786 786 


1229 1229 

1230要提高预算,设置 [`skillListingBudgetFraction`](https://code.claude.com/docs/zh-CN/settings-reference#skilllistingbudgetfraction) 设置(例如 `0.02` = 2%)或 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 环境变量为固定字符数。要为其他 skills 释放预算,在 [`skillOverrides`](#override-skill-visibility-from-settings) 中将低优先级条目设置为 `"name-only"`,以便它们在没有描述的情况下列出。你也可以在源处修剪 `description` 和 `when_to_use` 文本:将关键用例放在首位,因为每个条目的组合文本被限制在 1,536 个字符,无论预算如何。该上限可通过 [`skillListingMaxDescChars`](https://code.claude.com/docs/zh-CN/settings-reference#skilllistingmaxdescchars) 配置。1230要提高预算,设置 [`skillListingBudgetFraction`](https://code.claude.com/docs/zh-CN/settings-reference#skilllistingbudgetfraction) 设置(例如 `0.02` = 2%)或 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 环境变量为固定字符数。要为其他 skills 释放预算,在 [`skillOverrides`](#override-skill-visibility-from-settings) 中将低优先级条目设置为 `"name-only"`,以便它们在没有描述的情况下列出。你也可以在源处修剪 `description` 和 `when_to_use` 文本:将关键用例放在首位,因为每个条目的组合文本被限制在 1,536 个字符,无论预算如何。该上限可通过 [`skillListingMaxDescChars`](https://code.claude.com/docs/zh-CN/settings-reference#skilllistingmaxdescchars) 配置。

1231 1231 

1232### Skill 描述中的尖括号显示为 `&lt;` 和 `&gt;`

1233 

1234Claude Code 会将 `description` 和 `when_to_use` 字段中的 `<` 和 `>` 显示为 `&lt;` 和 `&gt;`。要显示诸如 `<branch>` 之类的占位符,请使用方括号或 [`argument-hint`](#frontmatter-reference):

1235 

1236* **方括号**:将 `<branch>` 替换为 `[branch]`,它会按输入原样显示

1237* **`argument-hint`**:将占位符移到新的 `argument-hint: <branch>` 行中。它会显示在命令名称之后。如果您还将该 skill 上传到 claude.ai 或 Skills API,请先[检查那里是否接受 `argument-hint`](#using-skill-frontmatter-outside-claude-code)。

1238 

1232### 个人 skills 消失了1239### 个人 skills 消失了

1233 1240 

1234如果你在 `~/.claude/skills/` 中创建的 skill 文件夹消失了,请查看 `~/.claude/skills/.trash/`。当 Claude Code [从 claude.ai 同步 skills](#how-synced-skills-behave) 时,它会将它们下载到单独的 `synced` 子文件夹中,不会移动或删除你创建的文件夹。1241如果你在 `~/.claude/skills/` 中创建的 skill 文件夹消失了,请查看 `~/.claude/skills/.trash/`。当 Claude Code [从 claude.ai 同步 skills](#how-synced-skills-behave) 时,它会将它们下载到单独的 `synced` 子文件夹中,不会移动或删除你创建的文件夹。

sub-agents.md +1 −1

Details

938 938 

939要在 Claude 等待期间继续工作,请在终端中按 **Ctrl+B**,或在 VS Code 中点击 [**Run in background**](https://code.claude.com/docs/zh-CN/vs-code.md#move-a-running-command-or-subagent-to-the-background)。939要在 Claude 等待期间继续工作,请在终端中按 **Ctrl+B**,或在 VS Code 中点击 [**Run in background**](https://code.claude.com/docs/zh-CN/vs-code.md#move-a-running-command-or-subagent-to-the-background)。

940 940 

941如果您不关闭 fork 模式,而是将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量设置为 `1`,Claude 会等待每一个子代理。后台命令也会被关闭,并且 **Ctrl+B** 不会将任何内容移到后台。941如果您不关闭 fork 模式,而是将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-CN/env-vars) 环境变量设置为 `1`,Claude 会等待子代理完成后再继续。后台命令也会被关闭,并且 **Ctrl+B** 不会将任何内容移到后台。

942 942 

943#### 后台子代理的工具、权限和结果943#### 后台子代理的工具、权限和结果

944 944 

terminal-config.md +52 −52

Details

146 146 

147## 匹配颜色主题147## 匹配颜色主题

148 148 

149使用 `/theme` 命令或 `/config` 中的主题选择器,选择与您的终端相匹配的 Claude Code 主题。选择自动选项可检测您的终端的浅色或深色背景,因此主题会在您的终端跟随操作系统外观更改时进行更改。Claude Code 不控制终端本身的配色方案,该方案由终端应用程序设置。149使用 `/theme` 命令或 `/config` 中的主题选择器,选择与终端相匹配的 Claude Code 主题。选择自动选项会检测终端的浅色或深色背景,因此每当终端随操作系统外观变化时,主题也会随之变化。Claude Code 不控制终端自身的配色方案,该方案由终端应用程序设置。

150 150 

151要自定义界面底部显示的内容,请配置一个[自定义状态行](https://code.claude.com/docs/zh-CN/statusline.md),显示当前模型、工作目录、git 分支或其他上下文。151要自定义界面底部显示的内容,请配置一个[自定义状态栏](https://code.claude.com/docs/zh-CN/statusline.md),用于显示当前模型、工作目录、git 分支或其他上下文信息。

152 152 

153### 创建自定义主题153### 创建自定义主题

154 154 

155除了内置预设外,`/theme` 还列出您定义的任何自定义主题以及由已安装的[插件](https://code.claude.com/docs/zh-CN/plugins/components.md#themes-and-output-styles)贡献的任何主题。选择列表末尾的\*\*新建自定义主题…\*\*以交互方式创建一个:您命名主题,然后选择要覆盖的各个颜色令牌。当自定义主题突出显示时,按 `Ctrl+E` 可编辑它。155除内置预设外,`/theme` 还会列出您定义的所有自定义主题,以及已安装的[插件](https://code.claude.com/docs/zh-CN/plugins/components.md#themes-and-output-styles)所提供的主题。选择列表末尾的 **New custom theme…** 即可以交互方式创建主题:先为主题命名,然后选择要覆盖的各个颜色 token。在某个自定义主题处于高亮状态时按 `Ctrl+E` 可对其进行编辑。

156 156 

157每个自定义主题都是 `~/.claude/themes/` 中的一个 JSON 文件。不带 `.json` 扩展名的文件名是主题的 slug,选择主题会将 `custom:<slug>` 存储为您的主题偏好设置。该文件有三个可选字段:157每个自定义主题都是 `~/.claude/themes/` 中的一个 JSON 文件。去掉 `.json` 扩展名后的文件名即为主题的 slug,选择该主题后会将 `custom:<slug>` 存储为您的主题偏好。该文件包含三个可选字段:

158 158 

159| 字段 | 类型 | 描述 |159| 字段 | 类型 | 描述 |

160| :- | :- | :- |160| :- | :- | :- |

161| `name` | string | 在 `/theme` 中显示的标签。默认为文件名 slug |161| `name` | string | 在 `/theme` 中显示的标签。默认为文件名 slug |

162| `base` | string | 主题开始的内置预设:`dark`、`light`、`dark-daltonized`、`light-daltonized`、`dark-ansi` 或 `light-ansi`。默认为 `dark` |162| `base` | string | 主题所基于的内置预设:`dark`、`light`、`dark-daltonized`、`light-daltonized`、`dark-ansi` 或 `light-ansi`。默认为 `dark` |

163| `overrides` | object | 颜色令牌名称到颜色值的映射。此处未列出的令牌会回退到基础预设 |163| `overrides` | object | 颜色 token 名称到颜色值的映射。未在此列出的 token 会沿用基础预设 |

164 164 

165颜色值接受 `#rrggbb`、`#rgb`、`rgb(r,g,b)`、`ansi256(n)` 或 `ansi:<name>`,其中 `<name>` 是 16 个标准 ANSI 颜色名称之一,例如 `red` 或 `cyanBright`。未知令牌和无效颜色值会被忽略,因此拼写错误不会破坏渲染。165颜色值支持 `#rrggbb`、`#rgb`、`rgb(r,g,b)`、`ansi256(n)` 或 `ansi:<name>`,其中 `<name>` 是 16 种标准 ANSI 颜色名称之一,例如 `red` 或 `cyanBright`。未知的 token 和无效的颜色值会被忽略,因此拼写错误不会破坏渲染。

166 166 

167以下示例定义了一个主题,该主题保留深色预设但重新着色提示符强调、错误文本和成功文本:167以下示例定义了一个主题,它保留 dark 预设,但重新设置了提示词强调色、错误文本和成功文本的颜色:

168 168 

169```json ~/.claude/themes/dracula.json theme={null}169```json ~/.claude/themes/dracula.json theme={null}

170{170{


178}178}

179```179```

180 180 

181Claude Code 监视 `~/.claude/themes/` 并在添加或更改文件时重新加载,因此在编辑器中所做的编辑会应用到正在运行的会话,无需重启。如果 Claude Code 启动时 `~/.claude/themes/` 文件夹本身不存在,请在创建第一个主题文件后重启一次。之后,更改会应用而无需重启。181Claude Code 会监视 `~/.claude/themes/`,并在添加或更改文件时重新加载,因此在编辑器中所做的修改无需重启即可应用于正在运行的会话。如果 Claude Code 启动时 `~/.claude/themes/` 文件夹本身尚不存在,请在创建第一个主题文件后重启一次。此后,更改无需重启即可生效。

182 182 

183下面的参考涵盖了您可以在 `overrides` 中设置的令牌。`/theme` 中的交互式编辑器显示相同的令牌以及实时预览,加上一些单一用途的强调,例如此处省略的入门屏幕颜色。183以下参考涵盖了可在 `overrides` 中设置的 token。`/theme` 中的交互式编辑器会显示相同的 token 并提供实时预览,此外还有一些单一用途的强调色(例如引导界面颜色),此处未列出。

184 184 

185> **颜色令牌参考**185> **颜色 token 参考**

186>186>

187> 以下示例结合了下面几个组中的令牌:品牌强调、Plan Mode 边框、diff 背景和消息背景。187> 以下示例组合了下面几个分组中的 token:品牌强调色、计划模式边框、diff 背景以及消息背景。

188>188>

189> ```json ~/.claude/themes/midnight.json theme={null}189> ```json ~/.claude/themes/midnight.json theme={null}

190> {190> {


200> }200> }

201> ```201> ```

202>202>

203> #### 文本和强调颜色203> #### 文本和强调色

204>204>

205> 控制整个界面中使用的主要品牌强调和前景文本阴影。205> 控制整个界面中使用的主品牌强调色和前景文本色调。

206>206>

207> | 令牌 | 控制 |207> | Token | 控制内容 |

208> | :- | :- |208> | :- | :- |

209> | `claude` | 主要品牌强调,用于微调器和助手标签 |209> | `claude` | 主品牌强调色,用于加载动画和助手标签 |

210> | `text` | 默认前景文本 |210> | `text` | 默认前景文本 |

211> | `inverseText` | 绘制在彩色背景顶部的文本,例如状态徽章 |211> | `inverseText` | 绘制在彩色背景上的文本,例如状态徽章 |

212> | `inactive` | 次要文本,例如提示、时间戳和禁用项 |212> | `inactive` | 次要文本,例如提示、时间戳和禁用项 |

213> | `subtle` | 淡色边框和去强调的次要文本 |213> | `subtle` | 淡色边框和弱化的次要文本 |

214> | `suggestion` | 自动完成建议和选择器中的选择突出显示 |214> | `suggestion` | 自动补全建议以及选择器中的选中高亮 |

215> | `permission` | 对话框边框,包括权限提示和选择器 |215> | `permission` | 对话框边框,包括权限提示和选择器 |

216> | `remember` | 内存和 `CLAUDE.md` 指示器 |216> | `remember` | 记忆和 `CLAUDE.md` 指示器 |

217>217>

218> #### 状态颜色218> #### 状态颜色

219>219>

220> 在消息和指示器中发出成功、失败和警告状态的信号。220> 在消息和指示器中标示成功、失败和警告状态。

221>221>

222> | 令牌 | 控制 |222> | Token | 控制内容 |

223> | :- | :- |223> | :- | :- |

224> | `success` | 成功消息和通过的检查 |224> | `success` | 成功消息和通过的检查 |

225> | `error` | 错误消息和失败 |225> | `error` | 错误消息和失败 |

226> | `warning` | 警告、注意消息和自动模式指示器 |226> | `warning` | 警告、注意消息以及自动模式指示器 |

227> | `merged` | 合并的拉取请求状态 |227> | `merged` | 已合并的 Pull Request 状态 |

228>228>

229> #### 输入框和模式指示器229> #### 输入框和模式指示器

230>230>

231> 设置输入框边框颜色和权限模式或指示器处于活动状态时显示的强调。231> 设置输入框边框颜色,以及权限模式或指示器处于活动状态时显示的强调色。

232>232>

233> | 令牌 | 控制 |233> | Token | 控制内容 |

234> | :- | :- |234> | :- | :- |

235> | `promptBorder` | 输入框边框 |235> | `promptBorder` | 输入框边框 |

236> | `planMode` | Plan Mode 强调、Plan Mode 消息和 Plan Mode 对话框 |236> | `planMode` | 计划模式强调色、计划消息和计划模式对话框 |

237> | `autoAccept` | Accept-edits mode 强调 |237> | `autoAccept` | 接受编辑模式强调色 |

238> | `bashBorder` | 输入 `!` shell 命令时的输入框边框 |238> | `bashBorder` | 输入 `!` shell 命令时的输入框边框 |

239> | `ide` | IDE 连接指示器 |239> | `ide` | IDE 连接指示器 |

240> | `fastMode` | Fast mode 指示器 |240> | `fastMode` | 快速模式指示器 |

241> | `effortUltra` | 当[ultracode](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)打开时输入框边框上的 `ultracode` 标签。您对此颜色的覆盖在 Claude Code v2.1.239 或更高版本上生效 |241> | `effortUltra` | 启用 [ultracode](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level) 时输入框边框上的 `ultracode` 标签。您对此颜色的覆盖在 Claude Code v2.1.239 或更高版本中生效 |

242>242>

243> #### Diff 渲染243> #### Diff 渲染

244>244>

245> 在文件编辑和审查中着色添加和删除的代码。245> 为文件编辑和审查中添加和删除的代码着色。

246>246>

247> | 令牌 | 控制 |247> | Token | 控制内容 |

248> | :- | :- |248> | :- | :- |

249> | `diffAdded` | 添加行的背景 |249> | `diffAdded` | 添加行的背景 |

250> | `diffRemoved` | 删除行的背景 |250> | `diffRemoved` | 删除行的背景 |

251> | `diffAddedDimmed` | 您拒绝编辑后显示的变暗 diff 中添加行的背景 |251> | `diffAddedDimmed` | 拒绝编辑后显示的淡化 diff 中添加行的背景 |

252> | `diffRemovedDimmed` | 您拒绝编辑后显示的变暗 diff 中删除行的背景 |252> | `diffRemovedDimmed` | 拒绝编辑后显示的淡化 diff 中删除行的背景 |

253> | `diffAddedWord` | 添加行内的字级突出显示 |253> | `diffAddedWord` | 添加行内的单词级高亮 |

254> | `diffRemovedWord` | 删除行内的字级突出显示 |254> | `diffRemovedWord` | 删除行内的单词级高亮 |

255>255>

256> #### 全屏模式256> #### 全屏模式

257>257>

258> Claude Code 仅在[全屏渲染模式](https://code.claude.com/docs/zh-CN/fullscreen.md)中使用 `userMessageBackgroundHover`、`selectionBg` 和 `composerSidebarBackground`。它在默认和全屏渲染器中都绘制 `userMessageBackground`、`bashMessageBackgroundColor` 和 `memoryBackgroundColor`。258> Claude Code 仅在[全屏渲染模式](https://code.claude.com/docs/zh-CN/fullscreen.md)中使用 `userMessageBackgroundHover`、`selectionBg` 和 `composerSidebarBackground`。`userMessageBackground`、`bashMessageBackgroundColor` 和 `memoryBackgroundColor` 则在默认渲染器和全屏渲染器中都会绘制。

259>259>

260> | 令牌 | 控制 |260> | Token | 控制内容 |

261> | :- | :- |261> | :- | :- |

262> | `userMessageBackground` | 成绩单中您的消息后面的背景 |262> | `userMessageBackground` | 会话记录中您的消息的背景 |

263> | `userMessageBackgroundHover` | 悬停或展开消息时消息后面的背景 |263> | `userMessageBackgroundHover` | 消息在悬停或展开时的背景 |

264> | `bashMessageBackgroundColor` | 成绩单中 `!` shell 命令条目后面的背景 |264> | `bashMessageBackgroundColor` | 会话记录中 `!` shell 命令条目的背景 |

265> | `memoryBackgroundColor` | 成绩单中 `#` 内存条目后面的背景 |265> | `memoryBackgroundColor` | 会话记录中 `#` 记忆条目的背景 |

266> | `selectionBg` | 用鼠标选择的文本的背景 |266> | `selectionBg` | 用鼠标选中的文本的背景 |

267> | `composerSidebarBackground` | 对话旁边面板的背景,例如 [diff 面板](https://code.claude.com/docs/zh-CN/fullscreen.md#watch-your-changes-in-the-diff-panel)或 [mod 的窗格](https://code.claude.com/docs/zh-CN/plugins/mods/interface.md) |267> | `composerSidebarBackground` | 对话旁边面板的背景,例如 [diff 面板](https://code.claude.com/docs/zh-CN/fullscreen.md#watch-your-changes-in-the-diff-panel)或 [mod 的窗格](https://code.claude.com/docs/zh-CN/plugins/mods/interface.md) |

268>268>

269> #### 使用量计量表和说话者标签269> #### 用量计量条和发言者标签

270>270>

271> 调整 `/usage` 视图中显示的条形图和区分您的消息与 Claude 消息的标签。271> 调整 `/usage` 视图中显示的计量条,以及用于区分您的消息与 Claude 消息的标签。

272>272>

273> | 令牌 | 控制 |273> | Token | 控制内容 |

274> | :- | :- |274> | :- | :- |

275> | `rate_limit_fill` | 使用量计量表的填充部分 |275> | `rate_limit_fill` | 用量计量条的已填充部分 |

276> | `rate_limit_empty` | 使用量计量表的未填充部分 |276> | `rate_limit_empty` | 用量计量条的未填充部分 |

277> | `briefLabelYou` | 您的消息上 `You` 标签的颜色 |277> | `briefLabelYou` | 您的消息上 `You` 标签的颜色 |

278> | `briefLabelClaude` | 助手消息上 `Claude` 标签的颜色 |278> | `briefLabelClaude` | 助手消息上 `Claude` 标签的颜色 |

279>279>

280> #### 微光变体和子代理颜色280> #### 闪烁变体和子代理颜色

281>281>

282> 几个令牌有一个配对的微光变体,提供微调器的动画梯度中使用的较浅颜色。如果动画看起来不匹配,请与其基础令牌一起覆盖微光。282> 若干 token 有配对的闪烁变体,用于提供加载动画渐变中使用的较浅颜色。如果动画看起来不协调,请将闪烁变体与其基础 token 一起覆盖。

283>283>

284> * `claude` 和 `claudeShimmer`284> * `claude` 和 `claudeShimmer`

285> * `warning` 和 `warningShimmer`285> * `warning` 和 `warningShimmer`


288> * `inactive` 和 `inactiveShimmer`288> * `inactive` 和 `inactiveShimmer`

289> * `fastMode` 和 `fastModeShimmer`289> * `fastMode` 和 `fastModeShimmer`

290>290>

291> 每个[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)和并行任务以八个命名颜色之一显示,以便您可以在成绩单中区分它们。令牌名称遵循 `<color>_FOR_SUBAGENTS_ONLY` 的模式,其中 `<color>` 是 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan`。覆盖这些以更改每个命名颜色的外观。例如,定义中具有 `color: blue` 的子代理使用 `blue_FOR_SUBAGENTS_ONLY` 值绘制。291> 每个[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)和并行任务都以八种命名颜色之一显示,以便您在会话记录中区分它们。token 名称遵循 `<color>_FOR_SUBAGENTS_ONLY` 模式,其中 `<color>` 为 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan`。覆盖这些 token 可更改每种命名颜色的外观。例如,定义中包含 `color: blue` 的子代理会使用 `blue_FOR_SUBAGENTS_ONLY` 的值进行绘制。

292>292>

293> 当 [`ultrathink`](https://code.claude.com/docs/zh-CN/model-config#use-ultrathink-for-one-off-deep-reasoning) 能够提高某一轮次的 effort 时,Claude Code 会在提示词输入框中使用七色彩虹梯度渲染该词。令牌名称遵循 `rainbow_<color>` 和 `rainbow_<color>_shimmer` 的模式,其中 `<color>` 是 `red`、`orange`、`yellow`、`green`、`blue`、`indigo` 或 `violet`。293> 当 [`ultrathink`](https://code.claude.com/docs/zh-CN/model-config#use-ultrathink-for-one-off-deep-reasoning) 可以提高某一轮次的 effort 时,Claude Code 会在提示词输入框中以七色彩虹渐变渲染该词。token 名称遵循 `rainbow_<color>` 和 `rainbow_<color>_shimmer` 模式,其中 `<color>` 为 `red`、`orange`、`yellow`、`green`、`blue`、`indigo` 或 `violet`。

294 294 

295## 切换到全屏渲染295## 切换到全屏渲染

296 296 

tools-reference.md +21 −21

Details

618 618 

619## WebFetch 工具行为619## WebFetch 工具行为

620 620 

621WebFetch 接收一个 URL 和一个描述要提取内容的提示词。它获取页面,当服务器返回 HTML 时将响应转换为 Markdown。对于大多数获取操作,它随后会在单独的模型调用中针对内容运行该提示词,Claude 接收的是该调用的结果,而不是原始页面。转换步骤不可配置。621WebFetch 接收一个 URL 和一个描述要提取内容的提示词。它会获取页面,并在服务器返回 HTML 时将响应转换为 Markdown。对于大多数获取操作,它随后会在单独的模型调用中针对内容运行该提示词,Claude 接收到的是该调用的结果,而不是原始页面。转换步骤不可配置。

622 622 

623这使得 WebFetch 在设计上是有损的。提取提示决定了什么到达 Claude,所以一个说页面没有提及某事的结果可能只是意味着提示没有询问它。要求 Claude 使用更具体的提示再次获取,或通过 Bash 使用 `curl` 获取未处理的页面。623这使得 WebFetch 在设计上就是有损的。提取提示词决定了哪些内容会到达 Claude,因此如果结果表明页面没有提到某些内容,可能仅仅意味着提示词没有询问这一点。可以让 Claude 使用更具体的提示词重新获取,或通过 Bash 使用 `curl` 获取未经处理的页面。

624 624 

625几个行为塑造了 Claude 接收的响应:625以下几种行为会影响 Claude 接收到的响应:

626 626 

627* WebFetch 拒绝 `localhost` 和任何其他没有点的主机名,例如裸露的内网名称,在发出请求之前。它返回的[错误](https://code.claude.com/docs/zh-CN/errors.md#webfetch-cannot-fetch-localhost)告诉 Claude 通过 Bash 使用 `curl` 到达本地服务器。627* WebFetch 会在发出请求之前拒绝 `localhost` 以及任何不含点的主机名,例如单纯的内网名称。它返回的[错误](https://code.claude.com/docs/zh-CN/errors.md#webfetch-cannot-fetch-localhost)会告诉 Claude 改为通过 Bash 使用 `curl` 访问本地服务器。

628* HTTP URL 会自动升级到 HTTPS。628* HTTP URL 会自动升级为 HTTPS。

629* WebFetch 每次调用最多读取页面内容的 100,000 个字符。在 Claude Code v2.1.290 或更高版本上,对于更长的页面,结果会告知 Claude 有多少内容未被读取,以便 Claude 可以获取下一部分。629* WebFetch 每次调用最多读取页面内容的 100,000 个字符。在 Claude Code v2.1.290 或更高版本中,对于较长的页面,结果会告诉 Claude 有多少内容未被读取,以便 Claude 获取下一部分。

630* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。630* WebFetch 默认将每个响应缓存 15 分钟,因此重复获取同一 URL 会很快返回。在 Claude Code v2.1.233 或更高版本中,可设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 来更改 WebFetch 保留每个响应的时长。

631* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。631* 如果页面在五分钟内(包括 WebFetch 跟随的任何重定向)未完成下载,则会因截止时间错误而失败。在 Claude Code v2.1.268 或更高版本中,可设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 来更改该限制,或将其设为 `0` 以移除限制。

632* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。632* 当 URL 重定向到不同的主机时,WebFetch 不会跟随重定向,而是返回一个文本结果,其中列出原始 URL 和重定向目标。Claude 随后会通过第二次 WebFetch 调用获取新的 URL。

633* 当提取步骤遇到过载的 API 时,Claude Code 会使用退避重试它;仍然失败的获取会返回错误结果。633* 当提取步骤遇到 API 过载时,Claude Code 会以退避方式重试;如果获取仍然失败,则返回错误结果。

634 634 

635在 Manual 和 `acceptEdits` [权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)中,WebFetch 在获取前提示,除了您的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions)已允许或拒绝的域以及一组内置的预批准文档域,这些域无需提示即可获取。无论您的规则允许什么,获取也必须首先通过 [WebFetch 域安全检查](https://code.claude.com/docs/zh-CN/data-usage.md#webfetch-domain-safety-check);该部分涵盖检查发送的内容和跳过它的设置。提示提供三个选项:635在 Manual 和 `acceptEdits` [权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md)下,WebFetch 会在获取之前进行提示,但您的[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#manage-permissions)已允许或拒绝的域名,以及一组内置的预先批准的文档域名除外,这些域名无需提示即可获取。无论您的规则允许什么,获取操作都会先通过 [WebFetch 域名安全检查](https://code.claude.com/docs/zh-CN/data-usage.md#webfetch-domain-safety-check);该部分介绍了检查会发送的内容以及跳过检查的设置。提示提供三个选项:

636 636 

637* **是**:仅批准此获取。下一个 WebFetch 调用会再次提示,即使是同一域。637* **Yes**:仅批准本次获取。下一次 WebFetch 调用会再次提示,即使是同一域名。

638* **是,不再询问 `<domain>`**:批准获取并为该域保存一个 `WebFetch(domain:...)` 允许规则到该存储库的 `.claude/settings.local.json`。请参阅[保存的批准如何持久化](https://code.claude.com/docs/zh-CN/permissions.md#permission-system)。当您的组织设置 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/permissions#managed-only-settings) 时,Claude Code 隐藏此选项。638* **Yes, and don't ask again for `<domain>`**:批准本次获取,并将该域名的 `WebFetch(domain:...)` 允许规则保存到该仓库的 `.claude/settings.local.json` 中。请参阅[已保存的批准如何持久保留](https://code.claude.com/docs/zh-CN/permissions.md#permission-system)。当您的组织设置了 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/zh-CN/permissions#managed-only-settings) 时,Claude Code 会隐藏此选项。

639* **否,并告诉 Claude 应该如何不同地做**:拒绝获取。639* **No, and tell Claude what to do differently**:拒绝本次获取。

640 640 

641要提前允许一个域而不提示,添加一个允许规则,如 `WebFetch(domain:example.com)`;`WebFetch(domain:*)` 允许每个域。`auto` 和 `bypassPermissions` [权限模式](https://code.claude.com/docs/zh-CN/permissions.md#permission-modes)跳过提示,除非显式 `ask` 规则匹配一个域。641要预先允许某个域名而无需提示,请添加类似 `WebFetch(domain:example.com)` 的允许规则;`WebFetch(domain:*)` 允许所有域名。`auto` 和 `bypassPermissions` [权限模式](https://code.claude.com/docs/zh-CN/permissions.md#permission-modes)会跳过提示,但显式 `ask` 规则匹配的域名除外。

642 642 

643`deny`、`ask` 或 `allow` 中的显式 `WebFetch(domain:...)` 规则优先于预批准集,所以您可以阻止预批准域或要求对其进行提示。643`deny`、`ask` 或 `allow` 中的显式 `WebFetch(domain:...)` 规则优先于预先批准的集合,因此您可以阻止某个预先批准的域名,或要求对其进行提示。

644 644 

645当 URL 是 claude.ai [Artifact](https://code.claude.com/docs/zh-CN/artifacts.md) 链接时,Claude Code 还可能请求批准以读取该 Artifact 本身。有关会请求批准的情况,请参阅[读取与您共享的 Artifact](https://code.claude.com/docs/zh-CN/artifacts.md#read-an-artifact-shared-with-you)。645当 URL 是 claude.ai [Artifact](https://code.claude.com/docs/zh-CN/artifacts.md) 链接时,Claude Code 还可能请求批准以读取该 Artifact 本身。有关会请求批准的情况,请参阅[读取与您共享的 Artifact](https://code.claude.com/docs/zh-CN/artifacts.md#read-an-artifact-shared-with-you)。

646 646 

647WebFetch 设置一个以 `Claude-User` 开头的 `User-Agent` 标头,以及一个 `Accept` 标头,优先选择 Markdown 而不是 HTML,以便支持内容协商的服务器可以直接返回 Markdown。647WebFetch 会设置以 `Claude-User` 开头的 `User-Agent` 标头,以及优先选择 Markdown 而非 HTML 的 `Accept` 标头,以便支持内容协商的服务器可以直接返回 Markdown。

648 648 

649沙箱化命令不继承 WebFetch 的内置预批准文档域集。要让沙箱化命令无需提示即可到达一个域,将域添加到 [`allowedDomains`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-alloweddomains) 或使用 `WebFetch(domain:...)` 规则允许它,[沙箱也遵守](https://code.claude.com/docs/zh-CN/sandboxing.md#network-isolation)该规则。WebFetch 反过来从不读取沙箱允许列表,所以将域添加到沙箱或组织网络允许列表不会阻止 WebFetch 对其进行提示。649沙箱中的命令不会继承 WebFetch 内置的预先批准文档域名集合。要让沙箱中的命令无需提示即可访问某个域名,请将该域名添加到 [`allowedDomains`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-alloweddomains),或使用 `WebFetch(domain:...)` 规则允许它,[沙箱也会遵循](https://code.claude.com/docs/zh-CN/sandboxing.md#network-isolation)该规则。反过来,WebFetch 从不读取沙箱允许列表,因此将域名添加到沙箱或组织网络允许列表并不会阻止 WebFetch 对其进行提示。

650 650 

651### WebFetch 可用性651### WebFetch 可用性

652 652 

653在 Claude Code v2.1.285 或更高版本上,设置 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](https://code.claude.com/docs/zh-CN/env-vars#variables) 为 `1` 以关闭 WebFetch。653在 Claude Code v2.1.285 或更高版本中,将 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](https://code.claude.com/docs/zh-CN/env-vars#variables) 设置为 `1` 即可关闭 WebFetch。

654 654 

655如果您使用 Team 或 Enterprise claude.ai 账户登录,并且不通过 [LLM gateway](https://code.claude.com/docs/zh-CN/llm-gateway) 连接,WebFetch 也取决于您的组织政策,Claude Code 在会话启动时从 `api.anthropic.com` 请求该政策。对于 Claude Code 无法确定计划的会话也是如此,例如在另一个应用提供的 claude.ai 令牌下运行的会话。655如果您使用 Team 或 Enterprise claude.ai 账户登录,并且未通过 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)连接,WebFetch 还取决于您组织的策略,Claude Code 会在会话启动时从 `api.anthropic.com` 请求该策略。对于 Claude Code 无法确定其套餐的会话,例如在其他应用提供的 claude.ai 令牌下运行的会话,情况也是如此。

656 656 

657如果 WebFetch 在会话中缺失,在会话中运行 `/status`。如果其 `Organization policy` 行报告政策未加载并在等待它的功能中列出网络获取,Claude Code 正在保留 WebFetch,直到它可以确认您的组织允许它。在会话外,`claude doctor` 进行自己的请求并打印相同的行。一旦允许 WebFetch 的政策加载,该工具返回而无需重启。657如果会话中缺少 WebFetch,请在会话中运行 `/status`。如果其 `Organization policy` 行报告策略未加载,并在等待该策略的功能中列出了 web fetch,则表示 Claude Code 在确认您的组织允许 WebFetch 之前会暂不提供该工具。在会话之外,`claude doctor` 会自行发出请求并打印相同的行。一旦允许 WebFetch 的策略加载完成,该工具就会恢复可用,无需重启。

658 658 

659## WebSearch 工具行为659## WebSearch 工具行为

660 660 

Details

1169 1169 

1170### OAuth 登录在 WSL2、SSH 或容器中失败1170### OAuth 登录在 WSL2、SSH 或容器中失败

1171 1171 

1172当 Claude Code 在 WSL2 中运行、通过 SSH 在远程机器上运行或在容器内运行时,浏览器通常在不同的主机上打开,其重定向无法到达 Claude Code 的本地回调服务器。登录后,浏览器显示登录代码而不是自动重定向回来。将该代码粘贴到终端的 `Paste code here if prompted` 提示处以完成登录。1172如果没有浏览器打开,或者浏览器完成登录后显示 `localhost` 地址的连接错误,您无需修复其中任何一个问题即可完成登录。请改为通过终端在其粘贴提示上方显示的单独登录 URL 进行登录:

1173 1173 

1174如果浏览器根本不从 WSL2 打开,请将 `BROWSER` 环境变量设置为您的 Windows 浏览器路径:1174**1. 复制登录 URL**

1175 1175 

1176```bash theme={null}1176在交互式登录提示处,按 `c` 复制 URL,或在终端中选中它。使用 `claude auth login` 时,复制它打印的 URL。

1177export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"1177 

1178claude1178**2. 通过该 URL 登录**

1179```1179 

1180在本地机器上的浏览器中打开该 URL 并登录。浏览器随后会显示一个代码,而不是返回 `localhost`。

1181 

1182**3. 粘贴代码**

1180 1183 

1181或者,在交互式登录提示处按 `c` 复制 OAuth URL,或复制 `claude auth login` 打印的 URL,并在您的本地机器上的浏览器中打开它。1184将该代码粘贴到终端中以 `Paste code here` 开头的提示处。

1182 1185 

1183如果将代码粘贴到交互式提示中没有任何反应,您的终端的粘贴绑定可能无法到达输入字段。尝试您的终端的替代粘贴快捷键,通常在 Windows Terminal 中是右键单击或 Shift+Insert,或改用 `claude auth login`,它从标准输入读取粘贴的代码:1186如果将代码粘贴到交互式提示中没有任何反应,您的终端的粘贴绑定可能无法到达输入字段。尝试您的终端的替代粘贴快捷键,通常在 Windows Terminal 中是右键单击或 Shift+Insert,或改用 `claude auth login`,它从标准输入读取粘贴的代码:

1184 1187 


1188 1191 

1189此回退也适用于本机 Windows 或任何将粘贴到交互式提示中失败的终端。1192此回退也适用于本机 Windows 或任何将粘贴到交互式提示中失败的终端。

1190 1193 

1194在 WSL2 上,如果没有浏览器打开,您还可以将 `BROWSER` 环境变量设置为您的 Windows 浏览器的路径,以便 Claude Code 下次打开该浏览器:

1195 

1196```bash theme={null}

1197export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

1198claude

1199```

1200 

1191### 未登录或令牌已过期1201### 未登录或令牌已过期

1192 1202 

1193如果 Claude Code 在会话后提示您再次登录,您的 OAuth 令牌可能已过期。1203如果 Claude Code 在会话后提示您再次登录,您的 OAuth 令牌可能已过期。

vs-code.md +16 −5

Details

133 当前模型支持 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)时,选择器还会显示 **Effort** 行,模型名称按钮也会显示所选级别。当您选择 `max` 以外的级别时,Claude Code 会将其保存为当前模型的默认值,存储在用户设置的 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings) 下;`max` 仅适用于当前会话。模型名称按钮和 **Effort** 行需要 Claude Code v2.1.257 或更高版本。133 当前模型支持 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)时,选择器还会显示 **Effort** 行,模型名称按钮也会显示所选级别。当您选择 `max` 以外的级别时,Claude Code 会将其保存为当前模型的默认值,存储在用户设置的 [`modelSettings`](https://code.claude.com/docs/zh-CN/settings-reference#modelsettings) 下;`max` 仅适用于当前会话。模型名称按钮和 **Effort** 行需要 Claude Code v2.1.257 或更高版本。

134 134 

135 启用[动态工作流](https://code.claude.com/docs/zh-CN/workflows.md)且当前模型支持时,**Effort** 行下方会出现 **Ultracode** 开关。打开它后,Claude 会以所选 effort 级别,为本会话中的每项实质性任务规划一个[工作流](https://code.claude.com/docs/zh-CN/workflows.md#let-claude-decide-with-ultracode)。开关打开期间,模型名称按钮会在级别后显示 `· Ultracode`。该开关需要 Claude Code v2.1.284 或更高版本。135 启用[动态工作流](https://code.claude.com/docs/zh-CN/workflows.md)且当前模型支持时,**Effort** 行下方会出现 **Ultracode** 开关。打开它后,Claude 会以所选 effort 级别,为本会话中的每项实质性任务规划一个[工作流](https://code.claude.com/docs/zh-CN/workflows.md#let-claude-decide-with-ultracode)。开关打开期间,模型名称按钮会在级别后显示 `· Ultracode`。该开关需要 Claude Code v2.1.284 或更高版本。

136* **命令菜单**:点击 `/` 或输入 `/` 即可打开命令菜单。选项包括附加文件、切换模型以及开关扩展思考。136* **命令菜单**:点击 `/` 或输入 `/` 即可打开命令菜单。选项包括附加文件和切换模型。

137 137 

138 Customize 部分包含 MCP 服务器、命令、输出样式、hook、记忆、指令、权限和插件等条目。带有终端图标的项目会在集成终端中打开。138 Customize 部分包含 MCP 服务器、命令、输出样式、hook、记忆、指令、权限和插件等条目。带有终端图标的项目会在集成终端中打开。

139 139 


191 如果没有显示 Agent 计数(例如 Claude 启动了后台 shell 但没有子代理),要打开地图,请在输入框中输入 `/tasks`。地图中的后台任务和输入的 `/tasks` 需要 Claude Code v2.1.277 或更高版本。191 如果没有显示 Agent 计数(例如 Claude 启动了后台 shell 但没有子代理),要打开地图,请在输入框中输入 `/tasks`。地图中的后台任务和输入的 `/tasks` 需要 Claude Code v2.1.277 或更高版本。

192 192 

193 在 Claude Code v2.1.286 或更高版本中,当您点击 **Stop** 或按 `Esc` 时,当前轮次会结束。后台 Agent 会继续运行,直到完成或您从地图中将其停止。193 在 Claude Code v2.1.286 或更高版本中,当您点击 **Stop** 或按 `Esc` 时,当前轮次会结束。后台 Agent 会继续运行,直到完成或您从地图中将其停止。

194* **扩展思考**:让 Claude 花更多时间推理复杂问题。通过命令菜单(`/`)将其打开。Claude 的推理过程会以折叠块的形式出现在对话中:点击某个块即可阅读,或按 `Ctrl+O` 展开或折叠会话中的所有思考块。详情请参阅[扩展思考](https://code.claude.com/docs/zh-CN/model-config.md#extended-thinking)。194* **扩展思考**:让 Claude 花更多时间推理复杂问题。要将其关闭或重新打开,请使用命令菜单(`/`)Model 部分中的 **Thinking** 开关。在[无法关闭思考](https://code.claude.com/docs/zh-CN/model-config.md#extended-thinking)的模型上,菜单中没有 **Thinking** 开关,思考会始终保持开启。

195 

196 仅显示标签(例如 `Thought for 12s`)的思考块不包含文本,点击时也不会展开。要查看思考摘要,请在 `~/.claude/settings.json` 中将 [`showThinkingSummaries`](https://code.claude.com/docs/zh-CN/settings-reference#showthinkingsummaries) 设置为 `true`,然后从命令面板运行 **Developer: Reload Window**。

197 

198 已有的思考块仍保持为空。在重新加载之后的回复中,点击某个块或按 `Ctrl+O` 即可将它们全部展开。

195* **多行输入**:按 `Shift+Enter` 可添加新行而不发送。这在问题对话框的"Other"自由文本输入中同样适用。199* **多行输入**:按 `Shift+Enter` 可添加新行而不发送。这在问题对话框的"Other"自由文本输入中同样适用。

196 200 

197### 引用文件和文件夹201### 引用文件和文件夹


333 337 

334运行 `/usage` 可打开 Account & usage 对话框,其中显示您已登录的账户和用量。用量数据与您的登录方式相对应:338运行 `/usage` 可打开 Account & usage 对话框,其中显示您已登录的账户和用量。用量数据与您的登录方式相对应:

335 339 

336* **claude.ai 套餐**:显示套餐各项限额的用量条,例如当前会话和本周。每个用量条都会显示距离其限额重置还有多长时间。340* **claude.ai 套餐**:显示套餐各项限额的用量条,例如当前会话和本周。

337 341 

338 对话框还会细分哪些因素在消耗您的套餐限额:342 对话框还会细分哪些因素在消耗您的套餐限额:

339 343 


580 584 

581创建拉取请求时,Claude 会根据实际代码更改生成描述,并可以添加有关测试或实现决策的上下文。585创建拉取请求时,Claude 会根据实际代码更改生成描述,并可以添加有关测试或实现决策的上下文。

582 586 

587### 重新打开已移入 worktree 的对话

588 

589在重新打开的对话中,**This session is in worktree** 横幅表示该对话的工作目录是横幅中所指的 [worktree](https://code.claude.com/docs/zh-CN/worktrees.md),而不是此窗口当前打开的文件夹。要在新的 VS Code 窗口中打开该 worktree,请点击横幅上的 **Open worktree**。

590 

591例如,当您[要求 Claude 在某个 worktree 中工作](https://code.claude.com/docs/zh-CN/worktrees.md#ask-claude-to-create-a-worktree)时,对话就会移入该 worktree。当您重新打开该对话,或面板[在窗口重新加载后重新打开它](#continue-conversations-after-a-reload)时,如果该 worktree 是由 Claude Code 在 `.claude/worktrees/` 下创建的且仍然存在,对话将在该 worktree 中恢复。在 Claude Code v2.1.300 之前,打开的会是一个空对话。如果您使用的是这些版本,请更新扩展。

592 

583## 在后台运行工作593## 在后台运行工作

584 594 

585将长时间运行的命令或子代理发送到后台,然后从输入框中查看其状态。595将长时间运行的命令或子代理发送到后台,然后从输入框中查看其状态。


633| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | 插入对当前文件和所选内容的引用(需要编辑器处于焦点状态) |643| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | 插入对当前文件和所选内容的引用(需要编辑器处于焦点状态) |

634| Accept Change at Cursor | - | 在逐个[审阅建议的编辑](#get-started)时,接受光标处的更改。需要 Claude Code v2.1.275 或更高版本 |644| Accept Change at Cursor | - | 在逐个[审阅建议的编辑](#get-started)时,接受光标处的更改。需要 Claude Code v2.1.275 或更高版本 |

635| Reject Change at Cursor | - | 在逐个审阅建议的编辑时,还原光标处的更改。需要 Claude Code v2.1.275 或更高版本 |645| Reject Change at Cursor | - | 在逐个审阅建议的编辑时,还原光标处的更改。需要 Claude Code v2.1.275 或更高版本 |

636| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | 隐藏或显示对话中的工具活动。在 Claude 面板或侧边栏可见时生效。需要 Claude Code v2.1.221 或更高版本 |646| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | 隐藏或显示对话中的工具活动。在 Claude 面板或侧边栏可见时生效。在 Windows/Linux 上,当焦点位于调试控制台或可搜索列表(例如资源管理器)中时,`Ctrl+Alt+F` 会改为打开 VS Code 的查找功能。请将焦点移至编辑器或 Claude 面板,然后再次按下该快捷键。需要 Claude Code v2.1.221 或更高版本 |

637| Rename Session Tab | - | 重命名当前活动 Claude 标签页中的会话。需要 Claude Code v2.1.257 或更高版本 |647| Rename Session Tab | - | 重命名当前活动 Claude 标签页中的会话。需要 Claude Code v2.1.257 或更高版本 |

638| Add Session Tab to Group | - | 将当前活动 Claude 标签页中的会话添加到您选择或创建的[会话组](#organize-sessions-into-groups)中。需要 Claude Code v2.1.257 或更高版本 |648| Add Session Tab to Group | - | 将当前活动 Claude 标签页中的会话添加到您选择或创建的[会话组](#organize-sessions-into-groups)中。需要 Claude Code v2.1.257 或更高版本 |

639| Mark Session as Unread | - | 在会话列表中将当前活动 Claude 标签页中的会话标记为未读。需要 Claude Code v2.1.257 或更高版本 |649| Mark Session as Unread | - | 在会话列表中将当前活动 Claude 标签页中的会话标记为未读。需要 Claude Code v2.1.257 或更高版本 |


679| 参数 | 描述 |689| 参数 | 描述 |

680| - | - |690| - | - |

681| `prompt` | 预先填入提示词输入框的文本。必须经过 URL 编码。提示词会被预先填入,但不会自动提交。 |691| `prompt` | 预先填入提示词输入框的文本。必须经过 URL 编码。提示词会被预先填入,但不会自动提交。 |

682| `session` | 要恢复的会话 ID,用于代替开始新对话。该会话必须属于 VS Code 中当前打开的工作区。如果找不到该会话,则会开始一个新对话。如果该会话已在某个标签页中打开,则会聚焦到该标签页。要以编程方式获取会话 ID,请参阅[继续对话](https://code.claude.com/docs/zh-CN/headless.md#continue-conversations)。 |692| `session` | 要恢复的会话 ID,该会话须来自 VS Code 中当前打开的文件夹。在 Claude Code v2.1.300 或更高版本中,来自该文件夹所在仓库的主检出目录或某个 [worktree](https://code.claude.com/docs/zh-CN/worktrees.md) 的会话也可以恢复。如果找不到该会话,则会开始一个新对话。如果该会话已在某个标签页中打开,则会聚焦到该标签页。要以编程方式获取会话 ID,请参阅[继续对话](https://code.claude.com/docs/zh-CN/headless.md#continue-conversations)。 |

683 693 

684例如,要打开一个预先填入"review my changes"的标签页:694例如,要打开一个预先填入"review my changes"的标签页:

685 695 


916| `Claude Code process exited with code 1` 或其他代码 | [Claude Code process exited with code N](https://code.claude.com/docs/zh-CN/errors.md#claude-code-process-exited-with-code-n) |926| `Claude Code process exited with code 1` 或其他代码 | [Claude Code process exited with code N](https://code.claude.com/docs/zh-CN/errors.md#claude-code-process-exited-with-code-n) |

917| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/zh-CN/errors.md#could-not-locate-the-claude-cli-on-path) |927| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/zh-CN/errors.md#could-not-locate-the-claude-cli-on-path) |

918| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/zh-CN/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |928| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/zh-CN/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |

929| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/zh-CN/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |

919| 在 VS Code 的集成终端中找不到 `claude` | [在 VS Code 中运行 CLI](#run-cli-in-vs-code) |930| 在 VS Code 的集成终端中找不到 `claude` | [在 VS Code 中运行 CLI](#run-cli-in-vs-code) |

920 931 

921### 扩展无法安装932### 扩展无法安装

workflows.md +61 −61

Details

105 105 

106您可以通过两种方式让 Claude 为您的任务编写工作流:106您可以通过两种方式让 Claude 为您的任务编写工作流:

107 107 

108* [在您的提示中请求工作流](#ask-for-a-workflow-in-your-prompt),使用关键字 `ultracode`,Claude 为任务编写一个。108* 在提示词中[请求工作流](#ask-for-a-workflow-in-your-prompt),可以用您自己的话表述,也可以包含关键字 `ultracode`,Claude 会为该任务编写一个工作流。

109* [让 Claude 使用 ultracode 决定](#let-claude-decide-with-ultracode):设置 `/effort ultracode`,Claude 为会话中的每个实质性任务规划工作流。109* [使用 ultracode 让 Claude 决定](#let-claude-decide-with-ultracode):设置 `/effort ultracode`,Claude 会为会话中的每个实质性任务规划工作流。

110 110 

111您也可以运行已存在的工作流命令:一个[捆绑工作流](#bundled-workflows)如 `/deep-research`,或一个您已[保存](#save-the-workflow-for-reuse)的。111您也可以运行已存在的工作流命令:例如 `/deep-research` 这样的[内置工作流](#bundled-workflows),或您[已保存](#save-the-workflow-for-reuse)的工作流。

112 112 

113### 在您的提示中请求工作流113### 在提示词中请求工作流

114 114 

115要在不改变会话的努力级别的情况下将单个任务作为工作流运行,在您的提示中包含关键字 `ultracode`。用您自己的话提问,例如"使用工作流"或"运行工作流",也可以工作:Claude 将直接请求视为相同的选择加入。115要在不更改会话 effort 级别的情况下以工作流方式运行单个任务,请在提示词中包含关键字 `ultracode`。用您自己的话请求也同样有效,例如"use a workflow"或"run a workflow":Claude 会将直接请求视为同样的选择加入。

116 116 

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

118ultracode: audit every API endpoint under src/routes/ for missing auth checks118ultracode: audit every API endpoint under src/routes/ for missing auth checks

119```119```

120 120 

121Claude Code 在您的输入中突出显示该关键字,Claude 为任务编写工作流脚本,而不是逐轮处理它。该关键字仅选择 Claude 如何组织工作:代理的工具调用接收与会话中任何其他工具调用相同的权限检查和[沙箱化](https://code.claude.com/docs/zh-CN/sandboxing.md)。121Claude Code 会在您的输入中高亮显示该关键字,Claude 会为该任务编写工作流脚本,而不是逐轮次地处理任务。该关键字只决定 Claude 如何组织工作:Agent 的工具调用与会话中的任何其他工具调用一样,接受相同的权限检查和[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md)。

122 122 

123如果运行完成了您想要的操作,您可以之后[将其保存为命令](#save-the-workflow-for-reuse)。如果您已经用另一种方式构建了编排器,例如子代理提示的文件夹或一个分散工作的技能,您可以指向 Claude 并要求一个执行相同操作的工作流。123如果运行结果符合您的预期,您可以在之后[将其保存为命令](#save-the-workflow-for-reuse)。如果您已经用其他方式构建了编排器,例如一个存放子代理提示词的文件夹,或一个分发工作的 skill,您可以让 Claude 参考它,并请求编写一个实现相同功能的工作流。

124 124 

125#### 忽略或关闭关键字125#### 取消或关闭关键字

126 126 

127如果您不打算启动工作流,在 macOS 上按 `Option+W` 或在 Windows 和 Linux 上按 `Alt+W` 来忽略此提示的突出显示,或在突出显示的关键字后面的光标处按退格键。要完全停止该关键字触发,请在 `/config` 中关闭 Ultracode 关键字触发。127如果您并非有意启动工作流,请在 macOS 上按 `Option+W`,在 Windows 和 Linux 上按 `Alt+W`,以取消本次提示词的高亮;或者在光标紧跟高亮关键字时按退格键。要完全阻止该关键字触发,请在 `/config` 中关闭 Ultracode keyword trigger。

128 128 

129#### 关键字的工作位置129#### 关键字的生效范围

130 130 

131该关键字仅在您自己输入的提示中选择加入:在交互式提示、IDE 扩展面板、[Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 客户端或在 Agent SDK 应用程序中,该应用程序将您的键盘输入的 [`origin`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#sdkmessageorigin) 标记为 `{ kind: "human" }`。当它通过另一种方式到达会话时,它不会启动工作流:131只有在您亲自输入的提示词中,该关键字才会作为选择加入:包括交互式输入框、IDE 扩展面板、[Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 客户端,或将您的键盘输入的 [`origin`](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#sdkmessageorigin) 标记为 `{ kind: "human" }` 的 Agent SDK 应用程序。当它通过其他方式到达会话时,不会启动工作流:

132 132 

133* 使用 `-p` 传递的提示133* 通过 `-p` 传入的提示词

134* Agent SDK 应用程序发送的未标记为人类输入的提示134* Agent SDK 应用程序发送但未标记为人工输入的提示词

135* 计划任务提示135* 定时任务的提示词

136* 中继到对话中的 webhook 有效负载或拉取请求评论136* 转发到对话中的 webhook 负载或 Pull Request 评论

137 137 

138### 让 Claude 使用 ultracode 决定138### 使用 ultracode 让 Claude 决定

139 139 

140Ultracode 是一个 Claude Code 设置,它为会话启用自动工作流编排,在会话运行的任何[努力级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。启用它后,Claude 为每个实质性任务规划工作流,而不是等待您要求。在 Claude Code 提示处启用它:140Ultracode 是 Claude Code 的一项设置,可为会话启用自动工作流编排,无论会话运行在哪个 [effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)。启用后,Claude 会为每个实质性任务规划工作流,而不是等待您提出请求。在 Claude Code 输入框中启用它:

141 141 

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

143/effort ultracode143/effort ultracode

144```144```

145 145 

146要启动已启用 ultracode 的会话,请使用 `claude --effort ultracode` 启动,这也会将 effort 级别设置为 `xhigh`。146要在启动会话时就启用 ultracode,请使用 `claude --effort ultracode` 启动,这还会将 effort 级别设置为 `xhigh`。

147 147 

148要从 `/effort` 滑块启用它,按 `Tab` 翻转 **Ultracode** 切换,然后按 `Enter` 应用它。[调整努力级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)列出启用 ultracode 的路由。148要从 `/effort` 滑块启用,请按 `Tab` 切换 **Ultracode** 开关,然后按 `Enter` 应用。[调整 effort 级别](https://code.claude.com/docs/zh-CN/model-config.md#adjust-effort-level)列出了启用 ultracode 的各种途径。

149 149 

150启用 ultracode 后,Claude 决定任务何时值得工作流。单个请求可以变成一系列工作流:一个理解代码,一个进行更改,一个验证它。这适用于会话中的每个任务,所以每个请求使用更多令牌并花费比没有工作流的相同请求更长的时间。在订阅计划上,这些令牌会计入您的使用限制,所以启用 ultracode 的会话比关闭时进行相同工作更快达到会话或每周限制。150启用 ultracode 后,Claude 会决定任务何时需要工作流。单个请求可能会变成连续的多个工作流:一个用于理解代码,一个用于进行更改,一个用于验证更改。这适用于会话中的每个任务,因此每个请求都会比不使用工作流的相同请求消耗更多 token、耗时更长。在订阅套餐中,这些 token 会计入您的用量限制,因此启用 ultracode 的会话会比关闭时完成相同工作更早达到会话或每周限制。

151 151 

152启用 ultracode 已经选择加入大型运行,所以启用它时这些检查不适用:152启用 ultracode 本身就意味着您已选择加入大型运行,因此启用期间以下检查不适用:

153 153 

154* 工作流运行时不会出现 [`Large workflow` 警告](#cost)154* 工作流运行时不会出现 [`Large workflow` 警告](#cost)

155* 会话的[并发子代理限制](https://code.claude.com/docs/zh-CN/sub-agents.md#concurrent-subagent-limit)对 Claude 使用 Agent 工具生成的子代理不强制执行155* 对于 Claude 使用 Agent 工具生成的子代理,不强制执行会话的[并发子代理限制](https://code.claude.com/docs/zh-CN/sub-agents.md#concurrent-subagent-limit)

156* 在自动权限模式下,您不会被要求[批准第一个工作流启动](#approve-the-plan-before-it-runs)156* 在自动权限模式下,不会要求您[批准首次工作流启动](#approve-the-plan-before-it-runs)

157 157 

158`/effort ultracode` 持续当前会话;要让每个会话都以它开始,设置 [`ultracode`](https://code.claude.com/docs/zh-CN/settings-reference#ultracode) 设置。当您返回日常工作时,使用 `/effort ultracode off` 关闭它。`/effort` 滑块仅在 [ultracode 可用时](https://code.claude.com/docs/zh-CN/model-config.md#when-ultracode-is-available)提供切换。在 v2.1.284 之前,`/effort ultracode` 会将会话设置为 `xhigh`,而 `/effort ultracode off` 会失败并显示 `Invalid argument`。158`/effort ultracode` 仅在当前会话中有效;要让每个会话启动时都启用它,请设置 [`ultracode`](https://code.claude.com/docs/zh-CN/settings-reference#ultracode) 设置项。回到日常工作时,使用 `/effort ultracode off` 将其关闭。只有[在 ultracode 可用时](https://code.claude.com/docs/zh-CN/model-config.md#when-ultracode-is-available),`/effort` 滑块才会提供该开关。在 v2.1.284 之前,`/effort ultracode` 会将会话设置为 `xhigh`,而 `/effort ultracode off` 会失败并显示 `Invalid argument`。

159 159 

160### 在运行前批准计划160### 在运行前批准计划

161 161 

162在 CLI 中,每次运行的提示显示计划的阶段和这些选项:162在 CLI 中,每次运行的确认提示会显示计划的阶段以及以下选项:

163 163 

164* **是,运行它**:启动运行164* **Yes, run it**:开始运行

165* **是,不再为 `<path>` 中的 `<name>` 询问**:启动,并从现在起跳过此项目中此工作流的此提示。Claude Code 在您按名称运行捆绑、保存或插件工作流时提供此选项,而不是为当前任务编写的脚本。165* **Yes, and don't ask again for `<name>` in `<path>`**:开始运行,并且此后在此项目中对该工作流跳过此提示。当您按名称运行内置、已保存或插件工作流时,Claude Code 会提供此选项;对于 Claude 为当前任务编写的脚本则不提供。

166* **查看原始脚本**:在决定前读取脚本166* **View raw script**:在决定之前阅读脚本

167* **否**:取消167* **No**:取消

168 168 

169`Ctrl+G` 在您的编辑器中打开脚本。选中**是,运行它**或**否**时,按 `Tab` 可为您的回答[添加评论](https://code.claude.com/docs/zh-CN/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)。169`Ctrl+G` 会在您的编辑器中打开脚本。选中 **Yes, run it** 或 **No** 时,按 `Tab` 可为您的回答[添加评论](https://code.claude.com/docs/zh-CN/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)。

170 170 

171您是否看到此提示取决于您的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md):171是否会看到此提示取决于您的[权限模式](https://code.claude.com/docs/zh-CN/permission-modes.md):

172 172 

173| 权限模式 | 何时提示您 |173| 权限模式 | 何时提示 |

174| :- | :- |174| :- | :- |

175| 自动 | 仅首次启动。任何**是**在您的用户设置中记录同意,之后启动无需提示。当 ultracode 启用时完全跳过 |175| 自动 | 仅首次启动。任何 **Yes** 都会在您的用户设置中记录同意,之后的启动不再提示。启用 ultracode 时完全跳过 |

176| 手动,接受编辑 | 每次运行,除非您已为此项目中的该工作流选择**是,不再询问** |176| 手动、接受编辑 | 每次运行,除非您已在此项目中为该工作流选择了 **Yes, and don't ask again** |

177| 绕过权限 | Claude Code 不提示您。运行立即启动 |177| 绕过权限 | Claude Code 不会提示您。运行立即开始 |

178| `claude -p`,Agent SDK | Claude Code 不提示您 |178| `claude -p`、Agent SDK | Claude Code 不会提示您 |

179 179 

180在 `claude -p` 和 Agent SDK 中,Claude Code 从不显示此提示。它通过与会话其余部分相同的[权限评估](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated)运行 Workflow 工具调用,所以拒绝规则、询问规则和 `dontAsk` 模式适用于启动,就像它们适用于每个工具调用一样。要让工作流在这些运行中启动,使用以下之一:180在 `claude -p` 和 Agent SDK 中,Claude Code 从不显示此提示。它会对 Workflow 工具调用执行与会话其余部分相同的[权限评估](https://code.claude.com/docs/zh-CN/agent-sdk/permissions.md#how-permissions-are-evaluated),因此拒绝规则、询问规则和 `dontAsk` 模式对启动的作用与对每个工具调用的作用相同。要允许工作流在这些运行中启动,请使用以下方式之一:

181 181 

182* **权限规则**:将 `Workflow` 添加到您的允许规则中以批准每个工作流,或添加 `Workflow(<name>)` 以按名称批准一个保存的工作流。182* **权限规则**:将 `Workflow` 添加到允许规则中以批准所有工作流,或添加 `Workflow(<name>)` 以按名称批准某个已保存的工作流。

183* **自动权限模式**:在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)下运行,分类器会审查调用并可以批准它。183* **自动权限模式**:在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)下运行,分类器会审查该调用并可以批准它。

184* **绕过权限模式**:在绕过权限模式下运行。184* **绕过权限模式**:在绕过权限模式下运行。

185* **一个 hook**:从 [`PreToolUse`](https://code.claude.com/docs/zh-CN/hooks#pretooluse) hook 为该调用返回 `"allow"`。在[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)下,仅凭 hook 的批准工作流不会启动,因此在该模式下请改用权限规则或您的主机的批准。185* **hook**:从 [`PreToolUse`](https://code.claude.com/docs/zh-CN/hooks#pretooluse) hook 为该调用返回 `"allow"`。在[计划模式](https://code.claude.com/docs/zh-CN/permission-modes.md#analyze-before-you-edit-with-plan-mode)下,仅凭 hook 的批准工作流不会启动,因此请改用权限规则或您的宿主程序的批准。

186* **您的主机**:一个 [`--permission-prompt-tool`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags),或者在使用 Agent SDK 时,一个 [`canUseTool`](https://code.claude.com/docs/zh-CN/agent-sdk/permissions) 回调批准它。186* **您的宿主程序**:由 [`--permission-prompt-tool`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags),或在 Agent SDK 中由 [`canUseTool`](https://code.claude.com/docs/zh-CN/agent-sdk/permissions) 回调批准。

187 187 

188在桌面应用中,批准卡显示工作流名称、阶段列表和令牌使用警告,带有**一次**、**总是**和**拒绝**操作。进度视图出现在"后台任务"侧窗格中。188在桌面应用中,批准卡片会显示工作流名称、阶段列表和 token 用量提醒,并提供 **Once**、**Always** 和 **Deny** 操作。进度视图显示在 Background tasks 侧边窗格中。

189 189 

190工作流生成的子代理使用您的[权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings),Claude Code 按[子代理运行的权限模式](https://code.claude.com/docs/zh-CN/sub-agents.md#permission-modes)下的规则选择它们的权限模式。要在长时间运行中避免提示,在启动前将代理需要的工具添加到您的允许规则。190工作流生成的子代理使用您的[权限规则](https://code.claude.com/docs/zh-CN/settings-reference.md#permission-settings),Claude Code 会按照[子代理在哪种权限模式下运行](https://code.claude.com/docs/zh-CN/sub-agents.md#permission-modes)中的规则为其选择权限模式。为避免长时间运行中出现提示,请在开始前将 Agent 所需的工具添加到允许规则中。

191 191 

192### 保存工作流以供重用192### 保存工作流以便重用

193 193 

194当 Claude 为您将重复的任务编写工作流时,您可以将该运行的脚本保存为命令。像您在每个分支上运行的审查这样的过程然后每次运行相同的编排。194当 Claude 为您会重复执行的任务编写工作流时,您可以将该次运行的脚本保存为命令。这样,像在每个分支上运行的审查这类流程,每次都会执行相同的编排。

195 195 

196运行 `/workflows`,选择您想保留的运行,然后按 `s`。在保存对话中,Tab 在两个保存位置之间切换:196运行 `/workflows`,选择要保留的运行,然后按 `s`。在保存对话框中,Tab 可在两个保存位置之间切换:

197 197 

198* `.claude/workflows/` 在您的项目中:与克隆仓库的每个人共享198* 项目中的 `.claude/workflows/`:与所有克隆该仓库的人共享

199* `~/.claude/workflows/` 在您的主目录中:在每个项目中可用,仅对您可见。如果您设置了 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars),此位置是该路径下的 `workflows/` 目录。199* 主目录中的 `~/.claude/workflows/`:在每个项目中可用,仅您可见。如果您设置了 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-CN/env-vars),此位置为该路径下的 `workflows/` 目录。

200 200 

201保存对话框显示个人位置的已解析路径。按 Enter 保存。工作流在未来的会话中可从任一位置作为 `/<name>` 运行。201保存对话框会显示个人位置的解析后路径。按 Enter 保存。无论保存在哪个位置,该工作流在之后的会话中都以 `/<name>` 运行。

202 202 

203Claude Code 在写入前检查保存位置是否存在符号链接,如有则显示错误,而不是通过符号链接写入:203Claude Code 在写入前会检查保存位置是否存在符号链接,如果存在,会显示错误而不是通过符号链接写入:

204 204 

205* 项目位置:如果 `.claude`、`.claude/workflows` 或目标文件是符号链接,Claude Code 拒绝。205* 项目位置:如果 `.claude`、`.claude/workflows` 或目标文件是符号链接,Claude Code 会拒绝写入。

206* 个人位置:Claude Code 仅在目标文件本身是符号链接时拒绝,所以由点文件工具管理的 `~/.claude` 目录仍然有效。206* 个人位置:仅当目标文件本身是符号链接时 Claude Code 才会拒绝,因此由 dotfiles 工具管理的 `~/.claude` 目录仍然可以正常使用。

207 207 

208在具有多个 `.claude/` 目录的单体仓库中,您可以将工作流保存在它们适用的包旁边。保存到项目位置会写入您的工作目录和仓库根之间已存在的最近的 `.claude/workflows/` 目录,或如果尚不存在则写入仓库根。项目工作流也从该路径上的每个 `.claude/workflows/` 加载,当多个定义相同名称时 Claude Code 运行最接近工作目录的那个。208在包含多个 `.claude/` 目录的 monorepo 中,您可以将工作流放在其所适用的包旁边。保存到项目位置时,会写入工作目录与仓库根目录之间已存在的最近的 `.claude/workflows/` 目录;如果尚不存在,则写入仓库根目录。项目工作流也会从该路径上的每个 `.claude/workflows/` 加载,当多个目录定义了同名工作流时,Claude Code 会运行离工作目录最近的那个。

209 209 

210如果项目工作流和个人工作流共享名称,项目工作流运行。210如果项目工作流和个人工作流同名,则运行项目工作流。

211 211 

212### 在插件中分发工作流212### 通过插件分发工作流

213 213 

214要在团队或仓库中共享工作流,将其包含在[插件](https://code.claude.com/docs/zh-CN/plugins/overview.md)中。将脚本放在插件根目录的 `workflows/` 目录中,或使用 [`workflows` 清单字段](https://code.claude.com/docs/zh-CN/plugins/manifest-reference#fields)指向不同的位置。214要在团队或仓库之间共享工作流,请将其包含在[插件](https://code.claude.com/docs/zh-CN/plugins/overview.md)中。将脚本放在插件根目录的 `workflows/` 目录中,或通过 [`workflows` 清单字段](https://code.claude.com/docs/zh-CN/plugins/manifest-reference#fields)指向其他位置。

215 215 

216插件工作流由插件名称命名空间。一个名为 `acme-tools` 的插件,其 `meta.name` 为 `release-audit` 的脚本作为 `/acme-tools:release-audit` 运行。216插件工作流以插件名称作为命名空间。名为 `acme-tools` 的插件中,如果某个脚本的 `meta.name` 为 `release-audit`,它将以 `/acme-tools:release-audit` 运行。

217 217 

218### 将输入传递给保存的工作流218### 向已保存的工作流传递输入

219 219 

220保存的工作流可以通过 `args` 参数接受输入。脚本将其读取为名为 `args` 的全局变量。使用此功能在调用时提供研究问题、目标路径列表或配置对象,而不是为每次运行编辑脚本。220已保存的工作流可以通过 `args` 参数接收输入。脚本会将其作为名为 `args` 的全局变量读取。您可以借此在调用时提供研究问题、目标路径列表或配置对象,而无需为每次运行编辑脚本。

221 221 

222以下提示使用问题编号列表运行保存的工作流:222以下提示词使用一组 issue 编号运行已保存的工作流:

223 223 

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

225Run /triage-issues on issues 1024, 1025, and 1030225Run /triage-issues on issues 1024, 1025, and 1030

226```226```

227 227 

228Claude 将列表作为结构化数据传递,所以脚本可以直接在 `args` 上调用数组和对象方法,无需先解析它。如果省略 `args`,脚本内的全局变量为 `undefined`。228Claude 会以结构化数据的形式传递该列表,因此脚本可以直接对 `args` 调用数组和对象方法,而无需先解析。如果省略 `args`,该全局变量在脚本中为 `undefined`。

229 229 

230## 工作流提示示例230## 工作流提示示例

231 231 

worktrees.md +15 −1

Details

214 214 

215### 重用 worktree 名称215### 重用 worktree 名称

216 216 

217传递 `--worktree` 一个其目录已存在的名称会打开该现有 worktree 而不是创建一个新的。217如果与您传递给 `--worktree` 的名称相同的 worktree 已存在,Claude Code 会打开它而不是创建一个新的。如果 Claude Code 因包含 `belongs to a different repository` 或 `is a leftover worktree` 的错误而停止,请参阅[worktree 目录 `belongs to a different repository`](#belongs-to-a-different-repository)。

218 218 

219使用默认的 `"fresh"` [基础](#choose-the-base-branch),当以下所有条件都成立时,重新打开的 worktree 会重置为仓库的默认分支而不是在其旧提示处继续:219使用默认的 `"fresh"` [基础](#choose-the-base-branch),当以下所有条件都成立时,重新打开的 worktree 会重置为仓库的默认分支而不是在其旧提示处继续:

220 220 


353 353 

354包含 `This repository is a partial clone` 的错误意味着 Claude Code 无法获取 worktree 起始提交所需的全部 git 对象。请执行消息中以 `try again` 结尾的那句话所述的步骤。然后在您执行该步骤的 shell 中重试:运行 `claude --worktree`,或在那里启动 `claude` 并再次提出请求。354包含 `This repository is a partial clone` 的错误意味着 Claude Code 无法获取 worktree 起始提交所需的全部 git 对象。请执行消息中以 `try again` 结尾的那句话所述的步骤。然后在您执行该步骤的 shell 中重试:运行 `claude --worktree`,或在那里启动 `claude` 并再次提出请求。

355 355 

356### `Can only use --worktree in a git repository`

357 

358此错误意味着您在一个不是 git 检出的目录中传递了 `--worktree`,并且没有活动的 [`WorktreeCreate` hook](#non-git-version-control)。

359 

360* 在没有版本控制的文件夹中,在那里运行 `git init`,创建第一个提交,然后重试。

361* 在其他版本控制系统的检出中,设置消息建议的 hook。

362* 要直接在该目录中工作,请在不使用 `--worktree` 的情况下启动 Claude。

363 

364### worktree 目录 `belongs to a different repository`

365 

366错误 `belongs to a different repository` 和 `is a leftover worktree` 都意味着 git 将您所传递的 worktree 名称对应的目录关联到了另一个位置。这可能发生在您复制或移动项目之后。

367 

368请传递一个不同的 worktree 名称。如果该目录中没有需要保留的工作,并且您没有复制或移动项目,则可以删除它并使用相同的名称重试。在复制或移动之后,这种重试可能会失败并显示 `is already checked out elsewhere in this repository`,因此请使用不同的名称。

369 

356### Claude Code 拒绝使用 worktree370### Claude Code 拒绝使用 worktree

357 371 

358以 `Refusing to use <path> as an isolation worktree` 开头的错误意味着 Claude Code 在采用它作为会话或子代理的隔离检出之前检查了目录的 git 身份,并拒绝了它。检查运行无论 Claude Code 是创建 worktree、进入现有的还是重用早期运行中的。372以 `Refusing to use <path> as an isolation worktree` 开头的错误意味着 Claude Code 在采用它作为会话或子代理的隔离检出之前检查了目录的 git 身份,并拒绝了它。检查运行无论 Claude Code 是创建 worktree、进入现有的还是重用早期运行中的。