Как управлять Claude Code с телефона через Telegram в 2026

Опубликовано 01.06.202619 мин чтенияСредний
Рука держит смартфон, чей чат направляет светящиеся потоки кода к абстрактному ядру ИИ.
Что узнаешь
  • Запустить Telegram-бота, который пересылает сообщения в Claude Code
  • Закрыть бота allowlist'ом, чтобы никто чужой не зашёл
  • Поднять 24/7 сессию на своём VPS через systemd
  • Получать ответы Claude в Telegram, пока ноутбук стоит закрытый
  • Обойти 5 ловушек: Bun, версии, разрывы, права, лимиты Max
Применить за 30 мин
Сэкономит 5 ч
Средний
23просмотров
1поделились

Каждый день в Telegram-канале - что нового в вайб-кодинге: инструменты, разборы, ошибки. Подпишись, чтобы быть в курсе.

Что такое Claude Code Channels и зачем они нужны

20 марта 2026 Anthropic выпустила Claude Code Channels - официальный плагин для связки сессии Claude с мессенджерами. Поддерживаются Telegram, Discord и iMessage. Фича в режиме research preview: документация на code.claude.com/docs/en/channels, исходники плагинов лежат в открытом репозитории anthropics/claude-plugins-official.

Если коротко - это «чат-мост» между телефоном и твоей сессией Claude Code. Я пишу боту «продолжи переписывать тарифную сетку, у меня в business/products/practicum/README.md поправь даты следующей когорты», бот пересылает сообщение в сессию на моём VPS, Claude вытаскивает контекст, редактирует файл, коммитит изменения и отвечает в Telegram «готово, посмотри коммит». Ноутбук стоит закрытый дома.

⚠️ Главное ограничение research preview: Channels - это мост через MCP. Сессия должна быть запущена на твоей машине или VPS. Когда сессия закрыта - сообщения никто не получает. Поэтому 24/7 настраивается отдельно (раздел про VPS ниже).

Чем Channels отличается от других способов работы удалённо

Anthropic в официальной документации даёт прямую таблицу сравнения. Я её адаптировал под русский язык:

ФичаЧто делаетКогда выбирать
Claude Code on the webЗапускает задачу в свежем облачном песочнице, клонирует репо из GitHubДелегировать самостоятельную фоновую задачу, проверить позже
Slack-интеграцияПо упоминанию @Claude стартует web-сессию в тредеЗапускать задачи прямо из переписки команды
MCP-сервер (обычный)Claude обращается к нему во время задачи, ничего не пушит в сессиюДать Claude on-demand доступ к внешним системам
Remote ControlУправляешь локальной сессией с claude.ai или мобильного приложенияРулить уже идущей сессией с экрана телефона
ChannelsПушит события из не-Claude источников в уже запущенную локальную сессиюСпросить с телефона, получить ответ в чате; ловить webhook из CI

Главное отличие Channels от Remote Control: Remote Control - это «телефон как окно в терминал», ты буквально видишь курсор и нажимаешь кнопки. Channels - это чат-бот, у которого вместо мозгов твоя локальная сессия Claude. С Remote Control я смотрю на терминал. С Channels я пишу человеку, который читает мои файлы.

Если тебе нужен полный контроль с экрана - Remote Control. Если хочется «отправил вопрос, занимаюсь своими делами, получил ответ» - Channels. Я использую оба: Remote Control - когда нужно подтверждать критичные изменения, Channels - когда уверен в задаче и хочу освободить вечер.

Что понадобится перед началом

Прежде чем лезть в команды, проверь чек-лист:

  1. Аккаунт Anthropic. Нужен Pro, Max, Team или Enterprise. На бесплатном тарифе Channels не пускают. Console API key тоже подходит, но проверь, что в организации channelsEnabled: true.
  2. Claude Code v2.1.80 или новее. Проверить: claude --version. Если старее - обновись: claude update или npm install -g @anthropic-ai/claude-code@latest.
  3. Bun. Плагины Channels - это Bun-скрипты, не Node. Проверить: bun --version. Если нет - поставь: curl -fsSL https://bun.sh/install | bash, потом source ~/.bashrc.
  4. Telegram-аккаунт. Любой, главное чтоб ты был залогинен на телефоне.
  5. Если ты в команде / Enterprise - попроси админа включить channelsEnabled в managed settings или через admin-settings/claude-code. По умолчанию у организаций всё закрыто.

Не пугайся Bun, если первый раз его видишь. Bun - это альтернативный JavaScript-рантайм, как Node. Anthropic выбрала его для плагинов Channels, потому что он быстрее стартует и проще пакуется в один бинарник. Поставил один раз - забыл.

