Telegram channel inbound notifications not delivered with API login

Resolved 💬 3 comments Opened Mar 20, 2026 by Camelus33 Closed Mar 24, 2026

Description

Telegram channel plugin's inbound messages (notifications/claude/channel) are not delivered to the conversation when authenticated via API key. Outbound messaging (reply tool) works correctly.

Environment

  • Claude Code version: 2.1.81
  • Auth method: API key login (claude login --api-key)
  • OS: macOS (Darwin 25.3.0)
  • Telegram plugin: telegram@claude-plugins-official v0.0.1

Steps to Reproduce

  1. Login to Claude Code with API key
  2. Configure Telegram plugin (/telegram:configure with BotFather token)
  3. Set access policy to allowlist with a valid Telegram user ID
  4. Send a message from Telegram to the bot
  5. Observe that no <channel source="telegram" ...> tag appears in the conversation

Expected Behavior

Inbound Telegram messages should appear in the conversation as <channel> tags, as they do for Max plan users.

Actual Behavior

  • Outbound: reply tool works — messages are sent to Telegram successfully
  • Inbound: No <channel> notification is delivered to the conversation
  • The MCP server is connected and the bot is polling (confirmed via getUpdates returning empty array and getWebhookInfo showing no pending updates)
  • The gate() function should pass the message (user ID is in allowFrom)
  • mcp.notification({ method: 'notifications/claude/channel' }) is called but not surfaced in the conversation

Analysis

The Telegram MCP server declares experimental: { 'claude/channel': {} } in its capabilities. It appears that the Claude Code client does not process this experimental notification type when using API key authentication, while it reportedly works with Max plan authentication.

Additional Context

Other users on Max plan report this feature working correctly. This suggests the notifications/claude/channel handling may be gated behind the subscription plan rather than being available to all authentication methods.

View original on GitHub ↗

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