Telegram plugin: inbound messages not delivered to session (outbound works)
Summary
The Telegram channel plugin (telegram@claude-plugins-official v0.0.4) successfully polls and consumes inbound messages from Telegram, but notifications/claude/channel never surfaces as <channel> blocks in the conversation. Outbound (reply tool) works fine.
Environment
- macOS (Darwin 25.3.0)
- Claude Code with Opus 4.6
- Plugin:
telegram@claude-plugins-officialv0.0.4 - Server runtime: Bun
Steps to Reproduce
- Install telegram plugin, configure bot token via
/telegram:configure <token> - DM the bot — pairing code is generated and written to
access.json(server is working) - Approve pairing via
/telegram:access pair <code> - Lock policy to
allowlist - Send a message to the bot from Telegram
Expected
Message appears in the Claude Code session as a <channel source="telegram" ...> block.
Actual
Nothing appears. The message is consumed (getUpdates returns empty), but no notification surfaces in the session.
Observations
- Outbound works:
mcp__plugin_telegram_telegram__replysuccessfully sends messages to the chat - Pairing worked: The server wrote pending entries to
access.jsonand responded with pairing codes - Server process confirmed running:
bun run --cwd .../telegram/0.0.4 --silent start(visible inps) getUpdatesreturns empty: The polling loop is consuming updates — they're not queued- No webhook set:
getWebhookInfoshows empty URL,pending_update_count: 0 mcp.notification()on server.ts:925 fires but the MCP notification never reaches the client- Bot token was previously used on another machine (now stopped) — unclear if relevant, but 409 conflict retry loop in server.ts suggests this is a known scenario
- Multiple restarts and
/reload-pluginsdid not resolve
Notes
The server code (server.ts:925) calls mcp.notification({ method: 'notifications/claude/channel', ... }) which should deliver the message. The gap is between this MCP notification and the Claude Code client surfacing it. Possibly a client-side filtering or registration issue.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