⚠️ На корпоративном Bedrock / Google Vertex / Azure Foundry Channels пока не работают. Только claude.ai-аутентификация или Anthropic Console.

Шаг 1. Создаём Telegram-бота через BotFather

BotFather делает всю работу за тебя - тебе нужно нажать 5 кнопок. Алгоритм пошагово:

  1. Открой @BotFather в Telegram (можно с телефона - дальше делается тоже с телефона).
  2. Нажми «Start» если в первый раз.
  3. Отправь команду /newbot.
  4. BotFather спросит «Alright, a new bot. How are we going to call it?». Введи отображаемое имя: например, Артемий - Claude Code.
  5. Дальше попросит username. Он должен быть уникальным во всём Telegram и обязательно заканчиваться на bot. Например, artemii_claude_bot или smyslokod_dev_bot.
  6. BotFather ответит сообщением вида:
Done! Congratulations on your new bot. You will find it at
t.me/artemii_claude_bot.

Use this token to access the HTTP API:
1234567890:AAHzlAU...

Keep your token secure and store it safely, it can be used by anyone to control your bot.

Скопируй токен. Он понадобится через 2 минуты.

⚠️ Безопасность токена. Токен бота даёт полный контроль над ним. Если он утечёт - любой сможет писать с твоего имени и (потенциально) перехватывать сообщения, которые ты пишешь Claude. Не публикуй в репозиториях, не вставляй в код, не отправляй в чаты. Я храню токены в ~/.claude/channels/telegram/.env - плагин сам туда положит на следующем шаге.

Шаг 2. Ставим плагин Telegram в Claude Code

Открываешь терминал в любой папке, где обычно работаешь с Claude, и запускаешь:

bash
claude

В сессии набираешь слэш-команду:

/plugin install telegram@claude-plugins-official

Если Claude отвечает «Plugin not found in any marketplace» - значит твой клиент не знает официальный маркетплейс. Добавь его:

/plugin marketplace add anthropics/claude-plugins-official

Или обнови, если уже добавлен раньше:

/plugin marketplace update claude-plugins-official

После успешной установки делаешь reload, чтобы команды плагина стали активны:

/reload-plugins

Теперь у тебя появились слэш-команды /telegram:configure, /telegram:access и другие. Если хочешь убедиться - набери /help, в списке должна появиться секция telegram.

Шаг 3. Привязываем токен к плагину

В сессии Claude:

/telegram:configure 1234567890:AAHzlAU...

Команда положит токен в файл ~/.claude/channels/telegram/.env. Файл доступен только твоему пользователю (chmod 600), за это можно не переживать.

Альтернативный вариант - выставить токен через переменную окружения. Полезно, если ты разворачиваешь Claude через systemd или Docker и не хочешь интерактивных команд:

bash
export TELEGRAM_BOT_TOKEN="1234567890:AAHzlAU..."
claude --channels plugin:telegram@claude-plugins-official

⚠️ Я в проде всегда использую переменные окружения, а не файл .env в домашней папке ~/. Так проще управлять секретами через systemd (Environment=TELEGRAM_BOT_TOKEN=...) и не тянуть ~/.claude/ в репо случайно.

Шаг 4. Перезапускаем Claude с флагом --channels

Это самый важный момент, который ловит всех на первом запуске. Просто установить плагин - мало. Чтобы бот реально начал принимать сообщения, нужно запустить Claude с явным флагом:

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

Без флага - сессия работает как обычно, но Telegram-плагин в спячке. С флагом - Claude поднимает MCP-сервер плагина, начинает polling Telegram API и реагирует на сообщения боту.

После запуска ты увидишь в терминале что-то вроде:

✻ Welcome to Claude Code 2.1.80
  Channels: telegram@claude-plugins-official (active)
  Polling for messages...

Если строки про channels нет - флаг не подхватился. Проверь, что версия Claude Code 2.1.80+ и плагин действительно установлен (/plugin list внутри сессии).

⚠️ Удобный совет. Я кладу алиас в ~/.zshrc:

bash
alias claude-tg="claude --channels plugin:telegram@claude-plugins-official"

Дальше запускаю просто claude-tg. Можно прокинуть несколько плагинов через пробел: --channels plugin:telegram@... plugin:discord@....

Шаг 5. Связываем аккаунт и закрываем чужих

Это шаг про безопасность. Без него любой посторонний человек, который найдёт твоего бота по username, сможет отправить сообщение и получить ответ от Claude в твоём терминале. Это значит: чужой человек может попросить Claude прочитать файлы, удалить что-то, опубликовать твой код.

