Telegram channel plugin: inbound messages never delivered to session

Resolved 💬 3 comments Opened Mar 22, 2026 by Johnny3116 Closed Mar 26, 2026

Bug Description

The Telegram channel plugin (claude-channel-telegram v0.0.1) successfully sends outbound messages but inbound messages from Telegram never reach the Claude Code session.

Environment

  • Claude Code: v2.1.81
  • OS: Windows 11 (10.0.26200)
  • Plugin: claude-channel-telegram v0.0.1 (installed via official marketplace claude-plugins-official)
  • Grammy version: ^1.21.0
  • Shell: Git Bash

Steps to Reproduce

  1. Install telegram plugin, configure bot token, pair via /telegram:access
  2. Pairing completes successfully — user ID appears in access.json allowlist
  3. Send an outbound message via mcp__plugin_telegram_telegram__replyworks, user receives it
  4. User replies on Telegram → bot shows "typing..." indicator (proving the channel server receives the message)
  5. Message never arrives in the Claude Code session — no <channel> tag, no notification, nothing

What's Working

  • Outbound messages (session → Telegram): ✅
  • Pairing and access control: ✅
  • Bot receives webhook/poll (typing indicator appears): ✅

What's Broken

  • Inbound delivery (Telegram → session): ❌
  • The channel server receives the message but fails to inject it into the active Claude Code REPL session
  • No error messages or logs visible

Diagnosis

  • Tested across multiple fresh sessions — same behavior
  • access.json is correct: user ID in allowlist, dmPolicy set to "pairing"
  • No logs found in ~/.claude/channels/telegram/ (only access.json and approved/ exist)
  • The break appears to be in the "inject message into Claude session" step, not in Telegram API communication

Expected Behavior

When a paired/allowed user sends a message on Telegram, it should appear in the active Claude Code session as a <channel source="telegram"> block.

Additional Context

This is on Windows 11. The plugin was installed on 2026-03-21. The issue has been consistent since first install — inbound has never worked.

View original on GitHub ↗

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