Skip to main content

ADR 0001: Push transport

  • Status: decided for stdio; one experiment open
  • Date: 2026-10-28

Context​

To reach an idle Claude Code session, something must inject a message into it without the user typing. Claude Code channels do this: an MCP server that declares the claude/channel capability can send notifications/claude/channel events, which the session shows as input. Channels are documented for stdio MCP servers. Generic MCP notifications from an HTTP server are not shown to the model.

Decision​

Push to a running session uses a stdio channel server: session-bus channel. It runs next to each session and polls the HTTP bus.

Open experiment​

Whether an HTTP MCP server can register as a channel in a live session has not been tested. The test is: add a throwaway HTTP server, start claude --dangerously-load-development-channels server:<name>, and see whether it registers. The result is still recorded as deferred-human.

If HTTP channels do register, the stdio shim could be dropped (see follow-up 3 in ADR 0002).