Алгоритм:

  1. Открой бота в Telegram. Найди его по username @artemii_claude_bot или по ссылке из ответа BotFather. Нажми «Start».
  2. Напиши боту любое сообщение. Например, hi.
  3. Бот ответит сообщением с кодом сопряжения. Что-то вроде:
Hi! To pair this account, run in your Claude Code session:
/telegram:access pair 847291

This code is valid for 5 minutes.
  1. Возвращайся в терминал. В сессии Claude введи команду из ответа:
/telegram:access pair 847291

Claude ответит «Account paired». Теперь твой Telegram-аккаунт может отправлять команды.

  1. Включи allowlist-политику. Это закрывает доступ всем, кроме уже сопряжённых:
/telegram:access policy allowlist

После этого все сообщения от других аккаунтов будут молча проигнорированы. В терминале их не видно, бот не отвечает - как будто их не было.

⚠️ Очень важно включить allowlist сразу после сопряжения, не оставлять «на потом». Промежуток между «бот работает» и «allowlist включён» - это окно, в котором незнакомец может попасть в твою сессию. У меня бот первый раз работал 10 минут без allowlist, и за это время два случайных Telegram-юзера успели написать «hi». Хорошо, что я не пускал тогда команды на запись.

Если нужно добавить ещё кого-то (например, партнёра по проекту):

/telegram:access pair <код от их аккаунта>

Пусть он напишет боту первым, получит код, передаст тебе, ты добавишь. Только так.

Хочешь полную схему по вайб-кодингу - не только Telegram-бот, но и всю связку под Claude? На практикуме за 3 эфира собираешь все три: ИИ-клон + Второй мозг + Контекст-инжиниринг - именно эта связка делает Claude из «помощника с галлюцинациями» рабочим инструментом, который не теряет контекст между задачами.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - стек, метод, первый проект
Старт 9–11 июня  ·  2 000 ₽
Записаться →

Как запустить Claude 24/7 на своём VPS

Если ты хочешь не «открыл ноут на час и подёргал», а «бот живой круглые сутки» - сессию нужно держать запущенной. Локально это можно через tmux, но проще и надёжнее - VPS.

У меня всё уже стоит на Coolify-VPS, где живёт smyslokod.ru (подробности в гайде про публикацию через Coolify). Можно использовать тот же сервер - Claude кушает мало (около 200 МБ RAM, по данным danubedata.ro). Если у тебя нет VPS - бери минимальный за 4-5 евро в месяц, любой Hetzner CX11 / Yandex Cloud / Selectel.

Шаг 1: ставим систему на VPS

Под root или через sudo:

bash
apt update && apt upgrade -y
apt install -y curl git tmux ufw

# Node.js 22 (плагины Bun, но claude code сам нужен Node)
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs

# Bun (обязательно)
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc

# Claude Code
npm install -g @anthropic-ai/claude-code

Проверь, что всё встало:

bash
node --version    # v22.x.x
bun --version     # 1.x.x
claude --version  # 2.1.80+

Шаг 2: авторизуемся в claude.ai

Запусти команду:

bash
claude login

Откроется веб-флоу: Claude напечатает URL, ты копируешь его на свой ноут или телефон, открываешь, логинишься через claude.ai, подтверждаешь. Терминал поймает callback и сохранит токен.

⚠️ API key не подойдёт. Channels требуют именно claude.ai-аутентификацию (Pro/Max/Team/Enterprise). API key Anthropic Console работает только для организаций с правильно настроенным channelsEnabled.

Шаг 3: оборачиваем сессию в systemd

Создаём service-файл для автозапуска и автоперезапуска при падении:

bash
cat > /etc/systemd/system/claude-code.service <<'EOF'
[Unit]
Description=Claude Code with Telegram channel
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=claude
WorkingDirectory=/home/claude/workspace
Environment="HOME=/home/claude"
Environment="TELEGRAM_BOT_TOKEN=1234567890:AAH..."
ExecStart=/usr/bin/claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable claude-code
systemctl start claude-code

Что я тут включил:

  • Type=simple - простой режим, systemd считает процесс запущенным сразу после старта.
  • User=claude - под отдельным пользователем, не под root. Безопаснее.
  • WorkingDirectory=/home/claude/workspace - папка, где у Claude «работа». Сюда же клонируй свой репозиторий: cd /home/claude/workspace && git clone <repo>.
  • Environment=TELEGRAM_BOT_TOKEN=... - токен пробрасывается прямо в процесс. Файл .env не нужен.
  • --dangerously-skip-permissions - критично для режима без присмотра. Без этого флага Claude будет ждать твоего «yes/no» в терминале на каждое действие, и сессия зависнет. Включаем только потому, что allowlist Telegram уже закрыл доступ.
  • Restart=on-failure - если процесс упал (Claude крашнулся, сеть отвалилась), systemd поднимет его через 10 секунд.

