Free & open-source Mac app
Find what your AI agents left behind.
Claude Code, Codex and friends leave a worktree, a node_modules and a tmp folder behind every task. Crumbs finds them and tells you, for each one, whether it is safe to throw away, and why.
v0.1.2 · 1.4 MB · macOS 14+ · Apple silicon & Intel · Notarized · MIT

The first scan on my own Mac found 312 GB. 212 GB of it was safe to clear, including 58 forgotten Claude Code worktrees at about 3 GB each.
Deleting is easy. Knowing what to delete is the product.
Every crumb gets a verdict, and every verdict shows its evidence. The worst reason wins.
Throw it away
- Clean checkout, already merged or pushed
- Untouched for 21 days
- Regenerable: pnpm install brings it back
Look first
- Holds an .env.local that differs from the main checkout
- Orphaned worktree: git can't vouch for it
- Changed 2 days ago; this kind waits 3
Hands off
- In use right now by node (48213)
- 2 uncommitted files would be lost
- Commits that exist only in this detached checkout
What it checks before calling anything safe
- Running processes
- A shell, dev server or agent working inside the folder keeps it.
- Uncommitted work
- Modified and untracked files in a worktree keep it.
- Orphaned commits
- A detached checkout with commits no branch or remote has keeps it.
- Recent changes
- Anything touched in the last 24 hours keeps it.
- Secrets
- Untracked .env and key files that differ from the main checkout get flagged.
- Idle time
- Each kind waits its own number of days before it counts as safe.
And if it is still wrong
Trash, never delete
Everything goes to the Trash, so you can put it back.
Re-checked at the last second
Right before trashing, Crumbs checks again and skips anything that changed.
Git stays honest
After a worktree goes, Crumbs runs git worktree prune. Branches stay in the repo.
Never in the way
It never takes git locks, so it cannot collide with an agent mid-commit.
Your patience, your numbers
Clear agent worktrees after 3 days but keep node_modules for 60? Set how long each kind waits, or switch a kind off. The list re-judges instantly, no rescan.
Some things are not negotiable: anything in use, holding uncommitted work, or changed in the last day is always kept.

What it finds
Build and scratch folders only count when git says they are ignored, so a committed build/ is never touched. Rules are small JSON files: adding a new kind is a data-only pull request.
Install
brew install --cask nilveryboring/tap/crumbsOr download the zip from GitHub Releases, unzip it and drag Crumbs to Applications. It is signed and notarized by Apple.
No account, no network requests, no analytics. Everything stays on your Mac.
Also a CLI
The same engine, read-only, with JSON output for scripts and agents.
swift run -c release crumbs scan
crumbs scan --days node-modules=60 --json