Cover: Claude Code continue vs resume, cream background with an illustrated developer at a desk with two monitors and the vibeide.dev logo.
All articles

Claude Code continue vs resume: which session opens

claude --continue reopens the latest session in this folder; claude --resume lets you pick one by name or ID. Picker keys, forking and what is restored.

The short answer: claude --continue (or -c) reopens the most recent conversation in the folder you are in, with no questions asked. claude --resume (or -r) lets you choose: it opens a picker, or jumps straight to a session you name by ID or name. Use continue when you just closed the terminal and want to keep going; use resume when you run several sessions and need a specific one. Both load the same saved transcript, so the conversation itself comes back the same way.

Your agents, in one office.Every task gets a desk and a live status card. Click a desk to focus it.Try VibeiDE free

This guide covers what each command does as of November 2026, how the picker works, what a resumed session restores, and the cases where continue picks the wrong session. Everything below is checked against the official Claude Code sessions documentation and the CLI reference.

Diagram: claude --continue goes straight to the most recent session in the current folder, while claude --resume branches to a list of sessions such as auth-refactor, fix-flaky-tests and spike-streaming that you pick from or name.
--continue always opens the latest session in this folder; --resume lets you choose one, by picker, name or ID.

What is the difference between claude --continue and --resume?

--continue is a shortcut with one fixed target, while --resume is a selector. The table sums it up.

claude --continue / -cclaude --resume / -r
What it opensThe most recent session in the current directoryA session you pick, name or pass by ID
Asks you anythingNoOpens the picker when you pass no argument
Works from another folderNo, it only looks at the current directoryYes, by session ID (searches every project on the machine)
Accepts a nameNoYes: claude --resume auth-refactor
Accepts a transcript pathNoYes: the absolute path to a .jsonl transcript
Includes claude -p sessionsNo (only with claude -p --continue)Yes, when you pass the session ID
Fork into a copyclaude --continue --fork-sessionclaude --resume <id> --fork-session

Inside a running session, /resume does the same job as claude --resume: it opens the picker, or switches directly with /resume <name>.

How do I continue my last Claude Code session?

Open a terminal in the same project folder and run:

claude --continue

Claude Code reopens the latest conversation stored for that directory. If there is none yet, it prints No conversation found to continue and exits. You can also add a prompt for scripts:

claude -c -p "Check for type errors"

Three details decide which session counts as "the most recent one":

  • The folder matters. Sessions are stored per project directory, so running claude -c one level up or in another worktree finds a different session, or none.
  • Some sessions are skipped. Sessions started with claude -p, the Agent SDK, or whose first prompt was /loop are left out of claude --continue. claude -p --continue includes them.
  • Running background sessions are skipped. A finished background session can be continued (Claude Code v2.1.257 or later). If your latest conversation is still running in the background, Claude Code exits with Your most recent conversation is running in the background and its ID.

How do I resume a specific Claude Code session?

Run claude --resume with no argument to open the session picker:

claude --resume

Or go straight to a session:

claude --resume auth-refactor          # by name
claude --resume 550e8400-e29b-41d4-a716-446655440000   # by ID
claude -r "auth-refactor" "Finish this PR"   # resume and send a prompt

A name resolves across the current repository and its worktrees. When the name matches more than one session, claude --resume <name> opens the picker with the name as a search term, while /resume <name> reports an error. A session ID works from any directory: Claude Code searches the current project and its worktrees first, then every other project on the machine, and reports No conversation found with session ID when nothing matches.

You can also reopen the session that created a pull request with claude --from-pr 123, which opens the picker filtered to sessions linked to that PR.

How does the session picker work?

The picker lists sessions for the current worktree by default, including background sessions marked bg. Each row shows the name or generated title, time since last activity, git branch and file size.

Diagram: three nested scopes for the Claude Code session picker. The default view is the current worktree; Ctrl+W widens it to all worktrees of the repository; Ctrl+A widens it to every project on the machine; Ctrl+B filters to the current branch.
The /resume picker starts in the current worktree. Ctrl+W, Ctrl+A and Ctrl+B change what it lists.

The shortcuts you will use most:

ShortcutAction
Enter or 1 to 9Resume the highlighted session, or the one at that position
SpacePreview the session content
Ctrl+RRename the highlighted session
/ or start typingSearch; paste a pull request URL to find the session that created it
Ctrl+WShow sessions from all worktrees of this repository
Ctrl+AShow sessions from every project on this machine
Ctrl+BFilter to sessions from the current git branch
EscLeave search or the picker

