---
description: Abort a running Ralph loop and optionally revert changes
category: automation
argument-hint: [--keep-changes] [--revert] [--force --interactive --guidance "text"]
allowed-tools: Read, Write, Bash
model: sonnet
---

# Ralph Abort

Abort a running or paused Ralph loop.

## Usage

```
/ralph-abort               # Abort, keep changes
/ralph-abort --revert      # Abort and revert all changes
/ralph-abort --force       # Abort even if no active loop
```

## Parameters

### --keep-changes (default)
Stop the loop but keep all file changes made during iterations.

### --revert
Revert all changes made during the Ralph loop using git:
- Identify commits made during loop (prefix: `ralph: iteration`)
- Reset to commit before loop started
- **Warning**: This discards work

### --force
Abort even if state indicates no active loop (for cleanup).

## Your Actions

### Standard Abort

1. Read `.aiwg/ralph/current-loop.json`
2. Verify there's an active loop
3. Mark loop as aborted
4. Generate partial completion report
5. Confirm to user

**Output**:
```
Ralph Loop: ABORTED

Task: {task}
Iterations completed: {N}
Duration: {time}

Changes have been kept. To revert:
  git reset --hard HEAD~{N}

Partial report: .aiwg/ralph/completion-{timestamp}.md
```

### With --revert

1. Read loop state
2. Find all `ralph: iteration` commits from this loop
3. Confirm with user before reverting
4. Reset git to pre-loop state
5. Clean up state files

**Confirmation prompt**:
```
This will revert {N} commits:
- ralph: iteration 1 - initial attempt
- ralph: iteration 2 - fixed auth
- ralph: iteration 3 - in progress

Files to be reverted:
- src/auth.ts
- test/auth.test.ts

Type 'yes' to confirm revert:
```

**After revert**:
```
Ralph Loop: ABORTED + REVERTED

Reverted {N} commits.
Working directory restored to pre-loop state.

State cleaned: .aiwg/ralph/current-loop.json archived
```

## Error Handling

**No active loop**:
```
No active Ralph loop to abort.

Use --force to clean up stale state files if needed.
```

**Git not available**:
```
Git not available for --revert option.

Loop aborted, but changes cannot be reverted automatically.
Manual cleanup may be needed.
```

**Dirty working directory (for --revert)**:
```
Cannot revert: uncommitted changes exist.

Options:
1. Commit or stash changes first
2. Use /ralph-abort without --revert to keep current state
```

## State Changes

After abort:
- `current-loop.json` marked with `status: "aborted"`
- `active: false`
- Completion report generated with partial results
- Loop can no longer be resumed

## Related

- `/ralph-status` - Check loop status before aborting
- `/ralph-resume` - Continue instead of abort
