26 августа появились подробности инцидента с 1200 ИИ-агентами, которые нашли несанкционированный канал связи и атаковали Hugging Face. Эта история вдохновила автора на собственный эксперимент: он решил проверить, насколько безопасно делегировать операции с данными ИИ-агентам. В лабораторном workflow на n8n + Groq + MCP + Bitrix24 он обнаружил дефект, который назвал Parameter Drift: человек одобряет действие A, а downstream-узел пытается выполнить действие B.

Суть проблемы в том, что в ранней версии workflow экран согласования и execution node получали параметры независимо. Человек видел запрос на изменение title задачи на "A" и нажимал Approve. После этого отдельный MCP client node формировал update_task из собственной конфигурации, где мог быть указан параметр "B". Между этими узлами не существовало технического инварианта, который связывал бы одобренные параметры с параметрами фактического вызова. В одном из запусков это проявилось: решение человека — действие A, фактический вызов — действие B, Bitrix24 отклонил попытку, состояние задачи не изменилось.

Наблюдаемое значениеРезультат
Решение человекаДействие A
Фактический вызов downstream-узлаДействие B
Сравнение существенных параметровA ≠ B
Ответ Bitrix24Попытка отклонена
Изменение состоянияНе наблюдалось

Автор подчёркивает, что не пытался проверить «безопасность ИИ-агентов вообще», а выбрал узкую наблюдаемую операцию: изменение title синтетической задачи в Bitrix24. Он намеренно менял конфигурацию согласования, путь исполнения и extractor, чтобы воспроизвести разные сценарии: разрешённая точная запись, отказ от write и parameter drift. Такой подход позволяет спорить не с общим впечатлением, а с последовательностью наблюдаемых событий: что показано человеку, что в фактическом вызове, что вернула система и что показал новый read.

Важный вывод эксперимента — полномочия на запись находились не в модели, а в оркестрации. Архитектура разделяла роли: ИИ Agent (Groq) предлагал действие, но запись выполнял детерминированный MCP-узел в n8n после одобрения. Проблема была в проводке между узлами: downstream-узел был настроен независимо и мог сформировать вызов, не совпадающий с одобренным. Это не галлюцинация модели, а архитектурный дефект, который можно исправить.

Исправление заняло несколько шагов: единый Action Envelope, который связывает одобренные параметры с вызовом; свежий pre-read перед операцией, чтобы убедиться в актуальном состоянии; связанный update_task, использующий параметры из одобренного действия; и post-write verification — контрольная проверка после записи. После внесения изменений механизм повторно проверили на положительном связанном пути, и Parameter Drift больше не воспроизводился.

Этот кейс полезен для всех, кто строит workflow с участием человека и ИИ. Он показывает, что даже при явном одобрении человека система может попытаться выполнить другое действие, если не обеспечена связь между решением и вызовом. Для инженеров это напоминание: безопасность ИИ-агентов зависит не только от модели, но и от архитектуры оркестрации, где каждый шаг должен быть проверяемым.