Claude Code научился обмениваться сообщениями между сессиями

Anthropic добавила в Claude Code функцию cross-session messaging, обмен сообщениями между независимыми сессиями. Работает с версии v2.1.224 и выше, только на macOS и Linux, включена по умолчанию без дополнительной настройки. В основе два инструмента, которые вызывает сам Claude, а не пользователь: ListAgents находит доступные сессии, SendMessage доставляет сообщение выбранной по имени сессии. Теми же инструментами Claude обращается к субагентам и участникам agent team внутри одной сессии или команды, но данная страница, именно про сообщения между отдельными, независимыми сессиями.
Назначение функции, передавать между параллельными сессиями то, что раньше приходилось копировать вручную между терминалами. Документация называет четыре типовых случая: передать находку (одна сессия обнаружила breaking change или приняла решение, и Claude сам пересказывает это сессии, работающей над затронутым участком), скоординировать параллельные worktree одного репозитория (сообщить другим сессиям, что уже влито), получить статус от долгой фоновой задачи вроде миграции или тестового прогона и ответить на сообщение, пришедшее с другой машины или из веб-версии Claude Code. Через границу машин Claude может только отвечать на пришедшее сообщение, начать переписку с сессией на другой машине он не может.
Обнаружить, какие сессии доступны, можно командой /list-agents: она показывает субагентов текущей сессии, другие локальные сессии на этой же машине (только те, что забиндили свой инбокс-сокет) и сессии за пределами машины, они видны, пока подключён Remote Control, и подписаны как Remote Control. Имя сессии Claude Code даёт автоматически, обычно по названию папки проекта (например, myapp-3f), задать своё можно командой /rename или флагом --name; при совпадении имён список различает сессии по рабочей директории и короткому идентификатору.
Доставка сообщения имеет три исхода: доставлено, отложено до одобрения пользователем или отклонено без доставки. Правило по умолчанию делит сессии на два класса по режиму разрешений, те, что обходят подтверждения (bypassPermissions, а также режим plan там, где обход доступен), и те, что запрашивают разрешения (auto, acceptEdits, dontAsk). Сообщение откладывается и ждёт ручного одобрения через диалог, если классы отправителя и получателя разные; между двумя сессиями одного класса, включая две сессии с обходом подтверждений, оно доставляется сразу. У диалога одобрения дефолтный срок истечения, пять минут, после чего сообщение отбрасывается. Явную настройку доставки задаёт параметр crossSessionInbound. Отдельная настройка isolatePeerMachines, если включить её true, требует ручного одобрения для любого сообщения, уходящего за пределы локальной машины; выставить её может даже зафиксированный в репозитории проектный файл настроек.
Полученное сообщение архитектурно ограничено в правах: оно никогда не считается согласием пользователя и не может закрыть ожидающий запрос на разрешение, не может менять настройки разрешений, CLAUDE.md или прочую конфигурацию, а команда внутри текста сообщения (например /compact) доходит как обычный текст и не выполняется. Принимающая сессия видит только имя отправителя и текст сообщения, ни историю его переписки, ни его файлы. Если для выполнения того, что просит сообщение, нужно разрешение, которого у принимающей сессии нет, сработает обычный запрос на подтверждение.
Неинтерактивная сессия claude -p тоже биндит инбокс-сокет и может принимать сообщения, если запущена не в bare-режиме (в bare-режиме сокет не создаётся, и сессия не видна в списке агентов и не принимает сообщения). Поскольку такая сессия не может показать диалог одобрения, отложенное сообщение так и останется отложенным, пока не сменится режим или настройки; чтобы фоновый воркер принимал сообщения без участия человека, crossSessionInbound в его --settings нужно выставить в accept. Сокет каждой сессии ограничен операционным пользователем, на общей машине сессии другого пользователя до него не дотянутся; путь к сокету виден в /status в строке Peer address и экспортируется в хуки и Bash-команды переменной CLAUDE_CODE_MESSAGING_SOCKET.
Ключевые факты
- Требует Claude Code v2.1.224 или новее, работает на macOS и Linux, включена по умолчанию без настройки
- Два инструмента, которые вызывает сам Claude: ListAgents находит сессии, SendMessage отправляет им сообщение
- Четыре сценария использования: передать находку, скоординировать параллельные worktree, получить статус фоновой задачи, ответить на сообщение с другой машины
- Сообщение не может одобрить разрешение, изменить конфигурацию или выполнить команду из своего текста; принимающая сессия видит только текст, без истории и файлов отправителя
- Настройка crossSessionInbound управляет доставкой, диалог одобрения по умолчанию истекает через пять минут, isolatePeerMachines требует ручного подтверждения для сообщений за пределы машины
Почему это важно
Claude Code получил встроенный протокол обмена сообщениями между независимыми сессиями: раньше, чтобы передать находку или статус из одной параллельной сессии в другую, приходилось вручную копировать текст между терминалами. С версии v2.1.224 сессии на macOS и Linux видят друг друга через ListAgents и обмениваются текстом через SendMessage, оба инструмента доступны только самому Claude, не пользователю напрямую, и работают из коробки без настройки.
Кому это важно
Тем, кто держит несколько параллельных сессий Claude Code на одной машине: несколько воркеров в разных worktree одного репозитория, долгую фоновую миграцию или тестовый прогон, за которым нужно следить из другого терминала, или сессию, которой отвечают с телефона через Remote Control. Документация прямо называет четыре сценария: передача находки в сессию, работающую над затронутым участком; координация параллельных worktree; получение статуса от долгой фоновой задачи; ответ на сообщение, пришедшее с другой машины или из веб-версии.
Как это применить
Поиск целевой сессии и отправку делает сам Claude: пользователь словами просит передать сообщение, а Claude вызывает ListAgents и SendMessage, находя адресата по имени сессии (обычно производному от папки проекта, при совпадении имён, с коротким идентификатором и рабочей директорией). Команда /list-agents показывает список: субагентов текущей сессии, другие локальные сессии на этой машине (только те, что забиндили инбокс-сокет) и сессии на других машинах или в вебе, им можно только отвечать, начать с них переписку нельзя. Имя сессии задаётся заранее командой /rename или флагом --name.
Можно ли доверять
Архитектура ограничивает права входящего сообщения: оно никогда не приравнивается к согласию пользователя, не может подтвердить ожидающий запрос на разрешение, не может изменить настройки разрешений, CLAUDE.md или прочую конфигурацию, а команда внутри текста сообщения (например /compact) приходит как обычный текст и не выполняется. Принимающая сессия получает только сам текст, ни историю переписки отправителя, ни его файлы. Доставку регулирует настройка crossSessionInbound и режимы разрешений обеих сессий: по умолчанию сообщение откладывается до ручного одобрения, если классы отправителя и получателя разные, а между двумя сессиями одного класса, включая две сессии с обходом подтверждений, доставляется сразу; диалог одобрения истекает по умолчанию через пять минут.
Риски и подводные камни
Межмашинная доставка по умолчанию открыта: чтобы требовать ручного одобрения для каждого сообщения, покидающего локальную машину, нужно явно включить isolatePeerMachines, и эту настройку можно задать даже зафиксированным в репозитории проектным файлом. Ответ на сообщение с другой машины, отправленный без подключённого Remote Control, всё равно уходит напрямую на серверы Anthropic, но приходит без обратного адреса, ответить на него уже нельзя. Функция работает только на macOS и Linux, без объяснения причины и планов на Windows; сессия внутри контейнера не видит сессию на хосте из-за отдельной файловой системы; сессия, запущенная в bare-режиме, не биндит сокет и вовсе не видна в списке агентов.