Claude Code Channels: Setup, Limits, and How to Run Them Always-On (2026)

Channels turn a running Claude Code session into a bot you can text. The official setup, the session-must-stay-open catch, and three ways to run it 24/7.

•

Published on

•

Claude Code Channels: Setup, Limits, and How to Run Them Always-On (2026)
Do not index
Claude Code channels are MCP servers that push outside events into a running Claude Code session: a Telegram message, a Discord ping, an iMessage, or your own webhook. Claude reacts and replies in the same chat, so the coding agent you left running becomes a bot you can text. Channels shipped as a research preview in March 2026 (v2.1.80), and you turn them on per session with the --channels flag. The catch sits in one line of Anthropic's docs: events only arrive while the session is open. The feature costs nothing extra. The real question is where that session stays open 24/7.
This guide covers the official setup for all three supported platforms, the honest answer on WhatsApp and Slack, and the three ways to keep a channel alive around the clock, from a tmux window to a $1.99/mo hosted instance.

What are Claude Code channels?

A channel is an MCP server that pushes events into your running Claude Code session. That direction matters. Standard MCP servers wait to be called: Claude polls them when it decides it needs a tool. A channel is the reverse. The outside world knocks, and Claude wakes up, reads the message, does the work, and replies through the same platform. Two-way, like a chat bridge into your session.
Channels are a research preview. The --channels flag does not even appear in claude --help yet, and Anthropic warns the flags and protocol may change. The official plugins live in the claude-plugins-official repository, and there are exactly three channel plugins for real platforms: Telegram, Discord, and iMessage, plus a fakechat demo for testing (the repo also hosts ordinary, non-channel MCP plugins). Each plugin runs on Bun, so you need Bun installed alongside Claude Code.
The use case is simple: you kick off a long task, walk away, and Claude pings you on Telegram when it needs a decision. You answer from your phone. The session keeps moving instead of sitting on a prompt until you get back to your desk.

Channels vs Remote Control, Slack, and Claude Code on the web

Anthropic now ships four different ways to reach Claude Code from somewhere other than your terminal, and the names blur together. Here is the map:
Feature
What it actually does
Where the session runs
Channels
Pushes Telegram/Discord/iMessage/webhook events into your already-running session
Your machine
Remote Control
You drive your local session from claude.ai or the mobile app
Your machine
Claude Code on the web
Starts a fresh session in a cloud sandbox
Anthropic's cloud
Claude in Slack
@Claude in a Slack channel spawns a cloud web session (GitHub repos only)
Anthropic's cloud
Standard MCP
Claude calls tools when it decides to; nothing is pushed
n/a
Slack deserves the extra sentence, because people search for a Slack channel plugin that does not exist. Claude in Slack is a separate integration: mentioning @Claude in a channel (not a DM) spawns a Claude Code cloud session against a GitHub repo, and on Team and Enterprise plans Anthropic is replacing it with Claude Tag. It never touches the session running on your machine.
Channels are the only one of the four where an outside event starts the conversation with your local, stateful session. That is what makes them interesting, and it is also what creates their one big operational problem. More on that below.

Setting up Claude Code channels: Telegram, Discord, and iMessage

Telegram is the flow most people want, and the whole thing takes about five minutes:
  1. Create a bot with @BotFather on Telegram and copy the bot token.
  1. In Claude Code, install the plugin: /plugin install telegram@claude-plugins-official
  1. Configure it with your token: /telegram:configure <your-bot-token>
  1. Restart with channels enabled: claude --channels plugin:telegram@claude-plugins-official
  1. Message your bot on Telegram. It replies with a one-time pairing code; back in Claude Code, run /telegram:access pair <code>.
  1. Lock it down: /telegram:access policy allowlist so only approved senders get through.
