Przejdź do głównej zawartości

Naprawianie błędów w Claude Code: cofanie, reset i wychodzenie z impasu

Claude Code cofa nieudaną turę za pomocą checkpointów: /rewind albo dwukrotne Esc przy pustym polu promptu przywraca kod, rozmowę lub oba do dowolnego wcześniejszego promptu w sesji. Checkpointy śledzą tylko narzędzia edycji plików, więc polecenia powłoki, edycje subagentów i skutki zewnętrzne wymagają gita i reguł uprawnień. Naprawa kończy się, gdy testy i kontrola typów znów przechodzą.

Ta strona jest dla programistów w pierwszych tygodniach pracy z Claude Code. Sytuacja: Claude zrefaktorował moduł uwierzytelniania w sześciu plikach, a kontrola typów (tsc) zgłasza teraz 23 błędy. Poprawka Claude’a dodała trzy nowe awarie, a kolejna zepsuła zestaw testów, który wcześniej był zielony. Od dwóch iteracji kręcisz się w pętli „poprawka poprawki”, a kod jest w gorszym stanie niż na początku.

  • Dokładne opcje /rewind: co każda przywraca i czego checkpointy nie przywracają nigdy.
  • Pięciokrokową procedurę na pętlę poprawek z promptem, który zatrzymuje edycje i szuka przyczyny źródłowej.
  • Prompt na kaskadowe awarie testów: naprawia jedną przyczynę naraz i dowodzi każdej poprawki przebiegiem testów.
  • Kiedy użyć /compact, /clear, /branch, a kiedy nowej sesji, oraz prompt, który odbudowuje kontekst po resecie.
  • Zabezpieczenia, dzięki którym naprawa rzadko jest potrzebna: bramki weryfikacji, checkpointy w gicie i reguły uprawnień dla nieodwracalnych poleceń.

Wszystko poniżej sprawdziliśmy 2026-09-26 na Claude Code 2.1.283 (claude --help) i w oficjalnej dokumentacji checkpointów, sesji i poleceń.

Claude Code zapisuje stan kodu przed każdym promptem, który rozpoczyna turę. Przechowuje migawki plików dla 100 ostatnich checkpointów w sesji i zapisuje je razem z rozmową, więc /rewind działa także po wznowieniu przez claude --continue lub claude --resume.

Menu cofania otworzysz poleceniem /rewind (aliasy /undo i /checkpoint) albo dwukrotnym Esc, gdy pole promptu jest puste. Jeśli w polu jest tekst, podwójne Esc go czyści; strzałka w górę (Up) przywróci potem szkic.

Menu pokazuje każdy prompt wysłany w sesji. Wybierz jeden, a potem akcję:

AkcjaKod na dyskuRozmowaKiedy jej użyć
Restore code and conversationCofniętyCofniętaCałe podejście było złe i chcesz ponowić prompt od tego miejsca
Restore conversationBez zmianCofniętaKod jest w porządku, ale rozmowa weszła w ślepą uliczkę
Restore codeCofniętyBez zmianChcesz cofnąć edycje, a Claude ma pamiętać, co zawiodło
Summarize from hereBez zmianPóźniejsze wiadomości streszczoneDługa dygresja przy debugowaniu zapycha kontekst
Summarize up to hereBez zmianWcześniejsze wiadomości streszczoneWczesne rozpoznanie to szum, liczy się ostatnia praca
Never mindBez zmianBez zmianMenu otworzyło się przypadkiem

Obie opcje przywracania kodu pojawiają się tylko wtedy, gdy checkpoint ma śledzone zmiany w plikach. Po przywróceniu rozmowy lub wybraniu Summarize from here twój pierwotny prompt wraca do pola wprowadzania, więc możesz go poprawić i wysłać ponownie. Aby pokierować streszczeniem, zaznacz strzałkami opcję Summarize i w wierszu add context (optional) wpisz, co ma zostać zachowane, a potem naciśnij Enter.

