Telegram channel plugin: inbound messages not delivered to session

Resolved 💬 3 comments Opened Mar 24, 2026 by gouveiadavid Closed Mar 28, 2026

Description

Outbound messages (reply tool) work perfectly — messages sent from Claude Code arrive in Telegram. However, inbound messages from Telegram are never delivered to the Claude Code session.

Environment

  • Claude Code: v2.1.80
  • Plugin: telegram@claude-plugins-official v0.0.1
  • OS: macOS (Darwin 25.3.0)
  • Bot framework: grammy v1.21.0

Setup

  • access.json correctly configured: dmPolicy: "allowlist", user ID in allowFrom
  • Bot token valid and working
  • Session started with claude --channels plugin:telegram@claude-plugins-official

What works

  • Bot connects and starts polling (bot.start() succeeds, logs polling as @botname)
  • Pairing flow works — initial pairing message was received and approved
  • Outbound: reply tool sends messages to Telegram successfully
  • Bot receives inbound messages (confirmed by ack reactions and typing indicators firing)

What does not work

  • Inbound: Messages sent from Telegram to the bot never appear in the Claude Code session
  • The mcp.notification({ method: "notifications/claude/channel", ... }) call in handleInbound() (server.ts:580) executes without error but the notification is not delivered to the Claude session
  • Tested repeatedly with text messages — none arrived

Steps to reproduce

  1. Install telegram plugin, configure bot token and pair a user
  2. Start session: claude --channels plugin:telegram@claude-plugins-official
  3. Send a message from Claude Code to Telegram using the reply tool (works)
  4. Send a message from Telegram to Claude Code (never arrives)

Expected behavior

Messages sent from an allowlisted Telegram user should appear in the Claude Code session as <channel source="telegram" ...> blocks.

Actual behavior

Messages are silently dropped between the MCP notification and the Claude Code session. The bot processes them (gate passes, ack fires) but the session never receives them.

View original on GitHub ↗

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