Telegram plugin: inbound messages not delivered to session

Resolved 💬 13 comments Opened Mar 20, 2026 by jtehrani84 Closed May 5, 2026

Bug Description

The Telegram plugin (v0.0.1) successfully sends outbound messages (Claude → Telegram) but fails to deliver inbound messages (Telegram → Claude Code session).

Steps to Reproduce

  1. Install Telegram plugin (telegram@claude-plugins-official)
  2. Configure bot token via /telegram:configure
  3. Pair a Telegram user via /telegram:access pair <code>
  4. Send a message from Claude Code to Telegram — works (text + file attachments)
  5. Send a message from Telegram to the bot — bot shows "typing" indicator but message never arrives in the Claude Code session

Expected Behavior

Inbound Telegram messages should appear in the Claude Code session as <channel source="telegram" ...> notifications.

Actual Behavior

  • The bot receives the message (shows "typing" indicator in Telegram)
  • The MCP notification (notifications/claude/channel) is fired in server.ts:578
  • The notification never reaches the Claude Code session — no channel message appears

Environment

  • Claude Code: 2.1.80
  • Plugin: telegram@claude-plugins-official v0.0.1 (commit 8908a58)
  • OS: macOS (Apple Silicon), Darwin 25.3.0
  • Runtime: Bun (plugin server process visible via ps)
  • Config: enabledPlugins in ~/.claude/settings.json, no mcp.json

Configuration Verified

  • Bot token is set in ~/.claude/channels/telegram/.env
  • access.json has correct allowFrom with the sender's ID
  • Plugin server process is running (bun run start)
  • Outbound tools (reply, react, edit_message) all function correctly
  • Session restart did not resolve the issue

Notes

The server uses mcp.notification({ method: 'notifications/claude/channel', ... }) to deliver inbound messages. The issue appears to be in the notification transport between the MCP server and the Claude Code session, not in the Telegram bot polling or access control.

View original on GitHub ↗

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