Tools reference
Complete reference for the tools Claude Code can use, including permission requirements.
Claude Code has access to a set of tools that help it understand and modify your codebase. The tool names below are the exact strings you use in permission rules, subagent tool lists, and hook matchers.
| Tool | Description | Permission Required |
|---|---|---|
Agent |
Spawns a subagent with its own context window to handle a task | No |
AskUserQuestion |
Asks multiple-choice questions to gather requirements or clarify ambiguity | No |
Bash |
Executes shell commands in your environment. See Bash tool behavior | Yes |
CronCreate |
Schedules a recurring or one-shot prompt within the current session (gone when Claude exits). See scheduled tasks | No |
CronDelete |
Cancels a scheduled task by ID | No |
CronList |
Lists all scheduled tasks in the session | No |
Edit |
Makes targeted edits to specific files | Yes |
EnterPlanMode |
Switches to plan mode to design an approach before coding | No |
EnterWorktree |
Creates an isolated git worktree and switches into it | No |
ExitPlanMode |
Presents a plan for approval and exits plan mode | Yes |
ExitWorktree |
Exits a worktree session and returns to the original directory | No |
Glob |
Finds files based on pattern matching | No |
Grep |
Searches for patterns in file contents | No |
ListMcpResourcesTool |
Lists resources exposed by connected MCP servers | No |
LSP |
Code intelligence via language servers. Reports type errors and warnings automatically after file edits. Also supports navigation operations: jump to definitions, find references, get type info, list symbols, find implementations, trace call hierarchies. Requires a code intelligence plugin and its language server binary | No |
NotebookEdit |
Modifies Jupyter notebook cells | Yes |
Read |
Reads the contents of files | No |
ReadMcpResourceTool |
Reads a specific MCP resource by URI | No |
Skill |
Executes a skill within the main conversation | Yes |
TaskCreate |
Creates a new task in the task list | No |
TaskGet |
Retrieves full details for a specific task | No |
TaskList |
Lists all tasks with their current status | No |
TaskOutput |
(Deprecated) Retrieves output from a background task. Prefer Read on the task's output file path |
No |
TaskStop |
Kills a running background task by ID | No |
TaskUpdate |
Updates task status, dependencies, details, or deletes tasks | No |
TodoWrite |
Manages the session task checklist. Available in non-interactive mode and the Agent SDK; interactive sessions use TaskCreate, TaskGet, TaskList, and TaskUpdate instead | No |
ToolSearch |
Searches for and loads deferred tools when tool search is enabled | No |
WebFetch |
Fetches content from a specified URL | Yes |
WebSearch |
Performs web searches | Yes |
Write |
Creates or overwrites files | Yes |
Permission rules can be configured using /permissions or in permission settings. Also see Tool-specific permission rules.
Bash tool behavior
The Bash tool runs each command in a separate process with the following persistence behavior:
- Working directory persists across commands. Set
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1to reset to the project directory after each command. - Environment variables do not persist. An
exportin one command will not be available in the next.
Activate your virtualenv or conda environment before launching Claude Code. To make environment variables persist across Bash commands, set CLAUDE_ENV_FILE to a shell script before launching Claude Code, or use a SessionStart hook to populate it dynamically.
See also
- Permissions: permission system, rule syntax, and tool-specific patterns
- Subagents: configure tool access for subagents
- Hooks: run custom commands before or after tool execution