Redoing CleanMyMac: First, Have an Agent Dedicated to Sabotage
Movez built the open-source Cleanly in one afternoon with Opus 5.5, using one codebase for Mac and Windows, and the first scan cleared 14.6 GB. More noteworthy is the process: first draw 9 UI options, run 8 agents in parallel, and set up a separate security agent to attack the deletion logic, catching the DOCUME~1 short-name path and an icon loader path that leaked Windows password hashes.
Movez posted an open-source cleanup tool called Cleanly on X: in one afternoon, using Opus 5.5 in Claude Code, he built macOS and Windows versions, the first scan cleared 14.6 GB, and zero lines of code were handwritten. The project is at https://getcleanly.vercel.app, and the source code is at https://github.com/0xCodez/cleanly. A user posted a screenshot of it running in the replies.
Demo video posted by Movez:
Let’s fill in the context first. Movez calls it a reverse-engineered redo of CCleaner and CleanMyMac. In the public prompt, the CleanMyMac screenshots are mainly used as a visual quality bar: match the level of polish, but do not copy the brand, icons, or copy. This is consistent with the definition of reverse engineering in the long post: understand how something behaves, to the point where you can rebuild it yourself; the clean-room boundary is observing behavior, reading public specifications, writing a spec, and then having another context implement only from the spec. In the long post, Movez quotes Amjad Masad: AI-driven reverse engineering and decompilation are advancing quickly, and software will increasingly look like de facto open source. That claim is debatable, but Cleanly at least provides a checkable sample.
Several details in the process are worth noting. The first step was to have Opus draw UI concepts in an empty folder, rather than writing code directly. The main post says there were 9 concepts; the directions listed in the GitHub README include Aurora, Graphite, Orbit, Prism, Fusion, Elements, Liquid, Assistant, and others. The final choice was Liquid Aura, which puts Aurora’s layout into Liquid’s glassy texture. After choosing, the model was asked to rebuild the fonts, icons, and glass buttons until it approached Apple’s level of polish. The output of this step was a set of options and an iteration record; only after that did work move into the app.
The second step was to give the model a video of drifting smoke gradients and have it turn that into a real-time WebGL shader as the 'cosmic wind' behind the scan results. The GitHub README also mentions a Mist background and glass bubbles. The performance rules are very specific: render the shader at 0.3 to 0.5 times resolution, calculate based on real frame time, do not stack backdrop-filter on the animated canvas, and respect prefers-reduced-motion. These rules do not read like marketing copy; they read like notes left by someone who has stepped on the pitfalls.
The third step is the engineering stack. Cleanly uses Electron + React + TypeScript + Vite, with one codebase running on macOS and Windows. Opus split the build across 8 parallel agents: the scanner, disk map, AI assistant, prompts and feedback page, installer, and so on each managed their own files. Shared types were first written in a shared/types.ts, and the UI and main process compiled against the same IPC contract. This approach is not new, but when agents write code in parallel, pinning down the interfaces first reduces overwriting each other’s work.
What really makes this case worth discussing is the security agent. Movez says that after the build was complete, he started another agent whose sole task was to attack every code path that deletes, moves to the trash, uninstalls, or toggles a switch. It caught two problems: a Windows 8.3 short-name path DOCUME~1 could send the entire Documents folder to the trash; and an icon loader could leak Windows password hashes to a remote machine. Cleanly’s public security rules are also very detailed: do not trust paths passed from the UI, and re-derive cleanup locations by category in the main process; before deleting, resolve the full path with realpath, then check the disk root, user home directory, system directory, Program Files, Recycle Bin, System Volume Information, UNC network paths, alternate data streams, trailing dots and spaces, and 8.3 short names; neither traversal nor deletion follows symbolic links or junctions; skip locked files and count them; do not delete temporary files modified within the last 24 hours.
Among these rules, the deletion policy best explains the product’s stance. Caches, temporary files, logs, and update leftovers can be permanently deleted because the app will rebuild them; the user’s own large files, duplicate files, old downloads, and app installers all go to the system trash. The AI assistant only sees file names, paths, and sizes, not file contents; the API key is encrypted with Electron safeStorage. Cleanly’s page also says that its protection check only reads the existing Defender, firewall, Gatekeeper, XProtect, and SIP status on the system and does not replace antivirus software. It is free, has no ads, no trial, and relies on donations. These claims can be checked one by one on the page.
A user posted a screenshot of it running in the replies:
There are also imperfect parts. v0.1.1 is not yet code-signed or notarized, so the first run on Windows may trigger SmartScreen, and on Mac you need to run xattr -cr /Applications/Cleanly.app once. A user asked in the replies for an Intel Mac version, and the page already provides an Intel dmg. The main post mentions that during the first real test, the startup-item toggle reported 'Windows did not allow the change'; Opus found that PowerShell lost the exit code after the admin prompt, changed it to check the registry, and it only worked in the next build. This detail is more interesting than 'zero code': models make mistakes, and the process needs verification.
If you treat Cleanly as an isolated demo, you will miss the methodology behind it. In the long post, Movez introduces REA, an open-source tool that connects Hopper, Ghidra, and IDA to agents, using MCP to turn disassembly results into calls the model can ask about. The article also uses WordCraft as an example of clean-room reconstruction: observe the original software’s behavior, read public file-format specifications, rewrite it in Rust, and do not read the other side’s source code. Elastic Security Labs tested Claude Opus on 20 tasks using the Tigress obfuscator, and one very practical conclusion was that failed attempts cost about twice as much as successful attempts, so set a budget per function and do not let the model retry indefinitely. Another point is to first delete junk from decompilation output; a tool called Caveman can remove about 75% of padding content, letting the model focus on the real logic.
Cleanly does not reach the complexity of 'rewriting Photoshop,' but its process brings several things together: design before coding, define interfaces before parallelizing, have a security agent attack its own deletion logic first, and then do read-only verification on real machines. The 14.6 GB is the result; the two paths caught by the security agent are the part of this project worth copying. Among the first things a deletion-type tool should write, the deny list should come before the cleanup list. This judgment does not require a model, but it is very suitable for a model to execute and verify.
Download: Mac Apple Silicon, Intel, and Windows installer and portable versions are all in GitHub Releases. Watch for system warnings on the first run. The project is free and open source; whether to trust it is up to the user.
发布时间: 2026-10-30 11:40