Permission modes

You'll finish with: You know what it will and will not do unasked.

By default Claude asks before it changes anything. That gets tiring fast, and the answer isn't to switch all the checks off.

The modes, least to most trusting

planReads and researches, changes nothing. Best for working out what to do.
manualAsks you before each edit or command. Most oversight.
autoA classifier reviews actions instead of you. The default on Pro, Max and Team — on v2.1.228 and later.
acceptEditsEdits flow without asking, inside your folder.
bypassNo checks at all. Throwaway folders only.
Plain English

Auto mode doesn't mean "no checks". A second model reviews each action and blocks the dangerous ones — things like piping a script off the internet straight into your shell, force pushes, or wiping a directory. It's fewer interruptions, not no safety net.

How to switch

Press Shift+Tab to cycle. The current mode shows in the status bar at the bottom.

If yours says Manual and you expected auto. Auto only became the starting mode in Claude Code v2.1.228, and v2.1.233 on Windows. Older builds start in manual, which is correct behaviour, not a fault. Run claude --version, and update if you want the newer default.

The fifth mode you won’t meet by accident

dontAsk is not in the Shift+Tab cycle. You have to ask for it: claude --permission-mode dontAsk. It never asks you anything and never waits. Anything you haven’t already allowed in settings.json is simply refused. That makes it useful for a scheduled job with nobody at the keyboard, and a poor choice for ordinary work, because it will quietly stop rather than check with you.

The practical pattern

The layer underneath

Modes sit on top of permission rules in settings.json. A deny rule beats everything and can't be loosened by picking a looser mode.

{
  "permissions": {
    "deny": ["Bash(rm -rf *)", "Bash(git push --force:*)", "Read(.env)"],
    "ask":  ["Bash(git push *)"]
  }
}

Modes are not a substitute for hooks. A mode controls how often you're asked. A deny rule blocks a pattern. A hook runs your own code and can block anything. If you did the Gates course, your locks hold regardless of mode.

Do this now
  1. Press Shift+Tab and watch the mode change at the bottom.
  2. Put it in plan mode and ask for something big — "how would you reorganise these client folders?"
  3. Read the plan. Then switch to acceptEdits and tell it to go.
How to know it worked

In plan mode it describes what it would do and changes nothing. That's the mode worth building a habit around.

Shift+Tab doing nothing? Some terminals capture it. Start in a mode directly instead: claude --permission-mode plan

All courses · Start here · Privacy