macreclaim
Disk-space tool for macOS — audits what's actually eating your drive, deletes only what you approve, then releases the space APFS snapshots hold back.
Four bash scripts that find and reclaim disk space on macOS. No dependencies, no installer, no Homebrew — it runs on the bash that ships with the OS.
Source on GitHub, MIT.
Why it exists
I cleaned 44 GB off a Mac mini and df reported zero space freed.
Free space actually went down by a gigabyte.
The deletion had worked perfectly — iused dropped from 2.5M to 1.7M,
about 800,000 files gone. But on APFS, blocks still referenced by Time
Machine local snapshots become purgeable, not free. The snapshots
had grown to retain everything I'd just deleted.
Every cleanup tool I looked at deletes and walks away. None of them mention this, which means you're left staring at an unchanged number assuming your cleanup failed. Dropping the snapshots released all 44 GB at once.
That last step — macreclaim release — is the reason the tool exists.
What it does
scan— read-only audit of the whole disk. Home,/Applications,~/Libraryincluding Group Containers, which most guides skip and which held 9.6 GB on my machine. Flags big files,node_modules, ElectronPartitionsfolders, and git repos with their last commit date.drill— expands whatever the scan showed as suspiciously large. A top-level number tells you where; this tells you why.clean— tiered deletion, dry run unless you pass--go. Tier A is regenerable caches, B is rebuildable ones, C isnode_modulesin stale repos, D is apps, E is Electron caches that need a re-login.release— drops local snapshots and reports files still held open by running processes. The step that makesdffinally move.
Safety by default
Every path passes a guard that refuses /, $HOME, /Applications,
/Library, /System, /usr, anything with .. or an unexpanded
glob, and anything outside $HOME or /Applications. Explicit paths
only — no wildcards into rm, no find -delete.
Tiers D and E ship completely empty. They do nothing until you write your own config, which is gitignored. A delete script that arrives carrying somebody else's list of paths is a footgun, so you physically cannot inherit mine.
Mail stores, Messages, Photos libraries, iOS backups and messaging-app group containers are never touched. Those are data, not cache.
What it won't pretend to know
Spotlight's "last opened" date is unreliable — during the audit it reported Chrome as never-opened while Chrome sat on 966 MB of profile data. The scan prints those dates as a hint and says so. Anything genuinely destructive stays a decision you make, not one the script makes for you.