Channel notifications from telegram plugin not delivered to session (v2.1.81)

Resolved 💬 2 comments Opened Mar 21, 2026 by chiri-72 Closed Apr 19, 2026

Summary

MCP channel notifications (notifications/claude/channel) sent by the official telegram@claude-plugins-official plugin are never delivered to the Claude Code session. Outbound tool calls (e.g., reply) work perfectly — only the inbound notification path is broken.

Environment

  • Claude Code: v2.1.81 (latest as of 2026-03-22)
  • OS: macOS Darwin 25.3.0 (Apple Silicon)
  • Bun: installed at ~/.bun/bin/bun
  • Plugin: telegram@claude-plugins-official v0.0.1

Configuration

settings.json includes:

{
  "channelsEnabled": true,
  "enabledPlugins": {
    "telegram@claude-plugins-official": true
  }
}

Diagnosis

Systematically verified each step of the inbound message pipeline:

| Step | Status | Evidence |
|------|--------|----------|
| Telegram → Bot polling | ✅ OK | Bot receives updates, getUpdates returns empty (consumed by polling) |
| gate() access check | ✅ OK | Returns action: deliver, user ID in allowFrom |
| mcp.notification() call | ✅ OK | Promise resolves without error |
| JSON-RPC on stdout | ✅ OK | Valid notification written (see below) |
| Claude Code receives notification | ❌ FAIL | No <channel> tag ever appears in session |

Outbound (working)

Tool calls like reply work fine — Claude Code sends request via stdin, bot processes it, response returns via stdout. The stdio pipe is functional.

Inbound notification (broken)

The bot writes valid JSON-RPC notifications to stdout:

{"method":"notifications/claude/channel","params":{"content":"test message","meta":{"chat_id":"REDACTED","message_id":"101","user":"REDACTED","user_id":"REDACTED","ts":"2026-03-21T20:16:01.000Z"}},"jsonrpc":"2.0"}

These are never delivered to the Claude Code session. No error appears in bot stderr. The MCP server declares the capability correctly:

capabilities: { tools: {}, experimental: { 'claude/channel': {} } }

Process verification

  • Bot spawned correctly as child of Claude Code process (verified via ps -o pid,ppid)
  • stdio fds (0, 1, 2) connected via unix domain sockets to Claude Code parent (verified via lsof)
  • No 409 Conflict (single bot instance running)
  • No webhook set (verified via getWebhookInfo)

Steps to Reproduce

  1. Install telegram plugin: claude plugin add telegram@claude-plugins-official
  2. Configure bot token in ~/.claude/channels/telegram/.env
  3. Pair a Telegram user (get pairing code, approve via /telegram:access)
  4. Start Claude Code session (plugin auto-spawns)
  5. Send a message from the paired Telegram account → message never arrives

Expected Behavior

Messages from Telegram should appear as <channel source="telegram" ...> tags in the Claude Code session.

Actual Behavior

Nothing happens. No error, no notification, no channel tag. Outbound reply tool works fine.

View original on GitHub ↗

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