Sync sessions across desktop app / VS Code extension / CLI on the same machine (Codex parity)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When using multiple Claude Code clients on a single machine — the Claude desktop app's "Code" tab, the VS Code "Claude Code" extension, and the terminal claude CLI — sessions are not shared between them.
- A live conversation in one client is not mirrored in real time in another.
- After a session ends, it does not appear in the other client's session list either.
- jsonl files are written to the same
~/.claude/projects/<id>/directory, but each client only enumerates sessions it created. Different clients also write differentversionfields to the jsonl (e.g.2.1.138from the desktop app vs2.1.128/2.1.163from other binaries), suggesting independent code paths with no shared session manager.
Workflow impact: I cannot switch clients mid-task. If I start a session in the desktop app's Code tab and want to continue in the VS Code extension to have the editor view side-by-side, I have to manually write a handoff note and start a fresh session in the other client, losing context. This recurs daily.
Comparison: Codex handles this transparently — all three clients on the same machine share a single live session and a single session catalog. The Claude Code gap is visible to anyone using both tools.
Environment
- Windows 11
- Claude desktop app: 1.11187.4.0
- VS Code extension: anthropic.claude-code 2.1.163 (also 2.1.168 installed)
- Repro: open the same project folder in both clients, start a session in one, check the other.
Proposed Solution
On the same machine, the three Claude Code clients should share:
- A single live-session channel — opening the same session in another client mirrors input and output in real time, or at minimum surfaces "this session is currently owned by client X" and offers to attach.
- A single session catalog — every finished session is listed in every client and resumable from any of them, regardless of which client created it.
Possible implementations:
- A local broker process (similar to Codex's approach) that all clients connect to over IPC, owning canonical session state.
- Or a shared session-index in
~/.claude/that every client reads, with a lock protocol marking which client owns each live session.
User-facing behavior: same machine, same project → same session list, regardless of which client opened the chat.
Alternative Solutions
Remote Control: Solves cross-machine sync but is the wrong tool for same-machine multi-client. Setup is heavier than needed for two windows on the same desktop.
Manual handoff notes (current workaround): I write a claude-handoff.ko.md summarizing state and start a fresh session in the other client. Slow, lossy, requires remembering to do it.
Picking one client per task (current workaround): Forces an early choice that should not be required. I might start in the desktop app for a quick chat, then realize I need the editor view side-by-side, but I can't move the session over.
How Codex solves this: Codex on the same machine runs a local broker that all clients (terminal CLI, VS Code extension, desktop app Code tab) attach to. Same session, same catalog, live mirrored across all three. The model is well-proven — nothing exotic.
Priority
High - Significant impact on productivity
Feature Category
Developer tools/SDK
Use Case Example
- I'm reviewing a feature design in the Claude desktop app's Code tab — the chat-style UI is nice for back-and-forth.
- I realize I need to edit the actual source files alongside the conversation. The desktop app has no editor view.
- I open VS Code with the same project folder so I can split the editor next to a chat panel.
- Today: The VS Code Claude Code extension does not see the desktop-app session. I have to manually summarize state into a handoff note and start a brand new session, losing context.
- With this feature: The same session is already there in the VS Code extension's list (or even live in its chat panel). I keep working without breaking flow.
This scenario recurs daily — it's not an edge case.
Additional Context
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