Telegram plugin: inbound channel notifications silently dropped

Resolved 💬 3 comments Opened Mar 20, 2026 by RananjayRaj Closed Mar 20, 2026

Bug Report

Summary

The Telegram plugin (telegram@claude-plugins-official v0.0.1) can send messages to Telegram via MCP tools (reply, react, edit_message), but inbound messages from Telegram never surface in the Claude Code conversation. The notifications/claude/channel MCP notification is silently dropped.

Environment

  • Claude Code version: 2.1.80 (latest)
  • OS: macOS (Darwin 25.3.0)
  • MCP SDK version: 1.27.1
  • Plugin: telegram@claude-plugins-official v0.0.1
  • Runtime: Bun

Steps to Reproduce

  1. Install the Telegram plugin: enable telegram@claude-plugins-official
  2. Configure bot token via /telegram:configure
  3. Pair a Telegram user via /telegram:access pair <code>
  4. User is added to allowFrom in access.json, dmPolicy set to allowlist
  5. Send a message from the paired Telegram account to the bot
  6. Message is consumed by the server (verified: pending_update_count: 0 from getWebhookInfo, no webhook conflict)
  7. Message passes the gate (user is allowlisted)
  8. mcp.notification({ method: 'notifications/claude/channel', params: { content, meta } }) fires on line 578 of server.ts
  9. Nothing appears in Claude Code — the notification is silently dropped

What Works

  • Outbound: reply tool sends messages to Telegram successfully
  • Outbound: react tool adds emoji reactions
  • Outbound: edit_message tool edits bot messages
  • Bot token validation: getMe returns correct bot info
  • Pairing flow: /start → pairing code → /telegram:access pair → "Paired!" confirmation sent
  • Server process stays running, polls correctly

What Doesn't Work

  • Inbound notifications/claude/channel notifications never reach the Claude Code conversation
  • The server declares experimental: { 'claude/channel': {} } in MCP capabilities (line 338 of server.ts)
  • The notification fires (no error on server side) but Claude Code doesn't process it

Observations

  • The bot briefly responded to one inbound message during the session, suggesting the capability exists but is unreliable
  • Multiple restart attempts (closing all sessions, restarting Claude Code) did not resolve
  • No competing webhook (getWebhookInfo returns empty URL)
  • Single session running (no dual-process conflict)

Expected Behavior

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

Actual Behavior

Inbound messages are consumed by the server and the MCP notification fires, but nothing appears in the Claude Code session. The experimental claude/channel capability appears to not be reliably wired up on the client side.

View original on GitHub ↗

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