Troubleshooting

GitHub Copilot Not Working? Diagnose It in Order

A diagnostic order for when Copilot goes silent, sorted by likelihood — starting with the checks that fail most often and the ones that fail invisibly.

GitHub Copilot Not Working? Diagnose It in Order/blog/github-copilot-not-working/

Copilot failing is rarely a bug. It is usually one of about a dozen ordinary conditions, and the reason it feels mysterious is that most of them fail silently — no error, no notification, just an absence of suggestions.

Work through these in order. They are sorted by how often they turn out to be the cause, not by how interesting they are.

1. Check the status icon before anything else

The Copilot icon in your editor’s status bar reports state, and people troubleshoot for twenty minutes without looking at it.

  • Icon missing entirely — the extension is not loaded. Reload the window first; reinstall only if that fails.
  • Icon with a diagonal line — Copilot is disabled, either globally or for this language. Click it; the menu says which.
  • Icon with a warning badge — usually authentication or network. Continue to step 2.
  • Normal icon, no suggestions — the interesting case. Skip to step 4.

2. Confirm you are actually signed in

Sessions expire, tokens are revoked, and organization membership changes without telling you.

Sign out and back in rather than assuming. In VS Code the command palette has GitHub Copilot: Sign Out, then sign in again and complete the device flow in the browser. That last part is where people stop — the flow needs you to paste a code into a web page and authorise there, and until you do, the editor sits unauthenticated with no error at all. Both JetBrains and VS Code behave this way.

If you are on a work account, also confirm your seat still exists. Seats get reassigned during licence reviews and the first symptom is Copilot quietly stopping.

3. Check whether you have run out of allowance

This one has become far more common since Copilot moved to credit allowances.

If you are on a paid individual plan you have a monthly allowance, and when it is gone, requests stop. Check your usage in GitHub billing settings. On Copilot Free the limit is stricter and easier to hit: 2,000 completions per month. Hit that on the 20th and Copilot is “broken” until the 1st.

See which plan actually fits your usage if you are hitting this repeatedly — it is a purchasing problem, not a technical one.

4. Suggestions stopped but everything looks fine

This is the case that generates the most confusion, and there are four common causes.

The file type is disabled. Copilot can be enabled globally and disabled for plaintext, markdown, or whatever you are currently editing. Click the status icon and check the per-language setting.

The file is excluded by policy. If your organization uses content exclusion, matching files get no completions and no explanation — that silence is the designed behaviour. Exclusion is configured by repository administrators and you may not be able to see the rules. If a specific repository or path is dead while others work, this is the likely cause. Read what content exclusion does and does not cover — notably, it does not apply uniformly across every surface, which is why the same file can behave differently in chat and in completion.

There is nothing to suggest. Copilot needs context. In an empty file with no imports, no neighbouring code and no comment describing intent, it often has nothing useful to offer and returns nothing. Write a function signature or a comment and see whether it wakes up.

Another extension is capturing the keybinding. Anything else that binds Tab or the inline-suggestion accept key will silently win. Check for conflicts on the accept keybinding before blaming Copilot.

5. Chat is missing, empty, or has lost its history

Chat has its own failure modes, distinct from completion.

History disappeared. Chat history is local to the editor and the workspace. Opening a different workspace, or a reinstall that cleared extension storage, takes the history with it. It is not stored server-side for you to recover.

Chat opens but never answers. Almost always network or proxy. Corporate proxies and TLS inspection break the streaming connection while leaving completions working, which makes the failure look selective and confusing.

Chat works but ignores your code. That is a context problem rather than a failure. Selecting the relevant code before asking, or naming the file explicitly, changes the answer completely — see how Copilot decides what context to use.

6. Agent mode refuses to act

Agent mode asks permission before running tools, and a pending approval that scrolled out of view looks exactly like a hang. Check for an unanswered approval prompt first.

If agent mode is absent entirely, check your plan: it is not available on every tier, and it is per-editor. Preview status also varies by editor — a feature can be generally available in VS Code and in preview in a JetBrains IDE, which is a rollout difference and not a fault.

7. The checks nobody makes

If you are still stuck, these three catch most of the remainder.

The extension is outdated. Copilot ships frequently and old versions break against server changes. Update before deep debugging.

Your network blocks the endpoints. Copilot needs outbound HTTPS to GitHub endpoints. VPNs, split tunnelling and corporate filtering interfere, and the symptom is intermittent rather than total — which is why it gets misdiagnosed as flakiness.

It is a GitHub incident. Before rebuilding your environment, check GitHub’s status page. Copilot has its own component there, and a degraded service produces exactly the silent failure this article is about.

It is the CLI, not the editor. Everything above is about Copilot inside an IDE. The command-line tool authenticates separately, keeps its own config and fails in its own ways, so an editor that works tells you nothing about a terminal that does not — the Copilot CLI installation and troubleshooting guide covers those separately.

Frequently asked questions

Why did Copilot work yesterday and not today? In order of likelihood: your allowance reset boundary passed and you exhausted it, your session expired, the extension auto-updated, or your organization changed a policy. Overnight changes usually mean account state, not code.

Why does Copilot work in one repository but not another? Content exclusion is the first thing to check, then per-language settings. Both fail silently and both are scoped in ways that produce exactly this symptom.

Does reinstalling fix it? Rarely, and it costs you your chat history. Reinstalling fixes a corrupted extension install, which is genuinely uncommon. Work through the steps above first — most causes are account, policy or network state that a reinstall does not touch.

Copilot gives suggestions but they are bad. Is that a fault? No, and it is a different problem. Quality tracks context: open the relevant files, select the code you mean, and give the model your project’s conventions through custom instructions. A model with no context produces generic code, which is working as designed.

How do I tell whether it is me or GitHub? Try a different repository and a different network — a phone hotspot is the fastest test. If it works elsewhere, the problem is local policy or network. If it fails everywhere, check the status page before anything else.

If you have worked through all of this and Copilot is still silent, the installation and verification walkthrough checks each feature independently, which is the fastest way to establish which part is actually broken rather than guessing.

Sources

Every version-sensitive claim on this page was checked against first-party documentation. Only sources actually used are listed.

Primary sources

Go deeper in the Academy