Telegram channel: MCP notification delivered but not surfaced in conversation

Resolved 💬 3 comments Opened Mar 21, 2026 by chuycepeda Closed Mar 25, 2026

Description

Telegram channel plugin (telegram@claude-plugins-official v0.0.1) successfully receives inbound messages and sends MCP notifications, but Claude Code does not surface them as <channel> tags in the conversation.

Environment

  • Claude Code: 2.1.81 (latest)
  • Plugin: telegram@claude-plugins-official 0.0.1 (latest)
  • OS: macOS Darwin 25.3.0
  • Runtime: Bun
  • Launch command: claude --remote-control --channels plugin:telegram@claude-plugins-official

Steps to Reproduce

  1. Configure Telegram bot token in ~/.claude/channels/telegram/.env
  2. Run /telegram:access to approve a user
  3. Launch Claude with --channels plugin:telegram@claude-plugins-official
  4. Send a message to the bot from an approved Telegram user
  5. Observe that the message does NOT appear in the Claude conversation

Debug Evidence

Added appendFileSync debug logging to server.ts. The full pipeline works:

TEXT HANDLER: from=<redacted> text="Hello"
handleInbound: from=<redacted> chatType=private text="Hello"
gate result: action=deliver
sending MCP notification: text="Hello" chat_id=<redacted>
MCP notification sent successfully
  • ✅ Bot polls Telegram API successfully (confirmed via getUpdates 409 conflict = active polling)
  • ✅ Messages received by text handler
  • ✅ Gate check passes (action=deliver)
  • mcp.notification({ method: 'notifications/claude/channel', ... }) resolves without error
  • ✅ Outbound replies via reply tool work perfectly
  • ❌ Inbound messages never appear as <channel> tags in the conversation

Additional Context

  • Only one bot process running (no zombie conflicts)
  • Bot is a direct child of the Claude Code process (verified via pstree)
  • Network connections to Telegram API confirmed via lsof
  • No webhook configured (pure polling mode)
  • access.json has the sender in the allowlist

The issue appears to be on the Claude Code client side — the MCP notification is sent and resolves successfully, but the client does not inject it into the conversation context.

View original on GitHub ↗

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