How to Set Up Claude Channels for Telegram, Discord, and iMessage
Claude Code channels let you push messages from Telegram, Discord, or iMessage directly into a running coding session. You interact with your local agent from your phone while it reads, writes, and runs commands against your actual files. This guide covers prerequisites, platform-by-platform setup, security configuration, and how to persist the output your agent produces.
Why Channels Change the Way You Use a Coding Agent
82% of professional developers now work remotely or in a hybrid setup, according to the 2025 Stack Overflow Developer Survey. That means the majority of coding sessions happen on machines that sit idle during commutes, meetings, and lunch. Claude Code channels solve this by turning Telegram, Discord, or iMessage into a two-way bridge to your running session. You send a message from your phone; your agent acts on your local files and replies in the same chat.
A channel is an MCP server that pushes events into your Claude Code session so the agent can react to things happening outside the terminal. Unlike cloud-based alternatives that spin up a fresh sandbox, the channel routes your message into the session you already have open, with full access to your filesystem, git history, and any MCP servers you've connected. Your phone becomes a remote control for the agent that's already loaded your project.
Channels shipped in research preview with Claude Code v2.1.80. They currently support Telegram, Discord, and iMessage. Each platform runs as a plugin that you install inside Claude Code, configure with your own credentials, and enable per session with the --channels flag.
What You Need Before Enabling Channels
Before setting up any channel, you need four things in place.
Claude Code v2.1.80 or later. Run claude --version to check. Update with npm install -g @anthropic-ai/claude-code if you're behind.
Anthropic authentication. Channels require a claude.ai account (Pro or Max) or a Claude Console API key. They are not available on Amazon Bedrock, Google Vertex AI, or Microsoft Foundry.
Bun runtime. The pre-built channel plugins are Bun scripts. Run bun --version to check. If Bun isn't installed, grab it with curl -fsSL https://bun.sh/install | bash.
Organization approval (Team and Enterprise only). Channels are blocked by default on Team and Enterprise plans. An org Owner must enable them at claude.ai > Admin settings > Claude Code > Channels or by setting channelsEnabled: true in managed settings. Pro and Max users without an organization skip this step entirely.
Once these are sorted, pick a platform and follow the setup below.
Setting Up Telegram
Telegram is the fast channel to configure. The entire process takes about five minutes, and you don't need a server or public URL.
Create a Telegram Bot
Open BotFather in Telegram and send /newbot. Give it a display name and a unique username ending in bot. Copy the token BotFather returns.
Install and Configure the Plugin In Claude Code, run:
/plugin install telegram@claude-plugins-official
If Claude Code can't find the plugin, refresh the marketplace first:
/plugin marketplace update claude-plugins-official
After installing, run /reload-plugins to activate the configure command. Then pass your BotFather token:
/telegram:configure <your-bot-token>
This saves the token to ~/.claude/channels/telegram/.env. You can also export TELEGRAM_BOT_TOKEN in your shell before launching Claude Code.
Launch with Channels Enabled
Exit Claude Code and restart with the channel flag:
claude --channels plugin:telegram@claude-plugins-official
The plugin begins polling Telegram for messages from your bot.
Pair Your Account
Open Telegram and send any message to your bot. It replies with a pairing code. Back in Claude Code, run:
/telegram:access pair <code>
Then lock access to your account only:
/telegram:access policy allowlist
You can now message your bot from your phone and see the agent work in your terminal.
Persist your agent's output across sessions and devices
Fast.io gives your agents a shared workspace with Intelligence Mode, MCP server access, and ownership transfer. Starts with a 14-day free trial.
Setting Up Discord
Discord takes a few more steps because you need to configure bot permissions and intents through the Developer Portal. The payoff is message history retrieval, so if your session restarts, you can scroll back through what happened.
Create a Discord Bot
Go to the Discord Developer Portal and click New Application. Name it, navigate to the Bot section, click Reset Token, and copy the token.
In the bot settings, scroll to Privileged Gateway Intents and enable Message Content Intent. Without this, your bot can't read message text.
Set Bot Permissions and Invite
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
Open the generated URL to invite the bot to your server.
Install, Configure, and Launch
The plugin install and configuration follow the same pattern as Telegram:
/plugin install discord@claude-plugins-official
/reload-plugins
/discord:configure <your-bot-token>
Then restart Claude Code with the channel enabled:
claude --channels plugin:discord@claude-plugins-official
Pair Your Account
DM your bot on Discord. It replies with a pairing code. In Claude Code:
/discord:access pair <code>
/discord:access policy allowlist
Your Discord bot now bridges messages into your running session. Guild channels work too, which makes collaborative debugging possible if your team shares a server.
Setting Up iMessage
iMessage is the zero-external-service option. It reads your Messages database directly and sends replies through AppleScript. No bot token, no developer portal, no third-party account. The catch: it only works on macOS.
Grant Full Disk Access
The Messages database at ~/Library/Messages/chat.db is protected by macOS. Your terminal app (Terminal, iTerm, or your IDE) needs Full Disk Access. Go to System Settings > Privacy & Security > Full Disk Access and add your terminal. Without this, the plugin exits immediately with authorization denied.
Install and Launch
/plugin install imessage@claude-plugins-official
Restart with the channel:
claude --channels plugin:imessage@claude-plugins-official
Test with Self-Chat
Open Messages on any device signed into your Apple ID and text yourself. Self-chat bypasses access control with no setup. The first reply triggers a macOS Automation prompt asking if your terminal can control Messages. Click OK.
Allow Other Senders
By default, only your own messages get through. To let another contact reach Claude:
/imessage:access allow +15551234567
Handles are phone numbers in +country format or Apple ID emails.
How to Secure and Scale Your Channel Setup
Every channel plugin maintains a sender allowlist. Only user IDs you've explicitly paired can push messages. Everyone else is silently dropped. This matters because an ungated channel would be a prompt injection vector, letting anyone who can message your bot put text in front of Claude.
Permission Relay
When Claude tries to run a tool that needs approval (like writing a file or running a shell command), the session normally pauses at the terminal prompt. Channel plugins that support permission relay forward these prompts to your phone. You see something like "Claude wants to run Bash: npm test. Reply yes abcde or no abcde." The first answer, from either your phone or the terminal, gets applied.
For fully unattended use, --dangerously-skip-permissions bypasses all prompts except explicit ask rules. Only use this in environments you trust completely.
Session Lifetime
Events only arrive while the session is open. If your laptop goes to sleep or you close the terminal, the channel stops receiving messages. For always-on setups, run Claude Code in a persistent terminal session (tmux, screen) or a background process on a server.
Running Multiple Channels
You can pass multiple plugins to --channels, space-separated:
claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official
Each channel operates independently with its own sender allowlist.
Custom automation hooks Channels
Beyond the three built-in platforms, you can build your own channel to receive CI results, monitoring alerts, or any automation hooks. The channels reference documents the protocol. A automation hooks channel is an MCP server that declares claude/channel capability, listens on a local port, and pushes payloads to Claude via mcp.notification(). During the research preview, custom channels require the --dangerously-load-development-channels flag.
Persisting Channel Output with Fast.io
Channels solve the input problem: getting messages to your agent from anywhere. But the output problem is just as important. When your agent generates files, analysis, or build artifacts during a remote session, those results live on your local machine. If you need to share them with a colleague, review them on another device, or hand them off to a client, you need somewhere persistent.
Fast.io workspaces give your agent a place to push output that outlives the session. Your agent writes files to a shared workspace via the Fast.io MCP server, and anyone you've granted access can view, download, or query them. Intelligence Mode auto-indexes uploaded files for semantic search and AI chat, so you can ask questions about what your agent produced without opening every file.
The workflow looks like this: send your Claude Code session a message from Telegram asking it to analyze a codebase and produce a report. Claude does the work locally, writes the results, and uploads them to a Fast.io workspace. You share that workspace with your team. They can read the report, ask follow-up questions through Intelligence Mode, and download the raw output. No manual file transfers, no emailing attachments.
For teams running multiple agents, Fast.io's ownership transfer feature lets the agent build the workspace and then hand control to a human. The agent keeps admin access for future updates, while the human becomes the owner. This separation matters when agents produce deliverables that need human review before going to clients.
Local storage, S3 buckets, and Google Drive all work for raw file persistence. Fast.io adds the intelligence layer on top: files are indexed on upload, searchable by meaning, and queryable through chat. Every org starts with a 14-day free trial, with storage, monthly credits, and workspaces scaled to each plan.
Frequently Asked Questions
How do I set up Claude channels?
Install the channel plugin for your platform (Telegram, Discord, or iMessage) using the /plugin install command inside Claude Code. Configure it with your bot token or platform credentials, then restart Claude Code with the --channels flag pointing to the plugin. Each platform has a pairing step where you message the bot and approve a code in your session.
Can I use Claude from Telegram?
Yes. Create a bot through BotFather, install the Telegram plugin in Claude Code, configure it with your bot token, and launch with --channels. After pairing your Telegram account, you can send messages to your bot from your phone and they arrive in your running Claude Code session. Claude processes the request against your local files and replies in Telegram.
How do I connect Claude Code to Discord?
Create an application in the Discord Developer Portal, enable the Message Content Intent, invite the bot to your server with the required permissions, then install and configure the Discord plugin in Claude Code. Launch with --channels and pair your account by DMing the bot. Discord supports guild channels, which means multiple team members can interact with the same agent session.
What is the Claude channels feature?
Claude channels are MCP servers that push events from messaging platforms into a running Claude Code session. They turn Telegram, Discord, or iMessage into a two-way bridge: you send a message from your phone, and your local coding agent receives it with full access to your filesystem, git history, and connected tools. The agent replies through the same chat.
Do Claude channels work with API keys?
Channels require Anthropic authentication through a claude.ai account (Pro or Max) or a Claude Console API key. They do not work with Amazon Bedrock, Google Vertex AI, or Microsoft Foundry authentication.
Can I build a custom Claude channel?
Yes. Any MCP server that declares the claude/channel capability and emits notifications/claude/channel events can function as a channel. The channels reference documentation covers the protocol, including how to add reply tools for two-way communication and permission relay for remote approval of tool use. Custom channels require the --dangerously-load-development-channels flag during the research preview.
What happens if my session closes while using channels?
Channel events only arrive while the Claude Code session is open. If your terminal closes or your machine goes to sleep, the channel stops receiving messages. For persistent availability, run Claude Code inside tmux, screen, or a background process on a server that stays running.
Related Resources
Persist your agent's output across sessions and devices
Fast.io gives your agents a shared workspace with Intelligence Mode, MCP server access, and ownership transfer. Starts with a 14-day free trial.