Claude Code runs tools on your behalf — reading and writing files, executing shell commands, making network requests. The permissions system gives you precise control over which tools run automatically and which pause to ask for your approval.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/VineeTagarwal-code/claude-code/llms.txt
Use this file to discover all available pages before exploring further.
How permissions work
Every tool use goes through a permission check before Claude executes it. The outcome is one of:- Allow — the tool runs immediately without prompting you
- Ask — Claude pauses and shows you a confirmation prompt
- Deny — the tool is blocked and Claude receives an error
ask level.
Permission rules
Rules are written in a simple syntax:ToolName or ToolName(content).
| Rule | Matches |
|---|---|
Bash | Any Bash command |
Bash(git *) | Bash commands starting with git |
Bash(npm run *) | Bash commands starting with npm run |
Read | Any file read |
Write | Any file write |
mcp__my-server | All tools from the MCP server named my-server |
mcp__my-server__search | The search tool from my-server |
* as a wildcard that matches any sequence of characters.
Configuring rules in settings
Add rules to thepermissions object in your settings file. Rules can be set at the user level (~/.claude/settings.json) or the project level (.claude/settings.json or .claude/settings.local.json).
Tools that run automatically without asking you.
Tools that are always blocked. Claude receives an error and cannot proceed.
Tools that always prompt for confirmation, even in modes that would otherwise skip prompts.
Default permission mode when Claude Code starts. See Permission modes below.
Additional directories to include in the permission scope. By default, Claude can only access files under the current working directory. Add paths here to grant access to directories outside it.
Set to
"disable" to prevent users from entering bypass permissions mode in this project.Permission modes
You can change how Claude handles permission prompts for an entire session using the permission mode toggle (press Shift+Tab to cycle through modes).| Mode | Behavior |
|---|---|
default | Asks for approval on any tool that doesn’t have an explicit allow rule |
acceptEdits | Automatically approves file edits within the working directory; still asks for shell commands |
bypassPermissions | Skips all prompts — Claude runs tools without asking. Requires explicit acceptance of the warning dialog |
dontAsk | Converts all ask decisions to deny. Claude cannot use tools it doesn’t already have permission for |
plan | Read-only mode: Claude can read and analyze but cannot write files or run commands |
Approving tools at the prompt
When Claude needs to use a tool that requires approval, you see a prompt similar to:- Allow once — permits this specific invocation; Claude will ask again next time
- Always allow — adds an allow rule to your local settings for this tool pattern
- Deny once — blocks this specific invocation; Claude receives an error
- Always deny — adds a deny rule to your local settings
.claude/settings.local.json in your project (gitignored) so it persists across sessions but doesn’t affect teammates.
The /permissions command
Run /permissions (or /allowed-tools) in a Claude Code session to open the interactive permissions panel. From there you can:
- View all current allow, deny, and ask rules
- See which settings file each rule comes from (user, project, local, or managed)
- Delete rules you no longer want
- Add new rules
Rule scopes and precedence
Rules from different sources are merged and evaluated together. Adeny rule always takes precedence over an allow rule at the same level.
| Source | File |
|---|---|
| User | ~/.claude/settings.json |
| Project (shared) | .claude/settings.json |
| Project (local) | .claude/settings.local.json |
| CLI argument | --allow-tool, --disallow-tool flags |
| Managed | Enterprise managed settings |
Per-project permissions
Project settings let you define a consistent permission policy for everyone working on a codebase. For example, a project that usesmake for its build system might allow those commands for all contributors:
.claude/settings.json so every developer who clones the repository automatically inherits these rules.
MCP tool permissions
MCP server tools follow the same rule syntax. Use themcp__serverName prefix to match tools from a specific server:
Bypass permissions mode
You can start Claude Code with bypass permissions enabled using the--dangerously-skip-permissions flag:
bypassPermissions and skips the confirmation dialog. It is intended for automated CI/CD environments where you have pre-reviewed the task and there is no interactive terminal. Do not use this flag for interactive sessions on machines with sensitive data.
Enterprise permission controls
Enterprise administrators can restrict how users configure permissions through managed settings:allowManagedPermissionRulesOnly— only permission rules from managed settings are used; user and project rules are ignoreddisableBypassPermissionsMode— prevents users from entering bypass mode