До какой степени стоит открывать доступ к своему компьютеру инструментам разработки на базе агентов?
Эпоха, когда редакторы просто писали код за нас, закончилась. Теперь такие агенты, как Claude Code, самостоятельно открывают терминал, сканируют файловую систему и вносят правки в код. Это удобно, но в то же время и пугающе. Всего одна промпт-инъекция может привести к утечке файла .env или SSH-ключей. Нам нужны конкретные методы контроля, которые дадут агенту автономность, но не позволят ему переступить черту.
Создание "конституции" для агента в корне проекта
По умолчанию агенты стремятся просмотреть весь проект для выполнения команды. Если оставить это без присмотра, возникнет риск прочтения конфиденциальных настроек. Самая надежная защита — создание специального файла правил для агента в корневом каталоге проекта.
- Создайте файл
CLAUDE.md или .agent-rules в корне проекта.
- Укажите внутри файла пути, запрещенные для доступа. Необходимо жестко прописать правила
deny, чтобы агент даже не смотрел в сторону таких путей, как .env, ~/.ssh или ~/.aws/credentials.
- При запуске агента используйте опцию
--allowedTools, чтобы разрешить только необходимые функции. Активируйте минимальный набор инструментов, таких как Bash, Read или Write.
Использование режима Default в Claude Code, который требует подтверждения пользователя для любых операций записи, позволяет физически заблокировать риск утечки исходного кода. Один конфигурационный файл способен предотвратить инцидент, при котором агент без вашего разрешения отправит переменные окружения на внешний сервер.
Как не дать агенту, попавшему в цикл, опустошить ваш кошелек
Инструменты, ориентированные на агентов, самостоятельно планируют и выполняют задачи. Проблема возникает, когда они попадают в логическую ловушку. Не найдя решения, агент может войти в бесконечный цикл, повторяя вызовы API, что в мгновение ока приведет к счету на десятки долларов. Согласно исследовательским данным Anthropic, простая установка явных критериев выхода (Exit Criteria) в промпте может сократить время выполнения на 62%.
Чтобы предотвратить неконтролируемые расходы, необходимо встроить "автоматический выключатель" прямо в промпт:
- Ограничение количества попыток: Добавьте в конец команды условие: "Если проблема не решена после 5 попыток, немедленно прекрати работу и сообщи о причине неудачи".
- Объективные критерии успеха: Субъективные указания вроде "закончи, когда код будет выглядеть красиво" — это худший вариант. Вместо этого укажите в качестве абсолютного критерия завершения прохождение
npm test или конкретных юнит-тестов.
- Ограничение контекста: Использование паттернов Glob в файле
.cursorrules для ограничения доступа агента только к определенным директориям (например, src/api/**/*) предотвращает ненужную трату токенов.
Установка таких "шлюзов завершения" подавляет потребление токенов, вызванное двусмысленными инструкциями, что позволяет экономить более 40% ежемесячных затрат на API.
Изолированный рабочий процесс для защиты основной ветки
Метод, при котором агент напрямую редактирует локальные файлы, быстр, но опасен. Непроверенный код может повредить основную ветку. Инженерная команда Shopify, управляя собственным инструментом-агентом Sidekick, внедрила метод перекрестной проверки результатов с помощью отдельной модели. Нам также следует разделять рабочее пространство для агента.
Самый чистый способ — использовать git worktree. Создайте независимую директорию и ветку специально для сессии агента и поручите работу там. По завершении попросите агента предоставить краткий отчет об изменениях через git diff и автоматически запустите юнит-тесты с помощью таких инструментов, как Playwright или Vitest. Этот процесс сокращает время ручного ревью на 70%, позволяя сливать в основную ветку только проверенный код.
Настройка IDE, мешающая скорости агента
Агенты пишут код намного быстрее, чем человек печатает. В этот моменты, если в VS Code включена функция editor.formatOnSave, формат файла может принудительно измениться прямо во время записи кода агентом, что приведет к ошибкам сопоставления текста. Это выглядит так, будто инструмент спотыкается о собственные ноги.
Кроме того, неинтерактивные оболочки (shells), запускаемые агентом, часто не могут прочитать переменные окружения, настроенные в .zshrc, что приводит к сбоям в работе инструментов.
- В файле
.vscode/settings.json совместного проекта отключите editor.formatOnSave, установив значение false.
- Перенесите настройки PATH или API-ключей из
.zshrc в файл .zshenv, который загружается независимо от способа запуска оболочки.
- Вместо этого используйте
Husky для настройки pre-commit хуков, чтобы линтеры и форматировщики запускались только тогда, когда агент завершил работу и делает коммит.
Если вы не хотите видеть агента, беспомощно стоящего из-за того, что он не может найти переменные окружения, начните с проверки настроек оболочки.
| Тип настройки |
Имя файла |
Рекомендуемое содержимое |
Видимость для агента |
| Глобальные переменные |
.zshenv |
PATH, API_KEY, пути к SDK |
Загружается во всех сессиях |
| Интерактивные настройки |
.zshrc |
alias, prompt, theme |
Может игнорироваться при запуске агента |
| Настройки входа |
.zprofile |
Скрипты инициализации системы |
Валидно только в login shell |