Telegram plugin: channel notifications not delivered to session

Resolved 💬 4 comments Opened Mar 20, 2026 by cbc76am-hue Closed Apr 18, 2026

Description

The Telegram MCP plugin (telegram@claude-plugins-official v0.0.1) successfully polls messages and sends outbound replies, but inbound notifications/claude/channel notifications are never surfaced in the Claude Code session.

Environment

  • Claude Code: v2.1.80
  • Platform: Linux (Ubuntu, x86_64)
  • Plugin: telegram@claude-plugins-official v0.0.1 (commit 8908a582f80d)
  • Model: claude-opus-4-6

Steps to Reproduce

  1. Install the Telegram plugin from claude-plugins-official
  2. Configure bot token in ~/.claude/channels/telegram/.env
  3. Complete pairing (sender ID in access.json allowFrom)
  4. Start a new Claude Code session (fresh /exitclaude)
  5. Verify the MCP server process is running (ps aux | grep telegram shows bun run ... start)
  6. Verify the bot token works (/getMe returns success)
  7. Send a DM to the bot from Telegram
  8. Verify the server consumed the message (/getUpdates returns 0 pending)

Expected Behavior

The message should appear in the Claude Code session as a <channel source="telegram" ...> notification, as documented in the plugin's MCP instructions.

Actual Behavior

  • The server process runs and polls successfully
  • Messages are consumed from the Telegram API (0 pending updates after send)
  • Image attachments are downloaded to ~/.claude/channels/telegram/inbox/
  • mcp.notification({ method: 'notifications/claude/channel', ... }) fires in server.ts (line ~578)
  • No notification appears in the Claude Code session
  • Outbound reply tool works correctly (messages delivered to Telegram)

Workaround Attempted

  • /mcp reconnect → server reconnects but notifications still don't arrive
  • Full session restart (/exitclaude) → same behavior
  • Confirmed .env has correct token, access.json has correct allowFrom

Notes

This worked in a prior session (user reports Telegram channel was functional before). The server code appears correct — mcp.notification() is called with the right method and params. The issue seems to be in how Claude Code handles notifications/claude/channel from MCP servers.

View original on GitHub ↗

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