Telegram plugin: inbound messages not delivered to conversation (outbound works)
Resolved 💬 6 comments Opened Apr 11, 2026 by DavidMorgade Closed May 5, 2026
Bug Description
The Telegram plugin (v0.0.5) receives inbound messages from Telegram (shows "typing" indicator) but does not inject them into the Claude Code conversation. Outbound messages via the reply tool work perfectly.
Environment
- Claude Code: 2.1.101
- Plugin: telegram@claude-plugins-official 0.0.5 (also tested with 0.0.4)
- OS: WSL2 Ubuntu 24.04 / Linux 6.6.87.2-microsoft-standard-WSL2
- Runtime: Bun (bun server.ts)
Configuration
~/.claude/channels/telegram/access.json:
{
"dmPolicy": "pairing",
"allowFrom": ["<my_telegram_id>"],
"groups": {},
"pending": {}
}
- Bot token is valid (
getMereturns OK) - Sender ID is in
allowFrom - Plugin is enabled in
settings.json
What works
mcp__plugin_telegram_telegram__replysends messages to Telegram successfullyreactandedit_messagetools also work- Bot process is running and polling (
getUpdatesreturns 409 Conflict confirming exclusive poll) gate()function returnsdeliverfor the allowed sender (verified by reading source)
What doesn't work
- Messages sent from Telegram to the bot never appear as
<channel source="telegram">tags in the conversation - The bot shows "typing" indicator (line 940 in server.ts fires), confirming the message reaches
handleInbound()and passes the gate - The MCP notification is dispatched (line 957:
mcp.notification({ method: 'notifications/claude/channel', ... })) but Claude Code does not surface it
Steps to Reproduce
- Configure telegram plugin with valid bot token and sender ID in allowFrom
- Start a Claude Code session
- Verify plugin is running (
ps aux | grep telegram) - Send a message from Telegram to the bot
- Bot shows "typing" but no
<channel>tag appears in the conversation - Use the
replytool from Claude Code → message arrives in Telegram (outbound works)
Investigation Done
- Confirmed single plugin process (no zombie/duplicate pollers)
- Confirmed
gate()returnsdeliver(sender is in allowFrom) - Confirmed
bot.api.sendChatAction('typing')fires (user sees typing indicator) - Confirmed
mcp.notification()is called at line 957 of server.ts - Killed and restarted plugin — same behavior
- Tested with both plugin versions 0.0.4 and 0.0.5
- Plugin connects via
StdioServerTransport(line 630)
Expected Behavior
Messages from an allowed Telegram sender should appear in the Claude Code conversation as <channel source="telegram" chat_id="..." message_id="..." user="..." ts="...">message text</channel> tags.
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