Telegram channel: bot receives/acks messages but never relays them into the connected Claude Code session
Telegram channel: inbound messages acknowledged by the bot but never reach the connected session
Claude Code version: 2.1.216
Plugin: telegram@claude-plugins-official v0.0.6
OS: macOS 26.5.2 (build 25F84)
Launch: claude --channels plugin:telegram@claude-plugins-official from a Terminal.app session
Steps to reproduce
- Configure the Telegram plugin per its README (
/telegram:configure <token>, pair via/telegram:access pair <code>). - Launch a session with
claude --channels plugin:telegram@claude-plugins-officialand leave it running/idle. - From the paired Telegram account, DM the bot.
Expected behavior
The bot's typing indicator fires, and the message arrives in the connected Claude Code session as a <channel source="telegram" ...> block, per the plugin's documented behavior, triggering a reply.
Actual behavior
The typing indicator fires (confirming the message reached the bot), but no <channel> notification ever surfaces in the connected session, and no reply is ever sent. This reproduced on every attempt.
Diagnostics already ruled out
- Not a "session must stay open" issue — reproduced with the launching session actively running and idle, watching for the notification in real time.
- Not a delivery failure to the bot — confirmed via direct Telegram Bot API calls:
getMereturns the correct bot identity.getUpdatesshows an empty queue immediately after sending a test message (i.e. the message was received and consumed by the plugin's poller, not stuck pending).- Not session-ambiguity — traced the terminal shell's process ancestry (
ps -o ppid=) up through to theclaudeprocess (confirmed pid match) and confirmed the Telegram MCP server (bun server.ts) is a direct child of that sameclaudeprocess, i.e. this is provably the session that should be receiving the notification. - Not a stale plugin version — installed version (0.0.6) matches the current marketplace cache, no update available.
Isolated failure point
The break is specifically between the plugin's inbound handler (which fires the typing indicator and sends a notifications/claude/channel MCP notification, per server.ts) and that notification actually surfacing as a live turn in the connected Claude Code session. Everything upstream of that (Telegram delivery, bot receipt, access/pairing) is confirmed working.
Additional confirming detail: bot commands that reply directly from server.ts without ever touching the Claude session — /status, /start, /help — work correctly every time (e.g. /status returns "Paired as <name>." from the hardcoded reply at line 712). Only plain messages, which require the session-relay path, fail to produce any reply. This isolates the break precisely to the relay, not to Telegram delivery, the bot process, or access control.
Impact
The Telegram channel is unusable for its documented purpose — reaching an existing Claude Code session from a phone — despite correct setup, valid pairing, and a live, correctly-connected session.