Большая часть работы с агентом безопасна и обратима: неудачный turn откатывают, неверную правку переписывают. Но у этой работы есть две точки, где ошибка стоит непропорционально дорого, и обе легко проскочить на автопилоте. Первая - старт автономной сессии, где вы отпускаете агента работать долго и без постоянного присмотра. Вторая - merge, где непроверенный diff перестаёт быть черновиком и становится историей репозитория. Признак, что точку проскочили, простой: сессию запустили, не назвав, когда ей остановиться, или влили ветку, не прочитав, что в ней.
Наивный ход в обеих точках - довериться тому, что "вроде всё в порядке". Перед автономной сессией: агент выбран, задача написана, кнопка запуска на месте - значит, можно идти. Перед merge: агент отчитался, что готово, diff выглядит правдоподобно, тесты "проходят" по его словам - значит, можно вливать. Оба хода экономят полминуты сейчас и открывают дверь дорогим последствиям потом, потому что именно в этих точках цена ошибки максимальна, а сигналов тревоги меньше всего.
Ломается это на том, что автономность и интеграция - необратимые по последствиям шаги. Долгая сессия без заданных границ может часами идти не туда, тратя токены и трогая то, что вы не собирались отдавать. Merge без чтения diff вносит в общую ветку то, что никто не смотрел глазами: лишние файлы, сгенерированный мусор, случайно закоммиченный секрет. Откат здесь возможен, но он уже публичный и дорогой - в отличие от локального turn, который никто, кроме вас, не видел.
Поэтому обе точки закрываются коротким чек-листом, а не общим ощущением готовности. Перед автономной сессией проверяют пять вещей. Агент и среда исполнения названы явно - вы знаете, кто и где будет работать. У задачи есть stop conditions - условие, при котором сессия останавливается сама, а не идёт бесконечно. Worktree или branch изолированы - агент не пишет в активную ветку. Permissions и сеть минимальны - разрешено ровно необходимое. Секреты переданы поддерживаемым способом, а не вписаны в промпт или в файл под контролем версий.
Каждый пункт стартового списка отвечает на конкретный вопрос доверия. Названный агент и среда снимают двусмысленность "какой агент и где". Stop conditions ограничивают горизонт: без них автономность превращается в бесконтрольный расход. Изоляция держит радиус ошибки в пределах отдельной ветки. Минимальные permissions и сеть - это разница между "агент не смог навредить" и "агенту повезло не навредить". Поддерживаемая передача секретов не даёт им утечь в лог, в контекст или в diff. Пять пунктов - это не перестраховка, а перечень того, что уже нельзя будет поправить, когда сессия пойдёт.
Перед merge проверяют шесть вещей, и первая - главная. Diff прочитан человеком, а не только агентом: это единственная проверка, которую нельзя делегировать тому, чью работу проверяют. Критерии приёмки проверены по одному, а не оптом. Запущены targeted-тесты и релевантные более широкие - в вашем прогоне, не в пересказе агента. В diff нет лишних, сгенерированных или секретных файлов. Находки review разрешены или явно приняты - не проигнорированы. Понятны откат и совместимость - что делать, если правка окажется неверной уже после вливания.
Почему diff читает именно человек, стоит проговорить отдельно. Quick Review даёт независимое второе мнение, прогоняя отдельного агента по изменениям, и это ценно - но это по-прежнему агент, оценивающий работу агента. На merge замыкается ответственность: в общую ветку код вносит человек, и последним, кто видел изменения целиком, тоже должен быть человек. Автоматическая проверка сужает, что читать, но не отменяет чтения - иначе одна модель и пишет, и одобряет, и слепое пятно одной становится слепым пятном обеих.
Цена этих проверок - минуты перед необратимым шагом, и это выгодный обмен. Прочитать diff и прогнать тесты перед merge стоит нескольких минут; откат влитой регрессии из общей ветки, с которой уже синхронизировались другие, стоит часов и чужого времени. Задать stop conditions перед сессией - одна фраза; остановить вручную ушедшую не туда автономную работу и разобрать её след - куда дороже. Чек-лист не замедляет, а переносит стоимость туда, где она минимальна.
Проверять, что чек-лист сработал, стоит по его собственному следу. После правильно закрытого merge вы можете назвать команду, которой проверяли, показать прочитанный diff и перечислить принятые находки review. После правильно запущенной сессии вы можете сказать, при каком условии она остановится и в какой ветке лежит её результат. Если на любой из этих вопросов ответа нет, чек-лист был проговорён формально, а не пройден - и точка осталась открытой.
Типичные провалы обеих точек зеркальны. На старте: запустить сессию без stop conditions и вернуться к бесконечному расходу; дать широкие permissions "чтобы не мешало" и получить лишние эффекты; вписать секрет в промпт. На merge: принять отчёт агента за прочитанный diff; проверить критерии оптом, а не по одному; влить ветку с задетыми unrelated-файлами; проигнорировать находку review вместо явного решения. Признак у всех один: необратимый шаг сделан без короткой проверки, которая заняла бы минуту. Пройдите список до шага, а не после - и большинство этих провалов просто не наступит.