For Claude Code, Codex, Cursor, OpenCode and Orca

Bring order to agent clutter.

Devbroom finds what your coding agents leave behind on your Mac and sorts every piece by its evidence. Unless you turn on Automatic upkeep, nothing changes until you confirm.

macOS 13.3 or laterScanning only readsNo account, no telemetry

A view of the app: 9.1 GB ready to clean. Press Clean and the Ready items go to the Trash; Put back returns all of them.

The problem

Agents do the work. They don't clean up after it.

Every parallel task is a new worktree, every session a new scratch folder, every build a new node_modules. When the work is done most of it stays, and nobody can tell which of it is still in use.

Ordinary cleaners don't know agents: they look at a folder and delete it. They can't say “a Claude Code session is running in this folder”.

35 GB+Cleanable data we found on a single developer's Mac
9 GBOne agent's scratch folder
5Agents it knows, each with its own rules
How it works

Scan. See the evidence. Confirm.

Three steps, no surprises. Scanning doesn't change a single file; you confirm the cleanup.

It reads your projects and your agents' own folders. Everything it finds becomes a bubble, as big as the space it takes. Scanning changes nothing on disk.

Each bubble gets its verdict and joins its pile: Ready, Review, Blocked or Unknown. The reason is always beside it: which agent it belongs to, whether it's in use, whether it holds unsaved work.

When you press Clean, every item is checked again and what you picked goes to the Trash; Ready items are selected from the start. Blocked and Unknown stay where they are, and anything sent to the Trash can be put back from History.

Four verdicts

Every item has a verdict, every verdict a reason.

Color is never the only sign: each verdict has its own pattern, its own mark and its own rule. Blocked and Unknown items can't be selected, ever.

Ready

Every check passed.

Selected by default · goes to the Trash
~/projects/shop/web/node_modules
  • There's a package.json beside it; the name alone isn't enough.
  • No agent session is running in this folder or above it.
  • No process runs from here and no file is held open.
  • 794 MB shared with other places wasn't counted.

Review

Worth a look first.

Not cleaned unless you choose “Include anyway”
~/projects/api/.claude/worktrees/billing
  • There's an ignored .env file: git worktree remove deletes it without asking.
  • A clean git status doesn't prove there's nothing of value inside.

Blocked

In use or holding work.

Can't be selected
~/projects/shop/release-1.2
  • A Claude Code session is running in the parent folder ~/projects/shop.
  • There are uncommitted changes. git won't remove them without --force; Devbroom never uses --force.

Unknown

Not enough evidence.

Can't be selected · never counted as Ready
~/Developer/tmp-7c2e
  • It couldn't tell which agent this belongs to.
  • Part of it couldn't be read; its size was only partly measured.
Rules

Built not to delete the wrong thing.

The real fear isn't wasted space, it's losing work. That's what Devbroom's rules are for, and none of them is a setting.

Scanning only reads

Scanning doesn't change a single file. Unless you turn on Automatic upkeep, nothing is touched that you haven't seen in the preview and confirmed.

--force

Never --force

A worktree with uncommitted changes is Blocked. git won't remove it without --force, and Devbroom never uses --force.

Trash first

The Trash is the default. Deleting permanently is a separate choice, and you hold the button to confirm it.

Hands off running work

If an agent is working in that folder, a process runs from it or a file in it is held open, the item is Blocked.

A name isn't enough

node_modules is Ready only with a package.json beside it, target only with Cargo's marker inside. Without the marker it stays Review.

Real size

Space shared through hard links and APFS clones isn't counted. The number you see is what deleting frees.

The agent's own way

Agent databases and credentials are never touched. When an agent has its own cleanup command, that's the way it's done or shown to you: claude purge for Claude Code, for example.

Doesn't stop running agents

The processes of a running agent session are never touched. It asks processes agents left behind to quit only when you say so, and only after checking again.

Everything on your Mac

No account, no telemetry; nothing about you is sent. The app only checks for updates; if you enter a Pro license it activates it once and quietly checks it again about once a month. From session logs it takes only token counts and model names; message text is never stored.

Agents

Knows your agents. Knows what they leave where.

Worktrees are found even when they live outside your project folders. Moved repositories, deleted folders and orphaned worktrees are each recognized for what they are.

Claude Code

Session logs, checkpoints, scratch folders and worktrees.

~/.claude/projects~/.claude/file-history+10 more places
Details
Codex

Sessions, archived sessions and Codex worktrees.

~/.codex/sessions~/.codex/archived_sessions+9 more places
Details
Cursor

Agent worktrees, transcripts and caches.

~/.cursor/worktrees~/.cursor/projects+5 more places
Details
OpenCode

Session database (read only), snapshots and worktrees.

~/.local/share/opencodeopencode.db+6 more places
Details
Orca

Git worktrees, each assessed on its own.

