Skip to main content
Tools are capabilities that Claude can invoke during a session to take action — reading files, running commands, searching the web, managing tasks, and more. Each tool call is visible in Claude’s output so you can see exactly what Claude is doing and why.

What tools are

When Claude receives a request, it can use tools to gather information, make changes, and complete tasks. Tools are invoked by name with structured inputs. Results are returned to Claude, which then continues its response. Tools are not all active by default. Some tools require explicit user approval before they run. Others are gated by permission mode or available only in specific contexts (for example, task management tools are only available to in-process teammates in multi-agent workflows).

Full list of tools

ToolDescription
BashExecutes a shell command and returns stdout/stderr. Supports timeouts and background execution.
PowerShellExecutes a PowerShell command (Windows environments).
REPLInteractive REPL session (internal/Anthropic builds only).
ToolDescription
ReadReads a file from the local filesystem. Supports images, PDFs, Jupyter notebooks, and text files. Accepts offset and limit for large files.
WriteCreates or overwrites a file on the local filesystem.
EditPerforms an exact string replacement in an existing file (old_stringnew_string).
GlobFinds files matching a glob pattern, returning results sorted by modification time.
GrepSearches file contents using ripgrep with full regex support.
NotebookEditEdits cells in a Jupyter notebook (.ipynb).
ToolDescription
WebSearchSearches the web and returns results with titles and URLs.
WebFetchFetches content from a URL, converts HTML to markdown, and processes it with a prompt.
ToolDescription
AgentSpawns a sub-agent to complete a task. The sub-agent has its own tool access and runs to completion before returning a result.
TodoWriteCreates and updates a structured todo list for the current session.
TaskCreateCreates a new task in the task list (multi-agent workflows).
TaskGetRetrieves a task by ID, including its full description and dependencies.
TaskListLists all tasks in the task list with status, owner, and dependency info.
TaskUpdateUpdates a task’s status, owner, dependencies, or other fields.
TaskStopStops a running background task by ID.
ToolDescription
mcpCalls a tool on a connected MCP (Model Context Protocol) server. The actual tool name and schema are provided by the MCP server at runtime.
ListMcpResourcesLists resources exposed by connected MCP servers.
ReadMcpResourceReads the content of a specific MCP resource.
ToolDescription
AskUserQuestionAsks the user a clarifying question and waits for a response.
EnterPlanModeSwitches Claude into plan mode, where it drafts a plan before executing.
ExitPlanModeExits plan mode.
EnterWorktreeSwitches Claude to operate inside a git worktree.
ExitWorktreeReturns from a git worktree context.
BriefGenerates a brief summary of the current session state.
ToolSearchSearches for available tools by description or name.
SkillLoads a skill (a set of pre-defined instructions for a specific task domain).

How tool permissions work

Every tool that can modify state or access external resources requires permission before it runs. Claude requests permission at the point of use — you see the proposed tool call and can approve or deny it. Permission behaviors:
  • Allow — Claude runs the tool automatically without asking. This happens when a rule matching the tool and input already exists in your settings.
  • Ask — Claude pauses and presents the tool call to you. You can approve it once, approve it for the remainder of the session, or deny it.
  • Deny — Claude is blocked from running the tool. A denied tool call returns an error to Claude.
Permission rules are stored per-project. Approving a tool call with “always allow” writes a rule to your project settings so future identical calls are auto-approved.
Permission modes control the default behavior for all tools in a session:
ModeBehavior
DefaultClaude asks for permission on first use of each tool/path combination
acceptEditsFile write operations are auto-approved; shell commands still require approval
bypassPermissionsAll tool calls are auto-approved (use with caution)
The --permission-mode CLI flag sets the mode at session start. See the Commands overview for details.

Seeing what Claude is doing

Every tool invocation appears in Claude’s output as a tool use block. You can see:
  • The tool name
  • The exact inputs Claude provided (command string, file path, search pattern, etc.)
  • The result returned to Claude (stdout, file contents, search matches, etc.)
Read-only operations like Grep, Glob, and Read are shown in a collapsed view by default since they don’t modify state. Write operations and shell commands are shown expanded.
If Claude is doing something unexpected, check the tool use blocks to see the exact inputs it used. This makes it straightforward to identify if Claude misread a path, used the wrong pattern, or ran an unintended command.

Build docs developers (and LLMs) love