Агент змінює файли по-справжньому, і часом змінює не те. Не тому що зламався - просто зрозумів завдання інакше, ніж ви його мали на увазі. Добра новина: знімки коду Claude Code робить сам, без вашої участі, і невдала спроба відмотується назад за пару натискань.

Новина гірша: у цих знімків є межа. Усе, що агент друкує у файли, відбувається всередині охоронюваного периметра, і звідти це можна повернути. Усе, що йде повз,- за парканом: знімки цього не бачили й повернути не зможуть. Де проходить паркан, краще знати заздалегідь, а не тієї миті, коли щось зникло.

Далі - як влаштований відкат, де проходить його паркан, скільки він живе і чим закривати те, що лишилося за парканом.

Що таке checkpoint

Checkpoint - це знімок файлів, які агент збирається правити, зроблений до того, як він за них узявся. Не резервна копія проєкту й не запис в історію версій, а робоча точка повернення всередині поточної сесії, тобто всередині вашої розмови з агентом.

Головне, заради чого варто читати цю секцію: знімок з'являється автоматично перед кожним вашим повідомленням. Ви його не створюєте, не налаштовуєте й не можете забути натиснути. Надіслали повідомлення - точка вже є.

  • Ваше повідомлення
  • Знімок коду
  • Правки агента
  • Нове повідомлення
  • Новий знімок

Зверніть увагу на порядок: спочатку знімок, потім правки. Саме тому повернення до точки означає "поверни код таким, яким він був перед цим повідомленням". Ви вибираєте не момент часу, а конкретне своє повідомлення, після якого все треба скасувати.

І ще одне уточнення, щоб далі було простіше. Checkpoint - це про код. Розмову Claude Code теж уміє відмотувати, але це окремий вибір у меню: код і розмова повертаються разом чи окремо, як вирішите.

Як відкрити меню відкату

Входи два, і роблять вони те саме:

  • команда /rewind у рядку введення. У неї є звичні псевдоніми /undo і /checkpoint;
  • клавіші Esc Esc, якщо рядок введення порожній.
Якщо меню не відкрилося

Найімовірніше, у рядку введення був текст. Тоді перше Esc Esc просто зітре набране, а меню не з'явиться. Текст при цьому не зникає: він іде в історію введення, і стрілка вгору його поверне. Натисніть Esc Esc ще раз, коли рядок уже порожній, і меню відкриється.

Відкриється список ваших повідомлень за цю сесію. Не список файлів і не шкала часу - саме повідомлення, по одному на кожне, що ви надіслали. Вибираєте те, після якого все пішло не туди.

Окремий випадок: якщо раніше в цьому ж запущеному агенті ви робили /clear, у свіжих версіях угорі списку з'явиться додатковий рядок. Він повертає до розмови, що йшла до очищення. Очищення, як бачите, нічого не спалює.

Що пропонує меню

Вибрали точку - агент запитує, що саме з нею зробити. Варіантів шість:

Пункт менюЩо робить
Restore code and conversationповернути і код, і розмову до вибраної точки
Restore conversationповернути лише розмову, файли лишити як є
Restore codeповернути лише файли, розмову лишити як є
Summarize from hereзгорнути розмову від цієї точки й далі в короткий переказ
Summarize up to hereзгорнути розмову до цієї точки, а далі лишити як є
Never mindзакрити меню без змін

Перше, що варто знати про цю таблицю: склад меню змінюється. Два пункти про код з'являються тільки тоді, коли після вибраної точки агент справді змінював файли. Не змінював - повертати нема чого, і цих рядків просто не буде. Тож якщо в меню виявилося чотири пункти замість шести, програма у вас та сама.

Два рядки Summarize стоять осібно. Вони працюють не з кодом, а з довжиною розмови: згортають її шматок у короткий переказ. До файлів на диску вони не дотягуються в принципі. Навіщо це буває потрібно - тема окрема й об'ємна, тут досить розуміти, що це не відкат і код у такий спосіб не повернути.

І дрібниця, яка заощаджує нерви. Після повернення розмови текст того самого повідомлення повертається в рядок введення. Не треба згадувати, що ви писали, і набирати заново - виправили формулювання, надіслали ще раз.

Що відкат поверне, а що ні

У своїй зоні відкат надійний. Він повертає дві речі: правки файлів, які агент зробив своїми інструментами редагування, та історію розмови в цій сесії.

А ось що лишається за парканом.

  • Зміни, зроблені командами в терміналі. Агент уміє не тільки правити файли, а й виконувати команди. Якщо файл видалили командою rm, перемістили або перезаписали копіюванням, знімок цього не бачив і повернути не зможе.
  • Зміни повз агента. Файли, яких агент у цій сесії не торкався, відкат не чіпає взагалі: виправили їх самі в редакторі, перезаписала інша програма, поруч працювала друга сесія - усе це лишається як є, повернути чи скасувати це через меню не можна. А от якщо ви руками правили файл, який агент теж редагував, повернення коду поверне його до знімка цілком - разом із вашою правкою.
  • Рідкісний випадок із файлами-посиланнями. Такі файли відкат пропускає й чесно пише про це окремим рядком. Трапиться - розберетеся, спеціально готуватися не треба.
Правка файла і команда в терміналі - різні речі

