Telegram plugin: inbound messages not delivered to conversation

Status Fixed / completed
Maintainer reply None cached
Activity 3 comments · opened Mar 20, 2026 · 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 ↗