GitHub Models Is Gone, and the Error Message Says Otherwise
The endpoint returns 410 Gone with a body that calls it a temporary brownout. Trust the status code. Then work out what you actually lost, because the thing you are replacing cost zero and every replacement does not.
GitHub Models was retired on 30 July 2026. The changelog is unusually blunt about the scope: “The playground, model catalog, inference API, and bring your own key (BYOK) are no longer available to any customer, including existing customers with active usage.”
If you still have code pointing at it, here is what that code sees today. I ran this on 23 August 2026:
$ curl -i -X POST https://models.github.ai/inference/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"hi"}]}'
HTTP/2 410
{"error":{"code":"github_models_retirement_brownout",
"message":"GitHub Models is temporarily unavailable as part of a
scheduled retirement brownout."}}
Read those two lines against each other. The status is 410 Gone, which in HTTP means the resource is permanently unavailable and clients should not try again. The message body says “temporarily unavailable” and calls it a scheduled brownout, which is left over from the tooling GitHub used for the deliberate outages on 16 and 23 July.
Anything that branches on the status code has already given up correctly. Anything that branches on the message string, or that retries on any non-200, is still hammering an endpoint that will never answer. That is a specific bug to go looking for rather than a general worry: grep for models.github.ai, then check what your retry policy does with a 4xx it does not recognize.
The number you are replacing is zero
Every migration guide for this skips the part that matters. GitHub Models was free. Not a generous trial, not credits that expire, just rate-limited no-cost inference against a real catalog. So every option below costs more than what you had, and the useful question is how much more for the thing you were actually doing.
Sort your usage before picking. Prototyping with a human in the loop, a few thousand tokens a day. Automated CI or batch evals, bursty and tolerant of a slower model. Production traffic that needs a good model and someone to call. Most people who reached for GitHub Models were in the first two, and those two have much cheaper answers than the third.
The closest like-for-like is OpenRouter’s free tier
If what you want is the same shape of thing, a rate-limited free endpoint that speaks OpenAI’s dialect and lets you switch models by changing a string, that is OpenRouter’s free model tier.
On 23 August 2026 its catalog lists 422 models, 22 of which are priced at zero for both input and output tokens, including several with very large context windows. The rate limit is 50 requests a day if you have never bought credits, rising to 1,000 a day once you have put $10 in. That $10 is a one-time purchase of credits you can also spend, not a subscription.
For paid usage OpenRouter takes no markup on inference and charges 5.5% on credit purchases through Stripe with a $0.80 minimum, or 5% for crypto. Bring your own provider keys and there is a 5% fee on usage above the plan allowance, which starts at $25,000 a month on pay-as-you-go.
The migration itself is a base URL, a key, and a model-name remap. If you want the fuller comparison of gateways, including the point where self-hosting LiteLLM starts beating a hosted gateway, I went through that in the LLM gateway piece. The short version has not changed: self-hosting to avoid a 5.5% fee on a few hundred dollars of spend costs more in infrastructure than the fee.
Microsoft Foundry is the official answer, and it is a different product
GitHub’s changelog points at two places: Microsoft Foundry for model access, GitHub Copilot if what you wanted was AI features attached to GitHub.
Foundry is where Microsoft wants you and it is genuinely the right call if you are already on Azure with an Entra tenant and want billing and compliance in one place. Three things change from GitHub Models.
Auth moves from a GitHub token to Azure, either an API key on a deployed model or Entra ID and managed identity if you are doing it properly. You no longer call a model by catalog name; you create a deployment in a region and call that, which is more setup and also where quotas and SLAs come from. And the billing is per token, pay as you go.
I am not going to quote you a per-token rate, because Foundry’s published prices sit behind a calculator rather than a table and I could not read them straight on 23 August 2026. That is worth saying plainly rather than filling in with a number from somewhere else, and it is also the shape of the change: you are moving from a thing whose price was a single digit, zero, to a thing whose price requires a calculator and a subscription.
Foundry’s weakness is the mirror of its strength. If part of the appeal of GitHub Models was staying provider-neutral, this walks you straight back into one cloud.
For CI evals, you may not need a paid model at all
The path people skip. If your GitHub Models usage was running a few hundred test prompts through a model on every pull request and checking the shape of the output, a mid-size open model on hardware you already have does that.
Ollama is the easy version: pull quantized weights, get an OpenAI-compatible endpoint, run it on a dev machine or a shared CI runner. It is not built for high-concurrency serving. vLLM is the serious version with real batching and a GPU kept busy, and running it means you are now operating a GPU, which is a job rather than a config line.
The trade is a per-token bill for an ops burden and a quality ceiling. An open 8B to 70B model is not a frontier model. For eval and triage work that gap often does not matter. For anything where the answer quality is the product, it does, and self-hosting your way into shipping worse output to save money you were not really spending is a bad trade dressed as a good one.
The checklist
Grep every repository and CI config for models.github.ai and for the GitHub Models SDK packages. Include workflow files, because that is where the forgotten job lives.
For each hit, decide which of the three buckets it is in before you decide where it goes. A triage bot and a customer-facing feature should not land in the same place just because they used the same endpoint.
Check what your retry policy does with a 410. If it retries, that job has been failing loudly for weeks and something is probably suppressing the alert.
And if you had BYOK configured, remember that the key itself is still live at whichever provider issued it. GitHub stopping the endpoint does not rotate your OpenAI or Anthropic key. Go look at whether that key is still needed, and revoke it if the only thing that used it is gone.
The endpoint state, the error body, the OpenRouter catalog counts and fee structure, and the GitHub changelog wording were all checked on 23 August 2026.