Telegram channel plugin: inbound messages not received by session

Resolved 💬 3 comments Opened Mar 22, 2026 by ThomasNordenETR Closed Mar 26, 2026

Bug description

The Telegram channel plugin (plugin:telegram@claude-plugins-official) successfully sends outbound messages (reply tool works) but inbound messages from Telegram never reach the Claude Code session.

Steps to reproduce

  1. Configure Telegram plugin: bot token in .env, user ID in access.json allowlist
  2. Start Claude Code with --channels plugin:telegram@claude-plugins-official
  3. Send /status to the bot in Telegram → bot replies "Paired as @username" ✅
  4. Use the reply tool from Claude Code → message arrives in Telegram ✅
  5. Send a regular text message from Telegram to the bot → nothing appears in the Claude Code conversation

Expected behavior

Inbound Telegram messages should appear in the conversation as <channel source="telegram" ...> blocks.

Actual behavior

Messages are silently dropped. The bot receives them (proven by /status working), the gate passes (user is in allowlist), handleInbound is called and mcp.notification({ method: 'notifications/claude/channel', ... }) fires — but the notification never reaches the Claude Code session.

Verified (not the cause)

  • Bot token is correct (outbound works)
  • access.json has correct user ID, dmPolicy: "allowlist"/status confirms "Paired"
  • Only one bun process running (no zombie/409 conflict)
  • server.ts code path is correct: bot.on('message:text')handleInboundgate returns delivermcp.notification called

Likely cause

The MCP notification (notifications/claude/channel) is emitted by the plugin's MCP server but not received/processed by the Claude Code session. This appears to be a transport-level issue between the plugin's MCP server and the Claude Code host.

Environment

  • Claude Code: 2.1.81
  • macOS: 26.3.1 (Apple Silicon)
  • Bun: 1.3.11
  • Plugin: telegram@claude-plugins-official v0.0.1
  • grammy: ^1.21.0

Reproducibility

Consistent across multiple sessions over several days. Restarting Claude Code and starting new sessions does not fix it.

View original on GitHub ↗

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