Build This Now
Build This Now
What Is Claude Code?Claude Code InstallationClaude Code Native InstallerYour First Claude Code Project
Claude Code Best PracticesClaude Code on a VPSGit IntegrationClaude Code ReviewClaude Code WorktreesClaude Code Remote ControlClaude Code ChannelsClaude Code Scheduled TasksClaude Code PermissionsClaude Code Auto ModeFeedback LoopsTodo WorkflowsClaude Code TasksProject TemplatesClaude Code Pricing and Token Usage
Get Build This Now
speedy_devvkoen_salo
Blog/Handbook/Workflow/Claude Code Channels

Claude Code Channels

Plug Claude Code into messaging apps. Setup walkthroughs for Telegram, Discord, and iMessage plus the workflows that make them worth it.

Problem: You are on the train. Your laptop is at home grinding through a 40-minute build. It hits you that the test suite needed a flag you never set. Pick your poison: wait until you are back at the desk, or SSH in from the phone and fumble a terminal through a 6-inch screen.

Not a developer at all? Same trap, different shape. You are running a business with Claude Code wired up as your generalist helper: calendar, marketing drafts, task triage, spreadsheet updates, quick reports. Every request still starts with sitting down at the terminal. There is no way to message your assistant from the phone between meetings the way you would text a real EA.

Quick Win: Wire your Claude Code session to Telegram (or iMessage if you are on macOS) and message it from the phone the way you would text a coworker:

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

Fire off "add the --coverage flag to the test script in package.json" from Telegram. The message lands in Claude, the edit happens, and the reply comes back in the same chat. Your session keeps humming locally with full access to files, MCP servers, and project config.

What Channels Actually Is

Channels is a plugin-based Claude Code feature that pipes messages from Telegram, Discord, or iMessage straight into a live Claude Code session running on your own machine. The session handles each request against your local filesystem, MCP tools, and git, then replies through the same messaging app. Anthropic announced it on March 20, 2026 as a research preview. Telegram and Discord shipped first. iMessage support dropped a week later. The plugin shape means more platforms can join without new plumbing.

Under the hood the idea is simple. An MCP server bridges your Claude Code session to the messaging platform. A message to your bot on Telegram or Discord gets forwarded to Claude. Claude runs the request against your local environment (files, tools, git, everything), then replies back through the same channel.

Nothing here runs in the cloud. The session lives on your machine. The messaging app is the window into it, much like Remote Control uses claude.ai and the mobile app as a window into your local session. Same principle, different surface.

The original announcement on X pulled real traction, and the community read was clear: this pushes dev workflows toward async and mobile-first. The loudest request at launch was iMessage, and Anthropic shipped it inside a week.

Channels vs Remote Control vs Web Sessions

Three ways to reach a session from somewhere that is not your terminal now exist. Each one solves a different problem.

AspectChannelsRemote ControlWeb Sessions
InterfaceTelegram, Discord, iMessage (messaging apps)claude.ai/code, iOS app, Android appclaude.ai/code browser
Session locationYour machine (local)Your machine (local)Anthropic cloud
SetupInstall plugin, create bot, pairclaude remote-control (one command)Open claude.ai/code
Best forAsync messages, mobile-first, team channelsContinuing terminal sessions from phoneQuick tasks without local setup
Local toolsFull access (filesystem, MCP, git)Full access (filesystem, MCP, git)Cloud sandbox only
HackabilityHigh (plugin architecture, build your own)Low (fixed interface)None
Notification styleNative app notifications (Telegram/Discord/iMessage)Must open claude.ai or appMust open claude.ai
Team collaborationDiscord guild channels for shared accessSingle-user onlySingle-user only

Reach for Channels when: native mobile notifications matter, the work is async (fire off a request, check back later), or team-based access through Discord guild channels is what you need. Also reach for Channels when you want a hackable, extensible system you can bend to fit your workflow.

Reach for Remote Control when: you want the full claude.ai interface, rich formatting, file previews, and a chat UI that already feels familiar. Setup is one command instead of bot creation, and it plays nice with the Claude mobile app from minute one.

