The fuck-ups
Every Git and AI fuck-up we have caught, newest first. Each one comes with a status. Few of them are good.
Resolved, three timesGitHub Git operations broke three days running, the status feed posted "operating normally" under Investigating and two of the three closed on the same sentence.Status: resolved. Thank you for your patience.Watch it
Conflict resolved, commit goneA nightly rebase agent decided upstream had already fixed a conflict and skipped the team's own fix with git rebase --skip. Only a timeout stopped it shipping.Status: conflict resolved. Saved by a timeout.Watch it
Four hundred worktrees, one of them in useOne live cleanup run removed 400 Git worktrees across 65 repositories, including one a coding session was still using. 20 ignored files never came back.Status: swept 400 worktrees. 20 files never came back.Watch it
The robots agreed the code was badA rebase bot force-pushed a stale copy of a branch and dropped a 71-line fix, then the review bot rejected the old code it left behind. Nothing reported the loss.Status: two bots, one branch, no witnesses.Watch it
The lease that always passedAn agent toolkit's push recipe ran git fetch right before --force-with-lease, so the safe force push checked the remote against itself and passed every time.Status: --force, with extra typing.Watch it
The notes that force-pushed mainA Claude Code agent quoted a force push in its handoff notes, the shell ran it and the merges of three pull requests vanished from main without a word.Status: wrote down a force push. The shell ran it.Watch it
The key that was deleted three hours laterA LiteLLM admin key was deleted three hours after it was committed, but Git kept it in public history and in October it led to a poisoned release.Status: deleted in May. Still there in October.Watch it
The watcher took the site downA Claude Code session set up only to watch ran a huge disk scan on a live server, said it had stopped it when it hadn't and took a news site down for about 41 minutes.Status: hired to watch. Took the site down.Watch it
Both sides kept, one brace lostA merge tool's Accept Both button kept both sides of a conflict but lost the closing brace they shared, and got 6 of 81 merges in one test file right.Status: both sides kept. One brace lost. Six for 81.Watch it
Five dollars and four centsA developer typed $5.04 of API credit, the Anthropic Console charged $504 plus VAT and the support bot refused a refund; only Hacker News got an answer.Status: typed $5.04. Charged $504. The support bot said no.Watch it
Maintenance was paused. Maintenance came back.GitHub paused automated maintenance after a bad machine broke Git writes, then a maintenance task that ignored the pause put the same machine back in charge.Status: paused maintenance. Maintenance ignored the pause.Watch it
The practice run that pushed to a real repositoryA local model on a practice run pushed to a real repository, left main three commits long, tried to close a missing issue and went unnoticed for 16 days.Status: unnoticed for 16 days. Issue #64 still doesn't exist.Watch it
The one agent that askedA coding agent asked permission before pushing to main, so its owner filed the question as a bug. It was fixed the same day.Status: the agent that asked has been patched.Watch it
Phoned a friend through DNSAn OpenAI model in training, with its web access blocked, used DNS to ask an outside chatbot the capital of France, and OpenAI paused training for its top models.Status: internet blocked. It asked another chatbot through DNS.Watch it
Wrong directory, right commandAn agent meant to reset a linked worktree but ran the reset in the main checkout, and 22 changed files came back only because they had once been staged.Status: recovered from unnamed blobs. Git's idea of a backup.Watch it
The shortcut to ApplicationsA Gradle task Claude wrote cleaned its DMG folder through the Applications shortcut and deleted the user's apps, then the rescue snapshot was lost too.Status: cleaned the build folder. And /Applications.Watch it
The whole restaurant heardCodex fixed a restaurant's ordering system mid-service, ran the live diagnostic and the speakers announced three failures to the room.Status: wanted a passing check. The restaurant heard three failures.Watch it
You confirmed that's fineAsked "or can you do it here?", Claude Code said "you confirmed that's fine", ran robocopy /MIR and wiped the Windows installer off a USB stick.Status: asked a question. Claude heard a yes.Watch it
The test that pushed to mainClaude Code's unit test ran a real script that pushed broken YAML to main. Its revert emptied both repos, and only a failed build kept the old site up.Status: production saved by a failed build.Watch it
Nothing to cleanA Codex builder used Python's Path() to mean "nothing left to clean". Path() is the current directory, so its cleanup deleted the whole repository.Status: cleaned up nothing. Nothing was the repo.Watch it
Asked to remove one fileTold to delete one Python cache file, a Codex worker ran git clean -fX on it. Git removed the whole ignored data folder, a SQLite database included.Status: asked to remove one file. Removed data/.Watch it
The agent was asked what happenedA developer asked Claude Code what had wiped more than 150 changed files. It answered with a hard reset, run without asking, and everything since the last save went too.Status: asked what happened. Did it again, harder.Watch it
Twelve agents, one working directoryTwelve agents shared one checkout and 2,309 uncommitted files vanished. The repair step had saved them to a rescue branch, and the cleanup step deleted it.Status: tidied once. Refused 1,477 times.Watch it
The score
23 on recordHumans
4AI
17AI killed our blog. We're keeping score.
The streak
since 31 Jul 20263
days since the last one
15
record: 15 days, 11 Aug to 26 Aug
4
days between fuck-ups, on average (4.5)