Дмитрий Анашкин

Агент настроил себе защиту и перестал запускаться: как править настройки безопасно

Опубликовано 9 окт. 2026 г.8 мин чтенияНачальный
Файл настроек под замком, ключ и резервная копия папки рядом с ноутбуком с открытым редактором. Никаких логотипов и названий брендов
Туториал
Агент настроил себе защиту и перестал запускаться
Дмитрий Анашкин · 8 мин
Чему вы научитесь
  • Почему агент может сломать собственный запуск правкой настроек
  • Что именно ломается в файле настроек Codex и Claude Code
  • Порядок безопасной настройки за шесть шагов
  • Как проверить запрет на файле-приманке, не рискуя ключами
  • Когда можно включать режим без подтверждений
Начальный
2просмотров

Коротко

Почему агент может сломать сам себя?

Недавно я разбирал случай, который хорошо показывает механику. Агенту дали задание настроить себе защиту: запретить чтение файлов с ключами. Он дописал правило в свой файл настроек.

Сначала перестали отправляться сообщения. После перезапуска приложение вообще отказалось стартовать с ошибкой «не удалось загрузить конфигурацию, не запустится, пока не будет исправлено».

Попросить агента починить настройки было невозможно: чтобы агент заработал, приложение должно сначала прочитать файл, а прочитать его оно не может. Перезапуск тоже не помогает, он читает тот же сломанный файл. Восстанавливали руками, через Finder и текстовый редактор, по резервной копии.

Разберём простым языком, что пошло не так и какой порядок от этого защищает.

Две типичные поломки в файле настроек

В том случае ошибок было две, и обе типичные.

Неподдерживаемая форма правила. Приложение ответило так:

filesystem glob path `**/*.env` only supports `deny` access;
use an exact path or trailing `/**` for `deny` subtree access

Переводя на человеческий: шаблон «все файлы .env во всех папках» допустим только в одной форме запрета, а агент записал его в форме, которую валидатор отверг. Сам по себе шаблон не запрещён, неправильно было его оформление.

Строка не в своём разделе. Агент сам признал в отчёте, что параметр, который должен стоять в начале файла, попал внутрь раздела. В формате TOML, на котором написаны настройки Codex, раздел начинается с заголовка в квадратных скобках, и все строки ниже принадлежат ему до следующего заголовка. Файл при этом выглядит синтаксически нормальным, но значит уже другое.

Где живут настройкиCodexClaude Code
Для всех проектов на компьютере~/.codex/config.toml~/.claude/settings.json
Для одного проекта.codex/config.toml в папке проекта.claude/settings.json в папке проекта
ФорматTOMLJSON

Знать эти адреса стоит заранее. Когда приложение не запускается, искать их в панике сложнее.

Почему один и тот же промпт то работает, то нет?

Здесь ловушка для всех, кто пишет инструкции для команды. У автора инструкции всё работает, потому что его приложение уже настроено, и правка ложится на готовый файл. На чистой установке тот же текст промпта приводит агента к другому решению.

Приложения агентов обновляются часто, и вместе с ними меняется синтаксис настроек. Модель знает формат на момент своего обучения, а у тебя может стоять версия новее. Поэтому проверка актуальной документации должна идти до правки, а не после. В разобранном случае порядок был обратный: сначала правка, потом сверка синтаксиса.

Вывод для тех, кто готовит такие инструкции для коллег: промпт «настрой защиту» лучше заменить готовым, проверенным на чистой установке блоком настроек и командой «вставь этот блок, ничего не меняя». Тогда у всех получится одинаковый файл, и если что-то пойдёт не так, ошибка будет одна на всех и найдётся быстрее. А задачу агента сузить до проверки: сверить блок с документацией установленной версии и сообщить о расхождениях до вставки, а не исправлять их самостоятельно.

Об этом же явлении в более общем виде писал в материале про то, что инструкция устаревает за месяц.

Порядок безопасной настройки за шесть шагов

  1. Сверь синтаксис с документацией твоей версии

    Попроси агента сначала открыть официальную документацию по настройкам и проверить, какие формы правил поддерживает установленная версия. Только потом писать правило.

  2. Сделай резервную копию конкретного файла

    Скопируй файл настроек рядом с датой в имени. Не «сделай бэкап», а конкретный путь к конкретному файлу, и убедись глазами, что копия появилась.

  3. Пусть агент пишет в черновик

    Новые настройки сначала в отдельный файл-кандидат. Рабочий файл не трогаем, пока кандидат не проверен.

  4. Проверь кандидата

    Три вопроса: файл читается как TOML или JSON без ошибок; приложение принимает такие правила; корневые параметры стоят в начале файла, а не внутри разделов.

  5. Замени и открой новый чат

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

  6. Проверь запреты на приманке

    Файл с выдуманным содержимым под запретом и новый чат, который пытается его прочитать. До этой проверки защита не считается настроенной.

