Home / Fundamentals and the agent loop
Permissions and plan mode
The permission mode decides which actions Claude Code carries out without asking, and since version 2.1.228, in an interactive terminal or VS Code session, the mode that greets a new session on the Pro, Max and Team plans is no longer default mode but auto mode, which acts broadly under the background watch of a second model.
The permission mode decides which actions Claude Code carries out without asking, and which ones stop in front of an on screen confirmation prompt. Checked against the official documentation on 2 September 2026, this choice now covers six modes, not the four older modes that some course notes still described.
Six modes, a different safety net each time
The default mode only reads, every file edit and every shell command wait for a reply. The acceptEdits mode edits files and runs common file system commands without asking, but stops in front of everything else. The plan mode stays read only while it produces a plan; when auto mode is available and the useAutoModeDuringPlan setting, active by default, allows it, a separate classifier approves certain shell commands during the planning itself, otherwise any command outside the read only core waits for manual approval. The auto mode acts broadly, edits files, runs commands, under the background watch of this same classifier, which by default runs on a model from the Sonnet family and blocks a few specific categories outright: downloading and then running code, exfiltrating sensitive data, deploying to production, deleting in bulk on cloud storage, or running git reset --hard and terraform destroy. The dontAsk mode does not go beyond the tools already approved in advance. The bypassPermissions mode removes the entire safety net, nothing stops any more.
The starting mode has changed
Since version 2.1.228 of Claude Code on macOS, Linux and WSL, and version 2.1.233 on native Windows, an interactive terminal or VS Code session opened on the Pro, Max and Team plans starts in auto mode rather than default mode, shown as Manual in the status bar. This change does not apply everywhere: an earlier version, the first session after an install or an update, the disableAutoMode variable set, claude -p, the Agent SDK, or a run on Bedrock, Vertex, Foundry or a gateway all still start in default mode. A task launched without checking the active mode can therefore run further than someone used to the older behaviour would expect, with the classifier's watch as the only safety net, under the conditions where auto mode actually applies. This classifier is not meant to watch without ever reacting: after a run of close together refusals, auto mode pauses itself and goes back to asking for confirmation, the figure that accompanies this lesson gives the exact figures for the two thresholds that trigger this pause.
claude --permission-mode plan
# launches the session directly in plan mode,
# read only until the plan is approved
The Shift+Tab shortcut cycles through the available modes from the keyboard, without leaving the current conversation: default, then acceptEdits, then plan, then bypassPermissions if it has been activated, then auto if it is available, before returning to default. The command line flag --dangerously-skip-permissions is exactly equivalent to bypassPermissions mode.
Plan mode, an airlock before writing
Plan mode remains the safest way to approach a task whose scope is not yet known: Claude reads, explores, proposes a sequence of actions, and nothing touches the disk before a plan is approved, except in a session where bypassPermissions mode is available, where edits are not held back waiting for that approval. On a task that touches several files at once, this airlock costs a few seconds of reading and avoids discovering afterwards that a starting assumption was wrong. If an approved plan still heads in the wrong direction while it runs, the Esc key interrupts the current turn without losing the work already done.
Six permission modes compared on three real consequences
| Claude Code permission modes | Asks before writing a file | Asks before a new shell command | Safety net remaining |
|---|---|---|---|
| default | Yes | Yes | Full, everything is confirmed |
| acceptEdits | No | Yes, except common file commands | Partial |
| plan | No, proposes a plan first | No for already approved commands | The plan itself |
| auto | No | No, except blocked categories | A second model watching |
| dontAsk | No | No, outside pre-approved tools | Reduced to the listed tools |
| bypassPermissions | No | No | None |
The two thresholds that pause auto mode
A developer launches Claude Code on a new repository with his Pro subscription. The permission mode at startup is auto. He asks for a refactor touching three files. Claude edits the files, then attempts to run the command git reset --hard, and a block notification appears, listed in /permissions under the Recently denied tab.
Write in one sentence what this situation establishes, and in one sentence what it does not establish.
What this establishes: This case establishes that auto mode does not let every command through without a safety net, since a command from the category blocked by default, git reset --hard, was blocked with a notification even under this mode, with no execution.
What this does not establish: It does not establish that every git command triggers a block in auto mode, since only a specific category of commands blocked by default, including git reset --hard, produces this behaviour.
The three most common miscalibrations
- Too broad Auto mode now asks for confirmation before every git command, whatever it is.
- Too narrow This case proves nothing beyond this specific repository, since nothing guarantees that the same command would trigger the same prompt there a second time.
- Off target This case shows that the developer's Pro subscription grants unlimited access to shell commands.
- Claude Code now distinguishes six permission modes, default, acceptEdits, plan, auto, dontAsk and bypassPermissions, not four any more.
- Since version 2.1.228, in an interactive terminal or VS Code session on the Pro, Max and Team plans, the starting mode is no longer default but auto, except for the first session after installation, under claude -p, or on a managed gateway.
- Auto mode acts broadly under the watch of a second model that blocks specific categories by default, such as git reset --hard or terraform destroy.
- Shift+Tab cycles through the available permission modes from the keyboard, without leaving the current session.
- Plan mode stays read only and proposes an approvable plan before any writing, whatever mode follows it.
Launch Claude Code, check the permission mode shown on screen, press Shift+Tab once, and note the name of the mode that displays instead.
Every datable claim in this lesson links here to the public text behind it. A source that does not open proves nothing.
- Claude Code, permission modes, conditions for auto mode by default and plan mode's behaviour consultée le 2026-09-02