~/orca/workspaces.orca-worktree-trash+1 more places
Details
node_modules.next.turbotarget.venv__pycache__DerivedDatadistbuildvendornode_modules.next.turbotarget.venv__pycache__DerivedDatadistbuildvendornode_modules.next.turbotarget.venv__pycache__DerivedDatadistbuildvendornode_modules.next.turbotarget.venv__pycache__DerivedDatadistbuildvendor
npmYarnBunpnpm storepipuvHomebrewCocoaPodsSimulatorGradleCargo registryPlaywrightHugging FacenpmYarnBunpnpm storepipuvHomebrewCocoaPodsSimulatorGradleCargo registryPlaywrightHugging FacenpmYarnBunpnpm storepipuvHomebrewCocoaPodsSimulatorGradleCargo registryPlaywrightHugging FacenpmYarnBunpnpm storepipuvHomebrewCocoaPodsSimulatorGradleCargo registryPlaywrightHugging Face
Outside the app too

In the terminal and the menu bar.

The devbroom command runs the same scan and prints the same reasons; devbroom clean shows what's Ready first, then moves it to the Trash. In the menu bar you see it all at a glance without opening the app.

Every option: command line docs
Scanning only readsIt deletes, moves and changes nothing. Cleaning is a separate command.
Every reason--details opens the checks behind every verdict.
For scripts--json gives the whole report as JSON.
DevbroomScanned at 12:30
9.1GB

ready to clean · 26 items

Clean 9.1 GB…
2 agents running
Open Devbroom⌘O
Scan again⌘R
Quit Devbroom⌘Q
Always a glance awayThe same four piles, made small: one number, one button. When more than 100 MB is ready to clean, the size shows next to the icon. While a scan runs its progress shows here and in the Dock; close the window and Devbroom leaves the Dock and stays in the menu bar.
Integrations

Your agent can ask too. You still decide.

Your agents, Shortcuts and scripts can reach what Devbroom knows. None of them cleans on its own: agents' requests come to you in the app, and devbroom clean shows first and asks.

Setup: integrations docs
mcp

MCP for your agents

With devbroom mcp, Claude Code, Codex or Cursor can read the last scan, ask why a folder is Ready or Blocked, and ask you to clean. The request comes to you in the app; nothing is cleaned until you confirm, and every item is checked again after you do.

Shortcuts and Raycast

devbroom://scan, devbroom://clean and devbroom://open only open Devbroom; the cleanup waits for you.

The last scan, in one command

devbroom status --json gives the app's last scan; it doesn't scan again.

Analytics and sessions

How much agent data grew in the last 30 days, what grows fastest, what was cleaned this year, your sessions' token counts and estimated cost. In the Sessions tab you can search conversations and archive old Claude Code conversations without touching their memory. Comes with Pro.

Automatic upkeep

Devbroom can scan by itself daily or weekly; automatic scans only read. Set a rule to “Do it by itself” and it moves only Ready items, and only to the Trash. There are no rules until you add one. Comes with Pro.

FAQ

Questions you might have.

The app shows every item's verdict with its reasons right beside it. More in the docs.

Not unless you turn that on. Scanning only reads. Cleaning happens for the items you confirm, and every item is checked again right before it's removed; if anything changed since the scan, it's left alone.

If you set a rule to “Do it by itself” in Settings › Automatic upkeep, Devbroom moves only Ready items, and only to the Trash, after automatic scans. Emptying the Trash is a separate setting and only deletes what Devbroom moved there. Both are off at first.

The Trash is the default, and you can put back every item that went there one by one from History. Worktrees are removed with git: their HEAD is saved under refs/devbroom/removed and the branch stays. Deleting permanently is a separate choice, and you hold the button to confirm it.

Claude Code, Codex, Cursor, OpenCode and Orca. It also shows the data of Gemini CLI, Aider, Cline, Windsurf, Copilot CLI, Amp and Kiro, but doesn't clean it yet. Beyond agents it finds developer caches such as npm, pnpm, Cargo and Xcode; you can turn those off in Settings.

It sends nothing about you. It checks for updates: once, 8 seconds after launch, and when you press “Check now”, it reads the latest.json file we publish. If you enter a Pro license it activates it once and quietly checks it again about once a month; only the license key and your Mac's name are sent for that. Without a license, the update check is the only request. There's no account and no telemetry. The command lines of running processes are read in memory only and written nowhere.

No. It shows which agents are running and which processes were left behind. It never touches the processes of a running session, and that session's folder stays Blocked. It asks processes agents left behind to quit only when you say so, and only after checking again.

Macs with Apple silicon, on macOS 13.3 or later. Windows support is planned.

Scanning, verdicts, cleaning, putting back from History, the devbroom command and MCP are free and will stay free. Automatic upkeep, Analytics and the session tools (usage and cost, search, archive) are in Pro.

Pro is a one-time $29 for 2 Macs; the license never expires and covers every version released for a year. After that, new versions are an optional $15 a year. For the first 14 days all of Pro is on, with no card and no account. Details on the Pricing page.

Devbroom app icon

Let your agents work. Devbroom cleans up after them.

Scanning only reads, every verdict comes with its reason, and everything sent to the Trash can be put back.

macOS 13.3 or laterNo account, no telemetry