[BUG] Telegram plugin: inbound messages no longer delivered to session (outbound reply still works)

Resolved 💬 3 comments Opened Apr 8, 2026 by raminotojo Closed Apr 12, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Environment

  • Claude Code: 2.1.96
  • Plugin: telegram@claude-plugins-official v0.0.4
  • OS: macOS (Darwin 25.4.0)
  • Scope: local (project)

Symptom
Messages sent to the Telegram bot no longer appear in the Claude Code session
as <channel source="telegram"> blocks. This worked yesterday with no version
change on either side.

What works

  • Bot token valid (getMe returns the bot).
  • Allowlist correct: access.json has dmPolicy: "allowlist" and my Telegram

user ID in allowFrom.

  • The bun MCP server respawns correctly on /reload-plugins.
  • The server does consume incoming updates: after sending a message,

getUpdates returns [] (confirming long-polling drained it).

  • Outbound works: calling mcp__plugin_telegram_telegram__reply from the

session successfully delivers a message to Telegram.

What's broken

  • After the server consumes the update, no <channel> notification ever

surfaces in the Claude Code session.

  • Tested by stopping the server, sending a message, and inspecting getUpdates

directly: the raw payload is correct, sender ID matches the allowlist exactly,
gate logic should return deliver.

  • Suspect: the mcp.notification({ method: 'notifications/claude/channel', ...

}) call in server.ts is no longer surfaced by the harness.

What I tried

  • /reload-plugins (multiple times)
  • Full Claude Code restart
  • Killing the bun server process to force respawn
  • claude update (already on latest 2.1.96)
  • claude plugin update telegram@claude-plugins-official --scope local (already

at 0.0.4, latest)

Workaround
None — outbound-only is unusable for an interactive bot.

What Should Happen?

When a Telegram user on the allowlist sends a DM to the bot, the message
should appear in the active Claude Code session as a <channel
source="telegram" chat_id="..." message_id="..." user="..."
ts="...">...</channel> block, so I can read it and respond via the reply tool.
This is how it worked until yesterday.

Error Messages/Logs

Steps to Reproduce

Reproduction

  1. Configure telegram plugin with valid token + allowlist containing own user

ID.

  1. Send a DM to the bot.
  2. Observe: server consumes update (getUpdates empty), but no <channel> block

appears in the session.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.9

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

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