Thariq from the Claude Code team put it plainly in the announcement thread: "We want to give you a lot of different options in how you talk to Claude remotely. Channels is more focused on devs who want something hackable."

The Architecture Under Channels

The flow follows the MCP pattern that Claude Code already uses for tool extensions:

  1. Install a channel plugin (Telegram, Discord, or iMessage). Each runs as an MCP server.
  2. Launch Claude Code with the --channels flag. That activates the plugin.
  3. The MCP server connects to the messaging platform (polling for Telegram, WebSocket for Discord).
  4. A message arrives, the server wraps it as a <channel> event, and pushes it into your Claude Code session.
  5. Claude runs the request against your full local environment.
  6. Claude replies via tools the MCP server exposes (reply, react, edit_message).

Security has two layers. Every channel plugin keeps a sender allowlist. Only user IDs you have paired and approved can push a message in. Everything else drops silently. And --channels decides which servers are actually on for a given session. A config entry in .mcp.json is not enough to let a server push messages. It also has to be named in --channels.

Team and Enterprise plans add another gate. Org admins control channel availability through a channelsEnabled managed setting. Off by default. Has to be turned on on purpose.

One detail that bites people: hitting a permission prompt while you are away from the terminal pauses the session until you approve it locally. If full unattended operation is the goal, --dangerously-skip-permissions bypasses prompts. Use that only in environments you already trust.

Worth keeping in mind: Claude's replies travel through the messaging platform's servers. When you are working with proprietary code or sensitive credentials, be intentional about what you ask Claude to output through a channel. The fakechat localhost option (below) keeps every byte on your machine for the sensitive work.

Setting Up the Telegram Channel

Telegram setup runs about 5 minutes. You need Bun installed (the MCP server runs on Bun) and a Claude Code session signed in with a claude.ai account rather than an API key.

Step 1: Create a Telegram Bot

Open @BotFather on Telegram and send /newbot. BotFather asks two questions:

  • Display name: Anything you like, spaces are fine (e.g., "My Dev Assistant")
  • Username: A unique handle ending in bot (e.g., my_dev_assistant_bot)

BotFather answers with a token like 123456789:AAHfiqksKZ8.... Copy the whole thing, leading number and colon included.

Step 2: Install the Plugin

Start a Claude Code session and run:

/plugin install telegram@claude-plugins-official

Step 3: Configure the Token

/telegram:configure 123456789:AAHfiqksKZ8...

This writes TELEGRAM_BOT_TOKEN=... to .claude/channels/telegram/.env inside your project. You can also set the variable in your shell before launching Claude Code (shell wins).

Step 4: Relaunch with Channels On

Quit your session and restart with the channel flag:

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

Step 5: Pair Your Account

DM your bot on Telegram. The bot answers with a 6-character pairing code. Back in Claude Code:

/telegram:access pair <code>

Step 6: Lock It Down

Flip to allowlist mode so only your own account can talk to the bot:

/telegram:access policy allowlist

Done. Your next message to the bot runs through Claude directly.

Telegram-Specific Features

  • Photos: Inbound photos get pulled to ~/.claude/channels/telegram/inbox/ automatically. The assistant can read them straight from there. Send as "File" (long-press in Telegram) if you need the uncompressed original.
  • File attachments: The reply tool can send files back. Images render inline, other types ship as documents. Max 50MB per file.
  • Typing indicator: Telegram shows "botname is typing..." while Claude is working. Unexpectedly handy for telling whether Claude is still thinking or has stalled on a permission prompt.
  • No message history: The Telegram Bot API does not expose history or search. Messages only arrive in real time. Anything sent while the session was down is gone.

Setting Up the Discord Channel

Discord takes a few more steps because an application has to exist in the Developer Portal first, and the bot has to be invited to a server. Budget around 10 minutes.

Step 1: Create a Discord Application

Head to the Discord Developer Portal and click New Application. Pick any name.

Step 2: Create the Bot and Grab a Token

Click Bot in the sidebar. Give the bot a username. Scroll up to Token and press Reset Token. Copy the token now (it shows once).

Step 3: Turn On Message Content Intent

Still in the Bot settings, scroll to Privileged Gateway Intents and enable Message Content Intent. Skip this and the bot receives messages with empty content.

