Most "how do I resume" guides online were written for an older Claude Code, before cross-project resume existed. Here is what works today.
The four ways back in
| Command | What it does |
|---|---|
claude --continue | Reopens the most recent conversation in the current directory |
claude --resume | Opens the session picker |
claude --resume <name or id> | Resumes that session directly |
/resume | Switches to another conversation from inside a session |
Resume from a different directory
Since v2.1.223, you can run claude --resume <session-id> from any directory. Claude Code looks for the ID in the current project and its worktrees first, then in every other project on the machine. Older versions only looked in the current directory, which is why so many forum answers tell you to cd first. You no longer have to.
One catch: if the same session ID exists in more than one project, for example because you copied a transcript by hand, Claude Code reports it as not found rather than guessing which one you meant.
Resume by name
Unnamed sessions get a generated title, a short summary of your first prompt, and you can resume by that title. Names you choose are easier to remember:
claude -n auth-refactornames a session when you start it./rename auth-refactornames it from inside.Ctrl+Rin the session picker renames the highlighted one.
Then claude --resume auth-refactor goes straight back to it. If more than one session matches, the picker opens with the name filled in as a search.
Use the picker well
claude --resume with no argument opens the picker. The shortcuts that matter:
Ctrl+Ashows sessions from every project on this machine.Ctrl+Wshows every worktree of the current repository.Ctrl+Bfilters to your current git branch.Spacepreviews a session before you open it.- Paste a GitHub or GitLab pull request URL to find the session that created it, or start with
claude --from-pr <number>.
When the transcript is gone
If claude --resume says No conversation found with session ID, the most common reason is that the transcript passed the 30-day cleanup and was deleted. Claude Code can't bring it back, but your prompts are still in ~/.claude/history.jsonl. If you have a copy of the transcript, pass its path directly:
claude --resume /path/to/<session-id>.jsonlTo stop this happening, raise cleanupPeriodDays or archive transcripts as sessions end. Why Claude Code sessions disappear covers both.
What comes back when you resume
The full conversation, including tool calls, the model it was using, a subagent it was running as, an active goal, and scheduled tasks that haven't expired. Background shell commands don't come back. Flags you passed at launch, such as --add-dir or --mcp-config, need to be passed again; anything in your settings files is re-read automatically.
On a Pro or Max plan, resuming a large session after about an hour offers to resume from a summary instead, which costs less on every later message but drops detail. Pick the full session when you need exact context, such as mid-refactor.
Try something different without losing the original
/branch inside a session, or claude --continue --fork-session from the shell, copies the conversation into a new session and leaves the original untouched. Useful when you want to try a second approach.
The part none of these commands solve is knowing which session to resume. When you have twenty of them across five projects, Shabash shows every thread you left unfinished each morning, and reopens the ones you pick in the right folder.