← Blog · 2026-11-02
Claude Code Resume Not Working? --continue, --resume and /resume: 14 Causes and Fixes
60-second test: run
claude --resume(no arguments) and pressCtrl+A. The session shows up now means it was stored under another project or worktree (causes 1 to 3). It's still missing points to a-p, SDK or/loopsession, or a transcript that's gone (causes 4 to 7). It's listed but won't open is causes 8 to 10. It opens but behaves differently is causes 11 to 14.
Claude Code saves every conversation as you work, as a local transcript file at ~/.claude/projects/<project>/<session-id>.jsonl, where <project> is your working directory path with non-alphanumeric characters replaced by -. That one detail explains most resume problems: sessions are per machine and per project folder.
| Command | What it does |
|---|---|
claude --continue |
Reopens the most recent session in the current directory |
claude --resume |
Opens the session picker |
claude --resume <name> |
Resumes a named session directly |
claude --resume <session-id> |
Resumes that session, from any directory |
/resume |
Switches sessions from inside a running one |
Session not found: 7 causes
- You're in a different folder.
claude --continueand the picker start from the current project, so a session you started in~/work/appwon't show up when you launch from~/work/app/srcor another clone.cdback to the folder you started in, or open the picker and pressCtrl+Ato list sessions from every project on the machine. Picking a session from an unrelated project copies acdand resume command to your clipboard rather than opening it in the wrong place. - It's in another git worktree. By default the picker shows sessions from the current worktree only. Press
Ctrl+Wto widen it to all worktrees of the repository (the key is only shown in multi-worktree repos).Ctrl+Bdoes the opposite and filters to the current branch, so if the list looks short, check you didn't leave that filter on. - You moved the session with
/cd. Moving a session with/cdrelocates it to the new directory's project storage, so it now appears in that directory's picker instead.claude --resume <session-id>works from anywhere. - It was a
claude -p, Agent SDK or/loopsession. Claude Code leaves sessions created withclaude -por the Agent SDK out of the picker and out ofclaude --continue, and the same goes for sessions whose first prompt was a/loopcommand. Resume one with its ID:claude --resume <session-id>. For a script,claude -p --continuedoes include-p, SDK and/loopsessions, and the ID is thesession_idfield in--output-format jsonoutput. No conversation found with session ID. Check for a typo first. Claude Code searches the current project and its worktrees, then every other project, but it only resolves the ID when exactly one other project holds it, so a hand-copied duplicate under~/.claude/projectsalso produces this error. Before v2.1.223 the lookup stopped at the current project, so on an older version resume from the folder the session last worked in, or runclaude update.- The transcript was deleted or never written. Claude Code deletes transcripts older than
cleanupPeriodDays, 30 days by default, so a month-old session is usually gone; raise the setting insettings.jsonif you need longer. Nothing is saved at all whenCLAUDE_CODE_SKIP_PROMPT_HISTORYis set, or for aclaude -prun started with--no-session-persistence.claude purgealso removes a project's transcripts. - It ran on another machine or under another config directory. Transcripts are local, so a session from your laptop isn't on your desktop or in a dev container. If you launch with a different
CLAUDE_CONFIG_DIR(some wrappers and tenant setups do), sessions live under that directory instead of~/.claude, so launch with the same value to see them.
Session listed but won't open: 3 causes
Failed to resume the conversation. Claude Code couldn't read the saved transcript, so it exits with code 1 and prints aclaude --resume <session-id>command to retry. Run it once. On a version before v2.1.285, update withclaude updateand try again, since older versions fail on transcript entries they can't read. If it still fails, start a new session; inside a running session, a failed/resumeleaves your current conversation running.- The name doesn't resolve. Only a name you set (
claude -n,/rename, orCtrl+Rin the picker) or the AI-generated title works as a resume handle. The default display name likemy-app-3fthat agent view shows is not one, soclaude --resume my-app-3ffinds nothing. If a name matches several sessions,claude --resume <name>opens the picker pre-filtered while/resume <name>reports an error; run/resumewith no argument and pick. Aclaude -prun started from a shell gets no generated title. --continuesays the conversation is running in the background. If your most recent conversation was moved to the background and is still running,claude --continueexits withYour most recent conversation is running in the backgroundand its ID. Open it fromclaude agents(orclaude attach <id>), or runclaude --resumeto pick another. Finished background sessions open with--continueon v2.1.257 or later. On Windows, anEBADFerror while reading the transcript usually means security or endpoint software is intercepting reads; exclude%USERPROFILE%\.claude\projectsfrom it.
Resumed, but something's different: 4 causes
- MCP servers, plugins or extra directories are missing. Resuming doesn't restore every launch flag. If the session depended on
--mcp-config,--settings,--plugin-dir,--fallback-modelor--add-dir, pass them again; folders added mid-session with/add-diraren't restored either. Settings insettings.jsonandsettings.local.jsonare re-read at launch, so anything kept there doesn't need repeating. - The permission mode changed.
claude --continueorclaude --resume <id>from a terminal restores the session's mode, with exceptions: a session that ended inbypassPermissionscomes back in the mode a new session would start in, andautoreturns only if your account still qualifies. Sessions picked from the picker, andclaude -p --resume, start in the default mode for that command line (plan mode can carry over)./resumeinside a session keeps your current mode. Pass--permission-modeto set it explicitly. - The custom agent is gone. A session started with
--agentresumes as that agent only if Claude Code finds it, first in the session's original (trusted) folder, then where you resume. Otherwise you getThis session was running agent '<name>', which is no longer availableand it continues with default tools, so the agent's tool restrictions no longer apply. Re-create.claude/agents/<name>.mdor pass--agent <name>. - Claude "forgot" part of the conversation, or asks before resuming. A compacted session opens at a
Conversation compactedrow and continues from the summary, not the summarized messages. Tools that were mid-run when the old process ended aren't rerun, and background Bash and monitor tasks aren't restored. On Pro, Max and Ultra plans, a long conversation resumed after a break can show a "Resume this conversation?" dialog estimating the share of your 5-hour limit it will use; choose Start a new conversation if the next task doesn't need the history. Also don't resume the same session in two terminals without--fork-session: messages from both interleave into one transcript.
Make sessions easy to find again
- Name important sessions as you start them:
claude -n auth-refactor, thenclaude --resume auth-refactorlater. - Use
/branch(orclaude --continue --fork-session) to try a different approach without touching the original. - Before a long break,
/exportthe conversation to a text file, so you still have it if the transcript ages out.
If you want to undo Claude's edits rather than reopen a chat, see Claude Code rewind not working. For scripted runs that resume by session ID, see Claude Code headless mode not working, and if resumed sessions fill up quickly, Claude Code context filling up fast has fixes.
Facts on this page come from Anthropic's Claude Code docs on managing sessions, the error reference and the .claude directory. This guide isn't affiliated with Anthropic.
Made by Solo Stack Kits. Long sessions go better with guardrails. Start with our free Claude Code safety hooks, or get the Claude Code Power Config Pack with permission presets and 8 tested safety hooks, $6 with the launch code while it lasts.