Features
- Native model picker — your subscription models appear under Universal Chat Provider in Copilot Chat, with context, output, tool, image, and reasoning metadata.
- Native Thinking Effort — models with multiple reasoning levels use VS Code's built-in selector instead of duplicated entries.
- Utility model — point Copilot's commit messages, chat titles, and summaries at your subscription models with one command. No Copilot subscription required.
- Zero setup (managed mode) — the extension downloads, verifies, and supervises the proxy for you; one shared server across all windows.
Supported logins
Sign in with any subscription you already have — no API key:
- 🟣 Claude — Claude Code / Pro / Max
- 🟢 Codex — ChatGPT Plus / Pro
- 🔵 Gemini — Gemini CLI
- ⚪ Grok — Grok Build
- 🟡 Kimi — Moonshot
- ⚫ Antigravity
[!WARNING]
Use entirely at your own risk and discretion. This extension routes chat through your personal AI subscription accounts (Claude, ChatGPT / Codex, Gemini, …) over OAuth. Accessing these subscriptions outside their official apps may violate the providers' Terms of Service and could result in rate limiting or account suspension. You alone are responsible for how you use it.
Quick start
Requires VS Code 1.124+ and the GitHub Copilot Chat extension.
- Install — get Universal Chat Provider from the VS Code Marketplace. Prefer to build it yourself? See Development.
- Add an account — accept the Add Account prompt (or run Universal Chat Provider: Add Account (Login)), pick a provider, and complete OAuth in your browser. Models refresh automatically.
- Chat — open Copilot Chat and select a model under Universal Chat Provider.
Manage everything from the status bar item or the Universal Chat Provider: Manage Provider command — list/remove accounts, restart, update, or reset the managed server.
External mode — bring your own CLIProxyAPI server
Prefer to run CLIProxyAPI yourself (e.g. a remote or shared instance)?
- Set
universalChatProvider.server.mode to external.
- Start CLIProxyAPI and complete the provider login there.
- Use the Import API Key notification action (when a local config is found) or Configure Connection to set the URL and key manually.
The API key is stored in VS Code SecretStorage. In external mode the extension never starts or stops the server. If your server exposes a plaintext remote-management.secret-key, the Add Account and Manage Accounts commands work against it too.
Utility model
Copilot generates commit messages, chat titles, and summaries with its own background models. Run Universal Chat Provider: Set Utility Model (or use the status bar menu) to point Copilot's chat.utilityModel and chat.utilitySmallModel at one of your subscription models instead, so those background flows run through your accounts. No Copilot subscription required. Clear the selection to undo.
How it works
GitHub Copilot Chat normally only talks to Copilot's own models. This extension bridges that gap: it runs a local CLIProxyAPI server, logs you into your AI subscriptions via OAuth, and registers their models as a native chat provider in VS Code. Pick them straight from the Copilot model dropdown.
Your subscriptions Local proxy VS Code
┌────────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Claude │ │ │ │ Copilot Chat │
│ ChatGPT / Codex │──┐ │ │ ┌─▶│ model picker │
│ Gemini │ ├─▶│ CLIProxyAPI │──┤ ├──────────────────┤
│ Grok · Kimi · … │──┘ │ (OAuth) │ └─▶│ Utility model │
└────────────────────┘ └──────────────┘ └──────────────────┘
Configuration
All settings
| Key |
Description |
Type |
Default |
universalChatProvider.server.mode |
How the CLIProxyAPI server is provided. 'managed' runs it for you; 'external' connects to your own instance. |
string |
"managed" |
universalChatProvider.server.version |
CLIProxyAPI release to run in managed mode. Use a pinned version for reproducible installs, or 'latest' to track new releases. |
string |
"7.2.5" |
universalChatProvider.server.suggestUpdates |
When a pinned managed server has a newer release within the same major version, offer to update to it. New major versions are never suggested automatically. No effect with 'latest' or in external mode. |
boolean |
true |
universalChatProvider.baseUrl |
Base URL of the CLIProxyAPI server. Used only in external mode; the managed server picks its own port. |
string |
"http://127.0.0.1:8317" |
universalChatProvider.configPath |
Optional path to CLIProxyAPI config.yaml for credential and model metadata discovery. |
string |
"" |
universalChatProvider.autoDetectConfig |
Search common local CLIProxyAPI config locations when no config path is set. |
boolean |
true |
universalChatProvider.defaultMaxOutputTokens |
Fallback output-token limit when CLIProxyAPI provides no model-specific value. |
number |
16384 |
universalChatProvider.debug |
Debug mode: show the live prompt-cache hit rate in the status bar and write per-request diagnostics to debug.jsonl in the extension's global storage — token usage (cache-read vs cache-write vs uncached, with a hit rate), the request message-prefix fingerprints, and the cross-turn prefix diff (what changed since the previous turn, the thing that breaks the cache). Off by default; use it to diagnose caching and rate-limit issues. |
boolean |
false |
All commands
| Command |
Title |
universalChatProvider.manage |
Universal Chat Provider: Manage Provider |
universalChatProvider.login |
Universal Chat Provider: Add Account (Login) |
universalChatProvider.manageAccounts |
Universal Chat Provider: Manage Accounts |
universalChatProvider.restartServer |
Universal Chat Provider: Restart Managed Server |
universalChatProvider.updateBinary |
Universal Chat Provider: Update Proxy Binary |
universalChatProvider.resetServer |
Universal Chat Provider: Reset Managed Server |
universalChatProvider.configure |
Universal Chat Provider: Configure Connection |
universalChatProvider.importConfig |
Universal Chat Provider: Import API Key from Config |
universalChatProvider.refresh |
Universal Chat Provider: Refresh Models |
universalChatProvider.setUtilityModel |
Universal Chat Provider: Set Utility Model (commit messages, chat titles, summaries) |
universalChatProvider.clearCredentials |
Universal Chat Provider: Clear Stored API Key |
universalChatProvider.showLogs |
Universal Chat Provider: Show Logs |
universalChatProvider.showServerLogs |
Universal Chat Provider: Show Server Output |
universalChatProvider.openSettings |
Universal Chat Provider: Open Settings |
Development
pnpm install
pnpm vscode:dts
pnpm check # lint + typecheck + tests + build
pnpm ext:package # produce an installable .vsix
Press F5 from VS Code Insiders to launch the Extension Development Host with the proposed APIs enabled. The opt-in live smoke test (pnpm test:e2e) makes real model requests and is excluded from pnpm check and CI because it can consume subscription quota.
License
MIT · Not affiliated with GitHub, OpenAI, Anthropic, or Google.