Хотите заказать веб-сайт? Связаться с нами

Права агента: настройка разрешений в проекте

Вы уже можете контролировать запуск Bash-команд, но каждый раз решать вручную утомительно, а разрешать всё подряд — опасно. Разрешения (permissions) — это система правил, которая решает за вас: какие действия агент выполняет без вопросов, а какие останавливает и ждёт вашего согласия. В этом уроке разберём, как устроены права агента, из чего состоит грамотная настройка и как найти баланс между скоростью и безопасностью.

Права агента: настройка разрешений в проекте

Что такое разрешения

Разрешение — это право, которое вы даёте агенту на конкретное действие. Прежде чем выполнить команду, изменить файл или обратиться к инструменту, агент проверяет: есть ли у него на это право.

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

Разрешения — это средний уровень управления между двумя крайностями: полным автопилотом и ручным контролем каждой мелочи. На автопилоте агент работает быстро, но вы не видите, что он делает. При ручном контроле вы видите всё, но каждый запуск теста превращается в диалог. Правильно настроенные разрешения дают скорость автопилота и безопасность ручного контроля одновременно.

Спектр разрешений

Права агента удобно представлять как спектр — от полной свободы до полного запрета. Понимание этого спектра помогает осознанно выбирать политику для каждого типа действий, а не настраивать всё «на глаз».

  1. Разрешено всегда. Действия выполняются без вопросов — обычно безопасные и частые: чтение файлов, git status, запуск тестов.
  2. Спрашивать каждый раз. Действие останавливается и ждёт одобрения — для команд, которые меняют состояние: установка пакетов, запись в файлы, git-коммиты.
  3. Спрашивать с предупреждением. Агент выполняет действие, но помечает его как рискованное — для операций, которые обычно безопасны, но могут быть опасны.
  4. Запрещено. Действие отклоняется автоматически, агент даже не пробует его выполнить.

Спектр применяется не к агенту в целом, а к отдельным категориям действий. Один агент может иметь право запускать тесты без вопросов, спрашивать перед git push и не иметь права удалять файлы.

Чем точнее вы разложите действия по этому спектру, тем меньше лишних вопросов и меньше рисков.

Что подлежит разрешению

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

Категория Что попадает под разрешение
Команды оболочки Запуск bash-команд, включая установку пакетов и git-операции
Файлы Создание, изменение, переименование и удаление файлов
Сеть HTTP-запросы, загрузка файлов, обращение к внешним API
Переменные окружения Чтение и изменение переменных, доступ к секретам
Система Действия за пределами проекта: права, сервисы, глобальные установки

Категорий может быть больше, а их границы зависят от harness. Полезно один раз посмотреть, какие категории поддерживает ваш инструмент, и решить по каждой: что агенту действительно нужно, а что лучше запретить. Принцип «минимум прав» здесь работает так же, как в безопасности вообще: агент получает ровно столько прав, сколько нужно для задачи, и ни граммом больше.

Как выглядит запрос разрешения

Когда действие требует одобрения, агент останавливается и показывает вам запрос. Важно понимать, что вы видите не абстрактное «разрешить?», а конкретную информацию, по которой можно принять решение.

Агент хочет выполнить: npm install express
Правило: установка пакетов → спрашивать
Ваш выбор: Разрешить / Отклонить / Разрешить всегда

В запросе обычно есть три части: само действие, причина его появления и варианты ответа. Кнопка «Разрешить всегда» особенно ценна: она не только пропускает текущее действие, но и создаёт правило на будущее. Один раз разрешив безопасную команду «навсегда», вы убираете её из будущих вопросов — это главный механизм постепенной настройки прав.

Перед тем как нажать «Разрешить», задайте себе вопрос: «что будет, если действие выполнится не так, как задумано?» Если ответ не нравится — отклоните или попросите изменить команду. Отказ — не тупик: вы можете объяснить агенту, что именно вас смущает, и он предложит безопасный вариант.

