Claude Code permission modes, explained

A permission mode decides how much Claude Code may do before it stops and asks you. Picking the right one for the job saves you from both constant interruptions and unpleasant surprises.

The six modes

Deny rules block in every mode, bypass included. Allow rules have no effect in bypass mode.

Which mode a new session starts in depends on your version, plan and settings. The documentation lists the order: the command-line flag first, then permissions.defaultMode in a settings file, then the built-in default.

How to switch

Plan mode, step by step

  1. Press Shift+Tab until you are in plan mode, or type /plan, or launch with --permission-mode plan.
  2. Ask for what you want. Claude explores and writes a plan.
  3. Press Ctrl+G if you want to edit the plan in your editor first.
  4. Choose: approve and continue with auto mode, approve and review each edit yourself, or keep planning and give feedback. If auto mode is not available, the first option reads "Yes, auto-accept edits".

Shift+Tab again leaves plan mode without approving anything. If you want Claude to question you before it builds, see make Claude Code ask first.

What auto mode is, and is not

A separate classifier model reviews actions before they run. By default it blocks things such as piping a download into a shell, sending sensitive data out, production deploys, force pushes and commands such as git reset --hard that would throw away uncommitted work. It allows things like local file work in your project and installing the dependencies your project declares. If it blocks three actions in a row, or 20 in total, it pauses and goes back to asking.

When you enter auto mode it drops broad allow rules that would let any code run, such as Bash(*). Narrow rules such as Bash(npm test) stay. Whether auto is available depends on your plan, provider, model and version. The documentation is clear that it reduces prompts and does not guarantee safety.

Bypass: read this part twice

What is never approved automatically

Writes to protected paths are not auto-approved, except in bypass mode. Protected directories include .git, .vscode, .idea and .claude. Protected files include shell startup files such as .bashrc, .npmrc and .mcp.json. An allow rule in a settings file does not pre-approve a write there. Even in bypass mode, a short list of actions, such as removing critical system paths with rm, still prompts or is refused.

Which one to pick

Limits

This follows Anthropic's permission modes documentation as we read it in October 2026. We are not affiliated with Anthropic. We wrote this from the documentation and have not tested every mode on every system.

See also: Work toward a goal with /goal · Claude Code in JetBrains IDEs.

The free loop-stop skill gives long tasks a limit and a stop rule. If you want a second pair of eyes on your CLAUDE.md and settings, the Tune-Up Kit is a checklist for exactly that.