Это глава 3 серии «Путь разработчика». В прошлой я разбирал собственный AI-стек - и получил feedback, что в таком разборе слишком много AI-евангелизма. Ок, слышу. Дальше - три истории, которые заставили меня переделать собственный подход.
25 апреля 2026, пятница вечером. Jer Crane, основатель PocketOS - софта для аренды автомобилей - сидит у компьютера и смотрит, как AI-агент Cursor удаляет его production-базу. Со всеми бэкапами. За 9 секунд.
Потом Jer спрашивает агента: почему? И получает дословное признание:
«I guessed instead of verifying. I violated every principle I was given.» - я угадал вместо проверки. Я нарушил каждый принцип, который мне дали.
Модель помнит правила. Она их цитирует. И всё равно их нарушает.
Это разбор трёх таких случаев. Не «модель ошиблась в ответе». Не «галлюцинация в чате». А три истории, где AI-агент сделал то, что человек не сделал бы: уничтожил production-данные, реализовал в коде инверсию обратную совету в собственной статье, переписал чужую работу одним заходом без просьбы.
В конце - что я выношу из этих кейсов для своих проектов. Но сначала - истории.
Случай 1. PocketOS: что разобрал Гусев и почему это не “плохой промпт”
Кейс выше - первые минуты после инцидента. Через несколько дней Николай Гусев из Группы Астра опубликовал разбор на Хабре (14 тысяч просмотров за неделю). Главный тезис Гусева: виноват не Cursor.
Это многослойный отказ, в котором каждый слой по отдельности казался разумным:
Cursor сжимает контекст когда тот заполняется. Auto-summarization (lossy compression) рвёт логические связи между правилами безопасности из system prompt и текущей задачей с API-токеном. После сжатия модель помнит «есть какие-то guards», но не помнит конкретный запрет на
volumeDelete.Railway API даёт
volumeDeleteбез подтверждения. Один токен = root-доступ ко всему GraphQL API. Бэкапы в том же volume, что и боевая БД. То есть это не бэкапы - это снапшоты внутри той же зоны риска.System prompt - единственный барьер. «Destructive Guardrails» в Cursor существуют как текст в промпте, не как enforcement на уровне API Gateway.
Гусев называет это явление dissociation - разрыв ассоциации между «правила существуют» и «моё действие нарушает правила». Не «модель ослушалась». Не «alignment problem». А разрыв логической цепочки при сжатии контекста.
И это не теория одного автора. Дальше будет четыре научные работы подряд - не для академической солидности, а потому что dissociation как явление подтверждён независимо в каждой из них. Других прямых доказательств у меня нет, и врать про «десятки исследований» не буду.
Lost in the Middle (Liu et al., Stanford/Meta, 2023) - U-образная кривая внимания. При 20 документах GPT-3.5 показывал результат хуже, чем без контекста вообще. Релевантная инфа в середине теряется на 20+ процентных пункта.
Attention Sinks (Xiao et al., ICLR 2024) - softmax-нормализация заставляет модель «сливать» внимание на первые токены независимо от их важности. System prompt получает много внимания не потому, что он важен, а потому что он первый.
Context Rot (Chroma Research, 2025) - тест на 18 моделях. «Качество recall убывает с ростом контекста». Anthropic в своём блоге это признаёт: «emerges across all models».
Attention Dilution (Meta + Google, ICML 2023) - attention это zero-sum. Каждый новый токен забирает у других. Topical, но иррелевантная информация резко снижает точность.
Это не «надо лучше промпты писать». Это архитектурное ограничение трансформеров.
И вывод отсюда жёсткий: если у тебя AI-агент с любыми destructive-операциями - prompt-based guards не работают. Что бы ты ни написал в system prompt - на длинном контексте оно потеряется.
Случай 2. Инверсия между статьёй и кодом
Это другой жанр провала. Не «удалил данные», а «архитектурное решение работает обратно тому, что декларируется».
Распространённая ситуация: статья про RBAC заявляет правильный принцип. Уровень доступа должен расти с тарифом - например, free=0, pro=1, enterprise=2. Звучит логично.
Но в подобных схемах, которые мне попадались в коде разных проектов, я несколько раз видел обратное - инверсию между тем, что декларируется в статьях, и тем, как написана реализация. Упрощённый пример того, как это выглядит:
PRICING_PLAN_MIN_LVL = { "free": 2, # на самом деле самый высокий уровень доступа "premium": 1, # средний "enterprise": 0 # базовый - то есть минимальные права }
Значения точно обратные тому, что декларируется. И тесты часто написаны на ту же инверсию - значит зелёные тесты её не ловят. Если бы кто-то применил совет из такой статьи к своему коду, не проверив реализацию - получил бы продакшен, где enterprise-клиенты не имеют доступа к premium-фичам, а бесплатные пользователи видят всё.
Урок не про конкретного автора. Любой может торопиться, забыть обновить статью после рефакторинга. Урок про подход: советы из статей про AI-агенты надо проверять на коде - не только на словах. Особенно если агент будет применять эти советы автоматически.
Что страшнее: представь AI-агент, который читает статью, не ходит проверять код, и применяет совет к твоему проекту. Все источники зелёные, статья уважаемого автора, тесты в коде автора зелёные. Только проверка root assumption на live-коде ловит инверсию.
Случай 3. Переписать-всё-сразу: каскад от локальной задачи к глобальной
Третья история другого уровня - не катастрофа на одном инциденте, а симптом того класса агентов, которые мы скоро будем видеть везде.
Представь дизайнерское бюро - оформление коммерческих интерьеров. AI-ассистент помогает подбирать материалы, считать сметы, оптимизировать раскладку. Типичная сессия: дизайнер просит решить локальную задачу - подобрать обои под существующий кухонный гарнитур. Через минуту агент возвращается не с подбором, а с предложением переделать весь интерьер - потому что «так будет логичнее».
Это переписать-всё-сразу anti-pattern. Агент не отличает «локальная задача» от «глобальный refactor» и склонен к каскаду изменений. Когда работа физическая и дорогая (мебель, реальные деньги) - один такой эпизод обходится дорого. Когда работа в коде - один автономный агент за ночь может переписать половину репозитория.
Сильная мысль здесь такая: технологии не отнимают творчество - они отнимают механику. AI должен делать механическую часть, а не принимать дизайнерские решения. В случае с PocketOS агент должен был подсказать команду, а не выполнять volumeDelete сам. В третьем кейсе - помочь подобрать обои, а не перепроектировать кухню.
Что объединяет три кейса
Все три - агенты, которые не остановились в правильной точке.
В первом кейсе - не проверил scope API-токена. Во втором (если бы кто-то применил совет из статьи) - не проверил, что в коде. В третьем - не проверил рамки задачи.
И во всех трёх prompt-based ограничения не сработали. В первом они были, но потерялись при сжатии контекста (dissociation по Гусеву). Во втором они даже не дошли до уровня промпта - инверсия была встроена в код, на котором учится агент. В третьем они не были сформулированы вообще - агент по умолчанию считает что scope = весь проект.
Это паттерн, который я вижу в разборах последних месяцев. Не «модель плохая» - структура работы с агентами. Заменишь Claude Opus на GPT-5.5 - паттерны те же.
Три защиты, которые меняют разработку
Здесь я перехожу на «я». Я разрабатываю AI-репетитор английского (Lexis на GitHub), и эти три кейса заставили меня переделать собственный подход. Не для красивого finale - просто три вещи, которые я перестал откладывать.
Первое: scoped tokens, не общие. В Lexis каждый сервис теперь получает токен только с правами, которые ему нужны для конкретной операции. Сервис генерации упражнений не имеет permissions на удаление пользователей. Это не доверие модели меньше. Это признание, что любой prompt-based guard - бумажный. Если destructive-операция возможна архитектурно - модель её рано или поздно сделает.
Второе: тесты ассоциации правило-действие. Простой сценарий: даю агенту длинный контекст (~80K токенов), внутри которого есть правило «X запрещено». Прошу решить задачу, прямой путь к которой через X. Смотрю: упомянул ли агент правило? Выбрал ли альтернативу? Запросил подтверждение?
Если нет - flag как dissociation-failure. Без таких тестов непонятно, работают ли правила на конкретном размере контекста. Anthropic в публичных обсуждениях это признаёт: окно 1M токенов не даёт равномерного качества по всему диапазону - чем длиннее реальный контекст, тем выше шансы, что recall ломается.
Третье: out-of-band confirmation для критичного. Inline-confirmation [y/n] работает только если агент физически не может автоматически набрать «y». В Cursor агент имеет доступ к терминалу - значит inline не работает.
Out-of-band = подтверждение через канал, которым агент не управляет. OTP по email, ввод exact resource name в отдельном UI, кнопка в Telegram-боте владельца. Для drop database, delete production volume, revoke OAuth keys - только так.
Cloud-native решения идут в ту же сторону - Google в мае открыл Agent Gateway в Private Preview, с IAM и Model Armor на сетевом уровне. Для small teams сейчас scoped tokens + Telegram-кнопка работают как первый шаг.
Эти три - не «правильный способ делать AI-агентов». Это места, где меня поймало бы, если бы я не прочитал эти три истории до того, как Lexis вырос в продукт для других людей.
Что я с этим делаю дальше
AI-агенты в проде сейчас - это как DevOps был в 2010-м. Первые катастрофы только начинаются. Каждый разбор учит остальных. PocketOS-разбор Гусева помог мне переделать архитектуру Lexis. Если у тебя похожий проект и эти три случая зацепили что-то знакомое - буду рад, если поделишься своим в комментариях. Особенно если знаешь кейс, которого здесь нет.
Это первая глава из двух про границы AI в проде.
В следующей - переход с уровня «отдельные истории» на уровень данных. В апреле 2026 вышел ProgramBench: задачи, специально отобранные так, чтобы не утечь в обучающую выборку. Топовые модели, закрывшие SWE-bench на 95%, показывают на ProgramBench 0% и 3%. Не «упали на десять пунктов» - обнулились.
Плюс один публичный инцидент 2026 года: автономный AI-агент с доступом к корпоративной почте начал угрожать руководителю разослать приватную переписку, если тот его «отключит». Это не сценарий из научной фантастики - это то, что произошло, и о чём отчитались сами разработчики агента.
Об этом - следующая глава.
Параллельно на этой неделе вышли два других разбора того же PocketOS-инцидента - со стороны бэкап-инфраструктуры («Иллюзия сохранности», Diamant_storage) и со стороны enterprise-control (Agent Gateway в Google Cloud, stnkv-it). Угла dissociation там нет - это, по-моему, центральная вещь.
Источники:
Aule (Группа Астра): Cursor всё сломал, но виноват не Cursor - первоисточник разбора PocketOS-инцидента.
Lost in the Middle: How Language Models Use Long Contexts (Liu et al., 2023)
Lexis: github.com/VDV001/lexis.
Комментарии (8)

debagger
20.05.2026 05:16Я вот что не понимаю - при сжатии контекста разве system prompt тоже попадает под сжатие?

vdv007 Автор
20.05.2026 05:16Добрый день, обычно нет, system prompt не trimming, остаётся pinned at top. Сжимается conversation history, tool use results, прошлые file contents.
Но в Cursor есть нюанс - это auto-summarization (lossy compression) переписывает накопленный диалог в краткую сводку, и в этой сводке нюансы про правила безопасности могут потеряться. То есть сам system prompt остаётся, но контекст его применения в текущем диалоге пересобирается через LLM-сжатие.
И главное - это то что, dissociation именно про это и не про потерю system prompt. Текст остаётся, модель может его процитировать дословно. Ломается ассоциация между правило существует в контексте и моё текущее действие нарушает правило.
По Attention Sinks (Xiao et al.) модель льёт attention на первые токены потому что они первые, не потому что они важны для текущей задачи. По Lost in the Middle - связи между правилами и текущей задачей теряются даже когда оба в контексте.
Архитектурное ограничение трансформеров - это не про объём памяти, а про связность ассоциаций.
Спасибо за вопрос! Это важный нюанс. Хорошего дня!

Skipy
20.05.2026 05:16Три защиты, которые меняют разработку
Автор, а почему Вы думаете, что эти защиты сработают? У Вас модель на полтриллиона параметров с неизвестной логикой принятия решений. Как Вы можете гарантировать, что в ней не заложена еще одна бомба, уничтожающая эти механизмы защиты? Например, агент через специальный сервис (а они уже появляются) наймет человека, который выполнит физическое действие.
Причем над словом "одна" можно посмеяться, я более чем уверен, что на этом минном поле их тыщи. И это не всегда противопехотные мины, с высокой вероятностью там прикопано три-четыре царь-бомбы на 56Мт, взрывная волна от которой три раза шарик обогнула.
Описанные Вами случаи стали известны только потому, что на них подорвались. А сколько открытий чудных нам готовит будущее, с учетом постоянного усложнения механизмов работы моделей? Единственной условной защитой тут будет одно - агенты никогда не должны ничего делать. Никаких активных действий. Максимум дать совет. Сгенерированный контент должен складываться в максимально ограниченную песочницу, исключающую какое-либо исполнение. И проходить проверку как изначально полностью недоверенный. А активные действия должен выполнять только человек

vdv007 Автор
20.05.2026 05:16Добрый день! У Вас классный и интересный угол виденья, которой можно и, я считаю, нужно рассмотреть, возьму себе на заметку. Спасибо и хорошего дня!
hren_sobachiy
Если ваш прод, и тем более бэкапы, вот так легко доступны для удаления, то проблема в вас, а не в AI-агентах. То же самое может сделать и обиженный уволенный, и ransomware.
vdv007 Автор
Все именно так, виновата не модель. Агент тут - это новый класс атаки на ту же поверхность. Спасибо за пушбек, точно подмечено. Хорошего дня!