Telegram channel plugin: inbound messages not received by session
Bug description
The Telegram channel plugin (plugin:telegram@claude-plugins-official) successfully sends outbound messages (reply tool works) but inbound messages from Telegram never reach the Claude Code session.
Steps to reproduce
- Configure Telegram plugin: bot token in
.env, user ID inaccess.jsonallowlist - Start Claude Code with
--channels plugin:telegram@claude-plugins-official - Send
/statusto the bot in Telegram → bot replies "Paired as @username" ✅ - Use the
replytool from Claude Code → message arrives in Telegram ✅ - Send a regular text message from Telegram to the bot → nothing appears in the Claude Code conversation ❌
Expected behavior
Inbound Telegram messages should appear in the conversation as <channel source="telegram" ...> blocks.
Actual behavior
Messages are silently dropped. The bot receives them (proven by /status working), the gate passes (user is in allowlist), handleInbound is called and mcp.notification({ method: 'notifications/claude/channel', ... }) fires — but the notification never reaches the Claude Code session.
Verified (not the cause)
- Bot token is correct (outbound works)
access.jsonhas correct user ID,dmPolicy: "allowlist"—/statusconfirms "Paired"- Only one bun process running (no zombie/409 conflict)
server.tscode path is correct:bot.on('message:text')→handleInbound→gatereturnsdeliver→mcp.notificationcalled
Likely cause
The MCP notification (notifications/claude/channel) is emitted by the plugin's MCP server but not received/processed by the Claude Code session. This appears to be a transport-level issue between the plugin's MCP server and the Claude Code host.
Environment
- Claude Code: 2.1.81
- macOS: 26.3.1 (Apple Silicon)
- Bun: 1.3.11
- Plugin:
telegram@claude-plugins-officialv0.0.1 - grammy: ^1.21.0
Reproducibility
Consistent across multiple sessions over several days. Restarting Claude Code and starting new sessions does not fix it.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