[BUG] [Plugin: Telegram] Inbound notifications never delivered to session — outbound works fine
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?
The official Telegram plugin (telegram@claude-plugins-official) receives inbound messages via grammy long polling but mcp.notification({ method: never surfaces in the Claude session. Outbound works perfectly (both
'notifications/claude/channel', ... })reply tool and direct curl).
What Should Happen?
Bug Description
The official Telegram plugin (telegram@claude-plugins-official) receives inbound messages via grammy long polling but mcp.notification({ method: never surfaces in the Claude session. Outbound works perfectly (both
'notifications/claude/channel', ... })reply tool and direct curl).
## Additional observations
- The MCP server process (
bun server.ts) frequently crashes/disconnects during the session. Tools disappear with "MCP server disconnected" and the bun process
is gone from ps aux.
- Running
bun server.tsmanually outside Claude (viatimeout 30 bun server.ts) is stable — survives 30s+ with no crashes. - Outbound
replytool works perfectly when the server is alive. - Direct
curltosendMessageAPI works perfectly. - Token validated via
getMe— bot responds correctly. - No webhook set (long polling mode confirmed via
getWebhookInfo). access.jsongate logic is correct — sender ID is inallowFrom,gate()returnsdeliver.
## Environment
- Claude Code: 2.1.80
- OS: Unraid 7.2.4 (Slackware-based), Kernel 6.12.54-Unraid
- Runtime: Bun 1.3.10
- Plugin: telegram@claude-plugins-official v0.0.1
- Node: Running as root natively (not in Docker)
- Other MCP servers: claude-mem (disabled), Notion (remote), obsidian-vault (filesystem)
## Workaround
Using direct curl to Telegram Bot API for outbound. No workaround for inbound — user must paste messages manually in the terminal.
Error Messages/Logs
## Relevant logs
No stderr captured from the MCP subprocess — it crashes silently when managed by Claude Code. When started manually (`bun server.ts`), it prints `telegram
channel: polling as @sohomelabbot` and runs indefinitely without errors.
Steps to Reproduce
- Install and enable Telegram plugin (telegram@claude-plugins-official)
- Configure bot token in ~/.claude/channels/telegram/.env
- Set access.json with dmPolicy: "allowlist" and sender's ID in allowFrom
- /reload-plugins — tools appear (reply, react, edit_message)
- Send a DM to the bot from Telegram
- Expected: Message appears in Claude session as <channel source="telegram" ...>
- Actual: Nothing arrives. The MCP server consumed the update (getUpdates returns empty), but the notification is never delivered. Additionally, the MCP
server process frequently crashes/disconnects silently.
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.80
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