What a wipe leaves behind
A dated archive in ~/slate/, a note in each repo you had open, and screenshots of every window. An archive looks something like this:
- #[[slate wipe]] Oct 6, 2026, 4:41 p.m. — 6 terminals (5 agent sessions), 3 windows / 24 tabs
- Terminals
- claude · Refactor the parser
- cwd: `~/dev/tidepool` · branch `main` · 4 uncommitted
- resume: `cd ~/dev/tidepool && claude --resume 4f1c…` (up 02:51:24, idle)
- last you: ok, ship it once the fixtures are cleaned up
- last it: Done. Tests pass; I left the old fixtures in place until…
- codex · Batch transcription · KEPT: working
- resume: `cd ~/dev/podcast && codex resume 019a…` (up 11-16:35:55)
- Chrome
- [How to Do Great Work](…) · read 40%
- [Issue #212: flaky upload test](…) · KEPT (unsaved state)
- …
Next time you cd into one of those repos, your shell says a session was dropped there, and unwipe brings it back. slate find <text> searches every archive. Optionally it also lands on today’s page in Roam, or wherever your agent wires it to.
Two buttons, and a preview
- Soft wipe closes everything that’s safe to close, no questions asked: idle agent sessions, empty shells, any tab Chrome lets go of. An agent mid-turn or babysitting a job survives, and so does any tab that would ask “Are you sure you want to close this tab?” (anything with an armed
beforeunloadhandler, which is how pages guard unsaved state). That dialog is left up for you to answer. A tab that’s on a call (camera or mic live) or audibly playing something is left alone too. - Hard wipe takes the rest.
- Snapshot archives and closes nothing. It also runs on its own when the Mac shuts down.
Plain slatewipe only previews. Git working trees are never touched in any mode. Trigger it from the command line, Spotlight, a hotkey, or a schedule. There’s also a button for your phone: a small server and an Android app are included and working, with optional Cloudflare Tunnel setup so it works away from home.
What it deliberately isn’t
There’s no review queue, no snooze, no “process your archive” flow. Making it easier to finish things would defeat the point, which is making it easy to drop them.
Getting it
This is one person’s working setup, not a polished product, and most people’s setups differ: different terminal, different browser, a different place they’d want the archive to go. So instead of an installer that assumes Malcolm’s machine, the repo ships a prompt. SETUP.md tells your coding agent what the tool is for, the handful of macOS details that took real time to figure out, and how to interview you about your setup. Then it adapts the code to fit.
git clone https://github.com/malcolmocean/slatewiper.git
cd slatewiper
claude "follow SETUP.md"Any coding agent works. Your own settings live in a mine/ folder that the repo ignores, so you can pull updates, and you can make mine/ its own private repo.