Restore code to opcja niedoceniana. Claude zachowuje pamięć o nieudanej próbie, więc w kolejnym prompcie wystarczy napisać „to podejście zepsuło testy sesji; spróbuj drugiego” bez ponownego tłumaczenia zadania.

Checkpointy śledzą tylko edycje wykonane narzędziami Claude’a do edycji plików. Cofanie nie odwróci:

  • Poleceń powłoki. rm, mv, cp, generatorów kodu, formaterów i operacji git uruchomionych przez Bash.
  • Większości edycji subagentów. Subagent w tle, w tym /code-review --fix uruchomiony w tle, edytuje poza twoimi checkpointami. Te zmiany cofniesz gitem.
  • Skutków zewnętrznych. Usuniętej tabeli, wypchniętej gałęzi, wysłanego maila czy wdrożonego Workera.
  • Plików podpiętych dowiązaniami symbolicznymi lub twardymi. Przywracanie je pomija i zgłasza Restored the code, but skipped N files.
  • Twoich własnych edycji poza Claude Code ani edycji z innej, równoległej sesji, chyba że dotyczą tych samych plików co bieżąca sesja.

Migawki usuwa okresowe czyszczenie, domyślnie po około 30 dniach od ostatniego zapisu w sesji. Cofnięcie do wygasłego checkpointu może skończyć się komunikatem No files were restored. Aby przechowywać je dłużej, ustaw cleanupPeriodDays w ustawieniach. Checkpointy to cofanie na poziomie sesji, a nie kontrola wersji: commituj wszystko, co chcesz zachować.

Pętla poprawek to częsta awaria: każda naprawa wprowadza nowy błąd, a Claude oscyluje między dwiema stronami tego samego konfliktu. Kolejne „napraw to” tylko ją wydłużają. Postępuj w tej kolejności.

  1. Przerwij. Naciśnij raz Esc, aby zatrzymać bieżącą turę. Claude zachowuje dotychczasową rozmowę.

  2. Oceń szkody bez czytania każdej linii. Uruchom /diff, aby zobaczyć niezacommitowane zmiany i diffy poszczególnych tur, czyli pliki, których dotknęła pętla, a sprawdzenia uruchom sam, na przykład npx tsc --noEmit i npm test, w drugim terminalu lub z prefiksem !.

  3. Zdiagnozuj bez edycji. Wklej poniższy prompt. Wymusza szukanie przyczyny źródłowej zamiast łatania objawów.

  4. Zdecyduj: naprawa czy cofnięcie. Jeśli diagnoza wskazuje jedną przyczynę z małą poprawką, zatwierdź ją. Jeśli przyczyn jest kilka albo diff dotyka plików spoza zadania, cofnij się opcją Restore code do promptu sprzed zmiany.

  5. Spróbuj ponownie w węższym zakresie. Wyślij prompt z mniejszym zakresem i wskaż, która strona konfliktu jest wiążąca.

Ostatnia linia ma znaczenie. Wprost pozwala Claude’owi zarekomendować wyrzucenie pracy, czego agent poproszony o naprawę rzadko proponuje sam z siebie.

Przy ponownej próbie nazwij wprost stronę wiążącą. Bez tego Claude ma skłonność do naprzemiennego zmieniania interfejsu i jego wywołań:

Zakaz edycji testów jest celowy. Agent, który może zmieniać testy, potrafi zazielenić zestaw, osłabiając asercje, a wtedy zielony wynik niczego nie dowodzi. Jak zamienić tę zasadę z prośby w mechanizm, opisuje ochrona wyroczni.

Po refaktorze czerwone testy często mają kilka wspólnych przyczyn. Naprawianie ich test po teście daje niespójne łatki w wielu plikach. Naprawiaj przyczyny po kolei: najpierw błędy typów, potem plik testów najbliższy zmianie, na końcu cały zestaw.

Krok z przewidywaniem to właśnie weryfikacja. Gdy Claude zapowiada, że poprawka naprawi 12 testów, a zestaw pokazuje o 12 awarii mniej, masz dowód trafnej diagnozy bez czytania łatki. Rozbieżność oznacza, że model przyczyny jest błędny, i to jest moment, żeby się zatrzymać. Pełną pętlę od hipotezy do testu regresji opisuje debugowanie z Claude Code.

