Open Source · MIT · Pure bash · macOS

sheersweep

**Scan · Confirm · Trash — the delete is yours.**

Most Mac cleaners are a black box that asks you to trust them while they delete things you can't see, behind a subscription. sheersweep is one shell script you can read end to end. It shows you what it will free before it frees anything, it only clears caches and logs your Mac rebuilds on its own, and it has a hard-coded list of things no line in it can reach.

It sweeps every account under /Users in one pass — handy on a shared or family Mac, where every other tool only cleans the user running it.

How it works

1.

Scan

sheersweep --dry-run prints how much each item would free and deletes nothing. Run it, read it, then decide. Every run ends with a read-only map of where your disk actually went, grouped by what you can do about it.

2.

Confirm

Nothing goes without you saying so. Removing an app asks you to type its name; a batch asks you to type how many are going. A wrong answer skips that item and leaves the rest alone.

3.

Trash

Everything moves to the Trash — never rm. Each run writes a small receipt, so sheersweep restore puts the whole last removal back across every account, in one command. Emptying the Trash is what finally reclaims the space, and that is your hand, not ours.

What's inside

A hard never-touch list

Photos, Documents, Desktop, Mail, Keychains, any git repo, any Obsidian vault, app containers and cloud-sync folders. Not a setting you could flip — no line in the script can reach them.

Every account, one pass

Caches, logs and temp for every home under /Users, current and future, plus the system-wide locations once. Most cleaners only ever see the user running them.

The APFS snapshot most cleaners skip

Deleting files won't return the space if a local Time Machine snapshot still pins it. sheersweep releases them — and says so, because that is usually where the space actually comes back.

An uninstall that shows its work

Pick from a numbered list where every app carries its full footprint — the bundle plus everything it owns across every account — measured before you choose. A 2 GB app is a different decision from a 200 MB one, and you shouldn't find that out afterwards.

It finds what removed apps left behind

Drag an app to the Trash and its data stays for years. sheersweep surfaces the leftovers by bundle id, and only when nothing installed claims that id — no name-guessing anywhere. Startup items still trying to launch a program that no longer exists show up in the same list.

Build output, opt-in and never part of the sweep

sheersweep reclaim finds node_modules, .build, target and friends inside your projects — but only where git ignores it, the name is on a short list, and a sibling manifest proves the build tool. Each row carries the command that rebuilds it, so you have two undos.

Honest accounting

When macOS blocks a move — app containers are protected even from root — sheersweep reports exactly which items stayed, why, and where the toggle is. It never asks for that permission itself, and the success line appears only when everything it promised actually reached the Trash.

Nine languages, no network

English · Japanese · Traditional Chinese · Simplified Chinese · Korean · Spanish · German · French · Portuguese, all built in. No telemetry, no update check, no account. The only thing it talks to is your disk.

Try it

brew install CVERInc/sheersweep/sheersweep, then run sheersweep --dry-run and read what it found. One bash file, zero dependencies, MIT, macOS. If you'd rather not install anything first, the script is short enough to read on GitHub — which is rather the point.