Tools Claude uses behind the scenes
The built-in capabilities Claude uses behind the scenes — file reads, code edits, shell commands, and more. You don't call these directly; Claude picks the right one.
Tools are the built-in capabilities Claude uses to actually do things — read a file, run a command, search the codebase, fetch a URL. You don’t invoke tools directly. You describe what you want and Claude picks the right tool (or chain of tools) for the job.
That distinction matters: tools are the primitives. Skills, agents, and slash commands are higher-level patterns built on top of them. Knowing which tool Claude reaches for explains a lot of behavior — why a request feels slow (Claude spawned an Agent for research), why an edit was surgical (Edit instead of Write), why a search was thorough (Grep across the whole repo).
The built-in tools
| Tool | Purpose | When Claude reaches for it |
|---|---|---|
| Read | Read file contents | Anything that asks “what’s in this file?” or needs context before editing |
| Edit | Make a targeted in-place edit | Modifying existing code — preferred over Write for changes |
| Write | Create a new file or full rewrite | ”Create a Dockerfile”, “write me a README”, or anytime no prior file exists |
| Bash | Execute a shell command | Build/test runs, git operations, file system stuff that isn’t pure read/edit |
| Glob | Find files matching a pattern | ”Find every *.tsx under src/components/” |
| Grep | Search file contents (ripgrep under the hood) | “Where is useFeatureToggle called?” |
| Agent | Delegate work to a sub-Claude in its own context | Heavy research, multi-file analysis — anything you want the answer to without the noise |
| WebFetch | Fetch and parse a URL | Reading docs, fetching API responses, viewing screenshots |
| WebSearch | Run a web search | When you don’t know the URL but need current info |
| NotebookEdit | Edit Jupyter notebook cells | Notebook-specific edits — not applicable to most repos |
| LSP | Language Server Protocol queries | Type info, references, “go to definition” — when available |
How Claude chooses
Tool selection isn’t random — it follows a few rules of thumb worth knowing:
- Edit > Write for existing files. Edit shows a diff and is harder to misuse; Write replaces everything.
- Grep > Bash + grep. The Grep tool is faster, structured, and the right primitive — it’s ripgrep under the hood.
- Agent for research, not for surgery. If you’d describe the goal as “find out X” or “summarize Y,” it belongs in an agent. If you’d say “edit line 42,” do it inline.
- Bash is the fallback. Anything not covered by a dedicated tool ends up here — but if you find yourself piping shell output through
awk, there’s usually a better tool.
What you can actually do
You don’t need to memorize this list. The reason to know the tools exist is so you can reason about Claude’s behavior and steer it when needed:
- “Use Grep, not Bash” if you see Claude reaching for
grep -rin a giant repo. - “Spawn an agent for that” if you’re about to ask a research question that’d flood your context.
- “Just write the file” if Claude is hesitating to overwrite something it should.
That kind of nudging — describing the kind of move you want — is more useful than naming the exact tool. Claude knows what it has; you mostly just need to know enough to recognize what’s happening.