Агент меняет файлы быстрее, чем вы успеваете их прочитать, поэтому у вас должна быть страховка из трёх слоёв: контрольные точки внутри сессии, git между сессиями и тесты, которые отличают рабочее от сломанного. Документация Codex прямо советует ставить git-контрольные точки до и после задачи, а документация Claude Code напоминает, что её собственные контрольные точки git не заменяют. Приёмы git подробно разобраны в уроке Git в AI-разработке, а тесты — в уроке Тесты для сгенерированного кода. Здесь мы связываем их в порядок действий вокруг сессии и не повторяем содержание.
После урока вы сможете
- Подготовить репозиторий к сессии агента: чистое дерево и ветка на задачу
- Выбрать способ отката под место ошибки: контрольная точка, restore или revert
- Выстроить порядок «тест до правки» и коммиты маленькими шагами
Содержание
Три слоя страховки
Контрольная точка Claude Code (/rewind)
- Что откатывает
- Файлы, которые правил инструмент редактирования, и беседу
- Предел
- Не видит файлы, изменённые только командами оболочки; не заменяет git
Git (коммиты, ветки)
- Что откатывает
- Всё, что в репозитории
- Предел
- Не откатывает базы, API и деплой
Тесты и CI
- Что откатывает
- Не откатывают, а обнаруживают поломку
- Предел
- Хороши настолько, насколько точны
Документация Claude Code сама оговаривает: контрольные точки — быстрое восстановление внутри сессии, а постоянная история остаётся за git. Действия во внешних системах (базы, API, деплой) контрольными точками не откатываются: их ограничивают разрешениями (урок 6).
До сессии
- Проверьте состояние:
git status --shortне должен показывать чужих правок. Если они есть, закоммитьте или спрячьте их: иначе в диффе агента смешаются ваши и его изменения. - Создайте ветку на задачу:
git switch -c feature/short-name. Агент не должен работать в основной ветке. - Зафиксируйте базу: убедитесь, что тесты проходят до начала. Красные тесты до сессии лишают смысла проверку после неё.
- Запишите задачу и критерий (шаблон из урока 5).
Если вы запускаете две сессии одновременно, дайте каждой свой рабочий каталог. В Claude Code для этого есть claude --worktree имя (каждая сессия получает отдельный checkout на своей ветке), в Codex — команда /worktree. Тот же результат даёт обычный git worktree add -b ветка путь. Репозиторию для этого нужен хотя бы один коммит.
Тест до правки
Порядок «сначала падающий тест» даёт агенту проверку, которую он может запустить сам, а вам — понятный критерий. Документация Claude Code приводит пример запроса: «напиши падающий тест, который воспроизводит проблему, затем исправь». Документация Codex советует для багов сначала воспроизвести ошибку и только затем предлагать исправление, а после правки просить запустить линтер и самый малый подходящий набор тестов и показать команды и результаты.
Шаги:
- Попросите написать тест и убедитесь, что он падает по правильной причине. Прочитайте тест сами: он должен описывать требование, а не повторять реализацию.
- Попросите реализовать код, пока тест не пройдёт.
- Запустите полный набор проверок сами или потребуйте вывод.
- Следите, чтобы агент не «починил» красный тест, ослабив или отключив его. Попросите устранять причину, а не проверку, и прочитайте дифф тестов отдельно.
Маленькие коммиты
Ритм работы: одна задача — один дифф — один коммит. Агент может сам сделать коммит, если вы попросите, но сообщение и состав коммита проверяйте. Практика для обоих инструментов:
- коммитьте после каждого зелёного шага, а не в конце дня;
- смешанные правки разделяйте: в коммит идут только фрагменты, относящиеся к задаче (приём
git add -pразобран в уроке библиотеки); - в сообщении коммита нет секретов и персональных данных;
- пока вы правите что-то сами, сообщайте об этом агенту, иначе следующим запросом он может перезаписать вашу правку.
Откат: какой инструмент выбрать
Агент только что правил файлы в сессии Claude Code, коммита ещё нет
- Что сделать
/rewind(илиEscдважды при пустом вводе) и «Restore code»
Правки не закоммичены, нужно вернуть один файл
- Что сделать
git restore путь/к/файлу
Файл удалён или изменён командой оболочки
- Что сделать
git restore путь/к/файлу(контрольная точка его не видит)
Коммит уже сделан и опубликован
- Что сделать
git revert <идентификатор коммита>: создаёт новый коммит, отменяющий старый, историю не переписывает
В Codex нужно вернуть изменения
- Что сделать
- Через git, документация команд встроенного отката не описывает
Перед git restore посмотрите git status и git diff: команда перезаписывает содержимое указанных путей версией из индекса или HEAD, и несохранённые правки в этих файлах пропадут. Подробнее про reset, reflog и поиск виновного коммита через bisect — в уроке о git при работе с агентом.
После отката перед следующей попыткой поменяйте запрос: если агент дважды ошибся одинаково, причина в постановке (недостаток контекста или критерия), а не в упрямстве модели.
Тесты в CI как последний барьер
Всё, что вы проверили локально, должно проверяться ещё раз в CI на pull request. Ассистент может не запустить длинный набор, а вы можете не заметить красный тест в чужом файле. Защищённая основная ветка и обязательные проверки превращают договорённость в правило.
Что дальше
Следующий урок — подключения и инструменты: MCP. Если вам нужен независимый взгляд на то, насколько надёжно в проекте работают тесты и откаты, посмотрите услугу аудита ИИ-кода.
Источники
- Claude Code — Checkpointing (открыта 24.10.2026)
- Claude Code — Common workflows, worktrees (открыта 24.10.2026)
- Codex CLI (открыта 24.10.2026)
- Codex — Prompting (открыта 24.10.2026)
- Git — git-restore (открыта 24.10.2026)
- Git — git-revert (открыта 24.10.2026)
- Git — git-worktree (открыта 24.10.2026)
- Git — git-switch (открыта 24.10.2026)
- Git — git-status (открыта 24.10.2026)