[Bug] Telegram channel plugin: --channels dispatch fails with "--print" input error
Summary
The Telegram channel plugin (telegram@claude-plugins-official v0.0.5) MCP server starts and polls Telegram successfully, but claude --channels fails to dispatch incoming messages. The error log fills with:
Error: Input must be provided either through stdin or as a prompt argument when using --print
This line repeats for every incoming Telegram message (124K+ lines accumulated over ~3 days before I noticed).
Steps to Reproduce
- Install the Telegram plugin via
/install telegram - Configure bot token in
~/.claude/channels/telegram/.env - Pair a Telegram user (allowlist in
access.json) - Run
claude --channels plugin:telegram@claude-plugins-official - Send a message to the bot from Telegram
Expected Behavior
The message should be delivered to the active Claude Code session or queued for the next one.
Actual Behavior
- The
claude --channelsprocess (PID visible inps) stays alive but spawns no child processes (no bun server.ts running under it). claude-channels-error.logaccumulates the--printerror for every incoming message.claude-channels.logstays empty.- No
bot.pidfile is created, confirming the MCP server never starts under the channels runner.
Diagnosis
The MCP server itself is not the problem. Running it manually proves it works:
cd ~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.5
echo '{"jsonrpc":"2.0","method":"initialize","id":1,...}' | bun server.ts
Output:
- Returns valid MCP
initializeresponse withclaude/channelcapability - Polls Telegram successfully (
telegram channel: polling as @bot_name) - Emits proper
notifications/claude/channelJSON-RPC for incoming messages
The failure is in the channels dispatch layer inside Claude Code — when it receives an MCP channel notification, it tries to spawn claude --print to handle it, but the message content is not passed correctly (either via stdin or as a prompt argument), causing the --print invocation to reject with the input error.
Environment
| Component | Version |
|---|---|
| Claude Code | 2.1.104 |
| Telegram plugin | 0.0.5 |
| macOS | 26.2 (arm64) |
| Bun | 1.3.12 |
| Node | N/A (plugin uses bun) |
Workaround
None found. The channel feature is non-functional. Killing the claude --channels process stops the error log growth but obviously disables the channel entirely.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