Claude Code Channels: Turn Your Terminal Into a Messaging Hub (Telegram, Discord, Webhooks)

Set up Claude Code Channels for Telegram and Discord, push webhooks and alerts into your terminal, with security tips and custom channel code included.

Table of Contents

Claude Code Channels are MCP servers that push outside events, chat messages, webhooks, alerts, into a running Claude Code session so it can reply through the same channel. Available from version 2.1.80, they connect Telegram, Discord, or any webhook-enabled service to your terminal, turning a single-player session into a two-way messaging hub.

What you will be able to do

  • Install and run the fakechat plugin to confirm channels work on your machine before touching a real platform
  • Set up a Telegram bot, pair your own account to it, and lock it down with an allowlist policy
  • Set up a Discord bot through its OAuth flow, pair it, and lock it down with an allowlist policy
  • Run Telegram and Discord channels at the same time in one Claude Code session, with replies routed to the correct platform automatically
  • Write a custom webhook channel server in TypeScript with the MCP SDK so CI, GitHub, or monitoring events reach Claude as they happen

Before you start

  • Claude Code v2.1.80 or later, confirmed by running claude --version
  • claude.ai authentication (Console and API key auth do not support channels); Pro/Max users add the --channels flag, Team/Enterprise users need an admin to set channelsEnabled: true
  • Bun runtime installed (curl -fsSL https://bun.sh/install | bash) and available in your shell PATH
  • For custom channels: familiarity with the @modelcontextprotocol/sdk package and a bot token from BotFather (Telegram) or the Discord Developer Portal

Reference

Task Command
Install fakechat plugin /plugin install fakechat@claude-plugins-official
Start Claude Code with fakechat claude --channels plugin:fakechat@claude-plugins-official
Configure Telegram bot token /telegram:configure
Lock Telegram to your account /telegram:access policy allowlist
Configure Discord bot token /discord:configure
Lock Discord to your account /discord:access policy allowlist
Run Telegram and Discord together claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official
Load a custom channel (dev preview) claude --dangerously-load-development-channels server:webhook-channel

Common errors and fixes

What goes wrong The fix
"fakechat MCP failed" with a red X after install Bun isn't in PATH yet; run exec /bin/zsh and source ~/.zshrc (or open a new terminal), then restart Claude Code with the --channels command
fakechat test won't load in the browser Port 8787 is already in use by a leftover process; run lsof -i :8787 to check, then lsof -ti :8787 | xargs kill and restart
Discord bot can't read message text "Message Content Intent" under Privileged Gateway Intents was left off when creating the bot; it's easy to miss and must be enabled
Anyone can message your Claude Code session Without an allowlist policy, anyone who finds your bot's username can send it messages; run /telegram:access policy allowlist or /discord:access policy allowlist
Custom channel metadata attribute goes missing Meta keys must be identifiers (letters, digits, underscores only); keys with hyphens are silently dropped from the tag

Read the full walkthrough

The complete lesson, with screenshots and any downloads, is published on Substack as part of Claude Code Masterclass: Build AI Systems Without Writing Code.

Read Lesson 7 on Substack →

More in this section

Continue the course

Browse all lessons in the Claude Code Masterclass: Build AI Systems Without Writing Code course, or subscribe to the GenAI Unplugged newsletter to get new lessons in your inbox.

Dheeraj Sharma

Dheeraj Sharma

AI Systems Builder
Creator of the n8n Zero to Hero course (42 lessons, 31+ hours). I help solopreneurs build AI systems that grow revenue without growing workload.

Get the n8n Mastery Bundle

All workflows, cheat sheets, and premium resources from the entire course in one package.

Read the full lesson on Substack