Push events into a running session with channels
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.
- 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
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
Create a Telegram bot
/newbot. Give it a display name and a unique username ending in bot. Copy the token BotFather returns.Configure your token
.claude/channels/telegram/.env in your project. You can also set TELEGRAM_BOT_TOKEN in your shell environment before launching Claude Code.Restart with channels enabled
Pair your account
--channels from the previous step. The bot can only reply while the channel is active.Create a Discord bot
Enable Message Content Intent
Invite the bot to your server
bot scope and enable these permissions:- View Channels
- Send Messages
- Send Messages in Threads
- Read Message History
- Attach Files
- Add Reactions
Configure your token
.claude/channels/discord/.env in your project. You can also set DISCORD_BOT_TOKEN in your shell environment before launching Claude Code.Restart with channels enabled
Pair your account
--channels from the previous step. The bot can only reply while the channel is active.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
Install the fakechat channel plugin
claude-plugins-official marketplace, which is added automatically for most setups. If you don’t have it, run /plugin marketplace add anthropics/claude-plugins-official first.Restart with the channel enabled
--channels and pass the fakechat plugin you installed:Push a message in
event. Claude reads it, does the work, and calls fakechat’s reply tool. The answer shows up in the chat UI.--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:- Find your bot in Telegram or Discord and send it any message
- The bot replies with a pairing code
- In your Claude Code session, approve the code when prompted
- Your sender ID is added to the allowlist
--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 thechannelsEnabled setting in managed settings.
| Plan type | Default behavior |
|---|---|
| Pro / Max, no organization | Channels available; users opt in per session 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 settingchannelsEnabled 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.
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