Why did my session resume in a different permission mode?
claude --continue --permission-mode acceptEdits A mode passed at resume overrides whatever the session had stored.
Answer
A terminal --continue or --resume by ID or name restores the mode the session was in, with four exceptions: bypassPermissions and plan come back as a new session would start; auto only if your account still meets its requirements; and a session that ended in Manual comes back in whatever defaultMode a settings file sets. The session picker, /resume inside a session and -p runs never restore the stored mode. Pass --permission-mode at resume to get the mode you want regardless.
What it does
Resuming from a terminal with claude --continue, claude --resume <session-id> or claude --resume <name> restores the permission mode the session was in. Everything below is an exception to that sentence, and each one has its own tell.
It ended in bypass or plan and came back in something else
Both are dropped on purpose. A session that ended in bypassPermissions or in plan resumes in the mode a new session would start in. For bypass that is by design: the mode can only be entered at launch, with one of its flags or permissions.defaultMode: "bypassPermissions" in user, --settings or managed settings, and a resume is not a launch with that flag.
It ended in Manual and came back in acceptEdits
The one that reads like a bug. Manual is restored only when a new session would have started in auto mode from the built-in default. When a defaultMode from a settings file takes effect, the resumed session starts in that mode instead, so a project with "defaultMode": "acceptEdits" in its .claude/settings.json turns a Manual session into an acceptEdits one on resume. The stored mode lost to the configured one.
Auto mode is gone
auto is restored only while your account still meets its requirements: model, provider, and no disableAutoMode in any settings file. A model change, a policy change or a session started against a different provider since then lands you in Manual, and the auto mode page covers the checks.
The picker or /resume did not restore anything
Neither path restores a stored mode, whichever mode the session ended in. A session you select from the picker, whether you opened it with claude --resume alone, claude --from-pr, or a name that matched more than one session, starts in the mode a new session would start in from the same command line. /resume inside a running session, with or without an argument, continues in the mode your current session is in.
A -p run ignores the stored mode
claude -p --resume and claude -p --continue start in the mode a new -p run would start in, Manual unless a settings file says otherwise. The single exception is plan mode, kept only when all four hold: you pass --permission-prompt-tool so the plan can be presented for approval, you pass neither --permission-mode nor --dangerously-skip-permissions, you do not pass --fork-session, and the run is not started through channels. Requires v2.1.246 or later.
Two more things a resume does not bring back, unrelated to the mode: flags such as --add-dir, --mcp-config, --settings, --plugin-dir and --fallback-model, and directories added mid-session with /add-dir. Pass them again.
How to check
The status bar says which mode you are in: a grey ⏸ manual mode on, or ⏵⏵ accept edits on, ⏸ plan mode on, ⏵⏵ auto mode on, ⏵⏵ bypass permissions on.
Then match how you resumed against the list above. Terminal with an ID or an unambiguous name restores; the picker, /resume and -p do not. If it was a terminal resume and the mode still changed, the session ended in bypass or plan, auto is no longer available, or a settings file sets a defaultMode. That last one is worth checking with the file open: which file wins is a separate question.
How to fix it
You want a specific mode on resume. Pass it. --permission-mode and --dangerously-skip-permissions override the restored mode on every path:
claude --continue --permission-mode plan
You want bypass back. It has to be enabled at launch, so resume with its flag rather than expecting the session to remember:
claude --resume <session-id> --dangerously-skip-permissions
You resumed from the picker and lost the mode. Resume by ID or by a unique name instead; those two paths restore it.
Auto mode did not come back. Fix the requirement that lapsed, then resume again; the mode is restored, not re-requested.
Example
Ended in acceptEdits, resumed from the terminal: restored, no flag needed.
claude --continue
Ended in plan, resumed from the terminal: comes back in the new-session mode, so ask for plan mode explicitly.
claude --continue --permission-mode plan
Ended in plan mode, resumed non-interactively with a way to present the plan:
claude -p --continue --permission-prompt-tool <tool> "carry on"Common mistakes
Blaming the resume for a mode the settings chose. A Manual session that comes back in acceptEdits is the project's defaultMode taking effect, not a restore failure.
Expecting /resume to switch modes. It switches conversations. The mode stays whatever your current session has.
Expecting bypass to survive. It never does, on any path. That is the same rule that keeps it out of the Shift+Tab cycle unless enabled at launch.
Passing --add-dir once and assuming it sticks. Directories are not part of the stored session. Pass the flag on every resume that needs them.