Стоп агента стоит в коде, а не в инструкции
Если агент уже ходит наружу из-под учётки сотрудника, что откроете первым: версию клиента или список полей, которые вообще не должны попадать в контекст? 3 ноября 2026 в журнале изменений Claude Code вышла версия 2.1.317. Перед сетевым вызовом или командой оболочки, которые уносят почту вошедшего пользователя в сеть, инструмент спрашивает человека. Это не сюжет про один адрес. ИИ-агент - это модель с правом вызвать инструмент, и граница проходит на вызове, а не в абзаце правил. Почта уехала не потому, что запрет забыли. Адрес вошедшего пользователя попадает в контекст. 6 ноября сотрудник Claude Code Addy Osmani описал: отдельные сайты просят контакт в заголовке User-Agent. Модель иногда сама дописывала почту из контекста в команду. Инструкция этого не разрешала, вызов всё равно собирался. Из контекста адрес обещали убрать следующим релизом, на 6 ноября его ждали в начале следующей недели. До тех пор защита узкая: 2.1.317 и новее задают вопрос перед сетевым вызовом или командой вроде curl, если в ней есть эта почта. Тот же провал мы ловили на своих внедрениях. В правилах написано не светить контакты и не ходить наружу без нужды. Потом агент "помогает сайту" и подставляет то, что увидел в контексте. Текст запрета прочитан, пакет уже собран. За одну сессию проверяем, стоит ли остановка на границе инструмента. - Команда claude --version. Ниже 2.1.317 - сначала обновление, потом разговор. - Одна задача: сходить на сайт, который требует контакт в User-Agent, и не отводить глаз от момента перед отправкой. Вопрос должен появиться до того, как запрос ушёл. - После сессии ищем свой адрес в исходящих вызовах, не в локальных файлах. На стенде Интеллект Технологии тот же приём уже без Claude Code в рабочем контуре. Берём тестовый адрес, не боевую учётку, кладём его в контекст нарочно. Если адрес дошёл до заголовка без вопроса человеку, сценарий не сдаём. Запрет в инструкции этого не лечит. Проверка 2.1.317 не видит произвольный скрипт, который модель написала и запустила сама. Пока релиз без почты в контексте не вышел, модель адрес по-прежнему видит: вопрос на вызове не стирает прочитанное. Авторежим, где на вопрос некому ответить, дыру не закрывает: задача либо встанет посреди пути, либо шаг пройдёт без человека. Список запрещённых команд в инструкции мы не считаем контролем: модель перефразирует команду быстрее, чем мы допишем список. Уедет не строка в логе, а почта сотрудника или контакт из карточки. Пока текст ничего не держит, своего агента проверяем по четырём местам, не по названию модели. - В контекст не кладём то, без чего шаг не живёт. Почта разработчика почти никогда не нужна, чтобы прочитать документацию или вызвать внутренний сервис. Чего модель не видела, то она не допишет по просьбе сайта. - Стоп стоит в коде инструмента, не в абзаце над ним. Перед исходящим запросом и командой оболочки код смотрит аргументы и тело. Нашёл контакт, секрет, внутренний адрес - вызов не уходит, человек видит, что именно хотели отправить. Как с платежом и записью в учёт: одного согласия модели мало. - Сгенерированный скрипт проходит тот же разбор, что и готовая команда. Иначе вопрос есть на curl, а запуск файла его обходит. - Авторежим без дежурного не получает внешнюю сеть там, где в данных есть люди. Если спросить некого, шаг ждёт. Стек модели вторичен. На GigaChat Pro и на YandexGPT агент видит только то, что мы положили в контекст, и делает только то, что пустил код инструмента. Смена поставщика не заменяет шлюз. Claude Code 2.1.317 полезен как чужой разбор, а не как наш контур: вопрос перед сетевым вызовом и командой с почтой уже есть, произвольный скрипт проверка не ловит, на 6 ноября адрес в контексте ещё лежал. Создание ИИ-агента с выходом в сеть начинается с этого, а не с более жёсткой формулировки запрета. Полностью - в блоге: https://inteltek.ru/blog/185