Claude Code /resume: Pick Up Where You Left Off
Table of Contents
- Why You Need /resume
- What Is /resume
- Multiple Ways to Resume
- Switch Within Interactive Mode
- Resume Last Session on Startup
- Choose a Session on Startup
- Resume a Specific Session
- Resume a PR-Linked Session
- Session Picker Shortcuts
- Where Are Conversations Stored
- Practical Use Cases
- Scenario 1: Multi-Day Feature Development
- Scenario 2: Parallel Tasks
- Scenario 3: Code Review Continuation
- Practical Tips
- Tip 1: Give Sessions Meaningful Names
- Tip 2: Use /clear to Segment Your Work
- Tip 3: —continue with a Prompt
- Tip 4: Watch Quality in Long Sessions
- /resume vs Starting Fresh
- Final Thoughts
Why You Need /resume
When using Claude Code, you’ll frequently run into situations like these:
- You’re halfway through a task, have to join a meeting, and exit Claude Code
- You come back the next day wanting to pick up where you left off
- You’re juggling multiple features and need to switch between different conversations
If you start a new conversation every time, the problem is obvious: all your previous context is gone. Claude Code doesn’t know what you did yesterday, which approaches you discussed, or which ideas you ruled out. You have to re-explain the background and let it re-understand the code — wasting both tokens and time.
That’s where /resume comes in.
What Is /resume
/resume is a built-in slash command in Claude Code for restoring previous conversation sessions.
In interactive mode, type:
/resume
An interactive session picker appears, showing all your recent conversations. Each entry includes:
- Conversation summary
- Message count
- Git branch name
- Timestamp
Select one, hit Enter, and the entire conversation context is restored — chat history, tool call results, code modifications, everything.
Multiple Ways to Resume
Claude Code offers several ways to resume conversations, suiting different scenarios:
Switch Within Interactive Mode
/resume
No need to exit your current session. Just type /resume during a conversation and select the session to restore.
Resume Last Session on Startup
claude --continue
# or shorthand
claude -c
Directly resumes your last conversation without opening the picker. Perfect for the “left work yesterday, picking up today” scenario.
Choose a Session on Startup
claude --resume
# or shorthand
claude -r
Opens the session picker so you can choose which conversation to restore.
Resume a Specific Session
claude --resume abc123
If you know the session ID, you can specify it directly.
Resume a PR-Linked Session
claude --from-pr 123
Restores the conversation associated with a specific Pull Request — great for code review scenarios.
Session Picker Shortcuts
The session picker isn’t just a simple list — it has some handy keyboard shortcuts:
| Key | Function |
|---|---|
| A | Toggle scope: current directory / all projects |
| B | Filter by current git branch |
| R | Rename the selected session |
| P | Preview the selected session’s content |
Where Are Conversations Stored
All conversations are automatically saved locally — no manual action needed:
~/.claude/projects/<encoded-project-path>/xxx.jsonl
Each project has its own folder, and each .jsonl file inside is a complete conversation record containing all messages, tool invocations, and output results.
Conversations never expire — whether from yesterday or last month, as long as the file exists, it can be restored.
Practical Use Cases
Scenario 1: Multi-Day Feature Development
You’re building a complex feature. Day one: data models and API layer done. Day two: time for the frontend.
# Next day
claude -c
Claude Code restores yesterday’s context — it remembers what you did, what issues came up, and which approaches you chose. Just say “continue with the frontend” and go.
Scenario 2: Parallel Tasks
You’re working on three features simultaneously, each in a different conversation.
/resume
Press B in the picker to filter by current branch and quickly find the right conversation.
Scenario 3: Code Review Continuation
A colleague opened a PR. You reviewed half of it yesterday, time to finish today.
claude --from-pr 42
Directly restore the conversation context linked to that PR.
Practical Tips
Tip 1: Give Sessions Meaningful Names
Default session names are auto-generated summaries that aren’t always easy to find. Press R in the picker to rename:
feature-auth-module
bugfix-login-redirect
refactor-database-layer
Meaningful names make sessions much easier to find later.
Tip 2: Use /clear to Segment Your Work
Don’t pile everything into one session. After completing a task, use /clear to reset the context and start fresh. This keeps each session focused on a single topic, makes them easier to find when resuming, and reduces hallucination issues from overly long contexts.
Tip 3: —continue with a Prompt
claude -c "continue with the frontend"
Resume your last conversation and send a message at the same time — one fewer step of interaction.
Tip 4: Watch Quality in Long Sessions
While conversations can be resumed indefinitely, response quality may degrade when the context gets too long — too much information can cause Claude Code to “lose focus”. If responses start getting unreliable, consider starting a new session with /clear and re-syncing the key context.
/resume vs Starting Fresh
| /resume | Starting Fresh | |
|---|---|---|
| Context | Fully preserved | Starts from zero |
| Token Usage | Historical context consumes tokens | Low initial consumption |
| Best For | Continuing unfinished tasks | Brand new independent tasks |
| Risk | Quality may drop with very long context | Need to re-describe background |
Each approach has its place. Use /resume for unfinished tasks, start a new conversation for completely new work.
Final Thoughts
/resume solves a simple problem: don’t let your conversations go to waste.
When using Claude Code for development, it’s impossible to finish everything in one sitting. You’ll always be interrupted — meetings, end of day, task switching. Without /resume, every time you come back you’d have to rebuild the context from scratch, wasting tokens and time.
With it, Claude Code becomes a partner that “remembers where you left off”. You can leave anytime, come back anytime, and pick up right where you stopped.
One command, and every conversation counts.
Related Articles
Claude Code Agent Loop: Dissecting the Heart of an AI Coding Assistant
How does Claude Code understand your requests, invoke tools, and self-recover step by step? A source-code deep dive into the Agent Loop's core architecture — streaming responses, parallel tool execution, auto-compaction, and error recovery.
Claude Code settings.json Explained (1): Where Config Files Live and Who Wins
A complete guide to Claude Code's configuration file system — five config sources, their file paths, priority rules, array merging vs value overriding, and enterprise managed settings delivery.
Claude Code settings.json Deep Dive (Part 2): The Permissions System
A thorough breakdown of Claude Code's permissions configuration — allow/deny/ask rule arrays, wildcard syntax, MCP tool permissions, defaultMode options, and additionalDirectories.
Claude Code settings.json Deep Dive (Part 3): The Hooks System
A thorough breakdown of Claude Code's hooks configuration — four hook types, core events (PreToolUse/PostToolUse/Stop/Notification), stdin/stdout protocol, exit code semantics, and practical examples.
Claude Code settings.json Deep Dive (4): env, Models, Auth, and Other Useful Fields
A comprehensive guide to the remaining settings.json fields in Claude Code — env variable injection, model configuration, authentication helpers, Git attribution, session cleanup, language and UI, thinking depth, auto-updates, memory system, and more.