AI Weekly

Guides ·

Claude Code permission modes — Manual, acceptEdits, plan, auto, dontAsk and bypassPermissions compared

Permission modes decide what Claude Code does without asking you. What each of the 6 modes allows, how to switch with Shift+Tab, --permission-mode and settings.json, and which mode we use for which job.

Key takeaways

Claude Code has 6 permission modes. default (shown as Manual) only reads without asking; acceptEdits also edits files and runs common file commands like mkdir and mv; plan reads and analyzes only; auto does almost everything after a background safety check; dontAsk runs only pre-approved tools and denies the rest; bypassPermissions runs everything without asking. Switch with Shift+Tab during a session, --permission-mode at launch, or permissions.defaultMode in settings.json, and use bypassPermissions only in isolated containers or VMs without internet access.

Claude Code: A Hands-On Guide · Part 2 of 10

A permission mode is the range of things Claude Code may do without asking you first. Start with Manual, which asks the most, and widen the range only for work you trust. This guide compares all 6 modes, shows the three ways to switch, and lists which mode we use for which job. It was written by AI (Claude) and checked against the official Permission modes docs. At hiio, we run a one-person app studio on Claude Code and switch between these modes every day.

The 6 modes at a glance

Config value Runs without asking Best for
default (shown as Manual) File reads only Checking every action yourself
acceptEdits Reads, file edits and common file commands (mkdir, touch, mv, cp, etc.) Editing code while you watch
plan Reads (analysis only, a plan before changes) Looking around before changing anything
auto Almost everything, after background safety checks Long tasks, too many approval prompts
dontAsk Reads inside your working directory and pre-approved tools. Anything that would prompt is denied Unattended CI and scripts
bypassPermissions Everything Isolated containers and VMs only

In settings files you can write manual instead of default. They mean the same thing.

Three ways to switch modes

1. During a session: Shift+Tab

Press Shift+Tab in the terminal to cycle modes. According to the official docs, the cycle is default → acceptEdits → plan, and auto joins the cycle only where it is available. bypassPermissions only appears if you enabled it at launch. dontAsk never appears in the cycle.

2. At launch: --permission-mode

claude --permission-mode plan
claude -p "run the tests" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"

As in the second line, dontAsk is only useful together with --allowedTools. Anything you did not allow is denied without a prompt.

3. As a default: settings.json

{
  "permissions": {
    "defaultMode": "default"
  }
}

Put this in ~/.claude/settings.json and every session on this machine starts in that mode. A project setting takes priority if one exists. But according to the official docs, auto or bypassPermissions in a project's .claude/settings.json or .claude/settings.local.json does not take effect. This stops a repository someone else wrote from quietly turning on a risky mode.

The starting mode is chosen in this order: the --permission-mode flag, then defaultMode in a settings file, then the built-in default.

How we use them

Job Mode Why
Exploring a repository for the first time plan We need to be sure nothing changes
Editing blog posts and docs acceptEdits It only edits files, and approving every edit is tedious
Shipping an app or submitting to the App Store default (Manual) Anything hard to undo gets a human look
Scheduled daily automation dontAsk + allowlist Nobody is watching, so it must not stop to ask
bypassPermissions Never Our Mac is not an isolated environment

auto is convenient, but the official docs also say it "reduces permission prompts but does not guarantee safety." For things that are hard to undo, like payments, deletions and public posts, it is safer to block them or get notified with hooks no matter which mode you use.

What to watch out for

FAQ

Which Claude Code permission mode should a beginner use?

Start in Manual (default) and watch what Claude wants to do a few times. Once you trust its file edits, widen to acceptEdits. If you want to see a plan before any change, use plan.

Can Claude Code change files in plan mode?

plan mode reads and analyzes, then proposes a plan. Per the table in the official docs, it runs reads without asking (plus classifier-approved commands where auto mode is available). To start editing, switch modes or approve the plan.

What is the difference between dontAsk and bypassPermissions?

Neither one asks. But dontAsk denies instead of asking, and bypassPermissions runs instead of asking. For scripts that run without a person, dontAsk plus an allowlist is much safer.

Why doesn't auto mode turn on from my project settings.json?

According to the official docs, auto and bypassPermissions in .claude/settings.json or .claude/settings.local.json do not take effect. Turn them on from your user settings (~/.claude/settings.json) or with the --permission-mode flag.

Sources

#Claude Code#permission modes#auto mode#plan mode#dontAsk#bypassPermissions#settings.json

Written with AI (Claude) and checked against the linked sources.

Lab

Experiment 01

AI Type Test

How do you actually use AI? 15 types, Lv.1–10, and where you rank among people in your line of work.

3 min10 questions15 typesStart

More posts