Claude Code 可以访问一组内置工具,帮助它理解和修改您的代码库。工具名称是您在权限规则、subagent 工具列表和 hook 匹配器中使用的确切字符串。要完全禁用某个工具,请将其名称添加到权限设置中的Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
deny 数组。
要添加自定义工具,请连接一个 MCP server。要使用可重用的基于提示的工作流扩展 Claude,请编写一个 skill,它通过现有的 Skill 工具运行,而不是添加新的工具条目。
| 工具 | 描述 | 需要权限 |
|---|---|---|
Agent | 生成一个具有自己 context window 的 subagent,用于处理任务。请参阅 Agent 工具行为 | 否 |
AskUserQuestion | 提出多选问题以收集需求或澄清歧义 | 否 |
Bash | 在您的环境中执行 shell 命令。请参阅 Bash 工具行为 | 是 |
CronCreate | 在当前会话中安排定期或一次性提示。任务是会话范围的,在 --resume 或 --continue 时如果未过期则会恢复。请参阅计划任务 | 否 |
CronDelete | 按 ID 取消计划任务 | 否 |
CronList | 列出会话中的所有计划任务 | 否 |
Edit | 对特定文件进行有针对性的编辑。请参阅 Edit 工具行为 | 是 |
EnterPlanMode | 切换到 Plan Mode 以在编码前设计方法 | 否 |
EnterWorktree | 创建一个隔离的 git worktree 并切换到它。传递 path 以切换到当前存储库的现有 worktree,而不是创建新的。不适用于 subagents | 否 |
ExitPlanMode | 提出计划以供批准并退出 Plan Mode | 是 |
ExitWorktree | 退出 worktree 会话并返回到原始目录。不适用于 subagents | 否 |
Glob | 基于模式匹配查找文件。请参阅 Glob 工具行为 | 否 |
Grep | 在文件内容中搜索模式。请参阅 Grep 工具行为 | 否 |
ListMcpResourcesTool | 列出连接的 MCP servers 公开的资源 | 否 |
LSP | 通过语言服务器进行代码智能:跳转到定义、查找引用、报告类型错误和警告。请参阅 LSP 工具行为 | 否 |
Monitor | 在后台运行命令并将每个输出行反馈给 Claude,以便它可以对日志条目、文件更改或轮询状态做出反应。请参阅 Monitor 工具 | 是 |
NotebookEdit | 修改 Jupyter notebook 单元格。请参阅 NotebookEdit 工具行为 | 是 |
PowerShell | 本地执行 PowerShell 命令。请参阅 PowerShell 工具了解可用性 | 是 |
PushNotification | 发送桌面通知,以及当 Remote Control 已连接时发送手机推送,以便长时间运行的任务或计划任务可以在您离开时联系您。推送传递通过 Anthropic 托管的基础设施运行,该基础设施无法从 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 访问 | 否 |
Read | 读取文件内容。请参阅 Read 工具行为 | 否 |
ReadMcpResourceTool | 按 URI 读取特定 MCP 资源 | 否 |
RemoteTrigger | 在 claude.ai 上创建、更新、运行和列出 Routines。支持 /schedule 命令。Routines 存在于 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 计划,因此此工具无法从 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 访问 | 否 |
SendMessage | 向 agent team 队友发送消息,或按 agent ID 恢复 subagent。已停止的 subagents 在后台自动恢复。仅当设置了 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 时可用 | 否 |
ShareOnboardingGuide | 上传 ONBOARDING.md 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 /team-onboarding 调用。适用于 Pro、Max、Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |
Skill | 在主对话中执行 skill | 是 |
TaskCreate | 在任务列表中创建新任务 | 否 |
TaskGet | 检索特定任务的完整详细信息 | 否 |
TaskList | 列出所有任务及其当前状态 | 否 |
TaskOutput | (已弃用)检索后台任务的输出。优先使用 Read 读取任务的输出文件路径 | 否 |
TaskStop | 按 ID 终止运行中的后台任务 | 否 |
TaskUpdate | 更新任务状态、依赖项、详细信息或删除任务 | 否 |
TeamCreate | 创建一个具有多个队友的 agent team。仅当设置了 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 时可用 | 否 |
TeamDelete | 解散 agent team 并清理队友进程。仅当设置了 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 时可用 | 否 |
TodoWrite | 管理会话任务清单。在非交互模式和 Agent SDK 中可用;交互式会话改用 TaskCreate、TaskGet、TaskList 和 TaskUpdate | 否 |
ToolSearch | 当启用 tool search 时搜索并加载延迟工具 | 否 |
WebFetch | 从指定 URL 获取内容。请参阅 WebFetch 工具行为 | 是 |
WebSearch | 执行网络搜索。请参阅 WebSearch 工具行为 | 是 |
Write | 创建或覆盖文件。请参阅 Write 工具行为 | 是 |
使用权限规则和 hooks 配置工具
在大多数情况下,Claude 决定何时使用这些工具,您在与 Claude 交互时不需要自己命名它们。当定义权限和其他配置时,您直接引用工具名称:- 在设置中的
permissions.allow和permissions.deny,以及/permissions界面 - 在 CLI 标志中的
--allowedTools和--disallowedTools - 在 Agent SDK 的
allowedTools和disallowedTools选项中 - 在 subagent 的
tools或disallowedToolsfrontmatter 中 - 在 skill 的
allowed-toolsfrontmatter 中 - 在 hook 的
if条件中
ToolName(specifier)。specifier 取决于工具,几个工具共享一种格式:
| 规则格式 | 适用于 | 详情 |
|---|---|---|
Bash(npm run *) | Bash、Monitor | 命令模式匹配 |
PowerShell(Get-ChildItem *) | PowerShell | 命令模式匹配 |
Read(~/secrets/**) | Read、Grep、Glob、LSP | 路径模式匹配 |
Edit(/src/**) | Edit、Write、NotebookEdit | 路径模式匹配 |
Skill(deploy *) | Skill | Skill 名称匹配 |
Agent(Explore) | Agent | Subagent 类型匹配 |
WebFetch(domain:example.com) | WebFetch | 域名匹配 |
WebSearch | WebSearch | 无 specifier;允许或拒绝整个工具 |
ExitPlanMode 或 ShareOnboardingGuide,仅接受不带 specifier 的裸工具名称。
Edit(...) 允许规则也授予对相同路径的读取访问权限,因此您不需要匹配的 Read(...) 规则。
Hook matcher 字段使用裸工具名称,而不是带括号的规则格式。请参阅匹配器模式了解匹配规则。对于每个工具在 hooks 中传递给 tool_input 的字段名称,请参阅 PreToolUse 输入参考。
Agent 工具行为
Agent 工具在单独的 context window 中生成一个 subagent。subagent 自主地完成其任务,然后向父对话返回单个文本结果。父对话看不到 subagent 的中间工具调用或输出,只看到最终结果。要限制 subagent 运行的轮数,请在 subagent 定义中设置maxTurns。
同一个 Agent 工具也在启用 fork 模式时启动分叉 subagents。fork 继承完整的父对话,而不是从头开始,始终在后台运行,并且仍然在您的终端中显示权限提示。本节的其余部分描述命名的 subagents。
命名的 subagent 可以使用哪些工具取决于 subagent 定义中的 tools 和 disallowedTools 字段:
- 两个字段都未设置:subagent 继承父对话可用的每个工具。
- 仅设置
tools:subagent 仅获得列出的工具。 - 仅设置
disallowedTools:subagent 获得除列出的工具外的每个父工具。 - 两个都设置:
disallowedTools优先。同时列在两个中的工具会被移除。
- 前台 subagents 显示您在主对话中会看到的相同权限提示,在每个工具调用发生时。
- 后台 subagents 不显示提示。它们使用会话中已授予的权限运行,并自动拒绝任何会提示的工具调用。拒绝后,subagent 继续运行而不使用该工具。
tools 字段,将 Bash 排除在列表之外,或在设置中设置拒绝规则,如控制 subagent 功能中所述。有关选择前台或后台的更多信息,请参阅在前台或后台运行 subagents。
Bash 工具行为
Bash 工具在单独的进程中运行每个命令,具有以下持久性行为:- 当 Claude 在主会话中运行
cd时,只要它保持在项目目录内或您使用--add-dir、/add-dir或设置中的additionalDirectories添加的额外工作目录内,新的工作目录就会延续到后续的 Bash 命令。Subagent 会话永远不会延续工作目录更改。- 如果
cd落在这些目录之外,Claude Code 会重置为项目目录,并将Shell cwd was reset to <dir>附加到工具结果。 - 要禁用此延续,使每个 Bash 命令都在项目目录中启动,请设置
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1。
- 如果
- 环境变量不持久。一个命令中的
export在下一个命令中将不可用。
CLAUDE_ENV_FILE 设置为 shell 脚本,或使用 SessionStart hook 动态填充它。
两个限制限制每个命令:
- 超时:默认为两分钟。Claude 可以使用
timeout参数请求每个命令最多 10 分钟。使用BASH_DEFAULT_TIMEOUT_MS和BASH_MAX_TIMEOUT_MS覆盖默认值和上限。 - 输出长度:默认为 30,000 个字符。当命令产生超过该数量的输出时,Claude Code 将完整输出保存到会话目录中的文件,并给 Claude 文件路径加上开头的简短预览。Claude 在需要其余部分时读取或搜索该文件。使用
BASH_MAX_OUTPUT_LENGTH提高限制,最高为 150,000 个字符的硬上限。
run_in_background: true 以将命令作为后台任务启动并在其运行时继续工作。使用 /tasks 列出和停止后台任务。
Edit 工具行为
Edit 工具执行精确的字符串替换。它接受old_string 和 new_string 并用后者替换前者。它不使用正则表达式或模糊匹配。
三个检查必须通过才能应用编辑:
- 编辑前读取:Claude 必须在当前对话中读取过该文件,并且该文件在该读取后不能在磁盘上更改。此检查首先运行,在任何字符串匹配之前。
- 匹配:
old_string必须在文件中完全按照编写的方式出现。单个空格或缩进差异足以导致不匹配。 - 唯一性:
old_string必须恰好出现一次。当它出现多次时,Claude 要么提供一个更长的字符串,其中包含足够的周围上下文来确定一个出现,要么设置replace_all: true来替换所有出现。
cat path/to/file 或 sed -n 'X,Yp' path/to/file 在单个文件上,没有管道或重定向时。其他 Bash 命令,例如 head、tail 或管道输出不计数,Claude 在这些情况下必须在编辑前使用 Read。
这仅影响编辑资格,不影响权限。Read 和 Edit 拒绝规则也适用于 Claude Code 在 Bash 中识别的文件命令,例如 cat、head、tail 和 sed,但不适用于间接读取或写入文件的任意子进程,例如自己打开文件的 Python 或 Node 脚本。对于覆盖每个进程的操作系统级别强制,请启用沙箱。
Glob 工具行为
Glob 工具按名称模式查找文件。它支持标准 glob 语法,包括** 用于递归目录匹配:
**/*.js匹配任何深度的所有.js文件src/**/*.ts匹配src/下的所有.ts文件*.{json,yaml}匹配当前目录中的.json和.yaml文件
.gitignore,因此它找到被 gitignore 的文件以及跟踪的文件。这与Grep 不同,后者跳过被 gitignore 的文件。要使 Glob 尊重 .gitignore,请在启动 Claude Code 之前设置 CLAUDE_CODE_GLOB_NO_IGNORE=false。
Grep 工具行为
Grep 工具在文件内容中搜索模式。Glob 按名称查找文件,Grep 在文件内查找行。 Grep 基于 ripgrep 并使用 ripgrep 的正则表达式语法,而不是 POSIX grep。包含正则表达式元字符的模式需要转义。例如,在 Go 代码中查找interface{} 需要模式 interface\{\}。
三种输出模式控制返回的内容:
files_with_matches:仅文件路径,无行内容。这是默认值。content:匹配的行及其文件和行号。count:每个文件的匹配计数。
glob 参数(例如 **/*.tsx)按文件范围结果,或使用 type 参数(例如 py 或 rust)按语言范围结果。默认情况下,模式在单行内匹配。Claude 可以设置 multiline: true 以跨行边界匹配。
Grep 尊重 .gitignore,因此被 gitignore 的文件会被跳过。要搜索被 gitignore 的文件,Claude 直接传递其路径。
LSP 工具行为
LSP 工具为 Claude 提供来自运行中的语言服务器的代码智能。在每次文件编辑后,它会自动报告类型错误和警告,以便 Claude 可以在没有单独构建步骤的情况下修复问题。Claude 还可以直接调用它来导航代码:- 跳转到符号的定义
- 查找对符号的所有引用
- 获取位置处的类型信息
- 列出文件或工作区中的符号
- 查找接口的实现
- 追踪调用层次结构
Monitor 工具
Monitor 工具需要 Claude Code v2.1.98 或更高版本。
- 跟踪日志文件并在错误出现时标记它们
- 轮询 PR 或 CI 作业并在其状态更改时报告
- 监视目录以查找文件更改
- 跟踪您指向的任何长时间运行脚本的输出
allow 和 deny 模式也适用于此处。它在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上不可用。当设置了 DISABLE_TELEMETRY 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 时,它也不可用。
插件可以声明在插件处于活动状态时自动启动的监视,而不是要求 Claude 启动它们。请参阅 plugin monitors。
NotebookEdit 工具行为
NotebookEdit 一次修改一个 Jupyter notebook 单元格,按其cell_id 定位单元格。它不像 Edit 在纯文本文件上那样在整个 notebook 中执行字符串替换。
三种编辑模式控制目标单元格发生的情况:
replace:覆盖单元格的源。这是默认值。insert:在目标后添加新单元格。没有cell_id时,新单元格位于 notebook 的开始。需要cell_type设置为code或markdown。delete:删除目标单元格。
Edit(...) 路径格式。像 Edit(notebooks/**) 这样的规则涵盖该目录中的 NotebookEdit 调用。
PowerShell 工具
PowerShell 工具让 Claude 本地运行 PowerShell 命令。在 Windows 上,这意味着命令在 PowerShell 中运行,而不是通过 Git Bash 路由。在没有 Git Bash 的 Windows 上,该工具会自动启用。在安装了 Git Bash 的 Windows 上,该工具正在逐步推出。在 Linux、macOS 和 WSL 上,该工具是选择加入的。启用 PowerShell 工具
在您的环境或settings.json 中设置 CLAUDE_CODE_USE_POWERSHELL_TOOL=1:
0 以选择退出推出。在 Linux、macOS 和 WSL 上,该工具需要 PowerShell 7 或更高版本:安装 pwsh 并确保它在您的 PATH 中。
在 Windows 上,Claude Code 自动检测 pwsh.exe(PowerShell 7+),回退到 powershell.exe(PowerShell 5.1)。启用该工具后,Claude 将 PowerShell 视为主 shell。当安装了 Git Bash 时,Bash 工具仍可用于 POSIX 脚本。
设置、hooks 和 skills 中的 shell 选择
三个额外的设置控制 PowerShell 的使用位置:settings.json中的"defaultShell": "powershell":通过 PowerShell 路由交互式!命令。需要启用 PowerShell 工具。- 单个 command hooks 上的
"shell": "powershell":在 PowerShell 中运行该 hook。Hooks 直接生成 PowerShell,因此无论CLAUDE_CODE_USE_POWERSHELL_TOOL如何,这都有效。 - skill frontmatter 中的
shell: powershell:在 PowerShell 中运行!`command`块。需要启用 PowerShell 工具。
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR 环境变量。
预览限制
PowerShell 工具在预览期间有以下已知限制:- PowerShell 配置文件未加载
- 在 Windows 上,不支持 sandboxing
Read 工具行为
Read 工具接受文件路径并返回带有行号的内容。Claude 被指示始终传递绝对路径。 默认情况下,Read 从开始返回文件。超过大小阈值的文件返回错误而不是部分内容,提示 Claude 使用offset 和 limit 重试以读取特定范围。
Read 处理纯文本之外的几种文件类型:
- 图像:PNG、JPG 和其他图像格式作为 Claude 可以看到的视觉内容返回,而不是原始字节。Claude Code 在发送前调整大小并重新压缩大图像以适应模型的图像大小限制,因此 Claude 可能会看到大截图的缩小版本。如果 Claude 在大图像中遗漏了细微的像素级细节,请要求它首先裁剪感兴趣的区域,例如使用 ImageMagick 通过 Bash。
- PDFs:Claude 完整读取短
.pdf文件。对于超过 10 页的 PDFs,它使用pages参数(例如"1-5")按范围读取,一次最多 20 页。 - Jupyter notebooks:
.ipynb文件返回所有单元格及其输出,包括代码、markdown 和可视化。
ls 列出目录内容。
WebFetch 工具行为
WebFetch 接受 URL 和描述要提取内容的提示。它获取页面,当服务器返回 HTML 时将响应转换为 Markdown,并使用小型快速模型针对内容运行提示。对于大多数获取,Claude 接收该模型的答案,而不是原始页面。转换步骤不可配置。 这使 WebFetch 在设计上是有损的。提取提示确定到达 Claude 的内容,因此说页面不提及某内容的结果可能只意味着提示没有询问它。要求 Claude 使用更具体的提示再次获取,或通过 Bash 使用curl 获取未处理的页面。
几种行为塑造 Claude 接收的响应:
- HTTP URLs 自动升级到 HTTPS。
- 大页面在处理前被截断到固定字符限制。
- 响应缓存 15 分钟,因此相同 URL 的重复获取快速返回。
- 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。
acceptEdits 权限模式中,WebFetch 在首次到达新域时提示。要提前允许域而不提示,请添加像 WebFetch(domain:example.com) 这样的权限规则。auto 和 bypassPermissions 权限模式完全跳过提示。
WebFetch 设置以 Claude-User 开头的 User-Agent 标头,以及优先 Markdown 而不是 HTML 的 Accept 标头,以便支持内容协商的服务器可以直接返回 Markdown。Sandbox 网络规则单独配置,因此您希望沙箱进程到达的域仍然需要显式沙箱权限规则。
WebSearch 工具行为
WebSearch 针对 Anthropic 的网络搜索后端运行查询,并返回结果标题和 URLs。它不获取结果页面。要读取 Claude 在搜索结果中找到的页面,它使用 WebFetch 进行后续操作。 该工具可能在返回结果之前发出最多八个后端搜索,在内部优化搜索。Claude 可以使用allowed_domains 范围结果以仅包含某些主机,或使用 blocked_domains 排除它们。这两个列表不能在单个调用中组合。
搜索后端不可配置。要使用不同的提供商进行搜索,请添加一个 MCP server,公开搜索工具。
WebSearch 权限规则不接受 specifier。allow 或 deny 中的裸 WebSearch 条目是唯一的形式。
WebSearch 在 Claude API 和 Microsoft Foundry 上可用。在 Google Cloud Vertex AI 上,它适用于 Claude 4 模型,包括 Opus、Sonnet 和 Haiku。Amazon Bedrock 不公开服务器端网络搜索工具。
Write 工具行为
Write 工具创建新文件或用提供的完整内容覆盖现有文件。它不追加或合并。 如果目标路径已存在,Claude 必须在当前对话中至少读取过该文件一次才能覆盖它。对未读现有文件的 Write 失败并出现错误。此约束不适用于新文件。 使用 Bashcat 或 sed -n 查看文件也满足此要求,如 Edit 工具行为中所述。
对于现有文件的部分更改,Claude 使用 Edit 而不是 Write。
检查哪些工具可用
您的确切工具集取决于您的提供商、平台和设置。要检查在运行中的会话中加载了什么,请直接询问 Claude:/mcp。
另请参阅
- MCP servers:通过连接外部服务器添加自定义工具
- 权限:权限系统、规则语法和工具特定模式
- Subagents:为 subagents 配置工具访问
- Hooks:在工具执行前后运行自定义命令