[BUG] [Plugin: Telegram] Inbound notifications never delivered to session — outbound works fine

Resolved 💬 2 comments Opened Mar 20, 2026 by LenoxHWI Closed Apr 17, 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 official Telegram plugin (telegram@claude-plugins-official) receives inbound messages via grammy long polling but mcp.notification({ method:
'notifications/claude/channel', ... })
never surfaces in the Claude session. Outbound works perfectly (both reply tool and direct curl).

What Should Happen?

Bug Description

The official Telegram plugin (telegram@claude-plugins-official) receives inbound messages via grammy long polling but mcp.notification({ method:
'notifications/claude/channel', ... })
never surfaces in the Claude session. Outbound works perfectly (both reply tool and direct curl).

## Additional observations

  • The MCP server process (bun server.ts) frequently crashes/disconnects during the session. Tools disappear with "MCP server disconnected" and the bun process

is gone from ps aux.

  • Running bun server.ts manually outside Claude (via timeout 30 bun server.ts) is stable — survives 30s+ with no crashes.
  • Outbound reply tool works perfectly when the server is alive.
  • Direct curl to sendMessage API works perfectly.
  • Token validated via getMe — bot responds correctly.
  • No webhook set (long polling mode confirmed via getWebhookInfo).
  • access.json gate logic is correct — sender ID is in allowFrom, gate() returns deliver.

## Environment

  • Claude Code: 2.1.80
  • OS: Unraid 7.2.4 (Slackware-based), Kernel 6.12.54-Unraid
  • Runtime: Bun 1.3.10
  • Plugin: telegram@claude-plugins-official v0.0.1
  • Node: Running as root natively (not in Docker)
  • Other MCP servers: claude-mem (disabled), Notion (remote), obsidian-vault (filesystem)

## Workaround

Using direct curl to Telegram Bot API for outbound. No workaround for inbound — user must paste messages manually in the terminal.

Error Messages/Logs

## Relevant logs                                                                                                                                                 
                                                                                                                                                                   
  No stderr captured from the MCP subprocess — it crashes silently when managed by Claude Code. When started manually (`bun server.ts`), it prints `telegram       
  channel: polling as @sohomelabbot` and runs indefinitely without errors.

Steps to Reproduce

  1. Install and enable Telegram plugin (telegram@claude-plugins-official)
  2. Configure bot token in ~/.claude/channels/telegram/.env
  3. Set access.json with dmPolicy: "allowlist" and sender's ID in allowFrom
  4. /reload-plugins — tools appear (reply, react, edit_message)
  5. Send a DM to the bot from Telegram
  6. Expected: Message appears in Claude session as <channel source="telegram" ...>
  7. Actual: Nothing arrives. The MCP server consumed the update (getUpdates returns empty), but the notification is never delivered. Additionally, the MCP

server process frequently crashes/disconnects silently.

Claude Model

Opus

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.1.80

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 ↗