Claude Code Channels: Give Your AI Coding Assistant a Phone Number

Ever leave Claude Code running on a task before heading out, only to come home and find it stuck on a permission prompt — waiting three hours for you to click “Allow”?
That’s the problem with the traditional model. Claude Code needs someone sitting in front of the terminal. The moment you leave, it’s frozen — waiting for you to approve permission prompts, completely blind to CI results or external events.
Claude Code Channels changes that. It turns Claude Code into a “always-on” service. You can send it messages through Telegram, Discord, or any channel you’ve connected, and it keeps working in the background without you.
From “Human Goes to AI” to “AI Waits for You”
Let me explain what Channels actually is.
A Channel is an MCP server. Its job is to push external messages into a running Claude Code session. Think of it as a bridge between Claude Code and the outside world.
And it’s two-way. You send a message from Telegram — “check the CI error from the last run” — and Claude reads it, analyzes the problem, then sends the result back through the same channel. You see the answer on your phone, no terminal required.
This inverts the traditional “human in the loop” setup. Before, you sat at your desk and waited for AI to ask what to do. Now, you don’t have to be there at all. As long as Claude Code is running, it can respond to outside events.
Quick Start: The Fakechat Local Demo
Before connecting Telegram or Discord for real, the team shipped a local demo tool called fakechat. No accounts, no tokens, just open your browser and try it.
Prerequisites: Claude Code installed and authenticated with your claude.ai account, plus Bun on your machine.
Run this inside Claude Code:
/plugin install fakechat@claude-plugins-official
Then restart with the --channels flag:
claude --channels plugin:fakechat@claude-plugins-official
The fakechat server starts automatically. Open your browser to http://localhost:8787, type something like “what files are in my working directory,” and watch the message arrive in your Claude Code session as a <channel source="fakechat"> event. Claude processes it, calls fakechat’s reply tool, and the answer shows up in your browser.
Once you’ve run through that loop, the value proposition clicks — messages come in from outside, Claude handles them, results go back out.
Telegram Setup: Connecting Claude Code to Your Chat App
Fakechat is just a demo. The real power comes from tying Claude Code into the tools you already use every day. Here’s how to set up Telegram — Discord is nearly identical.
Create a Bot
Open Telegram, find BotFather, and send /newbot. Follow the prompts to name your bot and pick a username (it must end in bot). BotFather will give you a token — copy it.
Install and Configure the Plugin
Back in Claude Code:
/plugin install telegram@claude-plugins-official
/telegram:configure <your-token>
The token gets saved to .claude/channels/telegram/.env.
Restart with Channels Enabled
Exit your current Claude Code session and relaunch with:
claude --channels plugin:telegram@claude-plugins-official
The --channels flag is what activates the Telegram plugin and starts polling for messages.
Pair Your Account
Open Telegram, find your new bot, and send it any message. The bot will reply with a pairing code. Back in Claude Code, run:
/telegram:access pair <pairing-code>
Finally, lock it down to only your account:
/telegram:access policy allowlist
Done. Any message you send to the bot now gets forwarded to Claude Code, and the reply comes straight back to your Telegram conversation.
Discord follows the same steps — create an app, enable Message Content Intent, generate an invite URL to add the bot to your server, install the plugin, configure the token, restart with --channels, pair your account, and lock the allowlist.
Security: Who Can Send Messages?
The obvious concern: open a message gateway to an external platform, and won’t people abuse it?
The design handles this. Every Channel plugin maintains a sender allowlist. By default, messages from anyone not on that list are silently dropped — Claude never even sees them.
The allowlist bootstraps through the pairing flow. You message the bot on Telegram, it sends a pairing code, you verify it in Claude Code, and only then does your account ID get added.
On top of that, you control which channels are active per session with --channels. Even if an MCP server is configured in .mcp.json, it won’t receive channel messages unless it’s also listed in --channels. Both conditions must be true.
For Team and Enterprise users, there’s an additional organizational layer: your admin has to explicitly enable channelsEnabled in the management console (claude.ai → Admin settings → Claude Code → Channels). Without that, team members can pass --channels all day and nothing gets through.
Use Cases: What Can You Actually Do With This?
CI/CD pipeline alerts. Set up a channel to receive webhooks from GitHub Actions or Jenkins. When a pipeline fails, Claude Code automatically gets the notification, analyzes the logs, pinpoints the issue, and posts a summary to your Telegram group. No one staring at a terminal required.
External monitoring alerts. When Sentry fires an error alert, or a health check endpoint goes down, the alert gets pushed through a Channel to Claude Code. It automatically queries relevant logs, investigates, and sends you a diagnostic report.
Remote queries on the go. You’re at dinner and suddenly wonder about a config issue in your project. You just text Claude from your phone. It gives you the answer — no laptop, no VPN needed.
Multi-role workflows. A product manager posts a requirement change on Slack, and Claude reads it, updates the docs, adjusts the code, and opens a PR. The information chain is fully connected.
What to Watch Out for in Research Preview
Channels is currently in research preview. A few things to know:
First, you need Claude Code v2.1.80 or later, and you must be authenticated with a claude.ai account. Console and API key authentication are not supported.
Second, the --channels flag syntax and protocol contract may change in future releases. If you’re using this in production, keep an eye on the official changelog.
Third, during preview, only plugins from Anthropic’s official allowlist are accepted. You can’t load third-party Channels yet. If you want to test one you’re building yourself, you’ll need --dangerously-load-development-channels.
Wrapping Up
Claude Code Channels fundamentally shifts the AI programming assistant from “passive response” to “active standby.” The core tension it solves: developers can’t sit in front of a terminal 24 hours a day, but business events don’t wait.
The setup is still a bit involved, and it’s evolving fast. But once it’s running, the possibilities open up nicely — when AI can receive instructions and send results through the chat apps you already use every day, “AI works for you anytime” stops being a tagline and starts being your daily reality.
If your team is already using Claude Code for development, start with the fakechat demo. Feel out the full loop — external message in, Claude processes it, result goes back out. The learning curve is shallow. The hard part is figuring out which problems you actually want to solve with it.
FAQ
What’s the difference between Claude Code Channels and Remote Control?
Remote Control lets you drive a local Claude Code terminal from your phone. Channels instead pushes messages from external platforms into Claude so it can react. They solve different problems and work well together.
Can enterprise teams use Claude Code Channels?
Yes, but an admin has to explicitly enable channelsEnabled in the claude.ai admin console first. It’s off by default for Team and Enterprise plans.
Does Channels support WeChat or Slack right now?
Not in the current research preview — only Telegram, Discord, and the fakechat local demo are available. That said, Claude Code publishes the Channels protocol documentation, so you can build your own plugin for any platform you need.