Логи смотришь так:

bash
journalctl -u claude-code -f

Если что-то пошло не так - journalctl -u claude-code -n 100 даст последние 100 строк.

Шаг 4: проверь, что бот живой

С телефона напиши боту привычное «hi». Сначала должен быть pairing - сделай его так же, как в шаге 5 выше: напиши в Telegram, получи код, выполни /telegram:access pair (но уже из VPS-сессии - можно подключиться через journalctl -u claude-code -f и параллельно через интерактивный systemctl stop claude-code; claude --channels plugin:telegram@... сделать pairing, потом снова запустить service).

⚠️ Хитрый момент: pairing через systemd. Systemd-сервис не интерактивный, ты в нём /telegram:access pair не введёшь. Поэтому первый раз pairing делаешь руками: останавливаешь service, запускаешь Claude в обычном режиме, проходишь pairing + allowlist, выходишь, поднимаешь service обратно. Аллоулист сохраняется в ~/.claude/, при перезапуске остаётся.

5 ловушек на боевом сервере и как их обойти

1. Bun не в PATH у systemd

systemd запускает процесс с минимальным окружением: переменные из ~/.bashrc он не видит. Если ты ставил Bun под root и положил в ~/root/.bun/bin, а в service-файле User=claude - Bun не найдётся, плагин не запустится.

Решение. Либо ставь Bun системно (/usr/local/bin/bun), либо явно прокидывай PATH:

ini
Environment="PATH=/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"

2. Сессия теряет TCP-соединение с Telegram API после долгого простоя

После 6-12 часов простоя бот может «глохнуть» - сообщения уходят в Telegram, плагин их не получает. Это особенность long polling.

Решение. Добавь в systemd регулярный перезапуск (раз в 24 часа):

ini
Restart=always
RuntimeMaxSec=86400

Или поставь cron-задачу: 0 5 * * * systemctl restart claude-code (рестарт в 5 утра).

3. Лимиты Claude Max заканчиваются среди дня

Если ты гоняешь Claude через Telegram на полную - на тарифе Max 5x (~$100/мес) можно упереться в лимиты за 4-6 часов. Запросы из Telegram ничем не отличаются от запросов из обычного терминала, они расходуют тот же бюджет.

Решение. Поставь напоминалку «бот не отвечает - проверь /stats». Если упёрся - либо ждёшь сброса лимита, либо обновляешься до Max 20x ($200/мес). Гайд по экономии токенов и гайд по моделям Sonnet vs Opus помогут.

4. --dangerously-skip-permissions опасно даже с allowlist

Этот флаг отключает все подтверждения. Любая команда от тебя из Telegram выполнится без вопросов: удалить файлы, отправить запросы наружу, что угодно. Я сам один раз попросил «убери ненужные console.log», и Claude в порыве чистоты грохнул половину debug-логов в боевом скрипте. Restored через git, но осадок остался.

Решение. Не включай --dangerously-skip-permissions, если работаешь над критичным проектом. Лучше отдай sessions через Remote Control - там разрешения приходят на телефон, и ты подтверждаешь руками. Channels с --dangerously-skip-permissions - для черновых задач, рефакторинга, тестов.

5. Allowlist «сломался» после переустановки

Allowlist хранится в ~/.claude/channels/telegram/. Если ты переехал на новый VPS / переустановил Claude / сменил пользователя - старые pairing-данные не подхватятся. Бот пустит первого попавшегося.

Решение. Перед переездом - сохрани папку ~/.claude/channels/telegram/ в бэкап. После - перенеси обратно. Или сделай pairing заново сразу после переустановки и не оставляй между запуском бота и policy allowlist ни одной минуты.

Channels или Remote Control - что выбрать

Anthropic выпустила обе фичи почти одновременно: Remote Control - 25 февраля 2026, Channels - 20 марта 2026. Они не дублируют друг друга, решают разные задачи.

