The Mac cleaner you can read. Open source · dry-run first · a hard never-touch list · sweeps every account.
Most Mac cleaners are a black box that asks you to trust them while they delete
things you can't see, behind a subscription, with a little fear in the marketing.
sheersweep is the opposite: it's one short shell script you can read end to
end, it shows you exactly what it will free before it frees anything, it
only clears caches/temp/logs the OS rebuilds on its own, and it has a
hard-coded list of things it will never touch.
The honest cleaner. No subscription, no scare tactics, no surprises.
- You can read every line. It's one
bashscript — ~670 lines, more than half of which are its three-language strings; the logic fits on a few screens. Only two operations delete anything, and both are easy to find: the sweep'sfind … -deleteruns solely on the cache paths listed below, anduninstallonly ever moves files to the Trash — it never callsrm. - Dry-run first.
sheersweep --dry-runprints how much each item would free and deletes nothing. Run it, read it, then decide. - 🔴 Never-touch list — no line in the script can reach these: Photos / Documents / Desktop / Movies / Music, Clip Studio (CELSYS), app Containers & Application Support (except already-uninstalled Adobe leftovers), Dropbox / cloud-sync folders, screen recordings, Mail / Messages / Keychains, any git repo, any Obsidian vault.
- Only regenerable junk. Everything it clears is a cache, a log, or temp that the OS and your apps recreate on next use.
- For every account under
/Users(current and future):Library/Caches,Library/Logs,~/.cache,~/.npm, XcodeDerivedData/DeviceSupport, CoreSimulator caches, Cargo/Gradle caches, and leftover Adobe caches/support. - System-wide, once:
/Library/Caches,/.adobeTemp,brew cleanup. - Releases local APFS (Time Machine) snapshots — the step most cleaners skip and most users never hear about: deleting files won't return the space if a snapshot still pins it. sheersweep frees it and tells you.
It sweeps all accounts in one pass — handy on a shared or family Mac where every other tool only cleans the user running it.
A second, deliberate verb — for when you actually want an app gone: the app and every trace it left behind, across every account.
sheersweep uninstall # pick from a numbered list of your apps
sheersweep uninstall Discord # …or name it directly
sheersweep uninstall Discord --dry-run # preview only — moves nothingIt's held to the same trust rules as the sweep:
- Matched by bundle id, never a fuzzy name. It reads the app's identifier and finds its files — not everything that happens to share a word.
- Preview first, typed confirmation. It lists the whole footprint grouped by account, with sizes and a grand total, then waits for you to type the app's name.
- Reversible — it moves to the Trash, never
rm. Every uninstall writes a small receipt, sosheersweep restoreputs the entire last removal back — across every account — in one command. That's the real undo arm-based uninstaller can't give you. Emptying the Trash is what finally reclaims the space. - Refuses only what truly can't go. Apps on the sealed, read-only system volume
(
/System/*) and the firmlinked Safari are off limits — not evenrootcan remove them, and deleting them wouldn't free space. But removable Apple apps in/Applications(iMovie, GarageBand, the iWork suite, Xcode…) are fair game.
Apps you removed long ago often leave a background item behind — a
LaunchAgent or LaunchDaemon that still tries to run at login. leftovers
finds them across every account:
sheersweep leftovers # find orphaned startup items (preview + confirm)
sheersweep leftovers --dry-run # preview onlyThe point isn't finding more — it's being honest about what's actually junk:
- 🧟 Dead — the program it launches no longer exists (e.g. an EA Origin helper whose binary is gone). Safe to remove.
⚠️ Likely orphan — it references an app that's now missing (e.g. a discontinued app's self-remover). Shown for review; removed only if you opt in.- ✅ Kept — anything whose program still exists is left alone and counted. A working updater that a still-installed app shares (say, the Google updater that Google Drive needs) is never mistaken for junk — the trap dumb cleaners spring to scare you into deleting something load-bearing.
Chosen items move to the Trash and are logged, so sheersweep restore undoes a
leftovers sweep too. The system list catches up after the next login/restart.
git clone https://github.com/CVERInc/sheersweep.git
cd sheersweep
./sheersweep --dry-run # preview — deletes nothing (recommended first run)
./sheersweep # real run (prompts once for sudo — needed to sweep all accounts)
./sheersweep uninstall # pick an app to fully remove (preview + confirm + Trash)
./sheersweep leftovers # find orphaned startup items from apps that are gone
./sheersweep restore # undo the last uninstall/leftovers — put it all back
./sheersweep --version
./sheersweep --helpInstalled via Homebrew? Drop the ./ — sheersweep, sudo sheersweep uninstall, etc.
Prefer a double-click? Copy it to your Desktop and rename to sheersweep.command,
or symlink onto your PATH:
ln -s "$PWD/sheersweep" /usr/local/bin/sheersweepSweeping every account needs admin rights, so sheersweep re-runs itself with
sudo (one password prompt). --version / --help never need it.
The default sweep clears only safe, regenerable junk. It will never grow "aggressive" or "deep" modes that rummage through app data hoping to find more to delete — that's exactly where cleaners delete something you wanted.
Removing an app is deleting real data, so it's not folded into the sweep. It's a separate verb you invoke on purpose, one app at a time, that previews everything and moves it to the Trash so the call is reversible. A narrow, honest sweep and an explicit, recoverable uninstall — never a broad, scary "clean everything" button.
The interface speaks English (en-US), 日本語 (ja-JP), and 繁體中文 (zh-TW), auto-detected from your system locale (Traditional Chinese only — Simplified falls back to English). Force one with:
SHEERSWEEP_LANG=ja-JP ./sheersweep --dry-runmacOS only. sheersweep is built for macOS and nothing else — it relies on
tmutil (local APFS snapshots), the APFS data volume, the standard /Users home
layout, and each account's ~/.Trash. It is pure bash + the system tools that
ship with macOS, so there is nothing to install.
Run on a non-macOS host, the disk-touching modes (sweep / uninstall / restore)
refuse to run with a clear message rather than misbehave against a different
filesystem layout; only --version and --help work everywhere. The snapshot
step also degrades cleanly if tmutil is somehow absent.
MIT © CVER Inc. — making delightful digital tools since 2011.