Repository navigation
Smart Cleanup
Smart Cleanup scans the system for cache files, temporary data, logs, and other removable content. Categories execute in parallel across all available cores.
Cleanup paths come from a two-level database (engine_paths.json + ui_metadata.json, validated against catalog_policy.json) compiled into the app at build time:
- 2,343 path definitions
- 304 applications
- 92 CLI toolchains
Paths use tokenized templates (<CACHES>, <APP_SUPPORT>, <CONTAINERS>, etc.) resolved at runtime.
The Cleanup page has two sections:
- Base cleanup (default) — System Cache, App Logs, Browser Cache, and Trash (if enabled in settings). Ready to run without configuration
- Extended cleanup — full scan of all 55+ categories
- Idle — choose additional options and optional categories to include
- Scanning — categories are scanned simultaneously. Progress shows step count and current task
- Preview — results grouped by category. Each item shows size, risk level, and modification date
- Execute — items in normal categories are permanently deleted; items in Review‑Only categories are moved to Trash (recoverable). Trash is emptied at the end of the operation when enabled
- Complete — summary of freed space, cleaned items, skipped paths, and a partial-cleanup reason when some items could not be removed
| Badge | Meaning |
|---|---|
| Safe | Temporary data, safe to remove |
| Moderate | May affect app startup speed |
| Dangerous | May reset app preferences or require re-login |
| Protected | System-protected path, cannot be deleted |
Nothing is deleted automatically. Risky and personal-content categories (orphaned remnants, old backups, AI/LLM model stores, installer packages) start unselected and require explicit confirmation. Categories with a purple "DEV" badge are developer-related caches.
Toggle these before scanning:
-
.DS_Storefiles - Time Machine Snapshots (thinning)
- Font Cache (guarded: requires confirmation, system restart to take effect)
- GarageBand / Logic Pro
- iMovie / Final Cut Pro
These are deselected by default and need explicit opt-in: iOS backups, Docker data, iOS Simulators, orphaned remnants, old backups, AI/LLM model stores, installer packages.
Every cleanup is recorded (date, freed bytes, trigger, category). Recent operations appear on the Dashboard; the full History window opens with ⌘Y and supports search and sorting.
Maven, Go module, and .dart_tool caches are always scanned and cannot be disabled.
Every path in the database is classified:
| Purpose | Meaning |
|---|---|
cache |
Regenerable, cleaned by default |
app_data |
Uninstall-only, never touched by cleanup |
shared |
Shared with other apps, not automatic |
user_content |
Personal content, opt-in only |
All cleanup operations go through SafetyManager, which enforces strict allowed roots and blocks /System, /usr, /bin, ~/.ssh, IDE settings, and other critical paths. Symlinks are validated immediately before deletion. Files are trashed, not permanently deleted; ~/.Trash itself is never deleted.
When enabled in Settings, a log panel is available during and after cleanup, with script output, error details, and a copy-to-clipboard action.
Home · GitHub · Issues · Releases · Discussions
MacOSCleaner
Tools
System
Reference
Project