CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude Code
Claude Code/2026-03-22Intermediate

Claude Code Channels: How to Control Your Coding Agent from Telegram and Discord

Claude Code Channels let you send messages from Telegram or Discord directly into a running session. Learn how to set up, configure, and use this powerful new feature for remote development.

Claude Code196ChannelsTelegramDiscord2MCP45plugins2remote development

What Are Claude Code Channels? — Message Your AI Agent from Anywhere

On March 20, 2026, Anthropic launched Channels for Claude Code as a research preview. Channels let you push messages from Telegram or Discord directly into a running Claude Code session on your local machine. Your session processes each request with full filesystem, MCP, and Git access, then replies through the same messaging app.

Before Channels, working with Claude Code meant sitting at your terminal. Now you can fire off a Telegram message like "run the test suite and tell me what failed" while you're on the train, and Claude Code on your home machine picks it up, does the work, and sends back the results.

This isn't just a new UI — it's a fundamental shift from synchronous "ask-and-wait" to an asynchronous, autonomous partnership between developer and AI agent.

How Channels Work — MCP-Powered Plugin Architecture

Under the hood, Channels are built on Anthropic's open-source Model Context Protocol (MCP). Each channel runs as an MCP server plugin that bridges an external messaging service and your Claude Code session.

Here's the flow:

  1. You send a message to your bot on Telegram or Discord
  2. The channel plugin receives the message and delivers it to your Claude Code session as a <channel> event
  3. Claude Code interprets the message and executes the task using its full access to your filesystem, Git, and MCP tools
  4. The result is sent back through the channel's reply tool and appears in the same messaging app

One key thing to know: events only arrive while the session is open. For an always-on setup, run Claude Code in a background process or persistent terminal.

# Run Claude Code in the background with tmux
tmux new-session -d -s claude "claude --channels plugin:telegram@claude-plugins-official"
 
# Attach to check on the session
tmux attach -t claude

Setting Up the Telegram Channel

Step 1: Create a Telegram Bot

Open BotFather in Telegram and send /newbot. Give it a display name and a unique username ending in bot. BotFather will return an API token — save it for the next step.

Step 2: Install the Plugin

In your Claude Code session, run:

# Install the Telegram plugin
/plugin install telegram@claude-plugins-official
 
# If the marketplace isn't set up yet, add it first
/plugin marketplace add anthropics/claude-plugins-official
/plugin marketplace update claude-plugins-official
 
# Reload plugins to activate the configure command
/reload-plugins

Step 3: Configure Your Token

Pass the token from BotFather to the configure command:

/telegram:configure <your-bot-token>

The token is saved to ~/.claude/channels/telegram/.env. Alternatively, you can set the TELEGRAM_BOT_TOKEN environment variable before launching Claude Code.

Step 4: Restart with Channels Enabled

Exit Claude Code and restart with the --channels flag:

claude --channels plugin:telegram@claude-plugins-official

Step 5: Pair Your Account

Send any message to your bot in Telegram. It replies with a pairing code. Back in Claude Code, complete the pairing:

# Pair with the code you received
/telegram:access pair <code>
 
# Lock access to your account only
/telegram:access policy allowlist

That's it — messages you send to your Telegram bot now arrive in your Claude Code session.

Setting Up the Discord Channel

For Discord, you'll create a bot through the Discord Developer Portal.

Step 1: Create and Configure the Discord Bot

  1. Click "New Application" in the Developer Portal
  2. In the Bot section, create a username and click "Reset Token" to copy it
  3. Under "Privileged Gateway Intents," enable Message Content Intent
  4. Go to OAuth2 → URL Generator, select the bot scope, and enable these permissions:
    • View Channels / Send Messages / Send Messages in Threads
    • Read Message History / Attach Files / Add Reactions
  5. Open the generated URL to invite the bot to your server

Step 2: Configure and Launch

# Install the Discord plugin
/plugin install discord@claude-plugins-official
 
# Configure your bot token
/discord:configure <your-bot-token>
 
# Start Claude Code with the Discord channel
claude --channels plugin:discord@claude-plugins-official
 
# Pair your account (DM the bot to get a pairing code)
/discord:access pair <code>
/discord:access policy allowlist

Practical Use Cases

Channels really shine when you're away from your terminal. Here are some scenarios where they can transform your workflow.

Giving Instructions on the Go

Commuting and want to get a head start? Send a Telegram message like "add a dark mode toggle button to the navigation in src/components/Header.tsx" and Claude Code starts working on your local machine while you're on the bus.

Receiving CI/CD Events

