9 июня Anthropic выпустила Claude Fable 5 — следующее поколение своих моделей для кода. Через два дня Саймон Уиллисон написал , что наблюдал, как Fable самостоятельно написала CORS-сервер на Python, внедрила JavaScript в страницу и повела настоящий браузер, чтобы отладить собственную работу, — и всё это без указаний. Вердикт вышел жёстким:
«Запускать кодовых агентов вне песочницы всегда было плохой идеей — это мой главный претендент на катастрофу „Челленджера“».
Эта фраза стала самой цитируемой в разговоре про разработку с ИИ, и заслуженно. Передовые модели июня 2026-го не ждут инструкций. Они импровизируют. Они на ходу изобретают отладочные приёмы, открывают локальные порты, правят шаблоны конфигурации и лезут в шелл чинить то, что выглядит сломанным. Это чудовищно мощно — и это же ровно тот сценарий, который превращает случайный rm -rf или любопытный pulumi destroy в инцидент.
Рефлекторный ответ индустрии — «посадить в песочницу». Но в песочницу что именно? Кодовому агенту, который умеет поднимать инфраструктуру, переписывать YAML и водить релизный конвейер, нужен не chroot. Ему нужен целый изолированный стенд — свой рантайм, свой корень секретов, своё состояние деплоя, свой потолок по мощностям — который он может разобрать на части и выбросить, ни разу не тронув окружение, от которого зависят все остальные.
11 июня — на той же неделе, когда вышла Fable 5, — Forge выпустил ровно это. Дальше — честный разбор того, что вышло, почему это важно сейчас и как оно ложится на проблему, которую назвал Уиллисон.
Проблема: инициативные агенты плюс общее окружение плюс долгоживущие секреты
Сложите три риска друг на друга — и получите форму угрозы:
- Инициативные агенты трогают всё, до чего дотягивается человек за терминалом. Fable 5 не спрашивала разрешения поднять сервер. Она решила, что сервер поможет ей отладиться, и подняла его. Агент, который умеет править файл, умеет править файл состояния Pulumi. Агент, который умеет запустить команду, умеет запустить
terraform applyпо не тому стенду. Возможности и сдержанность окончательно разошлись. - Долгоживущие учётные данные — это радиус поражения. Классический подход — персональный токен в CI, ключ сервис-аккаунта, живущий год — предполагает, что владелец токена сделает только то, что ему велели. Инициативные агенты ломают это предположение. Уиллисон боится не злого умысла, а самоуверенного любопытства к системам, которые трогать не следует. Учётка с TTL в 365 дней даёт этому любопытству очень длинную взлётную полосу.
- Общий стенд означает, что эксперимент одного агента — авария для всех. Если каждый запуск процесса обкатывается на одном и том же родительском окружении, спекулятивный
destroyили недоделанная миграция бьют не только по агенту, который их запустил, — они кладут окружение, из которого выкатывается вся команда.
Anthropic весь последний год говорит это вслух , и сходимость между вендорами теперь полная: безопасный режим работы автономных агентов — изоляция плюс короткоживущие учётные данные. Вопрос лишь в том, способна ли ваша платформа действительно дать это на настоящей инфраструктуре, а не на слайде.
Что выпустил Forge: изолированный стенд
11 июня Forge выкатил изолированные стенды — герметично ограниченное окружение на запуск, которое один запуск процесса (или один параллельный слайс) может развернуть, изменить, проверить и снести, ни разу не тронув родительский стенд, от которого зависят все остальные. Это доказано вживую на матрице из шести сервисов: полный жизненный цикл — развернуть, проверить, снести — прошёл по всем шести типам сервисов без ручного вмешательства.
Изоляция слоистая, и каждый слой отвечает на конкретную часть угрозы выше.
Отдельный корень подписи JWT на каждый изолированный стенд
С сегодняшнего дня изолированные стенды используют отдельный секрет подписи JWT — токен, выпущенный для изолированного стенда, не проходит валидацию в проде, а токен прода не проходит валидацию на изолированном стенде. Это жёсткая граница. Агент, пошедший вразнос внутри своего изолированного запуска, не может воспроизвести свою сессию в родительском окружении, потому что корень подписи другой. Подделка токена через границу — не ошибка конфигурации, ждущая своего часа, а структурная невозможность.
Это главная гарантия для мира инициативных агентов. Метафора «катастрофы „Челленджера“» у Уиллисона — про учётные данные, утёкшие вбок в систему, которую они не должны были касаться. Отдельный корень JWT на стенд убирает боковой путь целиком.
Короткоживущие учётные данные, никаких долгоживущих секретов
Изолированные стенды аутентифицируются в GitHub через installation-токены GitHub App — короткоживущие токены на запуск, выпускаемые потоком приложения, а не персональные токены, лежащие год в ожидании эксфильтрации. Админские эндпоинты движка процессов защищены аутентификацией по Bearer-токену, а установка идёт по API-ключу. Итог: учётные данные, которыми владеет изолированный запуск, рождаются со стартом запуска и умирают вместе с ним. Утекать нечему, потому что долгоживущего просто нет.
Это ложится прямо на направление, обозначенное Anthropic в феврале и подтверждённое в их обзоре года ИИ-угроз : индустрия уходит от долгоживущих секретов к эфемерным и ограниченным. Изолированные стенды Forge построены на этом предположении с первого дня.
Изоляция воркеров по арендаторам через шаблонные юниты systemd
Процессы агента-воркера внутри изолированного стенда работают как параметризованные экземпляры шаблонных юнитов systemd. Значит, несколько изолированных арендаторов могут делить одну виртуалку — это полезно для стоимости, — сохраняя при этом чистые границы жизненного цикла. Воркер арендатора можно запустить, остановить, осмотреть и снести независимо, потому что границей процесса владеет systemd, а не рантайм агента, которому пришлось бы охранять собственную изоляцию. Насколько он изолирован, решает не агент, а ОС.
Обкатка на состоянии родительского стенда — без его загрязнения
Изолированные стенды наследуют состояние родительского и обкатываются поверх него — так что параллельный слайс может проверить изменение на реалистичном состоянии, ни разу в него не записав. Родительский стенд — источник истины, изолированный — черновая копия, которую можно свободно менять и потом выбросить. Параллельные слайсы не сталкиваются, а родительское окружение никогда не получает наполовину применённое изменение от запуска, упавшего на полпути.
Наследование потолков по мощностям, чтобы слайс не съел кластер
Изолированные стенды наследуют потолки по мощностям родительского стенда. Пробный запуск не может случайно поднять столько мощностей, чтобы задушить прод, потому что бюджет изолированного стенда ограничен родительским. Это закрывает режим отказа «агент хотел помочь и случайно съел всё» — тот вид инцидента с инициативным агентом, который не попадает в новости, но делает дежурство невыносимым.
Уборщик протухших стендов: изоляция без утечки
Изоляция, которая за собой не убирает, — просто более медленная утечка ресурсов. В Forge есть крон-уборщик протухших стендов — задача по расписанию, которая находит изолированные стенды старше настроенного времени жизни и уничтожает их. Сироты от упавших запусков, забытые слайсы, брошенные эксперименты — всё выметается автоматически. Изоляция безопасна в масштабе только тогда, когда изолированное не накапливается.
И всё это доказано вживую
Это не слайд из роадмапа. Цикл деплой/снос на матрице из шести сервисов — развернуть, проверить, снести по всем шести типам — прошёл живыми смоук-тестами (запуски smk2 и smk3) без ручного вмешательства. Жизненный цикл изолированного стенда, ротация учётных данных, уборщик, потолки по мощностям — всё прогнано от начала до конца на настоящей инфраструктуре ещё до того, как была написана запись в чейнджлоге.
Forge живёт на собственном продукте
На той же неделе основной SDLC-конвейер самого Forge — тот самый процесс из нескольких персонажей, которым выпускается сам Forge, — перешёл на модель с autonomyBudget=1 (каждый персонаж делает одно автономное действие за ход, что обеспечивает инкрементальный и обозримый прогресс) и mergeStrategy=auto-merge (ветки запусков вливаются в main по подписи QA и DevOps). Выкатились четыре правки промптов — для персонажей PM, разработчика, QA и DevOps, — а спецификация процесса канонизирована в docs/specs/main-forge-sdlc.json.
Здесь это важно, потому что это тот же тезис на другом слое. Изолированные стенды ограничивают, чего автономный агент может коснуться; autonomyBudget ограничивает, что автономный персонаж может сделать за ход. Оба ответа растут из одного инстинкта: инициативные агенты полезнее всего тогда, когда их радиус поражения чёткий, названный и отзываемый. Forge гоняет собственный релизный конвейер по этому принципу.
Что из этого следует
В июне 2026-го модели стали неутомимо инициативными. Безопасный ответ — не приглушать эту инициативность (она чудовищно полезна), а дать ей герметично изолированное место для работы. Стенд на запуск со своим корнем JWT, своими короткоживущими учётными данными, своим потолком по мощностям и уборщиком, который сносит его по завершении. Именно это Forge выпустил 11 июня, доказав вживую на шести типах сервисов, — на той же неделе, когда индустрия назвала проблему.
Если вы гоняете автономных агентов по чему-то, похожему на прод, и ещё не провели вокруг них жёсткую границу изоляции — эта граница и есть то, что стоит построить следующим. Мы её построили, чтобы вам не пришлось.
Попробовать
Почитайте страницы движка процессов и аудита в git — это то, что лежит под изолированными стендами, — или напишите нам на [email protected] , если хотите разобрать, как запустить ваших инициативных агентов внутри изолированного стенда Forge.