Wipecraft

What your AI agents left on your Mac

Claude Code, Codex, Cursor and Claude Desktop leave session histories, worktrees, VM images and caches on your disk. Wipecraft shows each one with its size and what it is, leaves your work in progress alone, and gives you 7 days to undo anything that does not rebuild itself.

Download for macOSScanning is free · macOS 14 or later

Your work stays where it is

Rows that hold work in progress are locked. You can see them, but you cannot select them.

  • While Claude Code or Codex runs: the sessions it has open, anything it changed in the last 24 hours, and the worktree it works in.
  • Cursor's caches while Cursor is open.
  • A worktree with uncommitted changes, one that changed in the last 7 days, or one whose commits are not on the main branch or a remote.
  • A booted simulator.
  • Claude Desktop's live sandbox image.

Nothing comes selected. "Select recommended" picks only items in "Safe to remove" and "Comes back", and never an item in "Your call".

Scanning only reads. A test compares every file under a test home before and after a full scan, and again after the command-line scan and status.

7 days to change your mind

Files that no app rebuilds go to Quarantine on the same disk when you remove them. Each row shows "days left" and a Restore button. After 7 days, Quarantine empties itself the next time Wipecraft opens or runs its daily check. If you need the space today, "Empty Now" frees it after a second confirmation.

Three kinds of action skip Quarantine.

  • Caches, logs and temporary files that their app rebuilds on its own are removed directly. They cannot be restored, and the row or card says so before you confirm. Wipecraft does this only for folders and files that it knows an app recreates. Anything without a known rebuilder goes to Quarantine.
  • Worktrees are removed with git; their branch stays in the repository.
  • A few tool commands are marked "Irreversible", and Wipecraft names them and asks a second time.

