Two small pieces, so a wiped board never happens to you. One stops it. The other gets you back.
I could not stop thinking about that board getting erased by an agent that was only trying to fix its own mistake. So I built the protection I now run on mine, and I would love for you to take it.
It takes about a minute to set up, and then it looks after itself. Here is what it does.
Two halves that cover both sides
The whole board lives in one file, lib/db.json. These two work together: one guards that file while you work, the other keeps a clean copy you can always come back to.
Prevention · the guard
Stops it happening
A small hook watches every Claude session, including anything an agent runs on its own, and blocks the direct ways a board gets wrecked: hand edits to db.json, commands that overwrite, move, or delete it, script one-liners that open it for writing, and any rm -rf aimed at your home folder or the whole app. Your board still updates normally, because the app writes through its own API, which the guard leaves alone.
Recovery · the backup
Gets you back
An hourly copy of db.json, saved outside your app folder, gzipped, with two weeks of history and a one-line restore. It checks the file before every save and skips if it looks broken, so the common ways a damaged db.json could poison your backups are caught, and two weeks of history covers the rest.
What the guard actually does
It reads what each tool is about to do and steps in only for the direct, destructive moves that no normal work ever makes.
update a card through the app✓allowed
edit an unrelated file✓allowed
overwrite lib/db.json directly✗blocked
rm -rf ~✗blocked
delete the whole app folder✗blocked
If you ever truly need one of those, put GUARD_OFF=1 in front of the command and it steps aside.
Set it up in about a minute
Open the folder I shared and run:
$ bash install.sh
That installs both parts, schedules the hourly backup, runs it once, and turns the guard on. If your Mission Control lives somewhere unusual, point it at yours:
$ MC_DIR=/path/to/mission-control bash install.sh
Restart any open Claude session afterwards so the guard is live in it. That is the whole setup.
If it ever gets wiped anyway
Stop Mission Control so it does not write over you, then bring back the last good copy:
Same command on Mac, Windows, and Linux, and it keeps a copy of whatever was there before. Start Mission Control again and you are back to within the hour. Do one practice restore the day you install this, so the first time is never the real time.
Good to know
Nothing normal breaks. The app updates the board through its own API, which the guard never touches. It only blocks direct, hand-written changes to the data file.
The backup protects itself. If db.json is empty, unreadable, missing its cards, or suddenly a fraction of its usual size, the backup skips that hour and keeps your last good copy untouched, and two weeks of history covers anything subtler.
It runs on its own. Once installed, the backup fires every hour and the guard rides along in every session. You do not have to remember anything.
A note on fair use: I have been running this on my own machine, a Mac on macOS Tahoe 26.4.1, and it has served me well. I am sharing it as a helpful starting point, not a guarantee. Every setup is a little different, so please treat it as yours to test and adjust, do the practice restore so you have seen it work on your own system, and know that I cannot take responsibility for how it behaves on a machine that is not mine.