Claude Code resume session: find any old chat
To resume a Claude Code session, run claude --continue for the last one in the current folder, or claude --resume to pick from a list. That covers most days. The trouble starts when the session you want is not in the list: it was in another folder, it is older than a month, or it was started in the desktop app. This guide covers the commands, then every reason a session seems to vanish and how to get it back.
In short
claude --continuereopens the most recent session in the current folder;claude --resumeopens the session picker;/resumedoes the same from inside a session.- The picker shows the current folder by default: press
Ctrl+Afor every project on the machine. - Transcripts live in
~/.claude/projects/<project>/<session-id>.jsonland are deleted after 30 days unless you changecleanupPeriodDays. - The desktop app, claude.ai/code and the VS Code extension keep their own session lists.
- Tarmac lists every Claude Code session of every project, and every Codex session too, with a Resume button.
The three commands
From a terminal, in the project folder:
claude --continue # the most recent session in this folder
claude --resume # open the session picker
claude --resume auth-fix # resume a named session directly
From inside a running session, /resume opens the same picker and switches to the session you choose. If you name sessions when you start them (claude -n auth-fix) or later (/rename auth-fix), you can resume them by name instead of scrolling.
Since Claude Code links sessions to the pull requests it creates, claude --from-pr 123 opens the picker filtered to the sessions of that PR.
Get the most out of the picker
Each row shows the name (or the generated title), the time since the last activity, the Git branch and the file size. The shortcuts that matter:
| Key | What it does |
|---|---|
Space | Preview the session before opening it |
/ or any letter except j and k | Search the sessions |
Ctrl+A | Show sessions from all projects on this machine |
Ctrl+W | Show sessions from all worktrees of the repository |
Ctrl+B | Only sessions from the current Git branch |
Ctrl+R | Rename the highlighted session |
If you pick a session from an unrelated project, Claude Code copies a cd and resume command to your clipboard, so you can paste it and land in the right folder.
Why a session seems to have disappeared
1. You are in another folder. Sessions are stored per project folder, and the picker starts with the current one. Press Ctrl+A, or run claude --resume <session-id>: an ID is looked up in every project on the machine.
2. It is older than 30 days. Claude Code deletes transcripts after 30 days by default. To keep a year of history, add this to ~/.claude/settings.json:
{
"cleanupPeriodDays": 365
}
It does not bring back what is already deleted, so set it before you need it.
3. It was started in another app. The Claude desktop app, claude.ai/code and the VS Code extension each keep their own session list. A cloud session started on claude.ai/code does not run on your machine, so it is not in your local transcripts.
4. It was started by a script. Sessions created with claude -p or the Agent SDK, and sessions whose first prompt was /loop, are left out of the picker and of --continue. You can still open one with claude --resume <session-id>.
5. The project folder moved. The folder name under ~/.claude/projects/ is derived from the project’s path. After a rename or a move, old sessions are still stored under the old path: Ctrl+A in the picker finds them.
Where transcripts are stored
Each session is a JSONL file:
~/.claude/projects/<project>/<session-id>.jsonl
<project> is your working folder path with every non-alphanumeric character replaced by -. To find a session by something you remember saying, a plain search works:
grep -l "stripe webhook" ~/.claude/projects/*/*.jsonl
The file name is the session ID you pass to claude --resume. The format inside is internal to Claude Code and changes between versions: search it, but do not build scripts that parse it. For a readable copy of a conversation, use /export.
Resume without losing the original
Resuming continues the same conversation. To try another approach while keeping the original intact, branch it:
claude --continue --fork-session
or, from inside a session, /branch try-another-approach. The branch gets its own session ID and its own row in the picker.
And for Codex
Codex works the same way: codex resume opens a picker of past sessions, codex resume --last skips it and reopens the most recent session of the current folder, and --all includes sessions outside the current folder. Codex keeps its sessions in ~/.codex/sessions.
See every session of every project with Tarmac
Terminal pickers show one project at a time. Tarmac, a free and open source local dashboard for macOS and Windows (WSL 2), reads the same transcripts and lays them out per project:
- A Claude tab in every project with all its sessions, active or finished: title (from
/rename, else the summary, else the first message), last activity, number of messages and branch. - Active sessions flagged, including the ones running in another terminal or an IDE, with a light while they work.
- Resume in one click, in a console built into Tarmac, with Remote Control so you can carry on from claude.ai or your phone.
- Codex sessions in a Codex tab, if you use it, resumed with
codex resume <id>the same way.
Tarmac reads only the start and end of each transcript, with a cache, so the list stays fast with hundreds of sessions. It shows what is on your disk: sessions started in the cloud on claude.ai/code do not appear, and the 30-day cleanup still applies, so set cleanupPeriodDays if you want a long history.
Next steps
Install Tarmac for free and open any project’s Claude tab. If you run several sessions at the same time, read how to run multiple Claude Code sessions at once.
Sources: Claude Code documentation, Manage sessions and CLI reference; OpenAI, Codex commands. Checked on 6 November 2026.