Długie sesje gromadzą odczyty plików, wyniki poleceń i porzucone próby. Gdy Claude zaczyna zapominać konwencje projektu albo powtarza poprawiony już błąd, przydatny kontekst jest zakopany. Wybierz najlżejsze narzędzie, które rozwiązuje problem:

ObjawNarzędzieCo się dzieje
Jedna długa dygresja zapycha kontekst/rewind → Summarize from hereStreszcza tylko ten fragment; wcześniejsze instrukcje zostają nietknięte
Sesja jest długa, ale wciąż na temat/compact focus on the auth refactor and the two failing testsStreszcza rozmowę; tekst po poleceniu mówi Claude’owi, co zachować
Claude wraca do odrzuconego podejścia/clearZaczyna pustą rozmowę w tym samym procesie
Chcesz spróbować alternatywy i zachować obecną ścieżkę/branch try-token-rotation lub claude --continue --fork-sessionKopiuje rozmowę do nowej sesji; oryginał zostaje bez zmian
Zadanie skończone, następne niezwiązaneWyjdź i uruchom claudeNowa sesja bez żadnego bagażu

Dwa szczegóły sprawiają, że /clear jest bezpieczniejsze, niż się wydaje. /clear auth-attempt-1 nadaje starej rozmowie etykietę w oknie wyboru sesji /resume. A w tym samym procesie menu cofania pokazuje na górze wpis /resume <session-id> (previous session), więc pomyłkowe /clear da się odwrócić. Zanim zdecydujesz, uruchom /context, aby zobaczyć zapełnienie okna.

Po /clear albo w nowej sesji odbudowuj kontekst z plików, a nie z pamięci:

To wskazanie odrzuconego podejścia chroni nową sesję przed wejściem w tę samą ślepą uliczkę. Jeśli jakiś fakt ma przetrwać każdy reset, na przykład „eksportowane typy auth są zamrożone”, zapisz go w CLAUDE.md; zobacz system pamięci.

PolecenieGdzieCo robi
claude --continue (-c)TerminalOtwiera ostatnią rozmowę w bieżącym katalogu razem z jej checkpointami
claude --resume (-r)TerminalOtwiera wybór sesji
claude --resume auth-refactorTerminalWznawia nazwaną sesję bezpośrednio
/resumeW sesjiPrzełącza na inną rozmowę
claude -n auth-refactor lub /rename auth-refactorTerminal lub sesjaNadaje sesji nazwę, aby łatwo ją potem znaleźć

W oknie wyboru sesji Ctrl+B zawęża listę do sesji z bieżącej gałęzi gita, Ctrl+W rozszerza ją na wszystkie worktree repozytorium, Ctrl+A na wszystkie projekty, a Space pokazuje podgląd sesji. Sesje uruchomione przez claude -p nie pojawiają się w oknie wyboru ani w --continue; wznowisz je przez claude --resume <session-id>.

Przy wznawianiu podaj ponownie flagi startowe, takie jak --mcp-config, --settings, --plugin-dir, --fallback-model czy --add-dir. Claude Code ich nie przywraca, a sesja, która straciła swój serwer MCP, zawodzi w mylący sposób.

Naprawa jest tania, gdy awarię wyłapiesz jedną edycję po jej wystąpieniu. Te nawyki to zapewniają.

Weryfikacja ma działać automatycznie, a nie na prośbę. Prompt „uruchamiaj testy po każdej zmianie” działa do pierwszej kompakcji kontekstu. Hook PostToolUse, który uruchamia sprawdzanie typów (tsc) po każdej edycji, albo hook Stop, który uruchamia testy, zanim Claude zgłosi zakończenie pracy, działa dalej. Zobacz automatyzację hookami. O poprawności zmiany mówi ci bramka, a nie twoja lektura kodu: zatwierdzasz zieloną kontrolę typów i testy oraz /diff, który nie wychodzi poza pliki zadania, a nie lekturę linia po linii.

