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).