At 14:17 UTC this morning, GitHub opened an incident titled Incident with Grok Copilot AI Model Provider. Three minutes later they said what it was:
We are experiencing degraded availability for the Grok 4.6 model in Copilot Chat, VS Code and other Copilot products. This is due to an issue with an upstream model provider. We are working with them to resolve the issue.
Two minutes after that, Grok 4.5 went too. The incident stayed open for 174 minutes and closed at 17:11 UTC with a line that is worth reading twice: the issues with our upstream model provider have been resolved.
Be precise about what did and did not happen, because the precision is the entire point. GitHub did not go down. Repositories worked. Actions ran. Pull requests merged. What broke was one model surface inside Copilot, and GitHub classified the impact as minor.
That is the interesting part. Nothing GitHub operates failed, and their customers still had a bad morning.
It is not one incident. It is a category.
Pull GitHub's public incident feed and read the names. Over the seven weeks from 14 July to 3 September, GitHub posted 50 incidents. Twelve of them cite an upstream AI model provider. Just under a quarter of everything that went wrong at GitHub in seven weeks was something that went wrong somewhere else.
The roll call is every major lab, which is the tell:
- 3 Sep — Grok 4.6 and 4.5, 174 minutes, minor
- 31 Aug — OpenAI models, 42 minutes, minor
- 27 Aug — Copilot AI Model Providers, 128 minutes, critical
- 24 Aug — "Elevated errors on Fable 5 due to upstream provider", 47 minutes, major
- 13 Aug — Fable 5 in Copilot, 64 minutes
- 1 Aug — Copilot AI Model Providers, 41 minutes
- 30 Jul — Claude Fable 5, elevated errors, 65 minutes
- 29 Jul — Copilot AI Model Providers, 104 minutes
- 16 Jul — Claude Fable 5, degraded, 59 minutes
Nobody is uniquely bad here. xAI, OpenAI and Anthropic all show up. That is what makes it structural rather than a vendor problem: GitHub picked several of the best-run inference providers in the world, wired them into a product surface, and inherited all of their bad days at once.
Diversifying made it worse, not better. Every model you add is another status page that can ruin your afternoon.
What actually failed
Nothing in this story is a bug. GitHub added Grok to Copilot because people wanted Grok in Copilot. That is a reasonable product decision, and if you had been in the room you would have voted for it.
The cost only shows up later, in a shape nobody prices at the time: a synchronous call to somebody else's inference endpoint, sitting in the request path of a feature your customers now expect to work. When that endpoint slows down, you do not get to fix it. You get to write "we are working with them to resolve the issue" and wait. GitHub's own updates say exactly that, three times.
They never named xAI, incidentally. Every update says "upstream model provider." xAI's status page returns 403 to a scripted request, so GitHub's incident is the only public record any of us can check. That is its own small lesson about where your operational transparency lives once it depends on a third party.
Beside the path, not in it
We are big believers in scale-to-zero at airbrx. Fewer dependencies, fewer ways for things to fail. That is not an argument against AI, and it would be a stupid one to make — we could not do what we do without it.
It is an argument about where the AI goes.
Our position is that you can only really manage cache rules down to the individual query with AI in the loop. Humans are not going to sit and read ten thousand queries looking for patterns and tuning rules. Nobody has that patience, and pretending otherwise produces a product that works in the demo and rots in production.
Claude does that job well. So we did not bake Claude into the product. We built a well-documented API, and then built skills that let Claude work against that data from the outside.
The difference is not stylistic. It decides what happens on a morning like this one.
Claude had a rough morning too — Anthropic's status page shows a major incident starting 13:26 UTC, elevated errors across Mythos 5.1, Fable 5.1 and Opus 5, open for 177 minutes, plus a separate Sonnet 5 incident an hour earlier. Two of the largest model providers on earth were degraded simultaneously, for most of the same three hours.
The airbrx gateway did not notice. Queries flowed. Cache was written and served. Security rules kept blocking what they were supposed to block. The part of our stack that customers depend on minute to minute has no model in its request path, so there was nothing to fail.
What we lost was the ability to ask Claude to look at new query patterns and suggest rule changes for a few hours. That is a real capability and we wanted it back. But it degrades to "later," not to "down," because it was never standing between a customer and their data.
That is the whole trick, and it is not clever. Put the model beside the path instead of in it. Ask what happens to this feature when the model is gone, and if the honest answer is "it stops," you have not integrated AI. You have taken a dependency on a company whose pager you cannot carry.
The uncomfortable part
Some things genuinely belong in the path. Copilot Chat is one of them. There is no version of an interactive coding assistant that answers without calling a model, and no amount of architectural discipline changes that. GitHub is not being careless; they are shipping a product that cannot exist any other way.
So the question is not whether to put AI in the request path. It is how much of what we are currently putting there actually needs to be.
A great deal of what gets an LLM bolted onto it is classification, routing, extraction, summarizing a record, deciding which of four branches to take. Work that a documented API and some ordinary code did fine, that now takes a network hop to a rented GPU and fails when that GPU has a bad day. We are putting a language model in the path of things that used to be a lookup table, and then acting surprised when our uptime starts tracking somebody else's.
GitHub having a bad morning because Grok had a bad morning is not a scandal. It is a very well-documented, 174-minute argument for unwinding the AI we bolted onto the simple stuff, and keeping it for the things that actually need to think.
Every dependency is a decision. This one was made twelve times in seven weeks, mostly by default.