Skip to content

Permission modes

Permission modes control how much Claude Code can do without asking. You cycle between the common modes with Shift+Tab and fine-tune individual rules with /permissions.

The six modes

ModeWhat it allows
defaultReads only; prompts before edits and commands
acceptEditsFile edits plus common in-scope filesystem Bash (mkdir, mv, cp, rm) without prompting
planResearch only — no edits, no side effects
autoEverything, gated by a server-side safety classifier
dontAskOnly pre-approved tools run; nothing else (for CI)
bypassPermissionsSkips all permission checks entirely

NOTE

auto is a research preview (v2.1.83+) and requires Opus 4.6 or newer (Opus 4.8 today) or Sonnet 4.6. State your provider when relying on model availability — Bedrock/Vertex may resolve to different versions.

Cycling and setting the default

Shift+Tab cycles through the everyday modes: default → acceptEdits → plan. To set the mode at launch, use --permission-mode <mode>. To set a persistent default, configure permissions.defaultMode in your settings:

json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

bypassPermissions is reachable via the --dangerously-skip-permissions flag.

WARNING

bypassPermissions / --dangerously-skip-permissions removes every safety check. Use it only in fully sandboxed, disposable environments.

Fine-grained allow/deny rules

Beyond modes, /permissions lets you allow or deny specific tool invocations using patterns. This is how you stop repetitive prompts for trusted commands:

text
Bash(npm run test:*)      # allow any npm test script
Bash(git push:*)          # deny or allow git pushes
Read(./src/**)            # scope reads to a directory

Rules live in settings under permissions.allow and permissions.deny, and deny always wins over allow. Add a rule once and Claude stops asking for matching calls.

Protected paths

Certain paths are never auto-approved (except under bypassPermissions), regardless of mode:

  • .git
  • .claude
  • Shell rc files (.bashrc, .zshrc, etc.)
  • .mcp.json

Edits to these always require explicit confirmation.

Choosing a mode

SituationMode
Exploring or asking questionsdefault
Designing before touching codeplan
Actively implementing, want flowacceptEdits
Hands-off agentic work, supervisedauto
Non-interactive CI with a known allowlistdontAsk
Throwaway sandbox, maximum speedbypassPermissions

Source: Permission modes

Released under the MIT License.