Channels (Telegram): Claude doesn't automatically call the reply tool for inbound channel messages — responds only in terminal
Status Open
Maintainer reply None cached
Workaround ✓ Mentioned in description ↑
Activity 1 comment · opened Sep 17, 2026
Environment:
- Claude Code CLI (latest, updated 2026-09-17)
- Plugin:
telegram@claude-plugins-official - Launched with:
claude --channels plugin:telegram@claude-plugins-official
Steps to reproduce:
- Set up the Telegram channel plugin per docs (code.claude.com/docs/en/channels): install plugin, configure token, pair account, restart with
--channels. - Confirm
plugin:telegram:telegramMCP server is connected (/mcp). - Send a DM to the paired bot from Telegram (e.g. "привет").
Expected behavior (per docs):
"Claude reads it, does the work, and calls fakechat's reply tool ... The terminal shows the tool call and a confirmation (like 'sent'), and the actual reply appears on the other platform."
Actual behavior:
- Inbound message correctly appears in the terminal as
← telegram · <username>: <text>. - Claude generates a plain-text response and prints it directly in the terminal (like a normal chat turn) — it does not call the
replytool. - No message is delivered back to Telegram.
- The
plugin:telegram:telegramMCP server does expose a workingreplytool — confirmed by manually asking Claude in the same session: "отправь через telegram-инструмент сообщение 'тест' в мой чат" → Claude calledplugin:telegram:telegram→ message arrived in Telegram successfully.
Conclusion: The reply tool itself works correctly. The issue is that Claude does not automatically invoke it in response to inbound <channel source="plugin:telegram:telegram"> events — it needs to be explicitly told to use the tool each time, which defeats the purpose of the channel bridge.
Workaround found: Explicitly instructing the session ("on every inbound telegram message, reply using the reply tool with the same chat_id") makes it work for the rest of that session, but this isn't persistent and isn't the documented default behavior.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