When you pick a session from an unrelated project, Claude Code copies a cd and resume command to your clipboard instead of switching folders.

Should I name my sessions?

Yes, if you keep more than two sessions alive at once. A name turns --resume into a one-step command and makes the picker readable. Set it at start with claude -n auth-refactor, mid-session with /rename auth-refactor, or from the picker with Ctrl+R.

Unnamed interactive sessions get a generated title from your first prompt, and you can pass that title to --resume too. The default display name such as my-app-3f, shown in agent view, is not a resume handle.

What does a resumed session restore?

Continue and resume load the same transcript, so they restore the same state:

  • Conversation history, including tool calls and results. A compacted session opens at the Conversation compacted row and continues from the summary.
  • Model and agent. The session stays on its model and, if started with --agent, on that agent.
  • Permission mode, when you resume from a terminal with --continue, a session ID, or a unique name (without -p). A session that ended in bypassPermissions starts in the mode a new session would use.
  • Unexpired session-scoped scheduled tasks.

Not everything comes back. Pass --mcp-config, --settings, --plugin-dir, --fallback-model and --add-dir again if the session depended on them. Settings in settings.json are re-read at launch, so those need nothing. A tool call that was interrupted by a crash is not rerun; Claude is told to check whether it took effect first.

On Pro and Max plans, resuming a long conversation after a long break can show a "Resume this conversation?" dialog with an estimate of how much of your 5-hour limit the saved conversation would use, as of November 2026. If the next task does not need the old context, starting fresh is cheaper. For more on context size, see Claude Code context window.

When should I fork instead of resume?

Fork when you want to try a different approach without changing the original conversation. --fork-session creates a new session ID from the same history:

claude --continue --fork-session
claude --resume auth-refactor --fork-session
Diagram: an original session timeline with ID abc123 continues along the top while a pink branch created by claude --resume abc123 --fork-session splits off with its own ID, leaving the original intact.
--fork-session copies the conversation into a new session ID, so you can try another approach without touching the original.

Inside a session, /branch try-streaming does the same and keeps your "allow for this session" permission grants, because it stays in the same process. A --fork-session launch is a new process, so you approve those again.

Forking also avoids a real trap: if you resume the same session in two terminals without forking, messages from both interleave into one transcript.

Where are Claude Code sessions stored?

Transcripts are JSONL files at ~/.claude/projects/<project>/<session-id>.jsonl, where <project> is the working directory path with non-alphanumeric characters replaced by -. They are kept for 30 days by default; change that with cleanupPeriodDays in settings.json. claude -p --no-session-persistence skips saving for one run.

The file format is internal and changes between versions, so use /export or claude -p --resume <session-id> --output-format json instead of parsing the files in scripts.

Which one should you use?

  • Closed the terminal a minute ago: claude -c.
  • Several sessions in one repo: name them, then claude -r <name>.
  • Session from another project or worktree: claude -r <session-id>, or the picker with Ctrl+W or Ctrl+A.
  • Script or CI step that follows up: claude -p --resume <session-id>.
  • Experiment without risk: add --fork-session.

If you run sessions in parallel worktrees, read Claude Code worktree for --worktree, and Claude Code headless mode for -p runs. For the Codex CLI equivalent, see Codex resume.

Keeping track of many sessions

Resume works well until you have a dozen sessions across several projects and cannot remember which one held which request. In VibeiDE, each task keeps its saved provider conversation, so a follow-up can continue that conversation instead of re-explaining the context, and each project has its own task queue where waiting prompts can be edited or reordered. See resume a Claude Code session from its saved task for how that looks in the app.

Takeaways

  • claude --continue opens the latest session in the current folder; claude --resume opens the one you choose.
  • Name sessions with -n or /rename so claude -r <name> works in one step.
  • Session IDs resume from any directory; names resolve within the repository and its worktrees.
  • --continue skips claude -p, SDK and /loop sessions, and running background sessions.
  • Resuming restores history, model and usually permission mode, but not --mcp-config, --settings or --add-dir.
  • Use --fork-session or /branch to experiment, and never resume one session in two terminals.

Share this article

Post on XShare on LinkedIn

Related articles

Necessary cookies support sign-in, security, your language and this choice. Optional categories stay off until accepted.

First-party page views and acquisition measurement, plus Google Analytics 4 (Google Ireland, data may reach the US). Advertising personalization stays off.

With Analytics enabled, retain Google, Microsoft and Reddit ad click identifiers and share download, signup, activation and purchase conversions with the relevant ad provider. No personalized advertising.

Privacy · Cookie inventory