Roman Peschke@roman.peschke

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.

Join AI Ads w/ Roman

The exact AI automations, agents, and strategies my team and I use to scale Meta ads (Facebook ads), content, and sales for $1m+ businesses

Learn more

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

  1. 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. 2

    Restart with channels enabled

    Exit Claude Code, then restart with the channels flag:

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

  3. 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. 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. 2

    Install the plugin

    In Claude Code, run:

    /plugin install telegram@claude-plugins-official

  3. 3

    Configure your token

    /telegram:configure <your_token_here>

    Alternatively, set TELEGRAM_BOT_TOKEN in your shell environment.

  4. 4

    Restart with channels enabled

    Exit and restart Claude Code:

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

  5. 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. 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. 2

    Enable Message Content Intent

    In your bot's settings, scroll to Privileged Gateway Intents and enable Message Content Intent.

  3. 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. 4

    Install the plugin

    In Claude Code, run:

    /plugin install discord@claude-plugins-official

  5. 5

    Configure your token

    /discord:configure <your_token_here>

  6. 6

    Restart with channels enabled

    Exit and restart:

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

  7. 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. 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. 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. 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

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.