2.1.x · macOS / Linux
What is a “session,” and where does it go? #
Every time you run claude, you start a session, one conversation, with
its full history. When you quit, that history doesn’t vanish. Claude Code saves
it to disk, organized per project folder, here:
~/.claude/projects/<your-project>/<session-id>.jsonlEach .jsonl file is one session. So your conversations are all still there.
The problem is finding the right one later.
The built-in way to get back: /resume and --continue
#
Claude Code already ships two ways to return to a past session.
Continue the most recent one (in the current folder):
claude --continue # or the short form: claude -cPick from a list: run this and you get an interactive picker:
claude --resume # or: claude -rOr, from inside a running session, type the slash command:
/resumeThe picker shows your past sessions with a summary, how long ago you used them, and (if you named them, more on that soon) a title. Use the arrow keys, press Enter to resume, Esc to cancel.
The shortcut nobody tells you about: Ctrl+A
#
Here’s the catch that trips up most people: by default, the picker only shows sessions from the folder you’re currently in. So if you’re in the wrong directory, your session looks “lost” when it’s really just filtered out.
The fix: open the picker and press Ctrl+A. That widens it to every
project on your machine. Suddenly everything is there.
A few more handy keys inside the picker (they’re shown along the bottom, so you don’t have to memorize them):
| Key | What it does |
|---|---|
| (type anything) | Fuzzy-search the list |
| Ctrl+A | Show sessions from all projects |
| Ctrl+B | Filter to your current git branch |
| Ctrl+R | Rename the highlighted session |
| Enter / Esc | Resume / cancel |
Tip: you can also paste a GitHub pull-request URL into the search to find the session that created it.
Resume by name (once your sessions have names) #
If a session has a name, you can jump straight to it:
claude --resume "my-feature" # exact match resumes immediately
claude -r my-feature # partial: opens the picker pre-filteredThe real fix: give your sessions names #
Searching only works if there’s something readable to search for. Out of the box, sessions are unnamed, so the picker falls back to auto-summaries that all look kind of the same.
Three ways to name a session:
- At launch:
claude --name "auth-refactor" - While running: type
/rename auth-refactor - Automatically: when you accept a plan in plan mode, Claude names the session from the plan.
Naming the keepers turns /resume from “scroll and squint” into “type three
letters and hit Enter.”
Your new cheat sheet #
claude -c # resume the most recent session here
claude -r # open the picker → press Ctrl+A for ALL projects
claude -r my-feature # jump to a session by name
/rename my-feature # name the session you're in (do this for keepers!)That’s 90% of the battle. But typing /rename every time is a chore, and
you’ll forget. In Part 2 we’ll write a tiny
hook that names every session automatically, so the picker is always
searchable without you lifting a finger.