← All posts

Claude Code for Beginners – Part 2: Plan Mode and Permissions

Okay — by now it’s running, and it’s done something useful for you. And if you’re anything like me, your very next thought was: hold on, what stops this thing doing something I didn’t ask for?

Fair question. It’s the one I want to answer today, and most of the answer turns out to be one key on your keyboard.

Shift+Tab is the whole trick

Claude Code has a handful of permission modes. They decide how much it does without checking with you, and Shift+Tab moves between them mid-session. The status bar at the bottom always tells you where you are.

Honestly, the fastest way to get this is to open a session and press Shift+Tab four or five times while watching that bar. Here’s what you’re cycling through:

What Shift+Tab cycles through Sessions on a paid plan start in auto mode. The first press of Shift+Tab drops you into manual mode, and from there the key cycles in a loop: manual, then accept edits, then plan, then back to manual. Auto ⏵⏵ auto mode on first press Manual ⏸ manual mode on Accept edits ⏵⏵ accept edits on Plan ⏸ plan mode on Shift+Tab
Three modes going round in a loop, and one you quietly start in.

That last part catches people out. If you’re on Pro, Max or Team, your terminal sessions start in auto mode, not manual. So if it’s felt suspiciously relaxed about asking you things — that’s why. Your first Shift+Tab drops you into manual, and from there it just loops.

The modes, in plain words

ModeWhat it does without askingWhen I use it
Manual · defaultReads. That's it.Code I don't know yet
Accept edits · acceptEditsReads, edits files, mkdir / mv / cpWhen I'm watching every change anyway
Plan · planReads and explores, but no edits until you approve a planBefore I change anything. Most of the time
Auto · autoEverything, with a classifier checking as it goesLong jobs I've already scoped
Bypass · bypassPermissionsEverything. No checks.Containers and CI. Never my laptop

There’s a sixth one called dontAsk, but it never shows up in the cycle and it’s really a CI thing. You can forget it exists.

The table tells you what each mode allows. What it can’t show you is how differently the same moment plays out depending on where you’re sitting:

One edit, five different endings When Claude wants to edit a file, manual mode stops and asks you, accept edits just does it, plan mode blocks it until you approve a plan, auto mode has a classifier check first, and bypass mode lets it straight through with nothing checking. Claude wants to edit a file Manual stops and asks you Accept edits just does it Plan blocked until you approve Auto a classifier checks, then goes Bypass straight through, nothing checks
Same action, five different endings. The blue ones are where you still get a say.

Plan mode is where I’d start

If you take one thing away from this post, take this one. Plan mode lets it read everything and change nothing.

Get into it with Shift+Tab, or put /plan in front of a single prompt, or start the whole session in it:

claude --permission-mode plan

It goes off, reads your files, pokes around, and comes back with a plan — a written description of what it intends to do. Your source is untouched the whole time. Then it asks:

~/projects/my-app · ⏸ plan mode on
⏺ Read src/server.ts, src/routes/public.ts
⏺ Read package.json
 
  Here's my plan:
  1. Move the rate limiter into middleware
  2. Wire it into the two public routes only
  3. Add a test for the 429 path
 
Would you like to proceed?
❯ 1. Yes, and use auto mode
  2. Yes, manually approve edits
  3. No, keep planning

Option 3 is the one worth knowing about. Arguing with a plan costs you thirty seconds. Undoing a bad change costs a lot more than that. I use it constantly — usually to say “yes, but don’t touch the migrations” or “just do the first two steps.”

Two smaller things while you’re here. Ctrl+G opens the plan in your editor, so you can fix it yourself instead of describing the fix. And pressing Shift+Tab again backs out of plan mode without approving anything at all.

Don’t just hit yes

I’ll be honest with you: I have absolutely rubber-stamped things I should have read properly. Everyone does. The prompt appears, you’re mid-thought, you hit 1.

So here are the two habits that actually saved me, and neither of them is a setting.

Commit before you hand over anything big. Then git diff is your undo button and you can afford to be relaxed about the rest.

Run /diff before you accept a pile of work. Seeing everything uncommitted in one go is much easier than judging fifteen prompts one at a time, half-distracted.

And when you do read a prompt, the things worth actually looking at are: which file, which command, and whether it’s reaching outside the project at all.

Answer the boring ones once

Some approvals you are never going to say no to. Running the test suite. Checking git status. Rather than answering those forever, run /permissions and pre-approve them — or block the things that should never happen:

{
  "permissions": {
    "allow": ["Bash(npm test)", "Bash(git status)"],
    "deny": ["Bash(sudo *)"]
  }
}

Deny rules win in every mode, including the reckless ones. And plain read-only commands like ls, cat and grep never prompt anyway, so don’t bother listing those.

⚠️ bypassPermissions skips every check there is. It’s built for throwaway containers and CI, not for the laptop your actual work lives on. If a tutorial opens by telling you to turn it on, close the tutorial.

Making plan mode stick

If you want one project to always start in plan mode, drop this into its .claude/settings.json:

{
  "permissions": {
    "defaultMode": "plan"
  }
}

One gotcha worth knowing, because otherwise it’ll cost you an afternoon: "auto" and "bypassPermissions" are quietly ignored from project settings files. Those two only work from your own ~/.claude/settings.json. So if you set one and nothing happened, that’s why — nothing’s broken.

Next time

Part 3 is about CLAUDE.md, the file that stops you explaining your own project from scratch every single session. It’s probably the highest-value half hour you’ll spend on any of this.

In the meantime, go and live in plan mode for a week. I think you’ll like it there. 🙂