By building a custom webhook receiver channel, you can have CI failure notifications delivered directly to your Claude Code session. Claude can then automatically analyze the error and attempt a fix. The Channels reference has a full walkthrough for building webhook receivers.

Async Team Collaboration

With a Discord channel bot, anyone on your team can mention the bot to ask questions about the codebase or request small fixes. This keeps the development flow going without blocking on anyone's availability.

Security Model — Allowlist-Based Access Control

Channels implement multiple layers of security:

  • Sender allowlist: Each plugin maintains an allowlist of approved sender IDs. Messages from unknown IDs are silently dropped
  • Pairing authentication: First-time connections require a pairing code verification
  • Per-session activation: Only servers explicitly named in the --channels flag are active
  • Organization controls: Team and Enterprise plans give admins a channelsEnabled setting to control availability
# Manage the allowlist
/telegram:access policy allowlist  # Switch to allowlist mode
/telegram:access pair <code>       # Add a new user

If Claude hits a permission prompt while you're away from the terminal, the session pauses until you approve locally. The --dangerously-skip-permissions flag bypasses prompts for unattended use, but only use it in trusted environments.

How Channels Compare to Other Connection Methods

Claude Code offers several ways to interact from outside the terminal. Understanding when to use each one helps you pick the right tool.

FeatureWhat It DoesBest For
Claude Code on the WebRuns tasks in a fresh cloud sandbox cloned from GitHubSelf-contained async work you check on later
Claude in SlackSpawns a web session from an @Claude mentionStarting tasks from team conversation context
Remote ControlDrive your local session from claude.ai or the mobile appSteering an in-progress session from your phone
ChannelsPush external events into your local sessionMessaging app instructions and webhook reception

The key difference: Remote Control is a "pull" model where you go check on your session, while Channels is a "push" model where events come to you.

Tips for Actually Using Channels from Your Phone

Once setup is done, the next question is how to phrase things so Channels feel good to use on a small screen away from your desk. As an indie developer juggling several apps at once, I reach for this feature most when I'm away from my machine and just want to leave a one-line instruction. Here are a few things that worked for me after living with it for a while.

Keep each message to a single task. Rather than typing out a long spec, a short instruction with the target file and the result you expect travels better on the move. Something like "add a dark mode toggle to Header.tsx, and just say a word when it works" was the grain size that felt comfortable to me.

For tasks with long output, ask for the conclusion first so you can keep reading on your phone. Receiving a full diff or a verbose log as-is leaves you scrolling until you're tired. A small addition like "summarize the changes in three lines, details later" makes the reply much easier to take in.

Whether you can send screenshots depends on the channel's permissions — Discord needs the Attach Files permission, while Telegram lets you attach images directly. Before I hit send, I take a breath to check the image hasn't captured a secret or a stray notification in the background.

When a message doesn't arrive, I calmly check just three things: is the session open (you can peek with tmux), did you launch with the --channels flag, and is your ID on the allowlist. In my own use, re-pairing alone fixed it more often than not.

One last note. When you hand off something heavy, keep an eye on the terminal for the first few minutes. It saves you from waiting on a reply that never comes because the session is quietly paused at a permission prompt.

Getting Started with Channels

Claude Code Channels open up a new paradigm for developer-AI collaboration. By turning everyday messaging apps into an interface for your local Claude Code session — complete with full filesystem and Git access — they make it possible to stay productive even when you're away from your desk.

Setup is straightforward: install Bun, create a bot, run a few commands, and you're ready to go. While Channels are still in research preview, getting familiar with them now means you'll be well-prepared when the feature reaches general availability.

We recommend starting with the fakechat demo to see how Channels work before setting up Telegram or Discord. Once you're comfortable, combine Channels with Hooks and Skills to build even more powerful automation workflows.

Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

Claude Code2026-03-20
Implementation Patterns for Custom Claude Code Skills — SKILL.md Design, Testing, and Distribution
A hands-on tutorial for building three production custom Claude Code skills from scratch. Covers SKILL.md structure, agent types, context injection, testing, and team distribution.
Claude Code2026-07-18
The MCP Server I Declared Vanished from the List — Designing Config for a Namespace You Share with the Vendor
When a vendor reserves an MCP server name, your .mcp.json declaration goes quiet instead of failing. Here is the preflight check and prefix convention I use to turn that silent gap into a loud stop before an unattended run.
Claude Code2026-07-16
The Permission Rules You Added for Safety Are Taxing Every Turn — Auditing the Ruleset Without Loosening It
Version 2.1.209 fixed the per-turn slowdown from large deny/ask rulesets, but the design debt in your rules is still yours. Here are the audit scripts, a shadowing detector, a turn-timing harness, and how to fold enumerated rules into prefix rules safely.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →