Telegram plugin: inbound channel notifications never surface in Claude Code (outbound works)

Resolved 💬 3 comments Opened May 5, 2026 by bounce12340 Closed May 8, 2026

Summary

The official telegram@0.0.6 plugin's inbound message flow is broken on Claude Code 2.1.128. The bot receives Telegram messages correctly, but notifications/claude/channel notifications never surface as <channel source="telegram"> blocks in the conversation. Outbound (the reply tool) works fine.

Environment

  • Claude Code: 2.1.128
  • Plugin: telegram@claude-plugins-official v0.0.6
  • OS: macOS (Darwin 25.4.0)
  • Bot runtime: bun

Reproduction

  1. Install and configure telegram plugin via /telegram:configure
  2. Pair a Telegram user via /telegram:access pair <code> — sender ID added to allowFrom
  3. From Claude Code, call mcp__plugin_telegram_telegram__reply → message arrives on Telegram ✅
  4. From Telegram, send any message back to the bot → nothing happens in Claude Code

Evidence

  • claude mcp list reports plugin:telegram:telegram: ✓ Connected
  • Bot polling confirmed (TCP ESTABLISHED to 149.154.166.110:443)
  • Sender ID present in ~/.claude/channels/telegram/access.json allowFrom
  • Photos sent from Telegram are downloaded to ~/.claude/channels/telegram/inbox/ (proves bot receives messages and gate passes)
  • grep '<channel source="telegram"' across all ~/.claude/projects/-Users-chunghsutsai/*.jsonl returns zero matches — no session has ever received the notification

Hypothesis

Claude Code 2.1.128 may not implement a handler for the experimental notifications/claude/channel method that the plugin's MCP server emits (server.ts:957). Tool RPCs work because they use standard MCP request/response, but channel notifications are fire-and-forget — without a client-side handler, they're silently dropped.

Expected

Telegram messages from allowlisted senders should appear in the active Claude Code session as <channel source="telegram" chat_id="..." ...> user-message blocks.

View original on GitHub ↗

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