[BUG] Telegram plugin: inbound messages no longer delivered to session (outbound reply still works)
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
- Configure telegram plugin with valid token + allowlist containing own user
ID.
- Send a DM to the bot.
- 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_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