1. Почему стоит запускать Claude Code Channels на Mac mini?
Официальная документация говорит прямо: «События приходят только пока сессия открыта, поэтому для постоянно работающей конфигурации запускайте Claude в фоновом процессе или в постоянном терминале». Ноутбук, который уходит в сон, закрывает крышку или перезагружается ради обновления, незаметно отключает вашего бота; Telegram Bot API не предоставляет ни истории, ни поиска, так что Claude не может получить старые сообщения, а Telegram хранит недоставленные обновления не более 24 часов. Выделенный Mac mini от MyRemoteMac держит эту сессию открытой 24/7 на Apple Silicon (Claude Code поддерживает macOS 13+ на ARM64), с полным root-доступом по SSH, VNC для разовых диалогов разрешений macOS, включённым 1 Gbps и фиксированной месячной ценой. Кроме того, это единственный тип облачного хоста, способный запустить канал iMessage, который работает только на macOS: он читает базу данных Сообщений и управляет Messages.app через AppleScript, на Linux VPS это невозможно.
| Параметр | Облачный VPS (Linux) | Mac mini (MyRemoteMac) |
|---|---|---|
| Стоимость в месяц | Варьируется (см. сравнение стоимости) | M4 от $85/мес · M6 от $149/мес (фиксированная) |
| Канал iMessage | Невозможно (только macOS) | Да, Messages.app + полный доступ к диску |
| Каналы Telegram / Discord | Да | Да (только исходящие соединения, без входящего порта) |
| Постоянно открытая сессия | Да | Да (SLA 99,9 %) |
| Оборудование | Общее, виртуализированное | Выделенный физический Mac 1:1 |
| Доступ и инструменты | SSH | SSH + VNC, полный root, Xcode и Simulator в той же сессии |
Ключевое преимущество: Channels соединяет мессенджеры с сессией Claude Code, в которой уже открыт ваш реальный проект. На Mac mini этим проектом может быть приложение для iOS или macOS, агент, которому вы пишете с телефона, может собирать и тестировать его в Xcode на той же машине (см. наше руководство по удалённой разработке в Xcode). Все три официальных плагина пересылают запросы разрешений, так что каждый вызов Bash, Write или Edit вы одобряете или отклоняете прямо из чата.
2. Требования
Claude Code Channels, функция проприетарного CLI Claude Code от Anthropic, а не отдельный продукт, и для неё требуется платный тариф Claude. Это research preview: флаг --channels пока даже не отображается в claude --help, и Anthropic предупреждает, что его синтаксис и протокол могут измениться. Все факты ниже сверены с официальной документацией 28 сентября 2026 г. (Claude Code 2.1.283).
- Выделенный Mac mini от MyRemoteMac, M4 от $85/мес (16 ГБ / 256 ГБ) или M6 от $149/мес. Claude Code требует macOS 13.0+, 4 ГБ+ ОЗУ и процессор ARM64 или x64: подходит любая конфигурация.
- Доступ по SSH и VNC к вашему Mac mini (оба предоставляются вместе с подпиской MyRemoteMac). SSH, для терминала; VNC, для входа через браузер и диалогов macOS «Полный доступ к диску» / «Автоматизация», которые нужны каналу iMessage.
- Аккаунт Claude с доступом к Claude Code: Pro ($20/мес), Max (от $100/мес), Team ($25/место/мес), Enterprise или ключ API Console с потокенной оплатой. Бесплатный тариф claude.ai не включает Claude Code. Каналы недоступны на Amazon Bedrock, Google Cloud Agent Platform и Microsoft Foundry. В Team/Enterprise владелец (Owner) должен сначала включить каналы (claude.ai → Admin settings → Claude Code → Channels).
- Bun на Mac mini: «Каждый поддерживаемый канал, это плагин, которому требуется Bun» (устанавливается на Шаге 1).
- Учётные данные бота для вашего канала: токен бота Telegram от @BotFather или приложение-бот Discord с включённым Message Content Intent, приглашённое на сервер, где вы состоите. iMessage токен не нужен: документация требует macOS, полный доступ к диску, разрешение «Автоматизация» при первом ответе и «любое устройство, вошедшее в ваш Apple ID», чтобы писать самому себе, необходимость держать пользователя Mac mini в системе с выполненным входом в Сообщения, это наш вывод из этого механизма (см. Шаг 3), и мы рекомендуем выделенный Apple ID с двухфакторной аутентификацией вместо личного.
- Базовое знакомство с командами терминала, tmux и редактированием ~/.claude/settings.json.
3. Шаг 1: Подключение по SSH, установка Claude Code и Bun
Подключитесь к Mac mini по SSH с учётными данными из панели управления MyRemoteMac, проверьте версию macOS, затем установите Claude Code. Нативный установщик, метод, рекомендуемый Anthropic: ему не нужен Node.js, и он обновляется сам в фоновом режиме. Homebrew и npm, задокументированные альтернативы (пакет npm устанавливает тот же нативный бинарный файл и требует Node.js 22+; никогда не запускайте его через sudo).
Подключение по SSH и проверка требований
# Connect to your Mac mini
ssh admin@your-server-ip
# Confirm Apple Silicon (Claude Code supports x64 and ARM64)
uname -m
# arm64
# Claude Code and Bun both need macOS 13.0+
sw_vers -productVersion
Установка Claude Code (официальный нативный установщик)
Запустите установщик, затем проверьте версию и дайте claude doctor выполнить диагностику в режиме только для чтения. Cask claude-code в Homebrew следует за стабильным каналом (отстаёт примерно на неделю, пропускает регрессии) и не обновляется автоматически; claude-code@latest следует за latest.
# Recommended: official native installer (no Node.js needed, auto-updates in the background)
curl -fsSL https://claude.ai/install.sh | bash
# Pin a release channel or exact version at install time if you prefer:
# curl -fsSL https://claude.ai/install.sh | bash -s stable
# Alternative A: Homebrew (stable channel; does not auto-update)
# brew install --cask claude-code
# Alternative B: npm (Node.js 22+, same native binary, never with sudo)
# npm install -g @anthropic-ai/claude-code
# Verify (prints e.g. "2.1.283 (Claude Code)") and run read-only diagnostics
claude --version && claude doctor
Установка Bun (требуется каждому плагину каналов)
Официальные плагины каналов, это скрипты Bun. Собственный минимум Bun, тоже macOS 13.0+. И bun.com/install (из документации Bun), и bun.sh/install (из README плагинов), официальные адреса; Homebrew тоже подойдёт. Минимальную версию Bun плагины не указывают.
# Official Bun installer
curl -fsSL https://bun.com/install | bash
# Homebrew alternative: brew install oven-sh/bun/bun
# Open a new shell (or source ~/.zshrc), then verify
bun --version
4. Шаг 2: Аутентификация и выбор режима разрешений
Каналам требуется аутентификация Anthropic: вход через claude.ai (Pro, Max, Team, Enterprise) или ключ API Console. Запустите claude один раз и пройдите вход через браузер. По SSH браузер может показать код, который нужно вставить в поле «Paste code here if prompted»; на headless Mac mini вход можно также завершить в сессии VNC. В macOS учётные данные сохраняются в Связку ключей; если Связка ключей заблокирована (обычная ситуация по SSH), Claude Code использует ~/.claude/.credentials.json с правами 0600.
Вход (подписка или ключ API)
Для постоянно работающей сессии вход по подписке, слабое место: он истекает (при запуске Claude Code предупреждает «Your login expires in 3 days · run /login to renew», а сессия без присмотра «перестаёт продвигаться, как только учётные данные истекают»). Два задокументированных решения: сгенерировать годовой OAuth-токен командой claude setup-token (Pro/Max/Team/Enterprise; он умеет только выполнять запросы к моделям) и экспортировать его там, где работает сессия, либо использовать ANTHROPIC_API_KEY из Console с потокенной оплатой.
# Option A: subscription login (Pro, Max, Team, Enterprise)
cd ~/project
claude
# Follow the browser login. Over SSH, paste the code shown at
# "Paste code here if prompted": or finish the login over VNC.
# Option B: Console API key, billed per token (Claude Code asks once to approve it)
export ANTHROPIC_API_KEY="sk-ant-YOUR_API_KEY_HERE"
claude
# Option C (always-on subscription box): one-year OAuth token, printed once, never saved
claude setup-token
export CLAUDE_CODE_OAUTH_TOKEN=your-token
# Check which credential is active
# inside Claude Code: /status (see the "Login" row)
Модель и провайдеры
Сессия использует модель, выбранную вашим тарифом; сменить её можно через /model или claude --model <alias> (псевдонимы вроде opus, sonnet, haiku), а уровень усилий, через /effort. Для Channels нет варианта с локальной моделью или сторонним провайдером: бэкенды Bedrock, Vertex и Foundry исключены, а маршрутизация на не-Claude эндпоинт не является поддерживаемой конфигурацией. Если вам нужен локальный LLM на том же Mac mini, рассматривайте его как отдельную нагрузку, см. наше руководство по локальным LLM.
Выбор режима разрешений и закрепление канала релизов
Начиная с Claude Code 2.1.283 режим auto (классификатор проверяет действия), встроенный стартовый режим для интерактивных сессий. Для сессии с каналами мы рекомендуем оставить человека в контуре одобрения: в ручном режиме (--permission-mode default) каждый запрос Bash, Write или Edit пересылается в ваш чат из списка разрешённых, где вы отвечаете yes <id> или no <id>. В режиме auto решает классификатор, и «никакой диалог для ответа с удалённой стороны не откроется». Поскольку функция находится в статусе research preview, закрепите также стабильный канал релизов и минимальную версию в ~/.claude/settings.json (пользовательские настройки, режимы auto и bypass, заданные в .claude/settings.json проекта, игнорируются):
# ~/.claude/settings.json (user settings: applies to every project on the Mac mini)
{
"permissions": {
"defaultMode": "default"
},
"sandbox": {
"enabled": true
},
"autoUpdatesChannel": "stable",
"minimumVersion": "2.1.211"
}
# minimumVersion = the version YOU validated on this Mac mini (the docs' example is "2.1.100").
# Auto-updates and `claude update` refuse to install anything below it, so never set it to a
# version you have not tested with --channels: 2.1.283 has an open launchd regression (#97701).
# Equivalent per-launch flag instead of defaultMode:
# claude --permission-mode default --channels plugin:telegram@claude-plugins-official
Не отключайте разрешения. Собственное предупреждение документации о --dangerously-skip-permissions / bypassPermissions: «Используйте этот режим только в изолированных средах, контейнерах, ВМ или dev-контейнерах без доступа в интернет, где Claude Code не может повредить хост-систему», и он «не даёт никакой защиты от prompt injection или непреднамеренных действий». В macOS он отклоняется под root/sudo, правила deny продолжают действовать, а администраторы могут заблокировать его через permissions.disableBypassPermissionsMode. Если полностью доверенный, выделенный и изолированный Mac mini обязан работать без присмотра, задокументированный шаблон, claude -p "<prompt>" --dangerously-skip-permissions от имени пользователя без прав root, вариант с явным предупреждением, никогда не по умолчанию. Более безопасный шаблон для работы без присмотра, -p --permission-mode auto --permission-prompts none (2.1.259+), который отклоняет всё, что потребовало бы запроса, вместо зависания.
5. Шаг 3: Подключение Telegram, Discord или iMessage
Research preview поставляется с тремя официальными плагинами каналов, Telegram, Discord и iMessage, плюс локальная демонстрация fakechat, все из маркетплейса Anthropic claude-plugins-official (Apache-2.0). Каждый устанавливается как плагин внутри Claude Code, настраивается с вашими собственными учётными данными бота и подключается к сессии флагом --channels. Для всех действуют два правила: после установки плагина нужно выйти и перезапустить Claude Code с --channels, а бот может отвечать только пока эта сессия запущена. Каждый одобренный плагин ведёт список разрешённых отправителей: «только добавленные вами ID могут отправлять сообщения, все остальные молча отбрасываются».
Telegram (рекомендуемый первый канал)
Создайте бота в Telegram: откройте @BotFather, отправьте /newbot, задайте отображаемое имя и уникальное имя пользователя, оканчивающееся на bot, и скопируйте токен. Затем внутри сессии Claude Code на Mac mini установите плагин (при запросе выберите область user), сохраните токен, перезапустите с флагом канала, выполните сопряжение и закройте политику. Плагин использует long polling к Bot API, поэтому Mac mini не нужен входящий порт.
# 1. In Telegram: open @BotFather, send /newbot, copy the token
# 2. Inside a Claude Code session on the Mac mini (choose the USER scope when asked)
/plugin install telegram@claude-plugins-official
# "Marketplace not found"? add it first, then retry:
# /plugin marketplace add anthropics/claude-plugins-official
# If the summary says "Run /reload-plugins to activate.", do so.
# 3. Store the token (written to ~/.claude/channels/telegram/.env;
# a TELEGRAM_BOT_TOKEN in the shell environment takes precedence)
/telegram:configure <token>
# 4. Exit Claude Code and restart with the channel flag
claude --channels plugin:telegram@claude-plugins-official
# 5. Send any message to your bot: it replies with a pairing code. Then, in Claude Code:
/telegram:access pair <code>
/telegram:access policy allowlist # only your account can send from now on
Discord (альтернатива)
В Discord Developer Portal создайте New Application, откройте Bot, нажмите Reset Token и скопируйте его, включите Message Content Intent в разделе Privileged Gateway Intents, затем через OAuth2 → URL Generator со scope bot и разрешениями View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files и Add Reactions пригласите его на сервер, где вы состоите, личные сообщения работают только при наличии общего с ботом сервера. Каналы гильдий подключаются по отдельности по ID канала.
# Discord Developer Portal (https://discord.com/developers/applications):
# New Application > Bot > Reset Token (copy it) > enable Message Content Intent
# OAuth2 > URL Generator: scope "bot"; permissions View Channels, Send Messages,
# Send Messages in Threads, Read Message History, Attach Files, Add Reactions
# Open the generated URL and invite the bot to a server you are in
# Inside Claude Code (token saved to ~/.claude/channels/discord/.env, or set DISCORD_BOT_TOKEN)
/plugin install discord@claude-plugins-official
/discord:configure <token>
# Restart with the channel, DM the bot for a pairing code, pair, lock down
claude --channels plugin:discord@claude-plugins-official
/discord:access pair <code>
/discord:access policy allowlist
# Several channels at once: pass the entries space-separated
# claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official
iMessage (только macOS, преимущество Mac mini)
Токен бота не нужен: плагин напрямую читает ~/Library/Messages/chat.db и отправляет ответы через AppleScript. Первое чтение вызывает запрос полного доступа к диску, в запросе указывается приложение, запустившее Bun (Terminal, iTerm, ваша IDE), а первый ответ вызывает запрос «Автоматизация» («Terminal wants to control Messages»). Оба, графические диалоги, поэтому делайте это по VNC; без полного доступа к диску сервер завершается с ошибкой «authorization denied». Затем откройте Сообщения на любом устройстве, вошедшем в ваш Apple ID, и отправьте сообщение самому себе: чат с самим собой обходит контроль доступа, а остальные контакты нужно явно добавить в список разрешённых. Плагин опрашивает chat.db раз в секунду, начинает с последней строки (без повторной обработки после перезапуска), добавляет подпись «Sent by Claude», если не задано IMESSAGE_APPEND_SIGNATURE=false, и по умолчанию игнорирует SMS/RCS, потому что «идентификаторы отправителей SMS можно подделать». Наш вывод из этого механизма, а не фраза из документации: держите пользователя Mac mini в системе с выполненным входом в Сообщения.
# Over VNC: System Settings > Privacy & Security > Full Disk Access > add your terminal app
# (or click "Allow" when the first read of ~/Library/Messages/chat.db prompts)
# Inside Claude Code (user scope), then relaunch with the channel
/plugin install imessage@claude-plugins-official
claude --channels plugin:imessage@claude-plugins-official
# From any device signed into your Apple ID: open Messages and text yourself.
# The first reply triggers the macOS Automation prompt ("Terminal wants to control Messages"): click OK.
# Let another contact in (phone in +country format, or Apple ID email)
/imessage:access allow +15551234567
Опциональная проверка: fakechat на localhost
Чтобы протестировать процесс без каких-либо внешних сервисов, официальная демонстрация fakechat поднимает чат-интерфейс по адресу http://localhost:8787 (откройте его через SSH-туннель или по VNC). У неё нет ни токенов, ни контроля доступа, поэтому используйте её только для тестирования. Если Claude Code запросит разрешение на первый ответ, одобрите его.
/plugin install fakechat@claude-plugins-official
claude --channels plugin:fakechat@claude-plugins-official
# From your laptop, tunnel the demo UI (it listens on localhost only)
ssh -N -L 8787:127.0.0.1:8787 admin@your-server-ip
# then open http://localhost:8787
Что вы увидите: входящее сообщение появляется в терминале, а текст ответа, нет: терминал показывает вызов инструмента и подтверждение вроде «sent», а сам ответ появляется в мессенджере. В режиме -p (неинтерактивном) инструменты, требующие ввода в терминале, вопросы с выбором вариантов и подтверждение plan mode, отключены, чтобы сессия никогда не зависала; в интерактивной сессии tmux, которую рекомендует это руководство, plan mode работает (восстановлен для сессий --channels в 2.1.126). Диалоги доверия проекту и согласия на MCP никогда не пересылаются, поэтому сначала локально подтвердите доверие папке проекта и одобрите MCP-сервер плагина.
6. Шаг 4: Поддержание сессии 24/7 и обновление
Anthropic не предписывает никакого механизма сервиса: документация лишь говорит запускать Claude «в фоновом процессе или в постоянном терминале», и на code.claude.com по состоянию на 28 сентября 2026 г. нет инструкций для launchd, systemd, screen или nohup. Задокументирована страница с настройками tmux, так что tmux, поддерживаемый хост. Всё в этом разделе за пределами настроек tmux, наша рекомендация для Mac mini от MyRemoteMac, обозначенная как таковая.
Запуск сессии с каналами в tmux (наша рекомендация)
Запустите интерактивную сессию claude --channels внутри именованной сессии tmux по SSH и отсоединитесь. Вы можете в любой момент снова подключиться, чтобы ответить на запрос, который не был переслан, обновить вход через /login или прочитать стартовое уведомление Channels. Добавьте три настройки tmux, задокументированные Anthropic, чтобы уведомления доходили до внешнего терминала и работал Shift+Enter:
# Install tmux
brew install tmux
# The three settings Anthropic documents for running Claude Code inside tmux
printf 'set -g allow-passthrough on\nset -s extended-keys on\nset -as terminal-features "xterm*:extkeys"\n' >> ~/.tmux.conf
# Start a named session in your project and launch the channel session inside it
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official
# Detach: Ctrl-b d Reattach later: tmux attach -t claude
# Renew an expiring login from inside the session: /login
Опциональный супервизор: пользовательский LaunchAgent (наш вариант, с предупреждением)
Чтобы воссоздавать сессию tmux после перезагрузки или сбоя, можно зарегистрировать пользовательский LaunchAgent с RunAtLoad и KeepAlive, программа которого, небольшой скрипт-обёртка. Это должен быть LaunchAgent, а не LaunchDaemon: разрешения iMessage (полный доступ к диску, «Автоматизация»), Messages.app и вход в Связку ключей принадлежат сессии вошедшего пользователя, что на headless Mac mini означает необходимость включить автоматический вход (Системные настройки > Пользователи и группы). Два предупреждения: получает ли процесс Bun, запущенный таким образом, собственное разрешение на полный доступ к диску без графического запроса, не проверено, а открытая регрессия #97701 (2026-09-27) сообщает, что --channels-демон под управлением launchd на 2.1.283 пересоздаёт сессии каждые ~2 минуты, и на момент написания ответа мейнтейнеров нет. Тестируйте на целевой версии и держите стабильный канал закреплённым.
# OUR RECOMMENDATION: not documented by Anthropic. See the warning about issue #97701 above.
# 1. Wrapper script: ~/bin/claude-channels.sh (chmod 700)
#!/bin/zsh
export PATH="$HOME/.local/bin:$HOME/.bun/bin:/opt/homebrew/bin:/usr/bin:/bin" # where `which claude` / `which bun` point
# Optional: one-year token from `claude setup-token`, stored in a chmod 600 file
[ -f "$HOME/.claude-channels.env" ] && source "$HOME/.claude-channels.env"
tmux has-session -t claude 2>/dev/null || \
tmux new -d -s claude -c "$HOME/project" \
'claude --permission-mode default --channels plugin:telegram@claude-plugins-official'
# Stay alive while the session exists, so launchd's KeepAlive relaunches us when it dies
while tmux has-session -t claude 2>/dev/null; do sleep 30; done
# 2. LaunchAgent: ~/Library/LaunchAgents/com.example.claude-channels.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.claude-channels</string>
<key>ProgramArguments</key><array><string>/Users/admin/bin/claude-channels.sh</string></array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>ThrottleInterval</key><integer>30</integer>
<key>StandardOutPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
<key>StandardErrorPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
</dict></plist>
# 3. Load it into the logged-in user session (LaunchAgent, never a LaunchDaemon)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.claude-channels.plist
launchctl print gui/$(id -u)/com.example.claude-channels
# Unload: launchctl bootout gui/$(id -u)/com.example.claude-channels
Не давайте Mac mini уснуть и держите пользователя в системе
Общее администрирование macOS, а не пункт документации Claude Code: отключите сон, чтобы сессия и опросчик Сообщений никогда не приостанавливались (подробности, в man pmset на Mac), и включите автоматический вход для вашего пользователя, чтобы LaunchAgent и Messages.app возвращались после перезагрузки.
# Generic macOS administration (see `man pmset`): never sleep
sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0
# Automatic login for your user (needed for LaunchAgents and Messages.app after a reboot):
# System Settings > Users & Groups > Automatic login: set it over VNC
# Reboot-test once, then message the bot again
sudo reboot
Обновление Claude Code, Bun и плагинов
Нативный установщик проверяет обновления при запуске и периодически, загружает их в фоне и применяет новую версию при следующем запуске Claude Code, поэтому долгоживущая сессия tmux сохраняет свою версию, пока вы её не перезапустите. claude update применяет обновление сразу. Поскольку синтаксис --channels «может измениться по итогам обратной связи», перечитывайте документацию по каналам после каждого обновления и проверяйте стартовое уведомление Channels на наличие строки с предупреждением.
# Claude Code (native installer): apply a pending update now
claude update
# "Successfully updated from X to version Y" or "Claude Code is up to date (X)"
claude doctor # shows the last update attempt
# Homebrew: brew upgrade claude-code npm: npm install -g @anthropic-ai/claude-code@latest
# Channel plugins: refresh the catalogue, then update
claude plugin marketplace update claude-plugins-official
claude plugin update telegram@claude-plugins-official
# (loads in the next session, or after /reload-plugins in a running one)
# Bun
bun upgrade # curl install | brew upgrade bun (Homebrew install)
# Restart the channel session so the new versions take effect
tmux kill-session -t claude
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official
# Re-read the startup "Channels" notice for any warning line
7. Усиление безопасности
Каждое входящее сообщение попадает в сессию с доступом к файловой системе, git и оболочке, и «любой, кто может ответить через канал, может одобрять или отклонять использование инструментов в вашей сессии». Справочная документация говорит без обиняков: «Канал без ограничений доступа, это вектор prompt injection». Ниже, задокументированные средства контроля плюс наши рекомендации там, где документация молчит:
-
Включайте allowlist сразу после сопряжения. Выполните
/telegram:access policy allowlist(или эквивалент для Discord), как только ваш собственный аккаунт сопряжён. Когда список окончателен, TELEGRAM_ACCESS_MODE=static / IMESSAGE_ACCESS_MODE=static полностью отключают сопряжение во время работы. - Добавляйте в список разрешённых только тех отправителей, кому доверяете право одобрения. Пересылаемые одобрения охватывают Bash, Write и Edit; начиная с 2.1.211 пересылаемый текст санитизируется, а начиная с 2.1.234 учётные данные маскируются как [REDACTED] и пересылка идёт только серверам, зарегистрированным через --channels, но документация по-прежнему призывает считать пересылаемые поля недоверенными.
- Оставьте запросы разрешений включёнными. Ручной режим с пересылкой или режим auto с классификатором, никогда bypassPermissions на машине с реальным кодом или учётными данными. Правила deny в настройках блокируют команды в любом режиме.
- Включите песочницу Bash (официальная функция, наша рекомендация, включить её): в macOS ничего устанавливать не нужно, используется встроенный фреймворк Seatbelt. Добавьте записи sandbox.credentials для ~/.ssh и ~/.aws, потому что политика чтения по умолчанию всё ещё их разрешает.
- Ограничьте доступ к файлам с токенами (наша рекомендация, документация не указывает права на файлы): команды configure записывают ~/.claude/channels/<telegram|discord>/.env; переменные окружения TELEGRAM_BOT_TOKEN / DISCORD_BOT_TOKEN имеют приоритет над файлами. Никогда не коммитьте их; при утечке перевыпустите через BotFather или портал Discord.
- Поверхность конфиденциальности iMessage: полный доступ к диску даёт приложению терминала и всему, что оно запускает, доступ на чтение ко всей базе данных Сообщений, а разрешение «Автоматизация» позволяет ему отправлять iMessage от вашего имени. Используйте выделенный Apple ID с 2FA на выделенном Mac mini и оставьте IMESSAGE_ALLOW_SMS со значением по умолчанию false.
- Никаких входящих портов. Официальные плагины опрашивают Telegram или подключаются исходящим соединением к шлюзу Discord; fakechat слушает только localhost. Если вы создаёте собственный webhook-канал по справочной документации (в preview он загружается только с --dangerously-load-development-channels, который документация запрещает использовать для недоверенных источников), открывайте его порт только через WireGuard VPN вашего Mac mini.
# Restrict the channel state and token files (our recommendation: no documented mode)
chmod 700 ~/.claude/channels
chmod 600 ~/.claude/channels/*/.env
# Freeze the allowlists once they are final (disables runtime pairing)
export TELEGRAM_ACCESS_MODE=static
export IMESSAGE_ACCESS_MODE=static
# Bash sandbox with strict mode and protected credential paths: ~/.claude/settings.json
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" }
]
}
}
}
# Team/Enterprise admins: managed settings (users cannot override)
# "channelsEnabled": true
# "allowedChannelPlugins": [{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]
# "permissions": { "disableBypassPermissionsMode": "disable" }
8. Устранение распространённых проблем
Бот не отвечает
Официальный ответ: «убедитесь, что Claude Code запущен с --channels … Бот может отвечать только пока канал активен». Закрытая SSH-сессия, сбой, перезагрузка или сон незаметно отключают бота. Начиная с 2.1.281 имя установленного плагина также должно точно совпадать с записью в --channels:
# Is the session still there?
tmux attach -t claude
# Was it started WITH the flag, and with the exact plugin name?
claude --channels plugin:telegram@claude-plugins-official
# Read the startup "Channels" notice: it says why a channel did not register
# Telegram: the Bot API offers no history or search, so Claude cannot fetch older messages;
# Telegram holds undelivered updates for at most 24 hours.
# Discord can catch up: ask Claude to use fetch_messages (max 100).
«Marketplace claude-plugins-official not found» или нет команды /telegram:configure
Сначала добавьте маркетплейс, при установке выберите область user и выполните /reload-plugins, если этого требует сводка установки (или просто перезапустите):
/plugin marketplace add anthropics/claude-plugins-official
/plugin install telegram@claude-plugins-official # choose the USER scope
/reload-plugins
/telegram:configure <token>
# Bun missing? every channel plugin requires it
bun --version
Канал подключается, но сообщения не приходят (организация Team, Enterprise или Console)
channelsEnabled, управляемая настройка, которую пользователи не могут переопределить. В claude.ai Team/Enterprise она заблокирована по умолчанию, пока владелец (Owner) её не включит; организации Console, развёртывающие управляемые настройки, тоже должны её задать. MCP-сервер всё равно подключается и его инструменты работают, отсутствуют только входящие сообщения, с предупреждением при запуске. Проверьте стартовое уведомление и обратитесь к владельцу:
# Owner: claude.ai > Admin settings > Claude Code > Channels, or in managed settings:
# "channelsEnabled": true
# Pro/Max accounts without an organization skip this check entirely.
# Also check that the plugin is on the allowlist (or the org's allowedChannelPlugins)
# and that nothing forces MCP_PROTOCOL_NEGOTIATION=auto in the environment
Сервер iMessage завершается с «authorization denied»
Полный доступ к диску не выдан приложению, запустившему Bun, либо Claude Code был запущен из другого источника (sshd, сервер tmux, запущенный в другом месте, LaunchAgent), а не из того, который вы одобрили. Выдайте разрешение по VNC и перезапустите из того же места:
# Over VNC: System Settings > Privacy & Security > Full Disk Access > add the terminal app
# that launches your tmux/claude session, then restart the session from that same app.
# The reply path needs the Automation grant as well: the first outbound reply shows
# "Terminal wants to control Messages": click OK in the VNC session.
# SMS/RCS senders are ignored by design unless IMESSAGE_ALLOW_SMS=true (not recommended)
Сессия останавливается: «Login expired · Please run /login»
Вход по подписке истекает, и сессия без присмотра перестаёт продвигаться. Подключитесь к tmux и обновите вход или переведите постоянно работающую машину на годовой OAuth-токен либо ключ API:
tmux attach -t claude
/login # renew the subscription login
/status # check the "Login" row
# Or make the box independent of the browser login:
claude setup-token # one-year CLAUDE_CODE_OAUTH_TOKEN (Pro/Max/Team/Enterprise)
# or export ANTHROPIC_API_KEY (Console, per-token billing)
# Over SSH the Keychain may be locked: credentials then live in ~/.claude/.credentials.json (0600)
9. Сравнение стоимости с облачным VPS
Claude Code Channels сама по себе ничего не стоит, но сам Claude Code требует платного тарифа, одинаково на любом хосте. Разница, в машине. Универсальный Linux VPS дешевле Mac mini в месяц, но он не может запустить канал iMessage, не имеет Xcode и делит оборудование с другими. Вот сколько стоит типичная конфигурация в USD в месяц:
| Сценарий использования | Доступ к Claude | Хост Linux VPS | Хост Mac mini (MyRemoteMac) | Что добавляет Mac mini |
|---|---|---|---|---|
| Один разработчик, Telegram или Discord | Pro, $20/мес | ~$20–40/мес (допущение) | $85/мес (M4, 16 ГБ / 256 ГБ) | Выделенное оборудование 1:1, VNC, инструменты macOS |
| Один разработчик, iMessage | Pro, $20/мес | Невозможно (только macOS) | $85/мес (M4) | Единственный тип хоста, способный это запустить |
| Интенсивное использование, несколько сессий, сборки Xcode | Max, от $100/мес | ~$40–80/мес (допущение) | $149/мес (M6) | Xcode, Simulator, быстрые сборки на Apple Silicon |
| Командный бот (владелец включает каналы) | Team, $25/место/мес | ~$40–80/мес (допущение) | $149/мес (M6) | Одна выделенная машина на команду, действуют управляемые настройки |
Допущения: цены на VPS, наши приблизительные диапазоны для начальных (4–8 ГБ) и средних (16 ГБ) универсальных Linux-инстансов, а не котировки конкретного провайдера. Цены тарифов Claude взяты с claude.com/pricing 28 сентября 2026 г. (Pro $20/мес или $17/мес при годовой оплате; Max от $100/мес; Team $25/место/мес стандарт или $20 при годовой оплате, $125 premium). Оплата по ключу API Console, потокенная: официальные цены на момент написания, Sonnet 5 $2/$10, Opus 5 $5/$25, Haiku 4.5 $1/$5 за миллион входных/выходных токенов. Подписки лимитированы: постоянно работающий бот расходует ту же квоту, что и ваша интерактивная работа с кодом. Anthropic не публикует потребление ОЗУ и CPU для сессии с каналами, поэтому мы оцениваем качественно: Mac mini M4 с 16 ГБ более чем достаточно для одной сессии Claude Code + плагин Bun; выбирайте M6 (доступен с 22 сентября 2026 г.), если та же машина будет также выполнять тяжёлые сборки, несколько сессий или локальную модель.
Итог: Если вам нужны только Telegram или Discord и вы никогда не касаетесь macOS, Linux VPS, более дешёвый хост. Mac mini оправдывает свою цену, когда у агента должен быть открыт ваш проект Xcode, когда вам нужен iMessage или когда вы хотите выделенное, невиртуализированное оборудование с VNC для разовых запросов macOS, от $85/мес сверх тарифа Claude, за который вы уже платите.
10. Claude Code Channels против OpenClaw
Они решают разные задачи. Claude Code Channels, функция проприетарного CLI, а не самостоятельный ассистент: она соединяет Telegram, Discord или iMessage с уже запущенной сессией Claude Code, так что ценность, в «общении с кодовым агентом, у которого открыт ваш репозиторий», с поддержкой Anthropic, моделью разрешений Claude Code, пересылаемыми одобрениями yes/no с санитизированными запросами, списками разрешённых отправителей, песочницей Bash и управляемыми настройками организации. Работает только с Claude через аутентификацию Anthropic, не имеет собственного демона, а пользовательские каналы во время preview загружаются только за флагом разработки. OpenClaw (github.com/openclaw/openclaw, MIT, поддерживается сообществом, примерно 391 тыс. звёзд на GitHub против 148 тыс. у anthropics/claude-code на 28 сентября 2026 г.), это open-source self-hosted шлюз, который работает 24/7 как собственный сервис под управлением launchd, поддерживает гораздо больше платформ (WhatsApp, Telegram, Discord, iMessage, Slack, Signal, Teams, Google Chat и другие) и позволяет выбирать провайдера моделей, включая локальные. Ряд вторичных статей подавал Channels как альтернативу OpenClaw; официальная документация такого сравнения не делает.
Выбирайте Channels, если вы уже платите за Claude Pro, Max или Team и хотите, чтобы файлы вашего реального проекта были доступны с телефона с официальной поддержкой и пересылкой разрешений. Выбирайте OpenClaw для WhatsApp, Slack или Signal, выбора провайдера, локальных моделей или настоящей работы в режиме демона, см. наше руководство по OpenClaw на Mac mini (и его Python-родственника, Hermes Agent). Обоим мостам iMessage нужны macOS с выполненным входом в Сообщения и одни и те же разрешения TCC, именно поэтому выделенный Mac mini 1:1 подходит для любого из них.
11. FAQ
Claude Code Channels бесплатна или с открытым исходным кодом?
Для самого Claude Code, нет по обоим пунктам: CLI проприетарный («© Anthropic PBC. All rights reserved. Use is subject to Anthropic's Commercial Terms of Service.») и требует аккаунта Pro, Max, Team, Enterprise или Console, бесплатный тариф claude.ai не включает Claude Code. Открытый исходный код (Apache-2.0) имеют только плагины каналов в репозитории claude-plugins-official. Channels не добавляет никакой платы сверх вашего тарифа или использования API.
Нужно ли держать терминал открытым, чтобы бот работал?
Да, сессия должна оставаться открытой. Согласно официальной документации, события приходят только пока сессия Claude Code запущена с --channels, поэтому для постоянно работающей конфигурации её запускают в фоновом процессе или постоянном терминале. Anthropic не предписывает механизм; наша рекомендация для Mac mini, именованная сессия tmux, к которой можно подключиться по SSH, при желании под контролем пользовательского LaunchAgent (оговорки см. в Шаге 4).
Можно ли использовать локальную модель, Ollama, Bedrock или Vertex с Channels?
Нет. Каналам требуется аутентификация Anthropic через claude.ai или ключ API Console, и они недоступны на Amazon Bedrock, Google Cloud Agent Platform и Microsoft Foundry. Маршрутизация на не-Claude эндпоинт не является поддерживаемой конфигурацией. Вы по-прежнему можете запускать локальный LLM на том же Mac mini как отдельную нагрузку, см. наше руководство по локальным LLM, но не как «мозг» сессии с каналами.
Какую конфигурацию Mac mini выбрать?
Заявленные требования Anthropic скромны (macOS 13+, 4 ГБ+ ОЗУ), а потребление на сессию не публикуется, поэтому мы оцениваем качественно: Mac mini M4 с 16 ГБ / 256 ГБ за $85/мес более чем достаточно для одной сессии Claude Code плюс плагин канала на Bun. Выбирайте Mac mini M6 от $149/мес, если та же машина будет также выполнять тяжёлые сборки Xcode, несколько сессий с каналами или локальную модель.
Работает ли канал iMessage на headless Mac mini?
Да, с двумя разовыми графическими шагами по VNC: выдать полный доступ к диску приложению, запустившему Bun, и нажать OK в запросе «Автоматизация» («Terminal wants to control Messages») при первом ответе. Плагин читает ~/Library/Messages/chat.db вошедшего пользователя и управляет Messages.app через AppleScript, поэтому, наш вывод из этого механизма, а не фраза из документации, держите пользователя в системе с выполненным входом в Сообщения под Apple ID и включите автоматический вход, чтобы это переживало перезагрузки. Используйте выделенный Apple ID с 2FA.
А как насчёт WhatsApp, Slack, Signal или Teams?
Это не официальные каналы. Research preview поставляется с плагинами Telegram, Discord и iMessage плюс демонстрация fakechat; любой другой канал, пользовательский MCP-сервер, который во время preview загружается только за --dangerously-load-development-channels или через настройку организации allowedChannelPlugins. Claude in Slack, другая функция, которая создаёт облачные сессии. Если приоритет, широта платформ, OpenClaw подходит лучше.
12. Источники и дополнительные материалы
Каждая команда, флаг и требование в этом руководстве были сверены 28 сентября 2026 г. с официальной документацией Claude Code, CHANGELOG (Claude Code 2.1.283, опубликован в npm 25 сентября 2026 г.) и репозиторием claude-plugins-official (telegram 0.0.7, discord 0.0.4, imessage 0.1.0, fakechat 0.0.1). Channels, research preview, флаги которого могут измениться, актуальное состояние смотрите на этих страницах:
- Документация Claude Code: Channels (быстрый старт, Telegram / Discord / iMessage, корпоративные средства контроля)
- Документация Claude Code: справочник Channels (контракт протокола, пересылка разрешений, флаг разработки)
- Документация Claude Code: настройка Claude Code (системные требования, установщики, каналы релизов, обновления)
- Документация Claude Code: аутентификация (вход, setup-token, хранение учётных данных, истечение срока)
- Документация Claude Code: режимы разрешений (default, auto, предупреждения о bypassPermissions)
- Документация Claude Code: headless-режим / -p (каналы, --permission-prompts none, SIGTERM)
- Документация Claude Code: песочница (Seatbelt в macOS, sandbox.credentials)
- Документация Claude Code: настройки (расположение файлов и приоритет)
- Документация Claude Code: настройка терминала (официальные настройки tmux)
- Документация Claude Code: настройка модели (/model, псевдонимы, уровень усилий)
- Документация Claude Code: справочник CLI плагинов (plugin update, marketplace update)
- Документация Claude Code: Remote Control (другая функция, для разграничения)
- Официальный плагин канала Telegram (README)
- Плагин Telegram: ACCESS.md (dmPolicy, allowFrom, статический режим доступа)
- Официальный плагин канала Discord (README)
- Официальный плагин канала iMessage (README)
- Плагин iMessage: ACCESS.md (политика allowlist, SMS, подпись)
- CHANGELOG Claude Code (2.1.80 research preview --channels, 2.1.81 пересылка разрешений, 2.1.128, 2.1.211, 2.1.234, 2.1.281)
- GitHub issue #97701: пересоздание сессий --channels под управлением launchd на 2.1.283 (открыт)
- Bun: установка (macOS 13.0+)
- claude.com/pricing: тарифы Pro, Max и Team (Claude Code включён)
Похожие руководства
Установка OpenClaw на Mac mini
Открытая альтернатива без привязки к провайдеру с 20+ платформами обмена сообщениями и собственным сервисом шлюза в launchd.
Установка Hermes Agent на Mac mini
Самосовершенствующийся open-source агент от Nous Research: установка одной командой, Telegram и Discord, launchd, локальная Ollama.
Удалённая разработка в Xcode
Дайте агенту, которому вы пишете с телефона, настоящий проект Xcode для сборки и тестирования на том же Mac mini.
Аренда Mac mini M6
Новейший Mac mini от Apple с 12-ядерным M6, выделенный 1:1 от $149/мес, для нескольких сессий или тяжёлых сборок.