How do I resume a specific Claude Code session?
claude --resume Opens the session picker. Pass a name or ID to skip it.
Answer
Run claude --resume to open a picker listing this project's sessions, or pass an identifier to skip it: claude --resume <name> for a name you set with /rename, or claude --resume <session-id>. The ID form works from any directory — Claude Code looks in the current project and its worktrees first, then everywhere else on the machine.
What it does
--resume opens a session you choose, rather than the newest one.
claude --resume
With no argument it shows a picker. Each row carries the session's name or title, how long since it was last active, the git branch, and its size — enough to recognise the one you want without opening it.
The picker has its own keys:
↑↓to move,Enterto resume/or any character to searchCtrl+Afor every project on the machineCtrl+Wfor every worktree of this repositoryCtrl+Bto filter by the current branch
Passing an identifier skips the picker. A name works if you set one with --name or /rename. A session ID works from any directory: Claude Code looks in the current project and its git worktrees first, then in every other project on the machine.
The short form is -r.
When to use it
Reach for --resume when "the last one" is not what you want:
- returning to a task you parked while doing something else
- picking up a session from a different project or worktree
- scripting against a known session ID in a non-interactive run
In non-interactive mode the picker cannot open, so pass the ID explicitly:
claude -p "summarise what we decided" --resume <session-id>Example
Pick from the list:
claude --resume
Resume a session you named earlier:
claude --resume auth-refactor
Names come from /rename inside a session, or --name at startup:
claude --name auth-refactor
Resume by ID from anywhere:
claude --resume 7f3d9a2c-1b4e-4c8a-9f2d-3e5b7c1a0d6f
Transcripts live at ~/.claude/projects/<project>/<session-id>.jsonl, where <project> is your working directory path with non-alphanumeric characters replaced by -, so the IDs are discoverable on disk.
Common mistakes
Expecting the picker in a -p run. Non-interactive mode has no UI to show it. Without an explicit ID there is nothing to pick from.
Assuming a name exists. Sessions get an AI-generated title, but a *name* is something you set. --resume <name> only matches names you assigned.
Looking for a session older than the retention window. Transcripts are kept 30 days by default; cleanupPeriodDays in settings.json changes that.
Using it when --continue would do. If you want the most recent session in this directory, --continue needs no argument and no choosing.