Name every Claude Code and Codex session after the terminal tab it ran in. Search your local session history, open recalled context, and see which terminals are live.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Never lose an agent session again. Every Claude Code and Codex session gets labeled with the name of the terminal it ran in. Automatically.
Claude Recall is a local-first memory tool that indexes every Claude Code and Codex session you have ever run and makes them searchable from the recall CLI, a browser UI, and an MCP server. Both agents are indexed by default with no configuration, and every session records which agent produced it so you can filter on it. This extension is the VS Code companion that gives every session a meaningful name with zero manual steps. Renames in your editor propagate to your session library automatically.
The library this extension keeps labeled for you.
Claude calls Recall as native MCP tools. Searches your history. Pulls context. Decides.
Cost analytics. Hover any day. Exact cost. Exact tokens.
Collections. Drag-to-organize sessions across projects.
Or stay in the terminal. recall tui ships the same library as a full-screen terminal app.
Built specifically for coding agents, not adapted from notes apps.
What it does
Name your terminal tabs the way you already do (auth-refactor, billing-bug, dashboard-v2).
Start Claude Code or Codex in any of those tabs as you normally would. The extension reads the command token, so claude and codex are recognised behind an absolute path or a runner prefix like npx or pnpm dlx.
The session shows up in Claude Recall labeled with the tab name. Rename the tab mid-session and the alias updates live.
Works in VS Code, VS Code Insiders, Cursor, and Windsurf.
Both agents, one library
Claude Code
Codex
Indexed with no configuration
Yes
Yes
Titles, search, and filtering by agent
Yes
Yes
Token cost from published list rates
Anthropic rates
OpenAI rates
Tab name becomes the session alias
Yes
macOS and Linux, see below
Two things are worth knowing before you install, so read them here rather than discover them later.
Auto-alias ships off.claude-recall.autoAlias defaults to false. Until you turn it on, the extension registers nothing with the daemon and the status bar reads ⊘ Recall. One setting, described under Enable.
Codex tab correlation reads the open-file table. Codex holds its transcript file open for the life of the thread, so the daemon identifies the writing process with lsof instead of guessing from timing. That runs on macOS and Linux and is off on Windows, where recall doctor reports the branch as disabled. Everything else about Codex is unaffected and works on every supported platform: indexing, titles, search, cost accounting, and the agent filter. A live Codex tab also binds on the daemon's sweep rather than instantly, so it can read "Waiting for conversation…" briefly before it attaches.
What's new in 0.23
Codex is named everywhere it is already supported
The listing, the README and the marketplace metadata now say plainly that this extension covers Codex as well as Claude Code. Nothing about the extension's behavior changed in 0.23.0 — Codex indexing, titles, search, cost accounting and the agent filter all shipped earlier. What changed is that the documentation stopped describing a Claude-Code-only product. The two limits worth knowing before you install are stated above under Both agents, one library: auto-alias ships off, and Codex tab correlation is macOS/Linux only.
Earlier: what landed in 0.22
Open terminals show up before you type anything
A Claude Code or Codex tab used to stay invisible until it had written three messages. It now appears at the top of the sessions list the moment it launches, with its tab name, before the first prompt. Close the tab and the live row disappears while its history stays put. Reusing a shell never shows the previous conversation as the new launch, and a session already listed as live is never listed twice. The floor for listing a session dropped from three messages to one, so a session with a single indexed message attaches to its launch instead of waiting.
One lookup for history and live terminals
Find session history and live terminals in the command palette searches your Recall history and the terminals running right now, together. Search by current name or by a name a session used previously. The same lookup is available as recall locate on the CLI, as the locate_sessions MCP tool, and in the web app, so you get the same answer wherever you ask (Pro).
Every terminal reports its own agent and its own folder
The terminal breadcrumb now records which agent is running in the tab, so renaming a tab scopes to that agent instead of affecting its neighbors. Each terminal also reports its real working directory rather than the workspace root, which stops sessions started in a subfolder from being filed under the wrong project.
Recent releases
Version
Date
Headline
0.23.3
2026-09-21
Docs only: the release table, the "what's new" heading and the changelog footer corrected by a pre-release audit. No extension behavior change.
0.23.2
2026-09-21
Maintenance: dependency update pass. No extension behavior change.
0.23.1
2026-09-16
Maintenance: publishing toolchain moved to @vscode/vsce 4.0.0. No extension behavior change.
0.23.0
2026-09-16
The listing, README and marketplace metadata name Codex alongside Claude Code, and document the auto-alias default and the Windows correlation limit. No extension behavior change.
0.22.5
2026-09-16
Maintenance: dependency update pass. No extension behavior change.
0.22.4
2026-09-14
Fix: the listing opens with the product again, not an eleven-line command blurb.
0.22.3
2026-09-13
Docs only: public claims corrected across README, changelogs, site and help docs. No extension behavior change.
0.22.2
2026-09-13
Maintenance: dependency update pass. No extension behavior change.
0.22.1
2026-09-12
Docs only: plain-language description of the live-terminals release. No extension behavior change.
0.22.0
2026-09-12
Open Claude Code and Codex terminals appear in the sessions list the moment they launch, before the first prompt. Closing a tab drops the live row and keeps its history. Listing floor drops from three messages to one. Pairs with CLI v0.178.0.
0.21.2
2026-09-08
Fix: each terminal reports its real working directory instead of the workspace root.
0.21.1
2026-09-05
Explicit clear button in the header search; shorter quality-sort label. Pairs with CLI v0.171.1.
0.21.0
2026-09-05
Private material stays out of everything that leaves the machine. Pairs with CLI v0.171.0.
0.20.2
2026-09-05
Every observed Codex model id is priced from published list rates; stats tooltips explain the Codex columns. Info popovers render in a portal so cards cannot clip them.
0.20.1
2026-09-05
Docs only: read-tool count corrected to 17; the command table lists the locate command. No extension behavior change.
0.20.0
2026-09-05
Find session history and live terminals across CLI, MCP, HTTP, web and VS Code. Pairs with CLI v0.169.0.
0.19.2
2026-09-04
Fix: two-sided freshness window; scanner contract matches its header.
0.19.1
2026-09-04
Fix: fresh breadcrumb when several writers are active, quote-aware matcher, strict instants, deduplicated writers.
0.19.0
2026-09-04
Terminal breadcrumb carries the agent; tab renames scope to it. Pairs with CLI v0.159.0.
0.18.27
2026-08-31
Docs only: six stale claims corrected by a full-read audit. No extension behavior change.
0.18.26
2026-08-31
Maintenance: dependency update pass (@types/node, @types/vscode). No extension behavior change.
0.18.25
2026-08-25
Docs only: egress claims corrected to match shipped behavior across the product's READMEs. No extension behavior change.
0.18.24
2026-08-18
Docs only: pre-ship audit record and release-table sync. No extension behavior change.
Maintenance: @types/node 26 plus a clean dependency audit. No extension behavior change.
0.18.21
2026-08-17
Maintenance: dependency update pass (esbuild and friends). No extension behavior change.
0.18.20
2026-07-18
Docs only: synced dependency-hold notes and version prose. No extension behavior change.
0.18.19
2026-07-18
Maintenance: security-audited dependency bumps (@anthropic-ai/sdk 0.112.3, satori 0.28, @types/node 24) plus doc sync. No extension behavior change.
0.18.18
2026-07-12
Docs only: synced HANDOFF version prose and this README to current manifest versions. No extension behavior change.
0.18.17
2026-07-08
Maintenance: dependency update pass and doc sync across manifests. No extension behavior change.
0.18.16
2026-06-27
Maintenance: security-audited dependency sweep across all four manifests. No extension behavior change.
0.18.15
2026-06-22
Maintenance: security sweep across all four manifests plus safe in-range dependency bumps. No extension behavior change.
0.18.14
2026-06-04
Maintenance: safe dependency updates across CLI/MCP, site, and the extension, plus doc sync. No extension behavior change.
0.18.13
2026-06-02
Maintenance: safe, drop-in dependency updates. No extension behavior change.
0.18.12
2026-05-26
Docs only: accurate semantic-install messaging, smaller GIFs, and 0.18.11 paired-CLI notes. No extension behavior change.
0.18.11
2026-05-26
Pairs with CLI v0.92.3 (daemon-state-integrity catch-up): owner-aware state-file deletion, accurate vectorize ETA, semantic_enabled drift detection, auto-prune MCP children, "never two daemons" guard, new recall doctor checks, correlator multi-segment slash tab-name fix. Extension is a thin client with no extension-side features; see CHANGELOG.md.
0.18.10
2026-05-12
Pairs with CLI v0.75.0 (tegspun audit patch): Windows install + watcher fixes, MCP Pro-user gate fix, daemon safety-net sweep, recall doctor ingest-freshness check. Extension itself has no behavior change; see CHANGELOG.md.
0.18
2026-05-05
Collapsible side panes, threads UX polish, doctor + optimize commands. Auth-token migration, pipeline-health diagnostic, accurate User-Agent (0.18.1-0.18.3, 2026-05-06).
0.17
2026-05-03
Editor-source PID ownership ends two-editor alias war
0.16
2026-05-03
Extension neighborhood command: bundle parents/children/citations into context
0.15
2026-05-03
Interim release. See CHANGELOG.md for details.
0.14
2026-05-02
Orphan-session re-bind after editor or laptop restart. Daily stale-link reaper.
0.13
2026-05-02
Activation-race fix. First claude after VS Code launch always gets the right tab name.
0.12
2026-05-02
Auto-recover historical sessions via terminal scrollback. Secret redaction filter.
Open the Extensions panel (Cmd+Shift+X / Ctrl+Shift+X), search Claude Recall, install the entry by publisher clauderecallhq.
You also need the Recall daemon running. Install the CLI:
npm install -g @clauderecallhq/cli
recall start
Requires VS Code 1.85 or newer and Node 22 LTS or newer on macOS (Apple Silicon / Intel), Linux x64 / arm64 (glibc), or Windows 10+ x64.
Enable
The extension ships with auto-alias off. In VS Code settings (Cmd+, / Ctrl+,) flip claude-recall.autoAlias from its default of false to true. A ⟳ Recall · N indicator appears in the status bar showing how many terminals are connected to your session library. Until you flip it, the status bar reads ⊘ Recall, no terminal is registered, and nothing is sent anywhere.
Settings
Setting
Default
What it does
claude-recall.autoAlias
false
Master switch. When on, your terminal tab names are pushed to your session library.
claude-recall.captureScrollback
true
Forwards a rolling 4 KB tail of each terminal's output to the daemon so historical sessions can be reconnected to the terminal that ran them. Disable to opt out entirely.
claude-recall.daemonPortFile
~/.recall/daemon.port
Where the local daemon publishes its port. Change only if you have customised the daemon's home directory.
Commands
Command
Use
Claude Recall: Find session history and live terminals
Search Claude Code and Codex history, check messaging availability, and open context or copy a session reference (Pro)
Claude Recall: Show daemon status
Quick health check
Claude Recall: Re-register all open terminals
Resend every open tab to the daemon after a daemon restart
Claude Recall: Upgrade to Pro
Open the pricing page
Claude Recall: Neighborhood for current session
Open related sessions as a markdown preview
Claude Recall: Run health check (recall doctor)
Run recall doctor in a new terminal
Claude Recall: Optimize database (recall optimize)
Run recall optimize in a new terminal
How it works
The extension watches every VS Code terminal you have open. It reports the tab name to the local Claude Recall daemon and updates that name whenever you rename the tab.
When a terminal starts an agent, the extension tells the daemon which terminal it started in and which of the two agents it is. It reads the command token rather than the whole line, so claude and codex still count behind a path or a runner prefix, while echo claude and codex-code-mode-host correctly do not.
The daemon labels the new session with that terminal's tab name, filed under the agent the extension named. A Codex start is never handed to a Claude Code session in the same folder, or the reverse.
Codex keeps its transcript file open for as long as the thread lives, so the daemon also runs a sweep that reads the open-file table to name the writing process. Codex has no session-start hook of its own, so that sweep is what tells a live Codex tab which conversation it is holding.
For sessions that ran before the daemon knew about them, the v0.12 scrollback matcher reconnects them by spotting verbatim text from the conversation in your open terminal buffers.
Everything happens on your machine. Nothing about your code, prompts, or terminal output ever leaves 127.0.0.1.
Troubleshooting
Status bar shows ⊘ Recall
Auto-alias is off. Flip claude-recall.autoAlias to true in settings.
Status bar shows nothing
The Recall daemon is not running. Run recall status to check, recall start to fix.
Status bar shows ⟳ Recall · 0 but terminals are open
Run Claude Recall: Re-register all open terminals from the command palette.
Renames in VS Code not appearing in Claude Recall
Open the Claude Recall Output channel from the View menu. Every rename the extension detects is logged there with the before and after tab name. If you do not see your rename in the log, try renaming the tab one more time. Some terminal title overrides from other extensions can race with our detection on the first edit.
A live Codex tab says "Waiting for conversation…"
The daemon attaches a Codex tab to its conversation on a sweep rather than instantly, so give it a moment. If it never attaches, run recall doctor and read the Codex block. correlation: available (lsof at …) means the mechanism is on. On Windows that line reports the branch as off, which is expected and not a fault: Codex sessions still index, title, and search normally there.
An old session is still showing as unlinked
Open it in the web UI. With 0.12+ installed, the system tries to relink it the moment you open it by matching scrollback content from your live terminals. If the original terminal was closed long ago, click the chain icon next to the title and pick the right terminal from the list.
Privacy
We promise three things:
Nothing leaves your machine. Every byte the extension produces is bound for 127.0.0.1 and the local daemon. There are no background or automatic network calls. No telemetry. No analytics. The only external navigation is the pricing page your browser opens when you click Upgrade to Pro.
Secrets get redacted before they leave the extension. The redaction filter runs inside the extension on every byte of terminal output. Anthropic, OpenAI, GitHub, AWS, Slack-style keys, Bearer tokens, JWTs, and PASSWORD= / API_KEY= style assignments are replaced with placeholders before the daemon ever sees them.
The extension never reads your code. No editor buffer access. It never reads your clipboard, and the only thing that ever writes to it is the locate command's "Copy session reference" action, when you pick it. No files outside the daemon's port file and its sibling auth-token file. It does read a rolling 4 KB tail of shell-integrated command output while claude-recall.captureScrollback is on, so a session can be matched to its tab; secrets are redacted before that tail leaves the extension and it goes only to the daemon on 127.0.0.1.
What the extension actually sends to the daemon, in plain English:
When
What
You open / rename / close a terminal
The tab name and its process ID
You start Claude Code or Codex in a terminal
Which terminal you started it in, and which of the two agents it is
You type or get output in a terminal (opt out via settings)
A rolling buffer of recent text, with secrets redacted
Buffers live in daemon memory only. They never reach disk.
Codex support added no network traffic of any kind, and it reads exactly two things under your Codex home: the rollout transcripts under sessions/, and session_index.jsonl, which is where Codex records the name you gave a thread. Both are opened read-only, symlinks out of that folder are refused, and nothing under the Codex home is ever written. Your Codex credentials, config, and hooks are never opened.
Built for security teams
Zero runtime dependencies. The published .vsix ships only our own bundled JavaScript, an icon, and metadata. There is no transitive supply chain to audit.
Localhost-only by construction. The HTTP client refuses any host other than 127.0.0.1. The connection target is enforced in code, not configuration.
No webview, no HTML rendering. The extension's UI surfaces are a status bar text indicator, plain markdown editor tabs (Neighborhood), and standard VS Code terminals running fixed recall commands (doctor/optimize).
Hard timeouts on every daemon request so a hung daemon never blocks the editor.