GitHub Copilot
Use your paid GitHub Copilot subscription in Empryo: sign in with a device code, watch the monthly allowance, run Claude, GPT and Gemini at no extra cost.
Copy & share
On this page11 sections
If you pay for GitHub Copilot, you can use it in Empryo. The Claude, GPT, and Gemini models your Copilot plan includes work in Empryo at no extra cost.
SetupLink to this section
Sign in
/login copilotEmpryo shows a short code and opens
github.com/login/device. Enter the code there and approve. Empryo stores the sign-in in your system keychain. You do not need an editor installed.Use it
Press
Ctrl+L, pickcopilot, and choose a model.bash empryo --headless --model copilot/claude-sonnet-4.6 "explain this file"
Company GitHub (Enterprise)Link to this section
Some companies run Copilot on their own GitHub instead of github.com. This is either GitHub Enterprise Cloud with data residency (an address like octocorp.ghe.com) or a self-hosted GitHub Enterprise Server. A sign-in on one GitHub does not work on another, so you give the host when you sign in:
/login copilot octocorp.ghe.com/login copilot enterprise asks you for the host instead. In the /login list, this is the GitHub Copilot (Enterprise) row, in both the terminal UI and the desktop app. Headless mode takes the host in the same place:
empryo --headless --login copilot octocorp.ghe.comGive the main host name of your company's GitHub. Empryo works out the other addresses from it:
| Your GitHub | Sign-in | API | Models |
|---|---|---|---|
| github.com | github.com | api.github.com | api.githubcopilot.com |
octocorp.ghe.com | octocorp.ghe.com | api.octocorp.ghe.com | copilot-api.octocorp.ghe.com |
| Enterprise Server | your host | <host>/api/v3 | the address GitHub returns at sign-in |
Empryo saves the host with your sign-in. To use a different host for a single run or in a CI image, set COPILOT_GITHUB_DOMAIN. Signing out switches back to github.com.
Business and Enterprise seats on github.com need none of this. Sign in with /login copilot as usual.
Reuse a sign-in from your editorLink to this section
If you already signed in to Copilot in VS Code or a JetBrains IDE, you can reuse that token:
jq -r '."github.com".oauth_token' ~/.config/github-copilot/apps.json
empryo --set-key copilot <token>On Windows, the file is at ~\AppData\Local\github-copilot\apps.json. You can also paste the token in /keys in the terminal UI.
Which models your plan can useLink to this section
Copilot's model list shows every model GitHub offers, not only the ones your plan includes. Copilot Free can only use the base GPT models, gpt-4.1 and gpt-4o. Any other model returns:
The requested model is not supported.GitHub's message does not say why, so Empryo adds the reason and your plan name to the error. Claude, Gemini, and the GPT-5 models need a paid Copilot plan.
Some new models require you to accept their terms before first use. Empryo accepts them for you the first time you pick the model, the same way the official editor extensions do.
Each model has its own reasoning effort levels in Copilot. /effort shows the levels your model supports. For example, Copilot's Claude models take low, medium, high, and max.
Usage and quotaLink to this section
Copilot gives you a monthly allowance instead of charging per token, so what matters is how much of the month's allowance is left. GitHub reports it, and Empryo shows it in the same kind of meter it uses for other subscriptions:
Subscription · copilot
● pro octocat
▸ premium [▰▰▰▰▰▱▱▱▱▱] 50% ↺ 12d
chat [▰▱▱▱▱▱▱▱▱▱] 10% ↺ 12d
completions [▱▱▱▱▱▱▱▱▱▱] 0% ↺ 12d editor onlyGitHub reports three allowances:
| Allowance | What uses it |
|---|---|
premium | Premium model requests. On a paid plan, this is what an Empryo turn uses |
chat | Chat requests. On Copilot Free, this is what an Empryo turn uses |
completions | Inline suggestions in an editor. Empryo never uses this |
That is why completions is dimmed and marked *editor only*. Running out of completions does not affect Empryo.
Where you can see it:
| Where | What you see |
|---|---|
| Terminal status bar | A meter next to the context meter, when you use a copilot/* model |
/usage | Every allowance, with the one that applies marked |
| Desktop status bar | The same meter. Click it to open the usage page |
| Desktop usage page | A Copilot card next to your other plans |
| Headless | A copilot: warning on stderr when an allowance is almost used up |
The status bar shows one plan meter, for the model you are using. A copilot/* model shows your Copilot allowance. A proxy/* model shows your proxy plan.
Empryo checks your allowance at most every five minutes. The numbers change slowly, and GitHub's Acceptable Use Policies ask clients not to send unnecessary automated requests.
Context size depends on your planLink to this section
Copilot often offers models with a smaller context window than the model supports natively. For example, a standard seat gets Claude Opus with 200k tokens, while Anthropic offers 1M. Seats with extended context get more. GitHub reports the numbers for your account.
Copilot reports two numbers for each model, and Empryo uses both:
| Copilot reports | Empryo uses it for |
|---|---|
max_context_window_tokens | The context size shown in the model picker |
max_prompt_tokens | How much of that window your input may use. Compaction works from this number |
If your seat has 1M-token context, open the model picker once. Empryo then loads your account's real numbers and shows the larger window. Until then, it uses the numbers for a standard seat. Guessing low is safer: if Empryo overestimated the window, it would compact too late and Copilot would reject the turn.
Where the model list comes fromLink to this section
Empryo builds the list from three sources, in this order. Each one only fills gaps the previous one left:
| Order | Source | What it adds |
|---|---|---|
| 1 | Your Copilot account | The models your plan includes, with their real limits and effort levels |
| 2 | models.dev | Models Copilot offers to other plans. Their windows are capped at Copilot's limits |
| 3 | A built-in list | Used only when neither source can be reached |
When you sign in with /login copilot, Empryo drops the previous account's list and loads the new one right away. Numbers from an old Free plan never linger after you upgrade or switch accounts.
Empryo shows only the models GitHub marks as available in its model picker, the same as the official client.
How Empryo identifies itselfLink to this section
GitHub can answer differently depending on which client asks. For example, extended context windows are offered to specific clients. So Empryo sends the same editor version headers a current Copilot client sends.
Empryo does not pretend to be GitHub Copilot Chat. Its User-Agent is `Empryo/<version>`. It also never sends invented machine or session ids.
You can override each value with an environment variable:
| Variable | Default |
|---|---|
COPILOT_EDITOR_VERSION | vscode/1.130.0 |
COPILOT_PLUGIN_VERSION | 0.58.0 |
COPILOT_INTEGRATION_ID | vscode-chat |
COPILOT_API_VERSION | 2026-08-01 |
For example, COPILOT_INTEGRATION_ID=copilot-cli empryo --list-models copilot asks GitHub for the model list as a different client. The source: line in the output tells you which of the three sources answered.
Request limitsLink to this section
GitHub's terms do not require a particular client. They do limit volume: the Acceptable Use Policies forbid "excessive automated bulk activity" and "undue burden on our servers through automated means", and GitHub can suspend API access for request rates it considers excessive.
Empryo keeps its traffic close to the official clients:
| VS Code extension | Empryo | |
|---|---|---|
| Model list | refreshed every 10 min, skipped while the window is inactive | kept for 30 min, never fetched twice within 1 min |
| Chat requests | one per agent step | one per agent step |
| Usage check | when you ask | at most every 5 min, only on a copilot/* model |
In practice:
- The model list is fetched at most once a minute. Signing in is the only exception.
- A 429 or 403 error stops requests instead of retrying. Empryo waits for the time GitHub asks for (or 15 minutes), uses your last saved model list, and tells you once.
- A rejected token is checked only once, never in a loop.
- Usage is checked at most every five minutes, and only when you use a
copilot/*model.
Legal positionLink to this section
GitHub changed its terms on 27 April 2026. Which terms apply depends on your plan:
| Plan | Terms |
|---|---|
| Business, Enterprise | GitHub Copilot Product Specific Terms |
| All other plans | Section J (AI Features) of the GitHub Terms of Service |
Section J covers who owns input and output, model training and how to opt out, disclaimers, and indemnity. It does not restrict which client you use. The limits that do apply come from other parts of the agreement:
What limits you (reviewed 2026-08-02)
- Section C, Acceptable Use Policies. AUP §4 forbids "excessive automated bulk activity" and putting undue load on GitHub's servers. A runaway loop could break this rule. Which editor you use does not.
- Section H, API Terms. GitHub may suspend API access for abuse or too many requests, at its own discretion. Sharing tokens to get around rate limits is forbidden.
- Section J.3, training. Unless you opt out in your account settings, GitHub may use your prompts and the model's output to improve its models. This applies to individual plans only, not to Customer Agreement seats.
What changed since the last review
The previous review (2026-04-04) pointed to the Copilot section of *Additional Products and Features* as evidence that other clients were allowed. GitHub has since rewritten that section. It now refers to Section J or the Product Specific Terms and no longer describes client behavior. The conclusion is the same, but the evidence for it is now in a different place.
Risks
- The API is internal to GitHub and can change without notice.
- Heavy use over a long time may trigger rate limits or an abuse warning.
- GitHub may change the terms again, as it did in April.
In one community discussion, a GitHub employee said the API is "intended solely for officially supported clients". That is not part of any legal document, but it is the clearest public statement of GitHub's intent.
The official routeLink to this section
GitHub now offers a supported way to build on Copilot:
| Package | What it is |
|---|---|
| `@github/copilot` | The official Copilot CLI |
| `@github/copilot-sdk` | An MIT-licensed TypeScript SDK that controls that CLI |
If using an approved integration matters more to you than using Copilot models inside Empryo, use that SDK. Empryo talks to Copilot's chat API directly instead. That is what lets Copilot models use Empryo's tools, the Genome (Empryo's map of your code), and compaction, like every other provider.
Check this page again if GitHub publishes new terms after 2026-08-02.