🚀 LiteLLM Connector for GitHub Copilot Chat

Bring any LiteLLM-supported model into the Copilot Chat model picker — OpenAI, Anthropic, Google, Mistral, local Llama, and more. If LiteLLM can talk to it, Copilot can use it.
🆕 What's New in 2.5.6
Version 2.5.6 adds Claude Fable 5.1 / Mythos 5.1 compatibility and removes ~2,700 lines of dead code.
- 🤖 Claude Fable 5.1 / Mythos 5.1 compatibility — Forced
tool_choice is downgraded to "auto" (these models reject it with a 400), retained thinking_blocks are stripped when front-trimming invalidates their conversation binding, the one-shot continuity retry recognizes the Fable-specific rejection strings, and stop_reason: "refusal" (HTTP 200) is detected and logged on both endpoints.
- 🎚️ Sampling params stripped for Fable 5.1 —
temperature, top_p, and top_k are removed for claude-fable-5-1 / claude-mythos-5-1 (non-default values 400), covering proxies whose model cards misreport capabilities. Model-card lists still win.
- 🧭 Unified model-ID matching — The
tool_choice downgrade and sampling guard now share one boundary-aware matcher, so aliased IDs (anthropic.claude-fable-5-1-v1:0, claude-fable-5-1@20260801) get both protections together.
- 🗑️ Removed the dead V2 message pipeline — ~2,700 lines of orphaned message-conversion code that no provider called. No behavior change; all four coverage categories improved.
See CHANGELOG.md for previous release notes.
⭐️ Support the Project
⚡ Quick Start (60 Seconds)
- Install GitHub Copilot Chat (if not already installed)
- Install LiteLLM Connector for Copilot
- Open Command Palette (
Ctrl+Shift+P)
- Run LiteLLM: Manage Configuration
- Add a provider group:
- Name (e.g., "Cloud", "Local")
- Base URL (e.g.,
http://localhost:4000)
- API Key (required)
- Open Copilot Chat → pick a model → start chatting!
✅ Requirements
- 🖥️ VS Code 1.120+
- 🌐 A LiteLLM proxy URL and API key
No Copilot subscription required. BYOK models work without a GitHub login or Copilot plan — including air-gapped scenarios. See Using BYOK Without Copilot to redirect the Copilot-backed utility models to your LiteLLM models.
✨ Features & Differentiators
| Feature |
Why It Matters |
| 🔌 Direct LiteLLM Integration |
No third-party wrappers — talks to your proxy directly with native message formatting, streaming, and tool handling |
| 🧩 Native VS Code Integration |
Model picker groupings, category tags, reasoning effort selectors, token indicators — all first-class in VS Code's Language Model API |
| 👤 Single-Maintainer Project |
Direct access to the person who builds it. Fast decisions, straightforward communication. We test thoroughly but things slip through — report issues, we respond. |
| 🌍 Any Model |
Access GPT-4, Claude, Gemini, Llama, DeepSeek, and more |
| ⛓️ Multi-Backend |
Aggregate from multiple proxies with proper isolation — each backend stays grouped in the picker |
| 💭 Thinking Support |
Full Anthropic thinking content (signatures, redacted, display metadata) |
| 🌊 Real-Time Streaming |
Watch responses as they're generated |
| 🛠️ Tool Calling |
Models can use tools to interact with your workspace |
| 👁️ Vision |
Image analysis support |
| 📊 Token Tracking |
Real-time input/output token usage |
| ✍️ Commit Generation |
Generate conventional commit messages from staged changes |
| 🔐 Secure |
API keys stored in VS Code's encrypted storage |
🐛 Troubleshooting
Models not showing up?
- Run LiteLLM: Manage Configuration and verify Base URL + API key
- Run LiteLLM: Reload Models to force refresh
- If stuck: Remove LiteLLM provider groups via LiteLLM: Manage Configuration → VS Code's Language Models UI, then re-add
🚫 Using BYOK Without Copilot
BYOK models work without signing into a GitHub account or a Copilot plan, including fully air-gapped scenarios. Your LiteLLM Connector models appear in the Chat model picker and work for chat and agent workflows with no Copilot subscription required.
A few Copilot-backed features stop working without a login because their defaults point at Copilot models. You can redirect all of them to your LiteLLM Connector models so the full chat experience keeps working offline.
⚠️ Keep chat.byokUtilityModelDefault set to GitHub Copilot. This setting governs how BYOK models are surfaced. Changing it can prevent your BYOK models from appearing in the picker.
Settings that take a fully qualified model name
A fully qualified model name is litellm-connector/<provider-group>/<model>, matching the identifier shown in the Chat model picker.
| Setting |
What it controls |
github.copilot.selectedCompletionModel |
Inline completions model |
github.copilot.chat.workspace.preferredEmbeddingsModel |
Semantic search embeddings |
github.copilot.chat.instantApply.shortContextModelName |
Instant Apply short-context model |
Settings that use a model dropdown
These settings present a dropdown of every available model (including your BYOK models). Pick the LiteLLM Connector model you want from the list.
| Setting |
What it controls |
chat.utilityModel |
Background utility model (chat titles, rename suggestions) |
chat.utilitySmallModel |
Lightweight utility model (commit messages, summaries) |
Example settings.json
{
// Keep this as "GitHub Copilot" so BYOK models are surfaced correctly.
"chat.byokUtilityModelDefault": "GitHub Copilot",
// Redirect Copilot-backed features to LiteLLM Connector models.
"github.copilot.selectedCompletionModel": "litellm-connector/<group>/<model>",
"github.copilot.chat.workspace.preferredEmbeddingsModel": "litellm-connector/<group>/<embedding-model>",
"github.copilot.chat.instantApply.shortContextModelName": "litellm-connector/<group>/<model>",
// Pick these from the model dropdown in Settings UI.
"chat.utilityModel": "litellm-connector/<group>/<model>",
"chat.utilitySmallModel": "litellm-connector/<group>/<small-model>"
}
Replace <group> with your provider group name and the model placeholders with models from your LiteLLM proxy. Reload the window (Developer: Reload Window) for changes to take effect.
Copy a fully qualified model name
After configuring a provider, run LiteLLM: Reload Models, then run LiteLLM: Show Available Models. Select a model to copy its fully qualified ID to the clipboard for use in VS Code BYOK settings.
The picker shows a friendly model name but copies the complete model ID, including the provider-group namespace. Use the copied value for settings such as github.copilot.selectedCompletionModel, chat.utilityModel, and chat.utilitySmallModel.
Enterprise note: For Copilot Business or Enterprise, organization administrators can control BYOK availability through Copilot policy settings.
⚙️ Configuration
Base URL + API key are configured through VS Code's Language Models UI (run LiteLLM: Manage Configuration).
Standard Settings
| Setting |
Default |
Description |
commitModelIdOverride |
"" |
Model ID for commit message generation. Accepts the complete litellm-connector/<group>/<model> value copied from the model picker; the vendor prefix is normalized automatically. |
inactivityTimeout |
60 |
Seconds before stream is considered idle |
disableCaching |
false |
When enabled, bypass LiteLLM caching for models that advertise support for the cache parameter |
enableModelOverrides |
false |
Enable model-card override rules |
displayPricingInPicker |
true |
Show model pricing in picker details, hovers, and cost metadata; native model-name rows remain price-free |
discoveryTimeoutMs |
5000 |
Timeout (ms) for model discovery |
discoveryCacheTtlMs |
60000 |
Cache TTL (ms), 0 to disable |
discoveryFireDebounceMs |
250 |
Debounce (ms) for change notifications |
discoveryFireMinIntervalMs |
2000 |
Min interval (ms) between notifications |
Reasoning model-card overrides are disabled by default. Enable enableModelOverrides when LiteLLM reports incorrect or incomplete reasoning metadata. Overrides replace or add only the explicitly named LiteLLM fields; related fields are not inferred.
🛠️ Help: Applying a Model Override
Model overrides are disabled by default. To correct incomplete LiteLLM /model/info metadata:
- Open Preferences: Open User Settings (JSON) or Preferences: Open Workspace Settings (JSON).
- Set
litellm-connector.enableModelOverrides to true.
- Add a matching rule to
litellm-connector.modelOverrides.
- Run LiteLLM: Reload Models.
Use the raw LiteLLM model_name and exact snake_case model-card fields. Only explicitly defined fields are changed; related fields are not inferred.
{
"litellm-connector.enableModelOverrides": true,
"litellm-connector.modelOverrides": [
{
"match": "^gpt-4\\.8$",
"supports_reasoning": true,
"supports_max_reasoning_effort": true
}
]
}
Define each desired effort explicitly, such as supports_xhigh_reasoning_effort: true. Setting one effort field does not enable supports_reasoning or any other effort field automatically.
Advanced (JSON-Only)
These aren't in Settings UI — add to settings.json if needed:
| Setting |
Default |
Why Use It |
forceResponsesEndpoint |
false |
Force all models to use /responses endpoint for consistent reasoning/thinking support |
allowChatCompletionsFallback |
false |
Fall back to /chat/completions if /responses fails (needs forceResponsesEndpoint: true) |
⌨️ Commands
- LiteLLM: Manage Configuration — Add/edit provider groups
- LiteLLM: Reload Models — Refresh model list
- LiteLLM: Show Available Models — View discovered models
- LiteLLM: Generate Commit Message — Generate commit from staged changes
- LiteLLM: Set Log Level — Change logging verbosity
📋 Feedback & Issues
🧩 Notes
- This extension is a language model provider for VS Code Chat
- Works with or without GitHub Copilot (BYOK models work without a Copilot subscription)
- VS Code Chat (formerly Copilot Chat) is built into VS Code 1.120+
📜 License
Apache-2.0 © GethNet