Zrób checkpoint w gicie przed ryzykowną pracą. Checkpointy obejmują edycje Claude’a; git obejmuje resztę, w tym twoje zmiany i efekty poleceń powłoki. Przed szerokim refaktorem zrób commit sam albo poproś o to Claude’a. Jeśli próba się nie uda, git restore --staged --worktree . odrzuca zmiany w śledzonych plikach, a git clean -n wypisuje nowe, nieśledzone pliki utworzone przez Claude’a (git clean -f je usuwa). Oba polecenia kasują pracę, więc najpierw uruchom git status. Zobacz kontrolę wersji z Claude Code.

Planuj przed zmianą w wielu plikach. Przejdź do trybu planowania klawiszem Shift+Tab albo poleceniem /plan i zatwierdź plan plik po pliku przed jakąkolwiek edycją. Odrzucenie złego planu kosztuje jedną wiadomość; wycofanie złej implementacji kosztuje cofnięcie i ponowną próbę.

Zawężaj zakres. „Zmień tylko logikę wygasania sesji w auth.ts” dotyka jednego pliku i psuje się w jednym miejscu. „Zrefaktoruj uwierzytelnianie” dotyka wszystkiego i psuje się wszędzie.

Menu cofania nie pokazuje potrzebnego checkpointu. Najpewniej jesteś w innej sesji. Menu pokazuje tylko prompty bieżącej sesji. Wznów oryginał przez claude --resume i tam otwórz /rewind. Wiadomość dodana do kolejki, gdy Claude pracował, dołącza do tej tury i nie dostaje własnego checkpointu; cofnij się do promptu, który zaczął turę.

Cofanie zgłasza No files were restored. Kopie zapasowe dla tego checkpointu zniknęły (okresowe czyszczenie usuwa je po około 30 dniach od ostatniego zapisu w sesji) albo Claude Code nie mógł zapisać lub usunąć plików. Cofnij zmiany gitem i zwiększ cleanupPeriodDays, jeśli często wracasz do starych sesji.

Po Restore code pliki wciąż są złe. Claude zmienił je przez Bash, formater, generator kodu lub subagenta w tle, a checkpointy nie śledzą takich edycji. Znajdź je przez git status i przywróć przez git restore. Plik podpięty dowiązaniem symbolicznym lub twardym zostaje pominięty z komunikatem Restored the code, but skipped N files; poproś Claude’a o odwrócenie tej edycji albo popraw plik sam.

Claude powtarza cofnięte podejście. Restore code and conversation usuwa także pamięć o tym, dlaczego podejście zawiodło. Użyj Restore code albo wskaż odrzucone podejście w kolejnym prompcie.

/compact zgubił potrzebny szczegół. Uruchom /compact z tekstem, który nazywa pliki, błędy i decyzje do zachowania. To, co musi przetrwać każdą kompakcję, należy do CLAUDE.md.

Testy przechodzą, ale podejrzewasz subtelny błąd. Zielony zestaw dowodzi tylko tego, co sprawdzają asercje. Uruchom /code-review na zmianie, a potem poproś Claude’a, żeby przed poprawką napisał test, który nie przechodzi dla podejrzanego przypadku brzegowego. Zobacz testowanie z Claude Code.

Sesja jest zbyt zdegradowana, by nią sterować. Nie walcz z nią. Wyjdź, uruchom claude i użyj promptu odbudowującego kontekst. Świeżą sesją z trzema plikami i dwuzdaniowym podsumowaniem łatwiej sterować niż długą sesją pełną porzuconych prób.

Ta strona zamyka szybki start Claude Code. Jeśli sesja utknęła przez instalację, uwierzytelnianie lub sieć, a nie przez złe edycje, zajrzyj do rozwiązywania problemów z Claude Code. W innych narzędziach naprawa działa inaczej: zobacz naprawianie błędów w Codeksie i obsługę błędów w Cursorze.