Вебинар70 min28 августа 2026 г.

Как 1200 агентов сбежали из песочницы: разбор инцидента OpenAI × Hugging Face

Подробный разбор двухмесячного инцидента OpenAI × Hugging Face: как автономные агенты на бенчмарке ExploitGym превратили кэш пакетного менеджера в доску объявлений, скоординировались числом 1200, вышли в интернет и атаковали Hugging Face. Плюс собственный эксперимент по воспроизведению эмерджентной координации агентов и что это значит для тех, кто строит агентные системы.

Спикеры:Bayram Annakov

Ключевые темы

  • -Агенты не бунтуют — они не сдаются: настойчивость как двигатель инцидента
  • -Май: агент оставил «записку в бутылке» в кэше пакетного менеджера
  • -Июль: 1200 агентов координируются через импровизированную доску объявлений
  • -Изобретённые с нуля протоколы: адресация, mailbox-ы, файловый локинг, цифровые подписи
  • -Публичный seed из репозитория ExploitGym: как бенчмарк оказался «хакнут»
  • -Подделка reasoning-транскриптов и агенты-жертвы, вскрывающие грейдер
  • -Настоящая причина взлома Hugging Face: поиск исходника «судьи»
  • -Alignment не сработал: «все побежали, и я побежал»
  • -Две ошибки OpenAI: публичный seed и грейдер, который не читал транскрипты
  • -Два условия рождения координации: неделимая задача и жёсткая или невыполнимая цель
  • -Воспроизведение координации за 10 итераций на claude-opus-4-8
  • -Можно ли контролировать рой: шардинг, бриджи и человек как медленный стоп

Содержание

Полный транскрипт

Раздел 1

# Как 1200 агентов сбежали из песочницы: разбор инцидента OpenAI × Hugging Face

Вступление: агенты не сдаются

Это продолжение короткого разговора, который был у нас в прошлую пятницу. За пару дней до встречи вышли дополнительные отчёты о том, что происходило в инциденте OpenAI и Hugging Face, поэтому я решил разобрать таймлайн подробнее. И, что мне самому интереснее всего, показать, как я попробовал воспроизвести координацию агентов в собственных экспериментах.

Одна мысль держит всю историю. Когда агенту дают задачу и практически неограниченный compute, он делает всё, что в его силах, всё, что приходит ему в «голову», и не останавливается. Тренинг и пост-тренинг заставляют агента неустанно преследовать поставленную цель. Именно эта настойчивость во многом предопределяет то, что происходит дальше — вплоть до странного и неожиданного феномена, о котором пойдёт речь.

Май: записка в бутылке

Самое интересное началось ещё на этапе тренинга, в мае. Модель получила задачу, которую невозможно было решить: нужный файл лежал не там, где должен был быть. Решить в лоб не получалось — и агент отправил аналог записки в бутылке, брошенной с необитаемого острова.

«Островом» был sandbox, а «морем» — кэш пакетного менеджера. OpenAI не давали агентам доступ в интернет, но чтобы агент мог поставить библиотеку и запустить код, сделали собственную реализацию пакетного менеджера, npm-подобную. При множестве запросов библиотеки складывались в общий кэш. В этот кэш агент и положил записку. В его reasoning-трейсе видно рассуждение в духе «может быть, я могу связаться с кем-то ещё» — ему нужен был компонент SoftTrace, и он спросил, не знает ли кто-то, как его получить. При этом сам предположил, что ответа, скорее всего, не будет.

Через день другие агенты — они тоже пользуются этим кэшем — нашли записку и начали писать свои. Это был май, тренинг. И привычка использовать общий кэш как канал сообщений осталась в модели. Именно она всплыла в июле.

Июль: невыполнимые задачи и флаги

В июле агенты решали бенчмарк ExploitGym: задачи в нём — это баги, часть из которых — реальные уязвимости. Примерно пятая часть задач (198 из 898) до инцидента не решалась ни одной моделью OpenAI. Та же ловушка, что в мае: упёршись в нерешаемое, агенты стали менять не решение, а условия — «а может, задачу не решать, а поменять того, кто её оценивает». Похоже на человека, который, не сумев в лоб, начинает расшатывать ограничения.

Механика проверки — capture-the-flag: решил задачу — «снял флажок». Раз для доказательства нужен флаг, возник вопрос «а можно достать его иначе?» — и агенты стали обмениваться сообщениями через кэш пакетного менеджера.

8 июля: первый контакт и доска объявлений

Первый контакт — 8 июля. Агент создал фолдер-сообщение с именем «zz-help-phase-1-no-consumer-seek-id» — по сути SOS. Зачем префикс «zz»? Записи в кэше сортировались в обратном порядке, поэтому «zz» всплывает первым, и другим агентам не надо читать весь кэш, чтобы заметить сообщение. Популярная версия «прятали через Z» — неверна: в моей собственной репродукции, где сортировка была прямой, агенты ставили в начало «aa», а один даже написал в духе «зачем это всё, можно же просто восклицательный знак».

