Claude Code 内置工具的完整参考。工具名称是权限规则、子 Agent 工具列表和 hook 匹配器中使用的精确字符串。

核心机制

工具分两类:需要权限的(Bash、Edit、Write 等修改性操作)和不需要权限的(Read、Glob、Grep 等只读操作)。

扩展方式:连接 MCP 服务器添加自定义工具;编写 Skill 扩展可复用工作流(通过现有 Skill 工具运行,不新增工具条目)。

工具总览

工具说明需要权限
Bash执行 shell 命令是
Read读取文件内容否
Edit精确字符串替换编辑文件是
Write创建或覆盖文件是
Glob按模式匹配查找文件否
Grep在文件内容中搜索模式否
Agent生成子 Agent 处理任务否
WebFetch获取 URL 内容是
WebSearch执行网络搜索是
LSP代码智能(跳转定义、查找引用)否
Monitor后台监控并将事件流入对话是
NotebookEdit修改 Jupyter notebook 单元格是
PowerShell执行 PowerShell 命令(Windows/可选)是
Skill执行 skill是
CronCreate/Delete/List管理会话内定时任务否
TaskCreate/Get/List/Update/Stop管理任务列表否

关键工具行为细节

Bash 工具:

  • cd 在主会话中持久化(限项目目录内),子 Agent 不持久化
  • 环境变量不跨命令持久化(export 无效)
  • 默认超时 2 分钟,最大 10 分钟(可通过 BASH_DEFAULT_TIMEOUT_MS/BASH_MAX_TIMEOUT_MS 覆盖)
  • 输出超过 30000 字符时保存到文件,Claude 收到路径和预览

Edit 工具:

  • 精确字符串替换,不支持正则或模糊匹配
  • 必须先 Read 文件(或用 cat/sed -n 查看),且文件未在磁盘上变更
  • old_string 必须唯一出现,否则需提供更多上下文或用 replace_all: true

Glob 工具:

  • 默认不遵守 .gitignore(与 Grep 不同)
  • 结果按修改时间排序,上限 100 个文件
  • CLAUDE_CODE_GLOB_NO_IGNORE=false 可让其遵守 .gitignore

Grep 工具:

  • 基于 ripgrep,使用 ripgrep 正则语法(非 POSIX grep)
  • 默认遵守 .gitignore
  • 三种输出模式:files_with_matches(默认)、content、count

WebFetch 工具:

  • 有损设计:用小模型提取内容,不返回原始页面
  • 结果缓存 15 分钟
  • 遇到跨域重定向时返回重定向信息,需再次调用

Agent 工具(子 Agent):

  • 前台子 Agent:显示权限提示
  • 后台子 Agent:自动拒绝需要提示的工具调用,继续执行

权限规则格式

Bash(npm run *)          # 命令模式匹配
Read(~/secrets/**)       # 路径模式匹配
Edit(/src/**)            # 路径模式匹配
WebFetch(domain:example.com)  # 域名匹配
Agent(Explore)           # 子 Agent 类型匹配
Skill(deploy *)          # Skill 名称匹配
WebSearch                # 无 specifier,整体允许/拒绝

Edit(...) 允许规则同时授予相同路径的读取权限。

与其他概念的关联

  • env-vars — BASH_MAX_OUTPUT_LENGTH、BASH_DEFAULT_TIMEOUT_MS 等控制工具行为
  • commands — /tasks 管理后台任务,/mcp 管理 MCP 工具
  • interactive-mode — Ctrl+B 将 Bash 命令转为后台任务

实践要点

  • Monitor 工具需要 v2.1.98+,不支持 Bedrock/Vertex/Foundry
  • LSP 工具需要安装对应语言的 code intelligence 插件
  • TodoWrite 已废弃,推荐使用 TaskCreate/TaskList 等 Task 工具族
  • 子 Agent 继承父会话的所有 MCP 工具定义,大量 MCP 工具可能填满子 Agent 上下文