-
-
Notifications
You must be signed in to change notification settings - Fork 6
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 — selected items 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 - Maven repository (
~/.m2/repository) - Go module cache (
GOMODCACHE) - Flutter/Dart
.dart_toolin projects - iCloud Documents
- Voice Memos
- GarageBand / Logic Pro
- iMovie / Final Cut Pro
- Sleep Image (hibernation file)
- Font Cache (guarded: requires confirmation, system restart to take effect)
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.
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