Глубокое погружение
Checkpoints и /rewind в Claude Code: отмена неудачного хода ИИ
Каждое ваше сообщение создаёт снимок файлов, которые редактирует Claude Code. Два нажатия Esc — и можно вернуть код и диалог к тому моменту, когда сессия пошла не туда, без единого коммита.

Иллюстрированный разбор из 13 шагов — примерно 5 минут чтения. Каждый шаг ссылается на точный момент исходного видео.
TL;DR
Каждое отправленное сообщение создаёт checkpoint: снимок файлов, которые редактировал Claude Code, вместе с диалогом на этот момент. Список открывается командой /rewind или двумя нажатиями Esc при пустой строке ввода; выбираете сообщение, к которому возвращаетесь, и одну из трёх областей — Restore code and conversation, Restore conversation или Restore code. На экране подтверждения указано, какой файл будет восстановлен и сколько строк изменится, плюс предупреждение: rewinding does not affect files edited manually or via bash. Это локальная отмена для текущей сессии, а не замена git.
Исходное видео
Страница повторяет видеозапись сессии Claude Code от anxious engineer и шаг за шагом воспроизводит её rewind-приёмы. Каждый скриншот ссылается на точный момент, где он появляется.
Скриншоты — кадры из видео с указанием автора; текст написан нами. Шаги сверены с видео и документацией Claude Code в сентябре 2026 года.
Checkpoints, которые не нужно создавать
Команды сохранения не существует. Каждое ваше сообщение — точка возврата, а рядом перечислены файлы, которые оно изменило.
- 1
Сессия, которую потом захочется отменить
Видео начинается с /clear, затем одно длинное сообщение: собрать React-компонент кнопки, разбить работу на шаги, спрашивать разрешение после каждого и записывать прогресс в button.tsx. Сохранено пока ничего — в строке состояния 0 tokens, — но именно отправка этого сообщения создаёт первый checkpoint.

Одно сообщение — одна точка отката, ещё до единой строки кода.Смотреть с 0:04 - 2
Шаг 1 готов, пункт списка вычёркнут
Claude пишет button.tsx: типы, интерфейс props и обёртку forwardRef, вычёркивает первый todo и останавливается за разрешением. Это чистая точка остановки — именно к ней сессия потом и откатится.

Удобный момент, к которому хочется уметь вернуться.Смотреть с 0:28 - 3
Ваше разрешение — ещё один checkpoint
Сообщение step 1 complete. continue. делает сразу две вещи: одобряет следующий шаг и фиксирует ещё одну точку возврата. Checkpoints привязаны к вашим сообщениям, а не к правкам Claude: чем чаще вы вмешиваетесь, тем больше мест, куда можно приземлиться.

Это сообщение станет целью отката.Смотреть с 0:40
Открываем список rewind
Дважды Esc или /rewind — и вся сессия превращается в список ваших же сообщений.
- 4
Поворот, о котором пожалели
Step 2 Complete сообщает, что variantStyles и sizeStyles собраны на utility-классах Tailwind, а VS Code показывает строки вроде bg-blue-600 прямо в файле. Проект на Tailwind не работает. Работа не потеряна — она просто не в ту сторону, а это как раз случай для checkpoints.

Завершённый шаг, который проекту не подходит.Смотреть с 1:10 - 5
Дважды Esc — и перед вами Rewind
При пустой строке ввода два нажатия Esc открывают панель Rewind — ровно то же самое делает /rewind. Заголовок гласит Restore the code and/or conversation to the point before..., а ниже — по одной строке на каждое сообщение сессии, с файлом и числом строк, например button.tsx +45 -0. /clear тоже в списке, с пометкой No code changes. Enter продолжает, Esc выходит.

Все промпты сессии вместе с их diff.Смотреть с 1:18 - 6
Ставим маркер на последнее корректное сообщение
Перенесите маркер на step 1 complete. continue. — сообщение, отправленное до всей tailwind-возни, — и нажмите Enter. Откат «до сообщения» означает, что всё после него будет снято, поэтому выбирайте строку, где дела ещё шли хорошо, а не ту, которую хотите повторить.

Выбор checkpoint'а до ошибки.Смотреть с 1:26
Что именно возвращаем
Только код, только диалог или всё вместе — экран подтверждения показывает diff до того, как что-то изменится.
- 7
Выбираем область восстановления: код, диалог или оба
Экран подтверждения называет выбранное сообщение и его возраст, сообщает The conversation will be forked. и печатает саму файловую операцию: The code will be restored in button.tsx +1 -47. Дальше идут три варианта — 1. Restore code and conversation, 2. Restore conversation, 3. Restore code. А строкой ниже то, что стоит запомнить: Rewinding does not affect files edited manually or via bash.

Три области отката и предупреждение о недоступном.Смотреть с 1:44 - 8
Сессия снова на шаге 1
После подтверждения расшифровка обрывается там, где всё было до Tailwind: на экране Step 1 Complete, вопрос о разрешении без ответа, а исходный промпт лежит в строке ввода. Файл на диске тоже вернулся к состоянию checkpoint'а — выбрана первая область, возвращающая и код, и диалог.

Диалог и файлы откатились вместе.Смотреть с 1:48 - 9
Правьте вернувшийся промпт, а не печатайте заново
Поскольку откатанное сообщение возвращается как редактируемый ввод, инструкцию можно поправить вместо пересказа. Автор вписывает please use only vanilla css в то же сообщение-разрешение: rewind сделал отмену, а правка задала новое направление.

Тот же промпт, одно новое ограничение.Смотреть с 1:56 - 10
Отправляем и продолжаем сессию
Изменённое сообщение выполняется от точки форка. Claude Code показывает рабочий статус с подсказкой esc to interrupt, а список todo остаётся тем же, что был до отката. В новый ход ничего не переносится из ветки, от которой отказались.

Перезапуск от checkpoint'а.Смотреть с 2:04
После отката
Промпт вернулся в строку ввода, где его можно поправить, а таймлайн открылся заново — уже с новой точкой.
- 11
Шаг 2, переделанный как вы просили
Теперь Step 2 Complete перечисляет baseStyles, variantStyles, sizeStyles и disabledStyles как обычные объекты стилей и прямо пишет: Vanilla CSS via inline styles (CSSProperties). Тот же шаг, другая реализация — и без единой ручной правки в том, что Claude написал впервые.

Тот же шаг, но уже без Tailwind.Смотреть с 2:14 - 12
Смотрите на файл, а не только на сводку
В VS Code button.tsx импортирует CSSProperties из react и раскрывает объект baseStyles с border, borderRadius, cursor и transition. Это и есть доказательство отката на уровне файла: строки классов Tailwind исчезли по-настоящему, а не спрятались в расшифровке.

Откатанный файл открыт в редакторе.Смотреть с 2:26 - 13
Откройте Rewind снова и посмотрите новый таймлайн
Список, открытый заново, показывает сессию такой, какая она стала: исходное сообщение о сборке компонента с button.tsx +45 -0, затем исправленное сообщение про vanilla CSS с button.tsx +71 -1, ниже — (current). Откатанная ветка больше не предлагается как точка возврата, и именно поэтому удачный checkpoint стоит превратить в коммит git.

Таймлайн после отката — на одну точку богаче.Смотреть с 2:38