A minimal VS Code extension that unlocks the OpenAI Compatible (CustomOAI) model provider within GitHub Copilot Chat on VS Code Stable.
- GitHub Copilot Chat extension must be installed. This extension only unlocks a hidden provider within Copilot Chat — it does not work standalone.
VS Code Copilot Chat includes a "CustomOAI" provider that lets you connect any OpenAI-compatible API (e.g., local inference servers, third-party LLM providers). However, this provider is gated behind productQualityType != 'stable', meaning it only appears in VS Code Insiders.
This extension sets productQualityType to insiders on startup, making the CustomOAI provider visible in the model picker.
That's it. One line of effective code.
- Download the
.vsixfile from Releases - Open VS Code → press
Ctrl+Shift+P/Cmd+Shift+P - Type
Extensions: Install from VSIX...and select it - Restart VS Code
- Download the
.vsixfile from Releases - Run:
code --install-extension enable-copilot-customoai-0.0.1.vsix - Restart VS Code
- Restart VS Code after installation
- Open Copilot Chat → click the model picker
- Select "OpenAI Compatible" provider
- Configure your API endpoint and models
vscode.commands.executeCommand('setContext', 'productQualityType', 'insiders');This sets the VS Code context variable that Copilot Chat's languageModelChatProviders contribution point checks via its when clause:
"when": "productQualityType != 'stable'"Connecting to an OpenAI-compatible API (New API, One API, etc.):
[
{
"name": "my-api",
"vendor": "customoai",
"apiKey": "sk-your-api-key",
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o",
"url": "https://api.example.com/v1/chat/completions",
"toolCalling": true,
"vision": true,
"maxInputTokens": 128000,
"maxOutputTokens": 16000
}
]
}
]URL resolution rules:
- Domain:
https://api.example.com→ auto-appends/v1/chat/completions - With version:
https://api.example.com/v1→ auto-appends/chat/completions - Full path:
https://api.example.com/v1/chat/completions→ used as-is
This extension modifies an internal VS Code context variable. It may break if Microsoft removes or renames this variable in a future update.
MIT
Thanks to the LINUX DO community for their support and promotion.



