kondo alternatives: when a prompt is not enough

kondo is the broadest interactive project cleaner there is. What to use when you want the cleanup unattended, verified against lockfiles, or reversible.

Updated 2026-09-20

Start by being fair to kondo: it is the broadest tool of its kind, it is older and more widely packaged than anything below (winget, Homebrew, MacPorts, the Arch repositories, plus a GUI in kondo-ui), and for "walk my disk, show me every heavy project directory, delete what I confirm" it is genuinely good. kondo --older 30d covers the common case in one line.

Its README describes the design honestly: "essentially rm -rf with a prompt". You are the safety check. That is a reasonable contract, and every reason to want an alternative is some version of wanting a different one.

"I want it to run without me"

A prompt only protects a deletion somebody is watching. Put kondo in a scheduled task and you have removed the one safety mechanism it has, which its authors would be the first to tell you not to do.

dev-prune is built for exactly this case, so the checks a human would do at the prompt are done by the tool instead. It reads git log rather than file timestamps, so a repository you committed to this morning is not a candidate however old its files look. It runs the package manager's own verification, such as npm ci --dry-run or uv lock --locked or cargo metadata --locked, and a non-zero exit keeps the directory. And it schedules itself: devp setup registers the pass with Task Scheduler, launchd or systemd user timers.

"I deleted something a lockfile never recorded"

Age-based selection has one blind spot, and it is the expensive one: a directory holding packages that were installed but never written to the lockfile is indistinguishable from a clean one until it is gone. dev-prune treats the lockfile check as the deletion criterion rather than a warning, and it refuses rather than guessing. In a logged stress pass, the verification and the undo log round-tripped half a gigabyte of real installs: pruned, then restored with devp restore --last-run, including a uv environment rebuilt on the recorded Python version.

"My problem is one big Rust repository"

Neither kondo nor dev-prune is the best answer there. cargo sweep --time 30 removes stale artefacts from target/ while keeping the current build, which is more surgical than deleting the directory whole. Why target/ gets so big has the detail.

"I just want to look and decide"

Then you do not want an alternative: that is kondo's home ground, and for the Node-only version of it, npkill is also excellent. Interactive tools are the right answer whenever you are present. The line to hold is that a tool whose safety is a prompt should never run where nobody sees the prompt.

Trying it takes one dry run

curl -fsSL https://devprune.vkrishna04.me/install.sh | sh
          devp init ~/Code
          devp run --dry-run

Nothing is deleted; every candidate is listed with the lockfile that proves it rebuildable. The full comparison, including rimraf and a cron job, is at dev-prune vs the alternatives.

Common questions

What is the best alternative to kondo?

For unattended, recurring cleanup: dev-prune, which verifies each directory against its lockfile before deleting, gates on git activity rather than file age, records an undo log, and schedules itself. For supervised Node-only sweeps: npkill. For surgical Rust target/ cleanup: cargo-sweep. If you are present and deciding case by case, kondo itself remains the right tool.

Is kondo safe to use?

Yes, in the way its own README states: it is essentially rm -rf with a prompt, so you are the check. That is fine when you are watching. It is the wrong contract for a scheduled or scripted run, where nothing stands between an age heuristic and a deletion.

Can dev-prune replace kondo completely?

No. kondo covers interactive, decide-per-row cleanup across more project types than dev-prune prunes, and it has a GUI. dev-prune covers the unattended case kondo is explicitly not built for. Many machines reasonably have both installed.