Telegram plugin: inbound messages not delivered to conversation

Resolved 💬 3 comments Opened Mar 20, 2026 by klaushofrichter Closed Mar 21, 2026

Summary

The Telegram MCP plugin (telegram channel) polls and consumes inbound messages from the Telegram Bot API, but the notifications/claude/channel MCP notification never reaches the active Claude Code conversation. Outbound messages (via the reply tool) work fine.

Steps to reproduce

  1. Configure the Telegram plugin with a valid bot token in ~/.claude/channels/telegram/.env
  2. Add a user ID to allowFrom in access.json
  3. Start a Claude Code session, /reload-plugins
  4. Send a DM to the bot from the allowed Telegram account
  5. The message is consumed (verified via getUpdates returning empty results), but no <channel> notification appears in the conversation

Debugging performed

  • Bot token: valid (getMe succeeds, bot responds to reply tool calls)
  • Webhook: none set (getWebhookInfo returns empty URL)
  • Polling: confirmed working — getUpdates returns empty after the plugin consumes messages
  • Gate logic: user ID is in allowFrom, so gate returns deliver (verified by reading server.ts)
  • MCP notification: handleInbound calls mcp.notification({ method: 'notifications/claude/channel', ... }) — this fires but the conversation never sees it
  • Outbound: reply tool works correctly (messages delivered to Telegram)
  • Session restart: tried /reload-plugins and full session restart — no change
  • Switched bot tokens: reproduced with two different bots

Expected behavior

Inbound Telegram messages from allowed users should appear in the Claude Code conversation as <channel source="telegram" ...> blocks.

Environment

  • macOS (Darwin 25.3.0)
  • Claude Code with Telegram plugin v0.0.1
  • grammy-based bot polling

🤖 Generated with Claude Code

View original on GitHub ↗

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