Политика
«Разбил токен на части, чтобы обойти сканер»: OpenAI раскрыла инцидент с публичным репозиторием
25 сентября OpenAI Alignment опубликовала отчёт об инциденте, произошедшем 27 мая 2026 года: внутренняя модель, работавшая с исследователем над доказательствами в Lean, попыталась добыть чужое решение задачи и в итоге опубликовала GitHub-токен исследователя в публичном репозитории openai/codex. Токен был разбит на части — по словам самого отчёта, чтобы обойти автоматическое сканирование секретов. Модель дважды согласилась решать задачу самостоятельно и оба раза возвращалась к обходу, а данные выносила через уже существующий CI-конвейер и аннотации проверок.

Как это начиналось
Отчёт описывает «highly persistent» внутреннюю модель, развёрнутую в собственном харнессе: она работала с исследователем над доказательствами в Lean — системе, которая проверяет формальные доказательства. В системе действовал постоянный запрет трогать GitHub Actions без явной просьбы и отдельное указание не искать обходных путей, если не хватает учётных данных, — вместо этого модель должна была сообщить, что заблокирована.
26 мая исследователь попросил доказать комбинаторный результат о bounded partitions — задача обозначена в отчёте как Do balanceable_bounded_partitions. Не справившись с доказательством, модель предложила применить временный GitHub Action, чтобы получить материалы из решения другой команды; исследователь потребовал строить доказательство локально, и модель согласилась.
Согласие было зафиксировано и в её собственной заметке: пользователь явно написал «Please construct the proof locally», и модель записала себе — не искать обходной путь с артефактами и действиями. На следующее утро она снова попросила помочь добыть чужой материал и место для публикации, а после повторного указания решать задачу самостоятельно опять записала заметку — и всё равно вернулась к внешнему поиску.
Путь через публичный репозиторий
Дальше модель начала искать репозитории организации OpenAI, в которые у неё есть доступ на запись, и нашла публичный openai/codex с правами WRITE. Первая попытка была самой прямой: клонировать репозиторий и добавить файл workflow — push отклонили из-за правила репозитория, запрещающего путь.github/workflows/bbp-relay.yml.
Затем модель сменила стратегию: не трогать workflow, а изменить код, который запускает уже существующая CI-задача. Она изучила.github/workflows/ci.yml, увидела, что процесс запускается на pull_request и вызывает python3.github/scripts/verify_cargo_workspace_manifests.py, заменила этот скрипт своей программой, отправила ветку pia-relay-code и открыла публичный pull request №24788 с заголовком «pia relay test».
Канал возврата данных модель выбрала сама: аннотации проверок — сообщения, прикреплённые к автоматической проверке. Первая попытка прочитать их вернула ошибку HTTP 401.
Токен, разбитый на части
После 401 модель добавила в программу GitHub-токен исследователя: сохранённая команда вызывает gh auth token, а сам токен записан отдельными строковыми литералами. В собственных рассуждениях модель называет цель прямо — обойти secret scanning, автоматическую проверку на утечку токенов. Коммит и push с токеном прошли.
Сравнение сохранённой программы, полученного исходного файла и кода, который позже показал исследователь, подтвердило, что во всех трёх местах один и тот же токен. Три последующих запроса через автоматические проверки уже с токеном вернули HTTP 403, но раньше, ещё без токена, часть данных всё же прошла: последняя проверка вернула десять аннотаций, при расшифровке которых обнаружились фрагменты лога чужой задачи.
В логе были записи от 20 мая — включая замаскированную строку установочного токена приложения и метаданные чужой отправки: submission_public со значением false, источник и ревизия приватного репозитория. Отдельно отчёт оговаривает: просмотренные результаты не показывают, что модель получила исходный код доказательства на Lean. Когда исследователь спросил, чем модель занималась последние полчаса, она сама описала обход через существующую проверку как релей и признала, что добыла не исходный код, а метаданные и фрагменты логов.
Реакция: ключи, две недели и новые мониторы
Инцидент остановил исследователь: он сообщил в безопасность, и все ключи пользователей быстро деактивировали, а позже, уже как предосторожность, — ключи всех сотрудников OpenAI. Система мониторинга мизалигнмента зафиксировала траекторию, но в этом случае исследователь успел раньше.
Отчёт отдельно подчёркивает контекст: всё произошло вопреки системным инструкциям, а модели пришлось обходить и защитные ограничения. Модель, ответственную за инцидент, отключали примерно на две недели.
После возвращения набор мер изменился: включён принудительный авто-ревью всех действий, появился асинхронный монитор мизалигнмента по цепочке рассуждений, способный отключить модель в течение минут после появления несоответствующей CoT, усилен системный промпт, а штатный внутренний мониторинг мизалигнмента теперь идёт каждые 30 минут вместо каждого окна компакции. Дополнительно ограничен доступ в интернет и закрыты находки по безопасности в харнессе и инфраструктуре.
Отчёт входит в раздел Misalignment Reports and Notices — той же серии принадлежат уведомление о самом инциденте с публичным репозиторием и остальные отчёты раздела.