Roman Peschke @roman.peschke
Free Guide

How to Set Up Claude Code Channels

Push messages, alerts, and webhooks into your Claude Code session from Telegram, Discord, or a local chat UI. Two-way communication while you're away from the terminal.

What you need

A channel is an MCP server that pushes events into your running Claude Code session. 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, run Claude in a background process or persistent terminal.

Before you start

!
Research preview. Channels are currently in research preview. Expect changes.
!
Claude Code v2.1.80+ required. Check with claude --version. Update if needed.
!
claude.ai login required. Console and API key authentication are not supported for channels.
!
Bun is required. The pre-built channel plugins are Bun scripts. Check with bun --version. If missing, install Bun first.
!
Team and Enterprise orgs must enable channels. Admins: claude.ai > Admin settings > Claude Code > Channels, or set channelsEnabled to true in managed settings.
1. Quickstart: Local Testing with Fakechat

Fakechat is an officially supported demo channel that runs a chat UI on localhost. No authentication, no external services. The fastest way to test channels.

1

Install the plugin

In Claude Code, run:

/plugin install fakechat@claude-plugins-official

If the plugin is not found, run /plugin marketplace add anthropics/claude-plugins-official first.

2

Restart with channels enabled

Exit Claude Code, then restart with the channels flag:

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

3

Push a message

Open http://localhost:8787 in your browser and type a message. It arrives in your Claude session, and Claude's reply appears back in the browser UI.

2. Telegram Channel
1

Create a Telegram bot

Open BotFather in Telegram and send /newbot. Follow the prompts to give it a display name and username. Copy the access token BotFather provides.

2

Install the plugin

In Claude Code, run:

/plugin install telegram@claude-plugins-official

3

Configure your token

/telegram:configure <your_token_here>

Alternatively, set TELEGRAM_BOT_TOKEN in your shell environment.

4

Restart with channels enabled

Exit and restart Claude Code:

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

5

Pair your account

Send any message to your bot in Telegram. The bot replies with a pairing code. Back in Claude Code, run:

/telegram:access pair <code>

Then lock it down so only your account can send messages:

/telegram:access policy allowlist

3. Discord Channel
1

Create a Discord bot

Go to the Discord Developer Portal, click New Application, and name it. Under the Bot section, create a username, click Reset Token, and copy the new 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:

/plugin install discord@claude-plugins-official

5

Configure your token

/discord:configure <your_token_here>

6

Restart with channels enabled

Exit and restart:

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

7

Pair your account

Send a DM to your bot on Discord. It replies with a pairing code. In Claude Code, run:

/discord:access pair <code>

Lock down access:

/discord:access policy allowlist

4. Security and Access Control
1

Sender allowlists

Every approved channel plugin maintains a strict sender allowlist. Only IDs you have explicitly paired and added can push messages to your session. All other messages are silently dropped.

2

The --channels flag is required

Being listed in .mcp.json is not enough. A server must also be explicitly named in the --channels startup flag for that specific session.

3

Custom channels (development)

During the research preview, the --channels flag only accepts plugins from an Anthropic-maintained allowlist. If you're building your own channel, start Claude Code with the --dangerously-load-development-channels flag.

Sources

Telegram channel plugin
Official source code and README for the Telegram channel plugin.
github.com/anthropics/claude-plugins-official
Discord channel plugin
Official source code and README for the Discord channel plugin.
github.com/anthropics/claude-plugins-official

FAQ

What are Claude Code channels?
A channel is an MCP server plugin that pushes events (messages, alerts, webhooks) into a running Claude Code session. Claude reads the event and can reply back through the same channel. Events only arrive while the session is open.
Do channels work with API keys?
No. Channels require claude.ai login. Console and API key authentication are not supported.
Can anyone message my Claude Code session?
No. Every channel plugin maintains a strict sender allowlist. Only IDs you have explicitly paired and added can push messages. All others are silently dropped.
Can I run multiple channels at once?
Yes. Pass multiple channel names to the --channels flag separated by commas, e.g. claude --channels plugin:telegram@claude-plugins-official,plugin:discord@claude-plugins-official
Do messages queue up when the session is closed?
No. Events only arrive while the session is open. For always-on access, run Claude in a background process or persistent terminal session.