Discord follows the same pattern with more console clicks: you create a bot in the Discord developer portal, enable the Message Content Intent, invite it with OAuth2, then install and configure the plugin the same way.
iMessage is the odd one out. It is macOS-only, there is no bot token, and the plugin works by reading your Messages database at ~/Library/Messages/chat.db, which means granting Full Disk Access. Replies go out through AppleScript automation of Messages. Texts from your own number skip the pairing gate entirely. If that level of access makes you pause, fair. An OpenClaw iMessage setup still needs Full Disk Access (it reads the same Messages database via the imsg CLI), but it layers pairing, per-chat policies, and group allowlists on top, at the cost of running a second tool.
One security rule to internalize before you allowlist anyone: on a channel with permission relay, allowlisted senders can approve Claude's tool calls. Anyone who can text your bot the word "yes" can green-light a shell command. Keep the allowlist to people you would hand your keyboard.

What about WhatsApp and Slack channels?

The two most-asked-for platforms are the two that are not there.
WhatsApp has no official plugin. The active community option is rich627/whatsapp-claude-plugin, which connects as a WhatsApp linked device. It is not on the research-preview allowlist, so Claude Code will only treat it as a channel with --dangerously-load-development-channels: without the flag it loads as a plain MCP server and inbound messages never wake the session. Linked-device automation also carries account-restriction risk on WhatsApp's side. It works, people run it, but it is a community bridge behind a warning flag, not a supported path.
Slack, as covered above, is a different feature wearing a similar name. There is no Slack channel plugin, and the Slack integration spawns cloud sessions rather than talking to your local one.
If inbound WhatsApp or Slack chat is the actual requirement, stop forcing channels to do it and use a gateway built for the job. OpenClaw ships around 25 official channel plugins including WhatsApp, Slack, Signal, and Teams. The Hermes agent supports around 29 channels including WhatsApp, Signal, and SMS. Both are free open source, and both have documented paths to run Claude as the brain, including driving the Claude Code CLI itself. The last section covers when that trade is worth it.

Requirements and research-preview caveats

The current constraints, straight from the docs and changelog:
  • You need claude.ai login or an Anthropic Console API key. Channels are not available through Bedrock, Google Cloud Agent Platform, or Microsoft Foundry.
  • On Team and Enterprise plans, an org Owner has to enable channelsEnabled before anyone can use channels, and can restrict plugins with allowedChannelPlugins. Pro and Max individuals skip the org checks.
  • Each official plugin needs Bun installed.
  • Version floor: --channels appears in the v2.1.80 changelog entry, and permission relay (approving tool calls from the chat side) lands in v2.1.81. Update before debugging.
  • It is a research preview. Flags, protocol, and plugin list can change under you.

The catch with Claude Code channels: the session has to stay open

Anthropic's docs say it plainly: events only arrive while the session is open, so for an always-on setup you run Claude in a background process or persistent terminal.
Read that twice, because every tutorial glosses over it. Your Telegram bot is not a service. It is a flag on a terminal session. Close the laptop lid and the bot goes silent, with no error and no reply until the session is back. Telegram happens to queue messages server-side for up to 24 hours and the plugin picks up that backlog when polling resumes, but that is a Telegram-side courtesy with a hard expiry, not a queue you can rely on. iMessage and Discord messages sent while the session is down are never delivered to Claude at all.
Unattended sessions have a second failure mode: permission prompts. When Claude wants to run a tool it asks first, and a session with nobody at the keyboard stalls right there. You have two workarounds. Permission relay (v2.1.81+) forwards the approval to the channel, so you approve from your phone. Or --dangerously-skip-permissions, which the docs bless only in environments you trust, and which means something very different on an internet-connected box that strangers can message than it does on a laptop in your bag.
So the real always-on ladder looks like this:
  • tmux on your own machine. Free, five minutes, and dies the moment your Mac sleeps. Fine for a workday, useless for a bot.
  • A VPS. $5 to $25 a month, plus the setup: headless auth, tmux or systemd, updates. Our best VPS for Claude Code guide walks the whole path, including the auth gotchas.
  • A hosted persistent instance. Someone else keeps the box alive; you keep your own Claude account. That is the option the rest of the SERP skips, so let's cover it properly.
If the point of your channel is Claude pinging you during long jobs, pair this with running Claude Code as a background agent: channels are the interface, background work is what fills the time between messages.

Running channels on an always-on box

