Telegram channel plugin: inbound MCP notifications not delivered to session

Resolved 💬 3 comments Opened Mar 23, 2026 by frank-bot07 Closed Mar 26, 2026

Bug

Inbound Telegram messages are not delivered to the Claude Code session, even though the plugin is fully configured and running correctly.

Setup

  • Telegram plugin (telegram@claude-plugins-official v0.0.1) installed and enabled
  • Bot token set, bot is polling successfully (getUpdates returns 409 confirming active polling)
  • access.json configured with dmPolicy: "allowlist" and two allowed sender IDs
  • Pairing was completed successfully in a prior session

What works

  • Outbound messages work: calling the reply tool successfully sends messages to Telegram users (confirmed received)
  • Bot process is running (bun server.ts, PID active)
  • MCP server connection is up (tools are callable)

What doesn't work

  • When an allowed user sends a DM to the bot on Telegram, the message never appears in the Claude Code conversation
  • The notifications/claude/channel MCP notification sent by handleInbound() in server.ts (line 792) does not surface in the session
  • No error is visible to the user — messages are silently lost

Diagnosis

  • Bot is actively polling (confirmed via competing getUpdates returning 409 Conflict)
  • No webhook is set (confirmed via getWebhookInfo)
  • Token is valid (getMe succeeds)
  • Sender IDs are in the allowlist (pairing was completed in a prior session)
  • The gate() function should return { action: 'deliver' } for these senders
  • The issue appears to be that Claude Code is not processing/surfacing inbound notifications/claude/channel MCP notifications from the plugin server

Environment

  • macOS (Darwin 25.2.0)
  • Bun runtime
  • Claude Code with Opus model

Impact

Outbound-only communication makes the Telegram channel effectively unusable for interactive use. User spent ~2 hours troubleshooting before determining this is a platform-side issue.

View original on GitHub ↗

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