5.0 KiB
Cleanup / Garbage Collection
The agents cleanup command group provides garbage collection for stale
platform resources: sandboxes, checkpoints, sessions, logs, and backups.
All operations respect configurable retention policies and protect active
resources from accidental deletion.
Subcommands
agents cleanup scan
Dry-run scan that identifies stale resources without deleting anything. Prints a per-resource summary table and lists every item that would be cleaned.
agents cleanup scan
agents cleanup purge
Remove stale resources based on retention policies.
agents cleanup purge [--dry-run] [--all] [--yes|-y]
| Flag | Default | Description |
|---|---|---|
--dry-run |
false |
Report what would be removed without deleting. |
--all |
false |
Purge all resource types (sandboxes, checkpoints, sessions, logs, backups). Without this flag, only sandboxes and checkpoints are purged. |
--yes, -y |
false |
Skip the interactive confirmation prompt. |
agents cleanup status
Display current retention policy settings.
agents cleanup status
Resource Types
Sandboxes
Sandbox directories live in the system temp directory with prefixes
ca-sandbox- and ca-cow-sandbox-. A sandbox is considered stale when
its modification time exceeds cleanup_sandbox_max_age_hours. Sandboxes
linked to a currently-running plan are skipped and logged.
Checkpoints
LangGraph checkpoint files (checkpoint_*.json) reside under
<data_dir>/checkpoints/<plan_id>/. When a plan accumulates more
checkpoints than cleanup_checkpoint_max_per_plan, the oldest files are
pruned while always keeping the first and most recent checkpoint.
Sessions
Sessions in the SQLite database that have not been updated for longer than
cleanup_session_inactivity_days are eligible for removal. Session
cleanup is only performed when --all is passed to purge.
Logs
Log files (*.log) under <log_dir> older than
cleanup_log_retention_days are removed during an --all purge.
Backups
Backup files under <data_dir>/backups/ older than
cleanup_backup_retention_days are removed during an --all purge.
Configuration
All retention policies are configurable via environment variables or the Settings model.
| Setting | Env Variable | Default | Description |
|---|---|---|---|
cleanup_sandbox_max_age_hours |
CLEVERAGENTS_CLEANUP_SANDBOX_MAX_AGE_HOURS |
48 |
Max sandbox age in hours before eligibility. |
cleanup_checkpoint_max_per_plan |
CLEVERAGENTS_CHECKPOINT_MAX |
50 |
Max checkpoints retained per plan. |
cleanup_session_inactivity_days |
CLEVERAGENTS_CLEANUP_SESSION_INACTIVITY_DAYS |
30 |
Days of inactivity before session is stale. |
cleanup_log_retention_days |
CLEVERAGENTS_LOG_RETENTION_DAYS |
30 |
Days to retain log files. |
cleanup_backup_retention_days |
CLEVERAGENTS_BACKUP_RETENTION_DAYS |
7 |
Days to retain backup snapshots. |
cleanup_schedule |
CLEVERAGENTS_CLEANUP_SCHEDULE |
manual |
manual (user-initiated) or auto (stub). |
These correspond to the specification config keys:
sandbox.cleanup→manual(MVP)sandbox.checkpoint.max-per-plan→ 50core.log.retention-days→ 30core.backup.retention-days→ 7
Safety
- Active plan protection: Sandboxes linked to a running plan ID are never deleted. The skipped items and reasons appear in the report.
- Confirmation prompt:
purgerequires interactive confirmation unless--yesis passed. - Dry-run: Both
scanandpurge --dry-runpreview cleanup without side effects. - Checkpoint preservation: The first and most recent checkpoint for each plan are always retained, even when pruning excess files.
Examples
Scan for stale resources:
$ agents cleanup scan
Cleanup Scan Results (dry-run)
Mode: Dry-run
Sandboxes scanned=4 to remove=2 skipped=1
Checkpoints scanned=120 to remove=15 skipped=0
Sessions scanned=0 to remove=0 skipped=0
Logs scanned=8 to remove=3 skipped=0
Backups scanned=5 to remove=2 skipped=0
Stale items found:
[sandbox] /tmp/ca-sandbox-plan123-abcd (3 days old)
[checkpoint] .cleveragents/checkpoints/plan456/checkpoint_003.json (excess)
...
Purge only sandboxes and checkpoints (default):
$ agents cleanup purge --yes
Cleanup Complete
Mode: Purge
Sandboxes scanned=4 removed=2 skipped=1
Checkpoints scanned=120 removed=15 skipped=0
Sessions scanned=0 removed=0 skipped=0
Logs scanned=0 removed=0 skipped=0
Backups scanned=0 removed=0 skipped=0
Purge all resource types with dry-run preview:
$ agents cleanup purge --all --dry-run
View current retention settings:
$ agents cleanup status
Cleanup Retention Policies
Sandbox max age: 48 hours
Checkpoint max/plan: 50
Session inactivity: 30 days
Log retention: 30 days
Backup retention: 7 days
Schedule: manual