Claude Channels with Telegram and Discord: Complete Setup Guide 2026
Claude Channels: From Theory to Practice
If you read our article on Claude Channels and Remote Tasks and thought "this sounds incredible, but how do you actually set it up?" — this article is for you.
No theory here: this is the practical configuration guide for Claude Channels with Telegram and Discord, covering every step, the most common mistakes, and security best practices.
Before You Start: What You Need
- Claude Code v2.1.80 or later (check with
claude --version) - An active claude.ai account (Pro, Team, or Enterprise — API keys alone won't work)
- A Telegram account or a Discord server where you have admin permissions
- For Team/Enterprise accounts: your admin must enable Channels from the admin panel
The Mistake Everyone Makes (Read This First)
Before getting into the steps, there's one mistake that 90% of people make on their first setup attempt:
Installing the plugin in .mcp.json does NOT activate Channels.
The MCP plugin connects and its tools work, but channel messages won't reach your session unless you launch Claude Code with the right flag. We'll cover that in each section.
Option A: Setting Up Claude Channels with Telegram
Step 1: Create Your Bot in BotFather
Open Telegram and search for @BotFather. Send the command:
/newbot
Follow the flow: choose a name and a username for the bot (must end in bot). BotFather will give you an API token in this format:
1234567890:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Save it. You'll need it in the next step.
Step 2: Install the Official Telegram Plugin
Add the MCP server configuration to your .mcp.json in the project root (or ~/.claude/mcp.json for global use):
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "@claude-plugins/telegram"],
"env": {
"TELEGRAM_BOT_TOKEN": "YOUR_TOKEN_HERE",
"TELEGRAM_ALLOWED_USERS": "YOUR_TELEGRAM_USER_ID"
}
}
}
}
To get your TELEGRAM_USER_ID, send a message to @userinfobot on Telegram. It will reply with your numeric ID.
Step 3: Launch Claude Code with the --channels Flag
This is the step most people skip. You must launch Claude Code explicitly with:
claude --channels plugin:telegram@claude-plugins-official
Without this flag, the MCP server initializes and its tools are available, but Claude will not listen for incoming channel messages.
Step 4: Test the Connection
Send a message to your bot from Telegram. Claude should respond. If it doesn't, verify:
- The bot token is correct
- Your User ID is in
TELEGRAM_ALLOWED_USERS - You launched with
--channelsand not just started Claude Code normally
Option B: Setting Up Claude Channels with Discord
Discord uses WebSocket instead of polling, giving it lower latency.
Step 1: Create an Application in the Discord Developer Portal
Go to discord.com/developers/applications → create a new application → go to the Bot section → enable the bot → copy the Bot Token.
Under Privileged Gateway Intents, enable:
- Message Content Intent
- Server Members Intent (optional)
Step 2: Invite the Bot to Your Server
In OAuth2 → URL Generator, select scopes bot and applications.commands, with Send Messages and Read Message History permissions. Use the generated URL to invite the bot to your server.
Step 3: Configure the Plugin in .mcp.json
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@claude-plugins/discord"],
"env": {
"DISCORD_BOT_TOKEN": "YOUR_TOKEN_HERE",
"DISCORD_CHANNEL_ID": "CHANNEL_ID",
"DISCORD_ALLOWED_USER_IDS": "YOUR_DISCORD_USER_ID"
}
}
}
}
For the DISCORD_CHANNEL_ID: enable Developer Mode in Discord (Settings → Advanced → Developer Mode) and right-click the channel → Copy ID.
Step 4: Launch with the --channels Flag
claude --channels plugin:discord@claude-plugins-official
Option C: Fakechat (Perfect for Testing Without Any External Setup)
Anthropic includes a demo channel that opens a chat interface at localhost — no external service configuration needed:
claude --channels plugin:fakechat@claude-plugins-official
A URL opens in your browser. Perfect for understanding how the system works before connecting Telegram or Discord.
Advanced Automation: External Webhooks
Once your channel is configured, you can have any external tool fire events into your Claude session. Real examples:
GitHub Actions → notify on build failure:
- name: Notify Claude on failure
if: failure()
run: |
curl -X POST "${{ secrets.CLAUDE_WEBHOOK_URL }}" \
-d '{"event": "build_failed", "branch": "${{ github.ref_name }}"}'
Monitoring alerts: Configure Datadog, Grafana, or any alerting system to send webhooks to your channel. Claude receives the alert and can analyze it automatically.
Permission Management: The Most Important Security Point
When Claude is listening to messages from an external channel and you're not present, some actions may require approval (writing files, running commands). By default, Claude stops and waits without notifying you.
You have two options:
Option 1 (recommended): Pre-configure which actions Claude can take without asking you, using Claude Code's permission configuration file.
Option 2 (for trusted environments): Use --dangerously-skip-permissions only if you fully trust the types of tasks you're automating and who has access to the channel.
Never share your bot token publicly or commit it to a code repository.
Need Someone to Set It Up and Integrate It Into Your Workflow?
Setting up Claude Channels may look simple in a tutorial, but adapting it to a real team environment — with multiple users, permission policies, CI/CD integration, and existing tools — is a different challenge entirely.
That's what I do: I integrate AI agents into real workflows with secure, scalable configurations.
If you'd like to talk about how Claude Channels could fit into your team or project, reach out on WhatsApp. No commitment, no cost.