How to Rollback Changes in Claude Code: Quick Guide to Checkpoints & Rewind
Master Claude Code's rollback system. Learn checkpoints, rewind commands, and recovery strategies to code fearlessly with instant undo capabilities.
TL;DR - Rollback in 30 Seconds
# View your checkpoints
/checkpoint list
# Rollback to previous checkpoint
/rewind 1
# Rollback multiple checkpoints
/rewind 3
# Create manual checkpoint before risky changes
/checkpoint create "Before major refactor"
# That's it! Your code is restored.
Key Concept: Claude Code automatically creates checkpoints before major changes. You can instantly rewind to any checkpoint without git knowledge.
What is a Checkpoint?
A checkpoint is a snapshot of your codebase at a specific moment in time. Think of it as a save point in a video game - you can always go back if things go wrong.
How Checkpoints Work
Your Coding Timeline:
──────────────────────────────────────────────────
Time: 10:00 10:15 10:30
Action: Fix bug → Add feature → Refactor
Checkpoints created automatically:
[CP1] [CP2] [CP3]
"Before "Before "Before
bug fix" new feature" refactor"
If refactor breaks something:
/rewind 1 → Back to 10:15 (before refactor)
/rewind 2 → Back to 10:00 (before feature)
Automatic vs Manual Checkpoints
Automatic (Claude creates these):
- Before editing multiple files
- Before major refactoring
- Before running risky operations
- Before migrations or deletions
Manual (You create these):
/checkpoint create "Your description here"
Step-by-Step: Rollback Guide
Step 1: View Available Checkpoints
# In your Claude Code session
/checkpoint list
# Output:
┌───┬──────────────────────────────────┬─────────────┐
│ # │ Description │ Time │
├───┼──────────────────────────────────┼─────────────┤
│ 3 │ Before database migration │ 10:45 AM │
│ 2 │ After adding tests │ 10:30 AM │
│ 1 │ Before refactoring auth module │ 10:15 AM │
│ 0 │ Initial state │ 10:00 AM │
└───┴──────────────────────────────────┴─────────────┘
Current: Checkpoint 3
Reading the list:
- #3 = Most recent (current state)
- #0 = Oldest checkpoint
- You're currently at #3
Step 2: Rewind to a Previous Checkpoint
# Rollback 1 checkpoint (back to #2)
/rewind 1
# Output:
✓ Rewound to checkpoint: "After adding tests"
✓ Restored 5 files
✓ Current state: Checkpoint 2
Files restored:
- src/database/migrate.js (deleted)
- src/models/User.js (reverted to previous version)
- tests/user.test.js (reverted)
What happened:
- All files changed between checkpoint 2 and 3 are reverted
- Your codebase is exactly as it was at 10:30 AM
- Checkpoint 3 still exists (you can go forward)
Step 3: Go Forward Again (If Needed)
# Changed your mind? Go back to checkpoint 3
/rewind -1
# Or use explicit checkpoint number
/checkpoint restore 3
# Output:
✓ Restored to checkpoint: "Before database migration"
✓ Current state: Checkpoint 3
Common Rollback Scenarios
Scenario 1: Refactor Broke Tests
Problem: You refactored code, but tests now fail.
# You're here (tests failing):
> "Run the tests"
FAIL tests/auth.test.js
✕ Login should work (89ms)
# Rollback to before refactor
/rewind 1
# Output:
✓ Rewound to: "Before auth refactor"
✓ All files restored
# Tests now pass again!
> "Run the tests"
PASS tests/auth.test.js
Next Steps:
- Analyze what broke
- Describe the issue to Claude
- Let Claude fix the refactor
- Create new checkpoint:
/checkpoint create "Fixed refactor"
Scenario 2: Accidental File Deletion
Problem: Claude deleted important files you needed.
# Claude just deleted config files
✓ Deleted: config/database.js
✓ Deleted: config/redis.js
# Panic! You needed those!
# Rollback immediately
/rewind 1
# Output:
✓ Restored: config/database.js
✓ Restored: config/redis.js
Scenario 3: Trying Experimental Changes
Problem: You want to experiment but preserve current working state.
# Create checkpoint before experimenting
/checkpoint create "Before experimental GraphQL refactor"
# Now ask Claude to try something risky
> "Refactor the entire API to use GraphQL instead of REST"
# Claude makes major changes...
# Review the changes
/list
# If you don't like it:
/rewind 1
# If you like it:
/checkpoint create "GraphQL migration successful"
Scenario 4: Multiple Checkpoints Back
Problem: You made several changes and want to go back to the beginning.
# View timeline
/checkpoint list
│ 5 │ After styling updates │ 11:30 AM │
│ 4 │ After adding analytics │ 11:15 AM │
│ 3 │ After refactoring components │ 11:00 AM │
│ 2 │ After adding tests │ 10:45 AM │
│ 1 │ Initial working version │ 10:30 AM │
# Go back to "Initial working version" (4 checkpoints back)
/rewind 4
# Output:
✓ Rewound to: "Initial working version"
✓ Restored 18 files
✓ Undone: styling, analytics, refactor, tests
Advanced Rollback Techniques
Selective File Restoration
Can't restore just one file from a checkpoint? Here's the workaround:
# Option 1: Rewind, save file, go forward
/rewind 2 # Go back to checkpoint with the file
# Copy the file content manually
/rewind -2 # Return to current
# Option 2: Use git (if you've committed)
> "Use git to restore src/config.js from 2 commits ago"
# Claude executes: git checkout HEAD~2 -- src/config.js
# Option 3: Ask Claude
> "I need the version of config.js from checkpoint 2,
> but keep everything else from checkpoint 5"
# Claude will manually retrieve and apply it
Creating Strategic Checkpoints
When to manually create checkpoints:
# ✅ DO create checkpoints before:
/checkpoint create "Before database migration"
/checkpoint create "Before switching to TypeScript"
/checkpoint create "Before major API refactor"
/checkpoint create "Working version before optimization"
# ❌ DON'T create checkpoints for:
# - Small changes (automatic checkpoints handle this)
# - Every single edit (clutters checkpoint list)
# - After breaking code (checkpoints should be stable states)
Best Practice Pattern:
1. Reach stable state (tests pass, code works)
2. Create checkpoint: "Stable - [description]"
3. Make risky changes
4. Test
5a. If success → Create new checkpoint
5b. If failure → /rewind 1
Checkpoint Naming Tips
Good checkpoint names:
✅ /checkpoint create "Before migrating to Prisma"
✅ /checkpoint create "Working auth system - tests passing"
✅ /checkpoint create "After adding Redis caching - benchmark 50ms"
✅ /checkpoint create "Stable v1.2 - ready for deployment"
Bad checkpoint names:
❌ /checkpoint create "Stuff"
❌ /checkpoint create "Checkpoint 1"
❌ /checkpoint create "asdfasdf"
❌ /checkpoint create "Changes"
Good names help you identify the right checkpoint to restore later.
Checkpoints vs Git: What's the Difference?
| Feature | Claude Code Checkpoints | Git |
|---|---|---|
| Setup | Automatic (built-in) | Manual (must run commands) |
| Frequency | Every major change | Whenever you commit |
| Speed | Instant (/rewind 1) | Slower (git reset, git revert) |
| Granularity | Fine-grained (every AI action) | Coarse (only when you commit) |
| Knowledge Required | None (simple commands) | Moderate (git concepts) |
| Persistence | Session-based (lost when session ends) | Permanent (survives restarts) |
| Sharing | Not shareable | Push to remote (team access) |
Best Practice: Use both!
# Workflow:
1. Use checkpoints for rapid iteration in Claude Code session
2. When you reach a stable state, commit with git:
> "Create a git commit with these changes"
3. Continue using checkpoints for next iteration
4. Commit again when stable
# Checkpoints = short-term safety net
# Git commits = long-term version control
Troubleshooting Rollback Issues
Problem: "No checkpoints available"
/rewind 1
# Error: No previous checkpoints found
# Causes:
1. You just started the session (no checkpoints created yet)
2. You cleared context (/clear)
3. Session was restarted
# Solution:
# Start making changes - Claude will create checkpoints automatically
# Or create manual checkpoint: /checkpoint create "Initial state"
Problem: "Checkpoint not found"
/rewind 10
# Error: Only 3 checkpoints available
# Solution:
# Check available checkpoints first
/checkpoint list
# Then rewind to valid checkpoint
/rewind 3
Problem: "Files modified outside Claude Code"
/rewind 1
# Warning: These files were modified externally:
# - src/app.js (edited in IDE)
# - package.json (npm install changed this)
# Rewind may cause conflicts.
# Options:
1. Proceed anyway (may lose external changes)
2. Cancel and manually merge
3. Create checkpoint first, then rewind
# Recommendation:
# Don't edit files in IDE while Claude Code is running
# Or save IDE changes before rewinding
Quick Reference Card
Essential Commands
# View checkpoints
/checkpoint list
# Create manual checkpoint
/checkpoint create "Description"
# Rollback
/rewind 1 # Back 1 checkpoint
/rewind 3 # Back 3 checkpoints
/rewind -1 # Forward 1 checkpoint
# Restore specific checkpoint
/checkpoint restore 2 # Go to checkpoint #2
# Clear all checkpoints (careful!)
/clear # Clears context AND checkpoints
Keyboard Shortcuts
(No built-in shortcuts, but you can create aliases)
# Add to ~/.bashrc or ~/.zshrc:
alias cpl='/checkpoint list'
alias cpc='/checkpoint create'
alias rw1='/rewind 1'
alias rw2='/rewind 2'
# Then use:
cpl # List checkpoints
cpc "msg" # Create checkpoint
rw1 # Rewind 1
Best Practices Summary
✅ DO:
-
Create checkpoints before major changes
/checkpoint create "Before risky refactor" -
Review changes before creating checkpoints
/list # See what changed /checkpoint create "..." # Then save -
Use descriptive names
/checkpoint create "Auth working - tests pass - 10:30 AM" -
Combine with git for long-term safety
> "Commit these changes with git" -
Rewind fearlessly - checkpoints are non-destructive
/rewind 1 # You can always go forward again
❌ DON'T:
-
Don't rely on checkpoints after session ends
- Checkpoints are session-based
- Use git commits for permanent history
-
Don't edit files externally during session
- Can cause conflicts with rewind
- Pause Claude Code, edit, resume
-
Don't create too many manual checkpoints
- Automatic checkpoints usually sufficient
- Manual checkpoints for strategic points only
-
Don't forget checkpoints expire with session
/exit # Closes session # Checkpoints are lost! # Commit with git first if needed
Real-World Example: Safe Refactoring Workflow
# Day: Friday afternoon, risky refactor ahead
# 1. Start session
claude
# 2. Create checkpoint at stable state
/checkpoint create "Stable - all tests passing - ready for refactor"
# 3. Request refactor
> "Refactor the authentication system to use JWT instead of sessions"
# Claude creates automatic checkpoint before changes
[Checkpoint: "Before auth refactor"]
# Claude makes changes...
# 4. Review changes
/list
# 5. Test
> "Run all tests"
# 6a. Tests pass? Create checkpoint!
/checkpoint create "JWT auth complete - tests passing"
# 6b. Tests fail? Rollback!
/rewind 1
# Try again with more context
> "The tests failed because of session middleware.
> Please remove session middleware and use JWT middleware instead."
# Iterate until successful
# 7. When stable, commit with git
> "Create git commit: 'feat: migrate auth to JWT'"
# 8. Continue working
# Checkpoints continue protecting you...
Next Steps
Now that you've mastered rollback, explore more Claude Code features:
- Learn Subagents: Parallel Development with Subagents
- Master Checkpoints: Complete Checkpoint System Guide
- Best Practices: Claude Code Best Practices
- Getting Started: Complete Setup Guide
Quick FAQ
Q: How many checkpoints can I create? A: No hard limit, but keep it reasonable. Claude Code stores checkpoints in memory during the session.
Q: Do checkpoints survive restart? A: No. Checkpoints are session-based. Use git commits for permanent history.
Q: Can I share checkpoints with team? A: No. Use git for team collaboration. Checkpoints are local to your session.
Q: Do checkpoints include dependencies (node_modules)?
A: No. Checkpoints only track source files, not dependencies. Re-run npm install if needed after rewind.
Q: Can I rewind if I've exited Claude Code? A: No. Checkpoints are lost when you exit. Always commit important changes to git before exiting.
Q: What if I rewind too far?
A: No problem! Use /rewind -1 to go forward, or /checkpoint restore N to jump to a specific checkpoint.
Conclusion
Rollback in Claude Code is simple and powerful:
- Automatic checkpoints protect you by default
- /rewind N instantly restores previous state
- Manual checkpoints let you mark strategic points
- Non-destructive - you can always go forward again
Code fearlessly with the safety net of instant rollback! 🚀
Quick Command Card (bookmark this!):
/checkpoint list # See all checkpoints
/checkpoint create "msg" # Save current state
/rewind 1 # Undo last change
/rewind 3 # Undo last 3 changes
/checkpoint restore 2 # Jump to checkpoint #2
Happy (safe) coding! 🛡️
Keep Reading
Related Posts
Claude Code Checkpoints: Safe AI Development with Instant Rollback
Master Claude Code's checkpoint system to develop fearlessly. Learn how automatic save states, instant rewind, and strategic checkpoint management enable safe, experimental coding with AI assistance.
Claude Code 2.0: Complete Guide to Autonomous Development Features
Explore Claude Code 2.0's revolutionary features including checkpoints, subagents, VS Code extension, and autonomous workflows. Learn how to leverage these tools for more efficient AI-assisted development.
Claude Code Hooks Tutorial: Automate Your AI Coding Workflow
Learn how to use Claude Code hooks to automate tasks, enforce coding standards, and create powerful custom workflows. Complete tutorial with practical examples for PreToolUse, PostToolUse, and Notification hooks.
Recommended Guides
Claude Code Checkpoints & Rewind Feature - Undo AI Code Changes
Learn how to use Claude Code's checkpoints and rewind feature to safely undo AI-generated code changes. Use Esc+Esc or /rewind to rollback mistakes and maintain control over your codebase.
ClaudeCode Best Practices & Pro Tips
Master ClaudeCode with expert tips, proven workflows, and best practices. Learn how to maximize productivity and get the most out of AI-powered development.
Getting Started with ClaudeCode
Learn how to install, configure, and start using ClaudeCode in just 10 minutes. A complete beginner's guide to AI-powered development.