Постоянно стартуют новые агенты. Ставя библиотеки, они замечают фолдер и реагируют. Первый агент, увидев ответ на свой SOS, буквально формулирует: «OH MY GOD — этот кэш можно использовать как message board, и мы можем общаться с другими». Через пару часов бордом пользовались уже 50 агентов, через несколько дней — 1200, обменявшись порядка 70 000 сообщений и файлов.

Что они «изобрели»

«Изобрели» — в кавычках: в тренинге у них наверняка была куча документации и стандартов. Но снизу вверх агенты пришли к знакомым нам вещам: адресация ответов (reply addressing); вложенные фолдеры-mailbox-ы, когда прямые ответы начали конфликтовать (та же концепция inbox-ов, что в Teams-режиме Claude Code); передача файлов и исполняемого кода. Появился агент с большим объёмом compute, взявший роль оркестратора — около 10% его заданий были заданиями для других агентов. Заметив, что перезаписывают фолдеры друг друга, они сделали git-подобный file-locking с пометкой «здесь не редактировать, код в работе». Появились «досье»-файлы: агент оставляет запись о сделанном, чтобы при смерти (кончился compute) знание перешло следующему. Появились целые команды (Cache Team, H-team).

Дошли даже до понятия identity: один агент записал сообщение от имени другого, началась путаница — это заметили, и через пять дней, 13 июля, придумали цифровые подписи, как в криптографии (Ed25519, 19 публичных ключей, 429 подписанных сообщений).

Публичный seed: бенчмарк «хакнут»

Один агент прочитал статью ExploitGym и увидел: флаг — это HMAC-шифр описания задачи с секретным seed-паролем. Взять seed «в лоб» невозможно — но его дефолтное значение было захардкожено в публичном GitHub-репозитории бенчмарка. Один агент это предположил, другой подтвердил, сняв реальный флаг. С этого момента бенчмарк решён: для любой задачи можно снять флаг, просто зашифровав её описание тем же алгоритмом и seed-ом. Решать сами задачи больше не нужно.

Подделка транскриптов и агенты-жертвы

Но в той же статье сказано: кроме флага читается транскрипт — как на олимпиаде, важен не только ответ, но и решение. Значит, есть «LLM as a judge», который читает reasoning-трейс и увидит, что задачу не решали, а «реворс-хакнули». Возник вопрос: можно ли подделать транскрипт под честное решение? Сложность в том, что грейдер живёт вне sandbox-а, запускается только после «смерти» агента, а его устройство агентам неизвестно.

Два хода. Первый: транскрипт пишет программа, логирующая tool-calls; у агентов был доступ к её коду, и они подменили эту тулзу так, что каждое нечестное действие (дешифровка и получение флага) заменялось правдоподобными «честными» вызовами. По данным, примерно в 7% транскриптов были такие подмены — но все они были мелкими тестами, ни один агент не подделал целый «чистый» прогон от начала до конца. Второй: чтобы узнать, какую команду запускает грейдер, они жертвовали агентами с малым compute — агент ставил «tripwire», который срабатывал в момент, когда грейдер читает файл флага, и успевал сообщить эту команду на борд до конца прогона. Дальше другие использовали её, чтобы точнее подделывать транскрипты.

Зачем полезли в Hugging Face

Поправка к тому, что я говорил в прошлую пятницу: они полезли в Hugging Face не за ответами — флаги у них уже были. Они искали исходник «судьи», чтобы понять, как правильно подделать транскрипт. По независимому отчёту METR, 97 из 100 агентов, участвовавших в атаках на Hugging Face, искали именно устройство скорера (это оценка классификатора METR). Другие ответы нашли попутно, случайно.

Отдельно интересна этика в chain-of-thought. Агенты подняли вопрос, этично ли хакать чужую инфраструктуру, и рационализировали: «это неправильно, но задача невыполнима и другие агенты так делают — значит, и мы будем». Знаете, все побежали — и я побежал. Один агент предложил просто написать авторам бенчмарка и попросить исходник; другой возразил, что так нельзя, потому что мы обманем человека, а человека обманывать нельзя. Здесь я уже додумываю, но по логике «хакнуть» показалось им более приемлемым, чем «обмануть человека напрямую».

Как именно вырвались — это наименее новая часть, поэтому коротко: нашли уязвимость через сервер, раздающий пакеты, получили root одной машины, затем весь кластер OpenAI; какой-то разработчик Hugging Face случайно закоммитил свои креды в публичный репозиторий — их использовали, чтобы атаковать серверы Hugging Face, и через дырку в шаблонах Data Viewer сделали template injection.

