Telegram plugin: inbound channel notifications not surfaced (v2.1.81)
Summary
The Telegram plugin (telegram@claude-plugins-official v0.0.1) installs and runs correctly — MCP tool calls (reply, react, edit_message, download_attachment) all work. However, inbound messages from Telegram never appear in the Claude Code conversation.
Root cause
The plugin's MCP server declares experimental: { 'claude/channel': {} } as a capability and sends inbound messages via:
mcp.notification({
method: 'notifications/claude/channel',
params: { content: text, meta: { chat_id, message_id, user, ts, ... } },
})
Claude Code v2.1.81 does not surface these notifications. The notification is sent (no error logged), but nothing appears in the conversation.
Reproduction
claude /plugin install telegram@claude-plugins-official- Configure bot token in
~/.claude/channels/telegram/.env - Pair a Telegram user via
/telegram:access - Send a message from Telegram to the bot
Expected: Message appears inline in the Claude Code conversation as a <channel> tag.
Actual: Nothing happens. No error output. The bot consumes the Telegram update (confirmed via getUpdates returning 409), the gate allows the message (confirmed by temporarily switching to pairing mode — bot replies with pairing codes correctly), but the MCP notification is silently dropped by Claude Code.
Diagnostics performed
| Check | Result |
|-------|--------|
| Bot polling | Active (getUpdates returns 409 Conflict) |
| Outbound reply tool | Works (sent test message successfully) |
| Bot token valid | Yes (getMe returns bot info) |
| Webhook set | No (clean polling setup) |
| access.json correct | Yes (user ID in allowFrom, policy: allowlist) |
| Pairing mode test | Bot replies with pairing code when user removed from allowlist — message handling works |
| MCP stdio pipes | Connected (socket FDs shared between parent/child bun processes) |
| Multiple bot instances | No (single process tree) |
| Plugin enabled in settings | Yes (enabledPlugins.telegram@claude-plugins-official: true) |
Environment
- Claude Code: 2.1.81 (latest)
- Platform: WSL2 (Linux 6.6.87.2-microsoft-standard-WSL2)
- Node: v22.22.0
- Runtime: bun (plugin server)
- Plugin:
telegram@claude-plugins-officialv0.0.1 - MCP SDK:
@modelcontextprotocol/sdk ^1.0.0 - grammy:
^1.21.0
🤖 Generated with Claude Code
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