Telegram plugin: inbound channel notifications not delivered to session

Resolved 💬 6 comments Opened Mar 20, 2026 by mmorkin Closed Apr 24, 2026

Summary

The Telegram plugin's MCP server receives messages from Telegram (confirmed via getUpdates returning empty — updates are consumed), but notifications/claude/channel never arrives in the Claude Code session. Outbound tools (reply, react, edit_message) work fine.

Steps to reproduce

  1. Install the Telegram plugin: /plugin install telegram@claude-plugins-official
  2. Configure bot token and access policy (allowlist with valid user ID)
  3. /reload-plugins
  4. DM the bot on Telegram
  5. Bot shows "typing" indicator (confirming the server received the message and passed the gate)
  6. No <channel> message ever appears in the Claude Code session

Debugging performed

  • Bot token valid: getMe returns correct bot info
  • Updates consumed: getUpdates returns [] immediately after sending a message, confirming the MCP server's grammy instance is polling and consuming updates
  • Gate passes: "typing" indicator fires (line 561 in server.ts), which is after the gate() check returns deliver
  • Outbound works: reply tool successfully sends messages to Telegram
  • Access config correct: dmPolicy: "allowlist", user ID in allowFrom, also tried pairing mode
  • Process running: Single bun run process, no competing consumers
  • No webhook set: getWebhookInfo shows empty URL
  • Fresh reinstall: Uninstalled and reinstalled plugin, same behavior
  • New bot token: Tried a completely different bot — same result

Suspected cause

The mcp.notification() call at line 578 of server.ts executes without error but the notification never reaches the Claude Code session. This may be related to testing multiple bot configurations across different git worktrees in the same session — something in the Claude Code ↔ MCP stdio transport may have gotten into a bad state that persists across /reload-plugins.

Environment

  • macOS (Darwin 25.2.0)
  • Claude Code with Opus model
  • Telegram plugin v0.0.1 (8908a582f80d1396b2af65949a0cd001fe8aacca)
  • Plugin installed at user scope

Expected behavior

Messages sent to the bot should appear as <channel source="telegram" ...> in the Claude Code conversation.

Workaround

None found. Restarting the session (new claude invocation) may help but was not tested.

View original on GitHub ↗

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