Telegram plugin: notifications/claude/channel not delivered to conversation (inbound messages silently dropped)
Summary
The official telegram@claude-plugins-official plugin's inbound message delivery does not work in Claude Code 2.1.81. Telegram messages are received by the MCP server process but never appear in the Claude Code conversation.
Environment
- Claude Code version: 2.1.81 (installed via Homebrew)
- Plugin:
telegram@claude-plugins-officialv0.0.1 - OS: macOS 24.6.0
What happens
- Bot token configured, bun server starts, Telegram polling works (confirmed via
getWebhookInfoshowingpending_update_count: 0after sending a DM — messages are consumed by the server). - User is in the
allowFromallowlist. - Server's
handleInbound()is reached and callsmcp.notification()withmethod: 'notifications/claude/channel'. - Nothing appears in the Claude Code conversation. No
<channel source="telegram" ...>message is injected.
What works
- Outbound direction works perfectly: calling the
replyMCP tool from Claude Code sends messages to Telegram successfully. - MCP tool listing works: all four tools (
reply,react,download_attachment,edit_message) are available. - The MCP connection is live (stdio transport established at boot via
mcp.connect()).
Root cause analysis
The server declares an experimental capability at init:
capabilities: {
tools: {},
experimental: { 'claude/channel': {} },
}
And sends notifications via:
mcp.notification({
method: 'notifications/claude/channel',
params: { content: text, meta: { chat_id, message_id, user, ts, ... } },
}).catch(err => {
process.stderr.write(`telegram channel: failed to deliver inbound to Claude: ${err}\n`)
})
The .catch() never fires — the send succeeds at the transport level. The drop happens on the Claude Code client side: Claude Code does not appear to register a handler for notifications/claude/channel, so the notification is silently discarded after receipt.
Expected behaviour
Inbound Telegram messages should be injected into the active Claude Code conversation as <channel source="telegram" chat_id="..." message_id="..." user="..." ts="..."> turns, as documented in the plugin's MCP server instructions.
Steps to reproduce
- Install the telegram plugin:
claude plugin install telegram - Configure token:
/telegram:configure <token> - Pair a Telegram account:
/telegram:access pair <code> - Send a DM to the bot from the paired account
- Observe: no message appears in Claude Code conversation
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