[BUG]

Resolved 💬 3 comments Opened Mar 25, 2026 by rebel-jp Closed Mar 28, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The Telegram channel plugin successfully receives inbound messages (gate passes, typing indicator appears,
mcp.notification() resolves without error), but the notifications/claude/channel JSON-RPC notification sent over stdio
is never surfaced in the Claude Code session. Outbound messages via the reply tool work fine — only inbound
notifications are broken.

What Should Happen?

When a Telegram user sends a DM to the bot, the message should appear in the active Claude Code session as a <channel
source="telegram" ...> message, allowing Claude to read and respond to it — the same way iMessage channel inbound
works.

Error Messages/Logs

No error messages — that's the problem. Added debug logging to the plugin's handleInbound() at the mcp.notification() 
  call site. The notification payload is well-formed and the promise resolves successfully (no rejection). The plugin's 
  built-in .catch() handler ("failed to deliver inbound to Claude") never fires. There are no errors in stderr either.  
  The notification silently succeeds from the plugin's perspective but Claude Code never acts on it.                    
                                                                                                                        
  # Debug log from plugin (added manually):
  telegram channel DEBUG: sending notification:                                                                         
  {"method":"notifications/claude/channel","params":{"content":"Test","meta":{"chat_id":"8462994565","message_id":"33","
  user":"8462994565","user_id":"8462994565","ts":"2026-03-25T02:34:47.000Z"}}}                                          
  telegram channel DEBUG: notification sent OK

Steps to Reproduce

  1. Configure Telegram channel: set bot token in ~/.claude/channels/telegram/.env, add user ID to allowlist in

access.json with dmPolicy: "allowlist"

  1. Start a Claude Code session (v2.1.81) — confirm plugin loads (/reload-plugins shows telegram MCP server)
  2. Confirm outbound works: use the reply tool to send a message to the allowlisted chat_id — message arrives in

Telegram

  1. Send a DM to the bot from the allowlisted Telegram account
  2. Observe: typing indicator appears in Telegram (gate passed), but no <channel source="telegram"> message surfaces in

the Claude Code session

  1. No error is logged by the plugin — mcp.notification() resolves successfully

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.81

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