Back to skills
SkillHub ClubShip Full StackFull Stack

checkpointing

Imported from https://github.com/reggiechan74/claude-plugins.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
5
Hot score
82
Updated
March 20, 2026
Overall rating
C3.2
Composite score
3.2
Best-practice grade
A92.4

Install command

npx @skill-hub/cli install reggiechan74-claude-plugins-checkpointing

Repository

reggiechan74/claude-plugins

Skill path: plugins/claude-code-metaskill/skills/checkpointing

Imported from https://github.com/reggiechan74/claude-plugins.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: reggiechan74.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install checkpointing into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/reggiechan74/claude-plugins before adding checkpointing to shared team environments
  • Use checkpointing for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: checkpointing
description: How checkpointing works for tracking file changes and rewinding to previous states. Use when user asks about checkpoints, rewinding, rollback, undo, or restoring previous states.
---

# Claude Code Checkpointing

## Overview

Claude Code includes an automatic checkpointing system that tracks file edits and allows users to recover from unwanted changes during development sessions.

## How Checkpointing Works

### Automatic Tracking

The system captures code states before each modification.

**Key features:**
- Every user prompt creates a new checkpoint
- Checkpoints persist across resumed conversations
- Automatic cleanup occurs after 30 days (configurable)

### What Gets Tracked

**Tracked:**
- Direct file edits via Edit tool
- File creations via Write tool
- File modifications by Claude

**Not tracked:**
- Files modified by bash commands (`rm`, `mv`, `cp`)
- Manual file modifications outside Claude Code
- Changes from concurrent sessions (unless they affect files the current session modified)

## Rewinding Changes

### Access Rewind Menu

**Keyboard shortcut:**
Press `Esc` twice (quickly)

**Slash command:**
```
/rewind
```

### Restoration Options

When you open the rewind menu, you have three options:

#### 1. Conversation Only
**Keeps:** All code changes
**Reverts:** Conversation history to selected checkpoint

**Use when:**
- You want to start conversation over
- Code changes are good
- You want to try different approach in conversation

#### 2. Code Only
**Keeps:** Conversation history
**Reverts:** Files to selected checkpoint

**Use when:**
- Recent changes broke something
- Want to undo code changes
- Conversation context is valuable

#### 3. Both Code and Conversation
**Reverts:** Everything to selected checkpoint (full rollback)

**Use when:**
- Complete do-over needed
- Both code and conversation went wrong
- Want to return to known good state

### Selecting a Checkpoint

Checkpoints are displayed with:
- Timestamp
- User prompt that created it
- Files affected
- Changes summary

Navigate with arrow keys and select with Enter.

## Use Cases

### Testing Different Approaches

**Scenario:** Try multiple implementation strategies without losing starting point.

```
# Approach 1
"implement feature using strategy A"
# Review, not ideal

# Rewind
Esc Esc → Select checkpoint → Code only

# Approach 2
"implement feature using strategy B"
# Better!
```

### Quick Bug Recovery

**Scenario:** Recent changes introduced a bug.

```
# Make changes
"refactor the authentication module"
# Oops, broke login

# Rewind
Esc Esc → Select checkpoint before refactor → Code only

# Try again differently
"refactor authentication but keep existing login flow"
```

### Iterative Development

**Scenario:** Preserve working states while iterating.

```
# Working state 1
"add basic user validation"
# Works ✓

# Iterate
"add more complex validation rules"
# Issues found

# Return to working state
Esc Esc → Code only

# Try different iteration
"add regex-based validation"
```

### Conversation Reset

**Scenario:** Conversation got confused or went off track.

```
# Good code changes made
"add user profile endpoint"
"add user settings endpoint"

# Conversation gets confusing
# Want to restart conversation but keep code

# Rewind conversation only
Esc Esc → Conversation only → Select early checkpoint

# Fresh conversation start with code intact
```

## Important Limitations

### Bash Command Changes Not Tracked

**Not captured:**
```
!rm file.txt
!mv old.txt new.txt
!cp source.txt dest.txt
!git checkout -b new-branch
```

**Why:** Bash commands run outside Claude's file tracking system.

**Workaround:**
- Use Claude's Edit/Write tools instead when possible
- Manually track bash file operations
- Use git for version control of important changes

### External Changes Not Tracked

**Not captured:**
- Manual edits in your text editor
- IDE refactorings
- File system operations outside Claude Code
- Changes from other tools

**Workaround:**
- Use git to track all changes
- Create manual checkpoints with git commits
- Be aware of what Claude modified vs what you modified

### Concurrent Session Caveats

