Production-доступ AI-агента: предварительная проверка, которая выдерживает реальный запуск
Production-доступ AI-агента требует узких прав, понятных подтверждений, проверенного отката и аудиторских доказательств. Проведите эту предварительную проверку перед запуском.

Предоставление агенту полномочий в production - это операционное решение, а не удобная настройка. Агент может девять раз правильно записать миграцию, вызвать внутренний API, открыть SSH-сессию или выполнить команду развертывания, а на десятый раз обратиться не к той цели. Хорошая проверка заранее учитывает такую возможность и ограничивает последствия.
К production-доступу AI-агента нужно применять тот же тест, что и к экстренным учетным данным человека: может ли конкретный сотрудник точно объяснить, что разрешено агенту, остановить его во время запуска, исправить наиболее вероятное серьезное последствие и потом доказать, что произошло? Если хотя бы один ответ расплывчатый, команда выдала доступ раньше, чем создала необходимые средства контроля.
Команды часто сосредоточены на том, не выдумает ли модель неправильную команду. Такой риск существует, но он не единственный. Агент может слишком буквально выполнить неоднозначную задачу, унаследовать широкие права из оболочки, повторить запрос, который нельзя безопасно повторять, или работать в процессе, которому никто не собирался доверять. Сбои в production обычно происходят из-за такой обычной инфраструктурной обвязки.
Полномочия в production включают каждый необратимый побочный эффект
Полномочия в production начинаются там, где агент может вызвать, раскрыть или разрешить значимое изменение. Записи в базе привлекают внимание, потому что кажутся опасными. Но endpoint чтения, возвращающий записи клиентов, endpoint, выпускающий токен доступа, изменение DNS, отправка письма и команда перезагрузки сервиса могут иметь не меньшие, а иногда и более серьезные последствия.
Описывайте в проверке действия, а не системы. Фраза «агент может обращаться к production» ничего не говорит проверяющему. Формулировка «агент может прочитать текущую ревизию развертывания сервиса A и перезапустить одну указанную группу воркеров» уже дает предмет для оценки.
Это различие важно, потому что способы доступа скрывают реальные полномочия. SSH-аккаунт может выполнять безобидную на вид команду статуса, но при этом иметь права на редактирование файлов, перезапуск сервисов или чтение переменных окружения. API-учетные данные с названием «monitoring» могут также позволять просматривать пользователей или открывать вложения службы поддержки. Команда должна проверить серверный набор разрешений, а не доверять названию учетных данных.
Разделяйте в записи об изменении четыре вида полномочий:
- Полномочия на чтение: данные, журналы, конфигурация и метаданные, которые агент может получать.
- Полномочия на изменение: ресурсы, которые он может создавать, обновлять, удалять, перезапускать или публиковать.
- Полномочия на делегирование: идентичности, разрешения, токены или учетные данные, которые он может выдавать или изменять.
- Внешние полномочия: сообщения, платежи, тикеты, DNS-записи и изменения на стороне поставщиков, которые он может инициировать.
Делегирование заслуживает отдельной категории. Если учетные данные позволяют агенту добавить пользователя или создать другие учетные данные, агент сможет расширить собственный будущий доступ. Проверяющие часто упускают это, потому что первый запрос выглядит административным, а не разрушительным. Не выдавайте полномочия на делегирование при первом production-запуске, если задача не может работать без них. Если без них нельзя, каждое использование должен подтверждать человек.
Фреймворк авторизации OAuth 2.0, RFC 6749, описывает scope как диапазон доступа, который запрашивает клиент и предоставляет владелец ресурса. Это полезная формулировка, но команды неправильно используют scope, принимая его за понятную подпись. Scope ограничивает агента только в том случае, если сервер ресурсов действительно проверяет его для каждого endpoint и каждого метода. Подтвердите это тестовой учетной записью. Строка scope сама по себе ничего не доказывает.
Объем прав учетных данных должен соответствовать одной задаче, одной цели и одному действию
Production-учетные данные должны поддерживать одну четко сформулированную задачу для ограниченной цели. Если задача звучит как «проверить, что развертывание работает», агенту не нужны права на изменение инфраструктуры. Если задача - «исправить неудачную миграцию», ему могут понадобиться права на запись, но работать он должен с одной базой или одним сервисом и по одному описанному пути миграции.
Самый распространенный плохой выбор - широкие человеческие учетные данные, переданные через переменную окружения просто потому, что команда уже знает, что они работают. Такой вариант популярен, потому что позволяет не разбираться с правами под давлением сроков. Но он уничтожает возможность установить автора действия, выдает агенту все права человека и при проблеме заставляет проводить неудобную замену учетных данных. Отдельная машинная идентичность требует небольшой начальной настройки, зато снимает много неопределенности.
До выдачи любых прав запишите запрашиваемые полномочия в таблице.
| Поле проверки | Приемлемый ответ | Тревожный признак |
|---|---|---|
| Задача | Проверить ревизию и состояние после выпуска | «Помочь с production» |
| Цель | Один указанный сервис и окружение | Все production-проекты |
| Разрешенные действия | Прочитать статус, перезапустить одну группу воркеров | Полный административный доступ |
| Граница данных | Только агрегированные данные о состоянии | Необработанные записи клиентов |
| Срок действия | Заканчивается после утвержденного запуска или в явно указанное время | Постоянный доступ по умолчанию |
| Владелец | Один ответственный владелец сервиса | Чат или общий псевдоним команды |
Настаивайте на конкретных действиях. «Доступ к биллингу» не говорит, может ли агент просматривать счета, оформлять возвраты, менять тарифы или скачивать данные клиентов. Модели разрешений API могут разделять эти операции. SSH не всегда позволяет так же аккуратно их разделить, поэтому лучше использовать ограниченную команду-обертку или отдельную учетную запись, а не общую оболочку.
Для API проверьте разрешенную и запрещенную операцию до того, как агент получит учетные данные. Минимальная запись может выглядеть так:
agent_job: post-release-check
identity: deploy-check-agent
resource: production/service-a
allowed:
- GET /v1/releases/current
- GET /v1/health/summary
forbidden_test:
request: POST /v1/releases/rollback
expected_status: 403
expiry: "2025-04-18T18:00:00Z"
owner: service-a-oncall
Дата здесь приведена для примера. В вашей записи должен стоять реальный срок, соответствующий запуску. Особенно важна строка forbidden_test: она заставляет команду доказать границу, а не просто описать ее.
Не ставьте агента в положение, когда ему приходится выбирать между неудачей и повышением привилегий. Если обычная задача требует записи, которой нет у учетных данных, остановитесь, измените инструкцию или запросите явное разрешение человека. Запасные широкие учетные данные превращают обычную ошибку задачи в событие безопасности.
Частота подтверждений должна соответствовать последствиям вызова
Подтверждение работает, когда заставляет человека оценить важное решение. Оно перестает работать, когда становится повторяющимся препятствием, которое люди проходят автоматически. Поэтому точка подтверждения должна соответствовать единице последствий, а не произвольному таймеру.
Одного подтверждения для нового процесса агента часто достаточно, если человек проверил ограниченную задачу, а процесс будет выполнять много предсказуемых чтений с небольшими последствиями. Такое подтверждение помогает установить идентичность в момент получения процессом новых полномочий. Для действий, создающих внешнее обязательство или удаляющих данные, оно подходит плохо.
Требуйте отдельного подтверждения для каждого вызова, если каждый вызов может создать самостоятельное событие, которое человек захочет проверить: удалить ресурс, заменить учетные данные, применить миграцию, изменить права, отправить сообщение клиенту или выполнить удаленную команду с широким эффектом. В запросе должны быть указаны вызывающий процесс и конкретное действие простым языком. Фраза «Подтвердить запрос агента» заставляет человека гадать.
Не запрашивайте подтверждение после действия. Запись уже выполненного разрушительного вызова - это свидетельство, а не средство контроля. Аналогично, решение «подтвердить все будущие действия» имеет смысл только тогда, когда проверенный запуск ограничен известным набором действий. Если задача превращается в исследование и агент начинает изучать незнакомые системы, завершите сессию и снова запросите полномочия.
Усталость от подтверждений - это проблема дизайна. Если агенту нужно сто подтверждений, чтобы собрать данные о состоянии, сузьте права учетных данных до этих чтений и подтверждайте сессию. Если человек видит подряд десять разрушительных запросов, работу нужно перенести в проверенную пакетную операцию с явными ограничениями или вернуть в ручной режим. Люди не становятся внимательнее только потому, что диалог появляется чаще.
Проверяющему также нужна кнопка остановки, работающая во время запуска. Закрыть терминал недостаточно, если удаленная команда уже начала выполняться или агент может подключиться снова с теми же правами. Определите, кто может отозвать активную авторизацию, как быстро это можно сделать и что увидит агент после отзыва. Проверьте процедуру заранее, а не во время инцидента.
Заявление об откате требует проверенного пути восстановления
Для каждого production-доступа нужно назвать наиболее вероятный серьезный побочный эффект и действие по восстановлению. Фраза «У нас есть резервные копии» не объясняет, как отменить изменение прав, отозвать отправленное сообщение, восстановить перезаписанное значение конфигурации или остановить команду, уже начавшую работу на удаленном хосте.
Начните с реальной операции. Если агент может применить миграцию схемы, решите, обратима ли она, допускает ли код приложения обе версии схемы и кто принимает решение о восстановлении. Если агент может перезапускать воркеры, определите, как обнаружить цикл перезапусков и вернуться к предыдущей ревизии. Если агент может вызывать API поставщика, выясните, поддерживает ли поставщик токены идемпотентности, отмену или компенсирующие действия.
В книге Google SRE отмечается, что автоматизация может усиливать как хорошие, так и плохие действия. Это не аргумент против автоматизации. Это аргумент в пользу того, чтобы заранее включить в ее дизайн отмену и ограничения скорости, а не оставлять их на случай экстренной ситуации.
Рабочая запись об откате включает следующие сведения:
- Условие, при котором оператор должен остановить запуск: например, порог частоты ошибок, неожиданная цель или незапрошенное действие.
- Точную команду восстановления, действие в консоли или имя владельца, который должен его выполнить.
- Ожидаемое состояние после восстановления и запрос или наблюдение, подтверждающие его.
- Точку, после которой команда прекращает попытки исправить ситуацию и передает ее владельцу инцидента.
- Действия, которые нельзя отменить, с явным решением принять этот риск или исключить их из выданных полномочий.
По возможности выполните проверку на одноразовом production-ресурсе. Создайте четко названный тестовый объект, позвольте агенту внести разрешенное изменение, отзовите права объекта во время сессии и выполните процедуру восстановления. Такая проверка выявляет неприятные сбои: у оператора нет доступа к консоли, команда отката указывает на staging, endpoint принимает запрос, но выполняет его асинхронно, или журнал доказательств не содержит важного запроса.
В эту проверку входит и идемпотентность. Агенты повторяют запросы. Сеть может отказать после того, как сервис принял запрос, но до получения ответа вызывающей стороной. Без идентификатора идемпотентности или запроса статуса операции агент может создать дубликат, потому что не понимает, был ли успешным первый вызов. Если целевой API не позволяет безопасно повторить операцию, после неоднозначного ответа требуйте решения человека.
Идентичность процесса не равна намерению агента
Транскрипт чата может объяснить, почему агент действовал, но не доказывает, какая программа использовала production-права. Production-контроли должны определять локальный процесс, который установил соединение, происхождение его исполняемого файла и сессию, получившую подтверждение.
Здесь команды смешивают два разных вопроса. «Получила ли модель разумную инструкцию?» относится к намерению. «Выполнил ли этот вызов подтвержденный процесс?» относится к полномочиям. Четкая инструкция не защитит вас, если другой процесс может использовать те же учетные данные. Подписанная идентичность процесса не покажет, была ли задача разумной. Нужны оба вида проверки, и они дают разные доказательства.
Не помещайте учетные данные в контекстное окно агента, окружение оболочки, каталог конфигурации или вывод инструмента. Если агент может прочитать секрет, команда уже не сможет надежно отличить обычное использование инструмента от случайного раскрытия. Маскирование значения в транскрипте помогает только отображению, но не удаляет все копии, которые мог получить процесс.
Для SSH проблема усугубляется, когда операторы загружают свою обычную личную идентичность в окружение, управляемое агентом. Такой аккаунт может иметь доступ к нескольким хостам, подключаться к другим хостам через forwarding или получать права через членство в группе. Создайте аккаунт с узким набором команд, ограничьте список хостов и проверьте, что аккаунт не может читать файлы или выполнять команды за пределами задачи.
Sallyport использует другую границу на macOS: агент просит локальный шлюз действий выполнить работу по HTTP или SSH, а зашифрованное хранилище сохраняет учетные данные и возвращает результат, не раскрывая секрет. Это не делает плохой запрос безопасным, но предотвращает обычную ошибку, когда долгоживущие production-учетные данные передают агенту напрямую.
Проверка идентичности процесса должна фиксировать больше, чем название окна терминала. Записывайте исполняемый файл или полномочие подписи кода, если операционная система их предоставляет, время запуска, учетную запись пользователя и утвержденную сессию. Если процесс изменился после подтверждения, считайте его новым процессом. Не позволяйте обычному фоновому воркеру унаследовать подтверждение, выданное для разового исправления.
Доказательства должны позволять другому инженеру восстановить ход запуска
Сохраняйте сведения, отвечающие на пять вопросов: кто разрешил запуск, какой процесс действовал, какими полномочиями он обладал, что пытался сделать каждый вызов и что произошло после каждого вызова. Аудиторская запись «агент выполнил задачу» не поможет разрешить спор или восстановить систему.
Храните события авторизации отдельно от записей действий, даже если они поступают из одного журнала. Авторизация показывает, почему процесс получил доступ и когда его отозвали. Запись действия содержит метод, цель, результат, временную метку и идентификатор связи для каждой операции. Связывайте записи идентификатором сессии, который сохраняется при повторах и передаче работы другому оператору.
Не записывайте секреты только ради полноты аудиторского следа. Фиксируйте идентификатор учетных данных или ссылку на хранилище, но не значение bearer-токена, закрытый ключ, заголовок авторизации или полное тело запроса, если в нем есть конфиденциальные данные. Маскируйте сведения намеренно, а затем проверьте, что то же правило действует для ошибок и отладочных журналов. Многие утечки происходят в обработке ошибок после того, как во время инцидента кто-то включает подробное журналирование.
Журнал только для добавления на той же машине лучше, чем ничего, но он мало что доказывает, если скомпрометированный процесс может переписать историю. Журнал с цепочкой хешей позволяет обнаружить удаление или изменение, если проверяющие сохраняют цепочку. Важна и автономная проверка: она позволяет расследовать запись, не открывая хранилище учетных данных.
Например, sp audit verify проверяет зашифрованную запись аудита Sallyport с цепочкой хешей, не требуя доступа к хранилищу. Выполняйте эту проверку при сборе доказательств после запуска, сохраняйте результат вместе с записью об изменении и расследуйте любой сбой проверки до того, как начнете доверять журналу.
Используйте компактный манифест доказательств, чтобы проверяющему не пришлось потом собирать факты из пяти консолей:
run_id: prd-2025-04-18-017
purpose: repair failed migration 042
approver: service-owner
process_identity: signed-executable-identifier
credential_identity: migration-repair-agent
authorization_started: "2025-04-18T17:05:00Z"
authorization_ended: "2025-04-18T17:21:00Z"
change_reference: CHG-1842
action_log_reference: audit-export-prd-2025-04-18-017
rollback_result: test-object-restored
reviewer: oncall-engineer
Этот манифест не заменяет подробную запись действий. Он дает расследующему карту к нужным данным и позволяет заметить отсутствие доказательств до закрытия изменения. Человек должен сам заполнить или подтвердить поля цели и согласования. Если позволить агенту составлять собственное резюме доказательств, он может не включить неудобные детали.
Предварительная проверка должна завершаться подписанным решением
Команда должна проводить проверку непосредственно перед выдачей полномочий, когда известны конкретная задача, цель и оператор. Общая анкета безопасности, заполненная несколько месяцев назад, не отвечает на вопрос, нужно ли сегодняшнему процессу агента записывать данные в сегодняшний production-сервис.
Используйте эту запись проверки. В каждой строке должны быть ответ, владелец и однозначный результат: одобрить, изменить или отклонить.
| Вопрос проверки | Что проверяет рецензент | Стандарт одобрения |
|---|---|---|
| Какую точную задачу выполнит агент? | Тикет или описание изменения с условием успеха | У задачи есть ограниченное конечное состояние. |
| До какой production-цели он сможет добраться? | Список аккаунтов, сервисов, хостов, пространств имен или API-маршрутов | Цель не включает посторонние системы. |
| Какие чтения раскрывают конфиденциальные данные? | Пример ответа и проверка полей | Эти поля нужны задаче или команда удаляет их. |
| Какие записи или внешние эффекты возможны? | Список методов, SSH-команд или пробный запуск | Для каждого эффекта есть владелец и путь восстановления. |
| Может ли агент создавать идентичности или менять права? | Проверка разрешений и серверный просмотр роли | Ответ по умолчанию - отклонить. |
| Истекает ли срок действия учетных данных и можно ли немедленно отозвать доступ? | Настройки выдачи и тест отзыва | Оператор может остановить активный запуск. |
| Кто подтверждает процесс и кто обрабатывает эскалацию? | Именованный согласующий и контакт по инциденту | Они доступны во время запуска. |
| Какая частота запросов соответствует последствиям? | Классификация действий для сессии и отдельных вызовов | Разрушительные вызовы получают отдельную проверку. |
| Как команда выполнит откат? | Проверенная команда или описанная процедура в консоли | У восстановления есть измеримое успешное состояние. |
| Какие доказательства сохранятся после запуска? | Расположение журналов авторизации и действий | Другой инженер сможет изучить их позже. |
Не превращайте это в формальность. Проверяющий должен отклонить доступ, если в запросе сказано «весь production» без конкретной цели, у задачи нет конечного условия, план отката основан на нигде не записанных знаниях команды или владелец учетных данных не может объяснить, как отозвать доступ.
В решении также нужно указать, что заставит команду остановиться. Это может быть запрос агентом операции за пределами утвержденного списка методов, несовпадение цели, неоднозначный ответ на запись, непонятный оператору запрос подтверждения или ошибка проверки аудита. Условие остановки не дает оператору импровизировать под давлением.
Не нужно требовать полного совета по изменениям для узкой обратимой проверки состояния. Но перед выдачей общей оболочки, широких прав на запись в базу, доступа к данным клиентов или возможности менять авторизацию такой уровень внимания необходим. Соотносите объем проверки с радиусом поражения, но не путайте скорость с пропуском важных фактов.
Проверьте путь отказа до того, как он понадобится
Граница разрешений не прошла проверку, пока команда не увидела, что она что-то запрещает. Успешные тесты показывают, что агент может работать. Тесты отказа показывают, что граница действительно существует.
Используйте изолированную идентичность и четко помеченный одноразовый production-ресурс. Убедитесь, что агент может выполнить одно предусмотренное чтение или изменение. Затем попробуйте запрещенный метод, запрещенную цель и вызов после отзыва доступа. Для каждой попытки запишите код ответа, сообщение об ошибке и запись в аудите. Точный текст ошибки может отличаться, но запрещенный запрос не должен создавать побочный эффект.
Проводите тест через тот же маршрут, который будет использовать настоящий запуск. Проверка в staging не доказывает работу production-механизма подтверждения, привязки production-идентичности или production-журналирования. Прямой тест API не доказывает работу SSH-обертки. Мок не доказывает, что endpoint поставщика соблюдает идентификатор идемпотентности. Проверяйте границу, через которую действительно пройдет действие.
Проверьте и прерывание. Запустите безвредную операцию, достаточно долгую для наблюдения, отзовите авторизацию во время ее выполнения и проверьте, что произойдет с текущим и следующим запросом. Некоторые системы не могут отменить уже принятую работу. Этот факт должен быть частью плана отката, а не мелким шрифтом.
Зафиксируйте ожидаемое поведение при отказе в инструкции. Когда оператор видит ошибку во время настоящего запуска, он должен понимать, означает ли она исправно работающий защитный механизм, сломанные учетные данные, несовпадение цели или сбой удаленного сервиса. Если считать каждый отказ поводом для обхода, узкие права незаметно превратятся в широкий доступ.
За временным доступом должен оставаться владелец после завершения агента
Полномочия в production должны заканчиваться вместе с утвержденной задачей. Учетные данные, оставленные «на всякий случай», со временем превращаются в незадокументированную зависимость или незамеченный путь обратно в production.
Назначьте одного владельца, который удалит или отключит доступ после запуска, проверит результат и прикрепит доказательства к той же записи, которая разрешила доступ. Если задача становится регулярной, создайте постоянную идентичность с фиксированными правами, описанными правилами подтверждения и регулярной проверкой. Не сохраняйте экстренное исключение только потому, что однажды оно оказалось полезным.
Перед закрытием работы сопоставьте журнал действий с утвержденным списком методов. Разберите дополнительные вызовы, повторы, изменившие состояние, запрещенные запросы и операции с неоднозначным ответом. Затем отзовите сессию или учетные данные, даже если агент сообщил об успехе. Отчет агента - это материал для проверки, а не окончательное доказательство того, что принял production.
Начать можно с простого: выберите один существующий процесс агента и проведите его через таблицу проверки до следующего production-запуска. Широкие учетные данные, расплывчатые описания задач и непроверенные шаги восстановления быстро проявятся, когда их придется записать.
Вопросы и ответы
Безопасен ли доступ агента с правами только для чтения к production?
Нет. Доступ только для чтения может раскрыть данные клиентов, внутреннюю архитектуру, метаданные развертывания и учетные данные, случайно попавшие в журналы или ответы конфигурационных интерфейсов. Считайте доступ к данным production-доступом, если агент может обращаться к конфиденциальным записям, даже когда он ничего не может изменить.
Когда агенту нужно подтверждение для каждого вызова?
Запрашивайте подтверждение для операций, последствия которых зависят от конкретного вызова: удаления, публикации, платежа, изменения доступа или команды, пересекающей границу окружения. Подтверждение сессии подходит доверенному процессу, который выполняет узкую, заранее проверенную задачу. Если подтверждение требуется для каждого безобидного чтения, люди начнут нажимать кнопку, не читая запросы.
Как ограничить права учетных данных для автономного coding-агента?
Начните с минимального действительно необходимого набора: один сервис, одно окружение, один тип ресурса и только те операции, которые нужны для назначенной задачи. Не используйте учетные данные с широким доступом ко всему аккаунту только потому, что их проще выдать. Расширяйте права лишь после того, как команда сможет изучить результаты успешных и неудачных запусков.
Что считается настоящим планом отката действий агента?
План отката должен называть конкретного человека, точную команду или действие в консоли, ожидаемое состояние после восстановления и срок, по истечении которого нужно признать восстановление неудачным. Восстановить резервную копию базы недостаточно, если агент также может отправлять письма, менять учетные данные и права или создавать внешние записи. До использования в production проверьте план на одноразовом ресурсе.
Какие аудиторские данные нужно сохранять для production-доступа AI-агента?
Сохраняйте идентификатор агента, идентификатор процесса, событие авторизации, каждый запрошенный вызов, цель, ответ или ошибку, временные метки и событие отзыва доступа. Контекста должно хватать для восстановления намерения и результата, но сам секрет хранить не нужно. Размещайте эти записи там, где агент не сможет их изменить.
Достаточно ли короткоживущих учетных данных для контроля AI-агента?
Даже короткая сессия может причинить необратимый ущерб, а учетные данные с ограниченным сроком действия можно скопировать или использовать из нежелательного процесса до истечения этого срока. Срок действия служит запасным ограничением, но не заменяет дизайн авторизации. Сочетайте его с узкими правами, подтверждением в правильной точке и возможностью немедленно отозвать доступ активного процесса.
Должен ли AI-агент использовать общие учетные данные команды?
Для каждой цели агента используйте отдельную идентичность, например для проверки развертывания, разбора инцидента или исправления миграции. Общие учетные данные людей уничтожают возможность установить автора действия и делают отзыв доступа неизбирательным. Проверяющий должен иметь возможность понять, кто запустил агента и какими правами тот обладал, не изучая переписку в чате.
Кто должен подтверждать действия агента в production?
Подтверждающий должен понимать последствия операции и иметь полномочия принять этот риск. Для обычной узкой проверки развертывания им может быть дежурный инженер. За изменения, затрагивающие клиентов, должен отвечать владелец сервиса или утвержденный согласующий, а не человек, который механически подтверждает запрос.
Как проверить production-доступ без риска для production?
Дайте агенту безвредное действие в production, которое проходит через тот же путь авторизации, например создание и удаление явно помеченного тестового объекта в выделенном пространстве имен. Затем отзовите его права во время запуска и убедитесь, что следующий вызов завершается ошибкой. Проверка только в staging не доказывает, что production-идентичность, подтверждение, журналирование и отзыв доступа работают вместе.
Что делать, если AI-агент ведет себя неожиданно в production?
Остановите процесс агента, отзовите его активную авторизацию, отключите или замените учетные данные, если они могли раскрыться, и сохраните аудиторские записи до начала очистки. Затем определите последнее подтвержденное успешное действие и проверьте состояние цели. Не просите того же агента проводить расследование, пока человек не ограничит его полномочия.