6 6
7> Claude Code 可以使用的工具的完整参考,包括权限要求和每个工具的行为。7> Claude Code 可以使用的工具的完整参考,包括权限要求和每个工具的行为。
8 8
9Claude Code 可以访问一组内置工具,帮助它理解和修改您的代码库。工具名称是您在[权限规则](/docs/zh-CN/permissions.md#tool-specific-permission-rules)、[子代理工具列表](/docs/zh-CN/sub-agents.md)和[hook 匹配器](/docs/zh-CN/hooks.md)中使用的确切字符串。9Claude Code 可以访问一组内置工具,帮助它理解和修改您的代码库。工具名称是您在[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#tool-specific-permission-rules)、[子代理工具列表](https://code.claude.com/docs/zh-CN/sub-agents.md)和[hook 匹配器](https://code.claude.com/docs/zh-CN/hooks.md)中使用的确切字符串。
10 10
11要控制 Claude 可以使用哪些工具以及何时首先询问,请在您的设置、[hooks](/docs/zh-CN/hooks.md) 或[子代理的工具列表](/docs/zh-CN/sub-agents.md#supported-frontmatter-fields)中配置[权限规则](/docs/zh-CN/permissions.md#tool-specific-permission-rules)。有关接受工具名称的每个位置,请参阅[使用权限规则和 hooks 配置工具](#configure-tools-with-permission-rules-and-hooks)。11要控制 Claude 可以使用哪些工具以及何时首先询问,请在您的设置、[hooks](https://code.claude.com/docs/zh-CN/hooks.md) 或[子代理的工具列表](https://code.claude.com/docs/zh-CN/sub-agents.md#supported-frontmatter-fields)中配置[权限规则](https://code.claude.com/docs/zh-CN/permissions.md#tool-specific-permission-rules)。有关接受工具名称的每个位置,请参阅[使用权限规则和 hooks 配置工具](#configure-tools-with-permission-rules-and-hooks)。
12 12
13要添加自定义工具,请连接一个 [MCP 服务器](/docs/zh-CN/mcp.md)。要使用可重用的基于提示的工作流扩展 Claude,请编写一个[skill](/docs/zh-CN/skills.md),它通过现有的 `Skill` 工具运行,而不是添加新的工具条目。13要添加自定义工具,请连接一个 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)。要使用可重用的基于提示的工作流扩展 Claude,请编写一个[skill](https://code.claude.com/docs/zh-CN/skills.md),它通过现有的 `Skill` 工具运行,而不是添加新的工具条目。
14 14
15> [!NOTE]15> [!NOTE]
16>16>
17> 在[自动模式](/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中,分类器决定大多数权限提示,而不是您。`Permission required` 列显示工具是否在[手动模式](/docs/zh-CN/permission-modes.md)中为工作目录内的路径提示。标记为"否"的文件访问工具,包括 `Read`、`Grep` 和 `Glob`,仍然会为[工作目录和其他目录](/docs/zh-CN/permissions.md#working-directories)之外的路径提示。`Bash` 标记为"是",但运行内置的[只读命令](/docs/zh-CN/permissions.md#read-only-commands)而不提示。17> 在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中,分类器决定大多数权限提示,而不是您。`Permission required` 列显示工具是否在[手动模式](https://code.claude.com/docs/zh-CN/permission-modes.md)中为工作目录内的路径提示。标记为"否"的文件访问工具,包括 `Read`、`Grep` 和 `Glob`,仍然会为[工作目录和其他目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)之外的路径提示。`Bash` 标记为"是",但运行内置的[只读命令](https://code.claude.com/docs/zh-CN/permissions.md#read-only-commands)而不提示。
18 18
19| 工具 | 描述 | 需要权限 |19| 工具 | 描述 | 需要权限 |
20| :- | :- | :- |20| :- | :- | :- |
21| `Agent` | 生成一个[子代理](/docs/zh-CN/sub-agents.md),具有自己的上下文窗口来处理任务。启用[代理团队](/docs/zh-CN/agent-teams.md)后,携带 `name` 的调用可以启动一个[队友](/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams)。请参阅 [Agent 工具行为](#agent-tool-behavior) | 否 |21| `Agent` | 生成一个[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md),具有自己的上下文窗口来处理任务。启用[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)后,携带 `name` 的调用可以启动一个[队友](https://code.claude.com/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams)。请参阅 [Agent 工具行为](#agent-tool-behavior) | 否 |
22| `Artifact` | 将 HTML 或 Markdown 文件发布为[工件](/docs/zh-CN/artifacts.md):claude.ai 上的私有交互式页面。您可以与公开链接共享它,或在 Team 和 Enterprise 计划上在您的组织内共享,其中公开共享需要所有者[启用它](/docs/zh-CN/artifacts.md#control-public-sharing)。需要 Pro、Max、Team 或 Enterprise 计划和 `/login` 身份验证;请参阅[可用性](/docs/zh-CN/artifacts.md#availability) | 是 |22| `Artifact` | 将 HTML 或 Markdown 文件发布为[工件](https://code.claude.com/docs/zh-CN/artifacts.md):claude.ai 上的私有交互式页面。您可以与公开链接共享它,或在 Team 和 Enterprise 计划上在您的组织内共享,其中公开共享需要所有者[启用它](https://code.claude.com/docs/zh-CN/artifacts.md#control-public-sharing)。需要 Pro、Max、Team 或 Enterprise 计划和 `/login` 身份验证;请参阅[可用性](https://code.claude.com/docs/zh-CN/artifacts.md#availability) | 是 |
23| `AskUserQuestion` | 提出多选问题以收集要求或澄清歧义。问题默认保持打开状态,直到您回答。请参阅 [AskUserQuestion 工具行为](#askuserquestion-tool-behavior) | 否 |23| `AskUserQuestion` | 提出多选问题以收集要求或澄清歧义。问题默认保持打开状态,直到您回答。请参阅 [AskUserQuestion 工具行为](#askuserquestion-tool-behavior) | 否 |
24| `Bash` | 在您的环境中执行 shell 命令。请参阅 [Bash 工具行为](#bash-tool-behavior) | 是 |24| `Bash` | 在您的环境中执行 shell 命令。请参阅 [Bash 工具行为](#bash-tool-behavior) | 是 |
25| `CronCreate` | 在当前会话中安排重复或一次性提示词。任务的范围是会话级别,在 `--resume` 或 `--continue` 时恢复(如果未过期)。请参阅[会话级定时任务](/docs/zh-CN/scheduled-tasks.md) | 否 |25| `CronCreate` | 在当前会话中安排重复或一次性提示词。任务的范围是会话级别,在 `--resume` 或 `--continue` 时恢复(如果未过期)。请参阅[会话级定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md) | 否 |
26| `CronDelete` | 按 ID 取消会话级定时任务 | 否 |26| `CronDelete` | 按 ID 取消会话级定时任务 | 否 |
27| `CronList` | 列出所有会话级定时任务 | 否 |27| `CronList` | 列出所有会话级定时任务 | 否 |
28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |
29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |
30| `EnterPlanMode` | 切换到 Plan Mode 以在编码前设计方法 | 否 |30| `EnterPlanMode` | 切换到 Plan Mode 以在编码前设计方法 | 否 |
31| `EnterWorktree` | 创建一个隔离的 [git worktree](/docs/zh-CN/worktrees.md) 并切换到它。传递 `path` 以切换到现有 worktree,而不是创建新的。首次进入时,目标可能是当前存储库的 worktree,或在多存储库工作区中,是嵌套在其中的存储库的 worktree。在 v2.1.203 之前,嵌套存储库的 worktree 被拒绝。`.claude/worktrees/` 之外的 `path` 会在进入前提示您的批准,因为它会移动会话的工作目录和对该位置的写入访问权限。新 worktree 创建和 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径而不提示。从 worktree 会话内,或从具有固定工作目录的子代理(例如 [`isolation: worktree`](/docs/zh-CN/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目标必须在会话存储库的 `.claude/worktrees/` 下 | 是 |31| `EnterWorktree` | 创建一个隔离的 [git worktree](https://code.claude.com/docs/zh-CN/worktrees.md) 并切换到它。传递 `path` 以切换到现有 worktree,而不是创建新的。首次进入时,目标可能是当前存储库的 worktree,或在多存储库工作区中,是嵌套在其中的存储库的 worktree。在 v2.1.203 之前,嵌套存储库的 worktree 被拒绝。`.claude/worktrees/` 之外的 `path` 会在进入前提示您的批准,因为它会移动会话的工作目录和对该位置的写入访问权限。新 worktree 创建和 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径而不提示。从 worktree 会话内,或从具有固定工作目录的子代理(例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目标必须在会话存储库的 `.claude/worktrees/` 下 | 是 |
32| `ExitPlanMode` | 呈现计划以供批准并退出 Plan Mode | 是 |32| `ExitPlanMode` | 呈现计划以供批准并退出 Plan Mode | 是 |
33| `ExitWorktree` | 退出 worktree 会话并返回到原始目录。不适用于已在自己的工作目录中运行的子代理,例如 [`isolation: worktree`](/docs/zh-CN/sub-agents#supported-frontmatter-fields) | 否 |33| `ExitWorktree` | 退出 worktree 会话并返回到原始目录。不适用于已在自己的工作目录中运行的子代理,例如 [`isolation: worktree`](https://code.claude.com/docs/zh-CN/sub-agents#supported-frontmatter-fields) | 否 |
34| `Glob` | 基于模式匹配查找文件。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Glob 工具行为](#glob-tool-behavior) | 否 |34| `Glob` | 基于模式匹配查找文件。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Glob 工具行为](#glob-tool-behavior) | 否 |
35| `Grep` | 在文件内容中搜索模式。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Grep 工具行为](#grep-tool-behavior) | 否 |35| `Grep` | 在文件内容中搜索模式。在 macOS、Linux 和 WSL 上默认不存在。请参阅 [Grep 工具行为](#grep-tool-behavior) | 否 |
36| `ListAgents` | 列出 Claude 可以使用 `SendMessage` 消息的代理:会话中的子代理、[代理团队](/docs/zh-CN/agent-teams.md)队友、您的其他本地 Claude Code 会话,以及当此会话连接到[远程控制](/docs/zh-CN/remote-control.md)时,您的[云会话](/docs/zh-CN/claude-code-on-the-web.md)和您在其他机器上的远程控制会话。支持 `/list-agents` 命令。请参阅[跨会话消息传递](/docs/zh-CN/cross-session-messaging.md)。需要 Claude Code v2.1.224 或更高版本,仅在[启用跨会话消息传递](/docs/zh-CN/cross-session-messaging.md#availability)的会话中出现。队友行和显示此会话自己名称的第一行需要 v2.1.239 或更高版本 | 否 |36| `ListAgents` | 列出 Claude 可以使用 `SendMessage` 消息的代理:会话中的子代理、[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)队友、您的其他本地 Claude Code 会话,以及当此会话连接到[远程控制](https://code.claude.com/docs/zh-CN/remote-control.md)时,您的[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)和您在其他机器上的远程控制会话。支持 `/list-agents` 命令。请参阅[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)。需要 Claude Code v2.1.224 或更高版本,仅在[启用跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#availability)的会话中出现。队友行和显示此会话自己名称的第一行需要 v2.1.239 或更高版本 | 否 |
37| `ListMcpResourcesTool` | 列出连接的 [MCP 服务器](/docs/zh-CN/mcp.md)公开的资源,不包括 [MCP Apps UI 资源](/docs/zh-CN/mcp.md#reference-mcp-resources),这些是主机应用程序要呈现的页面 | 否 |37| `ListMcpResourcesTool` | 列出连接的 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)公开的资源,不包括 [MCP Apps UI 资源](https://code.claude.com/docs/zh-CN/mcp.md#reference-mcp-resources),这些是主机应用程序要呈现的页面 | 否 |
38| `LSP` | 通过语言服务器的代码智能:跳转到定义、查找引用、报告类型错误和警告。请参阅 [LSP 工具行为](#lsp-tool-behavior) | 否 |38| `LSP` | 通过语言服务器的代码智能:跳转到定义、查找引用、报告类型错误和警告。请参阅 [LSP 工具行为](#lsp-tool-behavior) | 否 |
39| `Monitor` | 在后台运行命令并将每个输出行反馈给 Claude,以便它可以对日志条目、文件更改或轮询状态做出反应。还可以打开 WebSocket 并将每条传入消息视为事件。请参阅 [Monitor 工具](#monitor-tool) | 是 |39| `Monitor` | 在后台运行命令并将每个输出行反馈给 Claude,以便它可以对日志条目、文件更改或轮询状态做出反应。还可以打开 WebSocket 并将每条传入消息视为事件。请参阅 [Monitor 工具](#monitor-tool) | 是 |
40| `NotebookEdit` | 修改 Jupyter notebook 单元格。请参阅 [NotebookEdit 工具行为](#notebookedit-tool-behavior) | 是 |40| `NotebookEdit` | 修改 Jupyter notebook 单元格。请参阅 [NotebookEdit 工具行为](#notebookedit-tool-behavior) | 是 |
41| `PowerShell` | 本地执行 PowerShell 命令。请参阅 [PowerShell 工具](#powershell-tool)了解可用性 | 是 |41| `PowerShell` | 本地执行 PowerShell 命令。请参阅 [PowerShell 工具](#powershell-tool)了解可用性 | 是 |
42| `PushNotification` | 发送桌面通知,以及当 [Remote Control](/docs/zh-CN/remote-control.md) 连接时的手机推送,以便长时间运行的任务或[会话级定时任务](/docs/zh-CN/scheduled-tasks.md)可以在您离开时联系您。推送传递通过 Anthropic 托管的基础设施运行,无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |42| `PushNotification` | 发送桌面通知,以及当 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 连接时的手机推送,以便长时间运行的任务或[会话级定时任务](https://code.claude.com/docs/zh-CN/scheduled-tasks.md)可以在您离开时联系您。推送传递通过 Anthropic 托管的基础设施运行,无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |
43| `Read` | 读取文件的内容。请参阅 [Read 工具行为](#read-tool-behavior) | 否 |43| `Read` | 读取文件的内容。请参阅 [Read 工具行为](#read-tool-behavior) | 否 |
44| `ReadMcpResourceTool` | 按 URI 读取特定 MCP 资源 | 否 |44| `ReadMcpResourceTool` | 按 URI 读取特定 MCP 资源 | 否 |
45| `RemoteTrigger` | 在 claude.ai 上创建、更新、运行和列出[云端定时任务](/docs/zh-CN/routines.md)(以前称为 Routine)。支持 `/schedule` 命令。[`RemoteTrigger` 输入参考](/docs/zh-CN/agent-sdk/typescript#remotetrigger)记录了每个操作和删除该工具的组织策略。云端定时任务位于 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 计划,因此此工具无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |45| `RemoteTrigger` | 在 claude.ai 上创建、更新、运行和列出[云端定时任务](https://code.claude.com/docs/zh-CN/routines.md)(以前称为 Routine)。支持 `/schedule` 命令。[`RemoteTrigger` 输入参考](https://code.claude.com/docs/zh-CN/agent-sdk/typescript#remotetrigger)记录了每个操作和删除该工具的组织策略。云端定时任务位于 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 计划,因此此工具无法从 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry 访问 | 否 |
46| `ReportFindings` | 将代码审查发现报告为结构化列表,每个发现都有文件、摘要和失败场景,以便 Claude Code 可以呈现它们而不是将其打印为文本。当活跃的代码审查指令要求它这样做时,Claude 会调用它。发现还可以携带可选的 `category` 段,例如 `correctness` 或 `test-coverage`,显示在呈现列表中的文件位置旁边 | 否 |46| `ReportFindings` | 将代码审查发现报告为结构化列表,每个发现都有文件、摘要和失败场景,以便 Claude Code 可以呈现它们而不是将其打印为文本。当活跃的代码审查指令要求它这样做时,Claude 会调用它。发现还可以携带可选的 `category` 段,例如 `correctness` 或 `test-coverage`,显示在呈现列表中的文件位置旁边 | 否 |
47| `ScheduleWakeup` | 重新安排[自定步调 `/loop`](/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代结束时调用此工具以选择下一次运行的时间,在一分钟到一小时之间;您不直接调用它。要改为结束循环,Claude 使用 `stop: true` 调用它,这会取消待处理的唤醒。待处理的唤醒出现在 [Stop hook 输入](/docs/zh-CN/hooks.md#stop-input)中的 `session_crons` 中 | 否 |47| `ScheduleWakeup` | 重新安排[自定步调 `/loop`](https://code.claude.com/docs/zh-CN/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代结束时调用此工具以选择下一次运行的时间,在一分钟到一小时之间;您不直接调用它。要改为结束循环,Claude 使用 `stop: true` 调用它,这会取消待处理的唤醒。待处理的唤醒出现在 [Stop hook 输入](https://code.claude.com/docs/zh-CN/hooks.md#stop-input)中的 `session_crons` 中 | 否 |
48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |
49| `SendMessage` | 向另一个代理发送消息:[代理团队](/docs/zh-CN/agent-teams.md)队友、[通过代理 ID 或名称恢复的子代理](/docs/zh-CN/sub-agents.md#resume-subagents),或您的其他 Claude Code 会话之一,在此机器上或超越它。消息传递其他会话需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](/docs/zh-CN/cross-session-messaging.md)涵盖 Claude 可以到达的会话、[消息到达时的样子](/docs/zh-CN/cross-session-messaging.md#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](/docs/zh-CN/cross-session-messaging.md#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](/docs/zh-CN/cross-session-messaging.md#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |49| `SendMessage` | 向另一个代理发送消息:[代理团队](https://code.claude.com/docs/zh-CN/agent-teams.md)队友、[通过代理 ID 或名称恢复的子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#resume-subagents),或您的其他 Claude Code 会话之一,在此机器上或超越它。消息传递其他会话需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](https://code.claude.com/docs/zh-CN/cross-session-messaging.md)涵盖 Claude 可以到达的会话、[消息到达时的样子](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](https://code.claude.com/docs/zh-CN/cross-session-messaging.md#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |
50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](/docs/zh-CN/remote-control.md) 客户端或在[云端会话](/docs/zh-CN/claude-code-on-the-web.md)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 客户端或在[云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |
51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |
52| `Skill` | 在主对话中执行[skill](/docs/zh-CN/skills.md#control-who-invokes-a-skill) | 是 |52| `Skill` | 在主对话中执行[skill](https://code.claude.com/docs/zh-CN/skills.md#control-who-invokes-a-skill) | 是 |
53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](/docs/zh-CN/sub-agents.md#fork-the-current-conversation),并在终端 CLI、IDE 扩展、网络版会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation),并在终端 CLI、IDE 扩展、网络版会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |
54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |
55| `TaskGet` | 检索特定任务的完整详细信息。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |55| `TaskGet` | 检索特定任务的完整详细信息。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |
56| `TaskList` | 列出所有任务及其当前状态。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |56| `TaskList` | 列出所有任务及其当前状态。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |
57| `TaskOutput` | 已在 v2.1.277 中移除。之前用于从后台任务检索输出;Claude 改为使用 `Read` 读取后台任务的[输出文件](/docs/zh-CN/interactive-mode.md#how-backgrounding-works) | 否 |57| `TaskOutput` | 已在 v2.1.277 中移除。之前用于从后台任务检索输出;Claude 改为使用 `Read` 读取后台任务的[输出文件](https://code.claude.com/docs/zh-CN/interactive-mode.md#how-backgrounding-works) | 否 |
58| `TaskStop` | 按 ID 停止运行中的后台任务。它还接受 [agent team 队友](/docs/zh-CN/agent-teams.md)或按 Agent ID 或名称指定的命名后台 Agent。当没有任务与 ID 匹配时,错误按 ID 和描述列出运行中的后台 Agent,包括由另一个 Agent 生成的 Agent | 否 |58| `TaskStop` | 按 ID 停止运行中的后台任务。它还接受 [agent team 队友](https://code.claude.com/docs/zh-CN/agent-teams.md)或按 Agent ID 或名称指定的命名后台 Agent。当没有任务与 ID 匹配时,错误按 ID 和描述列出运行中的后台 Agent,包括由另一个 Agent 生成的 Agent | 否 |
59| `TaskUpdate` | 更新任务状态、依赖项、详细信息或删除任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |59| `TaskUpdate` | 更新任务状态、依赖项、详细信息或删除任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |
60| `TodoWrite` | 管理会话任务清单。默认禁用,改为使用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。设置 `CLAUDE_CODE_ENABLE_TASKS=0` 以在[具有任务跟踪工具的会话](#task-tool-availability)中重新启用它 | 否 |60| `TodoWrite` | 管理会话任务清单。默认禁用,改为使用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。设置 `CLAUDE_CODE_ENABLE_TASKS=0` 以在[具有任务跟踪工具的会话](#task-tool-availability)中重新启用它 | 否 |
61| `ToolSearch` | 当[工具搜索](/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)启用时,搜索并加载延迟工具 | 否 |61| `ToolSearch` | 当[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)启用时,搜索并加载延迟工具 | 否 |
62| `WaitForMcpServers` | 等待一个或多个仍在后台连接的 [MCP 服务器](/docs/zh-CN/mcp.md),以便请求可以使用它们的工具而无需重启会话。当所需的服务器尚未连接时,Claude 会调用它。仅在[工具搜索](/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)禁用时出现,因为启用时 `ToolSearch` 处理等待 | 否 |62| `WaitForMcpServers` | 等待一个或多个仍在后台连接的 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md),以便请求可以使用它们的工具而无需重启会话。当所需的服务器尚未连接时,Claude 会调用它。仅在[工具搜索](https://code.claude.com/docs/zh-CN/mcp.md#scale-with-mcp-tool-search)禁用时出现,因为启用时 `ToolSearch` 处理等待 | 否 |
63| `WebFetch` | 从指定的 URL 获取内容。请参阅 [WebFetch 工具行为](#webfetch-tool-behavior) | 是 |63| `WebFetch` | 从指定的 URL 获取内容。请参阅 [WebFetch 工具行为](#webfetch-tool-behavior) | 是 |
64| `WebSearch` | 执行网络搜索。请参阅 [WebSearch 工具行为](#websearch-tool-behavior) | 是 |64| `WebSearch` | 执行网络搜索。请参阅 [WebSearch 工具行为](#websearch-tool-behavior) | 是 |
65| `Workflow` | 运行[动态工作流](/docs/zh-CN/workflows.md):在后台编排许多子代理并返回一个合并结果的脚本 | 是 |65| `Workflow` | 运行[动态工作流](https://code.claude.com/docs/zh-CN/workflows.md):在后台编排许多子代理并返回一个合并结果的脚本 | 是 |
66| `Write` | 创建或覆盖文件。请参阅 [Write 工具行为](#write-tool-behavior) | 是 |66| `Write` | 创建或覆盖文件。请参阅 [Write 工具行为](#write-tool-behavior) | 是 |
67 67
68## 使用权限规则和 hooks 配置工具68## 使用权限规则和 hooks 配置工具
69 69
70在大多数情况下,Claude 会决定何时使用这些工具,您在与 Claude 交互时不需要自己命名它们。在定义权限和其他配置时,您直接引用工具名称:70在大多数情况下,Claude 会决定何时使用这些工具,您在与 Claude 交互时不需要自己命名它们。在定义权限和其他配置时,您直接引用工具名称:
71 71
72* 在设置中的 [`permissions.allow`](/docs/zh-CN/settings-reference#permissions-allow) 和 [`permissions.deny`](/docs/zh-CN/settings-reference#permissions-deny),以及 `/permissions` 界面72* 在设置中的 [`permissions.allow`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-allow) 和 [`permissions.deny`](https://code.claude.com/docs/zh-CN/settings-reference#permissions-deny),以及 `/permissions` 界面
73* 在 [`--allowedTools` 和 `--disallowedTools`](/docs/zh-CN/cli-reference) CLI 标志中73* 在 [`--allowedTools` 和 `--disallowedTools`](https://code.claude.com/docs/zh-CN/cli-reference) CLI 标志中
74* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules) 选项中74* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](https://code.claude.com/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules) 选项中
75* 在 [skill 的 `allowed-tools`](/docs/zh-CN/skills#frontmatter-reference) frontmatter 中75* 在 [skill 的 `allowed-tools`](https://code.claude.com/docs/zh-CN/skills#frontmatter-reference) frontmatter 中
76* 在 hook 的 [`if` 条件](/docs/zh-CN/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field)中76* 在 hook 的 [`if` 条件](https://code.claude.com/docs/zh-CN/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field)中
77 77
78所有这些都接受相同的规则格式 `ToolName(specifier)`。specifier 取决于工具,多个工具共享一种格式:78所有这些都接受相同的规则格式 `ToolName(specifier)`。specifier 取决于工具,多个工具共享一种格式:
79 79
80| 规则格式 | 适用于 | 详情 |80| 规则格式 | 适用于 | 详情 |
81| :- | :- | :- |81| :- | :- | :- |
82| `Bash(npm run *)` | Bash, Monitor | [命令模式匹配](/docs/zh-CN/permissions.md#bash) |82| `Bash(npm run *)` | Bash, Monitor | [命令模式匹配](https://code.claude.com/docs/zh-CN/permissions.md#bash) |
83| `PowerShell(Get-ChildItem *)` | PowerShell | [命令模式匹配](/docs/zh-CN/permissions.md#powershell) |83| `PowerShell(Get-ChildItem *)` | PowerShell | [命令模式匹配](https://code.claude.com/docs/zh-CN/permissions.md#powershell) |
84| `Read(~/secrets/**)` | Read, Grep, Glob, LSP | [路径模式匹配](/docs/zh-CN/permissions.md#read-and-edit) |84| `Read(~/secrets/**)` | Read, Grep, Glob, LSP | [路径模式匹配](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit) |
85| `Edit(/src/**)` | Edit, Write, NotebookEdit | [路径模式匹配](/docs/zh-CN/permissions.md#read-and-edit) |85| `Edit(/src/**)` | Edit, Write, NotebookEdit | [路径模式匹配](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit) |
86| `Skill(deploy *)` | Skill | [Skill 名称匹配](/docs/zh-CN/skills.md#restrict-claude%E2%80%99s-skill-access) |86| `Skill(deploy *)` | Skill | [Skill 名称匹配](https://code.claude.com/docs/zh-CN/skills.md#restrict-claude%E2%80%99s-skill-access) |
87| `Agent(Explore)` | Agent | [Subagent 类型匹配](/docs/zh-CN/permissions.md#agent-subagents) |87| `Agent(Explore)` | Agent | [Subagent 类型匹配](https://code.claude.com/docs/zh-CN/permissions.md#agent-subagents) |
88| `WebFetch(domain:example.com)` | WebFetch | [域名匹配](/docs/zh-CN/permissions.md#webfetch) |88| `WebFetch(domain:example.com)` | WebFetch | [域名匹配](https://code.claude.com/docs/zh-CN/permissions.md#webfetch) |
89| `WebSearch` | WebSearch | 无 specifier;允许或拒绝整个工具 |89| `WebSearch` | WebSearch | 无 specifier;允许或拒绝整个工具 |
90 90
91此处未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,仅接受不带 specifier 的裸工具名称。91此处未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,仅接受不带 specifier 的裸工具名称。
92 92
93`Edit(...)` 允许规则也授予对相同路径的读取访问权限,因此您不需要匹配的 `Read(...)` 规则。`Read(...)` 拒绝规则也会阻止同一路径上的 Edit 和 Write 工具,包括在该处创建新文件,因为两个工具都会更改 Claude 必须能够读回的内容。对于 Write 工具,`Read` 拒绝检查需要 Claude Code v2.1.228 或更高版本。93`Edit(...)` 允许规则也授予对相同路径的读取访问权限,因此您不需要匹配的 `Read(...)` 规则。`Read(...)` 拒绝规则也会阻止同一路径上的 Edit 和 Write 工具,包括在该处创建新文件,因为两个工具都会更改 Claude 必须能够读回的内容。对于 Write 工具,`Read` 拒绝检查需要 Claude Code v2.1.228 或更高版本。
94 94
95Hook `matcher` 字段使用裸工具名称,而不是带括号的规则格式。有关匹配规则,请参阅 [matcher 模式](/docs/zh-CN/hooks.md#matcher-patterns)。有关每个工具在 hooks 中传递给 `tool_input` 的字段名称,请参阅 [PreToolUse 输入参考](/docs/zh-CN/hooks.md#pretooluse-input)。95Hook `matcher` 字段使用裸工具名称,而不是带括号的规则格式。有关匹配规则,请参阅 [matcher 模式](https://code.claude.com/docs/zh-CN/hooks.md#matcher-patterns)。有关每个工具在 hooks 中传递给 `tool_input` 的字段名称,请参阅 [PreToolUse 输入参考](https://code.claude.com/docs/zh-CN/hooks.md#pretooluse-input)。
96 96
97## Agent tool 行为97## Agent tool 行为
98 98
99Agent tool 在单独的上下文窗口中生成一个子代理。子代理自主地完成其任务,然后向父对话返回其结果。父对话看不到子代理的中间 tool 调用或输出,只能看到最终结果。同一个 tool 也可以启动 teammate 或 fork:99Agent tool 在单独的上下文窗口中生成一个子代理。子代理自主地完成其任务,然后向父对话返回其结果。父对话看不到子代理的中间 tool 调用或输出,只能看到最终结果。同一个 tool 也可以启动 teammate 或 fork:
100 100
101* **Teammate**:启用 [agent teams](/docs/zh-CN/agent-teams.md) 后,携带 `name` 的调用可以改为启动一个 [teammate](/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams),它通过团队消息而不是返回结果来报告101* **Teammate**:启用 [agent teams](https://code.claude.com/docs/zh-CN/agent-teams.md) 后,携带 `name` 的调用可以改为启动一个 [teammate](https://code.claude.com/docs/zh-CN/agent-teams.md#how-claude-starts-agent-teams),它通过团队消息而不是返回结果来报告
102* **Fork**:在 [fork mode](/docs/zh-CN/sub-agents.md#turn-fork-mode-on-or-off) 打开的任何地方,该 tool 都可以启动一个 [forked subagent](/docs/zh-CN/sub-agents.md#fork-the-current-conversation),它继承完整的父对话,而不是从头开始102* **Fork**:在 [fork mode](https://code.claude.com/docs/zh-CN/sub-agents.md#turn-fork-mode-on-or-off) 打开的任何地方,该 tool 都可以启动一个 [forked subagent](https://code.claude.com/docs/zh-CN/sub-agents.md#fork-the-current-conversation),它继承完整的父对话,而不是从头开始
103 103
104要限制子代理运行的轮数,请在 [subagent definition](/docs/zh-CN/sub-agents.md#supported-frontmatter-fields) 中设置 `maxTurns`。当子代理达到限制时,Claude Code 将返回的结果标记为部分输出,Claude 可以 [resume the subagent](/docs/zh-CN/sub-agents.md#resume-subagents) 来继续。104要限制子代理运行的轮数,请在 [subagent definition](https://code.claude.com/docs/zh-CN/sub-agents.md#supported-frontmatter-fields) 中设置 `maxTurns`。当子代理达到限制时,Claude Code 将返回的结果标记为部分输出,Claude 可以 [resume the subagent](https://code.claude.com/docs/zh-CN/sub-agents.md#resume-subagents) 来继续。
105 105
106非 fork 子代理可以使用哪些 tools 取决于 [subagent definition](/docs/zh-CN/sub-agents.md) 中的 `tools` 和 `disallowedTools` 字段:106非 fork 子代理可以使用哪些 tools 取决于 [subagent definition](https://code.claude.com/docs/zh-CN/sub-agents.md) 中的 `tools` 和 `disallowedTools` 字段:
107 107
108* **两个字段都未设置**:子代理继承每个 [tool available to subagents](/docs/zh-CN/sub-agents.md#available-tools)。108* **两个字段都未设置**:子代理继承每个 [tool available to subagents](https://code.claude.com/docs/zh-CN/sub-agents.md#available-tools)。
109* **仅 `tools`**:子代理仅获得列出的 tools。109* **仅 `tools`**:子代理仅获得列出的 tools。
110* **仅 `disallowedTools`**:子代理获得除列出的 tools 之外的每个父 tool。110* **仅 `disallowedTools`**:子代理获得除列出的 tools 之外的每个父 tool。
111* **两者都设置**:`disallowedTools` 优先。同时列在两者中的 tool 被移除。111* **两者都设置**:`disallowedTools` 优先。同时列在两者中的 tool 被移除。
112 112
113在任何情况下,解析的集合都限于 [tools available to subagents](/docs/zh-CN/sub-agents.md#available-tools):不可用于子代理的 tool 永远不会被授予,即使在 `tools` 中列出。在 `SubagentHandback` tools-table 条目中的条件成立的地方,Claude Code 也会给子代理该 tool,即使您将其排除在 `tools` 之外或在 `disallowedTools` 中列出它。113在任何情况下,解析的集合都限于 [tools available to subagents](https://code.claude.com/docs/zh-CN/sub-agents.md#available-tools):不可用于子代理的 tool 永远不会被授予,即使在 `tools` 中列出。在 `SubagentHandback` tools-table 条目中的条件成立的地方,Claude Code 也会给子代理该 tool,即使您将其排除在 `tools` 之外或在 `disallowedTools` 中列出它。
114 114
115如果子代理的 `tools` 列表中的每个条目都无法匹配可用的 tool,Agent tool 通常会返回一个错误,命名这些条目而不是启动子代理;请参阅 [Agent would be spawned with zero tools](/docs/zh-CN/errors.md#agent-would-be-spawned-with-zero-tools) 了解消息以及如何修复每个条目。115如果子代理的 `tools` 列表中的每个条目都无法匹配可用的 tool,Agent tool 通常会返回一个错误,命名这些条目而不是启动子代理;请参阅 [Agent would be spawned with zero tools](https://code.claude.com/docs/zh-CN/errors.md#agent-would-be-spawned-with-zero-tools) 了解消息以及如何修复每个条目。
116 116
117启动子代理本身不会提示权限。Claude Code 在运行时根据您的权限规则检查子代理自己的 tool 调用。117启动子代理本身不会提示权限。Claude Code 在运行时根据您的权限规则检查子代理自己的 tool 调用。
118 118
119您看到子代理权限提示的位置取决于它是在前台还是后台运行。Claude Code 默认在后台运行子代理,除了 [cases that run in the foreground](/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)。119您看到子代理权限提示的位置取决于它是在前台还是后台运行。Claude Code 默认在后台运行子代理,除了 [cases that run in the foreground](https://code.claude.com/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)。
120 120
121* **前台子代理**显示您在主对话中会看到的相同权限提示,在每个 tool 调用发生时。121* **前台子代理**显示您在主对话中会看到的相同权限提示,在每个 tool 调用发生时。
122* **后台子代理**在您的主会话中显示权限提示。提示会注明是哪个子代理在请求,按 Esc 会拒绝该单个 tool 调用而不停止子代理。122* **后台子代理**在您的主会话中显示权限提示。提示会注明是哪个子代理在请求,按 Esc 会拒绝该单个 tool 调用而不停止子代理。
123 123
124要 [limit what a subagent can reach](/docs/zh-CN/sub-agents.md#control-subagent-capabilities),首先缩小其 `tools` 字段,例如通过将 Bash 排除在列表之外,或在您的设置中设置拒绝规则。124要 [limit what a subagent can reach](https://code.claude.com/docs/zh-CN/sub-agents.md#control-subagent-capabilities),首先缩小其 `tools` 字段,例如通过将 Bash 排除在列表之外,或在您的设置中设置拒绝规则。
125 125
126## AskUserQuestion 工具行为126## AskUserQuestion 工具行为
127 127
131 131
132### 问题自动继续超时132### 问题自动继续超时
133 133
134问题保持打开状态,直到您回答。如果您想让一个未回答的问题最终关闭并让 Claude 在没有您的情况下继续,请在您的用户 `settings.json` 中或从 `/config` 中的 **Question auto-continue timeout** 行设置 [`askUserQuestionTimeout`](/docs/zh-CN/settings-reference#askuserquestiontimeout) 为 `60s`、`5m` 或 `10m`。134问题保持打开状态,直到您回答。如果您想让一个未回答的问题最终关闭并让 Claude 在没有您的情况下继续,请在您的用户 `settings.json` 中或从 `/config` 中的 **Question auto-continue timeout** 行设置 [`askUserQuestionTimeout`](https://code.claude.com/docs/zh-CN/settings-reference#askuserquestiontimeout) 为 `60s`、`5m` 或 `10m`。
135 135
136问题在没有输入的情况下保持该长时间后,对话框会自动关闭:它会提交您已经选择的任何选项,并告诉 Claude 您可能离开了键盘,因此 Claude 会根据自己的判断继续进行,稍后可以重新提问。您会看到最后 20 秒的倒计时。按任意键可重启计时器。当终端报告其窗口处于焦点状态时,计时器不会倒计时。136问题在没有输入的情况下保持该长时间后,对话框会自动关闭:它会提交您已经选择的任何选项,并告诉 Claude 您可能离开了键盘,因此 Claude 会根据自己的判断继续进行,稍后可以重新提问。您会看到最后 20 秒的倒计时。按任意键可重启计时器。当终端报告其窗口处于焦点状态时,计时器不会倒计时。
137 137
138对于 Claude 在[后台会话](/docs/zh-CN/agent-view.md)中、在[屏幕阅读器模式](/docs/zh-CN/accessibility.md)下,或在会话连接到 [Remote Control](/docs/zh-CN/remote-control.md) 时提出的问题,计时器永远不会启动。这些问题会一直等待,直到您回答。超时仅适用于 `AskUserQuestion` 的多选题;权限提示(包括计划批准)在空闲时永远不会自动解决。138对于 Claude 在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)中、在[屏幕阅读器模式](https://code.claude.com/docs/zh-CN/accessibility.md)下,或在会话连接到 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) 时提出的问题,计时器永远不会启动。这些问题会一直等待,直到您回答。超时仅适用于 `AskUserQuestion` 的多选题;权限提示(包括计划批准)在空闲时永远不会自动解决。
139 139
140## Bash 工具行为140## Bash 工具行为
141 141
143 143
144### 命令之间保留的内容144### 命令之间保留的内容
145 145
146* 当 Claude 在主会话中运行 `cd` 时,新的工作目录会传递到后续的 Bash 命令,只要它保持在项目目录内或使用 `--add-dir`、`/add-dir` 或 settings 中的 `additionalDirectories` 添加的[额外工作目录](/docs/zh-CN/permissions.md#working-directories)内。这包括 Claude 响应您后续消息时运行的命令。146* 当 Claude 在主会话中运行 `cd` 时,新的工作目录会传递到后续的 Bash 命令,只要它保持在项目目录内或使用 `--add-dir`、`/add-dir` 或 settings 中的 `additionalDirectories` 添加的[额外工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories)内。这包括 Claude 响应您后续消息时运行的命令。
147 * 子代理会话永远不会传递工作目录更改。147 * 子代理会话永远不会传递工作目录更改。
148 * 如果 `cd` 落在这些目录之外,Claude Code 会重置为项目目录,并将 `Shell cwd was reset to <dir>` 附加到工具结果中。148 * 如果 `cd` 落在这些目录之外,Claude Code 会重置为项目目录,并将 `Shell cwd was reset to <dir>` 附加到工具结果中。
149 * 要禁用此传递,使每个 Bash 命令都在项目目录中启动,请设置 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。149 * 要禁用此传递,使每个 Bash 命令都在项目目录中启动,请设置 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。
150* 环境变量不会保留。一个命令中的 `export` 在下一个命令中不可用。150* 环境变量不会保留。一个命令中的 `export` 在下一个命令中不可用。
151* 在您的 shell 启动文件中定义的别名和 shell 函数可用。在会话启动时,Claude Code 会获取 `~/.zshrc`、`~/.bashrc` 或 `~/.profile`(取决于您的 shell),捕获生成的别名、函数和 shell 选项,并将它们应用于每个 Bash 命令。151* 在您的 shell 启动文件中定义的别名和 shell 函数可用。在会话启动时,Claude Code 会获取 `~/.zshrc`、`~/.bashrc` 或 `~/.profile`(取决于您的 shell),捕获生成的别名、函数和 shell 选项,并将它们应用于每个 Bash 命令。
152 152
153在启动 Claude Code 之前激活您的 virtualenv 或 conda 环境。要使环境变量在 Bash 命令之间保留,请在启动 Claude Code 之前将 [`CLAUDE_ENV_FILE`](/docs/zh-CN/env-vars) 设置为 shell 脚本,或使用 [SessionStart hook](/docs/zh-CN/hooks.md#persist-environment-variables) 动态填充它。153在启动 Claude Code 之前激活您的 virtualenv 或 conda 环境。要使环境变量在 Bash 命令之间保留,请在启动 Claude Code 之前将 [`CLAUDE_ENV_FILE`](https://code.claude.com/docs/zh-CN/env-vars) 设置为 shell 脚本,或使用 [SessionStart hook](https://code.claude.com/docs/zh-CN/hooks.md#persist-environment-variables) 动态填充它。
154 154
155### 超时和输出限制155### 超时和输出限制
156 156
157每个命令在超时下运行,Claude 管理它:当它需要比命令的默认值更长的时间时,它会传递 `timeout` 参数进行该调用。您永远不会设置每个命令的超时。157每个命令在超时下运行,Claude 管理它:当它需要比命令的默认值更长的时间时,它会传递 `timeout` 参数进行该调用。您永远不会设置每个命令的超时。
158 158
159两个[环境变量](/docs/zh-CN/env-vars.md)控制 Claude 获得的内容,用于在前台运行的命令:159两个[环境变量](https://code.claude.com/docs/zh-CN/env-vars.md)控制 Claude 获得的内容,用于在前台运行的命令:
160 160
161* `BASH_DEFAULT_TIMEOUT_MS` — 当 Claude 不传递超时时的默认值;开箱即用为两分钟161* `BASH_DEFAULT_TIMEOUT_MS` — 当 Claude 不传递超时时的默认值;开箱即用为两分钟
162* `BASH_MAX_TIMEOUT_MS` — 使用默认值,设置上限以限制 Claude 请求的任何内容:有效上限是两者中较大的,开箱即用为十分钟162* `BASH_MAX_TIMEOUT_MS` — 使用默认值,设置上限以限制 Claude 请求的任何内容:有效上限是两者中较大的,开箱即用为十分钟
174 174
175退出码为 1 的命令仅当 Claude Code 识别退出码 1 为该命令的良性结果时,才计为 Bash 工具的有效结果:`grep`、`rg`、`egrep`、`fgrep`、`find`、`diff`、`test` 和 `[`,加上 `git diff` 和 `git grep`。退出码为 1 的所有其他命令都计为失败,即使退出 1 是良性信息结果:`pgrep` 和 `jq -e` 没有匹配项,`cmp` 的文件不同。175退出码为 1 的命令仅当 Claude Code 识别退出码 1 为该命令的良性结果时,才计为 Bash 工具的有效结果:`grep`、`rg`、`egrep`、`fgrep`、`find`、`diff`、`test` 和 `[`,加上 `git diff` 和 `git grep`。退出码为 1 的所有其他命令都计为失败,即使退出 1 是良性信息结果:`pgrep` 和 `jq -e` 没有匹配项,`cmp` 的文件不同。
176 176
177[`BASH_MAX_OUTPUT_LENGTH`](/docs/zh-CN/env-vars) 设置 Claude Code 从工作文件读回到命令结果中的输出字符数:默认 30,000,最多 150,000。当您的命令经常溢出该窗口时(例如详细的构建或完整的测试套件日志),请提高它。提高它会扩大读回窗口,这也是失败命令的摘录被切割的窗口。它不会提高内联上限:超过内联上限的有效结果作为文件路径加预览到达,无论此变量如何。177[`BASH_MAX_OUTPUT_LENGTH`](https://code.claude.com/docs/zh-CN/env-vars) 设置 Claude Code 从工作文件读回到命令结果中的输出字符数:默认 30,000,最多 150,000。当您的命令经常溢出该窗口时(例如详细的构建或完整的测试套件日志),请提高它。提高它会扩大读回窗口,这也是失败命令的摘录被切割的窗口。它不会提高内联上限:超过内联上限的有效结果作为文件路径加预览到达,无论此变量如何。
178 178
179要更改有效结果中 Claude 接收的内联内容量,请改为设置 [`bashOutputMaxChars`](/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,最多 128,000 个字符。它同时调整内联上限和读回窗口的大小,Claude Code 然后忽略 `BASH_MAX_OUTPUT_LENGTH`。需要 Claude Code v2.1.261 或更高版本。179要更改有效结果中 Claude 接收的内联内容量,请改为设置 [`bashOutputMaxChars`](https://code.claude.com/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,最多 128,000 个字符。它同时调整内联上限和读回窗口的大小,Claude Code 然后忽略 `BASH_MAX_OUTPUT_LENGTH`。需要 Claude Code v2.1.261 或更高版本。
180 180
181### 后台命令181### 后台命令
182 182
184 184
185#### 后台命令何时停止185#### 后台命令何时停止
186 186
187[前台子代理](/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)启动的命令在该子代理的运行结束时停止,无论它是完成、失败还是被中断。主对话或后台子代理启动的命令在最终回复后继续运行,直到它退出、被停止或达到其[时间限制](#time-limit-for-background-commands)。187[前台子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#run-subagents-in-foreground-or-background)启动的命令在该子代理的运行结束时停止,无论它是完成、失败还是被中断。主对话或后台子代理启动的命令在最终回复后继续运行,直到它退出、被停止或达到其[时间限制](#time-limit-for-background-commands)。
188 188
189当主对话启动的命令仍在运行时,使用 `-p` 标志的非交互模式运行会[在其结果之后保持打开](/docs/zh-CN/headless.md#background-tasks-at-exit),直到该命令退出或达到其时间限制。后台子代理启动的命令会在运行退出时被停止。189当主对话启动的命令仍在运行时,使用 `-p` 标志的非交互模式运行会[在其结果之后保持打开](https://code.claude.com/docs/zh-CN/headless.md#background-tasks-at-exit),直到该命令退出或达到其时间限制。后台子代理启动的命令会在运行退出时被停止。
190 190
191#### 后台命令的时间限制191#### 后台命令的时间限制
192 192
199* Claude 在后台启动的命令获得 30 分钟,或 Claude 使用 `run_in_background` 传递的 `timeout`,最多 2 小时199* Claude 在后台启动的命令获得 30 分钟,或 Claude 使用 `run_in_background` 传递的 `timeout`,最多 2 小时
200* 在前台启动然后移到后台的命令,例如在其超时时,从移动时获得 30 分钟200* 在前台启动然后移到后台的命令,例如在其超时时,从移动时获得 30 分钟
201 201
202在使用 `-p` 标志且以文本形式(而不是使用 `--input-format stream-json`)传递提示词的运行中,两个默认值都是 10 分钟而不是 30 分钟,因为该运行会[在其结果之后等待后台命令](/docs/zh-CN/headless.md#background-tasks-at-exit)。202在使用 `-p` 标志且以文本形式(而不是使用 `--input-format stream-json`)传递提示词的运行中,两个默认值都是 10 分钟而不是 30 分钟,因为该运行会[在其结果之后等待后台命令](https://code.claude.com/docs/zh-CN/headless.md#background-tasks-at-exit)。
203 203
204当后台命令达到其时间限制时,Claude Code 停止它并告诉 Claude 原因,Claude 可以使用更长的 `timeout` 重新启动命令,如果工作仍然需要的话。停止通知读作 `Background command "<description>" was stopped after reaching its background time limit`。204当后台命令达到其时间限制时,Claude Code 停止它并告诉 Claude 原因,Claude 可以使用更长的 `timeout` 重新启动命令,如果工作仍然需要的话。停止通知读作 `Background command "<description>" was stopped after reaching its background time limit`。
205 205
206#### 提高后台命令的时间限制206#### 提高后台命令的时间限制
207 207
208两个[环境变量](/docs/zh-CN/env-vars.md)提高这些限制,对于 Bash 和 PowerShell 命令都是如此。两者都采用毫秒,都不能缩短限制:较低的值保留默认值和 2 小时的最大值。208两个[环境变量](https://code.claude.com/docs/zh-CN/env-vars.md)提高这些限制,对于 Bash 和 PowerShell 命令都是如此。两者都采用毫秒,都不能缩短限制:较低的值保留默认值和 2 小时的最大值。
209 209
210* 将 `BASH_DEFAULT_TIMEOUT_MS` 设置为高于 `1800000` 以用该值替换 30 分钟的默认值,既适用于 Claude 启动的没有 `timeout` 的命令,也适用于移动的命令。在以文本形式传递提示词的 `-p` 运行中,任何高于 `600000` 的值都会替换其 10 分钟的默认值210* 将 `BASH_DEFAULT_TIMEOUT_MS` 设置为高于 `1800000` 以用该值替换 30 分钟的默认值,既适用于 Claude 启动的没有 `timeout` 的命令,也适用于移动的命令。在以文本形式传递提示词的 `-p` 运行中,任何高于 `600000` 的值都会替换其 10 分钟的默认值
211* 将 `BASH_MAX_TIMEOUT_MS` 设置为高于 `7200000` 以将 2 小时的最大值提高到该值。将 `BASH_DEFAULT_TIMEOUT_MS` 设置为高于 `7200000` 以相同方式提高最大值211* 将 `BASH_MAX_TIMEOUT_MS` 设置为高于 `7200000` 以将 2 小时的最大值提高到该值。将 `BASH_DEFAULT_TIMEOUT_MS` 设置为高于 `7200000` 以相同方式提高最大值
214 214
215当前台命令在完成前达到其超时时,Claude Code 会将其移到后台而不是停止它,除非命令以 `sleep` 开头。移动的命令的[时间限制](#time-limit-for-background-commands)从移动时开始计算,前台子代理的移动命令仍然在该子代理的运行结束时停止。215当前台命令在完成前达到其超时时,Claude Code 会将其移到后台而不是停止它,除非命令以 `sleep` 开头。移动的命令的[时间限制](#time-limit-for-background-commands)从移动时开始计算,前台子代理的移动命令仍然在该子代理的运行结束时停止。
216 216
217设置 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/zh-CN/env-vars#variables) 或在 [bare 模式](/docs/zh-CN/headless.md#start-faster-with-bare-mode)下运行会禁用自动后台处理以及其余后台任务功能,因此达到超时的命令会改为停止。217设置 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](https://code.claude.com/docs/zh-CN/env-vars#variables) 或在 [bare 模式](https://code.claude.com/docs/zh-CN/headless.md#start-faster-with-bare-mode)下运行会禁用自动后台处理,因此达到超时的命令会改为停止。
218 218
219移到后台的命令的结果说明发生了什么:219移到后台的命令的结果说明发生了什么:
220 220
223 223
224### Linux 和 WSL 上的内存限制224### Linux 和 WSL 上的内存限制
225 225
226在 Linux 和 WSL 上,设置 [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/zh-CN/env-vars#variables) 为大小(例如 `4G`)以限制 Bash、PowerShell 和 [Monitor](#monitor-tool) 工具命令可以使用的内存,这样一个失控的构建就不会占用会话其余部分需要的内存。需要 Claude Code v2.1.233 或更高版本。在 v2.1.246 之前,Monitor 工具命令在上限之外运行。226在 Linux 和 WSL 上,设置 [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](https://code.claude.com/docs/zh-CN/env-vars#variables) 为大小(例如 `4G`)以限制 Bash、PowerShell 和 [Monitor](#monitor-tool) 工具命令可以使用的内存,这样一个失控的构建就不会占用会话其余部分需要的内存。需要 Claude Code v2.1.233 或更高版本。在 v2.1.246 之前,Monitor 工具命令在上限之外运行。
227 227
228* 将大小写为字节数或带有 `K`、`M`、`G` 或 `T` 后缀。设置 `0`、`off`、`false`、`no` 或 `none` 以关闭上限。Claude Code 忽略任何其他无法读取为大小的值,例如 `4e9`。228* 将大小写为字节数或带有 `K`、`M`、`G` 或 `T` 后缀。设置 `0`、`off`、`false`、`no` 或 `none` 以关闭上限。Claude Code 忽略任何其他无法读取为大小的值,例如 `4e9`。
229* Claude Code 将会话的所有 Bash、PowerShell 和 Monitor 命令计入一个上限,而不是每个命令各自计入。229* Claude Code 将会话的所有 Bash、PowerShell 和 Monitor 命令计入一个上限,而不是每个命令各自计入。
231* 在 Claude Code 启动的第一个进程打开上限后,或因为关闭值或失败的 cgroup 设置而关闭它后,Claude Code 保持该结果直到您重新启动。要应用更改或删除的值,或修复后的设置,再次启动 `claude`。231* 在 Claude Code 启动的第一个进程打开上限后,或因为关闭值或失败的 cgroup 设置而关闭它后,Claude Code 保持该结果直到您重新启动。要应用更改或删除的值,或修复后的设置,再次启动 `claude`。
232* 当命令无法保持在上限以下时,内核杀死命令,其结果中没有任何内容命名上限。232* 当命令无法保持在上限以下时,内核杀死命令,其结果中没有任何内容命名上限。
233 233
234Claude Code 也可以将它启动的其他类型的进程计入同一限制。设置 [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/zh-CN/env-vars#variables) 为逗号分隔的类型列表以豁免上限;Claude Code 对不在您列表中的每种类型应用上限。设置为 `none` 以限制每种类型,或设置为 `all-new` 以仅限制 Bash、PowerShell 和 Monitor 工具命令。需要 Claude Code v2.1.246 或更高版本。您可以命名的类型:234Claude Code 也可以将它启动的其他类型的进程计入同一限制。设置 [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](https://code.claude.com/docs/zh-CN/env-vars#variables) 为逗号分隔的类型列表以豁免上限;Claude Code 对不在您列表中的每种类型应用上限。设置为 `none` 以限制每种类型,或设置为 `all-new` 以仅限制 Bash、PowerShell 和 Monitor 工具命令。需要 Claude Code v2.1.246 或更高版本。您可以命名的类型:
235 235
236* `mcp`: 本地 [MCP 服务器](/docs/zh-CN/mcp.md)236* `mcp`: 本地 [MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)
237* `lsp`: [language servers](#lsp-tool-behavior)237* `lsp`: [language servers](#lsp-tool-behavior)
238* `hooks`: [hook](/docs/zh-CN/hooks.md) 命令238* `hooks`: [hook](https://code.claude.com/docs/zh-CN/hooks.md) 命令
239* `plugin`: [插件](/docs/zh-CN/plugins/overview.md)运行的命令239* `plugin`: [插件](https://code.claude.com/docs/zh-CN/plugins/overview.md)运行的命令
240* `helper`: Claude Code 自己的辅助命令,例如 `git`240* `helper`: Claude Code 自己的辅助命令,例如 `git`
241* `agent`: 子 Claude Code 进程,例如 [agent teammates](/docs/zh-CN/agent-teams.md)241* `agent`: 子 Claude Code 进程,例如 [agent teammates](https://code.claude.com/docs/zh-CN/agent-teams.md)
242 242
243无论您列出什么,这些规则适用:243无论您列出什么,这些规则适用:
244 244
250 250
251Edit 工具执行精确字符串替换。它接受一个 `old_string` 和一个 `new_string`,并用后者替换前者。它不使用正则表达式或模糊匹配。251Edit 工具执行精确字符串替换。它接受一个 `old_string` 和一个 `new_string`,并用后者替换前者。它不使用正则表达式或模糊匹配。
252 252
253编辑应用必须通过以下检查。在任何检查之前,与 [`Read` 拒绝规则](/docs/zh-CN/permissions#tool-specific-permission-rules)匹配的路径会被拒绝,包括在该路径创建新文件。253编辑应用必须通过以下检查。在任何检查之前,与 [`Read` 拒绝规则](https://code.claude.com/docs/zh-CN/permissions#tool-specific-permission-rules)匹配的路径会被拒绝,包括在该路径创建新文件。
254 254
255* **编辑前读取**:Claude 在编辑文件前在当前对话中读取该文件,并且以 [`PARTIAL view` 通知](#large-files)中断的读取不计数。Claude Opus 4.6、Claude Haiku 4.5 和更早的模型始终需要读取。较新的模型可以在读取不需要权限提示且 Read 工具可用时编辑未读文件。255* **编辑前读取**:Claude 在编辑文件前在当前对话中读取该文件,并且以 [`PARTIAL view` 通知](#large-files)中断的读取不计数。Claude Opus 4.6、Claude Haiku 4.5 和更早的模型始终需要读取。较新的模型可以在读取不需要权限提示且 Read 工具可用时编辑未读文件。
256* **匹配**:`old_string` 必须在文件中完全按照编写的方式出现。单个空格或缩进差异足以导致不匹配。256* **匹配**:`old_string` 必须在文件中完全按照编写的方式出现。单个空格或缩进差异足以导致不匹配。
260 260
261Claude 使用 `cat` 或 `grep` 等 Bash 命令查看文件后,也可以在不单独执行 Read 的情况下编辑该文件。这些命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 和 `rg`,且每个命令都需在单个文件上运行,没有管道或重定向。没有输出任何匹配的搜索不算作读取,此列表之外的任何命令也不算。261Claude 使用 `cat` 或 `grep` 等 Bash 命令查看文件后,也可以在不单独执行 Read 的情况下编辑该文件。这些命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 和 `rg`,且每个命令都需在单个文件上运行,没有管道或重定向。没有输出任何匹配的搜索不算作读取,此列表之外的任何命令也不算。
262 262
263当 Claude 以这种方式查看文件时,Claude Code 还会加载适用于该文件的任何[子目录 `CLAUDE.md`](/docs/zh-CN/memory#how-claude-md-files-load) 和[路径范围规则](/docs/zh-CN/memory.md#path-specific-rules)。请参阅 [Read 和 Edit 权限规则](/docs/zh-CN/permissions.md#read-and-edit),了解您的 `Read` 和 `Edit` 拒绝规则涵盖哪些 Bash 命令。263当 Claude 以这种方式查看文件时,Claude Code 还会加载适用于该文件的任何[子目录 `CLAUDE.md`](https://code.claude.com/docs/zh-CN/memory#how-claude-md-files-load) 和[路径范围规则](https://code.claude.com/docs/zh-CN/memory.md#path-specific-rules)。请参阅 [Read 和 Edit 权限规则](https://code.claude.com/docs/zh-CN/permissions.md#read-and-edit),了解您的 `Read` 和 `Edit` 拒绝规则涵盖哪些 Bash 命令。
264 264
265### 非 UTF-8 文件265### 非 UTF-8 文件
266 266
267Claude 无法对不是有效 UTF-8 的文件使用 [NotebookEdit](#notebookedit-tool-behavior)。Edit 也是如此,除非该文件以小端 UTF-16 字节顺序标记开头。当 Claude 尝试时,工具会拒绝更改,并保持文件不变。被拒绝的文件包括以 Windows-1252 或 Shift-JIS 等旧编码保存的非 ASCII 文本、二进制文件,以及包含无效字节序列的 UTF-8 文件。267Claude 无法对不是有效 UTF-8 的文件使用 [NotebookEdit](#notebookedit-tool-behavior)。Edit 也是如此,除非该文件以小端 UTF-16 字节顺序标记开头。当 Claude 尝试时,工具会拒绝更改,并保持文件不变。被拒绝的文件包括以 Windows-1252 或 Shift-JIS 等旧编码保存的非 ASCII 文本、二进制文件,以及包含无效字节序列的 UTF-8 文件。
268 268
269这些工具之所以拒绝,是因为它们会将整个文件以 UTF-8 保存回去,这会把所有无法解码的字节都替换为替换字符 `U+FFFD`。相反,[Claude 收到的错误](/docs/zh-CN/errors.md#file-is-not-valid-utf-8)会告诉它使用一条保留文件编码的 shell 命令来进行更改,或者先询问您是否将文件转换为 UTF-8。269这些工具之所以拒绝,是因为它们会将整个文件以 UTF-8 保存回去,这会把所有无法解码的字节都替换为替换字符 `U+FFFD`。相反,[Claude 收到的错误](https://code.claude.com/docs/zh-CN/errors.md#file-is-not-valid-utf-8)会告诉它使用一条保留文件编码的 shell 命令来进行更改,或者先询问您是否将文件转换为 UTF-8。
270 270
271Claude 仍然可以使用 Write 替换此类文件,除非新内容包含 `U+FFFD`,即 Read 在无法解码的字节位置向 Claude 显示的字符。这一防护措施可防止 Claude 将其读取到的乱码文本写回。当 Write 确实替换文件时,它会将新内容保存为 UTF-8,因此文件的原始编码会丢失。271Claude 仍然可以使用 Write 替换此类文件,除非新内容包含 `U+FFFD`,即 Read 在无法解码的字节位置向 Claude 显示的字符。这一防护措施可防止 Claude 将其读取到的乱码文本写回。当 Write 确实替换文件时,它会将新内容保存为 UTF-8,因此文件的原始编码会丢失。
272 272
281 281
282Claude 结束交互式会话后,会话被锁定。新提示和大多数命令返回 `Claude ended this conversation. Start a new session (or /clear) to continue.`,只有 `/clear`、`/resume`、`/help`、`/exit` 和 `/feedback` 仍然可以运行。Claude Code 在会话的记录中记录结束,因此恢复已结束的会话会恢复锁定;会话的历史记录不会被删除。282Claude 结束交互式会话后,会话被锁定。新提示和大多数命令返回 `Claude ended this conversation. Start a new session (or /clear) to continue.`,只有 `/clear`、`/resume`、`/help`、`/exit` 和 `/feedback` 仍然可以运行。Claude Code 在会话的记录中记录结束,因此恢复已结束的会话会恢复锁定;会话的历史记录不会被删除。
283 283
284在[非交互模式](/docs/zh-CN/headless.md)中使用 `-p` 标志恢复已结束的会话会出错并以代码 1 退出,因此脚本不会将已结束的运行读取为成功。284在[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)中使用 `-p` 标志恢复已结束的会话会出错并以代码 1 退出,因此脚本不会将已结束的运行读取为成功。
285 285
286该工具从不提示权限,[PreToolUse hooks](/docs/zh-CN/hooks.md#pretooluse) 也不会为其运行。虽然任何其他工具仍然存在,你也无法阻止它:命名 `EndConversation` 的[拒绝和询问规则](/docs/zh-CN/permissions.md#tool-specific-permission-rules)无效,`--disallowedTools` 和 `--tools` 列表都无法将其删除。这个豁免是有意的:该工具除了结束对话外什么都不做,从不读取或修改文件或数据,这种保护措施只有在应用它的会话无法将其关闭时才能有效。当你的拒绝规则删除所有其他工具并且也匹配 `EndConversation` 时,如 `"*"` 所做的那样,Claude Code 也会将其删除,而不是将其作为唯一工具保留,除非允许规则明确命名 `EndConversation`。删除所有其他工具但不匹配 `EndConversation` 的拒绝列表会将其保留在原位。286该工具从不提示权限,[PreToolUse hooks](https://code.claude.com/docs/zh-CN/hooks.md#pretooluse) 也不会为其运行。虽然任何其他工具仍然存在,你也无法阻止它:命名 `EndConversation` 的[拒绝和询问规则](https://code.claude.com/docs/zh-CN/permissions.md#tool-specific-permission-rules)无效,`--disallowedTools` 和 `--tools` 列表都无法将其删除。这个豁免是有意的:该工具除了结束对话外什么都不做,从不读取或修改文件或数据,这种保护措施只有在应用它的会话无法将其关闭时才能有效。当你的拒绝规则删除所有其他工具并且也匹配 `EndConversation` 时,如 `"*"` 所做的那样,Claude Code 也会将其删除,而不是将其作为唯一工具保留,除非允许规则明确命名 `EndConversation`。删除所有其他工具但不匹配 `EndConversation` 的拒绝列表会将其保留在原位。
287 287
288[子代理](/docs/zh-CN/sub-agents.md)永远不会获得该工具。共享主对话工具列表的后台任务会看到它,但在那里调用它不会结束任何内容。288[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)永远不会获得该工具。共享主对话工具列表的后台任务会看到它,但在那里调用它不会结束任何内容。
289 289
290该工具仅在以下所有条件都满足时出现:290该工具仅在以下所有条件都满足时出现:
291 291
292* **模型**:会话的模型是 Claude Opus 4.8、Claude Sonnet 5、Claude Fable 5 或这些系列之一的更高版本。292* **模型**:会话的模型是 Claude Opus 4.8、Claude Sonnet 5、Claude Fable 5 或这些系列之一的更高版本。
293* **界面**:交互式终端会话,包括 IDE 集成终端中的 `claude` 会话,这是[JetBrains 插件](/docs/zh-CN/jetbrains.md)运行它的方式。其他界面不包括该工具,例如:293* **界面**:交互式终端会话,包括 IDE 集成终端中的 `claude` 会话,这是[JetBrains 插件](https://code.claude.com/docs/zh-CN/jetbrains.md)运行它的方式。其他界面不包括该工具,例如:
294 * 非交互式 `-p` 运行294 * 非交互式 `-p` 运行
295 * 通过 [Agent SDK](/docs/zh-CN/agent-sdk/overview.md) TypeScript 和 Python 包的会话295 * 通过 [Agent SDK](https://code.claude.com/docs/zh-CN/agent-sdk/overview.md) TypeScript 和 Python 包的会话
296 * [VS Code 扩展](/docs/zh-CN/vs-code.md)面板,它捆绑了自己的 CLI296 * [VS Code 扩展](https://code.claude.com/docs/zh-CN/vs-code.md)面板,它捆绑了自己的 CLI
297 * [GitHub Actions](/docs/zh-CN/github-actions.md)297 * [GitHub Actions](https://code.claude.com/docs/zh-CN/github-actions.md)
298 * [云会话](/docs/zh-CN/claude-code-on-the-web.md)298 * [云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)
299* **启动模式**:不是 [`--bare`](/docs/zh-CN/headless#start-faster-with-bare-mode) 会话。裸模式仅加载 shell 和文件工具,因此该工具从不在那里注册。299* **启动模式**:不是 [`--bare`](https://code.claude.com/docs/zh-CN/headless#start-faster-with-bare-mode) 会话。裸模式仅加载 shell 和文件工具,因此该工具从不在那里注册。
300* **提供商**:在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry.md) 上不可用,或在通过[云网关](/docs/zh-CN/claude-apps-gateway)登录的会话上不可用。300* **提供商**:在 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 上不可用,或在通过[云网关](https://code.claude.com/docs/zh-CN/claude-apps-gateway)登录的会话上不可用。
301 301
302## Glob 工具行为302## Glob 工具行为
303 303
305 305
306在 macOS、Linux 和 WSL 上,在以下情况下可以恢复 Glob 和 Grep 工具:306在 macOS、Linux 和 WSL 上,在以下情况下可以恢复 Glob 和 Grep 工具:
307 307
308* 您在启动会话时在 [`--tools` 或 `--allowedTools`](/docs/zh-CN/cli-reference#cli-flags) 中指定 `Glob` 或 `Grep`,或在等效的 [Agent SDK](/docs/zh-CN/agent-sdk/overview.md) 选项中指定。使用 `--tools` 时,您会获得列出的工具;在 `--allowedTools` 中指定任一工具会恢复两者。设置文件中的允许规则没有这种效果。308* 您在启动会话时在 [`--tools` 或 `--allowedTools`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 中指定 `Glob` 或 `Grep`,或在等效的 [Agent SDK](https://code.claude.com/docs/zh-CN/agent-sdk/overview.md) 选项中指定。使用 `--tools` 时,您会获得列出的工具;在 `--allowedTools` 中指定任一工具会恢复两者。设置文件中的允许规则没有这种效果。
309* 权限 [拒绝规则](/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)、`--disallowedTools` 标志或 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 从会话中移除 `Bash`。309* 权限 [拒绝规则](https://code.claude.com/docs/zh-CN/permissions.md#match-all-uses-of-a-tool)、`--disallowedTools` 标志或 [`--restricted`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 从会话中移除 `Bash`。
310* [子代理](/docs/zh-CN/sub-agents.md#available-tools) 在其 `tools` 字段中列出 `Glob` 或 `Grep` 并排除 `Bash`。列出的工具仅对该子代理恢复;当它通过 [`--agent`](/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置作为主会话 Agent 运行时,则对整个会话恢复。310* [子代理](https://code.claude.com/docs/zh-CN/sub-agents.md#available-tools) 在其 `tools` 字段中列出 `Glob` 或 `Grep` 并排除 `Bash`。列出的工具仅对该子代理恢复;当它通过 [`--agent`](https://code.claude.com/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置作为主会话 Agent 运行时,则对整个会话恢复。
311 311
312Glob 支持标准 glob 语法,包括用于递归目录匹配的 `**`:312Glob 支持标准 glob 语法,包括用于递归目录匹配的 `**`:
313 313
319 319
320Glob 默认不遵守 `.gitignore`,因此它会找到被 gitignore 的文件和跟踪的文件。这与 [Grep](#grep-tool-behavior) 不同,后者会跳过被 gitignore 的文件。要使 Glob 遵守 `.gitignore`,请在启动 Claude Code 前设置 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。320Glob 默认不遵守 `.gitignore`,因此它会找到被 gitignore 的文件和跟踪的文件。这与 [Grep](#grep-tool-behavior) 不同,后者会跳过被 gitignore 的文件。要使 Glob 遵守 `.gitignore`,请在启动 Claude Code 前设置 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。
321 321
322Claude Code 在检查搜索目录是否存在之前决定 Glob 调用的权限。它仍然对 [工作目录](/docs/zh-CN/permissions.md#working-directories) 之外的缺失 `path` 运行读取权限检查,因此针对某个路径的权限提示并不意味着该路径存在。322Claude Code 在检查搜索目录是否存在之前决定 Glob 调用的权限。它仍然对 [工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories) 之外的缺失 `path` 运行读取权限检查,因此针对某个路径的权限提示并不意味着该路径存在。
323 323
324包含空字节的 `pattern` 或 `path` 值会返回错误,要求 Claude 将其删除。324包含空字节的 `pattern` 或 `path` 值会返回错误,要求 Claude 将其删除。
325 325
341 341
342Grep 遵守 `.gitignore`,因此被 gitignore 的文件会被跳过。要搜索被 gitignore 的文件,Claude 直接传递其路径。342Grep 遵守 `.gitignore`,因此被 gitignore 的文件会被跳过。要搜索被 gitignore 的文件,Claude 直接传递其路径。
343 343
344Claude Code 在检查搜索 `path` 是否存在之前决定 Grep 调用的权限。它仍然对 [工作目录](/docs/zh-CN/permissions.md#working-directories) 之外的缺失 `path` 运行读取权限检查,因此路径的权限提示并不意味着该路径存在。344Claude Code 在检查搜索 `path` 是否存在之前决定 Grep 调用的权限。它仍然对 [工作目录](https://code.claude.com/docs/zh-CN/permissions.md#working-directories) 之外的缺失 `path` 运行读取权限检查,因此路径的权限提示并不意味着该路径存在。
345 345
346## LSP tool behavior346## LSP tool behavior
347 347
355* 查找接口的实现355* 查找接口的实现
356* 追踪调用层次结构356* 追踪调用层次结构
357 357
358Claude Code 会保持该工具处于非活动状态,直到您为您的语言安装 [code intelligence plugin](/docs/zh-CN/plugins/code-intelligence.md)。在[云会话](/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 不会启动 plugin 语言服务器,因此 LSP tool 在那里保持非活动状态。Claude Code 从 plugin 获取语言服务器的配置,您需要自己安装服务器二进制文件。358Claude Code 会保持该工具处于非活动状态,直到您为您的语言安装 [code intelligence plugin](https://code.claude.com/docs/zh-CN/plugins/code-intelligence.md)。在[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 不会启动 plugin 语言服务器,因此 LSP tool 在那里保持非活动状态。Claude Code 从 plugin 获取语言服务器的配置,您需要自己安装服务器二进制文件。
359 359
360Claude Code 对于无法启动其语言服务器的文件上的每个 LSP 调用都会返回错误结果。360Claude Code 对于无法启动其语言服务器的文件上的每个 LSP 调用都会返回错误结果。
361 361
373 373
374您可以在同一会话中继续工作,Claude 在事件到达时进行插入。374您可以在同一会话中继续工作,Claude 在事件到达时进行插入。
375 375
376每个 Claude 启动的监视都有一个截止时间:默认为 5 分钟,最多 30 分钟,在 [非交互式](/docs/zh-CN/headless.md) 运行中使用单个提示和 `-p` 时最多 10 分钟。376每个 Claude 启动的监视都有一个截止时间:默认为 5 分钟,最多 30 分钟,在 [非交互式](https://code.claude.com/docs/zh-CN/headless.md) 运行中使用单个提示和 `-p` 时最多 10 分钟。
377 377
378在截止时间时,监视结束。Claude 会收到一个通知,因此如果仍然需要,它可以重新启动监视。378在截止时间时,监视结束。Claude 会收到一个通知,因此如果仍然需要,它可以重新启动监视。
379 379
380通过要求 Claude 取消监视或结束会话来停止监视。当您停止启动了监视的 [子代理](/docs/zh-CN/sub-agents.md)(例如来自 `/tasks`)时,这些监视会随之停止。380通过要求 Claude 取消监视或结束会话来停止监视。当您停止启动了监视的 [子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)(例如来自 `/tasks`)时,这些监视会随之停止。
381 381
382当 Monitor 运行命令时,它使用与 Bash 相同的 [权限规则](/docs/zh-CN/permissions.md#tool-specific-permission-rules),因此您为 Bash 设置的 `allow` 和 `deny` 模式也适用于此处。当 [自动模式](/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) 处于活动状态时,Claude Code 会搁置命名 `Monitor` 本身的允许规则,以及它删除的其他 [广泛允许规则](/docs/zh-CN/permission-modes.md#how-the-classifier-evaluates-actions),因此分类器以与审查 Bash 命令相同的方式审查 Monitor 命令。382当 Monitor 运行命令时,它使用与 Bash 相同的 [权限规则](https://code.claude.com/docs/zh-CN/permissions.md#tool-specific-permission-rules),因此您为 Bash 设置的 `allow` 和 `deny` 模式也适用于此处。当 [自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) 处于活动状态时,Claude Code 会搁置命名 `Monitor` 本身的允许规则,以及它删除的其他 [广泛允许规则](https://code.claude.com/docs/zh-CN/permission-modes.md#how-the-classifier-evaluates-actions),因此分类器以与审查 Bash 命令相同的方式审查 Monitor 命令。
383 383
384[WebSocket 源](#websocket-source) 有其自己的批准提示,分类器也在自动模式下决定。384[WebSocket 源](#websocket-source) 有其自己的批准提示,分类器也在自动模式下决定。
385 385
386该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用。当设置了 `DISABLE_TELEMETRY` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,它也不可用。在 Windows 上,仅当安装了 [Git Bash](/docs/zh-CN/setup.md#set-up-on-windows) 时该工具才可用。386该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用。当设置了 `DISABLE_TELEMETRY` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,它也不可用。在 Windows 上,仅当安装了 [Git Bash](https://code.claude.com/docs/zh-CN/setup.md#set-up-on-windows) 时该工具才可用。
387 387
388插件可以声明在插件处于活动状态时自动启动的监视,而不是要求 Claude 启动它们。请参阅 [插件监视器](/docs/zh-CN/plugins/components.md#monitors)。388插件可以声明在插件处于活动状态时自动启动的监视,而不是要求 Claude 启动它们。请参阅 [插件监视器](https://code.claude.com/docs/zh-CN/plugins/components.md#monitors)。
389 389
390### WebSocket 源390### WebSocket 源
391 391
405 405
406`timeout_ms` 截止时间也适用于 WebSocket 监视:监视在截止时间结束,`TaskStop` 会提前取消它。406`timeout_ms` 截止时间也适用于 WebSocket 监视:监视在截止时间结束,`TaskStop` 会提前取消它。
407 407
408打开 WebSocket 会提示批准;在 [自动模式](/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) 中,分类器会决定。该提示不提供跳过同一主机的未来提示的选项。408打开 WebSocket 会提示批准;在 [自动模式](https://code.claude.com/docs/zh-CN/permission-modes.md#eliminate-prompts-with-auto-mode) 中,分类器会决定。该提示不提供跳过同一主机的未来提示的选项。
409 409
410Claude Code 拒绝指向私有、链接本地或云元数据地址的 URL,包括解析为其中之一的主机名。它还拒绝 `sandbox.network.deniedDomains` 中的主机,以及当在托管设置中设置了 [`allowManagedDomainsOnly`](/docs/zh-CN/settings-reference#sandbox-network-allowmanageddomainsonly) 时,任何在托管允许列表之外的主机。410Claude Code 拒绝指向私有、链接本地或云元数据地址的 URL,包括解析为其中之一的主机名。它还拒绝 `sandbox.network.deniedDomains` 中的主机,以及当在托管设置中设置了 [`allowManagedDomainsOnly`](https://code.claude.com/docs/zh-CN/settings-reference#sandbox-network-allowmanageddomainsonly) 时,任何在托管允许列表之外的主机。
411 411
412## NotebookEdit 工具行为412## NotebookEdit 工具行为
413 413
431* **Windows 安装了 Git Bash**:对于 claude.ai 和 Console 账户,该工具默认启用;在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 会话中,设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` 以启用它,或设置 `0` 以关闭它。431* **Windows 安装了 Git Bash**:对于 claude.ai 和 Console 账户,该工具默认启用;在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 会话中,设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` 以启用它,或设置 `0` 以关闭它。
432* **Linux、macOS 和 WSL**:该工具是可选的。432* **Linux、macOS 和 WSL**:该工具是可选的。
433 433
434您的 [PreToolUse hooks](/docs/zh-CN/hooks.md#powershell) 在 `tool_input.command` 中接收该工具的命令字符串,字段与 Bash 工具相同。434您的 [PreToolUse hooks](https://code.claude.com/docs/zh-CN/hooks.md#powershell) 在 `tool_input.command` 中接收该工具的命令字符串,字段与 Bash 工具相同。
435 435
436在检查 shell 命令的 hooks 中匹配 `Bash|PowerShell`;[PowerShell hook 输入部分](/docs/zh-CN/hooks.md#powershell)解释了为什么仅匹配 `Bash` 是不够的。436在检查 shell 命令的 hooks 中匹配 `Bash|PowerShell`;[PowerShell hook 输入部分](https://code.claude.com/docs/zh-CN/hooks.md#powershell)解释了为什么仅匹配 `Bash` 是不够的。
437 437
438### 启用 PowerShell 工具438### 启用 PowerShell 工具
439 439
455 455
456### Bash 拒绝规则也会关闭 PowerShell 工具456### Bash 拒绝规则也会关闭 PowerShell 工具
457 457
458在安装了 Git Bash 的 Windows 上,拒绝 Bash 也会在该会话中关闭 PowerShell 工具。这既适用于限定范围的规则(例如 `Bash(git push *)`),也适用于单独的 `Bash`,并且适用于来自您某个设置文件或 `--disallowedTools` 的规则。Claude Code 这样做是因为 `Bash` 规则不会限制 PowerShell 工具,后者有[自己的权限规则](/docs/zh-CN/permissions.md#powershell)。如果 PowerShell 保持开启,Claude 可能会在其中运行您的规则在 Bash 中所拒绝的内容。458在安装了 Git Bash 的 Windows 上,拒绝 Bash 也会在该会话中关闭 PowerShell 工具。这既适用于限定范围的规则(例如 `Bash(git push *)`),也适用于单独的 `Bash`,并且适用于来自您某个设置文件或 `--disallowedTools` 的规则。Claude Code 这样做是因为 `Bash` 规则不会限制 PowerShell 工具,后者有[自己的权限规则](https://code.claude.com/docs/zh-CN/permissions.md#powershell)。如果 PowerShell 保持开启,Claude 可能会在其中运行您的规则在 Bash 中所拒绝的内容。
459 459
460要在存在 Bash 拒绝规则的同时保持 PowerShell 工具开启,请执行以下任一操作:460要在存在 Bash 拒绝规则的同时保持 PowerShell 工具开启,请执行以下任一操作:
461 461
462* 在您的环境或设置文件的 `env` 块中设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`,如[启用 PowerShell 工具](#enable-the-powershell-tool)中所示。462* 在您的环境或设置文件的 `env` 块中设置 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`,如[启用 PowerShell 工具](#enable-the-powershell-tool)中所示。
463* 向设置文件添加限定范围的 [`PowerShell` 权限规则](/docs/zh-CN/permissions#powershell),例如 `PowerShell(git push *)` 拒绝规则。463* 向设置文件添加限定范围的 [`PowerShell` 权限规则](https://code.claude.com/docs/zh-CN/permissions#powershell),例如 `PowerShell(git push *)` 拒绝规则。
464 464
465如果没有其中任何一项,限定范围的 Bash 拒绝规则会保留 Bash 工具可用,而 Claude Code 会在不发出警告的情况下关闭 PowerShell。移除整个 Bash 工具的规则会使 Claude 在该会话中没有任何 shell 工具。465如果没有其中任何一项,限定范围的 Bash 拒绝规则会保留 Bash 工具可用,而 Claude Code 会在不发出警告的情况下关闭 PowerShell。移除整个 Bash 工具的规则会使 Claude 在该会话中没有任何 shell 工具。
466 466
468 468
469三个额外的设置控制 PowerShell 的使用位置:469三个额外的设置控制 PowerShell 的使用位置:
470 470
471* [`settings.json`](/docs/zh-CN/settings-reference#all-settings) 中的 `"defaultShell": "powershell"`:通过 PowerShell 路由交互式 `!` 命令。需要启用 PowerShell 工具。471* [`settings.json`](https://code.claude.com/docs/zh-CN/settings-reference#all-settings) 中的 `"defaultShell": "powershell"`:通过 PowerShell 路由交互式 `!` 命令。需要启用 PowerShell 工具。
472* 单个 [command hooks](/docs/zh-CN/hooks.md#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中运行该 hook。Hooks 直接生成 PowerShell,因此无论 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 如何,这都有效。472* 单个 [command hooks](https://code.claude.com/docs/zh-CN/hooks.md#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中运行该 hook。Hooks 直接生成 PowerShell,因此无论 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 如何,这都有效。
473* [skill frontmatter](/docs/zh-CN/skills.md#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中运行 `` !`command` `` 块。需要启用 PowerShell 工具。473* [skill frontmatter](https://code.claude.com/docs/zh-CN/skills.md#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中运行 `` !`command` `` 块。需要启用 PowerShell 工具。
474 474
475PowerShell 命令遵循与 Bash 命令[相同的主会话工作目录重置行为](#what-persists-between-commands),包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 环境变量。475PowerShell 命令遵循与 Bash 命令[相同的主会话工作目录重置行为](#what-persists-between-commands),包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 环境变量。
476 476
477PowerShell 命令还会接收 hook 通过 `CLAUDE_ENV_FILE` 持久化的变量,具体条件请参阅 [PowerShell 命令中的持久化变量](/docs/zh-CN/hooks.md#persisted-variables-in-powershell-commands)。需要 Claude Code v2.1.296 或更高版本。477PowerShell 命令还会接收 hook 通过 `CLAUDE_ENV_FILE` 持久化的变量,具体条件请参阅 [PowerShell 命令中的持久化变量](https://code.claude.com/docs/zh-CN/hooks.md#persisted-variables-in-powershell-commands)。需要 Claude Code v2.1.296 或更高版本。
478 478
479### PowerShell 中搜索和 `git diff` 的退出码 1479### PowerShell 中搜索和 `git diff` 的退出码 1
480 480
481如果 Claude 在 PowerShell 工具中运行的 `grep` 或 `rg` 搜索没有匹配到任何内容并显示 `Error: Exit code 1`,则该搜索并未失败。您无需执行任何操作。当搜索是较长命令的一部分时,可能会出现此错误。例如,当 `rg` 以退出码 1 退出时,`rg foo | Out-Null` 会显示该错误,而 `rg foo` 不会。481如果 Claude 在 PowerShell 工具中运行的 `grep` 或 `rg` 搜索没有匹配到任何内容并显示 `Error: Exit code 1`,则该搜索并未失败。您无需执行任何操作。当搜索是较长命令的一部分时,可能会出现此错误。例如,当 `rg` 以退出码 1 退出时,`rg foo | Out-Null` 会显示该错误,而 `rg foo` 不会。
482 482
483PowerShell 工具可以将来自 `grep`、`rg`、`egrep`、`fgrep`、`findstr`、`git grep` 和 `git diff` 的退出码 1 视为正常结果。这些搜索使用退出码 1 表示没有匹配。对于 `git diff`,退出码 1 表示文件存在差异。在带有 `shell: powershell` 的 skill 中,如果 Claude 运行某条命令时显示该错误,则该命令[被视为失败](/docs/zh-CN/skills.md#when-an-injected-command-fails)。483PowerShell 工具可以将来自 `grep`、`rg`、`egrep`、`fgrep`、`findstr`、`git grep` 和 `git diff` 的退出码 1 视为正常结果。这些搜索使用退出码 1 表示没有匹配。对于 `git diff`,退出码 1 表示文件存在差异。在带有 `shell: powershell` 的 skill 中,如果 Claude 运行某条命令时显示该错误,则该命令[被视为失败](https://code.claude.com/docs/zh-CN/skills.md#when-an-injected-command-fails)。
484 484
485### Windows 编码和退出代码485### Windows 编码和退出代码
486 486
510 510
511 如果 Claude 在大型图像中遗漏了细微的像素级细节,请要求它裁剪您关注的区域,例如通过 Bash 使用 ImageMagick,然后读取裁剪后的图像。511 如果 Claude 在大型图像中遗漏了细微的像素级细节,请要求它裁剪您关注的区域,例如通过 Bash 使用 ImageMagick,然后读取裁剪后的图像。
512 512
513 Read 会拒绝读取大于 128 MB 的图像文件,并返回一个错误,告诉 Claude 调整图像大小或导出一个较小的副本,然后读取该副本。如果 Claude 在遇到该错误后停止而没有这样做,请参阅 [File is too large to read as an image](/docs/zh-CN/errors.md#file-is-too-large-to-read-as-an-image)。513 Read 会拒绝读取大于 128 MB 的图像文件,并返回一个错误,告诉 Claude 调整图像大小或导出一个较小的副本,然后读取该副本。如果 Claude 在遇到该错误后停止而没有这样做,请参阅 [File is too large to read as an image](https://code.claude.com/docs/zh-CN/errors.md#file-is-too-large-to-read-as-an-image)。
514* **PDF**:Claude 完整读取短 `.pdf` 文件。对于超过 10 页的 PDF,它使用 `pages` 参数按范围读取,例如 `"1-5"`,一次最多 20 页。页面范围读取使用 poppler-utils 中的 `pdftoppm` 呈现页面,因此在 macOS 上使用 `brew install poppler` 安装,在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安装。在 Windows 和其他平台上,安装一个将 `pdftoppm` 放在 `PATH` 上的 poppler 构建。没有它,页面范围读取会失败并显示 `pdftoppm is not installed`。514* **PDF**:Claude 完整读取短 `.pdf` 文件。对于超过 10 页的 PDF,它使用 `pages` 参数按范围读取,例如 `"1-5"`,一次最多 20 页。页面范围读取使用 poppler-utils 中的 `pdftoppm` 呈现页面,因此在 macOS 上使用 `brew install poppler` 安装,在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安装。在 Windows 和其他平台上,安装一个将 `pdftoppm` 放在 `PATH` 上的 poppler 构建。没有它,页面范围读取会失败并显示 `pdftoppm is not installed`。
515* **Jupyter 笔记本**:`.ipynb` 文件返回所有单元格及其输出,包括代码、markdown 和可视化。如果笔记本的单元格总量超过 256 KB,或超过 [token 限制](#large-files),则会返回错误。Claude Code 拒绝读取超过 100 MB 的笔记本文件;错误会告诉 Claude 如何改为读取笔记本的一部分,例如使用 shell 命令读取单元格的一个切片。515* **Jupyter 笔记本**:`.ipynb` 文件返回所有单元格及其输出,包括代码、markdown 和可视化。如果笔记本的单元格总量超过 256 KB,或超过 [token 限制](#large-files),则会返回错误。Claude Code 拒绝读取超过 100 MB 的笔记本文件;错误会告诉 Claude 如何改为读取笔记本的一部分,例如使用 shell 命令读取单元格的一个切片。
516 516
517Read 仅读取文件,不读取目录。Claude 使用 shell 命令(如 `ls`)列出目录内容。517Read 仅读取文件,不读取目录。Claude 使用 shell 命令(如 `ls`)列出目录内容。
518 518
519Read 会拒绝读取其视为二进制扩展名的文件,例如 `.xlsx`、`.parquet`、`.heic` 或 `.zip`。被拒绝后 Claude 会继续工作:如果有适用于该文件类型的 skill,错误会建议使用该 skill,否则会建议使用能够读取该格式的 shell 命令或脚本。如果您 [`@` 提及](/docs/zh-CN/common-workflows#reference-files-and-directories)一个被 Read 拒绝的文件,Claude 会收到该文件的路径,但不会收到其内容。519Read 会拒绝读取其视为二进制扩展名的文件,例如 `.xlsx`、`.parquet`、`.heic` 或 `.zip`。被拒绝后 Claude 会继续工作:如果有适用于该文件类型的 skill,错误会建议使用该 skill,否则会建议使用能够读取该格式的 shell 命令或脚本。如果您 [`@` 提及](https://code.claude.com/docs/zh-CN/common-workflows#reference-files-and-directories)一个被 Read 拒绝的文件,Claude 会收到该文件的路径,但不会收到其内容。
520 520
521### 大型文件521### 大型文件
522 522
523Claude 可以读取大于单次 Read 调用所能返回内容的文本文件。默认情况下,单次调用最多返回 25,000 个 token,或您在 [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](/docs/zh-CN/env-vars) 中设置的值,并且会拒绝读取超过 256 KB 的整个文件,因此 Claude 会使用 `offset` 和 `limit` 分页读取较大的文件。在 Claude Code v2.1.296 或更高版本中,Claude 可以在需要时(例如因为您要求读取整个文件)通过设置 `allow_large: true`,在一次调用中读取整个文件或较长的行范围。此类读取的大小依据会话[上下文窗口](/docs/zh-CN/context-window.md)中的剩余空间来确定,而不是依据默认限制。图像、PDF 和笔记本仍保留各自的限制。523Claude 可以读取大于单次 Read 调用所能返回内容的文本文件。默认情况下,单次调用最多返回 25,000 个 token,或您在 [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/zh-CN/env-vars) 中设置的值,并且会拒绝读取超过 256 KB 的整个文件,因此 Claude 会使用 `offset` 和 `limit` 分页读取较大的文件。在 Claude Code v2.1.296 或更高版本中,Claude 可以在需要时(例如因为您要求读取整个文件)通过设置 `allow_large: true`,在一次调用中读取整个文件或较长的行范围。此类读取的大小依据会话[上下文窗口](https://code.claude.com/docs/zh-CN/context-window.md)中的剩余空间来确定,而不是依据默认限制。图像、PDF 和笔记本仍保留各自的限制。
524 524
525当读取超过默认限制时,Claude 收到的内容:525当读取超过默认限制时,Claude 收到的内容:
526 526
540 540
541Claude 将草稿加入队列后,您会在提示上方看到一张卡片,显示草稿的标题。按 `1` 查看草稿,按 `2` 两次按原样发送,或按 `0` 关闭它。被关闭的草稿保留在您的队列中。关闭卡片后,Claude Code 会询问是否关闭 Claude 起草的反馈。一旦您拒绝两次,它就会停止询问。541Claude 将草稿加入队列后,您会在提示上方看到一张卡片,显示草稿的标题。按 `1` 查看草稿,按 `2` 两次按原样发送,或按 `0` 关闭它。被关闭的草稿保留在您的队列中。关闭卡片后,Claude Code 会询问是否关闭 Claude 起草的反馈。一旦您拒绝两次,它就会停止询问。
542 542
543默认情况下,您在一个会话中最多看到三张卡片;Anthropic 可以从服务器调整该限制,无需发布。超过限制后,以及每当您将 [`feedbackDrafts`](/docs/zh-CN/settings-reference#feedbackdrafts) 设置为 `quiet` 时,您只会在提示页脚中看到排队草稿的计数。543默认情况下,您在一个会话中最多看到三张卡片;Anthropic 可以从服务器调整该限制,无需发布。超过限制后,以及每当您将 [`feedbackDrafts`](https://code.claude.com/docs/zh-CN/settings-reference#feedbackdrafts) 设置为 `quiet` 时,您只会在提示页脚中看到排队草稿的计数。
544 544
545### 查看和编辑草稿545### 查看和编辑草稿
546 546
554 554
555### 发送草稿555### 发送草稿
556 556
557当您发送草稿时,Claude Code 以与 `/feedback` 报告相同的方式提交它,具有相同的 [保留期](/docs/zh-CN/data-usage.md#feedback-using-the-%2Ffeedback-command),并从您的机器中删除草稿。当您从卡片发送时,它显示 `✓ Sent`;当您从队列发送时,它关闭并显示收据 ID。557当您发送草稿时,Claude Code 以与 `/feedback` 报告相同的方式提交它,具有相同的 [保留期](https://code.claude.com/docs/zh-CN/data-usage.md#feedback-using-the-%2Ffeedback-command),并从您的机器中删除草稿。当您从卡片发送时,它显示 `✓ Sent`;当您从队列发送时,它关闭并显示收据 ID。
558 558
559报告包含:559报告包含:
560 560
565 565
566Claude Code 在本地草稿中保留您的工作目录,以便它可以找到记录,并且不发送目录。566Claude Code 在本地草稿中保留您的工作目录,以便它可以找到记录,并且不发送目录。
567 567
568在 [零数据保留的组织](/docs/zh-CN/zero-data-retention.md#features-disabled-under-zdr) 中,以及在已应用 [HIPAA 配置](/docs/zh-CN/hipaa-setup.md) 的组织中,Claude Code 会在您的会话中省略 SendFeedback 工具。如果零数据保留组织中的会话仍然提供该工具,草稿保留在您的机器上,发送失败并显示 `Feedback collection is not available for organizations with custom data retention policies.`568在 [零数据保留的组织](https://code.claude.com/docs/zh-CN/zero-data-retention.md#features-disabled-under-zdr) 中,以及在已应用 [HIPAA 配置](https://code.claude.com/docs/zh-CN/hipaa-setup.md) 的组织中,Claude Code 会在您的会话中省略 SendFeedback 工具。如果零数据保留组织中的会话仍然提供该工具,草稿保留在您的机器上,发送失败并显示 `Feedback collection is not available for organizations with custom data retention policies.`
569 569
570### 丢弃或保留草稿570### 丢弃或保留草稿
571 571
572当您丢弃草稿时,Claude Code 从您的机器中删除它。您留在队列中的草稿在 30 天后过期,或在 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays) 更短时过期。队列在所有会话中最多保留 10 份草稿,当 Claude 将第十一份加入队列时,Claude Code 删除最旧的。当您运行 `/exit` 且会话中的草稿仍在队列中时,Claude Code 会询问您是否在退出前查看或丢弃它们。572当您丢弃草稿时,Claude Code 从您的机器中删除它。您留在队列中的草稿在 30 天后过期,或在 [`cleanupPeriodDays`](https://code.claude.com/docs/zh-CN/settings-reference#cleanupperioddays) 更短时过期。队列在所有会话中最多保留 10 份草稿,当 Claude 将第十一份加入队列时,Claude Code 删除最旧的。当您运行 `/exit` 且会话中的草稿仍在队列中时,Claude Code 会询问您是否在退出前查看或丢弃它们。
573 573
574### 关闭 Claude 起草的反馈574### 关闭 Claude 起草的反馈
575 575
576在 `/config` 中将 **Claude-drafted feedback** 设置为 `off`,这会写入 [`feedbackDrafts`](/docs/zh-CN/settings-reference#feedbackdrafts) 设置,或为一个会话设置 [`CLAUDE_CODE_SEND_FEEDBACK=0`](/docs/zh-CN/env-vars)。使用任一方式,Claude 都无法将草稿加入队列。要在没有卡片的情况下继续起草,请改为将 `feedbackDrafts` 设置为 `quiet`。管理员可以在 [托管设置](/docs/zh-CN/managed-settings.md) 中设置 `feedbackDrafts`,这优先于您自己的设置。576在 `/config` 中将 **Claude-drafted feedback** 设置为 `off`,这会写入 [`feedbackDrafts`](https://code.claude.com/docs/zh-CN/settings-reference#feedbackdrafts) 设置,或为一个会话设置 [`CLAUDE_CODE_SEND_FEEDBACK=0`](https://code.claude.com/docs/zh-CN/env-vars)。使用任一方式,Claude 都无法将草稿加入队列。要在没有卡片的情况下继续起草,请改为将 `feedbackDrafts` 设置为 `quiet`。管理员可以在 [托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md) 中设置 `feedbackDrafts`,这优先于您自己的设置。
577 577
578### 没有 Claude 起草反馈的会话578### 没有 Claude 起草反馈的会话
579 579
580Claude Code 在使用 Claude API 而不是云提供商的您自己机器上的交互式终端会话中包含该工具。它在以下情况下省略该工具:580Claude Code 在使用 Claude API 而不是云提供商的您自己机器上的交互式终端会话中包含该工具。它在以下情况下省略该工具:
581 581
582* 非交互式 `-p` 运行和 [Agent SDK](/docs/zh-CN/agent-sdk/overview.md) 会话,这些没有屏幕来查看队列582* 非交互式 `-p` 运行和 [Agent SDK](https://code.claude.com/docs/zh-CN/agent-sdk/overview.md) 会话,这些没有屏幕来查看队列
583* [云会话](/docs/zh-CN/claude-code-on-the-web.md),无法在您的机器上写入队列583* [云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md),无法在您的机器上写入队列
584* [Amazon Bedrock](/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry.md) 上的会话584* [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md)、[Claude Platform on AWS](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md)、[Google Cloud's Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md) 上的会话
585* 您设置 [`CLAUDE_CODE_SEND_FEEDBACK=0`](/docs/zh-CN/env-vars) 或 [`DISABLE_FEEDBACK_COMMAND=1`](/docs/zh-CN/env-vars) 的会话,将 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 设置为任何非空值,或关闭 [功能标志获取](/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)585* 您设置 [`CLAUDE_CODE_SEND_FEEDBACK=0`](https://code.claude.com/docs/zh-CN/env-vars) 或 [`DISABLE_FEEDBACK_COMMAND=1`](https://code.claude.com/docs/zh-CN/env-vars) 的会话,将 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 设置为任何非空值,或关闭 [功能标志获取](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)
586* 已关闭产品反馈的组织、[零数据保留的组织](/docs/zh-CN/zero-data-retention.md#features-disabled-under-zdr),以及已应用 [HIPAA 配置](/docs/zh-CN/hipaa-setup.md) 的组织586* 已关闭产品反馈的组织、[零数据保留的组织](https://code.claude.com/docs/zh-CN/zero-data-retention.md#features-disabled-under-zdr),以及已应用 [HIPAA 配置](https://code.claude.com/docs/zh-CN/hipaa-setup.md) 的组织
587 587
588## Task 工具可用性588## Task 工具可用性
589 589
590Task 跟踪工具 `TaskCreate`、`TaskGet`、`TaskUpdate`、`TaskList` 和 `TodoWrite` 默认仅在 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早的模型上可用。只要这些工具可用,您就会获得四个 Task 工具,或者当您设置 [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/zh-CN/env-vars) 时改为获得 `TodoWrite`。590Task 跟踪工具 `TaskCreate`、`TaskGet`、`TaskUpdate`、`TaskList` 和 `TodoWrite` 默认仅在 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早的模型上可用。只要这些工具可用,您就会获得四个 Task 工具,或者当您设置 [`CLAUDE_CODE_ENABLE_TASKS=0`](https://code.claude.com/docs/zh-CN/env-vars) 时改为获得 `TodoWrite`。
591 591
592在所有其他模型上,Claude Code 会排除这些工具,除非您选择加入。这同样适用于 Claude Code 无法识别的模型 ID,例如通过 [LLM 网关](/docs/zh-CN/llm-gateway)提供的自定义模型名称。在较新的模型上,Claude 可以在没有书面清单的情况下跟踪多步骤工作,而这些工具的定义和提醒会占用上下文。没有这些工具,Claude 在工作时不会向[任务列表](/docs/zh-CN/interactive-mode.md#task-list)添加任何内容。592在所有其他模型上,Claude Code 会排除这些工具,除非您选择加入。这同样适用于 Claude Code 无法识别的模型 ID,例如通过 [LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway)提供的自定义模型名称。在较新的模型上,Claude 可以在没有书面清单的情况下跟踪多步骤工作,而这些工具的定义和提醒会占用上下文。没有这些工具,Claude 在工作时不会向[任务列表](https://code.claude.com/docs/zh-CN/interactive-mode.md#task-list)添加任何内容。
593 593
594如果您想在默认情况下没有这些工具的模型上使用它们,请执行以下操作之一:594如果您想在默认情况下没有这些工具的模型上使用它们,请执行以下操作之一:
595 595
596* 在启动 Claude Code 之前导出 [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/zh-CN/env-vars),例如 `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`。Claude Code 随后会在每个模型和每个提供商上提供相同的工具596* 在启动 Claude Code 之前导出 [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](https://code.claude.com/docs/zh-CN/env-vars),例如 `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`。Claude Code 随后会在每个模型和每个提供商上提供相同的工具
597* 在 [`--allowedTools`](/docs/zh-CN/cli-reference#cli-flags) 中命名其中一个工具,例如 `claude --allowedTools TaskCreate`597* 在 [`--allowedTools`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 中命名其中一个工具,例如 `claude --allowedTools TaskCreate`
598* 在 [`--tools`](/docs/zh-CN/cli-reference#cli-flags) 中列出这些工具,这会将会话的内置工具限制为它命名的工具。将您想要的工具与您使用的其他内置工具一起包括598* 在 [`--tools`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 中列出这些工具,这会将会话的内置工具限制为它命名的工具。将您想要的工具与您使用的其他内置工具一起包括
599* 在 Agent SDK 中,[`allowedTools` 和 `tools` 选项](/docs/zh-CN/agent-sdk/todo-tracking#model-availability)的工作方式与这两个标志相同599* 在 Agent SDK 中,[`allowedTools` 和 `tools` 选项](https://code.claude.com/docs/zh-CN/agent-sdk/todo-tracking#model-availability)的工作方式与这两个标志相同
600 600
601在[后台会话](/docs/zh-CN/agent-view.md)和[云会话](/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 在每个模型上提供相同的工具,无论是否列出。601在[后台会话](https://code.claude.com/docs/zh-CN/agent-view.md)和[云会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md)中,Claude Code 在每个模型上提供相同的工具,无论是否列出。
602
603Claude Code 仅在您的会话拥有这些工具时才会将其提供给子代理,即使子代理运行不同的模型也是如此。进程内[代理团队](/docs/zh-CN/agent-teams.md)队友以相同的方式跟随您的会话,而在其自己的[分割窗格](/docs/zh-CN/agent-teams.md#choose-a-display-mode)中的队友作为单独的 Claude Code 进程运行,因此其自己的模型决定。没有 Task 工具,代理通过消息而不是[共享任务列表](/docs/zh-CN/agent-teams.md#assign-and-claim-tasks)与其团队协调。
604 602
605此处描述的默认集合适用于 Claude Code v2.1.268 及更高版本。603此处描述的默认集合适用于 Claude Code v2.1.268 及更高版本。
606 604
605### 子代理和 agent team 中的 Task 跟踪工具
606
607子代理仅在您的会话拥有 Task 跟踪工具时才拥有这些工具,无论子代理运行什么模型。进程内 [agent team](https://code.claude.com/docs/zh-CN/agent-teams.md) 队友在您的会话拥有 Task 跟踪工具时也拥有这些工具。[分割窗格](https://code.claude.com/docs/zh-CN/agent-teams.md#choose-a-display-mode)队友是一个单独的 Claude Code 进程,它[继承](https://code.claude.com/docs/zh-CN/agent-teams.md#permissions)您的 `--tools` 列表和拒绝规则,但不继承 `--allowedTools`,因此请检查您的设置:
608
609* **没有 `--tools` 列表或拒绝规则,且未为队友设置 `CLAUDE_CODE_ENABLE_TODO_TOOLS`**:队友拥有其自身模型默认具备的 Task 跟踪工具。
610* **在您的 shell 中导出了 `CLAUDE_CODE_ENABLE_TODO_TOOLS`**:Claude Code 会向队友传递一组固定的环境变量,其中不包括您导出的那个变量。若要同时为队友设置该变量,请在 shell 中运行 `claude --settings '{"env":{"CLAUDE_CODE_ENABLE_TODO_TOOLS":"1"}}'` 来启动会话。队友也会获得您的 [`--settings`](https://code.claude.com/docs/zh-CN/settings#change-a-setting-for-one-session) 值。
611* **`--tools` 中命名了 Task 跟踪工具**:队友在任何模型上都拥有这些工具。
612* **某个 Task 跟踪工具未包含在 `--tools` 中或在拒绝规则中被命名**:队友不具备该工具。
613
614没有 Task 工具时,Agent 通过消息而不是[共享任务列表](https://code.claude.com/docs/zh-CN/agent-teams.md#assign-and-claim-tasks)与其团队协调。
615
607## WebFetch 工具行为616## WebFetch 工具行为
608 617
609WebFetch 接收一个 URL 和一个描述要提取内容的提示词。它获取页面,当服务器返回 HTML 时将响应转换为 Markdown。对于大多数获取操作,它随后会在单独的模型调用中针对内容运行该提示词,Claude 接收的是该调用的结果,而不是原始页面。转换步骤不可配置。618WebFetch 接收一个 URL 和一个描述要提取内容的提示词。它获取页面,当服务器返回 HTML 时将响应转换为 Markdown。对于大多数获取操作,它随后会在单独的模型调用中针对内容运行该提示词,Claude 接收的是该调用的结果,而不是原始页面。转换步骤不可配置。
612 621
613几个行为塑造了 Claude 接收的响应:622几个行为塑造了 Claude 接收的响应:
614 623
615* WebFetch 拒绝 `localhost` 和任何其他没有点的主机名,例如裸露的内网名称,在发出请求之前。它返回的[错误](/docs/zh-CN/errors.md#webfetch-cannot-fetch-localhost)告诉 Claude 通过 Bash 使用 `curl` 到达本地服务器。624* WebFetch 拒绝 `localhost` 和任何其他没有点的主机名,例如裸露的内网名称,在发出请求之前。它返回的[错误](https://code.claude.com/docs/zh-CN/errors.md#webfetch-cannot-fetch-localhost)告诉 Claude 通过 Bash 使用 `curl` 到达本地服务器。
616* HTTP URL 会自动升级到 HTTPS。625* HTTP URL 会自动升级到 HTTPS。
617* WebFetch 每次调用最多读取页面内容的 100,000 个字符。在 Claude Code v2.1.290 或更高版本上,对于更长的页面,结果会告知 Claude 有多少内容未被读取,以便 Claude 可以获取下一部分。626* WebFetch 每次调用最多读取页面内容的 100,000 个字符。在 Claude Code v2.1.290 或更高版本上,对于更长的页面,结果会告知 Claude 有多少内容未被读取,以便 Claude 可以获取下一部分。
618* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。627* 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 保留每个响应的时长。
619* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。628* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](https://code.claude.com/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。
620* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。629* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。
621* 当提取步骤遇到过载的 API 时,Claude Code 会使用退避重试它;仍然失败的获取会返回错误结果。630* 当提取步骤遇到过载的 API 时,Claude Code 会使用退避重试它;仍然失败的获取会返回错误结果。
622 631
623在 Manual 和 `acceptEdits` [权限模式](/docs/zh-CN/permission-modes.md)中,WebFetch 在获取前提示,除了您的[权限规则](/docs/zh-CN/permissions.md#manage-permissions)已允许或拒绝的域以及一组内置的预批准文档域,这些域无需提示即可获取。无论您的规则允许什么,获取也必须首先通过 [WebFetch 域安全检查](/docs/zh-CN/data-usage.md#webfetch-domain-safety-check);该部分涵盖检查发送的内容和跳过它的设置。提示提供三个选项:632在 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);该部分涵盖检查发送的内容和跳过它的设置。提示提供三个选项:
624 633
625* **是**:仅批准此获取。下一个 WebFetch 调用会再次提示,即使是同一域。634* **是**:仅批准此获取。下一个 WebFetch 调用会再次提示,即使是同一域。
626* **是,不再询问 `<domain>`**:批准获取并为该域保存一个 `WebFetch(domain:...)` 允许规则到该存储库的 `.claude/settings.local.json`。请参阅[保存的批准如何持久化](/docs/zh-CN/permissions.md#permission-system)。当您的组织设置 [`allowManagedPermissionRulesOnly`](/docs/zh-CN/permissions#managed-only-settings) 时,Claude Code 隐藏此选项。635* **是,不再询问 `<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 隐藏此选项。
627* **否,并告诉 Claude 应该如何不同地做**:拒绝获取。636* **否,并告诉 Claude 应该如何不同地做**:拒绝获取。
628 637
629要提前允许一个域而不提示,添加一个允许规则,如 `WebFetch(domain:example.com)`;`WebFetch(domain:*)` 允许每个域。`auto` 和 `bypassPermissions` [权限模式](/docs/zh-CN/permissions.md#permission-modes)跳过提示,除非显式 `ask` 规则匹配一个域。638要提前允许一个域而不提示,添加一个允许规则,如 `WebFetch(domain:example.com)`;`WebFetch(domain:*)` 允许每个域。`auto` 和 `bypassPermissions` [权限模式](https://code.claude.com/docs/zh-CN/permissions.md#permission-modes)跳过提示,除非显式 `ask` 规则匹配一个域。
630 639
631`deny`、`ask` 或 `allow` 中的显式 `WebFetch(domain:...)` 规则优先于预批准集,所以您可以阻止预批准域或要求对其进行提示。640`deny`、`ask` 或 `allow` 中的显式 `WebFetch(domain:...)` 规则优先于预批准集,所以您可以阻止预批准域或要求对其进行提示。
632 641
633当 URL 是 claude.ai [Artifact](/docs/zh-CN/artifacts.md) 链接时,Claude Code 还可能请求批准以读取该 Artifact 本身。有关会请求批准的情况,请参阅[读取与您共享的 Artifact](/docs/zh-CN/artifacts.md#read-an-artifact-shared-with-you)。642当 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)。
634 643
635WebFetch 设置一个以 `Claude-User` 开头的 `User-Agent` 标头,以及一个 `Accept` 标头,优先选择 Markdown 而不是 HTML,以便支持内容协商的服务器可以直接返回 Markdown。644WebFetch 设置一个以 `Claude-User` 开头的 `User-Agent` 标头,以及一个 `Accept` 标头,优先选择 Markdown 而不是 HTML,以便支持内容协商的服务器可以直接返回 Markdown。
636 645
637沙箱化命令不继承 WebFetch 的内置预批准文档域集。要让沙箱化命令无需提示即可到达一个域,将域添加到 [`allowedDomains`](/docs/zh-CN/settings-reference#sandbox-network-alloweddomains) 或使用 `WebFetch(domain:...)` 规则允许它,[沙箱也遵守](/docs/zh-CN/sandboxing.md#network-isolation)该规则。WebFetch 反过来从不读取沙箱允许列表,所以将域添加到沙箱或组织网络允许列表不会阻止 WebFetch 对其进行提示。646沙箱化命令不继承 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 对其进行提示。
638 647
639### WebFetch 可用性648### WebFetch 可用性
640 649
641在 Claude Code v2.1.285 或更高版本上,设置 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](/docs/zh-CN/env-vars#variables) 为 `1` 以关闭 WebFetch。650在 Claude Code v2.1.285 或更高版本上,设置 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](https://code.claude.com/docs/zh-CN/env-vars#variables) 为 `1` 以关闭 WebFetch。
642 651
643如果您使用 Team 或 Enterprise claude.ai 账户登录,并且不通过 [LLM gateway](/docs/zh-CN/llm-gateway) 连接,WebFetch 也取决于您的组织政策,Claude Code 在会话启动时从 `api.anthropic.com` 请求该政策。对于 Claude Code 无法确定计划的会话也是如此,例如在另一个应用提供的 claude.ai 令牌下运行的会话。652如果您使用 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 令牌下运行的会话。
644 653
645如果 WebFetch 在会话中缺失,在会话中运行 `/status`。如果其 `Organization policy` 行报告政策未加载并在等待它的功能中列出网络获取,Claude Code 正在保留 WebFetch,直到它可以确认您的组织允许它。在会话外,`claude doctor` 进行自己的请求并打印相同的行。一旦允许 WebFetch 的政策加载,该工具返回而无需重启。654如果 WebFetch 在会话中缺失,在会话中运行 `/status`。如果其 `Organization policy` 行报告政策未加载并在等待它的功能中列出网络获取,Claude Code 正在保留 WebFetch,直到它可以确认您的组织允许它。在会话外,`claude doctor` 进行自己的请求并打印相同的行。一旦允许 WebFetch 的政策加载,该工具返回而无需重启。
646 655
654 663
655WebSearch 权限规则不需要指定符。`allow` 或 `deny` 中的单独 `WebSearch` 条目是唯一的形式。664WebSearch 权限规则不需要指定符。`allow` 或 `deny` 中的单独 `WebSearch` 条目是唯一的形式。
656 665
657搜索后端不可配置。要使用不同的提供商进行搜索,请添加一个[MCP 服务器](/docs/zh-CN/mcp.md)来公开搜索工具。666搜索后端不可配置。要使用不同的提供商进行搜索,请添加一个[MCP 服务器](https://code.claude.com/docs/zh-CN/mcp.md)来公开搜索工具。
658 667
659> [!NOTE]668> [!NOTE]
660>669>
661> WebSearch 在 Claude API、[AWS 上的 Claude Platform](/docs/zh-CN/claude-platform-on-aws.md) 和 Microsoft Foundry 上可用。在 Google Cloud 的 Agent Platform 上,它适用于 Opus 4、Sonnet 4、Haiku 4.5 及更高版本的模型。Amazon Bedrock 不公开服务器端网络搜索工具。670> WebSearch 在 Claude API、[AWS 上的 Claude Platform](https://code.claude.com/docs/zh-CN/claude-platform-on-aws.md) 和 Microsoft Foundry 上可用。在 Google Cloud 的 Agent Platform 上,它适用于 Opus 4、Sonnet 4、Haiku 4.5 及更高版本的模型。Amazon Bedrock 不公开服务器端网络搜索工具。
662 671
663### 会话搜索限制672### 会话搜索限制
664 673
665一个交互式终端会话最多可以进行 200 次 WebSearch 调用。来自主对话和[子代理](/docs/zh-CN/sub-agents.md)的搜索(例如并行研究扇出)计入同一限制。674一个交互式终端会话最多可以进行 200 次 WebSearch 调用。来自主对话和[子代理](https://code.claude.com/docs/zh-CN/sub-agents.md)的搜索(例如并行研究扇出)计入同一限制。
666 675
667当会话达到限制时,搜索在对话中显示为未执行任何操作的调用。Claude 会收到一个通知,告诉它继续使用已经收集的信息,在回答中说明这一点,并且如果需要更多搜索,则要求您提高限制。676当会话达到限制时,搜索在对话中显示为未执行任何操作的调用。Claude 会收到一个通知,告诉它继续使用已经收集的信息,在回答中说明这一点,并且如果需要更多搜索,则要求您提高限制。
668 677
669要获得更多搜索次数,请提高上限、等待限制恢复,或开始新的对话:678要获得更多搜索次数,请提高上限、等待限制恢复,或开始新的对话:
670 679
671* **提高上限**:将 [`CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`](/docs/zh-CN/env-vars#variables) 环境变量设置为正整数,例如 `500`。上限可以提高但不能关闭。680* **提高上限**:将 [`CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`](https://code.claude.com/docs/zh-CN/env-vars#variables) 环境变量设置为正整数,例如 `500`。上限可以提高但不能关闭。
672* **等待恢复**:在 Claude Code v2.1.290 或更高版本中,交互式终端会话的限制大约每小时恢复 100 次调用。要更改该速率,请将 [`CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR`](/docs/zh-CN/env-vars#variables) 设置为每小时的调用次数,例如 `50`。681* **等待恢复**:在 Claude Code v2.1.290 或更高版本中,交互式终端会话的限制大约每小时恢复 100 次调用。要更改该速率,请将 [`CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR`](https://code.claude.com/docs/zh-CN/env-vars#variables) 设置为每小时的调用次数,例如 `50`。
673* **开始新的对话**:在 Claude Code 提示符处运行 [`/clear`](/docs/zh-CN/commands#all-commands) 也会重置计数。如果仍然可以生成子代理的工作(例如正在运行的工作流)在清除后继续存在,计数会改为继续累计。682* **开始新的对话**:在 Claude Code 提示符处运行 [`/clear`](https://code.claude.com/docs/zh-CN/commands#all-commands) 也会重置计数。如果仍然可以生成子代理的工作(例如正在运行的工作流)在清除后继续存在,计数会改为继续累计。
674 683
675在使用 `-p` 的[非交互模式](/docs/zh-CN/headless.md)下以及在 [Agent SDK](/docs/zh-CN/agent-sdk/overview.md) 中,该限制按轮次而非按会话计算。一个轮次从您发送一条消息开始,直到 Claude 完成响应为止。当您在此之后发送下一条消息或开始新的 `claude -p` 运行时,限制会重置,即使使用 [`--continue` 或 `--resume`](/docs/zh-CN/headless#continue-conversations) 也是如此。如需更多搜索次数,请提高 [`CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`](/docs/zh-CN/env-vars#variables),或使用 [`CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR`](/docs/zh-CN/env-vars#variables) 设置恢复速率。684在使用 `-p` 的[非交互模式](https://code.claude.com/docs/zh-CN/headless.md)下以及在 [Agent SDK](https://code.claude.com/docs/zh-CN/agent-sdk/overview.md) 中,该限制按轮次而非按会话计算。一个轮次从您发送一条消息开始,直到 Claude 完成响应为止。当您在此之后发送下一条消息或开始新的 `claude -p` 运行时,限制会重置,即使使用 [`--continue` 或 `--resume`](https://code.claude.com/docs/zh-CN/headless#continue-conversations) 也是如此。如需更多搜索次数,请提高 [`CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`](https://code.claude.com/docs/zh-CN/env-vars#variables),或使用 [`CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR`](https://code.claude.com/docs/zh-CN/env-vars#variables) 设置恢复速率。
676 685
677## Write tool 行为686## Write tool 行为
678 687
702 711
703> [!NOTE]712> [!NOTE]
704>713>
705> [advisor tool](/docs/zh-CN/advisor.md) 是一个 [server tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool),由 API 运行,而不是 Claude Code 实现的工具。它没有您可以在权限规则或 hook 匹配器中引用的名称。714> [advisor tool](https://code.claude.com/docs/zh-CN/advisor.md) 是一个 [server tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool),由 API 运行,而不是 Claude Code 实现的工具。它没有您可以在权限规则或 hook 匹配器中引用的名称。
706 715
707## 另请参阅716## 另请参阅
708 717
709* [MCP servers](/docs/zh-CN/mcp.md):通过连接外部服务器添加自定义工具718* [MCP servers](https://code.claude.com/docs/zh-CN/mcp.md):通过连接外部服务器添加自定义工具
710* [权限](/docs/zh-CN/permissions.md):权限系统、规则语法和工具特定模式719* [权限](https://code.claude.com/docs/zh-CN/permissions.md):权限系统、规则语法和工具特定模式
711* [Subagents](/docs/zh-CN/sub-agents.md):为 subagents 配置工具访问720* [Subagents](https://code.claude.com/docs/zh-CN/sub-agents.md):为 subagents 配置工具访问
712* [Hooks](/docs/zh-CN/hooks-guide.md):在工具执行前后运行自定义命令721* [Hooks](https://code.claude.com/docs/zh-CN/hooks-guide.md):在工具执行前后运行自定义命令