Агент правит несколько файлов за один заход, и иногда результат оказывается хуже исходного состояния. Отменять правки вручную по одной — долго и ненадёжно: часть изменений вы просто не заметите. Именно для этого в Claude Code есть чекпойнты: снимки состояния файлов, к которым можно вернуться одной командой.
Но у механизма есть строго очерченные границы, и это едва ли не важнее самого механизма. Чекпойнты покрывают не все изменения — и разработчик, уверенный, что «откат вернёт всё как было», однажды обнаружит, что часть правок не вернулась. После урока вы будете уверенно откатываться и, что важнее, точно знать, на что этот откат не распространяется.
Что уже умеем / что добавим
Вы умеете ставить задачи агенту, выбирать режим разрешений под уровень риска и понимаете, почему одобрять действия нужно осознанно. Даже при аккуратной работе часть правок оказывается неудачной — теперь добавим инструмент, который позволяет вернуться назад без ручной отмены.
Что вы узнаете в рамках статьи
- Как Claude Code создаёт чекпойнты и что в них попадает
- Как открыть меню отката и что делает каждый из его вариантов
- Чем восстановление кода отличается от восстановления диалога
- Какие изменения чекпойнты не отслеживают и почему это критично
- Почему чекпойнты не заменяют git и как их сочетать
Ключевые термины
- Чекпойнт — снимок состояния файлов, создаваемый перед каждым вашим запросом.
- Откат (rewind) — возврат кода и/или диалога к состоянию выбранного чекпойнта.
- Инструменты редактирования файлов — встроенные средства правки, изменения которых попадают в чекпойнты, в отличие от изменений через команды оболочки.
- Восстановление кода — возврат содержимого файлов без изменения истории диалога.
- Восстановление диалога — возврат переписки к выбранному сообщению без изменения файлов.
- Суммаризация — сжатие части переписки в краткое изложение для освобождения места в контексте.
Как создаются чекпойнты
Механизм работает без вашего участия. Перед каждым вашим запросом Claude Code фиксирует состояние файлов — то есть чекпойнт создаётся при каждом отправленном сообщении.
Несколько технических деталей, важных для практики:
- Хранятся снимки для ста последних чекпойнтов сессии. Более старые вытесняются.
- Чекпойнты сохраняются вместе с диалогом, поэтому
/rewindработает и после возобновления сессии. - Чекпойнты удаляются вместе с сессиями через 30 дней; период настраивается параметром
cleanupPeriodDays.
Отслеживаются изменения, которые Claude вносит своими инструментами редактирования файлов. Эта формулировка выглядит технической, но именно в ней спрятано главное ограничение — к нему мы вернёмся отдельным разделом.
Меню отката и его варианты
Открыть меню можно двумя способами: командой /rewind или двойным нажатием Esc при пустой строке ввода. Если в строке есть текст, двойной Esc очистит его вместо открытия меню; очищенный текст попадает в историю ввода, и его можно вернуть стрелкой вверх.
В меню перечислены ваши сообщения за сессию. Выбираете точку и решаете, что с ней сделать:
- Restore code and conversation — вернуть и код, и переписку к этому моменту.
- Restore conversation — вернуть переписку к этому сообщению, оставив код в текущем состоянии.
- Restore code — вернуть файлы, сохранив диалог целиком.
- Summarize from here — сжать переписку от этой точки и дальше в краткое изложение, освободив место в контексте.
- Summarize up to here — сжать переписку до этой точки, оставив последующие сообщения без изменений.
- Never mind — вернуться к списку, ничего не меняя.
Два варианта восстановления кода появляются, только если у выбранного чекпойнта есть отслеженные изменения файлов. Если правок не было, меню предложит только восстановление диалога, суммаризацию и отказ.
Разделение кода и диалога даёт полезные комбинации. Восстановление только кода откатывает неудачную реализацию, но сохраняет весь разбор задачи — агент помнит, что уже выяснено, и не начинает с нуля. Восстановление только диалога, наоборот, оставляет файлы и убирает из контекста ветку обсуждения, которая никуда не привела.
После восстановления диалога или выбора «Summarize from here» исходный запрос выбранного сообщения возвращается в строку ввода — можно отправить его заново или отредактировать.
Что чекпойнты не отслеживают
Это самый важный раздел урока. Границ у механизма несколько, и каждая может застать врасплох.
Изменения через команды оболочки не отслеживаются. Если агент выполнил команду в оболочке, её последствия откатить нельзя:
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
Эти изменения не вернутся через /rewind. Отслеживаются только прямые правки инструментами редактирования файлов. Практический вывод: rm, выполненный агентом, — необратимая операция с точки зрения чекпойнтов, и её последствия придётся возвращать через git или вручную.
Здесь стоит обратить внимание на связку с прошлым уроком: в режиме acceptEdits автоматически одобряются в том числе rm, rmdir, mv и cp внутри рабочей директории. То есть именно те команды, результат которых чекпойнты не покрывают, могут выполняться без вопроса. Это не повод избегать режима, но повод держать проект под git.
Правки подагентов обычно не восстанавливаются. Работу, выполненную отдельным агентом в собственном контексте, откат, как правило, не возвращает; отменять её нужно средствами git. Подагентов мы подробно разберём позже в курсе.
Внешние изменения не отслеживаются. Правки, сделанные вами вручную в редакторе, и изменения из параллельных сессий обычно не попадают в чекпойнты — если только они не затрагивают те же файлы, что и текущая сессия.
Символические и жёсткие ссылки не восстанавливаются. При восстановлении кода такие пути пропускаются, и Claude Code предупреждает: Restored the code, but skipped N files. Содержимое этих файлов остаётся текущим.
Чекпойнты и git: разные задачи
Соблазн понятен: раз есть откат, может, git не так уж и нужен в мелких задачах? Ответ — нужен, и вот почему.
Чекпойнты созданы для быстрого восстановления внутри сессии. Они живут в рамках сессии, удаляются через 30 дней, ограничены сотней снимков и покрывают только правки инструментами редактирования. Это удобный отменяющий жест, а не система хранения истории.
Git решает другую задачу: постоянная история, ветки, совместная работа, возможность вернуться к состоянию месячной давности. Плюс git покрывает ровно те дыры, которые оставляют чекпойнты: изменения через команды оболочки, правки подагентов, ваши ручные изменения — всё это видно в git status и откатывается средствами git.
Рабочая схема выглядит так: чекпойнты — для отката последнего шага прямо в сессии, git — для всего остального. Практическая привычка, которая закрывает почти все неприятные сценарии: делайте коммит перед началом крупной задачи. Тогда даже неудачный rm стоит одну команду git checkout, а не восстановления по памяти.
Полезно помнить и о том, что суммаризация не трогает файлы: она сжимает переписку, а исходные сообщения остаются в записи сессии, так что детали Claude по-прежнему доступны.
Частые ошибки
- Считать, что откат вернёт любое изменение. Чекпойнты покрывают только правки инструментами редактирования файлов. Всё, что сделано командами оболочки, возвращается через git или руками.
- Работать без git, полагаясь на чекпойнты. Чекпойнты ограничены сессией, сотней снимков и сроком хранения. Постоянную историю они не заменяют.
- Забывать про двойной
Escпри непустой строке. Если в строке есть текст, двойнойEscочищает её, а меню не открывается. Очистите ввод или используйте/rewind. - Откатывать код вместе с диалогом по привычке. Часто выгоднее вернуть только файлы: разбор задачи сохранится, и повторять его агенту не придётся.
Наиболее частые вопросы
- Работает ли
/rewindпосле перезапуска? — Да. Чекпойнты сохраняются вместе с диалогом, поэтому откат доступен и в возобновлённой сессии. - Сколько чекпойнтов хранится? — Снимки файлов держатся для ста последних чекпойнтов сессии, а сами сессии вместе с чекпойнтами удаляются через 30 дней.
- Можно ли откатить удаление файла командой
rm? — Через чекпойнты нет: изменения от команд оболочки не отслеживаются. Восстанавливать нужно средствами git. - Чем «Restore code» отличается от «Restore code and conversation»? — Первый вариант возвращает только файлы и сохраняет всю переписку, второй откатывает и файлы, и диалог к выбранной точке.
- Суммаризация удаляет сообщения безвозвратно? — Нет. Она освобождает место в контексте, но исходные сообщения остаются в записи сессии.
Итоги
Поздравляем: вы освоили механизм, который делает эксперименты с агентом безопасными. Теперь вы знаете, что чекпойнт создаётся перед каждым вашим сообщением, умеете открывать меню отката и осознанно выбирать между восстановлением кода, диалога или того и другого. И главное — вы знаете границы: команды оболочки, правки подагентов, внешние изменения и ссылки остаются вне зоны действия отката, а закрывает эти пробелы git.
Это была последняя из «страховочных» тем главы. Дальше — про удобство и скорость работы: в следующем уроке разберём slash-команды, горячие клавиши и голосовой ввод, то есть всё, что превращает работу с агентом из последовательности длинных сообщений в быстрый рабочий поток.