Step 4: Invite the Bot to Your Server

Open OAuth2, then URL Generator. Pick the bot scope and enable these permissions:

  • View Channels
  • Send Messages
  • Send Messages in Threads
  • Read Message History
  • Attach Files
  • Add Reactions

Copy the generated URL, open it, and add the bot to your server.

Step 5: Install and Configure

Inside Claude Code:

/plugin install discord@claude-plugins-official
/discord:configure <your-bot-token>

Step 6: Relaunch and Pair

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

DM your bot on Discord. It replies with a pairing code. Back in Claude Code:

/discord:access pair <code>
/discord:access policy allowlist

Discord-Specific Features

  • Message history: Discord's fetch_messages tool can pull recent channel history (up to 100 messages per call, oldest-first). That is the real differentiator versus Telegram. If the session restarts, Claude can catch up on what it missed.
  • Attachment handling: Attachments are not pre-downloaded. The assistant sees metadata (name, type, size) and calls download_attachment when it actually needs the file.
  • Guild channels: Discord supports server/guild channels on top of DMs. That opens team collaboration where multiple people talk to Claude through one shared channel.
  • Custom emoji reactions: The react tool supports both Unicode emoji and custom server emoji in <:name:id> format.
  • Threading: The reply tool accepts reply_to for native Discord threading. That keeps conversations organized when multiple people are pinging the same channel.

Setting Up the iMessage Channel

iMessage is the newest of the three, added after waves of community demand after the first Telegram and Discord release. The shape is very different: no bot token, no external service, no pairing code. The plugin reads the Messages database on your Mac directly and sends replies via AppleScript.

Important: iMessage requires macOS. The plugin reads ~/Library/Messages/chat.db and steers Messages.app through AppleScript. There is no Windows or Linux path.

Step 1: Grant Full Disk Access

The plugin has to read the Messages database. Open System Settings > Privacy & Security > Full Disk Access and switch it on for your terminal app (Terminal.app, iTerm2, Warp, whichever one runs Claude Code for you).

Step 2: Install the Plugin

Start a Claude Code session and run:

/plugin install imessage@claude-plugins-official

Step 3: Relaunch with Channels On

Quit your session and restart with the channel flag:

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

Step 4: Test with Self-Chat

Fastest sanity check: text yourself from any Apple device. Self-chat (messaging your own number) skips the access control entirely and works with zero extra setup.

Step 5: Approve the Automation Prompt

First time Claude sends a reply, macOS pops an Automation prompt asking whether your terminal app may control Messages.app. Click OK. One-time approval.

Step 6: Allow Other Senders

Out of the box, only self-chat works. To open the door to other people, add them by phone number or Apple ID:

/imessage:access allow +15551234567
/imessage:access allow AppleID

iMessage-Specific Features

  • macOS native: No external service, no bot token, no developer portal. The plugin rides on your existing Messages setup.
  • Self-chat works instantly: Texting yourself is the zero-config path. No pairing code, no allowlist entry.
  • Identity detection from the Messages database: Instead of the pairing flow Telegram and Discord use, the iMessage plugin identifies senders by reading the Messages database. The handle stored in chat.db is how it knows who wrote what.
  • Add senders by handle: Phone numbers (+15551234567) and Apple IDs both work with /imessage:access allow.
  • AppleScript-based replies: Outbound messages go through Messages.app via AppleScript, so replies show up as normal iMessages from your account.

Practical Use Cases

Watch Long-Running Tasks from the Phone

Kick off a heavy build, a big test run, or a multi-agent workflow at your desk. Walk away. When Claude finishes (or hits a wall), the notification pops on your phone through Telegram, Discord, or iMessage. Send the next instruction without touching a laptop.

Quick Fixes on the Move

Reviewing a PR on your phone and spotting a typo in a config file is the classic example. No need to save it for later. Message your bot: "Change the Redis port in docker-compose.yml from 6380 to 6379 and commit it." Claude makes the edit, commits, and confirms.

Team Collaboration via Discord

