related to #322751: Idea is good, but implementation is flawed: currently if no utility model selected, Copilot just fails to respond, showing the error
No utility model is configured for 'copilot-utility-small' while the selected main model is BYOK.
Moreover, I'm using llama.cpp with the model fitted tightly to VRAM, so re-loading the model is much higher overhead than just using the currently selected one for small requests. But if I have Qwen3.6 selected, and my utility model is, for example, Gemma 4 12B, its usage will require re-loading the model. To avoid that, there should be an option "Use same model as the main selected one", and a way to select models of a different provider (currently, dropdowns for utility models only list models of the BYOK provider).
- Copilot Chat Extension Version: builtin to VS Code
- VS Code Version: 1.128.0-insider (7e7f950)
- OS Version: 10.0.26200.8655
- Feature (e.g. agent/edit/ask mode): Agent
- Selected model (e.g. GPT 4.1, Claude 3.7 Sonnet): BYOK
- Logs:
2026-07-02 11:48:59.653 [warning] [IntentDetector] Skipping participant detection context telemetry: No utility model is configured for 'copilot-utility-small' while the selected main model is BYOK.
2026-07-02 11:48:59.712 [warning] [virtual-tools] Had to drop 1 tools due to limit constraints
2026-07-02 11:48:59.713 [warning] [virtual-tools] Had to drop 1 tools due to limit constraints
2026-07-02 11:48:59.722 [error] Error: No utility model is configured for 'copilot-utility-small' while the selected main model is BYOK.
at f_._resolveUtilityFamily (/home/user/.vscode-server-insiders/bin/7e7f9505b9ef0a7a0899794997d4b1cb608084fc/extensions/copilot/dist/extension.js:6873:16909)
2026-07-02 11:49:00.811 [info] message 0 returned. finish reason: [stop]
2026-07-02 11:49:00.813 [info] request done: requestId: [fe717424-7a8a-439a-aaca-82bc4bc7f0d0] model deployment ID: []
2026-07-02 11:49:00.814 [info] ccreq:ade8e125.copilotmd | success | gpt-4o-mini-2024-07-18 | 679ms | [title]
Steps to Reproduce:
- Configure
chatLanguageModels.json to include
{
"name": "llama.cpp@:8080",
"vendor": "customendpoint",
"apiType": "chat-completions",
"models": [
{
"id": "qwen3.6-reap-moe-256k",
"name": "Qwen3.6-28B-REAP20-A3B-256k",
"url": "http://127.0.0.1:8080/",
"toolCalling": true,
"vision": true,
"maxInputTokens": 229376,
"maxOutputTokens": 32768
},
{
"id": "gemma4-12b-256k",
"name": "unsloth_gemma-4-12b-it-GGUF:Q6_K_XL-256k",
"url": "http://127.0.0.1:8080/",
"toolCalling": true,
"vision": true,
"maxInputTokens": 229376,
"maxOutputTokens": 32768
},
]
- Open Agentic panel, select Qwen3.6-28B-REAP20-A3B-256k
- Say "Hi", Enter
you'll get the error
No utility model is configured for 'copilot-utility-small' while the selected main model is BYOK.
- Configure
unsloth_gemma-4-12b-it-GGUF:Q6_K_XL-256k in vscode-insiders://settings/chat.utilitySmallModel
- Retry the response
You'll see the local engine will load the second model (along with the first one if limit permits, or will unload the first model) for the utility use, then switch back to the first model, which is much slower than just generating everything with the same main model.
You may ask, why would I select qwen while gemma is configured as the utility? I frequently switch between models, including a few of my BYOK and models provided by Copilot.
The previous behavior of always using copilot models for utility worked for me mostly, but it is flawed in some parts and for example prevented me from ever using commit message generation with copilot. Also it fails when internet connectivity is missing. This in an opportunity to fix both issues!
Also perhaps, the utility model should be configurable per provider in chatLanguageModels.json, with same options as available in the user settings.json, so a cloud BYOK configuration allow setting up different chat.utilityModel and chat.utilitySmallModel, while llama.cpp config having main there (or some other non-model-name keyword) to avoid re-loading.
Either way, utility models should not be restricted to the same provider as the main selected model.
related to #322751: Idea is good, but implementation is flawed: currently if no utility model selected, Copilot just fails to respond, showing the error
Moreover, I'm using llama.cpp with the model fitted tightly to VRAM, so re-loading the model is much higher overhead than just using the currently selected one for small requests. But if I have Qwen3.6 selected, and my utility model is, for example, Gemma 4 12B, its usage will require re-loading the model. To avoid that, there should be an option "Use same model as the main selected one", and a way to select models of a different provider (currently, dropdowns for utility models only list models of the BYOK provider).
Steps to Reproduce:
chatLanguageModels.jsonto includeyou'll get the error
unsloth_gemma-4-12b-it-GGUF:Q6_K_XL-256kin vscode-insiders://settings/chat.utilitySmallModelYou'll see the local engine will load the second model (along with the first one if limit permits, or will unload the first model) for the utility use, then switch back to the first model, which is much slower than just generating everything with the same main model.
You may ask, why would I select qwen while gemma is configured as the utility? I frequently switch between models, including a few of my BYOK and models provided by Copilot.
The previous behavior of always using copilot models for utility worked for me mostly, but it is flawed in some parts and for example prevented me from ever using commit message generation with copilot. Also it fails when internet connectivity is missing. This in an opportunity to fix both issues!
Also perhaps, the utility model should be configurable per provider in
chatLanguageModels.json, with same options as available in the usersettings.json, so a cloud BYOK configuration allow setting up differentchat.utilityModelandchat.utilitySmallModel, while llama.cpp config havingmainthere (or some other non-model-name keyword) to avoid re-loading.Either way, utility models should not be restricted to the same provider as the main selected model.