Task Rollback - Undo Last Task
Reverts file changes made by the most recent /crew task execution using git.
When to Activate
- User runs
/crew rollback
Prerequisites
.claude/crew-history.jsonmust exist with at least one entry- Project must be a git repository
- The
gitRefBeforefield should be present in the last history entry (captured by execution-orchestrator before task execution)
If history is missing: "No task history found. Nothing to roll back." If not a git repo: "Not a git repository. Rollback requires git."
Rollback Process
Step 1: Read Last Task
Read .claude/crew-history.json and get the last entry:
- Extract
filesModified— the files that were changed - Extract
gitRefBefore— the git commit hash before the task started - Extract
task— the original task description - Extract
timestamp— when the task ran
Step 2: Show Preview
Display what will be rolled back:
Rollback: "{task}" ({timestamp})
Files: {file1}, {file2}, {file3}
Revert to: {gitRefBefore}
Step 3: Ask for Confirmation
This is mandatory — never skip confirmation.
Ask: "Proceed with rollback? (y/n)"
If user says no: "Cancelled."
Step 4: Execute Rollback
Two strategies based on available data:
Strategy A: gitRefBefore is available (preferred)
git checkout {gitRefBefore} -- {file1} {file2} {file3}
This reverts only the specific files to their pre-task state without affecting other changes.
Strategy B: gitRefBefore is not available (fallback)
git diff HEAD -- {file1} {file2} {file3} # Show what will change
git checkout HEAD~1 -- {file1} {file2} {file3} # Revert to previous commit
Warning: This is less precise — only works if the task's changes are in the most recent commit.
If files have been modified since the task (additional changes on top):
- Warn the user: "Warning: {file} has been modified since the task. Rolling back will also undo those changes."
- Ask for confirmation again
Step 5: Update Index
After rollback:
- Invoke the
index-updaterskill for all reverted files - This ensures the index reflects the rolled-back state
Step 6: Update History
Mark the last task entry in history:
{
"...existing fields...",
"rolledBack": true,
"rolledBackAt": "2026-04-04T13:00:00Z"
}
Step 7: Report
Rolled back {count} files. Index updated.
Safety Rules
- Always show preview and ask for confirmation — never auto-rollback
- Only rollback the most recent task by default
- Warn about subsequent modifications to the same files
- If gitRefBefore is missing, warn that the rollback may be imprecise
- Never force-push or reset — only checkout specific files