Spin up a Discord guild channel where your whole team can talk to one shared Claude Code session. Great for pair-debugging: one person describes the issue and Claude digs in with full access to the codebase. Everyone in the channel watches it happen.

Async Development Workflows

Channels plus scheduled tasks forms a strong async pattern. Schedule Claude to run the test suite every hour, pipe results through Telegram, and pause for your call if something breaks. You check in when it fits your day.

Your Telegram-Native Executive Assistant

Not every Claude Code setup is about code. If you have wired Claude up as a productivity helper with MCP connections to your calendar, email, CRM, or project management tools, Channels turns it into something much closer to a real EA. Ask "what's my priority list for today?" from Telegram while grabbing coffee. Have it draft a follow-up email to a client between meetings. Tell it to reshuffle your afternoon based on an urgent Slack thread. The mental model shifts from "sit at the terminal, type a command" to "text the assistant whenever something comes up."

CI/CD Notifications and Reactions

Pipe CI results into your session through a channel. When a build fails, Claude can read the logs, spot the cause, and either patch it right then or message you with a diagnosis. This goes past passive notifications because Claude already holds your full project context.

Building Your Own Channel

The plugin surface is not capped at the three official channels. Anthropic publishes a Channels reference for building custom ones. Any MCP server that speaks the channel protocol can push events into Claude Code.

During the research preview, --channels only accepts plugins from an Anthropic-maintained allowlist. To run a channel you are building yourself, use the --dangerously-load-development-channels flag. That lets you iterate on custom integrations without waiting for official blessing.

The fakechat plugin ships as a development demo. It runs a chat UI on localhost with no external dependencies, so you can test the full channel flow before wiring up a real platform:

/plugin install fakechat@claude-plugins-official
claude --channels plugin:fakechat@claude-plugins-official

Open http://localhost:8787 and start typing. Messages land in your Claude Code session and replies show up in the browser.

Requirements and Limitations

Requirements

  • Claude Code v2.1.80 or later
  • Bun runtime installed (bun.sh)
  • claude.ai authentication (Pro or Max plan). Console and API key auth are not supported.
  • Team/Enterprise plans: admin has to turn channels on explicitly in managed settings
  • iMessage channel: macOS only, with Full Disk Access granted to your terminal app

Current Limitations

This is a research preview. Rough edges come with the territory:

  • The session has to stay up: Close the terminal or stop the claude process and the channel goes dark. Messages sent while the session was down are lost (Telegram) or queued until the bot is back (Discord, via fetch_messages).
  • Permission prompts block from afar: When Claude needs permission approval, it waits until you approve at the terminal. The --dangerously-skip-permissions flag works but carries the obvious risks.
  • Allowlisted plugins only: For the preview, only plugins from claude-plugins-official pass --channels. Custom channels need the development flag.
  • No persistent background mode: A terminal session still has to be open. Pairing this with tmux, screen, or a background process is the current workaround.
  • Platform-specific gaps: Telegram has no message history API. Discord takes more setup steps. iMessage only runs on macOS and needs Full Disk Access. Every platform brings its own constraints.

Anthropic has described this as a feature "we'll be expanding more on." The plugin shape points at future platforms (Slack and WhatsApp have both come up) and the channel reference docs confirm that community-built channels are part of the plan.

Frequently Asked Questions

What is Claude Code Channels?

Channels is a plugin-based feature that connects Claude Code sessions to messaging apps like Telegram, Discord, and iMessage. You message the app, Claude runs the request against your local dev environment, and replies come back in the same chat. Code and tools never leave your machine.

Is Claude Code Channels free?

You need a claude.ai Pro or Max subscription. API key auth is not supported. The Telegram, Discord, and iMessage plugins themselves are free and open source.

What's the difference between Channels and Remote Control?

Remote Control puts the full claude.ai web interface on top of your local session. Channels does the same thing but with messaging apps (Telegram, Discord, iMessage) as the surface. Both sessions stay local. Remote Control is one command to stand up. Channels asks for more plugin setup in return for native notifications and a lot more room to hack.

Can I use Claude Code from my phone?

Yes, via three different paths. Remote Control plugs into the Claude mobile app. Channels plugs into Telegram, Discord, or iMessage. Web sessions at claude.ai/code run fully in the cloud. All three reach Claude Code from any device with a browser or the right app.

