---
name: config-audit:cleanup
description: Clean up old config-audit sessions to reclaim disk space
allowed-tools: Read, Write, Glob, Bash, AskUserQuestion
model: sonnet
---

# Config-Audit: Session Cleanup

Manage and clean up accumulated config-audit sessions in `~/.claude/config-audit/sessions/`.

## Usage

```
/config-audit cleanup
/config-audit cleanup --raw   # pass-through accepted; no-op (cleanup is file-management only, no findings prose)
```

## Implementation Steps

0. **Parse flags**:

   ```bash
   RAW_FLAG=""
   if echo "$ARGUMENTS" | grep -q -- "--raw"; then RAW_FLAG="--raw"; fi
   ```

   `--raw` is accepted for CLI surface consistency but is a no-op here — cleanup manages session directories on disk, it does not produce findings prose.

1. **List all sessions**:
   - Glob `~/.claude/config-audit/sessions/*/state.yaml`
   - Use the Read tool on each session's state.yaml and extract:
     - Session ID
     - Created timestamp
     - Current phase
     - Whether session is active (has `next_phase` and `current_phase` is not `verify` or `complete`)

2. **Calculate disk usage**:
   - Use `du -sh ~/.claude/config-audit/sessions/{session-id}/` for each session
   - Calculate the total amount of disk space used

3. **Display session table**:
   ```
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   Config-Audit Sessions
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   | # | Session ID | Age | Phase | Status | Size |
   |---|------------|-----|-------|--------|------|
   | 1 | 20260127_102527 | 15d | implement | active | 12K |
   | 2 | quick-20260126 | 16d | analyze | complete | 8K |
   | 3 | 20260120_091500 | 22d | analyze | complete | 6K |

   Total: 3 sessions, 26K disk usage
   ```

4. **Ask cleanup action**:
   ```
   AskUserQuestion:
     question: "Which sessions should I clean up?"
     header: "Cleanup"
     options:
       - label: "Completed sessions only (Recommended)"
         description: "Delete sessions where phase is verify/complete. Keeps active sessions safe."
       - label: "Older than 14 days"
         description: "Delete all sessions older than 14 days, regardless of status."
       - label: "All except current"
         description: "Delete everything except the most recent active session."
       - label: "Cancel"
         description: "Don't delete anything."
   ```

5. **Safety guards**:
   - NEVER delete sessions where `current_phase` is not `verify` or `complete` AND `next_phase` exists, unless user explicitly chose age-based or all-except-current
   - Warn before deleting active sessions: "Session {id} is still active (phase: {phase}). Delete anyway?"

6. **Execute cleanup**:
   - For each session to delete: `rm -rf ~/.claude/config-audit/sessions/{session-id}/`
   - Track deleted count and freed space

7. **Output summary**:
   ```
   ✓ Cleanup complete

   Deleted: 2 sessions
   Freed: 14K disk space
   Remaining: 1 session (active)
   ```

## Session Status Detection

A session is considered **active** if ALL of these are true:
- `current_phase` is not `verify` and not `complete`
- `next_phase` exists and is not empty

A session is considered **complete** if ANY of these are true:
- `current_phase` is `verify` or `complete`
- `next_phase` is empty or null

## Error Handling

- **Legacy path:** Also check `~/.config-audit/sessions/` for sessions created before v2.2.0. If found, include them in the session list and note: "Found {n} session(s) at legacy path (~/.config-audit/). These will be cleaned up normally."
- If `~/.claude/config-audit/sessions/` doesn't exist (and no legacy sessions): "No sessions found. Nothing to clean up."
- If no sessions match criteria: "No sessions match the selected criteria."
- If deletion fails: Log error, continue with other sessions
