AI News

Find and Replace GitHub Models Calls After Retirement

Search code, configuration, CI, and documentation for retired GitHub Models dependencies, then choose migration, another provider, or removal.

  • #github-models
  • #microsoft-foundry
  • #migration
  • #inference-api
  • #deprecation

GitHub Models retired on July 30, 2026. The remaining task is not to revisit the deadline. Search code, configuration, CI, and runbooks for old endpoints and model identifiers, then assign each live dependency to one of three outcomes: migrate it, move it to another service, or remove the feature. A documented zero-result search is also a valid conclusion.

GitHub’s final notice says the playground, model catalog, inference API, and bring-your-own-key endpoints are no longer available to any customer, including customers with active usage. BYOK allowed a customer to bring a separate provider key through the GitHub Models surface. Once that routing surface is retired, an otherwise valid provider key does not keep the old GitHub Models path alive.

Confirmed status after retirement

ItemConfirmed valueSource URLChecked
GitHub Models statusRetired as of July 30, 2026https://github.blog/changelog/2026-07-30-github-models-is-now-retired/2026-08-24
Retired surfacesPlayground, model catalog, inference API, and BYOK; existing customers are includedhttps://github.blog/changelog/2026-07-30-github-models-is-now-retired/2026-08-24
Replacement directions named by GitHubMicrosoft Foundry for model access; GitHub Copilot for AI-powered workflows directly on GitHubhttps://github.blog/changelog/2026-07-30-github-models-is-now-retired/2026-08-24
Foundry prerequisiteAn Azure subscription with a valid payment method; usage is billed according to deployment typehttps://learn.microsoft.com/en-us/azure/foundry/foundry-models/how-to/quickstart-github-models?view=foundry-classic2026-08-24
Foundry model setupModels must be added to the resource before they are named in the model parameterhttps://learn.microsoft.com/en-us/azure/foundry/foundry-models/how-to/quickstart-github-models?view=foundry-classic2026-08-24

The retirement notice does not say that GitHub will rewrite references inside customer repositories. Treat discovery and cleanup as repository work that requires your own evidence.

Search for old calls and model names

1. Define the search boundary

Include more than application source:

  • application code, tests, examples, and notebooks;
  • non-secret environment templates such as .env.example;
  • GitHub Actions and other CI configuration;
  • infrastructure, container, and deployment configuration;
  • README files, runbooks, incident procedures, and internal examples.

Do not copy values from real .env files or secret managers. Record variable names and reference paths, not credentials.

2. Search for GitHub Models-specific patterns

From the repository root, an rg search can identify likely entry points while excluding dependencies and generated output:

rg -n -i --hidden \
  -g '!node_modules/**' -g '!vendor/**' -g '!dist/**' -g '!build/**' \
  'github[ -]?models|models\.github\.ai|models\.inference\.ai\.azure\.com|azure\.ai\.inference|ModelsClient|GITHUB_TOKEN'

The endpoint strings, client name, and SDK namespace are search candidates for old configuration and samples. GITHUB_TOKEN has many unrelated uses, so a match alone does not establish a GitHub Models dependency. Read the surrounding code and confirm that the token participates in a model-inference request.

If your repository uses another search tool, preserve the same evidence: query, root, exclusions, timestamp, and complete match list.

3. Derive model-name searches from your configuration

Inspect matched files for model, model_name, deployment, and endpoint fields:

rg -n -i 'model(_name)?|deployment|endpoint'
rg -n -F '<model name or configuration key found in your repository>'

Do not depend on a supposed universal list of retired model names. Extract the identifiers your application actually used, then search for each exact string. This second pass often finds evaluation snapshots, fallback configuration, documentation, and tests that no longer mention the product name.

4. Trace configuration references without exposing values

When the search finds an environment-variable name, trace where the application reads it, where CI supplies it, and how the final endpoint and model identifier are assembled. You can map that reference chain without printing the secret value.

Follow feature flags and fallback branches as well as the primary path. A disabled feature can become live again, and a fallback can silently call the retired service only when the preferred provider fails.

5. Classify every match

ClassificationTestAction
Live execution pathReachable from a normal command, request, scheduled job, or testSend to the replacement decision
Dormant pathDisabled by a feature flag but still recoverableAssign an owner and disposition date
Documentation or sampleNot executed, but capable of misleading a maintainerUpdate to the selected path or remove it
Historical recordNeeded to explain an incident or prior migrationKeep it with the retirement date clearly labeled
Unrelated matchFor example, GITHUB_TOKEN used only for checkout or package accessRecord the reason and exclude it

If the search returns zero matches, save the query, root, exclusions, and date. “Not found within this documented boundary” is more defensible than an unsupported claim that no dependency exists anywhere.

Choose migration, another service, or removal

ConditionDecisionCompletion evidence
The application still needs general inference, and the organization accepts Azure billing, region, model, identity, and data-handling constraintsMigrate to Microsoft FoundryDeploy the selected model, configure the supported identity and endpoint, and pass representative inputs
Inference remains necessary, but Foundry does not fit contract, region, model, policy, or operating requirementsMove to another serviceTest candidates against the same inputs and acceptance criteria, including authentication and failure behavior
The real need is developer assistance inside GitHub rather than a general application inference APIRedesign around an appropriate GitHub Copilot workflowDemonstrate that the GitHub task is covered without building a replacement application backend
The feature lacks users, ownership, acceptance criteria, or sufficient value to justify ongoing costRemove the featureDisable callers, remove misleading UI and monitoring, and document any conditions for reconsideration
The match is only a historical record and no runtime path reaches itDo not migrate itLabel it as retired and prevent examples from being copied as current setup

Searching does not authorize a paid Foundry deployment or a new provider contract. Resource creation, credential issuance, and production traffic changes remain separate approval points.

Verify the replacement boundary

Changing a model string is not enough. Use fixed representative inputs and verify only the capabilities the application actually relies on:

  1. Authentication failures stop without writing secrets into logs.
  2. Required response modes—ordinary responses, streaming, structured output, or tool calls—still satisfy the application contract.
  3. The selected model exists in the chosen region and deployment.
  4. Content filtering and refusal behavior are reviewed for the application’s accepted and rejected cases.
  5. Error handling exposes a clear operational failure instead of silently falling back to GitHub Models.
  6. A final repository search leaves only historical references that were deliberately retained.

The old service is no longer available for a live side-by-side test. If you did not preserve representative inputs and acceptance criteria before retirement, state that previous behavioral equivalence could not be verified. Do not manufacture a benchmark from memory.

Cleanup and rollback planning

Keep the new endpoint, deployment, and identity outside application logic so a failed replacement test can be disabled without a broad rewrite. During the transition, preserve a feature-off state or a human-operated fallback. Returning to the retired GitHub Models endpoint is not a viable rollback.

Remove old monitoring checks, playground links, token instructions, and onboarding steps after the replacement decision. Otherwise, future maintainers may treat a stale sample as the canonical path and recreate a known failure.

Primary sources

These official sources were opened and checked on 2026-08-24 (JST):

The official pages checked here do not provide a universal inventory of model names used by every customer, and they do not say that repository references will be updated automatically. Derive the search list from your own code and configuration.