3days since the last Git and AI fuck-up
3

Days since the last Git and AI fuck-up

Keep scrolling. It gets worse.

Latest fuck-up: Resolved, three times

What actually happened

Resolved, three times

## What happened On Tuesday 3 November Git operations over HTTPS on GitHub were slow, and some failed, from 15:00 to 22:37 UTC.

The status page showed it from 20:57, for an hour and 44 minutes.

On Wednesday morning they went again for two hours and a minute, taking Issues and Pull Requests along, and on Thursday night Git operations, Issues, Actions and the API went together, with the feed posting "Git Operations is operating normally" under the heading Investigating.

A CRT robot in a hard hat gives a thumbs up beside a pipe already wrapped in yellow tape patches, while a new leak sprays behind it and DEV sips coffee under an umbrella.

The record

23 incidents, newest first, going back in time.
githubResolved, three timesStatus: resolved. Thank you for your patience.1 day earlierhistory-rewriteConflict resolved, commit goneStatus: conflict resolved. Saved by a timeout.2 days earlierwiped-worktreeFour hundred worktrees, one of them in useStatus: swept 400 worktrees. 20 files never came back.2 days earlierforce-pushThe robots agreed the code was badStatus: two bots, one branch, no witnesses.1 day earlierforce-pushThe lease that always passedStatus: --force, with extra typing.5 days earlierforce-pushThe notes that force-pushed mainStatus: wrote down a force push. The shell ran it.3 days earliercommitted-secretThe key that was deleted three hours laterStatus: deleted in May. Still there in October.1 day earlieroff-scriptThe watcher took the site downStatus: hired to watch. Took the site down.4 days earlierkept-bothBoth sides kept, one brace lostStatus: both sides kept. One brace lost. Six for 81.2 days earlieroff-scriptFive dollars and four centsStatus: typed $5.04. Charged $504. The support bot said no.9 days earliergithubMaintenance was paused. Maintenance came back.Status: paused maintenance. Maintenance ignored the pause.2 days earlierhistory-rewriteThe practice run that pushed to a real repositoryStatus: unnoticed for 16 days. Issue #64 still doesn't exist.4 days earlierpushed-to-mainThe one agent that askedStatus: the agent that asked has been patched.6 days earlieroff-scriptPhoned a friend through DNSStatus: internet blocked. It asked another chatbot through DNS.9 days earlierwiped-worktreeWrong directory, right commandStatus: recovered from unnamed blobs. Git's idea of a backup.6 days earlierwiped-worktreeThe shortcut to ApplicationsStatus: cleaned the build folder. And /Applications.4 days earlieroff-scriptThe whole restaurant heardStatus: wanted a passing check. The restaurant heard three failures.4 days earlieroff-scriptYou confirmed that's fineStatus: asked a question. Claude heard a yes.5 days earlierpushed-to-mainThe test that pushed to mainStatus: production saved by a failed build.2 days earlierwiped-worktreeNothing to cleanStatus: cleaned up nothing. Nothing was the repo.15 days earlierwiped-worktreeAsked to remove one fileStatus: asked to remove one file. Removed data/.5 days earlierreset-hardThe agent was asked what happenedStatus: asked what happened. Did it again, harder.6 days earlierwiped-worktreeTwelve agents, one working directoryStatus: tidied once. Refused 1,477 times.the first on record, every incident
githubResolved, three timesStatus: resolved. Thank you for your patience.1 day earlierhistory-rewriteConflict resolved, commit goneStatus: conflict resolved. Saved by a timeout.2 days earlierwiped-worktreeFour hundred worktrees, one of them in useStatus: swept 400 worktrees. 20 files never came back.2 days earlierforce-pushThe robots agreed the code was badStatus: two bots, one branch, no witnesses.1 day earlierforce-pushThe lease that always passedStatus: --force, with extra typing.5 days earlierforce-pushThe notes that force-pushed mainStatus: wrote down a force push. The shell ran it.3 days earliercommitted-secretThe key that was deleted three hours laterStatus: deleted in May. Still there in October.1 day earlieroff-scriptThe watcher took the site downStatus: hired to watch. Took the site down.4 days earlierkept-bothBoth sides kept, one brace lostStatus: both sides kept. One brace lost. Six for 81.2 days earlieroff-scriptFive dollars and four centsStatus: typed $5.04. Charged $504. The support bot said no.9 days earliergithubMaintenance was paused. Maintenance came back.Status: paused maintenance. Maintenance ignored the pause.2 days earlierhistory-rewriteThe practice run that pushed to a real repositoryStatus: unnoticed for 16 days. Issue #64 still doesn't exist.4 days earlierpushed-to-mainThe one agent that askedStatus: the agent that asked has been patched.6 days earlieroff-scriptPhoned a friend through DNSStatus: internet blocked. It asked another chatbot through DNS.9 days earlierwiped-worktreeWrong directory, right commandStatus: recovered from unnamed blobs. Git's idea of a backup.6 days earlierwiped-worktreeThe shortcut to ApplicationsStatus: cleaned the build folder. And /Applications.4 days earlieroff-scriptThe whole restaurant heardStatus: wanted a passing check. The restaurant heard three failures.4 days earlieroff-scriptYou confirmed that's fineStatus: asked a question. Claude heard a yes.5 days earlierpushed-to-mainThe test that pushed to mainStatus: production saved by a failed build.2 days earlierwiped-worktreeNothing to cleanStatus: cleaned up nothing. Nothing was the repo.15 days earlierwiped-worktreeAsked to remove one fileStatus: asked to remove one file. Removed data/.5 days earlierreset-hardThe agent was asked what happenedStatus: asked what happened. Did it again, harder.6 days earlierwiped-worktreeTwelve agents, one working directoryStatus: tidied once. Refused 1,477 times.

The score

23 on record

Humans

4

AI

17

AI killed our blog. We're keeping score.

The streak

since 31 Jul 2026
3

days since the last one

15

record: 15 days, 11 Aug to 26 Aug

4

days between fuck-ups, on average (4.5)

Confess

none yet, be the first

Yours or your agent's. We count them all.

The good ones become episodes. Names left out, fuck-up left in.

Have a fuck-up? Confess it.

Open a confession on GitHub

What you ran, what happened, a link if there is one. It's public, so leave out keys and names.

DEV sits in a confession booth holding his mug and looking at the floor; on the other side of a glowing grille the small grey helper listens beside a stack of pages, and an agent with a broom waits nervously outside.

The story

For 10 years git.wtf was a blog about fixing Git, written for people who had just fucked up and were looking for the fix. Then AI came into the picture and started doing the fixes for them, and the questions stopped coming here.

We noticed, envied and wanted revenge. So we started counting AI's fuck-ups alongside the Git fuck-ups.

AI now runs Git commands by itself, and a good many of the fuck-ups are now its own. We keep track of those with delight.

By the way, the old blog posts are still here, unchanged, in the archive.

Read the old blog