Checkpoints & Rewind
- Verstehen, was ein Checkpoint erfasst — und was er stillschweigend nicht erfasst
- Das Rewind-Menü auf zwei Wegen öffnen und jedes Mal die richtige Wiederherstellungsaktion wählen
- „Restore“ (Zustand rückgängig machen) von „Summarize“ (Kontext komprimieren) unterscheiden
- Genau wissen, warum Checkpoints Git ergänzen, aber nie ersetzen
Die Grundidee
Wenn du Claude auf eine ehrgeizige, weitreichende Änderung loslässt, ist die beängstigendste Frage: „Was, wenn es drei Änderungen tief schiefgeht?“ Checkpointing ist die Antwort: Claude Code erstellt vor jedem Turn, den du startest, automatisch einen Snapshot deines Codes, sodass du zu einem früheren Zustand zurückspulen kannst, statt ein halbfertiges Refactoring von Hand zu entwirren.
Stell es dir als lokales Rückgängigmachen für die ganze Sitzung vor — ein Sicherheitsnetz, mit dem du ohne Angst sagen kannst: „Ja, probier den kühnen Ansatz.“
Wie Checkpoints entstehen
Du erstellst keine Checkpoints — sie entstehen automatisch.
- Jeder Prompt, der einen Turn startet, erfasst den Zustand deines Codes, bevor Claudes Dateibearbeitungs-Tools laufen. Kein Befehl, keine Konfiguration, kein Aufwand.
- Claude Code behält Datei-Snapshots für die 100 neuesten Checkpoints einer Sitzung. Ältere werden verworfen, sodass sich eine sehr lange Sitzung nicht bis zu ihrem Anfang zurückspulen lässt.
- Checkpoints werden zusammen mit der Konversation gespeichert, sodass du /rewind auch nach dem Fortsetzen einer Sitzung ausführen kannst, nicht nur in der laufenden.
- Die Datei-Snapshots einer Sitzung werden im Aufbewahrungslauf gelöscht, standardmäßig etwa 30 Tage nachdem die Sitzung zuletzt einen gespeichert hat. Das Zurückspulen zu einem Checkpoint, dessen Snapshots verschwunden sind, schlägt mit 'No files were restored' fehl — erhöhe cleanupPeriodDays, um sie länger zu behalten.
Das Rewind-Menü öffnen
Es gibt zwei Wege hinein:
- Gib den Slash-Befehl am Prompt ein. Funktioniert immer. /checkpoint und /undo sind Aliasse für denselben Befehl — nimm also den Namen, der dir gerade einfällt.
- Doppel-Esc öffnet das Rewind-Menü, wenn das Prompt-Feld leer ist. Steht Text darin, löscht Doppel-Esc stattdessen diesen Text (der gelöschte Text landet im Eingabeverlauf, mit der Pfeiltaste nach oben holst du ihn zurück).
Das Rewind-Menü öffnen
/rewind
- Die Alias-Namen sind freundlicher, als sie wörtlich gemeint sind: /checkpoint erstellt keinen Snapshot auf Abruf (Snapshots entstehen automatisch), und /undo macht nicht von selbst die letzte Änderung rückgängig. Alle drei Namen öffnen dasselbe Menü, in dem du weiterhin den Punkt und die Aktion wählst.
Das Menü listet jeden Prompt, den du in dieser Sitzung gesendet hast. Wähle den Punkt, auf den du reagieren willst, und dann eine Aktion.
Restore vs. Summarize: die entscheidende Unterscheidung
Hier entsteht die Verwirrung. Das Menü bietet zwei Arten von Aktionen:
- Restore-Aktionen ändern den Zustand auf der Festplatte und/oder in der Konversation — sie machen rückgängig.
- Summarize-Aktionen berühren deine Dateien nie — sie komprimieren die Konversation, um Platz im Kontextfenster zu schaffen.
- Restore = rückgängig machen (setzt Code, Konversation oder beides zurück). Summarize = Kontext komprimieren (Dateien auf der Festplatte bleiben unberührt).
- Greife zu Restore, wenn eine Änderung etwas kaputtgemacht hat. Greife zu Summarize, wenn die Sitzung aufgebläht ist, der Code aber in Ordnung.
Die Restore-Aktionen
- Setzt sowohl deine Dateien als auch den Chatverlauf auf den gewählten Punkt zurück — ein sauberes „Zeit zurückdrehen“ zu diesem Moment.
- Spult den Chat zu dieser Nachricht zurück, behält aber deinen aktuellen Code. Nützlich, um eine Frage neu zu stellen, ohne Änderungen zu verlieren, die du behalten willst.
- Setzt Dateiänderungen zurück, behält aber die Konversation. Die Änderungen rückgängig machen, die Diskussion darüber behalten.
Die beiden Code-Restore-Optionen erscheinen nur, wenn der gewählte Checkpoint tatsächlich verfolgte Dateiänderungen zum Zurücksetzen hat. Wurden nach diesem Punkt keine Dateiänderungen erfasst, bietet das Menü nur Restore conversation, die zwei Summarize-Optionen und Never mind (das zur Nachrichtenliste zurückkehrt, ohne etwas zu ändern).
Nach dem Wiederherstellen der Konversation (oder der Wahl von „Summarize from here“) wird der ursprüngliche Prompt der gewählten Nachricht ins Eingabefeld zurückgelegt, damit du ihn erneut senden oder bearbeiten kannst.
Die Summarize-Aktionen
Beide komprimieren einen Teil der Konversation zu einer KI-generierten Zusammenfassung — wie ein gezieltes /compact, bei dem du wählst, welche Seite der gewählten Nachricht zusammengepresst wird.
- Nachrichten VOR der gewählten Nachricht bleiben unverändert. Die gewählte Nachricht und alles danach werden zu einer Zusammenfassung. Nutze es, um eine Nebendiskussion zu verwerfen und frühen Kontext in vollem Detail zu behalten.
- Nachrichten VOR der gewählten Nachricht werden zu einer Zusammenfassung; die gewählte Nachricht und alles danach bleibt unverändert. Du bleibst am Ende der Konversation. Nutze es, um frühes Setup-Geplauder zu komprimieren und die jüngste Arbeit wörtlich zu behalten.
Die ursprünglichen Nachrichten bleiben in beiden Fällen im Sitzungsprotokoll, sodass Claude weiterhin auf die Details zugreifen kann, und an der Stelle der komprimierten Nachrichten erscheint eine Markierung Summarized conversation. Um zu steuern, worauf sich die Zusammenfassung konzentriert, markiere mit den Pfeiltasten eine Summarize-Option und tippe Anweisungen dort, wo die Zeile add context (optional) zeigt, und drücke dann Enter — wählst du die Option mit ihrer Zifferntaste, wird sofort ohne Anweisungen zusammengefasst.
Den gesamten Ablauf findest du unter Kontext-Management — die Summarize-Aktionen von /rewind sind ein Skalpell, wo /compact ein breiter Pinsel ist.
- Summarize hält dich in derselben Sitzung. Um abzuzweigen und einen anderen Ansatz auszuprobieren, während die ursprüngliche Sitzung unangetastet bleibt, nutze stattdessen /branch oder claude --continue --fork-session.
Zurückspulen über ein /clear hinaus
Wenn du früher im selben Claude-Code-Prozess /clear ausgeführt hast, zeigt das Rewind-Menü oben einen zusätzlichen Eintrag: /resume <session-id> (previous session). Wähle ihn aus, um zu der Konversation zurückzuspringen, die vor /clear aktiv war.
Wo Checkpoints enden — die Grenzen, die wehtun
Checkpoints wirken magisch, bis sie es nicht mehr tun. Diese Lücken zählen:
- Das Tracking erfolgt pro Datei, und eine Datei gelangt nur dann hinein, wenn Claude sie mit seinen Datei-Bearbeitungswerkzeugen ändert. Ist das einmal geschehen, macht /rewind auch rückgängig, was Bash-Befehle danach mit genau dieser Datei anstellen — ein Formatierer oder Generator, der eine bereits bearbeitete Datei neu schreibt, ist zurückspulbar. Eine Datei, die nur Bash je angefasst hat, wird nicht getrackt und bleibt, wie sie ist; eine mit rm gelöschte Datei, die Claude nie bearbeitet hat, braucht also Git. Das Menü spiegelt das wider: Unter jedem Prompt zählt es Änderungen an Dateien, die Claude bereits bearbeitet hatte, egal was sie verursacht hat.
- Ein Subagent bearbeitet mit denselben Datei-Werkzeugen, aber deine Sitzung erfasst diese Änderungen normalerweise nicht. Die Ausnahme ist ein im Vordergrund geforkter Skill (context: fork mit background: false), der während deines eigenen Turns bearbeitet und sich normal zurückspulen lässt. Bei jedem anderen Subagent — einschließlich eines im Hintergrund geforkten Skills, der Standard ist, und eines im Hintergrund laufenden /code-review --fix — stellt das Zurückspulen nur die Dateien wieder her, die Claude in deiner Konversation bereits bearbeitet hatte; die Änderungen des Subagents an anderen Dateien bleiben bestehen, mach sie also mit Git rückgängig. Siehe /docs/claude-code/subagents.
- Manuelle Änderungen außerhalb von Claude Code und Änderungen aus anderen gleichzeitigen Sitzungen werden normalerweise nicht erfasst — es sei denn, sie betreffen zufällig dieselben Dateien, die die aktuelle Sitzung bearbeitet hat.
- Eine Nachricht, die du einreihst, während Claude arbeitet, und die es innerhalb des laufenden Turns erreicht, wird Teil dieses Turns, statt einen neuen zu beginnen — sie bekommt also keinen eigenen Checkpoint, und das Rewind-Menü markiert sie mit 'No code restore'. Um zurückzunehmen, was danach kam, spule zu dem Prompt zurück, der den Turn gestartet hat — das spult den ganzen Turn zurück, einschließlich der Arbeit, die geleistet wurde, bevor deine Nachricht ankam. Wählst du die markierte Nachricht selbst aus, wird weiterhin Restore conversation angeboten; deine Dateien bleiben dabei unverändert.
- Claude Code speichert die zurückgespulte Konversation zusammen mit dem nächsten Prompt, den du sendest — beendest du die Sitzung, bevor du einen gesendet hast, kommen die zurückgespulten Nachrichten beim Fortsetzen wieder zurück. Sende Claude vor dem Beenden einen Prompt, damit die Wiederherstellung hält; um die zurückgekehrten Nachrichten später erneut zu entfernen, führe /rewind aus, wähle denselben Prompt und dann Restore conversation. Dateien, die du wiederhergestellt hast, bleiben in jedem Fall so, wie das Rewind sie hinterlassen hat — betroffen ist also nur die Konversation.
- Restore überspringt jeden verfolgten Pfad, der ein Symlink oder Hardlink ist, und warnt mit 'Restored the code, but skipped N files'; diese Dateien behalten ihren aktuellen Inhalt. Symlinks von Dotfile-Managern und pnpm-Hardlinks sind beide betroffen. Führe vor dem Wiederherstellen /debug aus, damit die übersprungenen Pfade im Debug-Log genannt werden.
- Checkpoints sind schnelle, lokale Wiederherstellung. Sie sind keine Commits, keine Branches und nicht mit deinem Team teilbar.
Checkpoints vs. Git: nutze beides
Sie lösen unterschiedliche Probleme, also kombiniere sie.
Checkpoints (/rewind) | Git | |
|---|---|---|
| Umfang | Eine Sitzung | Gesamte Projekthistorie |
| Granularität | Pro Turn-startendem Prompt, automatisch | Pro Commit, bewusst |
| Verfolgt Bash-Änderungen? | Nur bei Dateien, die Claude bereits bearbeitet hat | Ja (sobald gestaged/committet) |
| Lebensdauer | Letzte 100 Checkpoints, ~30 Tage nach der Sitzung aufgeräumt | Dauerhaft |
| Teilbar / kollaborativ | Nein | Ja |
| Denkmodell | „Lokales Rückgängig“ | „Dauerhafte Historie“ |
- Committe funktionierende Zustände mit Git vor einem riskanten, weitreichenden Lauf — das ist dein dauerhafter Boden.
- Nutze /rewind für schnelle Wiederherstellung innerhalb der Sitzung zwischen Commits, ohne deine Git-Historie zu verschmutzen.
- Verlass dich bei Dateien, die Claude nie direkt bearbeitet, auf Git — also bei denen, die nur destruktives Bash (rm/mv) oder ein Hintergrund-Subagent anfasst. Rewind deckt eine Datei erst ab, nachdem Claude sie mit seinen eigenen Datei-Werkzeugen bearbeitet hat.
Wann du dazu greifst
- Probiere eine kühne Implementierung, und wenn sie dir nicht gefällt, stelle Code und Konversation am Verzweigungspunkt wieder her und probiere eine andere.
- Eine Änderung hat vor drei Prompts einen Bug eingeführt? Stelle den Code direkt davor wieder her, statt die Trümmer zu debuggen.
- Experimentiere mit Varianten und wisse immer, dass ein bekannter guter Zustand nur einen /rewind entfernt ist.
- Ein ausschweifender Debugging-Umweg hat dein Kontextfenster gefressen? Fasse ab der Mitte vorwärts zusammen und behalte deine ursprünglichen Anweisungen in vollem Detail.
Teste dich selbst
0/3- Checkpoints sind automatische Snapshots vor jedem Turn-startenden Prompt — ein lokales Rückgängig für die Sitzung. Die letzten 100 werden behalten und dann ~30 Tage nach der Sitzung aufgeräumt.
- Öffne das Rewind-Menü mit /rewind (Aliasse: /checkpoint, /undo) oder Doppel-Esc bei leerer Eingabe; es listet jeden gesendeten Prompt.
- Restore-Aktionen machen den Zustand rückgängig (Code, Konversation oder beides); Summarize-Aktionen komprimieren den Kontext und berühren nie Dateien.
- Das Tracking erfolgt pro Datei und beginnt, wenn Claude sie mit seinen Datei-Werkzeugen bearbeitet — danach werden sogar Bash-Änderungen an dieser Datei zurückgespult. Dateien, die Claude nie bearbeitet hat (nur Bash, extern, parallel, die meisten Subagent-Änderungen), werden nicht getrackt, und Pfade mit Symlinks oder Hardlinks werden beim Restore übersprungen.
- Checkpoints ergänzen Git, sie ersetzen es nicht: Denk an „lokales Rückgängig“ vs. „dauerhafte, teilbare Historie“.
Weiter
- Kontext-Management —
/compact,/clearund wie Summarize ins Gesamtbild passt - Plan-Modus — untersuchen und einen Plan freigeben, bevor Änderungen laufen, damit du seltener zurückspulst
- Berechtigungen — die andere Hälfte, um ehrgeizige Aufgaben sicher auszuführen