Some caches stay in Quarantine because their tool does not get them back on its own: JetBrains and Android Studio caches (they also hold the IDE's Local History), Maven and Go modules, and tool data in Library/Caches such as Poetry environments, Playwright and Cypress browsers and llama.cpp models.

Session histories are not deleted. They move to a compressed Archive that you can restore.

It tells you when something grows

Monitoring is off until you turn it on. When it is on, a menu bar icon shows it, and Wipecraft checks once a day at the hour you choose. It notifies you when:

  • one item grows by 2 GB or more in 7 days,
  • less than 10% of the disk is free,
  • a worktree or simulator of 1 GB or more has not been touched for 7 days,
  • your last Time Machine backup is more than 7 days old.

Quit the app and everything stops.

Rules you set, and filters

Cleanup rules are optional. There are none until you add one in Settings > Automatic cleanup.

  • A rule names the sources, how many days an item must have gone unused (7 to 365) and a minimum size.
  • After the daily check, items that match a rule move to Quarantine or to the Archive, and a notification says how many.
  • Rules skip locked rows. They never run a command, never remove a worktree and never do anything that cannot be undone. Caches that are removed directly are not part of scheduled cleanup; rules take only items that go to Quarantine or the Archive.
  • Rules run only while monitoring is on.
  • Without a license, a rule moves nothing. If a rule would have moved something, Wipecraft tells you once a day that cleanup did not run.

Every list of findings can be filtered by how long an item has gone untouched, by source and by safety level. A filter hides rows and takes them out of the selection.

Never touches unpushed work

A worktree whose git repository is still there is offered for removal only when its commits exist somewhere else too. The one exception is a worktree whose repository is gone; see the last point.

  • Its commits must be on the main branch or on a remote branch. If they are not, the row is locked with the reason "Its commits are not on the main branch or a remote yet."
  • Commits made after the last push keep it locked.
  • A squash merge puts new commits on the main branch, so the branch's own commits never appear there. If GitHub lists the branch's pull request as merged, Wipecraft lifts that one lock. It asks through your own gh login, only when gh is installed and signed in, and you can switch it off in Settings > Privacy. Uncommitted changes still lock the worktree.
  • Wipecraft checks again right before it removes a worktree. If the commits are no longer on the main branch or a remote, or the pull request no longer shows as merged, it removes nothing.
  • A worktree whose main repository was moved or deleted cannot be checked by git. Wipecraft offers it only after 30 days without changes (the default), and moves the whole folder to Quarantine, where Restore brings it back.

Keeps your .env when it removes a worktree

git worktree remove deletes the folder, including files git ignores: .env, local databases and editor settings. Wipecraft moves those files out first.

  • Before it removes a worktree, Wipecraft moves its ignored files that are not build output to Quarantine, for 7 days. Build output, such as node_modules and target, is deleted with the worktree.
  • The row says how many files go to Quarantine before you confirm.
  • If git refuses to remove the worktree, Wipecraft puts the files back where they were.
  • Restore recreates the folders those files sat in.
  • These files are never offered on their own. Build output is offered as a separate row, also for a worktree that is locked.

Works from the terminal and inside Claude Code

Command line. Wipecraft includes a wipecraft command inside the app. Settings > General > Command-line tool shows the one line that links it into your PATH.

  • wipecraft scan and wipecraft status list what can be freed, and print versioned JSON with --json. They change nothing.
  • wipecraft clean shows what it would do. Nothing changes until you add --apply.
  • With --apply, wipecraft clean does for each item you name what the app does: caches, logs and temporary files that their app rebuilds are removed directly and cannot be restored (the plan says "Would remove directly"), other files move to Quarantine, session histories go to the Archive, and a finished worktree is removed with git worktree remove after its ignored files that are not build output move to Quarantine. The deletion log records each action. --all-safe picks only items that move to Quarantine. It needs the same license as the app.
  • It refuses locked rows and rows that changed since the scan. It does not run actions marked "Irreversible"; it tells you to open the app.
  • wipecraft quarantine list shows what is in Quarantine, and wipecraft quarantine restore <id> puts an entry back. Neither needs a license.
  • If the app or another terminal is moving files, the command stops with a message that Wipecraft is busy, and moves nothing.
  • It prints completion scripts for zsh, bash and fish.

Claude Code plugin. The plugin adds two commands and two session hooks.

  • /wipecraft:status summarizes wipecraft scan --json. /wipecraft:tidy shows the dry run first and runs --apply only after you say yes in the chat.
  • When a session starts and more than 1 GB can be freed, it adds one line to the session. The line comes from a summary saved at the last refresh, so a session never waits for a scan. Without a summary from the last 24 hours it prints nothing, and it refreshes the summary in the background.
  • When a session ends inside a linked worktree, it prints that worktree's state in one line.
  • Tidying a finished worktree is off by default. It is a switch in Settings > Agents.
  • With the switch on, wipecraft clean runs in the background after a short delay once the session ends, for that session's worktree only. It goes through the same checks as the command, and a worktree that is still locked stays.

Other agents (MCP). wipecraft mcp is a server that Claude Code, Codex, Cursor and other agents can start on your Mac. It talks only over standard input and output; its source uses no network connection and listens on no port.

  • An agent can read the totals, list and explain items, and see what is in Quarantine. These requests change nothing.
  • Cleaning through an agent is off until you turn on "Allow agents to clean through MCP" in Settings > Agents.
  • When it is on, a request shows the plan unless the agent asks to apply. Applying needs a license and skips locked rows. For each id the agent names it does what wipecraft clean --apply does: caches, logs and temporary files that their app rebuilds are removed directly and cannot be restored, other files move to Quarantine, session histories go to the Archive, and a finished worktree is removed with git. The tool description tells the agent which items cannot be restored, so it can say so before it applies. Actions marked "Irreversible", such as removing a Time Machine local snapshot, are still refused.
  • Settings > Agents lists the setup text for Claude Code, Codex and Cursor. Wipecraft shows the text and does not change any agent's settings.

What it finds

Every row says what it is, how big it is and what happens if you remove it. Where something can come back, it also says how.

Claude Code, Codex, worktrees and the developer tools below appear when Developer mode is on. See the FAQ.

AI agents and AI apps

Developer tools

On the author's Mac: Claude Desktop VM bundles 11 GB, simulators 62 GB, old worktrees 9 GB.

System Data

The Storage panel in System Settings shows one number for System Data. Wipecraft starts from the used space of the disk and splits every used byte into four parts: macOS, Apps, Your files and System Data. The parts add up to the used space.

System Data is split again into five buckets. Each one has a colour and a one-sentence explanation.

The trash on a card removes only what is safe: items in Safe to remove and Comes back that are not locked. It never takes an item from Your call, and an item that an app has open stays locked. The card turns over first and says what will happen and whether it can be undone.

Time Machine local snapshots are listed one by one, with their dates, outside the buckets. macOS does not report the size of a local snapshot, so Wipecraft does not guess one. Removing a snapshot is marked "Irreversible" and asks for your administrator password each time.

Some of these folders need Full Disk Access. Without it, your user folders are still scanned, and the overview says which folders could not be counted.

How undo works

Kind of rowWhat Wipecraft doesHow you get it back
Rebuilds on its ownRemoves it directly, without Quarantine. Only for caches, logs and temporary files that their app rebuilds. The row or card says so before you confirm.Nothing to restore. The app recreates it when it needs it. It cannot be undone.
RecoverableMoves files to Quarantine.Restore, within 7 days. Or download or rebuild it again.
Session histories (labelled "Recoverable")Compresses them into an Archive, then removes the originals.Restore the Archive. Archives stay until you restore them.
Worktree (labelled "Recoverable")Moves its ignored files that are not build output (like .env) to Quarantine, then runs git worktree remove. The folder is deleted directly, without Quarantine, together with its build output.The branch stays in the repository. Run git worktree add with the branch to check it out again. Restore brings back the kept files.
IrreversibleRuns a tool's own command. It names the command first and asks you a second time.The confirmation says how to get it again.
LockedNothing.Nothing to get back.

Caches that their tool does not get back on its own are not in the first row. They go to Quarantine: JetBrains and Android Studio caches, Maven and Go modules, and tool data in Library/Caches such as Poetry environments, Playwright and Cypress browsers and llama.cpp models.

The irreversible actions are: removing a Time Machine local snapshot, deleting a simulator runtime, erasing a simulator's contents, removing a Docker image or volume, and removing the Docker build cache.

Wipecraft offers a worktree whose repository is present for removal only when it is clean: no changed tracked files, no untracked files that git doesn't ignore, no changes for 7 days (the default; you can change it in Settings), and its commits on the main branch or a remote. A worktree whose main repository is gone cannot be checked by git. It is offered after 30 days without changes (the default) and goes to Quarantine as a whole folder. Its git-ignored files (build output, dependencies) are also a separate row, which goes to Quarantine. That row can be offered even when the worktree itself is locked, for example for uncommitted changes.

Quarantine moves files on the same disk, so space comes back when it empties. The Quarantine screen shows both numbers: "In quarantine" and "Frees if emptied now".

Every action is written to a local deletion log: when, what, how much, and which kind of action. You can export it as CSV from Settings.

What Wipecraft doesn't do

Privacy in 10 principles

  1. No account.
  2. No telemetry and no analytics in the app.
  3. Wipecraft sends no file name or path anywhere. A coding agent that you connect yourself receives scan results on your Mac, over a local connection. What that agent does with them is its own provider's matter.
  4. The scan reads sizes, dates and tool status (git, simctl, Docker) on this Mac. It uploads nothing.
  5. The app makes network calls for two things: your license, if you activate one (with your Mac's name as the activation label), and update checks. One optional check goes through your own gh login, only when gh is installed and signed in. You can switch it off in Settings, and then gh never runs.
  6. Crash reports are off by default. If you turn them on, they go only when the app crashes, with no file names or paths (Sentry, EU region).
  7. Nothing runs in the background unless you turn on monitoring, and its menu bar icon shows that it is on. The one other case is the Claude Code plugin, if you install it: its hooks run wipecraft when a session starts or ends.
  8. No admin helper is installed. The administrator password is asked for only to remove a snapshot, each time. The wipecraft command runs with your own rights and does not run administrator commands.
  9. The deletion log stays on your Mac. You export it yourself.
  10. Your license key is kept in your Keychain. The wipecraft command reads it from there to check the license.

Full details: wipecraft.app/privacy

Pricing

$9.99 one-time for the first 500 buyers. Then $19.

Buy WipecraftDownload and scan for free

FAQ

Is the scan really free?

Yes. The full scan, every row and its details, and the monitoring alerts work without a license. Moving files to Quarantine, archiving and removing need a license.

Does Wipecraft delete anything on its own?

Not by default. Nothing comes selected, and nothing is removed until you choose Apply. Items you already put in Quarantine are removed after 7 days; that happens when Wipecraft opens and during the daily check. Three optional settings can move or remove items without you pressing Apply, once you turn them on: cleanup rules (Settings > Automatic cleanup), tidying a finished worktree after a Claude Code session, and cleaning through MCP when an agent asks. All three are off by default, and each goes through the same checks as the app: locked rows and items that changed since the scan are refused.

What happens if Claude Code or Codex is running?

The sessions it has open, anything it changed in the last 24 hours, and the worktree it works in are locked. For Claude Code, the latest month of the project it works in is locked too. Older sessions stay selectable. If Wipecraft cannot tell whether a tool is running, those rows stay locked until the next scan.

Can I lose commits when a worktree is removed?

Wipecraft offers a worktree whose repository is present only when it is clean, unchanged for 7 days (by default), and its commits are on the main branch or on a remote. Commits on its branch stay in the repository. A worktree whose commits are on no branch is not offered. The exception is a worktree whose main repository was moved or deleted: git cannot check it, so Wipecraft offers it after 30 days without changes (the default) and moves the whole folder to Quarantine, where Restore brings it back.

Does it phone home?

For two things: your license (when you activate it, with your Mac's name as the activation label; once per launch to check it; and when you remove it from a Mac) and update checks. One optional check asks GitHub, through your own gh login, whether a branch's pull request was merged. It sends branch names and commit IDs, runs only when gh is installed and signed in, and you can switch it off in Settings. Wipecraft sends no file names, paths or scan results. The privacy page lists what each call contains.

Does the Claude Code plugin or an agent send anything?

Wipecraft sends nothing. The plugin and wipecraft mcp pass results to the agent on your Mac. /wipecraft:status gives Claude the scan output, including folder paths, and the session-start line gives it one line with sizes, so Claude's provider receives what you see in that session. The same holds for any agent you connect through MCP.

Can an agent clean my disk?

Not unless you turn it on. Reading is always allowed. Cleaning through MCP is off until you switch it on in Settings > Agents, needs a license, shows a plan before it applies, and does for each id it names what wipecraft clean --apply does: caches, logs and temporary files that their app rebuilds are removed directly and cannot be restored, other files move to Quarantine for 7 days, session histories go to the Archive, and a finished worktree is removed with git. Actions marked "Irreversible" are refused. Tidying after a Claude Code session is a separate switch, also off by default.

Why don't I see Codex or my worktrees?

They are part of Developer mode. It adds coding agents, worktrees, Xcode, simulators, package caches and Docker. It is on by default when Wipecraft finds a ~/.claude folder or Xcode; otherwise turn it on in Settings > Developer mode. It applies to the next scan.

Why does it ask for Full Disk Access?

macOS lets apps read some folders, such as Mail downloads, Messages attachments and iOS backups, only with Full Disk Access. You can skip it. Your user folders are still scanned, and Wipecraft tells you which folders it could not count.

What if my Mac is offline?

Everything keeps working, and nothing locks. Wipecraft checks the license again the next time it opens with a connection.

What do I need?

macOS 14 Sonoma or later, on Apple Silicon or Intel. Wipecraft is sold directly, not on the Mac App Store. The interface is in English, Simplified Chinese, Japanese, German, French, Spanish, Brazilian Portuguese, Korean, Russian, Italian and Turkish, in light and dark mode. It follows the language of your Mac.