Approval-карточка - это момент, когда автономия агента встречается с вашим решением. Легко превратить её в кнопку "да", которую жмут не глядя. Но карточка не только спрашивает разрешение - она даёт прочитать, отредактировать и ограничить действие до того, как оно случится, и в этом её настоящая ценность.
Наивный ход понятен: агент занят делом, карточка тормозит, и рука тянется подтвердить. Ожидание - что модель предлагает разумное, а карточка лишь формальность на пути к результату. Из этого растёт привычка одобрять быстро и широко, особенно когда карточки идут одна за другой.
Ломается это на том, что подтверждают часто не то, что прочитали. Команда бывает почти правильной: верное действие, но не тот рабочий каталог, лишний аргумент, слишком широкий glob, незамеченный побочный эффект. Одобрив по форме, вы санкционируете именно фактическую команду, а не своё представление о ней. Поэтому первый шаг у карточки - не жать, а читать: сама команда, CWD, аргументы, scope и побочный эффект. Именно рабочий каталог обманывает чаще всего: команда, безобидная в корне проекта, в другом CWD затронет не те файлы, а глаз, привыкший читать саму команду, каталог пропускает.
Второй шаг - карточка редактируема, и это меняет её роль. Команду можно поправить прямо в карточке: сузить путь, убрать флаг, сменить каталог. Можно не править руками, а описать нужное изменение, и быстрая модель перепишет команду - но результат снова приходит вам на ревью, а не исполняется сразу. Есть и клавиатурные действия: одобрить, always-allow или отклонить, не берясь за мышь. Карточка - это редактор решения, а не только его выключатель.
Третий шаг - выбрать срок разрешения, и здесь цена ошибки растёт с длительностью. Разрешение бывает одноразовым, на сессию, project-shared, project-local и global. Правило простое: выбирайте минимальный срок, которого хватает. Одноразовое ничего не запоминает; сессионное живёт до конца сессии; проектные и global пишутся в конфиг и переживают перезапуск. Чем дольше срок, тем дальше во времени уедет последствие сегодняшнего быстрого "да". Разница особенно ощутима между project-shared и project-local: первое уедет в общий конфиг и подхватится коллегами, второе останется у вас, и путать их - значит либо навязать команде своё правило, либо потерять его при следующем клоне.
Одна деталь про сессионный grant важна для параллельной работы. В stable 3.7.16 разрешение, выданное на сессию, распространяется на root-агента и его subagents: выдав scope один раз, вы не будете переспрашиваться под каждый subagent. Это удобно и одновременно расширяет радиус - сессионное "да" теперь охватывает не одного исполнителя, а всё дерево. Номер версии здесь не украшение: поведение датировано и проверяется по актуальному changelog.
Отдельно стоит always-allow, потому что это не ответ текущему агенту, а изменение политики. Нажатие пишет правило в конфиг - и с этого момента действует на будущее, а не на один вызов. Прежде чем согласиться, откройте файл, куда правило ляжет, и убедитесь, что записанный prefix или glob не шире намерения: карточка часто предлагает обобщение, и обобщение легко оказывается щедрее, чем вы хотели.
Почему карточку сделали редактором, а не простым да или нет. Потому что альтернативы хуже. Голое "нет" останавливает работу и заставляет переформулировать весь prompt из-за одной детали. Голое "да" пропускает почти-правильную команду целиком. Возможность поправить и ограничить прямо на месте держит агента в движении, но оставляет последнее слово и точный scope за человеком - это и есть баланс автономии и контроля. Тем зрелая карточка и отличается от модального окна "ОК или Отмена": она не заставляет выбирать между полным доверием и полной остановкой.
Проверять решение по карточке стоит не тем, что агент "вроде сделал", а следом действия. Одобрили правку - прочитайте diff. Одобрили команду - посмотрите, что она изменила и где. Нажали always-allow - откройте конфиг и перечитайте записанное правило глазами, а не по памяти о том, что предлагала карточка. Расхождение между тем, что вы думали одобрить, и тем, что записалось, лучше поймать сразу, а не на десятой сессии.
Типичные провалы - о подтверждении не глядя. "Агент сделал не то" - команда была почти правильной, а прочитали её по диагонали. "Он больше не спрашивает" - когда-то нажали always-allow с широким prefix. "Правило слишком общее" - согласились с предложенным обобщением, не открыв файл. "Subagent сделал без спроса" - сессионный grant распространился на всё дерево. Признак один: карточку закрыли быстрее, чем прочитали её команду, scope и срок. Прочитайте эти три поля - и почти всякий сюрприз исчезнет до действия.