Manage sessions changedsessions
Nearest release: v2.1.284, published 16 hours after upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 28 Sep 2026 00:42 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 28 Sep 2026 23:37 UTC.
Upstream edited
Recorded here
Lines+52added
Lines−52removed
From line
10
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits27to this page, all time
The whole hunk
from line 10, old and new numbered
/
from line 10
1010
1111Sessions are saved continuously to [local transcript files](#export-and-locate-session-data) as you work, so you can return to one after exiting or running `/clear`. Use these entry points:
1212
13| Command | What it does |
14| :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |
15| `claude --continue` | Reopens the most recent conversation in the current directory |
16| `claude --resume` | Opens the [session picker](#use-the-session-picker) |
17| `claude --resume <name>` | Resumes the named session directly |
13| Command | What it does |
14| :- | :- |
15| `claude --continue` | Reopens the most recent conversation in the current directory |
16| `claude --resume` | Opens the [session picker](#use-the-session-picker) |
17| `claude --resume <name>` | Resumes the named session directly |
1818| `claude --resume <transcript-path>` | Resumes the conversation stored in the `.jsonl` [transcript file](#where-transcripts-are-stored) at that absolute path |
19| `claude --from-pr <number>` | Opens the session picker filtered to sessions linked to that pull request |
20| `/resume` | Switches to a different conversation from inside an active session |
19| `claude --from-pr <number>` | Opens the session picker filtered to sessions linked to that pull request |
20| `/resume` | Switches to a different conversation from inside an active session |
2121
2222Claude Code leaves sessions created with [`claude -p`](/docs/en/headless) or the [Agent SDK](/docs/en/agent-sdk/overview) out of the session picker and out of `claude --continue`. You can still resume one by passing its session ID to `claude --resume <session-id>`. With `claude --continue`, Claude Code also skips [sessions whose first prompt was `/loop`](#where-the-session-picker-looks). When you run [`claude -p --continue`](/docs/en/headless#continue-conversations), Claude Code includes `-p`, SDK, and `/loop` sessions.
2323
from line 51
5151
5252Restoring plan mode on the non-interactive and VS Code paths requires Claude Code v2.1.246 or later. Each row names the permission mode the session ended in, which of the terminal, non-interactive, and VS Code paths you resume it by, and the permission mode Claude Code starts the resumed session in.
5353
54| Session ended in | How you resume | Permission mode after you resume |
55| :------------------ | :------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
56| `bypassPermissions` | Terminal | The permission mode a new session would start in. To [bypass permissions](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode) again, enable it at launch with one of its launch flags or `permissions.defaultMode: "bypassPermissions"` in [user, `--settings`, or managed settings](/docs/en/settings-reference#permissions-defaultmode) |
57| `plan` | Terminal | The permission mode a new session would start in |
58| `auto` | Terminal | `auto`, only when your account still meets the [auto mode requirements](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) |
59| Manual | Terminal | Manual when a new session would start in auto mode from the [built-in default](/docs/en/permission-modes#which-mode-a-session-starts-in). When a `defaultMode` from a settings file [takes effect](/docs/en/permission-modes#which-mode-a-session-starts-in), Claude Code starts the resumed session in that mode instead |
60| `plan` | Non-interactive, under the [conditions below](#resume-in-plan-mode-with-p) | Plan mode |
61| Any mode | Non-interactive, in any other case | The permission mode a new `claude -p` run would start in |
62| `plan` | VS Code | Plan mode, with [the exceptions on the VS Code page](/docs/en/vs-code#resume-past-conversations) |
54| Session ended in | How you resume | Permission mode after you resume |
55| :- | :- | :- |
56| `bypassPermissions` | Terminal | The permission mode a new session would start in. To [bypass permissions](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode) again, enable it at launch with one of its launch flags or `permissions.defaultMode: "bypassPermissions"` in [user, `--settings`, or managed settings](/docs/en/settings-reference#permissions-defaultmode) |
57| `plan` | Terminal | The permission mode a new session would start in |
58| `auto` | Terminal | `auto`, only when your account still meets the [auto mode requirements](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) |
59| Manual | Terminal | Manual when a new session would start in auto mode from the [built-in default](/docs/en/permission-modes#which-mode-a-session-starts-in). When a `defaultMode` from a settings file [takes effect](/docs/en/permission-modes#which-mode-a-session-starts-in), Claude Code starts the resumed session in that mode instead |
60| `plan` | Non-interactive, under the [conditions below](#resume-in-plan-mode-with-p) | Plan mode |
61| Any mode | Non-interactive, in any other case | The permission mode a new `claude -p` run would start in |
62| `plan` | VS Code | Plan mode, with [the exceptions on the VS Code page](/docs/en/vs-code#resume-past-conversations) |
6363
6464<h5 id="resume-in-plan-mode-with-p">
6565 Resume in plan mode with `-p`
from line 101
101101
102102Resuming by name resolves across the current repository and its worktrees. Both forms look for an exact match and resume it directly even if it lives in a different worktree:
103103
104| Command | Exact match | Ambiguous name |
105| :----------------------- | :--------------- | :-------------------------------------------------------------------------- |
106| `claude --resume <name>` | Resumes directly | Opens the session picker with the name pre-filled as a search term |
107| `/resume <name>` | Resumes directly | Reports an error; run `/resume` with no argument to open the session picker |
104| Command | Exact match | Ambiguous name |
105| :- | :- | :- |
106| `claude --resume <name>` | Resumes directly | Opens the session picker with the name pre-filled as a search term |
107| `/resume <name>` | Resumes directly | Reports an error; run `/resume` with no argument to open the session picker |
108108
109109## Name your sessions
110110
111111Give sessions descriptive names so they're findable in the session picker and resumable by name. This matters most when you're working on several tasks in parallel.
112112
113| When | How to set the name |
114| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
115| At startup | `claude -n auth-refactor` |
116| During a session | `/rename auth-refactor`. The name also appears on the prompt bar |
117| From the session picker | Highlight a session and press `Ctrl+R` |
118| On plan accept | Accepting a plan in [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) gives the session a generated title based on the plan unless you've already named it |
119| From claude.ai or the Claude app | Rename a [Remote Control session](/docs/en/remote-control#connect-from-another-device); Claude Code applies the same name in the CLI. Requires Claude Code v2.1.221 or later |
120| From the desktop app | Rename a session in the [desktop app](/docs/en/desktop#work-in-parallel-with-sessions) |
113| When | How to set the name |
114| :- | :- |
115| At startup | `claude -n auth-refactor` |
116| During a session | `/rename auth-refactor`. The name also appears on the prompt bar |
117| From the session picker | Highlight a session and press `Ctrl+R` |
118| On plan accept | Accepting a plan in [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) gives the session a generated title based on the plan unless you've already named it |
119| From claude.ai or the Claude app | Rename a [Remote Control session](/docs/en/remote-control#connect-from-another-device); Claude Code applies the same name in the CLI. Requires Claude Code v2.1.221 or later |
120| From the desktop app | Rename a session in the [desktop app](/docs/en/desktop#work-in-parallel-with-sessions) |
121121
122122Once you name a session through a CLI route or from claude.ai, return to it with `claude --resume <name>` or `/resume <name>`; a desktop-app session resumes in the app, which keeps its own session history. See [Resume a session](#resume-a-session) for how name resolution behaves across worktrees.
123123
from line 144
144144
145145Run `/resume` inside a session, or `claude --resume` with no arguments, to open the interactive session picker. Use these keyboard shortcuts to navigate, search, and widen the list:
146146
147| Shortcut | Action |
148| :------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
149| `↑` / `↓` | Navigate between sessions |
150| `→` / `←` | Expand or collapse grouped sessions |
151| `Enter` | Resume the highlighted session |
152| `Space` | Preview the session content. `Ctrl+V` also works on terminals that don't capture it as paste |
153| `Ctrl+R` | Rename the highlighted session |
147| Shortcut | Action |
148| :- | :- |
149| `↑` / `↓` | Navigate between sessions |
150| `→` / `←` | Expand or collapse grouped sessions |
151| `Enter` | Resume the highlighted session |
152| `Space` | Preview the session content. `Ctrl+V` also works on terminals that don't capture it as paste |
153| `Ctrl+R` | Rename the highlighted session |
154154| `/` or any printable character other than `Space` | Enter search mode and filter sessions. Paste a GitHub, GitHub Enterprise, GitLab, or Bitbucket pull or merge request URL to find the session that created it |
155| `Ctrl+A` | Show sessions from all projects on this machine. Press again to return to the current repository |
156| `Ctrl+W` | Show sessions from all worktrees of the current repository. Press again to return to the current worktree. Only shown in multi-worktree repositories |
157| `Ctrl+B` | Filter to sessions from the current git branch. Press again to show all branches |
158| `Esc` | Exit the session picker or search mode |
155| `Ctrl+A` | Show sessions from all projects on this machine. Press again to return to the current repository |
156| `Ctrl+W` | Show sessions from all worktrees of the current repository. Press again to return to the current worktree. Only shown in multi-worktree repositories |
157| `Ctrl+B` | Filter to sessions from the current git branch. Press again to show all branches |
158| `Esc` | Exit the session picker or search mode |
159159
160160Each row shows the session name if you set one, otherwise the AI-generated session title, conversation summary, or first prompt, along with time since last activity, git branch, and file size. Widen to all projects with `Ctrl+A` to also see each session's project path.
161161
from line 185
185185
186186`/branch` copies the transcript and switches the running Claude Code process to write to it. That distinction determines what the branch inherits:
187187
188| State | After `/branch` |
189| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
190| Conversation history | Copied into the branch up to the point you ran `/branch` |
191| "Allow for this session" permission grants | Carried over; the branch runs in the same process, so your existing grants still apply. If you fork into a separate process with `--fork-session`, the new process starts without them and you re-approve there |
192| In-flight [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) and [background Bash commands](/docs/en/interactive-mode#background-bash-commands) | Keep running. Their output appears in the new branch you switched into, not in the original session |
193| [Remote Control](/docs/en/remote-control) connection | Stays connected. A phone or browser connected to the session follows you into the branch and keeps receiving new messages there |
188| State | After `/branch` |
189| :- | :- |
190| Conversation history | Copied into the branch up to the point you ran `/branch` |
191| "Allow for this session" permission grants | Carried over; the branch runs in the same process, so your existing grants still apply. If you fork into a separate process with `--fork-session`, the new process starts without them and you re-approve there |
192| In-flight [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) and [background Bash commands](/docs/en/interactive-mode#background-bash-commands) | Keep running. Their output appears in the new branch you switched into, not in the original session |
193| [Remote Control](/docs/en/remote-control) connection | Stays connected. A phone or browser connected to the session follows you into the branch and keeps receiving new messages there |
194194
195195If you resume the same session in two terminals without forking, messages from both interleave into one transcript. For checkpoint-based rewind within a single session, see [Checkpointing](/docs/en/checkpointing).
196196
from line 231
231231
232232The location, retention, and write behavior are configurable:
233233
234| To | Set | Where |
235| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------ |
236| Move storage off `~/.claude` | [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars) | Environment variable |
237| [Name the `<project>` directory yourself](#name-the-project-directory-yourself) | [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/en/env-vars) | Environment variable |
238| Change the 30-day retention | [`cleanupPeriodDays`](/docs/en/settings-reference#cleanupperioddays) | `settings.json` |
234| To | Set | Where |
235| - | - | - |
236| Move storage off `~/.claude` | [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars) | Environment variable |
237| [Name the `<project>` directory yourself](#name-the-project-directory-yourself) | [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/en/env-vars) | Environment variable |
238| Change the 30-day retention | [`cleanupPeriodDays`](/docs/en/settings-reference#cleanupperioddays) | `settings.json` |
239239| Set an age limit for [Claude Desktop and Cowork transcripts](/docs/en/claude-directory#cleaned-up-automatically) | [`desktopSessionCleanupPeriodDays`](/docs/en/settings-reference#desktopsessioncleanupperioddays) | User settings, managed settings, or `--settings` |
240| Suppress transcript writes in all modes | [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/en/env-vars) | Environment variable |
241| Suppress writes for one non-interactive run | [`--no-session-persistence`](/docs/en/cli-reference) | CLI flag with `claude -p` |
240| Suppress transcript writes in all modes | [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/en/env-vars) | Environment variable |
241| Suppress writes for one non-interactive run | [`--no-session-persistence`](/docs/en/cli-reference) | CLI flag with `claude -p` |
242242
243243### Delete session data
244244
No line in this hunk matches that.