Claude Code Channels: управляем AI-агентом из Telegram и Discord
20 марта Anthropic выкатила фичу, которая реально меняет подход к работе с AI-ассистентом. Claude Code теперь можно писать прямо из Telegram или Discord — и он ответит. Не через какой-нибудь костыльный бот а прямо в вашу рабочую сессию, где открыт проект, загружены файлы и сохранен весь контекст.
Фича называется Channels, пока в research preview. Но работает уже сейчас — если знать как настроить.
Что такое Channels и зачем они нужны
Вот представьте: вы на совещании, а CI упал. Или сидите в кафе и вдруг вспомнили что забыли дописать тест. Раньше надо было тащиться к ноутбуку, открывать терминал, запускать Claude Code. Теперь — достаете телефон, пишете боту в Telegram: «Посмотри, почему упали тесты в api/users.test.ts», и Claude разбирается. Прямо на вашей машине, с доступом к реальным файлам проекта.
Channel — это MCP-сервер, который пушит сообщения в уже запущенную сессию Claude Code. Ключевое слово тут: уже запущенную. Не новый облачный инстанс а ваш живой терминал с вашим проектом.
Channels работают только пока сессия Claude Code открыта. Закрыли терминал — бот перестает отвечать. Для фоновой работы надо держать сессию в tmux, screen или чём-то аналогичном.
Что умеет делать Claude через каналы
По сути всё то же самое что и в обычной сессии, но триггером служит ваше сообщение из мессенджера:
- Читать и редактировать файлы проекта
- Запускать команды
- Отвечать вам обратно в тот же чат
- Отправлять файлы и скриншоты (в Telegram — фото с превью, в Discord — аттачи до 25 МБ)
- Реагировать эмодзи на сообщения (да, Claude может поставить вам огонечек 🔥)
В терминале видно что пришло сообщение и что Claude вызвал инструмент reply. Сам текст ответа появляется в мессенджере.
Реакция сообщества
Фича вызвала ажиотаж. Вот что писали в X (Twitter) через несколько часов после релиза:
@WaveTheoryAI: «Написать агенту с телефона, чтобы он пофиксил баг, пока ты на совещании — это реально другой уровень developer experience»
@0xprotovox: «Уже 3 месяца гоняю Claude Code с телефона через Telegram. Шиплю full-stack фичи, фикшу баги, деплою серверы — все с мобилки. Теперь это просто стало офицальным»
@PaulBaier: «Как нетехнарь, вложил 100+ часов в свой проект на выделеном MacBook Pro. Мой персональный AI Daily Briefing тянет рабочую почту, календарь, HubSpot, список задач и даже баланс банковского счета»
Были и скептики. @jasonnewton написал что фича работает нестабильно и ему удалось запустить ее только один раз. @prayag_sonar справедливо заметил, что проект OpenClaw уже давно делает похожее — и даже больше, с поддержкой iMessage, Slack и WhatsApp причем без привязки к активной сессии.
Короче, фича сырая (research preview не просто так), но потенциал огромный. Кто раньше настроит — тот раньше получит суперсилу.
Что нужно перед стартом
Убедитесь что у вас есть:
- Claude Code v2.1.80+ — проверьте версию командой claude --version
- Аккаунт claude.ai — API-ключи и Console не поддерживаются
- Bun — плагины каналов работают на нем. Проверьте: bun --version. Если нет — curl -fsSL https://bun.sh/install | bash
- Подписка Pro или Max — для индивидуальных пользователей каналы доступны по умолчанию
- Team/Enterprise — админ должен явно включить channelsEnabled в настройках организции
Настройка Telegram: пошаговый гайд
Самый популярный вариант для русскоязычных разработчиков, разберем максимально подробно.
Шаг 1. Создаем бота через BotFather
Открываем @BotFather в Telegram. Отправляем /newbot.
BotFather спросит две вещи:
- Name — отображаемое имя (любое, можно с пробелами)
- Username — уникальный хэндл, обязательно заканчивается на bot (например, my_claude_assistant_bot)
В ответ придет токен вида 123456789:AAHfiqksKZ8... — копируем целиком, включая число и двоеточие перед ним.
Шаг 2. Устанавливаем плагин
Запускаем Claude Code и выполняем:
/plugin install telegram@claude-plugins-official
Если Claude Code говорит что плагин не найден, обновите маркетплейс:
/plugin marketplace update claude-plugins-official
Или добавьте его впервые:
/plugin marketplace add anthropics/claude-plugins-official
После установки выполните /reload-plugins чтобы активировать команду конфигурации.
Шаг 3. Передаем токен
/telegram:configure 123456789:AAHfiqksKZ8...
Токен сохранится в ~/.claude/channels/telegram/.env. Можно также задать переменную TELEGRAM_BOT_TOKEN в окружении шелла — она имеет приоритет.
Шаг 4. Перезапускаем с флагом каналов
Выходим из Claude Code и запускаем заново:
claude --channels plugin:telegram@claude-plugins-official
Без --channels бот не подключится. Это осознанное решение — каналы включаются явно на каждую сессию.
Шаг 5. Привязка аккаунта (pairing)
Открываем Telegram, пишем что угодно нашему боту. Бот ответит 6-символьным кодом привязки.
Если бот молчит — проверьте что Claude Code запущен именно с --channels.
Возвращаемся в Claude Code:
/telegram:access pair <код>
Всё, следующее сообщение боту уже дойдет до Claude.
Шаг 6. Закрываем доступ
По умолчанию бот в режиме pairing — любой человек который найдет вашего бота, получит код привязки. Это нужно только для первичной настройки. После привязки переключаем политику:
/telegram:access policy allowlist
Теперь только ваш аккаунт (по numeric ID) может отправлять сообщения.
Узнать свой числовой Telegram ID можно через бота @userinfobot.
Что умеет Telegram-канал
ИнструментЧто делаетreplyОтправляет сообщение в чат. Поддерживаетreply_toдля тредов иfilesдля вложений. Картинки (jpg/png/gif/webp) отправляются с превью, остальное — как документы. Лимит 50 МБ на файлreactСтавит реакцию-эмодзи на сообщение. Только из фиксированого списка Telegramedit_messageРедактирует ранее отправленное ботом сообщение. Удобно для паттерна «Работаю...» -> результат
Бот автоматически показывает «печатает...» в Telegram пока Claude обрабатывает запрос.
У Telegram Bot API нет доступа к истории сообщений и поиску. Бот видит только сообщения которые приходят в реальном времени. Фото скачиваются сразу при получении в ~/.claude/channels/telegram/inbox/, потому что потом их уже не достать.
Настройка Discord: пошаговый гайд
Discord-канал чуть сложнее в настройке из-за необходимости создавать приложение через Developer Portal, но зато дает больше возможностей — историю сообщений и загрузку вложений.
Шаг 1. Создаем приложение и бота
Идем в Discord Developer Portal, жмем New Application, даем имя.
В боковом меню переходим в Bot, задаем юзернейм.
Прокручиваем до Privileged Gateway Intents и включаем Message Content Intent — без этого бот получает сообщения с пустым содержимым.
Шаг 2. Генерируем токен
На той же странице Bot нажимаем Reset Token. Копируем — он показвается один раз.
Шаг 3. Приглашаем бота на сервер
Discord не позволяет DM боту если вы не на одном сервере с ним.
Переходим в OAuth2 -> URL Generator. Выбираем scope: bot. В Bot Permissions включаем:
- View Channels
- Send Messages
- Send Messages in Threads
- Read Message History
- Attach Files
- Add Reactions
Integration type: Guild Install. Копируем сгенерированный URL, открываем его и добавляем бота на свой сервер.
Для DM-режима формально нужно 0 разрешений. Но лучше включить все сразу — пригодится когда захотите использовать бота в каналах сервера.
Шаг 4. Устанавливаем плагин
/plugin install discord@claude-plugins-official
Шаг 5. Передаем токен
/discord:configure MTIz...
Сохраняется в ~/.claude/channels/discord/.env.
Чтобы запустить несколько ботов на одной машине (разные токены, разные allowlist'ы), задайте переменную DISCORD_STATE_DIR на разные директории для каждого инстанса.
Шаг 6. Перезапуск с каналом
claude --channels plugin:discord@claude-plugins-official
Шаг 7. Привязка
Пишем DM боту в Discord, получаем код, в Claude Code:
/discord:access pair <код>
И блокируем:
/discord:access policy allowlist
Что умеет Discord-канал (сверх Telegram)
ИнструментЧто делаетreplyОтправляет сообщение. Файлы-вложения — до 10 штук, до 25 МБ каждыйreactРеакция эмодзи. Поддерживает и unicode и кастомные эмодзи сервера (<:name:id>)edit_messageРедактирование своих сообщенийfetch_messagesЗагружает историю канала (до 100 сообщений за вызов, от старых к новым)download_attachmentСкачивает вложения по message ID в~/.claude/channels/discord/inbox/
В отличие от Telegram, Discord-канал имеет доступ к истории. Claude может попросить «а что писали выше?» и реально посмотреть. В Telegram он может только попросить вас скопировать или пересказать — такое вот ограничение.
Грабли, на которые мы уже наступили
Как по мне, это самое ценное — реальный опыт настройки а не красивая теория из доков. Три вещи, которые стоит знать до того как вы потратите час на отладку.
--channels — не опция а обязательное условие. Без этого флага MCP-сервер запускается, polling работает, бот даже может отправлять сообщения. Но входящие сообщения не доставляются в сессию. Сервер тупо съедает updates и выбрасывает их в пустоту. Визуально все выглядит рабочим — бот онлайн, Telegram показывает «доставлено» — но Claude ничего не видит. Это не баг а архитектура: флаг --channels включает механизм доставки событий внутрь сессии.
Один бот = один терминал. Telegram API разрешает только одного потребителя getUpdates (long polling) на токен бота. Если у вас открыто два терминала Claude Code с одним и тем же ботом — второй молча перехватит polling и первый перестанет получать сообщения. Никаких ошибок не будет, просто тишина. Это описано в issue #37640 на GitHub.
Если вы работаете с несколькими проектами, отключите Telegram-плагин глобально ("telegram@claude-plugins-official": false в ~/.claude/settings.json) и включайте его только в конкретном проекте через локальный .claude/settings.json. Так вы гарантируете что polling не утечёт в другую сессию.
Если бот молчит после настройки — первым делом убедитесь что нет другой сессии Claude Code с тем же плагином. Закройте все лишние терминалы и перезапустите с --channels. В 90% случаев проблема именно в этом.
Несколько каналов одновременно
Можно подключить и Telegram и Discord (и другие каналы) к одной сессии:
claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official
Каналы перечисляются через пробел.
Фоновая работа
Каналы работают только пока сессия жива. Для «всегда на связи» запускаем Claude Code в tmux:
tmux new-session -d -s claude 'claude --channels plugin:telegram@claude-plugins-official'
Теперь можно закрыть терминал, уехать на встречу — бот продолжает работать.
Если Claude натыкается на промпт с запросом разрешения (permission prompt) пока вас нет у терминала, сессия паузится. Канальные серверы с поддержкой permission relay могут переслать вам этот запрос и получить одобрение удаленно. Для полностью автономной работы есть --dangerously-skip-permissions но честно говоря, используйте его только в доверенных окружениях.
Безопасность
Anthropic подошли к безопасности аккуратно:
- Allowlist отправителей — только привязанные ID могут отправлять сообщения, все остальные молча игнорируются
- Явное включение — присутствие MCP-сервера в .mcp.json недостаточно; канал надо ещё указать в --channels
- Enterprise-контроль — Team и Enterprise планы по умолчанию отключают каналы, админ включает явно
- Permission relay — человек из allowlist может одобрять или отклонять запросы разрешений Claude. Добавляйте в allowlist только тех кому доверяете
Channels vs другие способы взаимодейсвия
ФичаЧто делаетДля чего подходитClaude Code на вебеЗапускает задачу в свежем облачном sandboxДелегировать самодостаточную задачуClaude в SlackСоздает веб-сессию из @ClaudeЗапускать задачи из контекста командного чатаСтандартный MCP-серверClaude сам запрашивает данныеДать Claude доступ к чтению из внешних системRemote ControlУправляем локальной сессией из claude.ai или приложенияРулить текущей сессией удаленноChannelsВнешние события пушатся в сессиюЧат-мост, вебхуки CI/CD, алерты
Каналы заполняют конкретную нишу: реактивное взаимодействие, когда внешний мир стучится к Claude. Упал CI, пришел вебхук, вы написали из кафе — все это «внешнее событие» которое нужно доставить в сессию.
Что может пойти не так
Фича в research preview, так что стоит быть готовым:
- Нестабильность. @jasonnewton из Twitter прямо написал: «Extremely flaky. Only managed to work once.» С первого раза может не завестись
- Привязка к активной сессии. Закрыли терминал — бот умер. Фундаментальное ограничение текущей архитектуры
- Только Telegram и Discord. Slack, WhatsApp, iMessage — пока нет. Хотя Anthropic обещают возможность создавать кастомные каналы
- Только allowlisted плагины. Пока --channels принимает только плагины из списка Anthropic. Для кастомных есть --dangerously-load-development-channels
- Требует claude.ai. API-ключи и Console не поддерживаются
Что дальше
Anthropic явно движется к модели где AI-агент — не утилита которую запускаешь руками, а сервис который всегда на связи. Channels — первый шаг. Remote Control (управление из браузера и мобильного приложения), Scheduled Tasks (по расписанию) и возможность писать свои каналы — части одной головоломки.
@kayintveen в Twitter точно подметил разницу: Claude Code Channels — реактивная модель (вы пишете агенту, он реагирует), а проекты вроде OpenClaw — проактивная (агент сам инициирует действия). Скорее всего будущее за комбинацией обоих подходов.
А пока — попробуйте настроить Telegram-бота. Даже в текущем сыром виде это меняет ощущение от разработки: терминал переезжает в карман и на мой взгляд, обратно уже не возвращается.
Полезные ссылки: