Telegram channel plugin: inbound messages not forwarded to session via MCP transport

Resolved 💬 3 comments Opened Mar 26, 2026 by cuzo151 Closed Mar 30, 2026

Description

The Telegram channel plugin (plugin:telegram@claude-plugins-official) polls for updates and consumes them, but does not forward inbound messages to the Claude Code session via the MCP notification bridge. Outbound messages (using the reply tool) work correctly.

Steps to Reproduce

  1. Launch Claude Code with --channels plugin:telegram@claude-plugins-official
  2. Complete Telegram bot pairing (/telegram:access)
  3. Send a message from an allowlisted user to the bot
  4. The plugin process (bun server.ts) receives and consumes the update (confirmed via getUpdates returning empty after plugin polls)
  5. The message never arrives in the Claude Code session

Expected Behavior

Inbound messages should be delivered to the Claude Code session via notifications/claude/channel MCP notification (line 926 of server.ts).

Actual Behavior

  • The plugin's gate() function correctly identifies the sender as allowlisted
  • The handleInbound() function fires and calls mcp.notification()
  • But the notification never reaches the Claude session
  • The MCP transport bridge between the plugin process and the session appears disconnected

Workaround

Kill the plugin process and poll the Telegram Bot API directly via getUpdates + sendMessage using bash/curl. This bypasses the plugin entirely but costs tokens on each poll cycle.

Environment

  • macOS Darwin 25.4.0 (Apple Silicon)
  • Claude Code CLI with --channels plugin:telegram@claude-plugins-official
  • Plugin version: 0.0.4
  • grammy: ^1.21.0
  • bun runtime

Additional Context

  • The issue persists across session restarts
  • No error output from the plugin process (stderr shows only "polling as @BotName")
  • Multiple users have likely encountered this since the plugin silently fails

View original on GitHub ↗

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