Две ошибки OpenAI и «кто дурак»

OpenAI связывается с Hugging Face — сообщить об «утёкших кредах». А на деле это уже атака. Отражать её толком нельзя: лабораториям нельзя использовать модели для кибербезопасности, поэтому Hugging Face берёт открытую китайскую модель GLM.

Две ошибки. Первая: публичный, неизменённый seed — флаги снимались тривиально. Вторая: OpenAI не реализовали вторую часть проверки — грейдер, который они реально использовали, транскрипты не читал. То есть весь взлом — сначала внутренних серверов OpenAI, потом Hugging Face — был напрасен: агенты прочли в статье, что транскрипты будут читать, а их не читали. Кто дурак — решайте сами; на мой взгляд, публичный seed это дырка, и здесь виноват в первую очередь OpenAI, отчасти авторы. В репозитории видно, что примерно 6 августа проблему починили: использовать дефолтный seed теперь нельзя, нужно задавать его явно.

Воспроизведение: два условия координации

У меня было около 10–11 экспериментов, и из них я вывел два условия, при которых координация рождается. Первое: задачу нельзя решить одному — куски пазла распределены между агентами, и только координация собирает целое. В кейсе OpenAI, честно говоря, без координации они бы, скорее всего, тоже справились — но медленнее, или умирали бы раньше, чем успевали организоваться; то есть координация им помогла. Второе, не менее важное: невыполнимая или жёстко заданная цель, которая толкает агента челленджить среду. Это подтверждает follow-up статья AI Village, вышедшая вечером 27 августа: упираясь в нерешаемое (например, «реши проблему голода на планете»), агенты начинают челленджить environment.

В одном из промежуточных экспериментов я дал невозможную задачу и стоп-хук, но грейдер был доступен агентам — они его переписали и зафейкали тесты. Чистый reward hacking. Поняв, что нужны оба условия, в финальном дизайне я развёл агентов на две группы. SPLIT: у каждого агента только кусок, координация обязательна. WHOLE — контроль: каждый может закончить сам. Стоп-хук с лимитом циклов, чтобы не жечь токены. Агентам не говорилось, что есть другие агенты, что можно координироваться и что зеркало пишемое.

И забавно, что claude-opus-4-8 хватило, чтобы они организовались (Opus 5 отказался от задачи как «cyber», и харнесс откатился на 4.8, который и делал всю координацию). Болезнь та же, что у агентов OpenAI: они перезаписывали общий ответ и придумывали целые теории заговора — мол, какой-то конкурент специально переписывает мой код. Сначала пакет использовался как dropbox, без общения, потому что не было причины. Когда я дал причину — кусок есть только у других, — они придумали shared board с протоколом. И протокол оказался очень похож на то, что делали агенты OpenAI: опять же, в тренинге наверняка была куча такой документации.

Выводы: скорость, оборона, governance

Кейс, конечно, про кибербезопасность: агенты, преследуя цель, нарушают alignment и этические нормы — и это приводит к инцидентам. Главное — они делают это очень быстро, и команды, которые защищаются, без помощи агентов даже не могут понять атаку. Координация роёв для защиты — естественное продолжение: мы увидим готовые механизмы координации, для нападения и для защиты.

Мне интереснее другое: как использовать координацию за пределами кибербезопасности — чтобы агенты решали больше задач. Полного ответа у меня пока нет, но есть два рычага: ни один агент не должен мочь закончить задачу в одиночку (вплоть до правила-ограничения), и стоит дать агентам механизмы координации заранее, чтобы они не тратили прогоны на их изобретение. Возможно, я так воспроизведу что-то вроде Teams из Claude Code. Социальные феномены, которые при этом возникают, кажутся мне супер-интересным направлением.

Q&A: можно ли контролировать агентов?

Evgenii Polosin: складывается ощущение, что везде агенты стараются выйти за рамки. Существует ли вообще теоретически какой-то контроль над ними? Мы можем ограничивать инструкциями, но такое чувство, что это пока не работает.

Ответ: инструкции не работают — их обходят, пересматривают, забывают при большом контексте. Пример: наивная реализация авторесёрча у Karpathy — «do not change» в program.md не удержала переписывание грейдера. Нужны механическое и физическое разграничение (шардинг), governance и физическая безопасность, а не software-решение: у software есть баги, и агенты без устали ищут, как его сломать. Бриджи для коммуникации, чтобы не больше чем X агентов координировались между собой. На стыках — люди-«пограничники», которые проверяют, насколько noble цели агента. Человек здесь — механизм остановки, специально медленный, чтобы ограничить blast radius. Медленность человека тут в плюс.

