TLDR: Copilot's lacking documentation on model field syntax causes unnecessary confusion when creating custom agents (.agent.md) with BYOK/imported models like Deepseek. Proposed fix --> add short section to readme with correct model and vendor syntax.
This might seem like a trivial request to anyone already familiar with this process, but I assure you my journey to solving this simple problem was not trivial in the slightest. I recently was trying to figure out how to do agent orchestration with the deepseek APIs, specifically creating .copilot .agent md files for orchestrator sub-agent workflows (create custom agent). I encountered an issue with the "model" field where it kept telling me the model was not recognized. (this was for global agents but I'd assume the following also applies to project scoped agent files as well)
Specifically (task worker .agent file snippet)
description: >-
Handles high token cost operations such as searching
and reading for the orchestrating agent.
name: "Task Worker SubAgent"
model: "DeepSeek V4 Flash (copilot)"
tools: ['search', 'read', 'web', 'todo', 'vscode/memory', 'execute/getTerminalOutput']
user-invocable: false
disable-model-invocation: false
model: "DeepSeek V4 Flash (copilot)"
Was throwing the error.
Note that Deepseek V4 Pro was actually the one who added (copilot) as the vendor, which goes to show that if flagship models are getting confused this problem might be deeper than it seems.
After some digging I discovered you must provide the vendor name in parenthesis
Like such:
model: "DeepSeek V4 Pro (<vendor_name>)"
From my online searching, when making .agent md files with external apis you would be directly adding them to the chatLanguageModels.json file under customendpoint. So my first thought was to check this file to see what this extension's vendor id/name was, but it wasn't present in the file.
So I decided to attempt with different variations of "Deepseek" in the .agent file since I couldn't find any explicit documentation for what the vendor name was supposed to be.
model: "DeepSeek V4 Pro (Deepseek)"
model: "DeepSeek V4 Pro (Deep-seek)"
model: "DeepSeek V4 Pro (Deep-seek)"
model: "DeepSeek V4 Pro (Deep seek)"
You get the point
After a few failed attempts (just kept saying model wasn't recognized)
I came to the conclusion that the extension simply did not offer the functionality to create custom agents.
Which then sent me down a whole nother rabbit hole of manually adding the endpoints to the chatLanguageModels.json, which ended up working, but I then lost the Deepseek terminal output stream (since I disabled the extension after adding the endpoints), which was quite annoying.
I decided to try a few more deepseek combinations before I gave up completely and moved to claude code or something. And boom, it ended up being
model: "DeepSeek V4 Pro (deepseek)"
Thus the correct vendor name was simply deepseek.
So yeah, in hindsight, that's pretty dang obvious, but in my defense, there really is strikingly little documentation on this feature for how important it is. Thus my suggestion is add a quick section (or footnote) to the documentation that mentions this simple fact. Again I want to reiterate I'm in no way placing the blame for this on you guys, this is purely a failing on GH copilot's documentation team for not simply stating that in majority of cases the vendor name is the company's name in all lowercase (possible exceptions?), and not making it more clear how the vendor name is exported/exposed from vs code extensions and resolved in the language server and .agent md file.
My proposed solution: [submitted as a single commit PR --> "docs(readme): clarify custom agent model syntax"]
Custom Agents (.agent.md)
- Use this exact syntax for the
model field, with the lowercase vendor name 'deepseek' in parenthesis
model: 'DeepSeek V4 Flash (deepseek)'
- If using both Pro and Flash
model: ['DeepSeek V4 Flash (deepseek)', 'DeepSeek V4 Pro (deepseek)']
[preview screenshot for reference]

No hard feelings if PR is denied, thought it would be worth a try (lol). Have been a big Deepseek fan for years (was part of the first wave of early adopters in US) and recently parted ways with GH Copilot student developer license so this probably won't be the last you see of me 😅
TLDR: Copilot's lacking documentation on
modelfield syntax causes unnecessary confusion when creating custom agents (.agent.md) with BYOK/imported models like Deepseek. Proposed fix --> add short section to readme with correct model and vendor syntax.This might seem like a trivial request to anyone already familiar with this process, but I assure you my journey to solving this simple problem was not trivial in the slightest. I recently was trying to figure out how to do agent orchestration with the deepseek APIs, specifically creating .copilot .agent md files for orchestrator sub-agent workflows (create custom agent). I encountered an issue with the "model" field where it kept telling me the model was not recognized. (this was for global agents but I'd assume the following also applies to project scoped agent files as well)
Specifically (task worker .agent file snippet)
model: "DeepSeek V4 Flash (copilot)"
Was throwing the error.
Note that Deepseek V4 Pro was actually the one who added (copilot) as the vendor, which goes to show that if flagship models are getting confused this problem might be deeper than it seems.
After some digging I discovered you must provide the vendor name in parenthesis
Like such:
model: "DeepSeek V4 Pro (<vendor_name>)"From my online searching, when making .agent md files with external apis you would be directly adding them to the chatLanguageModels.json file under customendpoint. So my first thought was to check this file to see what this extension's vendor id/name was, but it wasn't present in the file.
So I decided to attempt with different variations of "Deepseek" in the .agent file since I couldn't find any explicit documentation for what the vendor name was supposed to be.
After a few failed attempts (just kept saying model wasn't recognized)
I came to the conclusion that the extension simply did not offer the functionality to create custom agents.
Which then sent me down a whole nother rabbit hole of manually adding the endpoints to the chatLanguageModels.json, which ended up working, but I then lost the Deepseek terminal output stream (since I disabled the extension after adding the endpoints), which was quite annoying.
I decided to try a few more deepseek combinations before I gave up completely and moved to claude code or something. And boom, it ended up being
model: "DeepSeek V4 Pro (deepseek)"Thus the correct vendor name was simply deepseek.
So yeah, in hindsight, that's pretty dang obvious, but in my defense, there really is strikingly little documentation on this feature for how important it is. Thus my suggestion is add a quick section (or footnote) to the documentation that mentions this simple fact. Again I want to reiterate I'm in no way placing the blame for this on you guys, this is purely a failing on GH copilot's documentation team for not simply stating that in majority of cases the vendor name is the company's name in all lowercase (possible exceptions?), and not making it more clear how the vendor name is exported/exposed from vs code extensions and resolved in the language server and .agent md file.
My proposed solution: [submitted as a single commit PR --> "docs(readme): clarify custom agent model syntax"]
Custom Agents (.agent.md)
modelfield, with the lowercase vendor name 'deepseek' in parenthesis[preview screenshot for reference]

No hard feelings if PR is denied, thought it would be worth a try (lol). Have been a big Deepseek fan for years (was part of the first wave of early adopters in US) and recently parted ways with GH Copilot student developer license so this probably won't be the last you see of me 😅