anthropics / anthropics/claude-code

Channels (Telegram): Claude doesn't automatically call the reply tool for inbound channel messages — responds only in terminal

Open
#95,011 0 comments 0 reactions 0 assignees View on GitHub
area:mcp area:plugins bug has repro
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

**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:**
1. Set up the Telegram channel plugin per docs (code.claude.com/docs/en/channels): install plugin, configure token, pair account, restart with `--channels`.
2. Confirm `plugin:telegram:telegram` MCP server is connected (`/mcp`).
3. 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 · : `.
- Claude generates a plain-text response and prints it directly in the terminal (like a normal chat turn) — it does **not** call the `reply` tool.
- No message is delivered back to Telegram.
- The `plugin:telegram:telegram` MCP server does expose a working `reply` tool — confirmed by manually asking Claude in the same session: "отправь через telegram-инструмент сообщение 'тест' в мой чат" → Claude called `plugin: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 `` 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.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the channel setup docs and the `--channels` entry point, then trace how inbound `` events become turns and how the `reply` tool is selected. Reproduce with the Telegram plugin and verify that an inbound message automatically reaches `reply` and is delivered to Telegram without a per-session instruction.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.