Telegram plugin: inbound channel notifications not surfacing in conversation

Resolved 💬 4 comments Opened Mar 22, 2026 by jhwright Closed Apr 21, 2026

Summary

The Telegram plugin's MCP server is running and connected to the active Claude Code session, but inbound messages from Telegram never appear in the conversation. Outbound replies via the reply tool work fine.

Environment

  • Claude Code version: 2.1.81
  • OS: macOS (Darwin 25.1.0)
  • Plugin: telegram@claude-plugins-official v0.0.1
  • Runtime: bun

What works

  • Bot process is running, parented to the current Claude Code session (verified via ps + ppid)
  • Telegram user ID is in access.json allowFrom array
  • gate() returns deliver for the user's messages
  • Outbound mcp__plugin_telegram_telegram__reply tool calls succeed (user receives messages in Telegram)
  • Pairing flow completed successfully (bot responded with pairing code, user was approved)

What doesn't work

After pairing, all subsequent DMs to the bot get no response. The bot receives the messages (Telegram shows double checkmarks), and the code path reaches mcp.notification():

mcp.notification({
    method: 'notifications/claude/channel',
    params: {
        content: text,
        meta: { chat_id, message_id, user, user_id, ts }
    }
})

But the notification never surfaces in the Claude Code conversation. No <channel source="telegram" ...> block appears. The user has restarted Claude Code multiple times with the same result.

Steps to reproduce

  1. Install the Telegram plugin (telegram@claude-plugins-official)
  2. Configure bot token in ~/.claude/channels/telegram/.env
  3. DM the bot from Telegram — pairing flow works
  4. Approve pairing via /telegram:access pair <code>
  5. Bot confirms "Paired! Say hi to Claude."
  6. Send any message to the bot — no response, no channel notification in conversation

Expected behavior

Inbound Telegram messages should appear as <channel source="telegram" ...> notifications in the active Claude Code conversation, allowing the assistant to read and respond.

Actual behavior

Messages are silently dropped after mcp.notification() is called. The notification never reaches the conversation context.

View original on GitHub ↗

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