TELEGRAM BUG WITH CLAUDE CODE

Resolved 💬 2 comments Opened May 14, 2026 by tylerwpugh Closed May 23, 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?

1 # Telegram Plugin: Outbound works, inbound notifications never arrive
2
3 ## Environment
4 - Claude Code version: 2.1.141 (latest)
5 - Plugin version: telegram@claude-plugins-official 0.0.6
6 - OS: macOS (Darwin 25.2.0, Apple Silicon)
7 - Bun version: (used to run server.ts)
8
9 ## Description
10
11 The Telegram plugin's outbound path (reply, react, edit_message tools) works perfectly. Inbound messages from Telegram are received by the MCP server (confirmed via Telegram API pending_update_count: 0), but mcp.notification({ method: 'notifications/claude/channel', ...
})
never surfaces as <channel> tags in the conversation.
12
13 This has persisted across 5+ separate Claude Code sessions and full restarts over multiple days.
14
15 ## What works
16 - Bot token is valid, getMe succeeds
17 - No webhook set (getUpdates polling mode)
18 - access.json correctly configured with dmPolicy: "allowlist" and sender ID in allowFrom
19 - Plugin enabled in settings.json
20 - MCP server process is a direct child of the Claude Code process (verified via ps process tree)
21 - Unix sockets between bun server and Claude Code are connected (verified via lsof)
22 - Only one .in_use/ session token (no stale poller conflicts)
23 - bot.pid written correctly, no 409 Conflict errors
24 - Outbound reply tool sends messages successfully (confirmed delivery in Telegram)
25
26 ## What doesn't work
27 - Sending a message to the bot in Telegram produces no <channel> tag in the Claude Code conversation
28 - The MCP server's handleInbound() function calls mcp.notification() (line 957 of server.ts), but Claude Code never receives/displays the notification
29 - This happens with both text messages and photos
30
31 ## Reproduction steps
32 1. Install and configure the Telegram plugin (token in ~/.claude/channels/telegram/.env, access.json with allowlisted sender)
33 2. Start Claude Code — plugin spawns correctly
34 3. Use the reply tool to send a message to the allowlisted user — works fine
35 4. User sends a message back to the bot in Telegram
36 5. Nothing appears in the Claude Code conversation — no <channel> tag, no notification
37
38 ## Debugging performed
39 - Verified bot token validity via getMe API call
40 - Confirmed no webhook is set (getWebhookInfo returns empty URL)
41 - Confirmed pending_update_count: 0 — the server IS consuming updates from Telegram
42 - Verified access.json has correct sender ID in allowFrom
43 - Verified process hierarchy: claude (PID X) -> bun run (PID Y) -> bun server.ts (PID Z)
44 - Verified stdio unix sockets are connected via lsof
45 - Confirmed only one session token in .in_use/ (no competing pollers)
46 - Cleaned stale PID files and .in_use/ tokens between restarts
47 - Killed and restarted the server process multiple times
48 - Fully restarted Claude Code multiple times across different sessions
49 - Read through the full server.ts code path: bot.on('message:text') -> handleInbound() -> gate() returns deliver -> mcp.notification() is called — code logic is correct
50
51 ## Suspected root cause
52 The MCP server is calling mcp.notification({ method: 'notifications/claude/channel', params: { content, meta } }) over the stdio transport, but Claude Code's notification handler is not processing or surfacing these notifications. The issue appears to be in Claude Code's
MCP notification handling, not in the plugin server code.

What Should Happen?

Inbound Telegram messages should appear as <channel> tags in the conversation, matching the outbound path which works correctly. When a user sends a message to the bot, Claude Code should surface it via the MCP notification handler so the assistant can read and respond to it.

Error Messages/Logs

Steps to Reproduce

.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.141 (latest).

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

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