Tools
A tool is an action that Claude can take, such as reading a file or running a shell command.
Each tool has input fields and a few flags that tell Claude Code how to treat it.
For example, Grep is read-only and safe to run in parallel, so Claude Code can run many searches at once.
This page covers the shared rules. The other pages list every tool and every parameter.
At a Glance
| Question | Answer |
|---|---|
| Can you use it? | Partly. Claude calls tools for you. You allow, ask, or deny them with permission rules. |
| Can you change it? | ✅ Yes. Permission rules, subagent tools and disallowed lists, and MCP servers change which tools Claude can use. |
| Can you turn it on or off? | permissions., ENABLE_, and tool-specific env vars such as CLAUDE_. |
| Where does it live? | Built into the program. MCP tools come from servers you configure. |
| Status | Documented Undocumented Differs Gated |
Tool Pages
| Page | What It Covers |
|---|---|
| Files, Search, and Memory | Read, Write, Edit, Notebook, Glob, Grep, LSP, memory tools |
| Shell, Web, and Background Tasks | Bash, Power, Monitor, Web, Web, Task, Get |
| Agents, Tasks, and Planning | Agent, Send, task tools, cron, Workflow, worktrees, plan mode, Ask |
| Gated and Surface-Specific Tools | Onboarding, design, connectors, self-hosted runner, notifications, Structured, MCP resource tools |
How to Read the Tool Tables
The inventory for 2.1.304 lists 70 tools. The program holds a few more, such as Agent, Monitor, ToolSearch, ScheduleWakeup, and StructuredOutput.
Each tool table has three Yes or No columns.
| Column | Yes Means | No Means |
|---|---|---|
| Read-Only | The tool changes nothing, so Claude Code can skip some prompts for it. | The tool can change things, or the program sets no flag. |
| Parallel | Claude Code can run several calls of the tool at once. | Calls run one after the other, or the program sets no flag. |
| Deferred | The tool is not loaded at the start. Claude finds it with Tool first. | The tool is loaded at the start. |
A tool with no flag in its definition shows No for Read-Only and Parallel.
Bash and PowerShell also show No for both, because the result depends on the command.
Common Properties
Source: the program (the tool definitions).
| Property | Values | What It Means |
|---|---|---|
backgrounding | never, self, detach | self means the tool backgrounds itself (Bash, Power, Agent). detach applies to Web and Web. |
max | 100000 for most tools, 20000 for Grep, unbounded for Read | The largest result the tool sends back. |
strict | true for Write, Edit, Read, Grep, Bash, Power, Todo, Report | The tool schema is strict. |
| MCP tool name | mcp__ | How a tool from an MCP server is named. See MCP. |
ToolSearch
ToolSearch loads the full schema of a deferred tool, so that Claude can call it.
For example, the query select:Read,Edit,Grep fetches those three tools by name.
Source: Tools Reference, Create Custom Subagents, and the program.
| Item | Status | What It Does | How It Works |
|---|---|---|---|
Tool | Documented | Loads the full schema of deferred tools. | query (string, required) and max_ (int, optional, default 5). The result lists matches, total_, pending_, and failed_. Works in the main session and in subagents. |
max_ | Differs | An old 2. capture showed it as required. | In 2. it is optional with the default 5. |
Query select: | Undocumented | Fetches the named tools. | The prompt gives select:. A tool that is already loaded returns a note. |
| Query keywords | Undocumented | Searches by keyword and returns up to max_ matches. | The prompt gives notebook jupyter. |
Query +term rest | Undocumented | Requires term in the tool name and ranks by the rest. | The prompt gives +slack send. |
| Pending MCP servers | Documented | A search can wait for MCP servers that are still connecting. | Name the server as mcp__ in the query. |
| Placeholder tool | Undocumented | A dummy tool keeps deferred loading active. | The text tells Claude never to call it. |
| Deny rule | Documented | permissions. with Tool turns tool search off. | Claude then uses Wait. |
| Failed servers note | Documented | A no-match result names the servers that failed. | failed_ carries name, error, and error. |
Deferral Rules
Claude Code checks these rules in order to decide if a tool is deferred.
- A hook or a server-side override can set the state first.
- A tool with
alwaysLoadset totrueis not deferred. - A tool in the never-defer set is not deferred.
The set holds
ToolSearch,StructuredOutput,Agentwhen fork mode is on, the brief tool,EnterWorktreein abgsession, andPushNotificationfor aremote_triggerentry point. A server-side list can add more built-in tools. - An MCP tool is deferred.
- A tool in a server-side defer list is deferred.
- Otherwise the
shouldDefervalue of the tool decides.
Switches for Tool Search
Source: Connect Claude Code to Tools via MCP and Environment Variables. Set them in the shell or in env in settings.
| Item | Status | What It Does | How It Works |
|---|---|---|---|
ENABLE_ unset | Documented | MCP tools are deferred. | Since 2. this also holds behind a custom ANTHROPIC_. If the gateway answers 400 or 422, Claude Code retries the request without tool search. Source: the program and the release notes. |
ENABLE_ | Documented | MCP tools stay deferred, also on a proxy host. | - |
ENABLE_ and auto: | Documented | Tools load at the start while their definitions fit in N percent of the window. | The default is 10. auto: acts like true. auto: acts like false. N stays between 0 and 100. |
ENABLE_ | Documented | Every MCP tool loads at the start. | - |
ENABLE_ | Documented Gated | Forces tool search on, also when betas are off. | Needs a first-party provider. |
always | Documented | Exempts a tool or a whole server from deferral. | Set it on the server in . or plugin MCP config. An MCP tool sets it from _ key anthropic/. |
| Server-side never-defer list | Undocumented Gated | Names built-in tools that must never be deferred. | The default is an empty list. You cannot set it. |
| Server-side defer list | Undocumented Gated | Defers Report, Workflow, and Share. | You cannot set it. |
Which Built-In Tools Are Deferred
- Deferred:
WebFetch,WebSearch,NotebookEdit,TodoWrite,LSP,Monitor,EnterPlanMode,ExitPlanMode,EnterWorktree,ExitWorktree,TaskCreate,TaskGet,TaskUpdate,TaskList,TaskStop,SendMessage,SendFile,CronCreate,CronDelete,CronList,PushNotification,RemoteTrigger,EndConversation,ProposeGoal,FetchInboxMessage,PublishPlugin,OfferChromeSetup,DesignSync,SearchMcpRegistry,SuggestConnectors,ListConnectors, the three MCP resource tools, and the nine self-hosted runner tools. - A runtime check decides:
SuggestPluginInstall,SuggestSkills,SendUserFile. - Not deferred:
Read,Write,Edit,Glob,Grep,Bash,PowerShell,Agent,Skill,AskUserQuestion,ListAgents,Workflow,ReportFindings,ToolSearch,StructuredOutput,SubagentHandback,ScheduleWakeup,memory_*, and the rest of the gated tools. - The old capture of
2.1.296lackedGlobandGrep. In2.1.304they are not deferred. - In the
2.1.304capture, the main prompt lists 12 tools (the site's captures use a local stub asANTHROPIC_BASE_URL, and tool search is on behind a custom base URL, so it is not 20 as before).CronCreate,CronDelete,CronList,EnterWorktree,ExitWorktree,NotebookEdit,SendMessage,TaskStop,WebFetch, andWebSearchsit behindToolSearch. See Tools per Variant.
Example
Hide web tools from Claude, and keep MCP tools loaded at the start when they are small.
{
"permissions": {
"deny": ["WebFetch", "WebSearch"]
},
"env": {
"ENABLE_TOOL_SEARCH": "auto:10"
}
}
How It Works
Claude Code builds the tool list for each request. A deferred tool appears only as a name, so the request stays small.
When Claude needs a deferred tool, it calls ToolSearch. Claude Code then loads the full schema, and Claude calls the tool.
Permission rules run when a tool is called, not when it is listed.
Related Pages
- Tools Reference is the official page for the built-in tools.
- Permission Rules explains allow, ask, and deny rules for tools.
- MCP covers tools that MCP servers add.
- Subagents covers the tools that a subagent keeps.
- Environment Variables for Tools and Bash