Which messaging apps work with Claude Code Channels?

Telegram, Discord, and iMessage are the three official platforms as of March 2026. The plugin shape was built for expansion, and the community has already floated Slack and WhatsApp. You can also build your own channel using the Channels reference.

Getting Started

If you are already comfortable with MCP servers and Claude Code plugins, this setup will feel like home. Pick the platform you live in most:

  1. Telegram for the fastest setup (5 minutes, no server invite required)
  2. Discord for message history, guild channels, or team collaboration
  3. iMessage if you are on macOS and want zero-config native messaging with no outside service
  4. Fakechat for testing the flow locally before committing to a real platform

Start with DM-only access and the allowlist policy. Once that feels solid, branch out into guild channels on Discord or group chats on Telegram for the broader use cases.

Channels mark a shift in how developers work with their coding environment. Instead of sitting at the terminal, you message it. Instead of waiting on a build, you get pinged. Instead of bouncing between phone and workstation, you work from wherever you happen to be.

The "code from your phone" promise has been floating around for years. Between Channels, Remote Control, and scheduled tasks, Claude Code is quietly turning it into a real thing, one interface at a time.

More in this guide

  • Agent Fundamentals
    Five ways to build specialized agents in Claude Code, from sub-agents to .claude/agents/ definitions to perspective prompts.
  • Agent Patterns
    Orchestrator, fan-out, validation chain, specialist routing, progressive refinement, and watchdog. Six ways to wire sub-agents in Claude Code.
  • Agent Teams Best Practices
    Battle-tested patterns for Claude Code agent teams. Troubleshooting, limitations, plan mode quirks, and fixes shipped from v2.1.33 through v2.1.45.
  • Agent Teams Controls
    Stop your agent team lead from grabbing implementation work. Configure delegate mode, plan approval, hooks, and CLAUDE.md for teams.
  • Agent Teams Prompt Templates
    Ten tested Agent Teams prompts for Claude Code. Code review, debugging, feature builds, architecture calls, and campaign research. Paste and go.

Stop configuring. Start building.

SaaS builder templates with AI orchestration.

Get Build This Now

Claude Code Remote Control

Drive a local Claude Code terminal session from your phone, tablet, or browser. Setup, security model, and how Remote Control stacks up against OpenClaw.

Claude Code Scheduled Tasks

Desktop tasks for durable automation, CLI /loop for session polling, and the real patterns teams run against error logs, briefings, and PRs.

On this page

What Channels Actually Is
Channels vs Remote Control vs Web Sessions
The Architecture Under Channels
Setting Up the Telegram Channel
Step 1: Create a Telegram Bot
Step 2: Install the Plugin
Step 3: Configure the Token
Step 4: Relaunch with Channels On
Step 5: Pair Your Account
Step 6: Lock It Down
Telegram-Specific Features
Setting Up the Discord Channel
Step 1: Create a Discord Application
Step 2: Create the Bot and Grab a Token
Step 3: Turn On Message Content Intent
Step 4: Invite the Bot to Your Server
Step 5: Install and Configure
Step 6: Relaunch and Pair
Discord-Specific Features
Setting Up the iMessage Channel
Step 1: Grant Full Disk Access
Step 2: Install the Plugin
Step 3: Relaunch with Channels On
Step 4: Test with Self-Chat
Step 5: Approve the Automation Prompt
Step 6: Allow Other Senders
iMessage-Specific Features
Practical Use Cases
Watch Long-Running Tasks from the Phone
Quick Fixes on the Move
Team Collaboration via Discord
Async Development Workflows
Your Telegram-Native Executive Assistant
CI/CD Notifications and Reactions
Building Your Own Channel
Requirements and Limitations
Requirements
Current Limitations
Frequently Asked Questions
What is Claude Code Channels?
Is Claude Code Channels free?
What's the difference between Channels and Remote Control?
Can I use Claude Code from my phone?
Which messaging apps work with Claude Code Channels?
Getting Started

Stop configuring. Start building.

SaaS builder templates with AI orchestration.

Get Build This Now