Agent37 has a purpose-built template for exactly this. The agent37-claude-code template gives you a persistent cloud instance with Claude Code preinstalled: chat, code, files, and a shell, no browser or desktop bloat. It deploys with one API call, and the instance stays up until you delete it.
The part that matters for channels is the auth model. Channels require claude.ai or Console-key auth, and the template runs on your own Anthropic account: open the web terminal and run claude auth login, or set CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY on the instance. Your login persists on the instance volume across restarts. Agent37 never supplies or bills Claude model usage; Anthropic bills you directly, exactly as if the session ran on your laptop.
Setup is the same flow as above, because it is the same tool. Provision the instance, authenticate, install the Telegram plugin, and start the session with --channels inside a persistent terminal. The pairing code arrives on your phone the same way. The difference is that this session does not sleep.
Pricing: from $1.99/mo for a shared instance, or $4.94/mo dedicated (2 vCPU, 4 GB RAM, 6 GB disk). New workspaces get a $1 starter credit with no card required, which covers about a week of testing. See the Claude Code hosting page for the full walkthrough, or the Cloud API overview if you are provisioning instances programmatically.
To be precise about what you are buying: the channel plugins are Anthropic's, Claude Code is Anthropic's, and your subscription is with Anthropic. Agent37 hosts the always-on computer they run on. That is the whole pitch.

When you've outgrown channels: OpenClaw and Hermes

Channels bridge chat apps into one dev session on three platforms. If what you actually wanted was a persistent personal assistant that lives in your messaging apps, you will outgrow that shape fast: you want WhatsApp, per-chat memory, scheduled jobs, and a bot that is a service rather than a session.
That is the job of an agent gateway. OpenClaw runs one always-on gateway process with roughly 25 official channel plugins (WhatsApp, Slack, Signal, Teams, Matrix, and more; Telegram is bundled), session isolation per group chat (configurable for DMs), allowlists, and cron. Hermes covers around 29 channels with the same always-on gateway pattern, and even ships a bundled skill that delegates coding tasks to the Claude Code CLI. Both are free open source: you pay for the model and for somewhere always-on to run the gateway. Most channels need zero inbound ports, since Telegram long-polls and WhatsApp holds an outbound socket, so a small box does fine.
Agent37 runs managed OpenClaw and Hermes instances from $3.99/mo, where your agent talks through your own accounts on WhatsApp, Telegram, Discord, and Slack. If this section sounds more like what you were searching for, start at agent37.com.

FAQ

Why isn't my Telegram bot responding?

Check three things in order. First: is the session actually running with --channels? The session dying is cause number one. Second: your auth type. Channels need claude.ai login or a Console API key, and do not work through Bedrock, Google Cloud Agent Platform, or Microsoft Foundry. Third: on Team or Enterprise plans, an Owner must have enabled channelsEnabled for the org.

Do Claude Code channels work with an API key?

Yes, with an Anthropic Console API key. Cloud-platform auth (Bedrock, Google Cloud Agent Platform, Microsoft Foundry) is not supported during the research preview.

Does closing my laptop kill the channel?

Mostly. Events only arrive while the session is open, so nothing gets answered while the machine sleeps. Telegram messages from a short gap are delivered when the session resumes (Telegram queues them for up to 24 hours), but iMessage and Discord messages in the gap are lost. That is the core reason always-on hosting is the second half of this guide.

What Claude Code version do I need?

The --channels flag appears in the v2.1.80 changelog entry, and permission relay arrives in v2.1.81. Run claude update before debugging anything.

Are Claude Code channels free?

The feature ships with Claude Code at no extra charge. Your costs are your Claude plan or API usage, plus whatever keeps the session running around the clock, which ranges from $0 (your own hardware and patience) to a few dollars a month for an always-on instance.

Can I use my Claude subscription on a hosted instance?

Yes. On Agent37's agent37-claude-code template you authenticate with your own claude.ai account via claude auth login in the instance's web terminal, and the login persists across restarts. Model usage bills to your Anthropic account, and the instance itself starts at $1.99/mo shared or $4.94/mo dedicated.
Vishnu

Written by

Vishnu

Founder at Agent37, which runs managed hosting for OpenClaw and Hermes agents for 1,000+ users. Writes about what actually breaks when you leave an AI agent running.