[Bug] Telegram channel plugin: --channels dispatch fails with "--print" input error

Resolved 💬 3 comments Opened Apr 13, 2026 by PyeonSangJin Closed Apr 16, 2026

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

  1. Install the Telegram plugin via /install telegram
  2. Configure bot token in ~/.claude/channels/telegram/.env
  3. Pair a Telegram user (allowlist in access.json)
  4. Run claude --channels plugin:telegram@claude-plugins-official
  5. 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 --channels process (PID visible in ps) stays alive but spawns no child processes (no bun server.ts running under it).
  • claude-channels-error.log accumulates the --print error for every incoming message.
  • claude-channels.log stays empty.
  • No bot.pid file 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 initialize response with claude/channel capability
  • Polls Telegram successfully (telegram channel: polling as @bot_name)
  • Emits proper notifications/claude/channel JSON-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.

View original on GitHub ↗

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