Does this issue occur when all extensions are disabled?: Yes
customendpoint language models display id instead of name, causing duplicate-looking models in picker and Manage Language Models
I tested the BYOK language model changes introduced in VS Code v1.122, especially around local/custom models.
I configured my chatLanguageModels.json according to the documentation here:
https://code.visualstudio.com/docs/copilot/customization/language-models#_add-a-custom-endpoint-model
For models configured with:
"vendor": "customendpoint"
the displayed model name appears to be taken from the model id instead of the name field.
This also occurs other vendors.
As a result, I cannot add the same underlying model twice with the same id but different name values and different configuration parameters, because both entries are shown with the same visible name. This causes the models to look duplicated/colliding in both the model picker and the Chat: Manage Language Models UI.
Repro Steps
- Open VS Code v1.122.0.
- Configure
chatLanguageModels.json with a customendpoint vendor.
- Add two models with the same
id but different name values.
- Open the model picker or run Chat: Manage Language Models.
- Observe the displayed model names.
Example configuration:
[
{
"name": "example",
"vendor": "customendpoint",
"apiKey": "${input:chat.lm.secret.example}",
"apiType": "chat-completions",
"models": [
{
"id": "Qwen3.6-27B",
"name": "Qwen3.6-27B",
"url": "https://example.com/v1",
"toolCalling": true,
"vision": true,
"maxInputTokens": 229376,
"maxOutputTokens": 32768,
"thinking": false,
"streaming": true,
"zeroDataRetentionEnabled": false,
"reasoningEffortFormat": "chat-completions"
},
{
"id": "Qwen3.6-27B",
"name": "Qwen3.6-27B-thinking",
"url": "https://example.com/v1",
"toolCalling": true,
"vision": true,
"maxInputTokens": 180224,
"maxOutputTokens": 81920,
"thinking": true,
"streaming": true,
"zeroDataRetentionEnabled": false,
"reasoningEffortFormat": "chat-completions"
}
]
}
]
Actual Behavior
Both customendpoint models are displayed using the id value:
This happens in:
- Model picker
- Chat: Manage Language Models
Because of this, two entries with the same id and different name values are indistinguishable in the UI.
Expected Behavior
The visible model name should use the name field, as it does for other vendors.
For the example above, the UI should show:
Qwen3.6-27B
Qwen3.6-27B-thinking
This would allow users to register the same underlying model more than once with different parameters, such as different context size, output token limits, thinking mode, or other endpoint-specific options.
Additional Notes
This seems all vendor behave same like vendor: "customendpoint". Other vendor configurations don't appear to respect the name field for the visible model name.
VS Code Version
Version: 1.122.0 (system setup)
Commit: 6a49527b96e326fe62fbdb56f60e16877c9aa724
Date: 2026-05-27T14:03:01-07:00
Electron: 39.8.8
ElectronBuildId: 13870025
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.22631

Does this issue occur when all extensions are disabled?: Yes
customendpointlanguage models displayidinstead ofname, causing duplicate-looking models in picker and Manage Language ModelsI tested the BYOK language model changes introduced in VS Code v1.122, especially around local/custom models.
I configured my
chatLanguageModels.jsonaccording to the documentation here:https://code.visualstudio.com/docs/copilot/customization/language-models#_add-a-custom-endpoint-model
For models configured with:
the displayed model name appears to be taken from the model
idinstead of thenamefield.This also occurs other vendors.
As a result, I cannot add the same underlying model twice with the same
idbut differentnamevalues and different configuration parameters, because both entries are shown with the same visible name. This causes the models to look duplicated/colliding in both the model picker and the Chat: Manage Language Models UI.Repro Steps
chatLanguageModels.jsonwith acustomendpointvendor.idbut differentnamevalues.Example configuration:
[ { "name": "example", "vendor": "customendpoint", "apiKey": "${input:chat.lm.secret.example}", "apiType": "chat-completions", "models": [ { "id": "Qwen3.6-27B", "name": "Qwen3.6-27B", "url": "https://example.com/v1", "toolCalling": true, "vision": true, "maxInputTokens": 229376, "maxOutputTokens": 32768, "thinking": false, "streaming": true, "zeroDataRetentionEnabled": false, "reasoningEffortFormat": "chat-completions" }, { "id": "Qwen3.6-27B", "name": "Qwen3.6-27B-thinking", "url": "https://example.com/v1", "toolCalling": true, "vision": true, "maxInputTokens": 180224, "maxOutputTokens": 81920, "thinking": true, "streaming": true, "zeroDataRetentionEnabled": false, "reasoningEffortFormat": "chat-completions" } ] } ]Actual Behavior
Both
customendpointmodels are displayed using theidvalue:This happens in:
Because of this, two entries with the same
idand differentnamevalues are indistinguishable in the UI.Expected Behavior
The visible model name should use the
namefield, as it does for other vendors.For the example above, the UI should show:
This would allow users to register the same underlying model more than once with different parameters, such as different context size, output token limits, thinking mode, or other endpoint-specific options.
Additional Notes
This seems all vendor behave same like
vendor: "customendpoint". Other vendor configurations don't appear to respect thenamefield for the visible model name.VS Code Version