Telegram channel inbound notifications not delivered with API login
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-officialv0.0.1
Steps to Reproduce
- Login to Claude Code with API key
- Configure Telegram plugin (
/telegram:configurewith BotFather token) - Set access policy to
allowlistwith a valid Telegram user ID - Send a message from Telegram to the bot
- 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:
replytool 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
getUpdatesreturning empty array andgetWebhookInfoshowing no pending updates) - The
gate()function should pass the message (user ID is inallowFrom) 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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