Claude Code Resume Conversation: Continue Any Session
October 27, 2026

To resume a conversation in Claude Code, run claude --continue (or claude -c) to reopen the most recent session in the current directory, or claude --resume (or claude -r) to pick one from a list or jump straight to a session by name or ID. Already inside a session? Type /resume to switch to another one without quitting.
The rest of this guide covers what happens when the obvious command doesn't find your session: it lives in another folder, a script started it, or it's in the desktop app or the cloud.
Here's the short version:
| You want to | Run |
|---|---|
| Pick up exactly where you just left off | claude -c |
| Choose from a list of past sessions | claude -r |
| Jump to a session you named | claude -r auth-refactor |
| Switch sessions without quitting | /resume |
| Try a different approach without touching the original | /branch, or claude -c --fork-session |
| Pull a cloud session into your terminal | claude --teleport |
Everything below is checked against Anthropic's Manage sessions documentation and the CLI reference.
Three ways to resume a Claude Code conversation
A session in Claude Code is a saved conversation tied to a project directory. It's written to disk continuously as you work, so quitting, crashing or running /clear doesn't lose it. You get it back in one of three ways.
claude --continue: the most recent session in this folder
claude --continue (short form -c) reopens the latest conversation in the directory you're standing in. No picker, no questions. It's the right command when you closed the terminal ten minutes ago and want to keep going.
If the folder has no previous session, Claude Code prints No conversation found to continue and exits.
It also skips a few session types on purpose, such as claude -p runs. The troubleshooting table below covers those.
claude --resume: a picker, a name or an ID
claude --resume (short form -r) does more than one thing depending on what you pass it:
| Command | What happens |
|---|---|
claude --resume | Opens the interactive session picker |
claude --resume <name> | Resumes the session with that name; opens the picker pre-filtered if more than one matches |
claude --resume <session-id> | Resumes that exact session, even from a different directory |
claude --resume <transcript-path> | Resumes from the absolute path of a .jsonl transcript file |
claude --from-pr 123 | Opens the picker filtered to sessions linked to that pull request |
The session ID route is the most forgiving. Claude Code searches the current project and its git worktrees first, then every other project on the machine. If nothing matches, you'll see No conversation found with session ID: followed by the ID.
/resume: switch without leaving
Inside a running session, /resume opens the same picker. /resume <name> jumps straight to a named session; if the name is ambiguous it reports an error rather than guessing, so run /resume alone and pick from the list.
/resume also brings back a conversation you wiped with /clear. Clearing starts a new session; the old one is still saved. That's one of several built-in Claude Code slash commands that manage session state rather than talk to the model.
Name your sessions so you can find them
Once you run two or three tasks in parallel, the picker fills up with similar-looking rows. Names fix that.
| When | How |
|---|---|
| At startup | claude -n auth-refactor (long form --name) |
| Mid-session | /rename auth-refactor |
| In the session picker | Highlight a row and press Ctrl+R |
| After accepting a plan | Claude Code titles the session from the plan, unless you already named it |
Sessions you never name still get a generated title, a short summary of your first prompt. You can pass that title to claude --resume just like a name.
They also get a default display name made of the folder name plus a two-character suffix, something like my-app-3f. That one shows up in lists of running sessions, but it is not a resume handle. Pass it to --resume and Claude Code won't find the session. This trips people up because it's the label they see most often.
Session picker shortcuts
The picker is keyboard-driven. The keys worth memorizing:
| Key | Action |
|---|---|
Enter or 1 to 9 | Resume the highlighted session, or the one at that position |
Space | Preview what's in the session before opening it |
/ or start typing | Search; paste a pull request URL to find the session that created it |
Ctrl+B | Show only sessions from the current git branch |
Ctrl+W | Widen to every worktree of this repository |
Ctrl+A | Widen to every project on this machine |
Each row shows the name or title, time since last activity, git branch and file size. For the rest of the terminal's key bindings, see our Claude Code keyboard shortcuts guide.
What comes back when you resume
Resuming isn't a fresh start with a summary pasted in. Claude Code reloads the saved state:
- Conversation history: messages, tool calls and results. If the session was compacted, it reopens at the
Conversation compactedmarker and continues from that summary plus everything after it. Our guide to Claude Code auto-compact explains what survives that step. - Model: the session keeps the model it was using.
- Permission mode: restored when you resume from a terminal with
--continue, a session ID, or an unambiguous name. Resuming through the picker or/resumefollows different rules, and a session that ended inbypassPermissionsdoes not come back in that mode. - Interrupted tool calls: a command that was mid-run when the process died isn't rerun. Claude sees it marked as cut off and is told to check whether it took effect first.
Some things don't come back. Launch flags such as --mcp-config, --settings, --plugin-dir and --add-dir have to be passed again. Folders added mid-session with /add-dir aren't restored either. Anything in your normal settings.json files is re-read at launch, so that part takes care of itself.
The "Resume this conversation?" dialog
On Pro and Max plans, resuming a long conversation after a long break can show a dialog estimating how much of your 5-hour usage limit the saved conversation would use. If the next task doesn't need the old context, pick Start a new conversation; the old one stays available through /resume.
Fork a session instead of continuing it
Sometimes you want the context but not the commitment. Branching copies the conversation so far and switches you into the copy, leaving the original untouched.
- Inside a session:
/branch try-streaming. Skip the name and Claude Code names the branch after your first prompt. - From the command line: add
--fork-sessionto a resume, as inclaude --continue --fork-sessionorclaude --resume abc123 --fork-session.
The branch gets its own session ID and its own row in the picker. Get back to the original with /resume.
One warning from the docs worth repeating: if you resume the same session in two terminals without forking, messages from both interleave into one transcript. If you want two parallel lines of work, fork first.
Branching is different from rewinding. /rewind moves you back to an earlier point in the same session and can restore files; a branch gives you a second place to work. Our Claude Code revert guide covers the rewind side.
Continue a session in the desktop app, VS Code or the cloud
The CLI, the desktop app, claude.ai/code and the VS Code extension each keep their own session list. Moving between them takes a specific command.
Terminal to the desktop app
In the Claude desktop app, Claude Code lives in the Code tab. Running /desktop in a terminal session saves it, opens it in the app and exits the CLI. From your shell, claude --desktop --resume <session-id> does the same for a specific session. That flag takes only an ID, not a name; /status shows the ID.
You can also go the other way round: close the terminal session, type /resume in a local Desktop session, and choose from the sessions you started in the CLI. Desktop continues the same session rather than a copy, so claude --resume still finds it afterwards.
/desktop needs macOS or x64 Windows and a Claude subscription sign-in. It isn't available with API key authentication or through Bedrock, Google Cloud or Microsoft Foundry.
Desktop or terminal to the cloud, and back
In the desktop app, open the session menu (the caret beside the session title, or the session's row in the sidebar), select Open in, then Cloud. The conversation carries over as a summary, not the full transcript, and the dialog tells you whether your files move too.
From the CLI, the handoff is one-way. claude --cloud "task" starts a new cloud session, but you can't push an existing terminal session up. You can pull one down: claude --teleport opens a picker of cloud sessions, and claude --teleport <session-id> goes straight to one. Teleport checks that you're in a checkout of the same repository, asks you to stash uncommitted changes, then fetches the session's branch and loads the full conversation.
Note that --resume and --teleport don't overlap. --resume only reads this machine's local history and never lists cloud sessions.
VS Code
The VS Code extension has a Session history button at the top of the Claude Code panel. Search by keyword or browse by time, then click a conversation to resume it. Inactive sessions move to an Archived sessions group after 14 days by default, and you can unarchive them from there.
Where Claude Code stores sessions
By default, transcripts are JSONL files at:
~/.claude/projects/<project>/<session-id>.jsonl
<project> is your working directory path with every non-alphanumeric character turned into -. That's why the same repo opened from two different paths gives you two separate session lists.
Three settings change this:
| To | Set |
|---|---|
Move storage off ~/.claude | CLAUDE_CONFIG_DIR environment variable |
| Keep transcripts longer or shorter than the default 30 days | cleanupPeriodDays in settings.json |
| Stop writing transcripts at all | CLAUDE_CODE_SKIP_PROMPT_HISTORY environment variable |
The 30-day retention matters: a session you haven't touched for a month may be gone for good. To keep a readable copy, run /export. Don't build scripts that parse the JSONL directly; Anthropic says the format is internal and changes between versions.
Troubleshooting: when a session won't resume
| Symptom | Likely cause | Fix |
|---|---|---|
| Session missing from the picker | You're in a different directory or worktree | Press Ctrl+W for all worktrees or Ctrl+A for all projects |
claude -c opens the wrong session or none | It only looks at the current directory | cd to the original folder, or use claude -r <session-id> |
| A scripted run never appears | claude -p and Agent SDK sessions are hidden from the picker and --continue | Resume it by ID: claude --resume <session-id> |
Session started with /loop isn't listed | Sessions whose first prompt was /loop are hidden | Use claude -p --continue, or resume by ID |
claude -c says the conversation is running in the background | The latest session is still a live background session | Attach from claude agents, or pick another with claude -r |
| Name doesn't work | You used the default display name, or the name matches several sessions | Use the generated title, a name you set, or the session ID |
| Session from a month ago is gone | Default 30-day cleanup | Raise cleanupPeriodDays for the future; export important sessions |
One more case: when you pick a session from an unrelated project in the picker, Claude Code doesn't switch folders for you. It copies a cd and resume command to your clipboard instead. Paste it and run it.
FAQ
What's the difference between claude --continue and claude --resume?
--continue reopens the most recent session in the current directory with no prompt. --resume lets you choose: it opens a picker, or takes a name, session ID or transcript path.
Can I resume a Claude Code conversation from a different folder?
Yes, by session ID. claude --resume <session-id> searches the current project first and then every other project on the machine. Names only resolve within the current repository and its worktrees.
Does resuming restore my file changes?
Resuming restores the conversation, not your working tree. Your files are whatever is on disk now. Checkpoints are saved with the conversation, though, so /rewind still works after you resume.
How do I save a Claude Code conversation?
You don't need to. Claude Code saves every session automatically as you work. To keep a readable copy outside the 30-day retention window, use /export.
Can I continue a terminal session in the cloud?
Not directly from the CLI; handoff from the terminal is one-way, cloud to terminal with --teleport. You can move a terminal session into the desktop app with /desktop, then use Open in, Cloud there, which carries the conversation over as a summary.
Key takeaways
claude -cfor the last session here,claude -rfor a picker, name or ID,/resumefrom inside a session.- Name sessions with
-nor/rename; resume by ID when you're in the wrong folder. - Fork with
/branchor--fork-sessionrather than opening one session in two terminals. - Transcripts live in
~/.claude/projects/and are cleaned up after 30 days by default.
Resuming solves the "I lost my context" problem inside one tool. The harder version is rebuilding someone else's working setup from scratch. Taku mirrors an AI workflow someone already got working into a desktop workspace where you can run it, edit it and save it as your own. Taku is in Beta, and the Mac app is available now.