Safe, local-first cleanup for macOS with review-first scanning,
Safe Mode, and Trash-only removal.
CleanMac is a native SwiftUI utility that scans selected macOS locations, explains every cleanup candidate, and moves only confirmed items to Trash. Everything runs locally: the code contains no scan-result uploads, analytics, or cloud accounts.
Important
The current public build is ad-hoc signed and is not notarized by Apple. macOS Gatekeeper may block the downloaded app. You can build CleanMac from source for development; do not disable system security to run an unsigned file.
| Scan area selection | Multi-select application removal |
|---|---|
![]() |
![]() |
- Safe scanning. User and browser caches, logs, temporary files, Xcode Derived Data, Node/SwiftPM caches, Downloads, installers, and Trash.
- Explainable review. Categories, sizes, risk levels, recommendation reasons, exact paths, and locations that could not be read.
- Safe Mode. Enabled by default and prevents selection of items that require manual review.
- Trash-only cleanup. Accepted paths are validated again before execution; permanent deletion is not used.
- Session restore. Items moved during the current session can be restored when their original path is available.
- Application removal. Finds third-party apps in
/Applicationsand~/Applications, supports multi-selection, and offers optional exact bundle-ID leftovers. - Menu bar and scheduled scans. Disk status, the latest scan summary, safe scan scheduling, and local notifications while CleanMac is running.
- Permission visibility. Live Full Disk Access and Finder Automation status without automatic permission prompts.
- English and Russian UI. Switch language and light/dark appearance directly inside the app.
- Scanning is read-only.
- Every candidate belongs to a known category and an allowlisted root path.
- Cleanup requires explicit selection and a separate confirmation.
- Paths are validated again immediately before execution.
- Accepted files are moved to Trash instead of being permanently deleted.
- During application removal, the
.appbundle is moved first. Its leftovers remain untouched if that step fails. - CleanMac does not escalate privileges or install a system helper.
Download the latest archive from GitHub Releases. Each ZIP is published with a .sha256 file:
shasum -a 256 CleanMac-*.zipCompare the resulting hash with the first value in the attached .sha256 file. Then extract the archive and move CleanMac.app to /Applications.
Current prebuilt release limitations:
- macOS 14 or later;
- Apple Silicon (
arm64); - ad-hoc signed and not notarized by Apple.
CleanMac requests access only after a user action:
- Files and Folders — for selected user locations;
- Full Disk Access — optional, for deeper checks of protected metadata;
- Finder Automation — optional, only for revealing a selected item in Finder.
Scanning and cleanup do not require Finder Automation. Permission status is available on the Permissions screen and can be changed in macOS System Settings.
Requires macOS 14+ and Xcode 26+.
git clone https://github.com/Dezoff-max/CleanMac.git
cd CleanMac
./script/build_and_run.sh --verifyRun the core test suite:
swift test --package-path CleanMacCoreCreate a local Release ZIP and SHA-256 file:
./script/package_release.shDeveloper ID signing and notarization are documented in docs/signing-notarization.md.
CleanMac/ SwiftUI macOS application
CleanMacCore/ Testable scanning and cleanup core
script/ Build, launch, and release packaging
docs/ Documentation and screenshots
.github/workflows/ CI and GitHub Release automation
- Create a focused branch from
main. - Preserve the safety flow: scan → review → confirm → Trash.
- Add tests for changes to scanning, path validation, or removal behavior.
- Before opening a pull request, run
swift test --package-path CleanMacCoreand./script/build_and_run.sh --verify.
Bug reports and feature ideas are welcome in GitHub Issues.
CleanMac is available under the MIT License.


