Shift+Tab cycles Claude Code's permission modes — and plan mode is the one to learn
One keystroke moves Claude between asking before every edit, editing without asking, and reading without touching anything. Knowing which mode you're in is most of the skill.
Claude Code has a permission mode, and Shift+Tab rotates through it. Press it on an empty prompt and the indicator above the input cycles default → auto-accept edits → plan mode → back to default. The mode decides how much Claude does before it stops to ask you, and it is the single dial that most changes how a session feels — yet many people never touch it and run every session in default, confirming each edit by hand.
Default mode is the cautious one. Claude proposes each file edit and each command and waits for you to approve it. That is the right setting when you're working in code you don't fully trust Claude on yet, or in a repository where a wrong write is expensive. It's also the slowest, because you're in the loop on every step, which is exactly the point.
Auto-accept edits — one Shift+Tab from default, shown as “auto-accept edit on” — stops the per-edit prompts. Claude applies its edits and keeps moving. Reach for this once you've watched Claude work the task for a few turns and trust the direction: a mechanical refactor, a batch of renames, scaffolding a new module. The win is flow; the cost is that you're no longer the gate on each change, so you lean on the rewind menu and on git rather than on approval prompts.
Plan mode is the one worth building a habit around. Another Shift+Tab and Claude goes read-only: it can read files, search, and reason about an approach, but it cannot edit, write, or run commands that change state. You use it at the start of anything non-trivial — point Claude at a bug or a feature, let it investigate and propose a plan, read the plan, then exit plan mode to execute. It separates “figure out what to do” from “do it,” which is where most bad sessions go wrong: Claude starts editing before it understands the shape of the problem. Plan mode makes that mistake structurally impossible.
Two modes exist but aren't in the default cycle. Auto appears only if your account qualifies, and the first time you cycle to it you get an opt-in prompt. bypassPermissions — Claude does everything without asking, ever — only shows up if you launched with --permission-mode bypassPermissions or --dangerously-skip-permissions. The name is the warning: it removes the last guardrail, so keep it for throwaway sandboxes, never a repo you care about.
The trap is losing track of which mode you're in. Auto-accept edits persists until you cycle out of it, so it's easy to flip it on for one trusted stretch, forget, and later hand Claude a riskier task while it's still applying edits unprompted. Glance at the indicator above the input before a big ask. The matching good habit: start non-trivial work in plan mode, read the plan, then drop to default or auto-accept to carry it out — you get a reviewed approach and your chosen level of hand-holding for the execution.
The try-it below cycles all three modes in one session so the indicator and the behavior change become muscle memory.
Open a scratch project and watch the indicator change as you cycle modes.
mkdir -p /tmp/perm-demo && cd /tmp/perm-demo
echo 'print("hi")' > app.py
claude
Inside the session, press Shift+Tab once and watch the line above the prompt read auto-accept edit on. Press it again for plan mode on. Now, in plan mode, ask:
Add argument parsing and logging to app.py.
Claude will research and return a plan instead of editing — it physically cannot write while in plan mode. Press Shift+Tab to return to default, approve the edits, and you've run the figure-it-out-then-do-it loop end to end.