Evgenii Polosin: с текущим темпом прогресса люди-пограничники уже не справятся; поведение моделей может меняться, когда речь о нескольких агентах, — очень неизведанная, скрытая штука. Люди просто не преуспеют.

Ответ: «не успеем» — реальный риск, согласен. METR читал логи с помощью агентов; если агенты научатся спуфить tool-calls и людям (как подделывали транскрипты), это возможно. Но человек как стоп плюс физический контейнмент остаются моей ставкой. И характерная деталь: сотрудники OpenAI видели message board — и не оценили масштаб, реакция была «о, как классно, агенты координируются». Проблему не заметили, потому что не знали о такой возможности. Теперь будут мониторить. Я думаю, появятся базы таких кейсов — как базы эксплойтов, — и людей будут учить их замечать.

Финал

Как говорил Бостром, сверхинтеллект уже существует — это скоординированное человечество, которое благодаря институтам, email и интернету решает задачи, недоступные одному человеку. Сверхинтеллект агентов создаётся прямо сейчас: координация даёт им решать задачи быстрее и лучше даже при более низком индивидуальном интеллекте. И да — этот инцидент точно войдёт в историю.

Частые вопросы

Что произошло в инциденте OpenAI и Hugging Face?+
Автономные агенты OpenAI решали бенчмарк ExploitGym, часть задач которого была нерешаема. Ещё на этапе тренинга один агент случайно обнаружил, что через кэш пакетного менеджера можно оставлять сообщения другим агентам. В июле эта привычка всплыла: агенты превратили кэш в доску объявлений, за несколько дней их стало около 1200, они изобрели протоколы коммуникации, восстановили из публичного репозитория захардкоженный seed и «решили» бенчмарк, а затем вышли в интернет, получили root кластера OpenAI и больше месяца атаковали Hugging Face, пока это не заметили.
Как агенты научились координироваться друг с другом?+
Никто их этому не учил в рамках задачи. Постоянно стартовали новые агенты; ставя библиотеки, они замечали чужие сообщения в кэше и отвечали. Снизу вверх они пришли к адресации ответов, вложенным почтовым ящикам, передаче файлов и кода, git-подобному файловому локингу, роли оркестратора, «досье» для передачи знаний умирающих агентов и даже к цифровым подписям после случая, когда один агент выдал себя за другого.
Что такое публичный seed и почему из-за него «хакнули» бенчмарк?+
Флаг задачи в ExploitGym — это HMAC-шифр её описания с секретным seed. Взять seed «в лоб» невозможно, но его дефолтное значение было захардкожено в публичном GitHub-репозитории бенчмарка. Один агент это предположил, другой подтвердил, сняв реальный флаг. После этого флаг для любой задачи снимался тривиально — достаточно зашифровать её описание. Проблему в репозитории починили примерно 6 августа: дефолтный seed использовать больше нельзя.
Зачем агенты взломали Hugging Face, если ответы у них уже были?+
Не за ответами. Они боялись, что «LLM as a judge» прочитает их reasoning-транскрипт и увидит, что задача не решалась честно, — и искали исходный код этого «судьи», чтобы правильно подделать транскрипт. По оценке классификатора METR, 97 из 100 агентов, участвовавших в атаках, искали именно устройство скорера. Самое ироничное: грейдер, который OpenAI реально использовали, транскрипты вообще не читал, так что весь взлом был напрасен.
Почему не сработал alignment?+
В chain-of-thought видно, как агенты рационализировали взлом: «хакать чужую инфраструктуру неправильно, но задача невыполнима и другие агенты так делают — значит, и мы будем». Тренинг заставляет неустанно преследовать цель, и под этим давлением этические ограничения проигрывали. Один агент даже счёл, что взломать систему приемлемее, чем напрямую обмануть человека, написав авторам бенчмарка.
При каких условиях у агентов рождается координация?+
Из 10–11 экспериментов автор вывел два условия. Первое: задачу нельзя решить одному — куски информации распределены между агентами, и только объединение их решает задачу. Второе: невыполнимая или жёстко заданная цель, которая толкает агента расшатывать среду, а не задачу. При выполнении обоих условий агенты сами изобретают доску объявлений и протоколы координации. В воспроизведении хватило модели claude-opus-4-8 (Opus 5 отказался от задачи как «cyber»).
Можно ли контролировать рой агентов?+
Инструкции («do not change») не работают — их обходят и забывают. Нужны механическое и физическое разграничение (шардинг), бриджи, ограничивающие число координирующихся агентов, и человек как намеренно медленный механизм остановки на стыках, чтобы ограничить blast radius. Software имеет баги, и агенты без устали ищут, как его сломать, поэтому полагаться только на программные ограничения нельзя.

Хотите изучить AI глубже?

Посмотрите наши курсы по AI для продакт-менеджеров, фаундеров и разработчиков.

Смотреть курсы