Deshacer cambios en Claude Code con rewind y checkpoints
Hola, bienvenido. En la lección anterior revisamos el plan del modelo Task en plan mode y salimos sin aprobarlo, y te avisé de que, si lo hubieras aprobado, deshacer lo que genera un comando de Bash no era tan directo. En esta lección vamos a ver justo eso: cómo volver atrás cuando Claude ya ha tocado el proyecto. Veremos qué es un checkpoint y cuándo se crea, cómo abrir el menú de rewind con /rewind o pulsando Esc 2 veces, qué hace cada una de las 6 acciones que te ofrece, qué cambios no se pueden deshacer desde ahí y por qué, aun con todo esto, Git sigue mandando.
Como vimos en la lección de auto mode, hoy la sesión arranca editando archivos sin preguntarte, así que vas a necesitar volver atrás más de una vez. La propia documentación de Claude Code propone aprovecharlo: en lugar de planificar cada paso con mucho cuidado, puedes pedirle a Claude que pruebe algo arriesgado y, si no funciona, volver al punto anterior y probar otro camino. Es una forma muy útil de trabajar, pero solo si sabes con precisión qué vuelve atrás y qué no, porque en un proyecto Laravel buena parte del trabajo pasa por comandos de Artisan, de Composer y por la base de datos, y ahí los checkpoints no llegan.
Qué es un checkpoint y cuándo se crea
Claude Code guarda automáticamente el estado de los archivos que Claude edita con sus herramientas de edición. Cada prompt que envías y que empieza un turno crea un checkpoint nuevo, con el estado de tu código justo antes de ese prompt, y antes de editar un archivo Claude Code guarda una copia de su contenido para poder restaurarlo. Esas copias viven fuera del proyecto, en ~/.claude/file-history/, así que los checkpoints no dependen de Git ni de que el proyecto sea un repositorio: funcionan por su cuenta.
Hay un detalle sobre qué prompts crean checkpoint que conviene conocer. Si escribes un mensaje mientras Claude está trabajando y ese mensaje entra en el turno que ya está en marcha, no crea checkpoint ni aparece en el menú de rewind. Si quieres deshacer lo que hizo Claude después de ese mensaje, tienes que volver al prompt que empezó el turno, y eso deshace el turno entero, incluido lo que Claude hizo antes de que llegara tu mensaje.
Los checkpoints se guardan con la conversación, así que si cierras Claude Code y retomas la sesión más tarde, que es lo que veremos en la siguiente lección, puedes seguir usando /rewind. Eso sí, tienen límites de conservación. Claude Code guarda las copias de los 100 checkpoints más recientes de cada sesión, y borra las copias de una sesión en su limpieza periódica, por defecto unos 30 días después de la última que guardó. Si intentas volver a un checkpoint cuyas copias ya no existen, la restauración puede fallar con el error No files were restored. Si necesitas conservarlas más tiempo, el ajuste es cleanupPeriodDays, que también controla cuánto se guardan las sesiones.
Para seguir la práctica de esta lección necesitas claude-tasks con los contenedores de Sail levantados, una sesión de Claude Code abierta en la raíz del proyecto y, sobre todo, el proyecto limpio, sin cambios pendientes desde el último commit. Si git status te enseña algún cambio, resuélvelo antes de seguir, porque vamos a usar Git para comprobar qué ha deshecho el rewind y qué no.
- 02Abrir el menú de rewind
- 03Las 6 acciones del menú
- 04Probarlo en claude-tasks
- 05Lo que rewind no deshace
- 06Por qué Git sigue mandando