Глубокое погружение

Checkpoints и /rewind в Claude Code: отмена неудачного хода ИИ

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

Claude Code rewind confirmation dialog listing Restore code and conversation, Restore conversation and Restore code, with a note that the conversation will be forked and that bash edits are not restored
Экран подтверждения rewind в Claude Code: три области отката и предупреждение о файлах, которые Claude не трогал.

Иллюстрированный разбор из 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. 1

    Сессия, которую потом захочется отменить

    Видео начинается с /clear, затем одно длинное сообщение: собрать React-компонент кнопки, разбить работу на шаги, спрашивать разрешение после каждого и записывать прогресс в button.tsx. Сохранено пока ничего — в строке состояния 0 tokens, — но именно отправка этого сообщения создаёт первый checkpoint.

    Claude Code terminal at the start of a session where a /clear command and the first multi-step React button prompt sit above an empty 0 token context meter, the moment the first checkpoint is created
    Одно сообщение — одна точка отката, ещё до единой строки кода.Смотреть с 0:04
  2. 2

    Шаг 1 готов, пункт списка вычёркнут

    Claude пишет button.tsx: типы, интерфейс props и обёртку forwardRef, вычёркивает первый todo и останавливается за разрешением. Это чистая точка остановки — именно к ней сессия потом и откатится.

    Claude Code reporting Step 1 Complete with a struck-through todo item while VS Code shows the freshly created button.tsx component that a later rewind can restore
    Удобный момент, к которому хочется уметь вернуться.Смотреть с 0:28
  3. 3

    Ваше разрешение — ещё один checkpoint

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

    Typing the step 1 complete approval message into the Claude Code input box, the user prompt that becomes the next rewindable checkpoint for button.tsx
    Это сообщение станет целью отката.Смотреть с 0:40

Открываем список rewind

Дважды Esc или /rewind — и вся сессия превращается в список ваших же сообщений.

  1. 4

    Поворот, о котором пожалели

    Step 2 Complete сообщает, что variantStyles и sizeStyles собраны на utility-классах Tailwind, а VS Code показывает строки вроде bg-blue-600 прямо в файле. Проект на Tailwind не работает. Работа не потеряна — она просто не в ту сторону, а это как раз случай для checkpoints.

    A Claude Code transcript where Step 2 Complete lists variantStyles and sizeStyles maps built from Tailwind classes, with VS Code highlighting the bg-blue-600 utility strings the author now wants gone
    Завершённый шаг, который проекту не подходит.Смотреть с 1:10
  2. 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 выходит.

    The Claude Code Rewind menu opened by pressing Escape twice, listing every prompt in the session with its per-file diff counts such as button.tsx +45 -0
    Все промпты сессии вместе с их diff.Смотреть с 1:18
  3. 6

    Ставим маркер на последнее корректное сообщение

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

    Moving the selection marker onto the earlier step 1 complete checkpoint inside the Claude Code rewind list so only the Tailwind edits made after it get rolled back
    Выбор checkpoint'а до ошибки.Смотреть с 1:26

Что именно возвращаем

Только код, только диалог или всё вместе — экран подтверждения показывает diff до того, как что-то изменится.

  1. 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.

    Claude Code rewind confirmation screen offering Restore code and conversation, Restore conversation, or Restore code, plus the warning that rewinding does not affect files edited manually or via bash
    Три области отката и предупреждение о недоступном.Смотреть с 1:44
  2. 8

    Сессия снова на шаге 1

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

    Claude Code immediately after a checkpoint restore, with the transcript back at Step 1 Complete and the original prompt sitting in the input box ready to reuse
    Диалог и файлы откатились вместе.Смотреть с 1:48
  3. 9

    Правьте вернувшийся промпт, а не печатайте заново

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

    Editing the restored Claude Code prompt in the input box to add a vanilla CSS constraint before resending it from the rewound point in the conversation
    Тот же промпт, одно новое ограничение.Смотреть с 1:56
  4. 10

    Отправляем и продолжаем сессию

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

    Claude Code running the amended step 1 complete please use only vanilla css prompt, showing the esc to interrupt hint and the untouched todo checklist after the rewind
    Перезапуск от checkpoint'а.Смотреть с 2:04

После отката

Промпт вернулся в строку ввода, где его можно поправить, а таймлайн открылся заново — уже с новой точкой.

  1. 11

    Шаг 2, переделанный как вы просили

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

    A rewound Claude Code session where the regenerated Step 2 summary lists Vanilla CSS via inline styles (CSSProperties), confirming the checkpoint restore and the new prompt both took effect
    Тот же шаг, но уже без Tailwind.Смотреть с 2:14
  2. 12

    Смотрите на файл, а не только на сводку

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

    VS Code editor pane below a Claude Code session showing button.tsx with the CSSProperties import and a baseStyles object, the file state produced after restoring to an earlier checkpoint
    Откатанный файл открыт в редакторе.Смотреть с 2:26
  3. 13

    Откройте Rewind снова и посмотрите новый таймлайн

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

    The Claude Code Rewind checkpoint list reopened after a restore, where the rewound prompt now reads step 1 complete please use only vanilla css if needed with a button.tsx +71 -1 diff count
    Таймлайн после отката — на одну точку богаче.Смотреть с 2:38

Частые вопросы