[DOCS] Undocumented `ccd_*` MCP servers: session-to-session messaging and `list_sessions` scope

Status Fixed / completed
Maintainer reply None cached
Activity 2 comments · opened Jul 29, 2026 · closed Aug 16, 2026

Documentation Type

Missing documentation (feature not documented)

Documentation Location

https://code.claude.com/docs/en/agent-sdk/sessions.md

Section/Topic

Session management — the ccd_* MCP servers, and session-to-session messaging

Current Documentation

The docs cover several adjacent capabilities, none of which is the one below:

  • Agent teams — a lead session and its spawned teammates share a task list and mailbox. Inter-agent, but within one orchestrated session.
  • Channels — push events into a session from an external system. Opposite direction.
  • Agent SDK session functionslist_sessions(), get_session_info(), rename_session(), tag_session() for reading/modifying local session metadata. No messaging.
  • /teleport and /remote-control — move or drive a single session across surfaces.

None of these describes sending a message from one live session into a different concurrent session's transcript.

What's Wrong or Missing?

A Claude Code desktop session exposes a set of MCP servers prefixed ccd_ that appear in no public documentation I could find:

  • mcp__ccd_session_mgmt__*list_sessions, send_message, get_session, archive_session, set_session_title, search_session_transcripts, list_events
  • mcp__ccd_session__*mark_chapter, spawn_task, dismiss_task, read_widget_context
  • mcp__ccd_directory__request_directory

send_message's own tool description reads:

Send a message to another CCD session. The message arrives in the target session as a user turn labelled "From {this session's title}" with a link back here… Unavailable in unattended sessions (scheduled-task runs and remote-dispatched sessions), and cannot deliver to them either.

Using it returned: Message queued for session <id>; it will be processed after the in-flight turn finishes if that session stays healthy.

Three things are undocumented, and the third caused me to give a user an unsupported answer:

  1. What "CCD" stands for. It appears only as a tool-name prefix and inside tool descriptions. "Claude Code Desktop" is a guess.
  2. That session-to-session messaging exists at all, and how it differs from agent teams / channels / teleport.
  3. Which sessions list_sessions enumerates. On a machine with 9 active git worktrees it returned exactly 1 session. That could mean it only registers desktop-app sessions (excluding the VS Code extension and plain claude terminal runs), or it could mean ended sessions drop out, or that the registry is keyed on something narrower than I assumed. I could not distinguish these, and told the user VS Code sessions are unreachable — a claim I could not substantiate.

Practical consequence: an agent asked to hand off context to a peer session cannot tell whether a target is absent because it is unaddressable by design, or because it simply is not listed. The failure is silent — you address the one session you can see, which may be a bystander.

Suggested Improvement

Documentation should state:

  1. Expand "CCD" on first use, and say which surfaces provide these MCP servers (desktop app only? version/flag gated?).
  2. Document send_message semantics, and contrast it with the adjacent features above so it is clear which tool to reach for:
  • delivery is queued, not synchronous — what "if that session stays healthy" means, and whether failure is observable
  • the message lands as a user turn in the target, i.e. it can cause another agent to act
  1. Define list_sessions scope explicitly — which session types register, whether VS Code-extension and terminal sessions are included, and what causes a live session to be absent. A single sentence such as "only sessions started in the desktop app appear; extension and terminal sessions are not addressable" would settle it.
  2. State whether any supported handoff to a VS Code-extension or terminal session exists, even if the answer is "no".

If these servers are intentionally internal and not for general use, saying so is equally useful — a tool that is visible to the model but undocumented invites exactly the kind of confident-but-unfounded explanation I gave.

Impact

Medium - Makes feature difficult to understand

Additional Context

Observed on the Claude Code desktop app, late July 2026, in a repo with multiple concurrent worktrees. I looked for prior issues on ccd_session_mgmt, send_message session, and list_sessions and found none.

Filed after a claude-code-guide lookup confirmed the gap: it located agent teams, channels, and the Agent SDK session functions, and reported that the ccd_* servers and session-to-session messaging are absent from the public docs.

Related docs: Agent SDK sessions · Agent teams · Channels

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