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, ~/Library including Group Containers, which most guides skip and which held 9.6 GB on my machine. Flags big files, node_modules, Electron Partitions folders, 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 is node_modules in 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 makes df finally 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.