Telegram channel plugin: inbound notifications/claude/channel ignored by Claude Code

Resolved 💬 4 comments Opened Mar 25, 2026 by jsj972 Closed Mar 25, 2026

Bug

Inbound Telegram messages are never delivered to the Claude Code conversation, even though the official Telegram channel plugin sends the MCP notification correctly.

Claude Code version: 2.1.83
OS: Linux (Ubuntu) aarch64
Plugin: claude-channel-telegram (official marketplace plugin)

Evidence

Ran the bot manually with stdout/stderr captured to a file. When a Telegram message is sent to the bot:

  1. Bot receives and processes the message (gate() returns deliver)
  2. mcp.notification() resolves successfully (no error in .catch())
  3. The JSON-RPC notification is well-formed on stdout:
{"method":"notifications/claude/channel","params":{"content":"Testtt","meta":{"chat_id":"1578900524","message_id":"13","user":"Lujinsun","user_id":"1578900524","ts":"2026-03-25T19:04:49.000Z"}},"jsonrpc":"2.0"}
  1. Claude Code never surfaces the message in the conversation.

What works

  • Outbound tools (reply, react, edit_message) work correctly
  • The bot polls correctly (confirmed via Telegram API 409 Conflict test)
  • access.json is correctly configured (user ID in allowFrom)
  • Restarting Claude Code does not fix the issue
  • Plugin process is alive and parented to the Claude Code process

Expected behavior

Messages sent to the Telegram bot should appear in the Claude Code conversation as <channel source="telegram" ...> tags, as described in the plugin's system instructions.

Steps to reproduce

  1. Install the official Telegram channel plugin from the marketplace
  2. Configure a bot token via /telegram:configure and pair a user
  3. Send a message to the bot from the paired Telegram user
  4. Observe that the message never appears in the Claude Code session

Diagnostic steps already attempted

  • Verified bot token is valid (getMe returns OK)
  • Verified no webhook is set (getWebhookInfo returns empty)
  • Verified bot is actively polling (409 Conflict when calling getUpdates while bot runs)
  • Verified access.json has correct allowFrom entry
  • Killed and restarted the plugin process
  • Restarted Claude Code entirely
  • Confirmed MCP SDK version 1.27.1
  • Ran bot standalone with stdout capture — confirmed the JSON-RPC notification is emitted correctly and the promise resolves without error

View original on GitHub ↗

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