**Limited tracking:**
If multiple Claude Code sessions modify the same files, only changes from the current session are tracked for checkpointing.

**Best practice:**
Use one Claude Code session at a time per project.

## Not a Version Control Replacement

### Checkpointing vs Git

| Feature | Checkpointing | Git |
|---------|--------------|-----|
| **Scope** | Session-level | Repository-wide |
| **Duration** | 30 days | Permanent |
| **Granularity** | Per prompt | Per commit |
| **Collaboration** | Single user | Team |
| **Purpose** | Session recovery | Version control |
| **Bash tracking** | No | Yes |

### Use Both Together

**Git for:**
- Permanent history
- Collaboration
- Branch management
- All file changes (including bash)
- Release management

**Checkpointing for:**
- Quick session rollback
- Trying different approaches
- Recovering from mistakes
- Conversation management
- Rapid iteration

**Recommended workflow:**
```
# Regular git commits for milestones
git commit -m "Working authentication"

# Use checkpointing for rapid iteration
"try optimization A"
Esc Esc → rewind if not good
"try optimization B"
Esc Esc → rewind if not good
"try optimization C"
# This one works!

# Commit the winner
git add .
git commit -m "Optimized authentication"
```

## Configuration

### Checkpoint Retention

**Default:** 30 days

**Configure retention:**
Edit `.claude/settings.json`:
```json
{
  "checkpointRetentionDays": 60
}
```

### Disable Checkpointing

**Not recommended**, but possible:
```json
{
  "enableCheckpointing": false
}
```

## Best Practices

### 1. Review Before Rewinding

**Look at:**
- What checkpoint contains
- What will be lost
- What will be kept

**Avoid:**
- Blindly selecting checkpoints
- Rewinding without understanding impact

### 2. Use Descriptive Prompts

**Good (easy to identify):**
```
"add email validation to user registration"
"refactor database queries for performance"
```

**Bad (hard to identify):**
```
"make changes"
"fix it"
```

Checkpoints show your prompts, so descriptive prompts make checkpoint selection easier.

### 3. Combine with Git

```
# Checkpoint for rapid iteration
Try approach → rewind → try approach → rewind

# Git for confirmed changes
git add .
git commit -m "Final implementation"
```

### 4. Rewind Code, Not Conversation

**Often better:**
Rewind code only and keep conversation history.

**Why:**
- Maintains context
- Claude learns from mistakes
- Can explain what went wrong
- Better for iterative improvement

### 5. Regular Git Commits

Don't rely solely on checkpoints:
```
# After significant progress
git add .
git commit -m "Checkpoint: working user authentication"

# Continue with Claude Code
# Checkpointing handles rapid iteration
# Git handles permanent milestones
```

## Troubleshooting

### Checkpoint Not Showing Expected State

**Possible causes:**
- Changes made via bash commands (not tracked)
- External file modifications
- Concurrent session changes
- Checkpoint expired (>30 days)

**Solution:**
- Use git for those scenarios
- Check git history: `git log`
- Review git diff: `git diff`

### Can't Find Recent Checkpoint

**Check:**
- Are you in the right directory?
- Is this the same session?
- Did checkpoint expire?

**Solution:**
- Use `/rewind` command instead of Esc Esc
- Check session history
- Verify working directory

### Rewind Not Working

**Check:**
- Are files write-protected?
- Do you have filesystem permissions?
- Are files open in another program?

**Solution:**
- Close files in editors
- Check file permissions
- Ensure no file locks

## Example Workflows

### Refactoring Safely

```
# Current working state
git commit -m "Pre-refactor checkpoint"

# Try refactoring
"refactor user controller for better error handling"

# Test
!npm test

# If tests fail
Esc Esc → Code only → Return to pre-refactor

# Try different approach
"refactor user controller with focus on backward compatibility"

# If tests pass
git commit -m "Refactored user controller"
```

### Feature Experimentation

```
# Baseline working
git commit -m "Baseline"

# Experiment 1
"add feature using approach A"
# Review, note pros/cons

# Rewind
Esc Esc → Code only

# Experiment 2
"add feature using approach B"
# Compare, choose better

# If experiment 2 is better
git commit -m "Added feature using approach B"

# If neither was good
Esc Esc → Code only → Back to baseline
```

### Conversation Management

```
# Making good progress
"implement auth"
"add user roles"
"add permissions"

# Conversation gets complex/confused
Esc Esc → Conversation only → Select first checkpoint

# Start fresh conversation
"explain the architecture we just built"
# Code intact, conversation reset
```
checkpointing | SkillHub