What requires approval
Not every tool call requires a prompt. Read-only operations (file reads, searches, glob patterns) generally run without asking. Actions that change state require approval by default:Bash commands
Bash commands
Any shell command run via BashTool requires approval. Claude shows you the exact command before executing it. You can edit the command before approving.
File writes and edits
File writes and edits
Creating a new file (FileWriteTool) or modifying an existing one (FileEditTool, FileWriteTool) requires approval. Claude shows you a diff of the proposed change.
Network requests
Network requests
Fetching URLs via WebFetchTool requires approval. WebSearchTool queries also go through the permission system.
MCP tool calls
MCP tool calls
Tools provided by connected MCP servers follow the same permission flow as built-in tools.
Permission modes
Claude Code supports several permission modes that control how approvals are handled.default
Claude asks for approval before every tool call that requires it. This is the default behavior.
plan
Claude proposes a full plan before executing anything. You review the plan and approve it as a whole before any tools run.
acceptEdits
File edits are auto-approved, but shell commands and network requests still require manual approval.
bypassPermissions
All tool calls are auto-approved without prompting. Use this only in trusted, sandboxed environments.
defaultMode, or pass --permission-mode when starting a session.
Responding to a permission prompt
When Claude requests approval, you have three options:
When you deny a request, you can provide a reason. Claude uses that feedback to decide how to proceed.
Always-allow and always-deny rules
When you approve with “don’t ask again”, Claude Code saves a permission rule scoped to a specific tool and input pattern. Rules can be stored at different levels:- User settings — applies across all your projects
- Project settings — applies to the current project for all users
- Local settings — applies to the current project on your machine only
- Session — applies only for the current session
/config.