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 上下文