Telegram plugin: channel notifications not delivered to conversation
Resolved 💬 3 comments Opened Apr 12, 2026 by woloski Closed Apr 16, 2026
Telegram plugin: channel notifications not delivered to conversation
Description
Telegram plugin (telegram@claude-plugins-official v0.0.5) receives messages, passes access gate, writes valid JSON-RPC notifications/claude/channel to stdout — but the message never appears in the Claude Code conversation. The bot shows "typing" briefly on the Telegram side and then nothing happens.
Root cause evidence
Added instrumentation to server.ts including a monkey-patch on process.stdout.write to capture exactly what the MCP server sends. Full debug log from a test session:
[2026-04-12T19:01:44.225Z] === server.ts starting ===
[2026-04-12T19:01:44.226Z] stdin writable=false stdout writable=true
[2026-04-12T19:01:44.417Z] bot.start onStart: polling as @rubencito3_bot
[2026-04-12T19:01:55.369Z] bot.on(message:text) from=8090174645 text="test"
[2026-04-12T19:01:55.373Z] handleInbound: about to send MCP notification — chat_id=8090174645 user=woloskim text="test" stdout.destroyed=false stdout.writable=true
[2026-04-12T19:01:55.374Z] stdout.write called: {"method":"notifications/claude/channel","params":{"content":"test","meta":{"chat_id":"8090174645","message_id":"39","user":"woloskim","user_id":"8090174645","ts":"2026-04-12T19:01:55.000Z"}},"jsonrpc":"2.0"}
[2026-04-12T19:01:55.375Z] handleInbound: MCP notification resolved OK
[2026-04-12T19:02:53.637Z] bot.on(message:text) from=8090174645 text="hola"
[2026-04-12T19:02:53.638Z] handleInbound: about to send MCP notification — chat_id=8090174645 user=woloskim text="hola" stdout.destroyed=false stdout.writable=true
[2026-04-12T19:02:53.639Z] stdout.write called: {"method":"notifications/claude/channel","params":{"content":"hola","meta":{"chat_id":"8090174645","message_id":"40","user":"woloskim","user_id":"8090174645","ts":"2026-04-12T19:02:53.000Z"}},"jsonrpc":"2.0"}
[2026-04-12T19:02:53.639Z] handleInbound: MCP notification resolved OK
Key findings:
stdout.destroyed=false,stdout.writable=true— stdio pipe is alivestdout.writeis called with valid JSON-RPCmcp.notification()promise resolves without error- The notification never appears in the Claude Code conversation
What works
- Bot connects and polls successfully (grammy long-polling)
- Access control gate works correctly (sender in
allowFrom) mcp.notification()does not throw or reject- MCP tools (reply, react, edit_message, download_attachment) are listed and available in the session
sendChatAction('typing')fires (user sees "typing" indicator in Telegram)
What doesn't work
notifications/claude/channelJSON-RPC messages written to stdout are not surfaced to the conversation by Claude Code
Steps to reproduce
claude plugins install telegram@claude-plugins-official- Configure bot token and pair a user via
/telegram:configureand/telegram:access - Start a Claude Code session (plugin loads, bot starts polling)
- Send a DM to the bot from the paired Telegram account
- User sees "typing" indicator, but message never appears in the conversation
Tested with the session idle (no user input at prompt) and while actively chatting — same result. Tested across multiple sessions and plugin reinstalls.
Environment
- Claude Code: 2.1.101
- Telegram plugin: 0.0.5 (
claude-plugins-official) - grammy: 1.41.1
- MCP SDK: 1.27.1
- Bun: 1.3.12
- Node: v25.8.1
- macOS: Darwin 24.3.0 (arm64, Mac mini M2)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