- Homebrew-aware uninstall — pass a cask name and soap runs
brew uninstall --zapfor a clean removal - Deep file scan — discovers leftover preferences, caches, app support folders, containers, launch agents, logs, crash reports, and DMG files by bundle identifier
- Interactive selection — presents a checkbox list of found files so you pick exactly what goes to Trash
- Non-interactive mode —
--yesflag skips all prompts for scripting and automation;--yes-dangerouslyalso auto-confirmssudo rmfor root-owned files - Path mode — pass
/Applications/Slack.appdirectly to clean by path without a Homebrew step - Zap strategy — merges Homebrew's own zap file list with the bundle-id scan for thorough coverage
npm install -g @kud/soap-cli$ soap --help
soap 🧼 the app cleaner
Usage:
soap <cask-name> | <path-to-app>
Examples:
soap spotify Uninstall Spotify (cask) + all its leftover files
soap android-studio Uninstall Android Studio (cask)
soap /Applications/Slack.app
Uninstall Slack by path (no brew step)
soap spotify --yes Non-interactive: move all files + run brew uninstall
What it removes:
· The .app bundle (via brew uninstall --zap or manual selection)
· Preferences ~/Library/Preferences/com.<vendor>.<app>.plist
· Caches ~/Library/Caches/com.<vendor>.<app>
· App support ~/Library/Application Support/<App>
· Containers ~/Library/Containers/com.<vendor>.<app>
· Launch agents, logs, crash reports, DMG files, and more
Flags:
--yes, -y Skip all prompts (auto-select all files, auto-confirm brew uninstall)
--yes-dangerously Like --yes, but also auto-confirms sudo rm for root-owned files
Environment:
SOAP_DEBUG=1 Enable verbose shell outputgit clone https://github.com/kud/soap-cli.git
cd soap-cli
npm install
npm run dev # run from source via tsx
npm run build # compile to dist/
npm run typecheck # type-check without emitting
npm test # vitest unit tests📚 Full documentation → soap-cli/docs