СценарийChannelsRemote Control
Спросить «какие коммиты вчера» с улицы✅ ИдеальноПеребор - нужен полный экран
Подтвердить файловое изменение⚠️ Слепое подтверждение через --dangerously-skip-permissions✅ Видишь, что Claude хочет сделать
Поднять Claude на 24/7✅ Связка с VPS + systemd⚠️ Нужен открытый ноутбук
Просто пописать пару промптов с телефона⚠️ Перебор - бот, токен, plugin✅ Один QR-код
Поймать webhook из CI / Sentry✅ Это нативный сценарий❌ Не для этого
Команда с несколькими людьми✅ Allowlist на несколько аккаунтов⚠️ Только владелец сессии
Не светить файлы в облако Anthropic✅ Только текст через MCP✅ Тоже только текст

Я для себя поделил так: Channels - для асинхронной работы, когда не сижу за ноутом, для CI-уведомлений, для интеграций. Remote Control - когда нужно реально посмотреть, что Claude делает, или подтвердить опасный шаг.

Можно использовать оба одновременно. Бот в Telegram даёт тебе быстрый канал «спросить-получить», Remote Control - канал «контролировать критичное». Лимит Claude один и тот же.

FAQ

Можно ли подключить несколько ботов одновременно?

Да. Флаг --channels принимает список через пробел: --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official. Один Claude отвечает в оба чата.

Что будет, если я закрою терминал?

Сессия закроется, плагин остановится, бот замолчит. На VPS - сессия в systemd продолжит работать. На локальной машине - закрой ноутбук, и через несколько секунд claude отвалится по SIGHUP.

Можно ли получать уведомления от CI или Sentry?

Да. Channels - это двусторонний канал. Через Channels Reference можно написать свой плагин, который пробрасывает webhook'и в сессию. Claude будет видеть события в реальном времени и реагировать.

Telegram чем-то ограничен по сравнению с Discord?

Базовые возможности одинаковые. Discord требует Message Content Intent в настройках бота. iMessage работает только на macOS и читает базу ~/Library/Messages/chat.db напрямую. Telegram - универсальный.

Если я на Team-плане, что нужно сделать?

Админ организации включает channelsEnabled: true в managed settings или через admin-settings/claude-code. Без этого плагин подключится, но сообщения не пойдут - в терминале будет startup warning.

Что Claude видит из моего телефона - сам Telegram-чат?

Нет. Claude видит только то сообщение, которое ты ему написал боту. История переписки в Telegram, список чатов, контакты - вне доступа. MCP-плагин читает только сообщения боту через Telegram Bot API.

Можно ли запускать Claude через Channels без подписки на Pro/Max?

Нет. Требуется claude.ai-аккаунт с действующей подпиской (Pro / Max / Team / Enterprise). Free-tier и API-only не пускают.

Что дальше

Когда бот заработал стабильно - есть несколько следующих шагов, чтобы выжать из Channels максимум:

  1. Подключи webhook'и из CI. Если у тебя GitHub Actions / GitLab CI - можно настроить плагин Channels так, чтобы он пробрасывал результаты сборки прямо в сессию. Claude будет видеть «test failed» сразу после пуша и предлагать починку. Документация в channels-reference.
  2. Подружи с Routines. На той же сессии можно крутить Routines для регулярных задач. Утром бот сам отправляет «доброе утро, вот сводка по проекту», ты с телефона отвечаешь «сделай отчёт по выручке».
  3. Поставь монитор бота. Если бот замолчал - я хочу знать. Маленький cron-скрипт на VPS пингует Telegram-бота раз в час: если бот не ответил - шлёт алерт в отдельный канал. Без этого бот может умереть в 4 утра, и ты узнаешь только в обед.
  4. Подумай про хуки. Хуки реагируют на события Claude (started tool, finished message). Связка хук + Channels = автоматические уведомления в Telegram «Claude закончил задачу N».

Не лепи Channels на ВСЁ. Это удобный способ догнать задачу из дороги или с кофейни. Когда нужно реально думать - открываешь ноут и сидишь. Channels - чтобы освободить голову от «ой, надо ещё это попросить, надо ноут открывать», когда ты на улице или в дороге.

Источники

Полная схема по вайб-кодингу за вечер: ИИ-клон + Второй мозг + Контекст-инжиниринг. 3 эфира, 2 000 ₽. Записи остаются у тебя.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - стек, метод, первый проект
Старт 9–11 июня  ·  2 000 ₽
Записаться →

Новые материалы - дайджестом, без спама

Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

Была инструкция полезна?
Артемий Миллер
Автор
Артемий Миллер
Предприниматель и вайб-кодер

Артемий Миллер - предприниматель и вайб-кодер. Бывший программист, собирает продукты исключительно вместе с ИИ-агентами, без найма разработчиков.

Связанные инструкции

Связанные концепты