Skip to content

Browse catalog

Search catalog

[READY] Type a title, tag, or description.

NOTES // concept

Read-mutate permission split

LAST_MODIFIED
2026.07.29
CATEGORY
concept

The everyday design of Claude Code’s tool surface: reads run freely; mutations ask. As of July 2026 there are 42 built-in tools; 13 ask for permission.

ToolWhat it doesAsks
Read / Glob / Grep / LSPInspect the codebaseNo
AgentSpawn a subagent in its own contextNo (subagent’s tools still checked)
Edit / Write / NotebookEditChange filesYes
Bash / PowerShell / MonitorRun / watch commandsYes
WebFetch / WebSearchReach the networkYes
Skill / ExitPlanModeExecute skill / leave plan modeYes

Behaviors that bite

  • Edit enforces read-before-edit - Claude must have read the file in this conversation; old_string must match exactly once (or replace_all). Viewing via cat/head counts; piped output does not.
  • Bash is stateless between commands - export does not survive; 2-minute default timeout; 30k characters of output before spill to a file.
  • WebFetch is lossy - a small model answers Claude’s extraction prompt; “doesn’t mention X” may mean the prompt did not ask.
  • Grep respects .gitignore; Glob does not by default.

Restrict further with permission rules and the sandbox ladder. Full map: Claude Code tools.

claude-codetoolspermissions

Related_Notes