Ззовні різниця майже непомітна. Агент звітує однаково спокійно і коли відредагував файл, і коли виконав команду, яка файл видалила. Для вас це два схожі повідомлення на екрані, а для відкату - принципово різні події: першу він скасує, другу ні.

Тому запит на запуск команди, яка щось видаляє, переміщує або перезаписує, варто читати уважніше, ніж запит на звичайну правку. Це той випадок, коли страховки за спиною вже немає.

Якщо зовсім коротко: відкат стежить за тим, що агент друкує у файли, а не за всім, що відбувається на комп'ютері.

Скільки живе відкат

Знімки не накопичуються нескінченно. Самі точки в меню перелічені всі, а от знімки файлів зберігаються тільки для ста останніх: для однієї розмови це багато, але не безмежно, і старі поступово зникають.

Зате точки не прив'язані до відкритого вікна термінала. Вони зберігаються разом із сесією, тож можна закрити термінал, повернутися завтра, продовжити ту саму розмову - і меню відкату працюватиме мов нічого й не сталося.

Зовсім надовго це теж не лишається. сесії та знімки до них видаляються автоматично приблизно через місяць, термін за бажання можна налаштувати.

Звідси простий висновок: відкат добрий на горизонті одного завдання - хвилини, години, одна розмова з агентом. Сховищем історії проєкту його не задумували, і це не вада - просто інша робота. Хто закриває довші терміни, розбираємо далі.

Чотири страховки, і в кожної своя робота

Скасування, знімок, копія теки й історія версій - це не чотири назви одного й того самого. Вони закривають різні терміни й різні типи втрат.

СтраховкаХто створюєЩо зберігаєСкільки живеДе безсила
Скасування в редакторіви, натисканнямваші останні правки у відкритому файлінедовго, залежить від редактораправки одразу в кількох файлах, зазвичай і те, що записано на диск повз редактор
CheckpointClaude Code, самкод перед кожним вашим повідомленнямразом із сесією, сто точоккоманди в терміналі, зміни повз агента
Копія текиви, вручнупроєкт цілком на момент копіюванняпоки не видалитене показує, що змінювалося, і засмічує диск
Історія версій, gitви, свідомою дієюстани проєкту один за однимразом із проєктомте, що ви не встигли в неї записати

Страховку вибирають спочатку за тим, які зміни вона покриває, і лише потім за тривалістю. Якщо Claude змінює файли проєкту своїми інструментами редагування і не зачіпає нічого поза сесією, експеримент на п'ять хвилин добре закриває checkpoint. Якщо робота передбачає команди в терміналі або зовнішні зміни, одного checkpoint недостатньо незалежно від тривалості. І лише серед страховок із потрібним покриттям дивіться на строк: кілька днів роботи або важлива віха просять механізм, що не залежить від розмови з агентом.

Про копію теки варто сказати прямо. Як разовий захід перед чимось страшним вона робоча: скопіювали, полізли ламати, не вийшло - повернули. Як система вона не живе. За тиждень у вас кілька майже однакових тек, і яка з них свіжа, не пам'ятає вже ніхто.

Останній рядок - єдиний, що вміє одночасно і зберігати стани довго, і показувати, що саме змінювалося між ними. Це git, і це окрема велика тема: свій інструмент, свій набір команд, тут ми її не відкриваємо. Досить розуміти місце в таблиці: найдовший горизонт і єдиний захист від того, чого відкат не покриває.

Як це змінює манеру роботи

Річ не в самих кнопках. Ось що з відкату випливає на практиці:

  • знімок робиться сам, але майже нічого не коштує лише експеримент із файлами проєкту через інструменти редагування Claude. Якщо знадобляться команди в терміналі або зміни поза сесією, спочатку виберіть іншу страховку;
  • агент не відкочує за вас. Він може сказати, що зайшов не туди, але меню відкриваєте й вибираєте ви;
  • прохання запустити команду в терміналі - це інший клас дії, ніж правка файла. Перше відкат не покриє, друге покриє. Різницю видно тільки в тексті запиту, тому його й варто читати;
  • що більший крок, то менше від відкату користі. Повернути можна, а от що більше агент устиг наробити, то складніше зрозуміти по одному меню, що саме повернулося. Дрібні кроки виграють і тут;
  • відкат та історія версій не конкурують. Перший закриває хвилини й години всередині однієї розмови, друга - дні, тижні та віхи проєкту.
Хвилина перед великою правкою

Перед справді ризикованим заходом корисно витратити хвилину й зафіксувати стан тим, що живе довше за сесію. Просто зараз у вашому розпорядженні копія теки - як разовий захід перед ризиком вона працює чесно.

Але справжній інструмент для цього - git. Він зберігає стани скільки завгодно довго, показує, що саме змінювалося між ними, і не засмічує диск майже однаковими теками. Як ним користуватися, розберемо окремо: тема велика й заслуговує на свою розмову. А звичка зупинитися на хвилину перед ризиком знадобиться вам і з ним, і поки без нього.

А меню відкату хай буде для швидких експериментів: у ролі останньої надії воно працює помітно гірше, ніж у ролі щоденного інструмента.


Склад меню відкату й терміни зберігання залежать від версії Claude Code та налаштувань, тому у вас вони можуть відрізнятися від описаних тут. Що пропонує ваша версія, завжди покаже саме меню.