--channels prints 'Listening' banner but never spawns MCP server child processes
Description
When launching Claude Code with --channels, the green "Listening for channel messages from: ..." banner appears, but the plugin MCP servers are never actually spawned as child processes. No inbound messages are received in the session.
Repro steps
- Install discord and imessage channel plugins from
claude-plugins-officialmarketplace - Configure
~/.claude/channels/discord/.envand~/.claude/channels/imessage/access.json - Launch:
````
claude --channels plugin:discord@claude-plugins-official --channels plugin:imessage@claude-plugins-official
- Observe the green banner: "Listening for channel messages from: plugin:discord@claude-plugins-official, plugin:imessage@claude-plugins-official"
- Send a message from an allowlisted Discord user or iMessage number
- Message never arrives in session
Diagnosis
ps auxshows the only child of theclaudeprocess iscaffeinate. Nobunprocesses running the pluginserver.tsfiles.- Both plugins start and run correctly when launched manually with the exact command from their
.mcp.json:
```
bun run --cwd <plugin_root> --shell=bun --silent start
`
iMessage server outputs healthy startup:
``
imessage channel: self-chat addresses: +1XXXXXXXXXX, user@gmail.com
imessage channel: watching chat.db (watermark=531600)
Discord server also starts cleanly with no errors.
- Plugin configs are correct:
.claude-plugin/plugin.jsonhas"channel"in keywords.mcp.jsonhas validmcpServersentry withcommand: "bun"access.jsonallowlists are populatedbunis in PATH and functional
Expected behavior
Claude Code should spawn the MCP servers as child processes after printing the "Listening" banner, connect via stdio, and relay inbound notifications/claude/channel events into the session.
Actual behavior
Banner prints but no child processes are spawned. Messages are silently dropped. No error output visible in the terminal.
Environment
- Claude Code: 2.1.84
- macOS 26.4 (Darwin 25.4.0, arm64, Mac Mini M4)
- Bun: 1.3.11
- Plugins:
discord@0.0.4,imessage@0.0.1fromclaude-plugins-official - Full Disk Access: granted
Note
No stderr log is produced by Claude Code for the channel spawn failure. Redirecting stderr (2>/tmp/log) may help capture what's happening internally.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