Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Session Chat for Claude CodeNew to Visual Studio Code? Get it now.
Session Chat for Claude Code

Session Chat for Claude Code

cerberusx

|
2 installs
| (0) | Free
A Messenger-style chat pane for talking to your named Claude Code sessions on other devices through Remote Control. Unofficial; not affiliated with Anthropic.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Session Chat for Claude Code

Unofficial community extension, not affiliated with or endorsed by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic. Needs your own Claude plan and the claude CLI (v2.1.225+ on macOS/Linux, v2.1.234+ on Windows). macOS, Linux and Windows (Windows support is new and lightly tested).

A Messenger-style chat pane in VS Code for talking to a named Claude Code session (for example hp-release running on another machine with Remote Control).

  • Type a message; it is delivered to the target session.
  • Online / busy / offline status for the target, like a chat app.
  • Name + short time on every message; the target's replies show as plain text.
  • Sign-in check, a session picker for every device on your account, and 5-hour / weekly usage bars.
  • Replies are read verbatim from the relay's transcript, so no model rewording and no tool noise.

How it works

webview  <->  extension host  <->  hidden `claude --remote-control` (in a pty)  <->  target session

Headless claude -p cannot hold a Remote Control connection, so the extension runs an interactive claude --remote-control chat-relay inside a pseudo-terminal (media/pty_bridge.py, stdlib Python).

  • Sending: a prompt RELAY "<target>" "<text>" is typed into the relay; its system prompt makes it call SendMessage with the text unchanged (one cheap haiku turn per message).
  • Delivery status: the relay transcript (~/.claude/projects/*/<session-id>.jsonl) records the SendMessage call and result.
  • Replies: incoming peer messages are stored in the transcript as origin: {kind: "peer", body}.
  • Presence: /list-agents is typed into the relay on a timer. It is a slash command, so it uses no model tokens.

The relay only has SendMessage, ListAgents and ToolSearch, and is told never to act on peer messages.

Requirements

  • macOS or Linux with python3, or Windows 10/11 (uses ConPTY through a bundled module), and the claude CLI (v2.1.225+; v2.1.234+ on Windows) signed in with claude.ai (same account as the target).
  • Target session running with Remote Control (claude --remote-control hp-release), with crossSessionInbound allowing messages, and the permissions it needs allow-listed (a message cannot approve a prompt).
  • No ANTHROPIC_BASE_URL, Bedrock/Vertex, or CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC (Remote Control is unavailable then).

Develop

npm install
npm run build        # bundle to dist/
npm test             # parser unit tests

Open this folder in VS Code and press F5 (Run Extension). The Session Chat icon appears in the activity bar.

Manual end-to-end check against the real CLI (--send really messages the target):

npx esbuild test/integration.ts --bundle --platform=node --outfile=dist/int.js
node dist/int.js                      # start relay, read presence
node dist/int.js --send "ping"        # also send a message and print the reply

Package: npm run package produces a .vsix.

Settings

Setting Default Meaning
sessionChat.targetSession hp-release Session to chat with
sessionChat.myName Mac Name on your messages
sessionChat.relayName chat-relay Name the target sees you as
sessionChat.model haiku Relay model
sessionChat.claudePath auto Path to claude
sessionChat.pollSeconds 45 Presence refresh interval

Keeping usage low

Every message costs a few small haiku calls on the relay, and the other session spends tokens on its own model to read and answer. The pane shows the relay's own tokens under the quota bars. To keep the other session's replies short, add this to that session's CLAUDE.md:

When a message arrives from another session (for example "chat-relay"), reply in one or two plain sentences.
No headings, no code blocks unless asked, and no restating the request.

Measured relay cost (one list-sessions request, warm cache, haiku)

calls new input cached input output
default relay 2 5.1k 15.3k 109
slim relay (default) 2 3.4k 8.9k 32

Two calls is the floor: one to call the tool, one to read its result. Turning tool search off was tested and is worse (every tool schema loads up front). The cache lasts about an hour, so messaging regularly keeps it warm; the first message after a long pause pays for the cache again. There is no model-free path to a session on another machine, so sending always costs those calls.

Windows

The relay needs a pseudo-terminal. macOS and Linux get one from media/pty_bridge.py (Python standard library). Windows has no such module, so the Windows packages bundle @lydell/node-pty (prebuilt ConPTY binaries, no compiler needed) under native/. The Marketplace serves each platform its own package.

  • claude is found with where.exe; a real claude.exe is preferred over an npm claude.cmd shim, which is run through cmd.exe.
  • If something fails on Windows, set sessionChat.claudePath to the full path of claude.exe and use Session Chat: Restart Relay.
  • Not verified on Windows by the author yet. Please report what you see (Help > Toggle Developer Tools > Console, filter session-chat).

Why a session may not reply

A session that receives a message answers in its own terminal. Its plain-text output is never delivered to the sender; it has to call SendMessage back. Session Chat therefore appends a one-line note asking for that (setting sessionChat.replyHint). If you turn the note off, put a rule in the other session's CLAUDE.md instead: reply to messages from other sessions with SendMessage.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft