Как безопасно поделиться сессией OpenCode и отозвать ссылку
Ссылка OpenCode — это публичная страница для любого, кто получил URL, а не приватное приглашение конкретному коллеге. Руководство объясняет, какие данные попадают в общий доступ, как выбрать manual или disabled, проверить всю сессию на секреты и корректно отозвать ссылку через /unshare.
Содержание

Перед отправкой сессии OpenCode коллеге относитесь к ссылке как к небольшой публичной публикации, а не как к приватному приглашению одному человеку. В официальной документации OpenCode сказано: общая беседа доступна любому, у кого есть ссылка. Для большинства команд безопасная схема такова: режим manual, полная проверка истории, затем /share, а после завершения работы — /unshare. Для чувствительных проектов лучше сразу выбрать disabled.
Что именно открывает ссылка OpenCode
Ссылка показывает не только последний ответ, который вы хотите обсудить. Согласно официальной документации OpenCode Share, при публикации создаётся уникальный публичный URL, история беседы синхронизируется с серверами OpenCode, а по ссылке становятся доступны:
- полная история разговора;
- все сообщения и ответы;
- метаданные сессии.
Это не означает, что OpenCode автоматически публикует весь локальный репозиторий. Но если исходный код, конфигурация, журнал, вывод команды или содержимое файла появились в сообщении либо ответе, они уже входят в общую историю. Стандартная ссылка не привязана к адресу коллеги: открыть её может любой, кто получил URL.
Общая сессия остаётся доступной, пока вы явно не отмените публикацию. Поэтому недостаточно проверить только последние сообщения, а сложный для угадывания адрес нельзя считать полноценным контролем доступа.
Какой режим выбрать: manual, auto или disabled
В обычной работе выбирайте между manual и disabled. auto уместен только тогда, когда вы осознанно хотите автоматически публиковать каждую новую беседу до ручной проверки.
| Режим | Что происходит | Когда подходит | Основной риск |
|---|---|---|---|
manual | Режим по умолчанию; ссылка появляется только после /share | Редкое совместное обсуждение уже проверенной сессии | Проверяющий может что-то пропустить, но новые сессии не публикуются сами |
auto | Каждая новая беседа автоматически получает общую ссылку | Намеренно публичный рабочий процесс | Секреты, код или логи могут стать публичными до проверки |
disabled | Публикация полностью отключена | Приватный код, данные клиентов, регулируемая среда или отсутствие нужды в публичных ссылках | Придётся использовать другой, контролируемый способ совместной работы |
Практическое правило: используйте manual, если иногда нужно показать коллеге проверенную сессию; используйте disabled, если проект чувствительный, публичные ссылки не нужны или команда не может гарантировать качественную проверку. Не включайте auto только ради того, чтобы не вводить /share.
Проверьте всю историю, а не только финальный фрагмент
Просмотрите беседу от первого сообщения до последнего. Публичная страница содержит полную историю, поэтому очистить текст, который вы собираетесь отправить в рабочий чат, недостаточно. Если секрет остался в исходной сессии, эту сессию публиковать нельзя.
1. Учётные данные и материалы аутентификации
Ищите API-ключи, токены доступа, пароли, приватные ключи, cookie, токены сессий, заголовки Authorization, строки подключения к базе, подписанные URL и реальные значения из .env. Имена переменных и безопасные заглушки обычно допустимы; действующие значения — нет.
Если секрет уже попал в историю и вы не можете подтвердить его удаление, отзовите или замените секрет, создайте новую чистую сессию без него и делитесь только ею.
2. Закрытый код и деловой контекст
Проверьте исходники, патчи, конфигурацию, SQL, описание архитектуры, имена клиентов, внутренние требования и ещё не выпущенные функции. Даже безобидные по отдельности фрагменты вместе могут раскрыть устройство системы, бизнес-логику или границы безопасности.
3. Логи и вывод команд
Логи и ошибки часто содержат локальные пути, имена пользователей, почту, хосты, внутренние домены, IP-адреса, названия репозиториев и веток, номера задач, базы данных или параметры запросов. Ищите не только слова token и password: просмотрите stack trace, результаты тестов, CI-логи, git diff, команды curl и весь вывод терминала.
4. Метаданные и идентифицирующий контекст
OpenCode прямо указывает метаданные сессии среди публикуемых данных. Проверьте название проекта и сессии, ветки, пути к файлам и другие признаки, по которым можно определить организацию или внутреннюю систему.
5. Если надёжно очистить историю нельзя, создайте новую сессию
Публичная документация не обещает автоматического скрытия секретов. Не рассчитывайте, что OpenCode сам замаскирует ключи, и не публикуйте сессию «для проверки, что будет видно». Перенесите минимально необходимый код, ошибку и контекст в новую чистую беседу — это надёжнее, чем пытаться доказать безопасность длинной истории.
Как безопасно поделиться в режиме manual
manual используется по умолчанию и лучше всего поддерживает принцип «сначала проверить, потом публиковать».
Шаг 1. Проверьте итоговое значение share
OpenCode объединяет конфигурацию из нескольких мест; при конфликте более поздний источник переопределяет ранний. Глобальный файл обычно находится в ~/.config/opencode/opencode.json, а проектный opencode.json — в корне репозитория. Выполните:
opencode debug config
В итоговой конфигурации убедитесь, что share равен manual, а не auto, оставшемуся в другом источнике. Порядок загрузки описан в официальной документации OpenCode Config.
Чтобы явно включить ручной режим, добавьте в нужный opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
Шаг 2. Завершите проверку конфиденциальности
Пройдите по всему списку выше. Если в истории остались действующие секреты, закрытый код, конфиденциальные логи или раскрывающие контекст метаданные, остановитесь. Для продолжения обсуждения создайте отдельную минимальную сессию.
Шаг 3. Выполните /share в проверенной сессии
/share
По официальной документации команда создаёт уникальный URL и копирует его в буфер обмена. Не пересылайте адрес сразу: сначала проверьте его как публичную страницу.
Шаг 4. Посмотрите страницу глазами получателя
Откройте URL в приватном окне или браузере без входа и прочитайте страницу от начала до конца. Убедитесь, что вы готовы показать всё содержимое любому человеку, получившему ссылку, включая ранние сообщения и длинные свёрнутые журналы.
Эта проверка не создаёт новый уровень доступа. Стандартная ссылка остаётся публичной.
Шаг 5. Отправьте ссылку контролируемым каналом и назначьте срок отзыва
Передавайте URL только в нужном рабочем канале и попросите не пересылать его дальше. Такая просьба снижает риск случайного распространения, но технически не ограничивает получателей. Сразу определите момент отзыва: после исправления ошибки, окончания ревью или заданного времени.
Как полностью отключить публикацию для чувствительного проекта
Если в проекте есть клиентские данные, производственные секреты, закрытый код или просто нет законной причины для публичных ссылок, disabled надёжнее, чем надежда на безошибочную ручную проверку.
Добавьте в корневой opencode.json и сохраните в Git:
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
Официальная документация Share рекомендует проектную конфигурацию для применения правила в команде. Поскольку настройки объединяются, после изменения всё равно выполните opencode debug config, особенно если используются inline-настройки или конфигурация администратора.
Для правила, которое обычный пользователь не может переопределить, администратор должен использовать managed settings. Текущая документация указывает системные каталоги /Library/Application Support/opencode/ для macOS, /etc/opencode/ для Linux и %ProgramData%\opencode для Windows. Управляемые настройки имеют более высокий приоритет, чем пользовательские и проектные. В корпоративной среде также доступны ограничения через SSO и самостоятельное размещение.
Как отозвать уже созданную ссылку
Отзыв выполняется явно. Закрытие терминала, удаление сообщения со ссылкой или очистка буфера обмена не отменяют публикацию.
Шаг 1. Вернитесь в исходную сессию и выполните /unshare
/unshare
Документация OpenCode говорит, что команда удаляет публичный доступ и ссылку, а также данные, связанные с общей беседой.
Шаг 2. Проверьте старый URL снаружи
Сохраните исходную ссылку и снова откройте её в приватном окне либо другом браузере. Реальный признак успеха — старая страница больше не показывает беседу, а не просто отсутствие видимой ошибки в команде. Если содержимое всё ещё доступно, убедитесь, что вы отозвали именно ту сессию, и проверьте состояние клиента.
Шаг 3. При неудачной проверке считайте ссылку активной
Текущая публичная страница Share описывает отзыв через /unshare в исходной беседе и не перечисляет отдельную общедоступную панель управления ссылками. Если вы не можете открыть исходную сессию, команда недоступна или старый URL по-прежнему показывает данные, не сообщайте команде об успешном отзыве. Считайте ссылку публичной и обратитесь к администратору OpenCode или в поддержку, пока внешняя проверка не подтвердит закрытие доступа.
Что /unshare не может вернуть назад
Команда прекращает выдачу общей беседы OpenCode по старому URL. Она не удаляет память получателя и не забирает сохранённые им скриншоты, скопированный код или скачанные журналы.
Официальная страница говорит об удалении данных, связанных с общей сессией, но не обещает очистить сторонние кэши, браузерные копии или архивы получателей. Поэтому отзыв — обязательное завершение, а не замена проверке до публикации. Если был раскрыт действующий секрет, отзовите или замените его независимо от /unshare.
Частые вопросы
Ссылка публикует весь локальный репозиторий?
Документация называет полную историю, сообщения, ответы и метаданные сессии; автоматическая публикация всех локальных файлов там не заявлена. Но любой код, файл, патч или лог, попавший в беседу, нужно считать частью общей страницы.
Можно разрешить доступ только одному коллеге?
Стандартная функция описана как публичная ссылка для любого, кто получил URL, а не как список доступа по электронной почте. Организациям с обязательной идентификацией стоит рассмотреть SSO-ограничение или самостоятельное размещение.
Почему ссылка появилась без /share?
Проверьте, не равен ли итоговый параметр share значению auto. Выполните opencode debug config и найдите, какой глобальный, проектный, inline- или managed-источник победил.
Что делать, если /share недоступен?
Проверьте, не установлен ли disabled и не зафиксирован ли он управляемой политикой. Не обходите командное правило настройкой с меньшим приоритетом; уточните у администратора разрешённый способ сотрудничества.
Контрольный список перед отправкой
Перед отправкой ссылки убедитесь, что:
- итоговый режим —
manual, либо проект намеренно используетdisabled; - вы просмотрели историю от первого сообщения;
- в ней нет действующих секретов, внутренних URL, закрытого кода, клиентских данных и чувствительных логов;
- публичная страница проверена в окне без авторизации;
- определены получатели, канал и момент отзыва;
- после совместной работы вы выполните
/unshareв исходной сессии и проверите старый URL.
Если воспринимать общий сеанс как публикацию, а не как обычное вложение в чате, критические риски гораздо легче заметить до отправки ссылки.