How to Connect Claude Code to Telegram
Connect Claude Code to Telegram with the native Channels plugin (full setup), see where it falls short, and a sturdier always-on alternative with Chatcode.
You want Claude Code reachable from your phone — fire off a task on the train, check a long build over coffee, answer its question without opening a laptop. Telegram is the obvious remote.
The good news: as of March 2026, Claude Code has an official way to do this — a feature called Channels — plus a separate Remote Control mode. This guide covers how to set up the native Telegram connection, the honest limits people are hitting, and a sturdier alternative when those limits bite.
Option 1: Claude Code Channels (the native Telegram bridge)
Channels are official plugins that push messages into a running Claude Code session. Telegram, Discord, and iMessage ship in the research preview. It’s a two-way chat bridge: you message your bot, Claude reads it, does the work against your real files, and replies in the same chat.
A few prerequisites before you start:
- Claude Code v2.1.80+ (Channels are a research preview).
- Authentication through claude.ai or a Console API key — not Bedrock, Vertex, or Foundry. On Team/Enterprise plans an admin must enable channels first.
- The Bun runtime — the channel plugins are Bun scripts. Check with
bun --version.
Set up the Telegram channel
- Create a bot. Open @BotFather, send
/newbot, give it a name and a username ending inbot, and copy the token. - Install the plugin inside Claude Code:
If it isn’t found, add the marketplace first with/plugin install telegram@claude-plugins-official/plugin marketplace add anthropics/claude-plugins-official, then retry. Run/reload-pluginsafterward. - Configure your token:
This saves it to/telegram:configure <token>~/.claude/channels/telegram/.env. - Restart with the channel flag. Exit Claude Code and relaunch so the plugin starts polling:
claude --channels plugin:telegram@claude-plugins-official - Pair your account. Send any message to your bot; it replies with a pairing code. Back in the terminal:
The allowlist locks the bot to your account so no one else can push messages./telegram:access pair <code> /telegram:access policy allowlist
Now a message like “what’s in my working directory?” sent to the bot lands in your session, and Claude replies in the chat.
What it actually feels like
Two quirks surprise people immediately. First, when Claude replies through the channel, the terminal shows the inbound message and a “sent” confirmation, but not the reply text — the answer only appears in Telegram. Second, the channel runs inside a session that has to stay open: close the terminal and the bridge goes offline.
Option 2: Remote Control (drive from the Claude app)
Remote Control is the other native route. Instead of forwarding chat messages, it lets you drive your whole local session from claude.ai/code or the Claude mobile app (iOS/Android). Your files, MCP servers, and config stay local; the phone is just a window in.
claude remote-control # prints a session URL; press space for a QR code
Scan the QR with the Claude app and you’re steering the session from your phone, with push notifications when long tasks finish. It’s more capable than Channels — but note the trade-off the name hides: it runs through Anthropic’s own app, not Telegram, and it’s Claude-only. It needs a Pro, Max, Team, or Enterprise plan and claude.ai login (API keys aren’t supported).
Where the native options fall short
Both features are genuinely useful and genuinely research previews. The friction people report (MacStories, the official docs, and early write-ups) clusters around a few things.
Channels:
- The session must stay open, and there’s no message queue. Anything you send while the session is closed simply vanishes.
tmuxkeeps the process alive but doesn’t fix the fundamental “your machine must be awake and connected” problem. - You can’t approve permission prompts from Telegram. Hit one while you’re away and the session pauses until you return to the terminal. Going unattended means
--dangerously-skip-permissions— fine on a throwaway box, risky anywhere with credentials or production access. - It’s a chat bridge, not a cockpit. No proactive messages (Claude only replies when you write first), no voice notes, and the terminal doesn’t show the replies.
- Setup has sharp edges. Bun has to be installed, the step order matters, and it’s a preview — the
--channelssyntax may change. - Claude only. No Codex, no Gemini.
Remote Control:
- It needs Anthropic’s mobile app, not the Telegram you already live in.
- Anthropic agents only — again, no Codex or Gemini.
- One remote session per process, and the local
claudeprocess must keep running; a network outage of ~10 minutes times the session out.
None of this makes the native features bad — they’re a big step up from hand-rolling a bot. But “Claude Code in Telegram, always on, with approvals I can actually handle and more than one agent” is still out of reach natively.
A sturdier Telegram setup: Chatcode
Chatcode is built for exactly that gap. It runs your coding agent on a server you own — connect DigitalOcean and it spins up a droplet, or bring your own VPS — and makes the session reachable from a full browser terminal plus Telegram. The differences that matter here:
- Always-on by design. The agent runs on your server, and sessions stay alive between visits — no terminal you have to babysit, no messages lost because your laptop slept.
- Browser + Telegram, one synced session. The browser is the full terminal; Telegram (via a Mini App and linked chats) gives you continuity, notifications when long jobs finish, and a way to resume from your pocket.
- More than one agent. Claude Code, Codex, Gemini, and OpenCode — not a Claude-only bridge.
- A per-session sandbox toggle. Decide the safety posture for each session instead of choosing between blocking on terminal prompts and skipping permissions wholesale.
- Your own subscription. Use the Claude or ChatGPT plan you already pay for; the code stays on your machine.
If the native channel is enough for you, use it — it’s official and free. If you keep hitting the “session closed, message lost” wall or want Codex in the same place, here’s the walkthrough: How to use Claude Code in Telegram with Chatcode.
Which should you use?
- Quick, occasional pings to a Claude session you’re already running: native Channels.
- Steering a live Claude session from your phone, and you’re happy in Anthropic’s app: Remote Control.
- An always-on setup, Telegram-first, with Codex/Gemini too and no terminal to babysit: Chatcode.
Frequently asked questions
Does Claude Code have a native Telegram integration?
Yes. As of v2.1.80 (research preview, launched March 2026), Claude Code has Channels — official plugins for Telegram, Discord, and iMessage that push messages into a running Claude Code session. You install the Telegram plugin, pair your bot, and chat with the agent. It requires claude.ai or Console API authentication and the Bun runtime.
Can I approve Claude Code permission prompts from Telegram?
Not by default. With Channels, if Claude hits a permission prompt while you’re away, the session pauses until you approve it in the terminal. A channel can forward prompts only if it declares the permission-relay capability; otherwise the documented options are returning to the terminal or running with --dangerously-skip-permissions, which is risky.
What's the difference between Claude Code Channels and Remote Control?
Channels push chat messages and webhooks from Telegram/Discord/iMessage into a running local session. Remote Control lets you drive that local session from the Claude mobile app or claude.ai/code — more capable, but it uses Anthropic’s own app rather than Telegram, and doesn’t support Codex or Gemini.
Do I have to keep my computer on for the Telegram channel to work?
Yes. Channels only deliver while the Claude Code session is open, and there’s no message queue — anything you send while it’s closed is lost. You keep it alive in a persistent terminal (tmux) or run it on an always-on box. Tools like Chatcode sidestep this by running the agent on a server you own.