Что разрешать, а что нет

Универсального «правильного» набора правил не существует, но есть устойчивые закономерности. Частые безопасные операции стоит разрешать сразу — иначе диалог с агентом превратится в бесконечные подтверждения. А вот действия с необратимыми последствиями должны оставаться под контролем.

Обычно можно разрешить Лучше оставить под контролем
Чтение файлов и поиск по проекту Удаление файлов и папок
git status, git diff, git log git push, git reset --hard, force-операции
Запуск тестов и линтеров Установка и обновление пакетов
Сборка и проверка кода Команды sudo и изменения вне проекта
Мелкая работа с файлами внутри проекта HTTP-запросы и загрузка файлов из сети

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

Заметьте закономерность: разрешать стоит то, что можно безопасно повторить и легко откатить через откат изменений. Чтение, тесты, просмотр статуса — безобидны в любом количестве. Удаление и push необратимы или затрагивают других — они всегда должны быть заметны. Если сомневаетесь в команде — оставьте её под вопросом.

Как настраивать правила

Правила разрешений обычно задаются в конфигурационном файле или через интерфейс harness. Хорошая конфигурация читается как инструкция: по ней сразу видно, что агент делает сам, а что согласовывает с вами. Часто правила можно разделить на глобальные — для всех проектов, и локальные — для конкретного проекта.

Разрешать без вопросов:
  – чтение файлов в проекте
  – git status, git diff, git log
  – запуск тестов и линтеров

Спрашивать:
  – запись и изменение файлов
  – установка пакетов
  – git commit и git push

Запрещено:
  – удаление файлов за пределами проекта
  – команды с sudo

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

Диагностика проблем с разрешениями

Неправильная настройка прав проявляется двумя типичными симптомами, и оба легко распознать. Первый — агент «вязнет»: на каждый чих спрашивает разрешения, работа стоит, сессия раздражает. Второй — агент «летит»: делает всё сам, а вы узнаёте о его действиях постфактум. Обе крайности лечатся пересмотром правил, а не «силой воли».

  1. Вязнет. Слишком много вопросов — разрешите частые безопасные действия «навсегда».
  2. Летит. Нет вопросов вообще — верните под контроль действия с необратимыми последствиями.
  3. Повторяющиеся вопросы. Один и тот же запрос приходит снова — создайте для него постоянное правило.
  4. Неожиданный отказ. Агент не может сделать нужное — проверьте, не попало ли действие под запрет.

Периодический пересмотр правил — часть гигиены работы с агентом.

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

Используйте «Разрешить всегда» как приборную панель доверия: каждый раз, когда вы нажимаете эту кнопку, вы фактически добавляете правило. Через неделю откройте список правил и посмотрите на него, как на карту своих отношений с агентом: где вы ему доверяете, а где держите на коротком поводке. Это лучший способ заметить, что вы разрешили что-то по привычке, хотя давно пора убрать.

Итоги

Разрешения превращают управление агентом из ручного («подтверждай каждую команду») в политическое («вот что ты делаешь сам, вот что согласуем, а вот это — никогда»).

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

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

Глоссарий

  1. Разрешение (permission) — право, которое пользователь даёт агенту на конкретное действие.
  2. Permission-запрос — остановка агента перед действием для получения одобрения пользователя.
  3. Спектр разрешений — шкала прав от «разрешено всегда» до «запрещено».
  4. Разрешить всегда — вариант ответа, создающий постоянное правило для действия.
  5. Категория действий — группа операций (файлы, команды, сеть), к которой применяются правила.
  6. Минимум прав — принцип настройки, при котором агент получает ровно столько прав, сколько нужно.
  7. Глобальное правило — настройка, действующая во всех проектах.
  8. Локальное правило — настройка, действующая в конкретном проекте.
  9. Конфигурация разрешений — файл или набор настроек, описывающий права агента.
  10. Harness — программа-оболочка, через которую агент выполняет действия и управляется пользователем.

Теги: