Telegram channel plugin: inbound notifications/claude/channel not surfaced as <channel> tags
Description
The Telegram channel plugin (plugin:telegram@claude-plugins-official v0.0.1) successfully handles outbound messages (the reply tool works and delivers messages to Telegram), but inbound messages from Telegram never appear as <channel source="telegram"> tags in the conversation.
Steps to Reproduce
- Start Claude Code with:
claude --channels plugin:telegram@claude-plugins-official - Set up bot token, pair a Telegram user via
/telegram:access pair <code> - User is confirmed in
access.jsonallowFromlist - Send a message from Telegram to the bot
Expected: Message appears in Claude Code session as a <channel source="telegram" ...> tag
Actual: Nothing appears. The bot process receives the update (confirmed via getWebhookInfo showing pending_update_count: 0), the gate check passes, mcp.notification() is called with method: 'notifications/claude/channel', but the notification is never injected into the conversation.
Environment
- Claude Code version: 2.1.81
- macOS Darwin 25.3.0
- Plugin:
claude-plugins-official/telegramv0.0.1 - MCP SDK: 1.27.1
- grammY: 1.41.1
- Bun runtime
Debugging Details
- Outbound
replytool works perfectly — messages arrive on Telegram getWebhookInfoshows no webhook set (no conflict with polling)pending_update_count: 0confirms the bot process IS consuming updates- User is in
allowFrominaccess.json,dmPolicy: "pairing", no pending entries - Had an issue with duplicate bot processes (two
bun run startinstances competing for polling), but the problem persisted after killing the duplicate - Tried multiple fresh sessions with
--channelsflag — same result every time - Resumed sessions also don't work
Likely Cause
The mcp.notification({ method: 'notifications/claude/channel', params: {...} }) call in server.ts:792 fires successfully, but Claude Code's harness does not surface it as a <channel> tag in the conversation context.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