Security
The first thing built in Pruneo wasn't the clean button. It was the safety engine. This is how it decides what can be deleted, and how you undo it.
Last updated:
Three levels, always visible
Every item Pruneo finds gets a label before you do anything:
- Safe (green): it rebuilds itself, like caches. "Clean safe items" only removes these.
- Check (yellow): it may contain something of yours. Pruneo asks you to confirm a specific statement before deleting.
- Locked: it shows you why, and won't let you delete it.
Scheduled cleanups, if you turn them on, only clean green items.
Quarantine, for as long as you choose
Pruneo doesn't delete right away. Everything you clean goes to a quarantine first. By default it lasts 48 hours, and in Settings you can choose from 24 hours to 30 days. Until then you can restore it with one click in the app, or in the terminal with pruneo quarantine restore. After that, it is deleted automatically.
While it's in quarantine it still takes up disk space: the space is freed when the period ends, or sooner if you free it from the quarantine.
The only exception is emptying the Trash: that is permanent, so it asks for its own confirmation.
What an AI agent suggests, or an agent connected through MCP does, goes through the same rules and the same quarantine.
What it never touches
These rules are written in the code. They can't be turned off, not in the app and not in the terminal:
- System files and the Spotlight index
- SSH and GPG keys, credentials and certificates
- The macOS Keychain
- iCloud Drive, Mail and Messages
- The Photos library
.gitfolders and.envfiles- The root of git projects
- Docker's disk image
Checks right before cleaning
Minutes can pass between Pruneo's scan and your cleanup. So before moving each item, it checks it again:
- What's in use isn't touched. Pruneo checks which files and folders each program has open. If an app is using a cache, that item moves to “Review” with the reason, for example “In use by Brave”. If it starts being used after the scan, it isn't touched either.
- It has to be the same file. Each item records its identity when scanned. If someone replaced or changed it before cleaning, it isn't touched, and Pruneo tells you why.
- It never follows links. If a folder was swapped for a link to somewhere else, like
/System, it's blocked. When moving, it never overwrites anything that already exists. - iCloud files that aren't downloaded. They're never moved or deleted, because deleting them would also delete them from iCloud. Duplicates doesn't download them to compare them either.
- Your projects. What git tracks is never offered for deletion, and a project's age comes from what you actually touched, not from when its dependencies were installed.
The app, the terminal and the MCP server show you the reason when something wasn't touched.
One single deletion point
All deleting goes through one single point in the code, which applies these rules before moving anything. The app, the pruneo command and scheduled cleanups all use the same path: none of them can skip it.
When a tool has its own official cleanup command, Pruneo uses that command instead of deleting its folders by hand.
Look before you clean
Before cleaning you see every item, its size and why it's safe to remove. In the terminal, pruneo clean without --yes deletes nothing: it shows you what it would do. And if an app is open, Pruneo asks you to quit it before cleaning its caches.
More questions? See the FAQ.
Signed, notarized and checked by antivirus
Pruneo is signed with our Apple Developer ID and notarized by Apple, so macOS checks it every time you open it.
We also scan each download with VirusTotal, which runs it through dozens of antivirus engines. Pruneo 1.5.2 has 0 detections: see the VirusTotal report.