# GitHub Copilot "Language model unavailable" in VS Code: 6 Causes

> The error means VS Code loaded no Copilot model. Check GitHub Status, then the "Failed to fetch models" log line, which points to network, plan or version.

- URL: https://blog.laozhang.ai/en/posts/github-copilot-language-model-unavailable
- Published: 2026-11-04
- Updated: 2026-11-04
- Author: LaoZhang AI Team (https://blog.laozhang.ai/en/about)
- Topic: Troubleshooting
- Tags: GitHub Copilot, VS Code, Copilot Chat, Language model unavailable, Troubleshooting, Network Proxy

---
`Language model unavailable` is what VS Code throws when Copilot Chat asks for a default Copilot model and none has loaded. In the VS Code source as of November 4, 2026, the check is short: you didn't pick a specific model, no default Copilot model is registered, so the request stops with that exact English sentence. It is hard-coded rather than translated, which is why it reads the same in every display language. Copilot's model list comes from GitHub's servers, so the message is a symptom of that list not arriving, and the usual reasons are a blocked network, a GitHub outage, a plan or license problem, or an outdated VS Code.

So don't reinstall anything yet. Check the Copilot line on [GitHub Status](https://www.githubstatus.com/), then open the Output panel, choose **GitHub Copilot Chat** from the dropdown, and find the line that starts with `Failed to fetch models`. A timeout or certificate error after it means your network: with a personal Copilot plan on a company network, `*.individual.githubcopilot.com` is often blocked on purpose, so ask IT to allow it or compare on a phone hotspot. A 403 such as "not licensed to use Copilot" means your plan or the signed-in account, and the outage wording means you wait. After any change, run **Developer: Reload Window**.

Two situations need a different answer. If you picked a specific model and VS Code 1.141 or later says "The selected model '…' is not available", only that model is missing, not the whole list. And if you need to keep working while Copilot's list is down, a bring-your-own-key model in chat doesn't depend on it, although inline completions still need a working Copilot sign-in.

## Which cause is yours: match the log line to the fix

Each cause leaves a different trace in the Copilot Chat log, the model picker or the version number, so read those before changing settings. The VS Code maintainers who handle the [Language Model Unavailable tracking issue](https://github.com/microsoft/vscode/issues/253137) call a corporate network blocking Copilot's endpoints the number one cause, a judgment drawn from reports in 2024 and 2025. Reports from 2026 add outages, paused trials and license errors, so don't assume the network until the log says so.

| What you see | Where | Likely cause | What to do |
| --- | --- | --- | --- |
| "Error fetching models! It appears that GitHub is experiencing an outage", or an incident on the status page | Copilot Chat output, githubstatus.com | GitHub outage | Wait for recovery, then Reload Window |
| `Failed to fetch models (…)` followed by a timeout, `ENETUNREACH`, a refused connection or a certificate error; Copilot works on a phone hotspot | Copilot Chat output, Chat Diagnostics | Firewall, proxy or VPN blocking Copilot's API domain | Run the network test below and take the result to IT |
| 403 "not licensed to use Copilot"; the model picker stuck on "Local" | Copilot Chat output, model picker | Plan, trial, seat or the wrong GitHub account | Check your Copilot plan on GitHub, then sign out and back in |
| VS Code from many months ago, for example 1.107 or 1.109 | **Help > About** (**Code > About** on macOS) | Client too old for the current Copilot Chat | Update VS Code and the GitHub Copilot Chat extension |
| `net::ERR_CONNECTION_REFUSED` together with `401 unauthorized: unable to validate HMAC for the given Copilot-Integration-ID` | Copilot Chat output | Leftover debug override settings in settings.json | Delete the two override settings, then Reload Window |
| `TypeError: e is not iterable` | Copilot Chat output | Copilot Chat failing to parse files in `~/.claude/skills` or `~/.agents/skills` | Rename those folders and reload |

To read these lines, open the Output panel and pick **GitHub Copilot Chat** from the dropdown on its right. If nothing useful shows, run **Developer: Set Log Level**, set GitHub Copilot and GitHub Copilot Chat to **Trace**, send a chat message again, read the output, and then set the level back, as described in the [VS Code agent troubleshooting guide](https://github.com/microsoft/vscode-docs/blob/main/docs/agents/agent-troubleshooting/troubleshooting.md). Some people find `ERR [LM] Error resolving language models for vendor copilot: Error: No auto mode endpoints provided.` in **Help > Toggle Developer Tools** while the picker offers only "Auto". Copilot throws it when Auto mode has no endpoints to choose from, so it confirms the list came back empty and sends you to the network and account rows above. These logs can include your code and prompts, so remove anything private before you paste them into an issue.

![Triage flow for Language model unavailable: check GitHub Status, then read what follows Failed to fetch models in the Copilot Chat log, then check the VS Code version](https://blog.laozhang.ai/posts/en/github-copilot-language-model-unavailable/img/copilot-error-triage-flow.webp)

Reload Window matters more than it looks. As of November 4, 2026, the Copilot Chat extension's code refreshes its model list at most once every 10 minutes and skips the refresh while the window is inactive, so a fixed network or a renewed plan may not show up until you reload; one user in [VS Code issue #331274](https://github.com/microsoft/vscode/issues/331274) needed a full computer restart. If the panel that fails is Anthropic's Claude Code extension rather than Copilot Chat, see [Claude Code Not Working in VS Code? Check the Failing Surface First](https://blog.laozhang.ai/en/posts/claude-not-working-in-vscode).

## Is GitHub Copilot down today? Check githubstatus.com first

Look at the Copilot and "Copilot AI Model Providers" rows on [githubstatus.com](https://www.githubstatus.com/) before anything else, because during an incident every fix below fails and a reload after recovery is all you need. When GitHub's status feed reports a problem, the extension writes the outage sentence from the table instead of the raw error. That has happened in waves this year: on January 13, 2026, between about 09:40 and 10:05 UTC, many users hit the error at once while the status page showed a Copilot incident, and on August 17, 2026, the token endpoint intermittently returned HTTP 503; a maintainer confirmed in issue #331274 that it was that morning's outage, and restarting VS Code brought Copilot back. A green status page doesn't clear your setup, though, so go back to the log if every row is operational.

## Test whether your network reaches the Copilot endpoints

Run Chat Diagnostics inside VS Code, then repeat the key requests with `curl` from a terminal on the same machine. Without a GitHub token, a reachable endpoint still answers, with 200, 400 or 401. A timeout, a refused connection or a certificate from your company's proxy means the network is in the way.

1. Open the Command Palette and type "Chat Diagnostics". The command is listed as **GitHub Copilot: Chat Diagnostics** in current docs and under a "Developer" prefix in some versions. The report opens in an editor tab, with one block per endpoint. A healthy block from a user's report in [VS Code issue #309766](https://github.com/microsoft/vscode/issues/309766) looks like this. The three fetch lines are the ones that count, and here all returned HTTP 200 despite the failed IPv6 lookup:

   ```text
   Connecting to https://api.individual.githubcopilot.com/_ping:
   - DNS ipv4 Lookup: 140.82.114.21 (9 ms)
   - DNS ipv6 Lookup: Error (10 ms): getaddrinfo ENOTFOUND api.individual.githubcopilot.com
   - Proxy URL: None (19 ms)
   - Electron fetch (configured): HTTP 200 (114 ms)
   - Node.js https: HTTP 200 (365 ms)
   - Node.js fetch: HTTP 200 (361 ms)
   ```

2. In a terminal, request the endpoints Copilot needs. Use `business` or `enterprise` instead of `individual` if that's your plan, and type `curl.exe` instead of `curl` in Windows PowerShell:

   ```bash
   curl -sS -w "\n%{http_code}\n" https://api.individual.githubcopilot.com/_ping
   curl -sS -w "\n%{http_code}\n" https://api.individual.githubcopilot.com/models
   curl -sS -w "\n%{http_code}\n" https://api.github.com/copilot_internal/v2/token
   curl -sS -w "\n%{http_code}\n" https://copilot-proxy.githubusercontent.com/_ping
   ```

3. Check who issued the certificate, because a company proxy that inspects HTTPS replaces it with its own:

   ```bash
   echo | openssl s_client -connect api.individual.githubcopilot.com:443 -servername api.individual.githubcopilot.com 2>/dev/null | openssl x509 -noout -issuer
   ```

| Request | Reachable (Mac, November 4, 2026) | Blocked looks like |
| --- | --- | --- |
| `api.individual.githubcopilot.com/_ping` | 200, body `OK` | Timeout, connection refused, `ENETUNREACH` |
| `api.individual.githubcopilot.com/models` | 400, "bad request: missing required Authorization header" | Timeout, or a proxy block page instead of this text |
| `api.github.com/copilot_internal/v2/token` | 401, "Requires authentication" | Timeout, HTML block page, or 503 during a GitHub outage |
| `copilot-proxy.githubusercontent.com/_ping` | 200, `{"status":"ok",...}` | Timeout or refused connection |
| Certificate issuer for both hosts | Sectigo Limited, "Sectigo Public Server Authentication CA DV R36" or "E36" | Your company's name or a proxy product as issuer, or a verification error |

The "Reachable" column comes from one run on a Mac with curl 8.7.1 on November 4, 2026, at 14:46 UTC. That machine ran a local proxy app, and a second run with `curl --noproxy '*'` returned the same codes, but its DNS still resolved to the app's 198.18.x.x tunnel range, so a path with no proxy at all wasn't part of the test. Each request took about 0.84 to 1.13 seconds, and GitHub Status showed Copilot operational at the time. It's one machine on one network, and certificate issuers change when GitHub renews them, so treat a public certificate authority as normal and a company issuer as the warning sign. Passing curl also doesn't prove VS Code takes the same path: VS Code picks up the system proxy on its own, so compare the "Proxy URL" line in Chat Diagnostics with what your terminal uses.

## Personal Copilot on a company network: ask IT for your plan's domain

Copilot sends chat requests to a different domain for each type of plan, and companies can allow only their own. GitHub's [Copilot allowlist reference](https://docs.github.com/en/copilot/reference/copilot-allowlist-reference) lists `*.individual.githubcopilot.com` for personal plans, `*.business.githubcopilot.com` for Copilot Business and `*.enterprise.githubcopilot.com` for Copilot Enterprise. A company that uses subscription-based network routing allows only its own plan's domain, which blocks employees' personal Copilot on purpose. That's why a personal account that fails in the office and works on a phone hotspot points to this rule, even though GitHub doesn't name the error you'll see.

![A personal Copilot plan calls the individual githubcopilot.com domain, which a company firewall with plan-based routing blocks while Business and Enterprise domains pass, plus what to ask IT](https://blog.laozhang.ai/posts/en/github-copilot-language-model-unavailable/img/copilot-plan-domain-routing.webp)

What you ask IT depends on the policy. If personal Copilot is allowed, ask for `*.individual.githubcopilot.com` together with the shared hosts in the same reference, such as `api.github.com/copilot_internal/*` and `copilot-proxy.githubusercontent.com`, and attach your Chat Diagnostics report. If the block is deliberate, the fix is to sign in with the GitHub account that holds the company seat, or to use your personal plan off that network.

Certificate errors need a different request. A proxy that inspects HTTPS presents its own certificate, and VS Code then refuses the connection. The [VS Code network documentation](https://github.com/microsoft/vscode-docs/blob/main/docs/setup/network.md) says the preferred fix is adding the proxy's root certificate to the operating system's trust store; on Linux it also has to go into the NSS database with `certutil -A -n "ProxyCA" -t "CT,," -i proxy-ca.crt -d sql:$HOME/.pki/nssdb`. Don't switch off checking with `"http.proxyStrictSSL": false` or with the `--ignore-certificate-errors` launch flag, which the same page calls "dangerous and not recommended". Either one leaves every request open to interception, including your GitHub token.

Proxy settings themselves rarely need editing. VS Code reads the system proxy automatically, the launch flags `--proxy-server`, `--proxy-pac-url` and `--no-proxy-server` override it, and `http.proxy` in settings is kept mainly for extensions that haven't moved to the newer proxy support. A local proxy app running with only system-proxy mode or only TUN mode switched on can send your terminal and VS Code out by different paths, which is one more reason to read the "Proxy URL" line. On WSL2 with the default NAT networking, a VS Code maintainer traced one case to IPv6 and suggested mirrored networking or turning IPv6 off.

## Trial, plan or "not licensed": check your Copilot access on GitHub

A 403 that says "not licensed to use Copilot", or a picker stuck on "Local", means the network works and GitHub refused the account. Open [your Copilot settings on GitHub](https://github.com/settings/copilot) to see which plan the account has, and the billing and licensing pages to see whether a payment failed. Reports in the VS Code tracker show how varied this is: a paid Pro+ user got the 403 with the picker on "Local" in September 2026, another suspected a "Payment Authorization Failure", one company's users broke after moving from Business to Enterprise, and one person found VS Code signed in with a work account instead of the personal one that paid.

Trials caused one large wave. GitHub [paused new Copilot Pro trials](https://github.blog/changelog/2026-04-10-pausing-new-github-copilot-pro-trials/) on April 10, 2026, and on April 13 extended the pause to trials already running, offering Copilot Free or a paid upgrade instead. Many trial users hit this error that week in [VS Code issue #309766](https://github.com/microsoft/vscode/issues/309766); clicking "Start paid subscription" on the billing page fixed it for some and not for others. That changelog entry is now marked "Retired" and doesn't say whether trials have reopened, so go by what your own billing page shows. Separately, one paying Pro user whose plan was treated as an expired trial fixed it by canceling and subscribing again and reported no double charge.

Copilot isn't sold to Cuba, Iran, North Korea, Russia, Belarus or the Crimea, Donetsk and Luhansk regions of Ukraine under [GitHub's trade controls policy](https://docs.github.com/en/site-policy/other-site-policies/github-and-trade-controls), and no network change alters that.

When the plan looks right, refresh the sign-in with the steps from [GitHub's Copilot troubleshooting page](https://docs.github.com/en/copilot/how-tos/troubleshoot-copilot/troubleshoot-common-issues):

1. Click the **Accounts** icon in the lower-left corner of VS Code, hover over your GitHub username, and click **Sign out**.
2. Press F1 and run **Developer: Reload Window**.
3. Sign back in with the GitHub account that holds the Copilot plan or company seat.

## Do you need to update VS Code? Yes, if it's months behind

GitHub's documentation says every new version of Copilot Chat works only with the latest VS Code release, and that "older clients cannot communicate with the GitHub Copilot servers". Several reports filed between August and November 2026 came from VS Code 1.106.2, 1.107.1 and 1.109.x, versions released between November 2025 and February 2026, while the current release was already in the 1.135 to 1.144 range. VS Code ships roughly weekly, and as of November 4, 2026, the latest stable release is 1.145.0, published that day.

Run **Check for Updates** (under **Help** on Windows and Linux, under **Code** on macOS), then update the GitHub Copilot Chat extension in the Extensions view. Updating isn't guaranteed to help. One user on the main tracking issue fixed two machines this way on August 30, 2026, while another, in May, got Copilot back only by going down to 1.107.1. Update first when you're behind, and look elsewhere if the log already shows a network or license error.

## "The selected model '…' is not available" is a different error

Since VS Code 1.141.0, released October 7, 2026, a model you picked yourself that can't be found produces its own message: "The selected model '…' is not available. Select a different model and try again." This one is translated into your display language. Before [pull request #339307](https://github.com/microsoft/vscode/pull/339307), VS Code quietly ran such a request on the default model instead, which the code comment says also billed it to that model.

The two messages point in different directions. "Language model unavailable" means no default Copilot model resolved at all, so the whole list is missing; "The selected model … is not available" means one model you chose has disappeared while others may still work. For the second, pick another model or switch back to Auto. That includes readers who chose a Claude model inside Copilot Chat. If every model fails, go back to the table at the top.

## Leftover debug settings and skills folders: two rarer causes

Two causes come from single community reports, so act on them only when their log line is present. The first is a pair of user-level settings, `github.copilot.advanced.debug.overrideProxyUrl` and `github.copilot.advanced.debug.overrideCapiUrl`, which send Copilot's requests to another address. In [VS Code issue #337927](https://github.com/microsoft/vscode/issues/337927), filed September 25, 2026, a Copilot Business user whose Copilot worked in the browser had both pointing at a local port where nothing was listening. The log showed `net::ERR_CONNECTION_REFUSED` and `401 unauthorized: unable to validate HMAC for the given Copilot-Integration-ID`, and deleting both settings followed by Reload Window fixed it. Run **Preferences: Open User Settings (JSON)** and search for `github.copilot.advanced` to find them.

The second is the skills folders that other AI coding tools create. In a [GitHub community discussion from March 2026](https://github.com/orgs/community/discussions/188977), on VS Code 1.110.1, Copilot worked in the Copilot CLI but VS Code showed this error with `TypeError: e is not iterable` in the log. Copilot Chat scans `~/.claude/skills` and `~/.agents/skills` at startup, and skill files from another tool with duplicate names or an unsupported format broke the scan; renaming both folders fixed it. Whether current versions still fail this way isn't documented, so rename rather than delete, for example `mv ~/.claude/skills ~/.claude/skills.bak`, and move it back afterwards, since Claude Code reads its skills from that folder.

## Keep chatting with your own model while Copilot's list is down

VS Code can run chat on a model you connect with your own API key, and that path doesn't use Copilot's model list. The [VS Code language models documentation](https://github.com/microsoft/vscode-docs/blob/main/docs/agent-customization/language-models.md) says that in Local sessions, bring-your-own-key (BYOK) models work without a GitHub sign-in and without a Copilot plan. It doesn't repair Copilot: inline suggestions, semantic search and features that rely on embeddings still need a GitHub account, and Copilot Business or Enterprise admins can switch BYOK off by policy.

To add one, open **Manage Language Models** from the gear in the model picker, or run **Chat: Manage Language Models**, choose **Add Models** and then **Custom Endpoint**. Give it a group name, display name and API key, pick the API type (Chat Completions, Responses or Anthropic's Messages API), and VS Code opens `chatLanguageModels.json`. A minimal Chat Completions entry looks like this; replace the uppercase parts and set the token limits to your model's:

```json
[
  {
    "name": "My endpoint",
    "vendor": "customendpoint",
    "apiKey": "${input:myApiKey}",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "YOUR-MODEL-ID",
        "name": "My chat model",
        "url": "https://YOUR-HOST/v1/chat/completions",
        "toolCalling": true,
        "maxInputTokens": 128000,
        "maxOutputTokens": 16000
      }
    ]
  }
]
```

If you aren't signed in to GitHub, also set `chat.utilityModel` and `chat.utilitySmallModel` to that model, because the built-in utility models for titles and commit messages come from Copilot. The endpoint can be your own OpenAI key, an Anthropic key with the Messages type, a local model through the Ollama extension, or an OpenAI-compatible gateway such as laozhang.ai, whose base URL is `https://api.laozhang.ai/v1`. On November 4, 2026, a streaming request with a tool definition to `https://api.laozhang.ai/v1/chat/completions` using `gpt-5.4-mini` returned HTTP 200 in 3.24 seconds, with a correct `read_file` tool call, arguments `{"path":"README.md"}` and `finish_reason: tool_calls`. That request came from a test script, not from VS Code, so the editor side of the setup wasn't part of it. If you're still choosing a provider, [Best Free AI API Provider: Pick by Limits, Data Use, and Region](https://blog.laozhang.ai/en/posts/free-ai-api-tiers-compared) compares the free options.

*Disclosure: [laozhang.ai is our own service](https://blog.laozhang.ai/en/about#laozhang). Its prices are platform pricing, not an independent comparison.*

## GitHub Copilot "Language model unavailable": other questions

### Does "Language model unavailable" mean I've used up my Copilot credits?

Usually not. GitHub documents running out of allowance or being throttled as a separate error, "You've hit a rate limit", which tells you to wait for a reset or upgrade, and the Copilot status item in the VS Code status bar shows how many AI credits are left. In the extension code, a 429 response while models are already cached only logs a warning, so a rate limit tends to show up as that separate message. Without cached models, a 429 does land in the `Failed to fetch models` line, followed by the server's response text or the bare status.

### Why does Copilot work in the browser or in the Copilot CLI but not in VS Code?

They don't share the same connection. Copilot on github.com runs in your browser on GitHub's own site, and the Copilot CLI is a separate program, while Copilot Chat in VS Code fetches its model list from the Copilot API domains through VS Code's network stack and proxy settings. That's why the network test above runs both inside VS Code and in a terminal, and why the debug override settings and the skills-folder scan, which affect only the editor, are worth checking when the other two work.

### Do local models still work when Copilot can't load its models?

It depends on whose local model it is. A model you add yourself, such as one served by Ollama through the Ollama extension, works without a GitHub sign-in in Local sessions, according to the VS Code language models documentation. The on-device model that Copilot itself provides, MAI Code 1.1 Flash as of November 4, 2026, needs a GitHub sign-in, and Business or Enterprise admins have to enable Editor Preview Features for it. One user reported in February 2026 that when Copilot's endpoints were blocked, local models in the picker didn't work either.

## Sources

External pages this guide links to, in the order they appear. Last updated 2026-11-04.

- [GitHub Status](https://www.githubstatus.com/) (githubstatus.com)
- [Language Model Unavailable tracking issue](https://github.com/microsoft/vscode/issues/253137) (github.com)
- [VS Code agent troubleshooting guide](https://github.com/microsoft/vscode-docs/blob/main/docs/agents/agent-troubleshooting/troubleshooting.md) (github.com)
- [VS Code issue #331274](https://github.com/microsoft/vscode/issues/331274) (github.com)
- [VS Code issue #309766](https://github.com/microsoft/vscode/issues/309766) (github.com)
- [Copilot allowlist reference](https://docs.github.com/en/copilot/reference/copilot-allowlist-reference) (docs.github.com)
- [VS Code network documentation](https://github.com/microsoft/vscode-docs/blob/main/docs/setup/network.md) (github.com)
- [your Copilot settings on GitHub](https://github.com/settings/copilot) (github.com)
- [paused new Copilot Pro trials](https://github.blog/changelog/2026-04-10-pausing-new-github-copilot-pro-trials/) (github.blog)
- [GitHub's trade controls policy](https://docs.github.com/en/site-policy/other-site-policies/github-and-trade-controls) (docs.github.com)
- [GitHub's Copilot troubleshooting page](https://docs.github.com/en/copilot/how-tos/troubleshoot-copilot/troubleshoot-common-issues) (docs.github.com)
- [pull request #339307](https://github.com/microsoft/vscode/pull/339307) (github.com)
- [VS Code issue #337927](https://github.com/microsoft/vscode/issues/337927) (github.com)
- [GitHub community discussion from March 2026](https://github.com/orgs/community/discussions/188977) (github.com)
- [VS Code language models documentation](https://github.com/microsoft/vscode-docs/blob/main/docs/agent-customization/language-models.md) (github.com)
