This guide pairs one Telegram sender with a running Claude Code project session, then checks a reply against a file you own. Documentation was checked on 26 October 2026. BIG CHANGE did not run a bot or model for this article.
The big change
- What changed: Anthropic documents a Telegram channel plugin for Claude Code.
- Why it matters: Comparing the answer with an independently opened file gives the owner a concrete completion check.
- What to watch: The owner should see the intended sender in the access readback, a real inbound event and permitted file read in the terminal, then a matching answer in the same Telegram chat. A chat reply alone cannot establish what file the session read.
1. Check access and install the plugin
Anthropic's Channels manual calls Channels a research preview. Use claude.ai or Console authentication; Bedrock, Google Cloud Agent Platform and Foundry are excluded. Team, Enterprise and managed Console organizations need enablement. Stop on a policy denial. Review project instructions and tools. Bun is required.
In the project terminal:
claude --version
bun --version
claudeAt the Claude prompt:
/plugin install telegram@claude-plugins-officialChoose user scope. For a missing marketplace, use the first command; for a missing plugin, the second. Retry once:
/plugin marketplace add anthropics/claude-plugins-official
/plugin marketplace update claude-plugins-officialIf the install requests a reload, run:
/reload-plugins2. Create the bot and keep its token private
The official Telegram plugin README documents BotFather setup. Open the genuine BotFather chat and send:
/newbotChoose a display name and a unique username ending in bot. In your file manager or editor, create ~/.claude/channels/telegram if absent (~ means your home directory). Save a file named .env inside it, containing:
TELEGRAM_BOT_TOKEN=<ACTUAL_PRIVATE_TOKEN>Restrict the file's access to your account before entering the actual token. Keep it out of prompts, repositories and screenshots. A shell TELEGRAM_BOT_TOKEN overrides the file; inspect that source if the wrong bot appears. This recipe assumes the default directory: stop on a custom state directory and consult its configuration instructions. The README's alternative configure command puts the token in a Claude interaction; this guide uses the private file route.
Exit Claude, return to the same project and relaunch:
claude --channels plugin:telegram@claude-plugins-officialKeep the terminal open; check registration warnings. Read the reply on Telegram. Preview flags may be absent from help. Offered permission relay lets trusted senders authorize tools.
3. Pair only your sender and read back access
Message the bot privately from the intended account. The plugin's access reference says the first message yields a pairing code and is dropped. At the Claude prompt:
/telegram:access pair <code>
/telegram:access policy allowlist
/telegram:accessCheck the reported policy, senders, pending pairings and groups. Proceed only with allowlist, your sole numeric sender ID and no enabled groups. Hold on an unfamiliar ID. To remove one, use its read-back ID and inspect again:
/telegram:access remove <numeric-user-id>
/telegram:access group rm <group-id>
/telegram:accessTo discard a pending code:
/telegram:access deny <code>Stop if TELEGRAM_ACCESS_MODE=static is set: it pins startup access and disables pairing. Allowlist silently drops unlisted senders, so silence alone is no evidence of rejection. Keep the answer short; Telegram chunks long messages.
4. Check an actual file and the same-chat reply
Choose an existing, nonsensitive project file that you are allowed to send through Telegram and Anthropic. Open it yourself and write down its first heading and one literal field or fact. Record its revision or hash if you can. Check that the Claude terminal is still in the intended project and review the session's tools and instructions before sending a request.
Replace both brackets with facts from that file, then send this from the paired Telegram account:
Read [relative path to the approved existing file]. Report its first heading and [one exact field]. Stop if missing or a new permission is needed. Do not edit files, infer the answer from memory or contact other services.At the terminal, look for the inbound event and actual permitted file-read action. Handle any permission request there. Compare the answer in the same Telegram chat with the file you opened independently. If the event or read is missing, or the answer differs, hold the result; do not call it a successful check. The prompt expresses the requested scope, while the session's actual permissions determine access.
Keep a short private record so you can distinguish a verified result from an attempted send:
UTC/version/account route: [actual, no secrets]
Project/file revision: [actual]
Access readback: [policy, own sender only, no groups]
Inbound event and file read: [observed or unknown]
Same-chat answer compared with file: [match/mismatch/unknown]
Second-account check: [not run, or actual admission evidence]
Stop state: [actual]
Decision: [complete/hold with reason]If nothing arrives, inspect the running session, channel registration, token source and access readback before retrying. When a send result is uncertain, inspect the existing chat first to avoid mistaking a late reply for a new one. Do not claim an unauthorized-sender test from silence; record that optional check only if you can observe its admission evidence. Exit the Claude session when finished and verify that it stopped. Stopping does not erase provider records or local credentials. If a token is exposed, leave the channel stopped and follow the provider's current credential-recovery process.
Cost and scope
Anthropic's cost guide distinguishes subscription usage from API billing. Pro and Max include usage within plan limits; API use consumes billable tokens. Team and Enterprise terms depend on the account. At the Claude prompt, check:
/usageReview plan limits and any enabled extra usage credits. Session dollar figures are estimates; Console billing is the authoritative record for API charges. This documented workflow establishes no fixed cost, delivery time or offline-delivery guarantee.
For a Mac self-chat through Claude Code, see our iMessage channel guide. Our OpenClaw forum-topic guide covers agent and memory separation, while the Hermes VPS guide covers a deployed gateway. Those are different setups from pairing this Telegram plugin with one running Claude Code session.



