https://code.claude.com/docs/en/channels Skip to main content Claude Code Docs home pagelight logodark logo US English Search... [?]KAsk AI * Claude Developer Platform * Claude Code on the Web * Claude Code on the Web Search... Navigation Automation Push events into a running session with channels Getting started Build with Claude Code Deployment Administration Configuration Reference Resources Agents * Create custom subagents * Run agent teams Tools and plugins * Model Context Protocol (MCP) * Discover and install prebuilt plugins * Create plugins * Extend Claude with skills Automation * Automate with hooks * Push external events to Claude * Run prompts on a schedule * Programmatic usage Troubleshooting * Troubleshooting On this page * Supported channels * Quickstart * Security * Enterprise controls * Enable channels for your organization * Research preview * How channels compare * Next steps Automation Push events into a running session with channels Copy page Use channels to push messages, alerts, and webhooks into your Claude Code session from an MCP server. Forward CI results, chat messages, and monitoring events so Claude can react while you're away. Copy page Channels are in research preview and require Claude Code v2.1.80 or later. They require claude.ai login. Console and API key authentication is not supported. Team and Enterprise organizations must explicitly enable them. A channel is an MCP server that pushes events into your running Claude Code session, so Claude can react to things that happen while you're not at the terminal. Channels can be two-way: Claude reads the event and replies back through the same channel, like a chat bridge. Events only arrive while the session is open, so for an always-on setup you run Claude in a background process or persistent terminal. Unlike integrations that spawn a fresh cloud session or wait to be polled, the event arrives in the session you already have open: see how channels compare. You install a channel as a plugin and configure it with your own credentials. Telegram and Discord are included in the research preview. When Claude replies through a channel, you see the inbound message in your terminal but not the reply text. The terminal shows the tool call and a confirmation (like "sent"), and the actual reply appears on the other platform. This page covers: * Supported channels: Telegram and Discord setup * Install and run a channel with fakechat, a localhost demo * Who can push messages: sender allowlists and how you pair * Enable channels for your organization on Team and Enterprise * How channels compare to web sessions, Slack, MCP, and Remote Control To build your own channel, see the Channels reference. Supported channels Each supported channel is a plugin that requires Bun. For a hands-on demo of the plugin flow before connecting a real platform, try the fakechat quickstart. * Telegram * Discord View the full Telegram plugin source. 1 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. 2 Install the plugin In Claude Code, run: Report incorrect code Copy Ask AI /plugin install telegram@claude-plugins-official If Claude Code reports that the plugin is not found in any marketplace, run /plugin marketplace add anthropics/ claude-plugins-official first and retry the install. 3 Configure your token Run the configure command with the token from BotFather: Report incorrect code Copy Ask AI /telegram:configure This saves it to ~/.claude/channels/telegram/.env. You can also set TELEGRAM_BOT_TOKEN in your shell environment before launching Claude Code. 4 Restart with channels enabled Exit Claude Code and restart with the channel flag. This starts the Telegram plugin, which begins polling for messages from your bot: Report incorrect code Copy Ask AI claude --channels plugin:telegram@claude-plugins-official 5 Pair your account Open Telegram and send any message to your bot. The bot replies with a pairing code. If your bot doesn't respond, make sure Claude Code is running with --channels from the previous step. The bot can only reply while the channel is active. Back in Claude Code, run: Report incorrect code Copy Ask AI /telegram:access pair Then lock down access so only your account can send messages: Report incorrect code Copy Ask AI /telegram:access policy allowlist View the full Discord plugin source. 1 Create a Discord bot Go to the Discord Developer Portal, click New Application, and name it. In the Bot section, create a username, then click Reset Token and copy the token. 2 Enable Message Content Intent In your bot's settings, scroll to Privileged Gateway Intents and enable Message Content Intent. 3 Invite the bot to your server 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 add the bot to your server. 4 Install the plugin In Claude Code, run: Report incorrect code Copy Ask AI /plugin install discord@claude-plugins-official If Claude Code reports that the plugin is not found in any marketplace, run /plugin marketplace add anthropics/ claude-plugins-official first and retry the install. 5 Configure your token Run the configure command with the bot token you copied: Report incorrect code Copy Ask AI /discord:configure This saves it to ~/.claude/channels/discord/.env. You can also set DISCORD_BOT_TOKEN in your shell environment before launching Claude Code. 6 Restart with channels enabled Exit Claude Code and restart with the channel flag. This connects the Discord plugin so your bot can receive and respond to messages: Report incorrect code Copy Ask AI claude --channels plugin:discord@claude-plugins-official 7 Pair your account DM your bot on Discord. The bot replies with a pairing code. If your bot doesn't respond, make sure Claude Code is running with --channels from the previous step. The bot can only reply while the channel is active. Back in Claude Code, run: Report incorrect code Copy Ask AI /discord:access pair Then lock down access so only your account can send messages: Report incorrect code Copy Ask AI /discord:access policy allowlist You can also build your own channel for systems that don't have a plugin yet. Quickstart Fakechat is an officially supported demo channel that runs a chat UI on localhost, with nothing to authenticate and no external service to configure. Once you install and enable fakechat, you can type in the browser and the message arrives in your Claude Code session. Claude replies, and the reply shows up back in the browser. After you've tested the fakechat interface, try out Telegram or Discord. To try the fakechat demo, you'll need: * Claude Code installed and authenticated with a claude.ai account * Bun installed. The pre-built channel plugins are Bun scripts. Check with bun --version; if that fails, install Bun. * Team/Enterprise users: your organization admin must enable channels in managed settings 1 Install the fakechat channel plugin Start a Claude Code session and run the install command: Report incorrect code Copy Ask AI /plugin install fakechat@claude-plugins-official If Claude Code reports that the plugin is not found in any marketplace, run /plugin marketplace add anthropics/ claude-plugins-official first and retry the install. 2 Restart with the channel enabled Exit Claude Code, then restart with --channels and pass the fakechat plugin you installed: Report incorrect code Copy Ask AI claude --channels plugin:fakechat@claude-plugins-official The fakechat server starts automatically. You can pass several plugins to --channels, space-separated. 3 Push a message in Open the fakechat UI at http://localhost:8787 and type a message: Report incorrect code Copy Ask AI hey, what's in my working directory? The message arrives in your Claude Code session as a event. Claude reads it, does the work, and calls fakechat's reply tool. The answer shows up in the chat UI. If Claude hits a permission prompt while you're away from the terminal, the session pauses until you approve locally. For unattended use, --dangerously-skip-permissions bypasses prompts, but only use it in environments you trust. Security Every approved channel plugin maintains a sender allowlist: only IDs you've added can push messages, and everyone else is silently dropped. Telegram and Discord bootstrap the list by pairing: 1. Find your bot in Telegram or Discord and send it any message 2. The bot replies with a pairing code 3. In your Claude Code session, approve the code when prompted 4. Your sender ID is added to the allowlist On top of that, you control which servers are enabled each session with --channels, and on Team and Enterprise plans your organization controls availability with channelsEnabled. Being in .mcp.json isn't enough to push messages: a server also has to be named in --channels. Enterprise controls Channels are controlled by the channelsEnabled setting in managed settings. Plan type Default behavior Pro / Max, no Channels available; users opt in per session organization with --channels Team / Enterprise Channels disabled until an admin explicitly enables them Enable channels for your organization Admins can enable channels from claude.ai - Admin settings - Claude Code - Channels, or by setting channelsEnabled to true in managed settings. Once enabled, users in your organization can use --channels to opt channel servers into individual sessions. If the setting is disabled or unset, the MCP server still connects and its tools work, but channel messages won't arrive. A startup warning tells the user to have an admin enable the setting. Research preview Channels are a research preview feature. Availability is rolling out gradually, and the --channels flag syntax and protocol contract may change based on feedback. During the preview, --channels only accepts plugins from an Anthropic-maintained allowlist. The channel plugins in claude-plugins-official are the approved set. If you pass something that isn't, Claude Code starts normally but the channel doesn't register, and the startup notice tells you why. To test a channel you're building, use --dangerously-load-development-channels. See Test during the research preview for information about testing custom channels that you build. Report issues or feedback on the Claude Code GitHub repository. How channels compare Several Claude Code features connect to systems outside the terminal, each suited to a different kind of work: Feature What it does Good for Claude Runs tasks in a fresh cloud Delegating self-contained Code on sandbox, cloned from GitHub async work you check on the web later Claude in Spawns a web session from an Starting tasks directly Slack @Claude mention in a channel or from team conversation thread context Standard Claude queries it during a Giving Claude on-demand MCP server task; nothing is pushed to the access to read or query a session system Remote You drive your local session Steering an in-progress Control from claude.ai or the Claude session while away from mobile app your desk Channels fill the gap in that list by pushing events from non-Claude sources into your already-running local session. * Chat bridge: ask Claude something from your phone via Telegram or Discord, and the answer comes back in the same chat while the work runs on your machine against your real files. * Webhook receiver: a webhook from CI, your error tracker, a deploy pipeline, or other external service arrives where Claude already has your files open and remembers what you were debugging. Next steps Once you have a channel running, explore these related features: * Build your own channel for systems that don't have plugins yet * Remote Control to drive a local session from your phone instead of forwarding events into it * Scheduled tasks to poll on a timer instead of reacting to pushed events Was this page helpful? YesNo Automate with hooksRun prompts on a schedule [ ] [?]I Claude Code Docs home pagelight logodark logo xlinkedin Company AnthropicCareersEconomic FuturesResearchNewsTrust centerTransparency Help and security AvailabilityStatusSupport center Learn CoursesMCP connectorsCustomer storiesEngineering blogEventsPowered by ClaudeService partnersStartups program Terms and policies Privacy choicesPrivacy policyDisclosure policyUsage policyCommercial termsConsumer terms Assistant Responses are generated using AI and may contain mistakes. [ ] [ ]