{"id":75287,"date":"2026-10-23T01:10:05","date_gmt":"2026-10-22T22:10:05","guid":{"rendered":"https:\/\/lwallet.com.ua\/?p=75287"},"modified":"2026-10-23T01:10:05","modified_gmt":"2026-10-22T22:10:05","slug":"claude-code-channels","status":"publish","type":"post","link":"https:\/\/lwallet.com.ua\/en\/claude-code-channels\/","title":{"rendered":"Set up Claude Code Channels for Telegram or Discord"},"content":{"rendered":"\r\n\r\n\r\n<style>\r\n#claude-channels-telegram-tools,#claude-channels-discord-tools{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}\r\n#claude-channels-telegram-tools table,#claude-channels-discord-tools table{width:100%;min-width:680px;table-layout:fixed}\r\n#claude-channels-telegram-tools td,#claude-channels-discord-tools td{vertical-align:top;word-break:normal;overflow-wrap:normal;hyphens:none}\r\n#claude-channels-telegram-tools td:first-child,#claude-channels-discord-tools td:first-child{width:35%}\r\n<\/style>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In March 2026, Anthropic introduced <a href=\"https:\/\/code.claude.com\/docs\/en\/channels\" rel=\"nofollow noopener\" target=\"_blank\">Claude Code Channels<\/a>, a feature that lets you work with Claude Code through Telegram or Discord. Messages from the messaging app arrive in an <strong>open session on your computer<\/strong>, where Claude already has access to your project and its working context.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Channels is in <em>research preview<\/em>, an early testing stage, so its commands and protocol may still change. We set up Telegram and Discord and tested them in practice; this guide covers installation, account pairing, and common problems. Since we previously published an <a href=\"https:\/\/lwallet.com.ua\/en\/openclaw-2-0-setup\/\">OpenClaw setup guide<\/a>, we also explain which tasks each tool is suited to.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">What is Claude Code Channels, and what can you use it for?<\/h2>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">How it works<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A channel runs through an MCP server that Claude Code launches on your computer as a separate child process. MCP (<em>Model Context Protocol<\/em>) is a standard for connecting external tools to an AI agent. Here, the server passes messages between the messaging app and your active Claude Code session.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When you message your Telegram bot, the plugin receives the message through the Telegram Bot API using <em>long polling<\/em>: Telegram keeps a request open until a message arrives or the request times out. The plugin forwards the text to the session as an MCP event over <code>stdio<\/code>, the process&#8217;s standard input and output streams. Claude reads files, analyzes code, or runs commands according to your request, then sends its response through the same channel.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]The session and project files stay on your computer, but <strong>Claude Code sends Anthropic the data needed to complete the task<\/strong>, including file contents it reads. This is also how it works without a messaging app connected. Bot messages and responses pass through Telegram or Discord servers as well, so do not send passwords, API keys, or seed phrases in these chats.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What you can do through Channels<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Through your messaging app, you give tasks to the same Claude Code session you were using in the terminal. Within the permissions granted to that session, you can:<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li>read and edit project files;<\/li>\r\n\r\n\r\n\r\n<li>run terminal commands;<\/li>\r\n\r\n\r\n\r\n<li>receive replies in the same chat;<\/li>\r\n\r\n\r\n\r\n<li>send and receive files: Telegram displays images with a preview, while documents and attachments have separate limits, listed below;<\/li>\r\n\r\n\r\n\r\n<li>add emoji reactions to messages.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The terminal shows the incoming message and the <code>reply<\/code> tool call, while the response text appears in your messaging app.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Channels vs. OpenClaw: what is the difference?<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-1024x573.jpg\" alt=\"Initial OpenClaw setup detecting an installed copy of Claude Code in the terminal\" class=\"wp-image-75216\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic2-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Initial OpenClaw setup: it has detected Claude Code but has not yet verified its authentication status.<\/figcaption><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>OpenClaw is a separate agent<\/strong> with its own working directory (<em>workspace<\/em>). Channels connects a messaging app to an open Claude Code session in your project. For example, if you ask, \u201cCheck why the tests in <code>api\/users.test.ts<\/code> are failing,\u201d Claude works with the files in the project directory where the session is running.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In a typical Telegram or Discord workflow, you send a task, and Claude completes it and replies. <strong>The session must stay active for this to work<\/strong>: ending it or shutting down the computer disconnects the bot.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">You can configure OpenClaw to start tasks on a schedule or in response to events using Heartbeat, Automations, and Hooks. In earlier versions, the scheduler was called Cron; the <code>openclaw cron<\/code> command is retained for compatibility. The agent can run around the clock on a VPS, a rented remote server. It supports dozens of communication channels, a memory system, and <em>skills<\/em>: sets of instructions for specific tasks. Additional skills are available in the ClawHub catalog.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Claude Code Channels is convenient for working remotely with an open project: you can give the agent a task from your phone and review the result on your computer later. OpenClaw suits ongoing automation where the agent needs to start tasks itself and use a range of integrations.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]As of October 2026, the official messaging plugins support <strong>Telegram, Discord, and iMessage<\/strong>, with iMessage available only on macOS. OpenClaw also supports WhatsApp, Slack, Signal, and other platforms. You can build a custom Channels plugin using <a href=\"https:\/\/code.claude.com\/docs\/en\/channels-reference\" rel=\"nofollow noopener\" target=\"_blank\">Anthropic&#8217;s instructions<\/a>; during research preview, the <code>--dangerously-load-development-channels<\/code> flag is used to test these channels locally. In organizations, an administrator can also define the list of approved plugins.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">What you need before you start<\/h2>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">An up-to-date version of Claude Code<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Check your installed Claude Code version:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude --version<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Use an up-to-date version of Claude Code for this guide, since older releases may not support all the features in the current plugins. If you installed it using the official script, update it with the command below, then check <code>claude --version<\/code> again. For a fresh installation, follow the next section.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude update<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">A Claude subscription or Console API key<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Channels requires Anthropic authentication: a <code>claude.ai<\/code> account with a subscription that includes Claude Code, or an <strong>Anthropic Console API key<\/strong>. Channels is not available through Amazon Bedrock, Google Cloud (Vertex AI), or Microsoft Foundry. On individual Pro and Max plans, you can connect channels straight away. For Team and Enterprise, the organization owner must first enable Channels in the settings. The relevant managed setting is <code>channelsEnabled<\/code>, which an administrator configures centrally. Console organizations must also enable it if they deploy managed settings.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Bun to run the plugins<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The prebuilt Telegram and Discord plugins run on Bun, a JavaScript runtime. <strong>These plugins specifically require Bun<\/strong>; having Node.js installed is not enough.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Check whether Bun is installed:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>bun --version<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If the terminal cannot find the command, install Bun for your operating system.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]On Linux, installing Bun requires the <code>unzip<\/code> package. On Ubuntu or Debian, install it with <code>sudo apt install unzip<\/code> if necessary; on other distributions, use the appropriate package manager.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On macOS or Linux, run:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/bun.com\/install | bash<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On Windows, run this in CMD or PowerShell:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>powershell -c \"irm bun.sh\/install.ps1 | iex\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The Windows command calls PowerShell and runs the installation script, so it works in either shell. Once installation is complete, open a new terminal window and run <code>bun --version<\/code> again.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Git for the plugin marketplace<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-1024x573.jpg\" alt=\"Checking the installed Git version with git --version in PowerShell\" class=\"wp-image-75228\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic3-3.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The <code>claude-plugins-official<\/code> marketplace is downloaded from GitHub, so adding or updating it requires <strong>Git to be available on <code>PATH<\/code><\/strong>. Check this in your regular terminal:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>git --version<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If the command is not found on Windows, install <a href=\"https:\/\/git-scm.com\/install\/windows\" rel=\"nofollow noopener\" target=\"_blank\">Git for Windows<\/a>, close the terminal, open a new one, and check again. You should see a version number. On macOS or Linux, likewise install Git for your system if it is not already present. Claude Code itself can run commands through PowerShell on Windows without Git Bash, but the <code>git<\/code> command is still needed to clone the plugin marketplace.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">A Telegram bot<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-1024x573.jpg\" alt=\"OpenClaw Telegram bot showing a pairing code and access approval command\" class=\"wp-image-75234\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic4-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">An example of pairing Telegram with OpenClaw. Claude Code Channels uses a different command, provided below.<\/figcaption><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For Telegram, you need a token for a bot created through <a href=\"https:\/\/t.me\/BotFather\" rel=\"nofollow\">@BotFather<\/a>. This step is illustrated in the <a href=\"https:\/\/lwallet.com.ua\/en\/openclaw-2-0-setup\/#Telegram_bot_through_BotFather\">section on creating a Telegram bot in our OpenClaw guide<\/a>. The image above shows the later pairing step for OpenClaw specifically; for Claude Code Channels, follow the separate instructions below.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">A Discord application and bot<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For Discord, create an <em>Application<\/em> in the Developer Portal and configure its bot. In addition to the token, you will need a server to invite the bot to and access to its settings.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]<strong>Enter <code>claude ...<\/code> commands in your regular terminal.<\/strong> Commands starting with <code>\/<\/code>, such as <code>\/plugin install<\/code> or <code>\/telegram:configure<\/code>, are entered inside a running Claude Code session. The <code>set<\/code> examples below are specifically for CMD, not PowerShell.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Installing Claude Code<\/h2>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Installation on Windows<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 1.<\/strong> Open Command Prompt: press <code>Win+R<\/code>, type <code>cmd<\/code>, and press <code>Enter<\/code>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 2.<\/strong> Run the installation command:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/claude.ai\/install.cmd -o install.cmd &amp;&amp; install.cmd &amp;&amp; del install.cmd<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Run this command in CMD. If you use PowerShell, run the following instead:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>irm https:\/\/claude.ai\/install.ps1 | iex<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 3.<\/strong> Wait for installation to finish, close the terminal, and open a new CMD window. Check whether the command is available:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude --version<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If a version number appears, continue to step 6.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The message <code>is not recognized<\/code> means the terminal cannot find the executable. If the installer completed successfully, check the file path and the <code>PATH<\/code> environment variable by following the steps below.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 4.<\/strong> Find <code>claude.exe<\/code> by running this in CMD:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>where \/r \"%USERPROFILE%\" claude.exe<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The search checks the folders in your user profile. For an installation using the official script, look for <code>claude.exe<\/code> in <code>.local\\bin<\/code>. Its path usually looks like this:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>C:\\Users\\&lt;username&gt;\\.local\\bin\\claude.exe<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Copy the <strong>folder path, removing <code>\\claude.exe<\/code> from the end<\/strong>: in this example, <code>C:\\Users\\&lt;username&gt;\\.local\\bin<\/code>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 5.<\/strong> Add this folder to your user <code>Path<\/code> variable through Windows settings:<\/p>\r\n\r\n\r\n\r\n<ol class=\"nm-block-list wp-block-list\">\r\n<li>Press <code>Win+R<\/code>, enter <code>rundll32 sysdm.cpl,EditEnvironmentVariables<\/code>, and select <code>OK<\/code>.<\/li>\r\n\r\n\r\n\r\n<li>In the upper part of the window, under <code>User variables<\/code>, select <code>Path<\/code> and click <code>Edit<\/code>.<\/li>\r\n\r\n\r\n\r\n<li>Click <code>New<\/code>.<\/li>\r\n\r\n\r\n\r\n<li>Paste the path to the folder you found, for example <code>C:\\Users\\&lt;username&gt;\\.local\\bin<\/code>.<\/li>\r\n\r\n\r\n\r\n<li>Save the changes by clicking <code>OK<\/code> in each open dialog.<\/li>\r\n\r\n\r\n\r\n<li>Close CMD and open a new window so it picks up the updated <code>PATH<\/code> value.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<strong>Do not append the path using <code>setx PATH \"%PATH%;...\"<\/code>.<\/strong> The <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/administration\/windows-commands\/setx\" rel=\"nofollow noopener\" target=\"_blank\"><code>setx<\/code> command has a 1024-character limit<\/a>, which can truncate a long <code>PATH<\/code> value. If entries are lost, other programs may stop launching from the terminal, so use the graphical interface here.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 6.<\/strong> Open your project folder in File Explorer, type <code>cmd<\/code> in the address bar, and press <code>Enter<\/code>. In the CMD window that opens in this folder, start Claude Code:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Installation on macOS<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 1.<\/strong> Open Terminal and install Claude Code:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/claude.ai\/install.sh | bash<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 2.<\/strong> Open a new terminal window, change to your project folder, and start Claude Code:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Step 3.<\/strong> Sign in through your browser, following the \u201cBrowser sign-in\u201d section below.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Installation on Linux<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Linux uses the same installation script as macOS. Run this in your terminal:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/claude.ai\/install.sh | bash<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After installation, open a new terminal window, change to your project folder, run <code>claude<\/code>, and sign in through your browser.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]If the <code>claude<\/code> command is not recognized, check whether the installation folder has been added to <code>PATH<\/code>. If the relevant entry is already in your shell configuration file, reload it: run <code>source ~\/.bashrc<\/code> for Bash or <code>source ~\/.zshrc<\/code> for Zsh.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Browser sign-in<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you are not signed in and have not set an API key, Claude Code will ask you to choose a sign-in method when you first launch it:<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><strong>Claude account with subscription<\/strong> \u2014 an account with a Pro, Max, Team, or Enterprise subscription;<\/li>\r\n\r\n\r\n\r\n<li><strong>Anthropic Console account<\/strong> \u2014 API usage with separate billing;<\/li>\r\n\r\n\r\n\r\n<li><strong>3rd-party platform<\/strong> \u2014 Amazon Bedrock, Microsoft Foundry, or Vertex AI.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To connect using a subscription, select <strong>Claude account with subscription<\/strong> and follow the browser sign-in steps below. If you plan to use a Console API key, follow the separate instructions at the end of this section. Third-party platform authentication is not supported for Channels.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you choose to sign in with a Claude account, make sure your subscription includes Claude Code access.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After choosing the first option, wait for the authorization page to open in your browser, click <code>Authorize<\/code>, and return to the terminal. If the browser does not open automatically, press <code>c<\/code> to copy the sign-in URL and open it manually. If the browser displays a code after you sign in, paste it into the terminal at the <code>Paste code here if prompted<\/code> prompt.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When the terminal shows <code>Login successful<\/code>, press <code>Enter<\/code> to continue to your Claude Code session.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]After sign-in, Claude Code may ask whether you trust the folder. Verify that it is your project before confirming; you can check the active account and authentication method with <code>\/status<\/code>.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">If you are using a Console API key<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To connect Channels with an API key, create one in <a href=\"https:\/\/platform.claude.com\/settings\/keys\" rel=\"nofollow noopener\" target=\"_blank\">Anthropic Console<\/a> and make sure API billing is configured for your organization. Exit Claude Code with <code>\/exit<\/code> and set the environment variable in your shell. Replace <code>&lt;API_key&gt;<\/code> with your own key, without the angle brackets.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>CMD on Windows:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>set \"ANTHROPIC_API_KEY=&lt;API_key&gt;\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>PowerShell:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$env:ANTHROPIC_API_KEY=\"&lt;API_key&gt;\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Bash or Zsh on macOS and Linux:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_API_KEY=\"&lt;API_key&gt;\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Run <code>claude<\/code> in the same terminal window. If it asks whether to use the key, approve it and check the result with <code>\/status<\/code>. <strong>Once the key is approved, requests are billed through the API<\/strong>, even if you also have a Claude subscription. To return to your subscription, remove the variable from the current window with <code>set ANTHROPIC_API_KEY=<\/code> in CMD, <code>Remove-Item Env:ANTHROPIC_API_KEY<\/code> in PowerShell, or <code>unset ANTHROPIC_API_KEY<\/code> in Bash\/Zsh, then restart Claude Code.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Setting up the Telegram channel<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-1024x573.jpg\" alt=\"Telegram and Claude logos for the Claude Code Channels setup guide\" class=\"wp-image-75240\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic5-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you have already connected OpenClaw to Telegram, some steps will be familiar. Create a <strong>separate bot<\/strong> for Channels: multiple processes receiving messages through <code>getUpdates<\/code> with the same token will conflict, so do not reuse one token for OpenClaw and Claude Code Channels.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 1. Create a bot through @BotFather<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open <a href=\"https:\/\/t.me\/BotFather\" rel=\"nofollow\">@BotFather<\/a> in Telegram and send the <code>\/newbot<\/code> command.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">BotFather will ask for:<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><strong>Name<\/strong> \u2014 the name displayed in the chat; it can contain spaces;<\/li>\r\n\r\n\r\n\r\n<li><strong>Username<\/strong> \u2014 a unique bot username ending in <code>bot<\/code>, such as <code>my_claude_code_bot<\/code>.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]BotFather will reply with a token such as <code>123456789:AAHfiqksKZ8...<\/code>. Copy the entire value, including the number and colon at the beginning. <strong>The token gives control over the bot<\/strong>, so protect it as carefully as a password.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 2. Install the Telegram plugin<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In your open Claude Code session, install the <a href=\"https:\/\/github.com\/anthropics\/claude-plugins-official\/blob\/main\/external_plugins\/telegram\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">official Telegram plugin<\/a>:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/plugin install telegram@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Select <code>Install for you (user scope)<\/code> to install the plugin for your user account and make it available across projects.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If Claude Code reports that the <code>claude-plugins-official<\/code> marketplace was not found, add it with the following command, then retry the installation:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/plugin marketplace add anthropics\/claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If the marketplace is already added but you see <code>Plugin ... not found in marketplace<\/code>, refresh its catalog and run the installation command again:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/plugin marketplace update claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After installation, apply the changes to make the plugin commands available:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/reload-plugins<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 3. Save the bot token<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Run the following command in Claude Code, replacing <code>&lt;token&gt;<\/code> with your bot token. Do not include the angle brackets.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/telegram:configure &lt;token&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The command saves the token to <code>~\/.claude\/channels\/telegram\/.env<\/code>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you see <code>Unknown skill: telegram:configure<\/code>, open <code>\/plugin<\/code> and check that the Telegram plugin is installed and enabled. Run <code>\/reload-plugins<\/code> again or restart Claude Code. Once the plugin is available, you can also set the token using either of the methods below; use only one of them.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Option A: an environment variable.<\/strong> Exit Claude Code with <code>\/exit<\/code>, then run the command below in CMD before starting it again. Replace <code>&lt;BotFather_token&gt;<\/code> with your token without angle brackets, but keep the outer double quotes.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>set \"TELEGRAM_BOT_TOKEN=&lt;BotFather_token&gt;\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Option B: a <code>.env<\/code> file.<\/strong> Create the folder by running this in CMD:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>mkdir \"%USERPROFILE%\\.claude\\channels\\telegram\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open Notepad and create a file containing a single line:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>TELEGRAM_BOT_TOKEN=&lt;BotFather_token&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Save the file as <code>%USERPROFILE%\\.claude\\channels\\telegram\\.env<\/code>, replacing <code>&lt;BotFather_token&gt;<\/code> in its contents with your token, without angle brackets. In Notepad, select <strong>All files<\/strong> as the file type so it does not add a <code>.txt<\/code> extension: the filename must be exactly <code>.env<\/code>. If you used the environment variable in option A, launch Claude Code in the same CMD window; a value set with <code>set<\/code> applies only to that window and processes started from it.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 4. Start Claude Code with channels enabled<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If Claude Code is still running, exit it with <code>\/exit<\/code>. In the same terminal window, change to the project directory you want to use and start Claude Code with the Telegram channel:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude --channels plugin:telegram@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On startup, look for the notice that <code>plugin:telegram@claude-plugins-official<\/code> is enabled, and check that there is no <code>1 MCP server failed<\/code> error. <strong>A normal launch starts a new conversation in the current directory.<\/strong> To resume the latest conversation in this project, add <code>--continue<\/code>: <code>claude --continue --channels plugin:telegram@claude-plugins-official<\/code>. You can use the same flag when starting the Discord channel.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]<strong>Include <code>--channels<\/code> every time you start a session that should receive Telegram messages.<\/strong> Installing the plugin and saving the token alone is not enough.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you see <code>1 MCP server failed<\/code>, check that Bun is available by running <code>bun --version<\/code> in the same terminal window, and open <code>\/mcp<\/code> to inspect the server status. On Windows, check Git Bash if the error specifically refers to it. The <code>git<\/code> command is also needed to download the plugin marketplace, even when Claude Code itself uses PowerShell.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 5. Pair your account<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Find your bot in Telegram. If a <code>Start<\/code> button appears, tap it, then send a message such as \u201cHi\u201d if needed. The bot should reply with a six-character <em>pairing<\/em> code.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If there is no reply, return to the terminal and check that the session was started with <code>--channels<\/code> and that the MCP server has not failed to start.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In your Claude Code session, enter:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/telegram:access pair abc123<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Replace <code>abc123<\/code> with the code from the bot&#8217;s message. If Claude Code asks for permission to access the channel configuration files, check which files it is accessing and approve the required action.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]The pairing code is valid for one hour. If it expires, message the bot again to get a new one.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Once pairing is confirmed, the next message from your account will be forwarded to Claude Code as a request.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 6. Restrict access<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The default policy is <code>pairing<\/code>: anyone who messages the bot can receive a pairing code, but access is granted only after that code is approved in Claude Code. After pairing your account, switch the bot to the <strong>list of approved users, or <code>allowlist<\/code><\/strong>:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/telegram:access policy allowlist<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The bot will accept messages only from accounts whose numeric IDs are on the list; all other messages are silently ignored. If you have paired only your own account, only you will have access.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The plugin determines your ID automatically during pairing. If you need it separately, you can find your numeric Telegram ID through <a href=\"https:\/\/t.me\/userinfobot\" rel=\"nofollow\">@userinfobot<\/a>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Your first message: testing the connection<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Send the bot a short request. If the first <code>reply<\/code> tool call needs permission, the official plugin forwards the prompt to Telegram with <code>See more<\/code>, <code>Allow<\/code>, and <code>Deny<\/code> buttons; it also remains available in the terminal. Open <code>See more<\/code>, check the action, and approve sending the reply. Claude Code applies whichever answer it receives first. In the terminal, you can also select <code>Always allow<\/code> for <code>reply<\/code> so you do not need to approve every subsequent message. <strong>The test is complete when Claude&#8217;s reply appears in your Telegram chat.<\/strong><\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What the Telegram channel can do<\/h3>\r\n\r\n\r\n\r\n<figure id=\"claude-channels-telegram-tools\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Tool<\/strong><\/td><td><strong>Function<\/strong><\/td><\/tr><tr><td><code>reply<\/code><\/td><td>Sends messages to the chat. The <code>reply_to<\/code> parameter specifies which message to reply to, while <code>files<\/code> contains the paths to files you want to send. JPG, PNG, GIF, and WEBP images are sent with an inline preview; other files are sent as documents. When the bot uploads new files from your computer through the standard Bot API, the limits are <strong>10 MB for photos<\/strong> and <strong>50 MB for documents<\/strong>.<\/td><\/tr><tr><td><code>react<\/code><\/td><td>Adds an emoji reaction to a message. Only emoji from Telegram&#8217;s fixed list are supported.<\/td><\/tr><tr><td><code>edit_message<\/code><\/td><td>Edits a message previously sent by the bot. For example, it can replace a \u201cWorking\u2026\u201d message with the completed result.<\/td><\/tr><tr><td><code>download_attachment<\/code><\/td><td>Saves an attachment from an incoming message to the <code>inbox<\/code> folder on your computer using <code>attachment_file_id<\/code>. The standard cloud Bot API supports downloads of files <strong>up to 20 MB<\/strong>.<\/td><\/tr><\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When the bot receives a message, it briefly shows a \u201ctyping\u2026\u201d status. This confirms that the request has arrived, but the status may disappear before the response is ready.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]The Telegram Bot API does not provide tools for reading or searching chat history, so the plugin receives messages as they arrive. It immediately saves photos you send to <code>~\/.claude\/channels\/telegram\/inbox\/<\/code>. Other files can be downloaded on request through <code>download_attachment<\/code> if the incoming message includes their identifier. <strong>This tool does not provide access to chat history.<\/strong> Through the standard cloud Bot API, the bot can download a file of up to 20 MB from Telegram; other file-transfer limits are listed in the <a href=\"https:\/\/core.telegram.org\/bots\/api#sending-files\" rel=\"nofollow noopener\" target=\"_blank\">Telegram documentation<\/a>.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Setting up Discord: step-by-step instructions<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-1024x573.jpg\" alt=\"Discord and Claude logos for the Discord channel setup instructions\" class=\"wp-image-75246\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic6-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For Discord, create an application in the Developer Portal, configure its bot, and invite it to a server. The plugin lets Claude <strong>read message history<\/strong> in an accessible chat or channel and download attachments on request.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 1. Create an application and configure the bot<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-1024x573.jpg\" alt=\"Message Content Intent and Save Changes in an earlier Discord Developer Portal interface\" class=\"wp-image-75252\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic7-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Message Content Intent in an earlier version of the Discord Developer Portal interface.<\/figcaption><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open the <a href=\"https:\/\/discord.com\/developers\/applications\" rel=\"nofollow noopener\" target=\"_blank\">Discord Developer Portal<\/a>, click <code>New Application<\/code>, and give the application a name. If an introductory questionnaire appears first, choose the option to create a bot.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open <code>Bot<\/code> in the sidebar and give the bot a username.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Under <code>Privileged Gateway Intents<\/code>, enable <strong><code>Message Content Intent<\/code><\/strong> and click <code>Save Changes<\/code> to save the setting. This permission is needed to read message text in server channels; without it, some messages will arrive with empty content. The <code>Presence Intent<\/code> and <code>Server Members Intent<\/code> toggles shown enabled in the older screenshot are not required by the official Claude Code Channels plugin.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 2. Generate a token<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On the same <code>Bot<\/code> page, click <code>Reset Token<\/code> and complete any verification Discord requests. <strong>Copy and save the token<\/strong>: you will not be able to view that value again.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 3. Invite the bot to your server<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To send the bot direct messages (<em>DMs<\/em>), you need to share a server with it. Open <code>OAuth2 \u2192 URL Generator<\/code>, select <code>bot<\/code>, and enable the following under <code>Bot Permissions<\/code>:<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><code>View Channels<\/code>;<\/li>\r\n\r\n\r\n\r\n<li><code>Send Messages<\/code>;<\/li>\r\n\r\n\r\n\r\n<li><code>Send Messages in Threads<\/code>;<\/li>\r\n\r\n\r\n\r\n<li><code>Read Message History<\/code>;<\/li>\r\n\r\n\r\n\r\n<li><code>Attach Files<\/code>;<\/li>\r\n\r\n\r\n\r\n<li><code>Add Reactions<\/code>.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Set <code>Integration type<\/code> to <code>Guild Install<\/code>. Copy the generated URL, open it, and add the bot to your server.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]If you do not have a server, create one first using the \u201c+\u201d button in Discord&#8217;s left sidebar.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Not all of these permissions are needed for direct messages, but they will be useful if you connect server channels later. The <a href=\"https:\/\/github.com\/anthropics\/claude-plugins-official\/blob\/main\/external_plugins\/discord\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">plugin instructions<\/a> recommend selecting them at this stage.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 4. Install the plugin<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In your open Claude Code session, install the Discord plugin:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/plugin install discord@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Select <code>Install for you (user scope)<\/code>. If the marketplace or plugin is not found, use the commands from step 2 of the Telegram section. Once installation succeeds, apply the changes:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/reload-plugins<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 5. Save the bot token<\/h3>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/discord:configure &lt;token&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Run the command above in Claude Code, replacing <code>&lt;token&gt;<\/code> with the value obtained in step 2. Do not include angle brackets. The token will be saved to <code>~\/.claude\/channels\/discord\/.env<\/code>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To run several bots on one computer with different tokens and separate user allowlists, set <code>DISCORD_STATE_DIR<\/code> to a different directory for each instance.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 6. Restart Claude Code with the Discord channel<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Exit Claude Code with <code>\/exit<\/code>, then run the following in your terminal from the project directory you want to use:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude --channels plugin:discord@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Step 7. Pair your account and restrict access<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-1024x573.jpg\" alt=\"Pairing a Discord account with Claude Code using discord:access pair\" class=\"wp-image-75255\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic8.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">An example of Discord pairing. Enable the allowlist policy separately using the command in the instructions.<\/figcaption><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Send the bot a direct message in Discord. Once you receive a pairing code, approve it in your Claude Code session:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/discord:access pair &lt;code&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Replace <code>&lt;code&gt;<\/code> with the value from the bot&#8217;s message, without angle brackets.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After pairing, switch the bot to the user allowlist:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/discord:access policy allowlist<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Now send the bot a short request to test the connection. If Claude Code asks for permission to reply, open <code>See more<\/code> in your Discord DM and confirm that the action is to send a message before clicking <code>Allow<\/code>. You can also answer the prompt in the terminal. <strong>The connection is working when Claude&#8217;s reply appears in your DM with the bot.<\/strong><\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What the Discord channel can do<\/h3>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-1024x573.jpg\" alt=\"Claude Code bot replying in Discord with a list of supported tasks\" class=\"wp-image-75261\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic9-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<figure id=\"claude-channels-discord-tools\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Tool<\/strong><\/td><td><strong>Function<\/strong><\/td><\/tr><tr><td><code>reply<\/code><\/td><td>Sends messages and attaches up to 10 files, each up to 25 MB.<\/td><\/tr><tr><td><code>react<\/code><\/td><td>Adds a reaction to a message. Supports Unicode emoji and custom server emoji in the <code>&lt;:name:id&gt;<\/code> format.<\/td><\/tr><tr><td><code>edit_message<\/code><\/td><td>Edits messages previously sent by the bot.<\/td><\/tr><tr><td><code>fetch_messages<\/code><\/td><td>Retrieves up to 100 previous messages per call and returns them from oldest to newest.<\/td><\/tr><tr><td><code>download_attachment<\/code><\/td><td>Downloads an attachment from the message with the specified ID to <code>~\/.claude\/channels\/discord\/inbox\/<\/code>.<\/td><\/tr><\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To find an attachment, Claude can first read the available messages using <code>fetch_messages<\/code>, then download the selected file with <code>download_attachment<\/code>.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Using several channels at once<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">You can connect Telegram and Discord to one session by listing the plugins separated by spaces:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The channels work independently: Claude sends its response <strong>through the platform the message came from<\/strong>.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Updating installed plugins<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Updating Claude Code and updating a plugin are separate operations. If you have configured Channels before, exit any active bot sessions with <code>\/exit<\/code> and run the following in your regular terminal:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude plugin marketplace update claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Update only the plugins you have installed:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude plugin update telegram@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>claude plugin update discord@claude-plugins-official<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Then start the session you need with <code>--channels<\/code>. Add <code>--continue<\/code> to resume the previous conversation. In a running session, new plugin files take effect after <code>\/reload-plugins<\/code> or a restart; updating the files on disk does not change the code already loaded. See <a href=\"https:\/\/code.claude.com\/docs\/en\/discover-plugins#update-plugins-now\" rel=\"nofollow noopener\" target=\"_blank\">Anthropic&#8217;s plugin update instructions<\/a> for details.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Background operation: keeping your session connected<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-1024x573.jpg\" alt=\"Illustration of an active Claude Code session for background Telegram and Discord access\" class=\"wp-image-75267\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic10-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For Channels to work, <strong>your Claude Code session must stay active<\/strong>, and the computer must remain on and connected to the network. If you end the process, shut down the computer, or put it to sleep, the bot will stop responding.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">On Windows<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The <code>tmux<\/code> and <code>screen<\/code> utilities are not available in a standard Windows environment, though you can use them in WSL, for example. If you run Claude Code in CMD, leave the window open; you can minimize it when needed.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For round-the-clock operation, you can move Claude Code to a Linux VPS so access to the bot does not depend on your personal computer.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">On macOS, Linux, or a VPS<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On macOS and Linux, you can install <a href=\"https:\/\/github.com\/tmux\/tmux\/wiki\/Getting-Started\" rel=\"nofollow noopener\" target=\"_blank\"><code>tmux<\/code><\/a> or <code>screen<\/code> to keep a program running after the terminal closes. <strong>Before switching to tmux, end the previous session using this bot with <code>\/exit<\/code><\/strong> so two processes do not use the same token. If <code>tmux<\/code> is already installed, run the following from the same project directory:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>tmux new-session -s claude 'claude --continue --channels plugin:telegram@claude-plugins-official'<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Wait for Claude Code to start, respond to the initial prompts, check the active authentication method with <code>\/status<\/code>, and wait for a reply from the bot. To leave the process running in the background, press <strong><code>Ctrl+B<\/code>, release the keys, then press <code>D<\/code><\/strong>. Once you are back at the shell prompt, you can close the terminal or end the SSH connection: the bot will keep working while the computer is on, connected to the network, and awake. To reattach to the session, run:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>tmux attach -t claude<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">You can run Claude Code on a Linux VPS in the same way: install the required components on the server, open the project there, and start the session through <code>tmux<\/code>. Claude Code will continue running on the server after you disconnect from SSH.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]If an action needs permission, Claude Code will wait for your response. <strong>The official Telegram and Discord plugins send tool approval prompts to your direct messages<\/strong> (<em>permission relay<\/em>), so you can approve or deny the action from your phone. Tap <code>See more<\/code>, review the details, and choose <code>Allow<\/code> or <code>Deny<\/code>. If the prompt does not appear in the chat app, you can answer it in the terminal; also check your Claude Code and plugin versions.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<strong>The <code>--dangerously-skip-permissions<\/code> flag lets most actions run without individual approval.<\/strong> Use it only in an isolated environment with limited data access, such as a properly configured Docker container or a separate VPS. Without approval prompts, the agent can modify and delete files it can access and run commands with your user account&#8217;s privileges. We do not recommend this mode on a personal computer containing passwords, keys, and wallet files.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Common problems and how to fix them<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If the channel is not working, first check the Claude Code launch command, confirm Bun is available with <code>bun --version<\/code>, and make sure no other program or session is using the bot token. The following sections cover the most common causes of failure.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">The bot does not respond after setup<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Check whether another Claude Code or OpenClaw session is using the same bot token. <strong>Concurrent <code>getUpdates<\/code> requests with one token conflict<\/strong>, which can stop the intended session from receiving messages.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">End any extra processes using this token, then restart the session you want with <code>--channels<\/code>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">The session was started without &#8211;channels<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;info&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-info&#8221; style=&#8221;rounded&#8221;]During research preview, <code>--channels<\/code> may not appear in <code>claude --help<\/code> even though it works. Check startup notices and the channel status rather than relying only on the help listing.[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Check the launch command: without <code>--channels<\/code>, messages will not be forwarded to the session even if the plugin and token are already configured. This flag explicitly determines which channels can send Claude events during the current session.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Discord messages arrive without text<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open <code>Bot \u2192 Privileged Gateway Intents<\/code> in the Developer Portal and check <code>Message Content Intent<\/code>. After enabling it, click <code>Save Changes<\/code>, restart the session with the Discord channel, and send a new test message.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">The pairing code is not accepted<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Approve the code in Claude Code using <code>\/telegram:access pair &lt;code&gt;<\/code> or <code>\/discord:access pair &lt;code&gt;<\/code>. Sending it back to the bot in the chat app will not pair your account.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">A message was sent while the session was closed<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A closed Claude Code session does not process requests. Telegram keeps events the bot has not yet received, including new messages, for <strong>no more than 24 hours<\/strong>, so some messages may arrive after you start it again. The Discord plugin does not automatically forward missed messages to the agent on startup, although history can be read with a separate tool. After restarting, check whether the request was completed and send it again if necessary.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Several projects on one computer<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If several projects are open on the same computer, disable the Telegram plugin at user scope. Set the following in <code>~\/.claude\/settings.json<\/code>:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{ \"enabledPlugins\": { \"telegram@claude-plugins-official\": false } }<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Enable it <strong>in the settings for the project you want to use<\/strong>, <code>.claude\/settings.json<\/code>, by setting the same key to <code>true<\/code>. This limits automatic plugin loading in other projects, but <strong>two sessions in one project must still not use the same token at the same time<\/strong>. If the files already contain other settings, preserve them and add or change only the relevant key.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">The channel does not start on the first attempt<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Restart Claude Code, check its version, and run <code>bun --version<\/code> in the same terminal. In our tests, restarting resolved most of these failures. If the error persists, inspect the server status through <code>\/mcp<\/code> and read the error message to identify which stage of the connection is failing.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Security<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-1024x573.jpg\" alt=\"Padlock with the Claude logo illustrating channel access controls\" class=\"wp-image-75273\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic11-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Channel configuration includes several separate access controls.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">An approved user can pass the agent a file or text containing someone else&#8217;s instructions. Attempts to override the intended task in this way are called <em>prompt injection<\/em>: a message might, for example, try to make the agent read secrets or run an unrelated command. Combine <code>allowlist<\/code> with action review and limited file access; we discuss examples in the <a href=\"https:\/\/lwallet.com.ua\/en\/openclaw-2-0-setup\/#Prompt_injection\">prompt injection section of our OpenClaw guide<\/a>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Explicit channel activation.<\/strong> For an MCP server&#8217;s events to reach the session, you must both add it to <code>.mcp.json<\/code> and name it in <code>--channels<\/code> at startup. This determines where Claude can receive messages from; the flag does not verify the safety of the plugin&#8217;s code.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Pairing and the user allowlist.<\/strong> Initial access is approved with a code in Claude Code, after which the <code>allowlist<\/code> policy filters out messages from other accounts. Add only people you trust to work with the session: they will also be able to approve the agent&#8217;s actions through direct messages.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>No open inbound port.<\/strong> The prebuilt Telegram and Discord plugins do not require you to expose a server on your computer to the internet, configure a webhook URL, or set up a reverse proxy. Your computer initiates the connections to the platforms. This reduces the risk associated with an internet-accessible control panel, though bot tokens, your chat account, and agent permissions still need protection.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The consequences of exposed access are illustrated by a <a href=\"https:\/\/securityscorecard.com\/blog\/beyond-the-hype-moltbots-real-risk-is-exposed-infrastructure-not-ai-superintelligence\/\" rel=\"nofollow noopener\" target=\"_blank\">SecurityScorecard study published in February 2026<\/a>: at one stage of its scan, the team found 40,214 OpenClaw instances accessible from the internet. The report also describes remote code execution risks, including CVE-2026-25253. These figures reflect conditions during the study. The prebuilt Channels plugins do not have this kind of exposed control panel, but protection against other forms of compromise is still necessary.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Keep the platform&#8217;s privacy limits in mind, too: conversations with bots pass through the chat service&#8217;s servers. We explain how Telegram chats are protected and how other services differ in our <a href=\"https:\/\/lwallet.com.ua\/en\/messengers-without-phone-number\/#Are_Telegram_conversations_end-to-end_encrypted\">article on messaging privacy<\/a>.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">How we use Channels to work on articles<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-1024x573.jpg\" alt=\"Telegram conversation assigning an article editing task for the Lwallet blog\" class=\"wp-image-75279\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/10\/blog-claude-channels-23-10-2026-content-pic12-1.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We run Claude Code in a project containing our article drafts. When we leave for a meeting, we keep the computer on and the session active so we can send tasks from a phone.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After starting Claude Code with <code>--channels<\/code>, we minimize CMD and send tasks through Telegram on the phone. For example:<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li>\u201cCheck the draft in <code>article-channels.md<\/code> and fix any grammatical errors.\u201d<\/li>\r\n\r\n\r\n\r\n<li>\u201cAdd a security section after the Discord section.\u201d<\/li>\r\n\r\n\r\n\r\n<li>\u201cRead <code>references.md<\/code> and make a short list of the key points.\u201d<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Claude updates the files on our computer and replies in Telegram. In our tests, responses to short requests usually arrived within about a minute, so we could review the result when we returned to our desks.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This setup is sufficient for working during a meeting as long as the computer does not sleep and no one closes CMD. For persistent remote access independent of the work computer, you can run the session on a VPS.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If an action needs approval and the prompt arrives in Telegram, we first tap <code>See more<\/code> and check the command or file path. We then approve or deny the action with <code>Allow<\/code> or <code>Deny<\/code>.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Tips for getting started<\/h2>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Start with Telegram<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">With all prerequisites already installed, connecting Telegram took us about five minutes, compared with 10\u201315 minutes for Discord. Telegram is convenient for personal use because you do not need to create a server or configure a bot invitation.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Protect the session from accidental closure<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On macOS and Linux, run Claude Code through <code>tmux<\/code> if you plan to close the terminal or disconnect from SSH. In CMD on Windows, leave the window open. In either case, the computer must remain on and must not go to sleep.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Remember the allowlist<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Switch the policy to <code>allowlist<\/code> immediately after pairing the intended account so the bot stops issuing pairing codes to other users.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Use one Telegram token in one session<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Do not run several processes that receive messages for the same Telegram bot at once. Use different bots for separate sessions and keep their configurations separate.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Review actions before approving them<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The <code>Allow<\/code> button in your chat app authorizes an action just as approval in the terminal does, so open <code>See more<\/code> first and read the command or file path. <strong>Every user on the <code>allowlist<\/code> can approve the agent&#8217;s actions<\/strong> through direct messages, so review the list periodically.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Combine tools to suit your tasks<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Channels is enough to work with your current project from a phone. If you need Heartbeat, Automations, Hooks, a memory system, and OpenClaw&#8217;s wider range of integrations, you can use the tools together. For Telegram, each needs its own bot with a separate token.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Claude Code Channels limitations<\/h2>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><strong>Preview status.<\/strong> The feature is in research preview, so command syntax and the protocol may change.<\/li>\r\n\r\n\r\n\r\n<li><strong>Anthropic authentication.<\/strong> You need an eligible <code>claude.ai<\/code> account or a Console API key; channels are not available through Bedrock, Vertex AI, or Foundry.<\/li>\r\n\r\n\r\n\r\n<li><strong>Prebuilt integrations.<\/strong> The official messaging plugins support Telegram, Discord, and iMessage, with iMessage available only on macOS. Slack and WhatsApp are not included in this plugin set.<\/li>\r\n\r\n\r\n\r\n<li><strong>Dependence on an active session.<\/strong> Messages are processed while Claude Code is running; check whether requests sent during downtime arrive after startup.<\/li>\r\n\r\n\r\n\r\n<li><strong>Action approvals.<\/strong> If permission is needed, execution waits for a response in the terminal or in Telegram or Discord direct messages.<\/li>\r\n\r\n\r\n\r\n<li><strong>Approved plugin list.<\/strong> The <code>--channels<\/code> flag works with plugins on Anthropic&#8217;s list or a list configured by your organization&#8217;s administrator. The <code>--dangerously-load-development-channels<\/code> flag is available for testing custom channels locally.<\/li>\r\n\r\n\r\n\r\n<li><strong>Paid Claude Code access.<\/strong> The free Claude plan does not include Claude Code; an eligible subscription or API access is required.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Checks before working remotely<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Before stepping away from your computer, run a quick check in the chat you configured:<\/p>\r\n\r\n\r\n\r\n<ol class=\"nm-block-list wp-block-list\">\r\n<li>Ask Claude to name the current directory and make sure the session is working in the correct project.<\/li>\r\n\r\n\r\n\r\n<li>Send a simple request, such as \u201cList the files in the current folder,\u201d and wait for a reply in the chat app.<\/li>\r\n\r\n\r\n\r\n<li>Check that the bot&#8217;s policy is set to <code>allowlist<\/code>. If a tool needs permission, make sure the prompt arrives in your direct messages and you can view its details by tapping <code>See more<\/code>.<\/li>\r\n\r\n\r\n\r\n<li>If you use <code>tmux<\/code>, detach with <code>Ctrl+B<\/code>, then <code>D<\/code>, and repeat the request from your phone. On Windows, minimize CMD and check for a reply in the same way.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If no permission prompt appears during the test, the action may already be allowed by the session settings.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Conclusion<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Claude Code Channels is useful when you want to keep working on a project after stepping away from your computer: you send a task through Telegram or Discord, and the agent carries it out in an active session with access to your files. We recommend Telegram for your first connection because it is easier to configure. <strong>Enable <code>allowlist<\/code> immediately after pairing your account<\/strong> and check that replies and permission prompts arrive.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Consider OpenClaw for automation that needs its own memory system, many integrations, and tasks that start independently on a schedule or in response to events. Claude Code also offers <a href=\"https:\/\/code.claude.com\/docs\/en\/remote-control\" rel=\"nofollow noopener\" target=\"_blank\">Remote Control<\/a> to manage a local session through <code>claude.ai<\/code> or the Claude mobile app, as well as <a href=\"https:\/\/code.claude.com\/docs\/en\/scheduled-tasks\" rel=\"nofollow noopener\" target=\"_blank\">scheduled tasks<\/a>, so your choice depends on the capabilities you need.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When planning remote work, check where the session is running, whether the computer might go to sleep, and who has access to the bot. These settings determine both Channels availability and which actions can be performed through the chat app.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you have questions during setup, leave a comment. Our <a href=\"https:\/\/lwallet.com.ua\/en\/openclaw-2-0-setup\/\">OpenClaw setup guide<\/a> covers autonomous agents, memory, skills, and automation in more detail.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>In March 2026, Anthropic introduced Claude Code Channels, a feature that lets you work with Claude Code through Telegram or Discord. Messages from the messaging app arrive in an open session on your computer, where Claude already has access to your project and its working context. Channels is in research preview, an early testing stage, &hellip;<\/p>\n","protected":false},"author":10,"featured_media":75211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2796],"tags":[],"class_list":["post-75287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides"],"_links":{"self":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/75287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/comments?post=75287"}],"version-history":[{"count":2,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/75287\/revisions"}],"predecessor-version":[{"id":75289,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/75287\/revisions\/75289"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/media\/75211"}],"wp:attachment":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/media?parent=75287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/categories?post=75287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/tags?post=75287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}