Telegram channel plugin: inbound messages not delivered to conversation (outbound works)
Bug description
When using --channels plugin:telegram@claude-plugins-official, outbound messages (via reply tool) are delivered successfully to Telegram, but inbound messages from Telegram are never injected into the conversation. The bot receives messages (confirmed via 409 Conflict on getUpdates), the gate() function returns deliver, and mcp.notification({ method: 'notifications/claude/channel' }) is called — but nothing appears in the Claude Code session.
Steps to reproduce
- Install and configure
telegram@claude-plugins-officialplugin - Set bot token in
~/.claude/channels/telegram/.env - Configure
access.jsonwith a valid Telegram user ID inallowFrom - Launch:
claude --channels plugin:telegram@claude-plugins-official - Use the
replytool to send a test message → works - Reply to the bot from Telegram → message never appears in conversation
Diagnostic results
| Check | Result |
|-------|--------|
| Token configured | ✅ |
| Bot polling active (409 on getUpdates = exclusive polling) | ✅ |
| Outbound tool (reply) | ✅ messages delivered |
| allowFrom contains user ID | ✅ |
| gate() → deliver path | ✅ (code review confirmed) |
| mcp.notification() called | ✅ (code at server.ts:925) |
| Inbound message appears in conversation | ❌ Never arrives |
| Webhook set (would conflict with polling) | No webhook (url: "") |
| Multiple bot instances | No, single instance confirmed |
Environment
- Claude Code: 2.1.86
- Plugin: telegram@claude-plugins-official v0.0.4
- OS: Ubuntu, Linux 6.17.0-19-generic x86_64
- Runtime: Bun 1.3.6
- MCP transport: stdio (server.ts → StdioServerTransport)
Expected behavior
Inbound Telegram messages from allowlisted users should appear in the conversation as <channel source="telegram" ...> blocks.
Actual behavior
The MCP server receives the message, passes gate(), calls mcp.notification({ method: 'notifications/claude/channel', params: { content, meta } }) — but Claude Code does not surface the message. The catch block at server.ts:946 does not fire (no error logged to stderr).
The startup log shows "channels ignored" which may indicate Claude Code is not subscribing to channel notifications from this MCP server despite the --channels flag.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