Permission Modes
Permission modes control what runs without asking you first. Picking the right mode is the difference between approving every keystroke and letting Claude execute freely — and Claude Code exposes six modes spanning that spectrum.
Official documentation: Permission modes — canonical reference.
The Six Modes
| Mode | What runs without prompting | Best for |
|---|---|---|
default | Read-only ops; tool calls allowed by your settings | Production code, critical systems, learning |
acceptEdits | File edits and writes within the project | Prototyping, scaffolding, doc updates |
plan | Reads and analysis only — no edits, no commands | Architecture work, debugging investigation, scoping |
auto | All file edits and shell commands; still confirms destructive ops | Trusted tasks where speed matters |
dontAsk | Everything except a small denylist (configurable) | Long-running scripted workflows |
bypassPermissions | Everything, no confirmations | Sandboxes and ephemeral environments only |
default
Interactive review of every change Claude proposes. Claude shows the diff or the command, you approve, then it runs. Highest visibility, highest control.
acceptEdits
Edits and writes apply immediately. File deletions and shell commands still require confirmation. Good middle ground for code generation tasks where you trust the model on edits but want a checkpoint before anything destructive.
plan
Strategic exploration. Claude can read files, run search tools, and produce a plan — but cannot modify anything. Use this when you want to scope a change before committing to it. Exit with Exit Plan Mode when you're ready to execute.
auto
File edits and shell commands run without confirmation. Destructive operations (deleting files, force pushes, removing branches) still prompt. Faster than acceptEdits because shell commands run too.
dontAsk
Like auto, but with a configurable denylist instead of the built-in destructive checks. Use when scripted automation needs to run without intermediate prompts and you've explicitly enumerated the unsafe operations to block.
bypassPermissions
No confirmations at all. Reserve for disposable environments — Docker sandboxes, dev VMs, ephemeral worktrees. Never run on a workstation with credentials or production access.
Switching Modes
Press Shift+Tab to cycle through modes during a session. The active mode appears in your statusline.
Launch in a specific mode:
claude --permission-mode plan
claude --permission-mode acceptEditsSwitch mid-session by asking Claude directly:
> Switch to acceptEdits for the test files, then back to default for the APIPicking a Mode
- Reviewing or learning:
default - Generating boilerplate or docs:
acceptEdits - Scoping a complex change:
plan - Trusted automation, fast iteration:
auto - Scripted workflows with custom safety:
dontAsk - Throwaway sandbox:
bypassPermissions
Related
- Slash Commands — Direct command shortcuts
- Statusline — Where the active mode is displayed
- Context Management — Control what Claude knows