Run claude --continue, or claude -c, to reopen the most recent session for the directory you are in. Run claude --resume when you need a picker, or pass a session name or ID to restore one directly. That covers both meanings people put behind “get my session back.” The remaining traps are picker scope, worktrees, retention, and whether you should branch instead of writing into the original.
--continue or --resume: which one you want
They sound like synonyms and they are not. One assumes it knows which session you mean, the other asks:
claude --continueNo question asked. Reopens the most recent session for the current directory. Use it when you closed the terminal ten minutes ago and want the thread back. claude -c is the same thing.claude --resumeAsks first. Opens a picker of past sessions so you choose. Use it when the one you want is not the last one, or when you are not sure which it is.claude --resume <name-or-id>Restores directly. Use a session name or ID when you already know the target. Named sessions can resolve across the current repository and its worktrees.claude -c -p "..."Continue without a terminal. Combines continue with print mode, so a script can resume the last session, send one prompt, and take the answer. This is the form that makes -c useful in a pipeline rather than just at a keyboard.How to find and restore a session that is not the latest
Run claude --resume from the shell or /resume inside Claude Code. The picker starts with sessions for the current worktree. Widen it deliberately when the session is missing, because an old conversation is often stored under another worktree or project rather than deleted.
Ctrl+WSearch every worktree of the current repository. Use this when the task belongs to the same repo but a different branch directory.Ctrl+ASearch every project on the machine. The picker shows project paths after you widen the scope./rename auth-refactorGive an important session a stable name while you are in it. Restore it later with claude --resume auth-refactor instead of hunting for an ID./resumeSwitch sessions from inside an active conversation. Passing an exact name resumes it directly; no argument opens the picker.The directory decides what you continue
This is the one real gotcha, and it explains almost every "it continued the wrong conversation" report. --continue is scoped to the directory you launch it from, not to your machine and not to the clock. The most recent session in ~/code/api and the most recent session in ~/code/web are two different sessions, and -c gives you whichever belongs to where you are standing. Sessions you pulled in with /add-dir count as part of that directory too.
Git worktrees make this sharper than people expect. Two worktrees of the same repo are two different paths, so they hold two different session lists. Continue from the wrong worktree and you get a genuinely different conversation, not an empty one, which is far more confusing. If -c hands you something unfamiliar, check pwd before you check anything else.
Fork when you want to try something without spending the thread
claude --continue --fork-session reopens the same conversation but writes it forward under a new session id, leaving the original untouched. It is the cheap answer to "I want to try a risky direction from here." Continue normally and the detour is now part of the only copy you have. Fork and the thread you liked is still sitting there to go back to. The same flag works with --resume.
When a session really is gone
Claude Code saves local session files continuously and removes them after 30 days by default. The cleanupPeriodDays setting changes that window. If a session is absent after you search the current worktree, every worktree, and every project, check its age before assuming the picker is broken. A session deleted by retention cannot be restored from the picker.
Before you continue a long one, check what you are dragging with you
Continuing is not free. You are not just getting the conversation back, you are getting its whole context back, including everything that made it slow the first time. Three quick checks:
- If it was already slow, do not continue it. A session that crawled at the end will crawl from the first message when you reopen it, because the thing that slowed it down was its own size. Start fresh and paste in the two facts that matter.
- If it ended right after a compaction, expect a summary, not a transcript.
/compactreplaces the conversation with a structured summary and stays in the same session. Continue it and you inherit the summary, so anything the summariser dropped is gone from context even though it is still in the file. - If you only need one fact from it, do not reopen it at all. Continuing to retrieve one decision costs you the entire context window of that old session. Go read the transcript instead, or better, keep the decision somewhere that is not a transcript.

Continuing restores the words, not the plan
Here is what -c cannot do. It gives you back every message, which sounds like everything and is not. What you actually want when you sit down again is the short version: what am I building, which step am I on, what did we decide last time and why. That is three lines. Continuing a session hands you three hundred messages and asks you to reconstruct those three lines yourself, and so does the agent.
So the kit writes the three lines down as it goes. Our /step and /start skills update lastSession.note in .kitstarter/journey.json with a one-line human summary before they finish ("finished the booking page skeleton"), and the SessionStart hook prints it back at you the next time you open the project: a progress bar, the step you are on, and a Last time: line. It costs one line of context instead of an entire window, it works in a fresh session, and it does not care whether you continued, resumed, or started over.
The rule of thumb: continue when the thread is short and recent, start fresh when it is long, and keep the plan somewhere a picker cannot lose it. That last part is what kitstarter does by default. Worth reading next: how to see every session you have when `-c` gives you the wrong one, and what a full context window really costs you when you reopen a big session.
Common questions
How do I continue my last Claude Code session? Run claude --continue, or claude -c for short. It reopens the most recent session for the directory you are in, with no picker and no session id. If the one you want is not the most recent, use claude --resume instead and pick it from the list.
What is the difference between claude --continue and claude --resume? --continue assumes it knows which session you mean and reopens the most recent one for the current directory. --resume asks: it opens an interactive picker so you choose. Use continue when you just closed the terminal, resume when the one you want is further back.
How do I restore a specific Claude Code session? Run claude --resume with no argument to open the picker, or pass an exact session name or ID to restore it directly. From inside Claude Code, /resume opens the same picker. Use Ctrl+W to search all worktrees in the repository and Ctrl+A to search every project on the machine.
Why did claude -c continue the wrong conversation? Almost always because you launched it from a different directory. Sessions are scoped to the folder you start in, so the most recent session in one project is not the most recent session in another. Git worktrees count as different paths too. Check pwd first.
Can I continue a Claude Code session in a script? Yes. Combine continue with print mode: claude -c -p "your prompt" resumes the last session for that directory, sends one prompt, and returns the answer without an interactive terminal.
Why is my old Claude Code session missing? The picker starts with the current worktree, so search all worktrees with Ctrl+W and all projects with Ctrl+A. If it is still absent, check its age. Claude Code removes local session files after 30 days by default, controlled by cleanupPeriodDays, and a file deleted by retention cannot be restored from the picker.
Pick up where you left off, without the whole transcript
kitstarter keeps a one-line summary of where you got to and prints it back when you open the project, so a new session knows the plan without inheriting an old session's bloat. For Claude Code, Codex, and Antigravity.