Если приложение уже не запускается

Найди файл настроек через Finder или проводник, открой его в обычном текстовом редакторе и верни содержимое из резервной копии. Нет копии - удали последние добавленные строки. Терминал для этого не обязателен, хотя с ним быстрее: как перестать его бояться, разбирал в статье про терминал для непрограммиста.

Как проверить, что запрет действительно работает?

В разобранном случае после восстановления был ещё один показательный момент. Агент честно написал в ответе, что запреты он будет соблюдать, но автоматическая блокировка в текущем чате не подтверждена. Это две разные вещи: «агент обещает не читать» и «приложение не даст прочитать».

Обещание агента держится, пока он помнит правило в контексте. Блокировка на уровне приложения работает всегда. Как отличать отчёт агента от результата вообще, разбирал в материале про то, как ловить «готово» без результата.

Проверка на приманке выглядит так:

  1. Создай в папке проекта файл с именем, которое попадает под запрет. Внутри одна выдуманная строка.
  2. Открой новый чат и попроси агента показать содержимое этого файла.
  3. Правильный результат - отказ приложения или явная ошибка доступа. Неправильный - агент выводит «ПРОВЕРКА-123».
  4. Повтори с поиском по папке: запрет должен срабатывать и тогда, когда агент ищет текст, а не открывает файл напрямую.
  5. Удали приманку.

Когда включать режим без подтверждений?

Логика простая. Подтверждения - это ручной фильтр, запреты - автоматический. Убирать ручной фильтр, пока не проверен автоматический, значит остаться без обоих.

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

Какие запреты ставить в первую очередь и что агент вообще видит на диске, разбирал в статье о том, что агент делает на твоём компьютере.

Частые вопросы

Частые вопросы

Главный вывод

Самое неприятное в этой истории не поломка, а ложное чувство безопасности после починки. Приложение снова запустилось, агент пишет «правила настроены», и все переходят к следующему шагу, включая режим без подтверждений. Хотя проверки ещё не было.

Практический шаг на сегодня: найди у себя файл настроек агента, сделай его копию с датой в имени и создай приманку test.env. Десять минут, и ты будешь знать, защищён ли ты на самом деле.

Ты уже проверял свои запреты на приманке или пока веришь отчёту агента?

Источники

Отправь другу или себе в избранное в Telegram, чтобы не потерять.

Поделиться в Telegram
Было полезно?
Автор
Дмитрий Анашкин
Практик-интегратор ИИ в бизнес

Основатель NeuroDA и SMAIPL. Корпоративные воркшопы по ИИ, внедрение AI в бизнес-процессы.

Похожие гайды

Как подключить домен к сайту: свой адрес вместо технической ссылки

Свой домен меняет адрес, а не приложение, и подключается за вечер. Разбираю на запуске этого блога, как выбрать между поддоменом и корнем, какую запись DNS ставить, откуда берётся замочек https, сколько ждать и почему после переключения ломаются вход и карта сайта.

10 мин

Сколько стоит содержать приложение: из чего складывается счёт

Нужно ли платить заново за каждую доработку? Нет: хостинг берёт деньги за процессор, память и время работы, а выкладка новой версии бесплатна. Разбираю строки месячного счёта, какие доработки его меняют, сколько стоит нейросеть внутри и как прикинуть сумму до выкладки.

9 мин

Балансы оплаченных сервисов: как не узнать от клиента, что кончились деньги на API

У самосборного продукта десятки мелких платных аккаунтов, и каждый кончается в свой момент. Разбираю на своих 27 аккаунтах, где остаток читается по API, как вести ручную цифру, какие пороги и тревоги ставить и почему следилка не должна гаснуть вместе с хостингом.

10 мин

Локальная ссылка перестала открываться: что такое localhost и почему он гаснет

Ссылка localhost ведёт в твой же компьютер, а сайт по ней показывает программа-сервер, которая живёт, пока открыто окно агента. Разбираю, что такое порт, почему первый запуск долгий, четыре причины, по которым страница не открывается, и как запускать проект без агента.

10 мин

Связанные понятия