Custom agent frontmatter: accept array for `model:` field
- Dominant language
- Shell
- Stars
- 11.2k
- Forks
- 1.9k
- Avg merge
- 14h 16m
- Merged PRs (30d)
- 6
Description
### Feature request
Allow custom agent markdown frontmatter to accept an **array** of strings for the `model:` field, in addition to a single string.
### Motivation
VS Code chat modes already support `model:` as a list — it's used to present a model picker for the chat mode. This means the same agent definition file can't currently be shared cleanly between VS Code and Copilot CLI: the CLI rejects the file with:
`custom agent markdown frontmatter is malformed: model: Expected string, received array`
This forces plugin authors to either:
- Maintain two copies of every agent file (one for VS Code, one for CLI), or
- Pick one tool and accept that the agent won't load in the other.
### Proposed behavior
When `model:` is an array, the CLI uses the **first** entry as the default model for that agent (and ideally treats the rest as acceptable alternates the user can switch to with `/model` while invoking the agent). When `model:` is a string, behavior is unchanged.
### Alternatives considered
- Authors flatten `model:` to a single string — works in both, but loses the picker UX in VS Code.
- A local post-install patch script — fragile, breaks after every `plugin update`.
Accepting an array in the CLI parser is the only change that lets the same plugin work unmodified in both surfaces.
Contributor guide
Research direction
Start by locating the custom-agent Markdown frontmatter parser and the validation for its model field. Verify that string behavior is unchanged, arrays use the first entry as the default, and malformed values still fail; add or update parser tests if present.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- markdown, shell
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100