Describe the bug
When a repository ships a Claude-Code agent definition in .claude/agents/<name>/AGENT.md with a model: field, the GitHub Copilot CLI honors that model: value as the default model for the Copilot custom agent of the same name — even when the agent is launched from .github/agents/<name>.md and even when the session runs on a different model.
On a BYOK provider (e.g. Ollama) where that model (sonnet, opus, …) is not served, spawning the agent as a task-tool subagent silently fails: the orchestrator reports Agent completed but produced no response. (or a Model '...' not found on provider ... (HTTP 404)), with no error surfaced to the caller.
Repro
- Session started with
COPILOT_MODEL=deepseek-v4-flash:cloud (Ollama BYOK) and --model deepseek-v4-flash:cloud.
- Repo contains:
.github/agents/developer.md — a Copilot custom agent (no model: field).
.claude/agents/developer/AGENT.md — a Claude-Code agent with model: sonnet.
- Orchestrator (
agent_type: test-orch, tool task) spawns task(agent_type: developer, mode: sync, ...).
Result: subagent fails / displays as Developer(sonnet), no response. Removing the model: sonnet line from .claude/agents/developer/AGENT.md, or moving the agent to user scope ~/.copilot/agents/, makes it inherit the session model and work.
Evidence (local bisect)
- With
.claude/agents/developer/AGENT.md (model: sonnet) present → Developer(sonnet), subagent fails.
- Removing only the
model: sonnet line → Developer(deepseek-v4-flash:cloud), subagent works.
- Removing the whole
.claude/agents/ dir → same fix.
- User-level
.copilot/agents/developer.md (no .claude counterpart, no model:) → inherits session model, works.
- Passing
model: deepseek-v4-flash:cloud explicitly to the task tool → overrides the .claude model, works.
The changelog confirms repo-level .claude/agents are intentionally discovered as custom agents, but honoring their Claude-specific model: hint for Copilot agents appears unintended and is the trigger.
Expected behaviour
Option A: .claude/agents/*/AGENT.md model: is treated as a Claude-Code-only hint and is ignored by the Copilot CLI (agents inherit the session model like .github/agents/*.md do).
Option B: a configuration flag/setting to ignore .claude models or force session-model inheritance for subagents.
Environment
- Copilot CLI 1.0.79, macOS.
- Provider: Ollama BYOK via
COPILOT_PROVIDER_BASE_URL, COPILOT_PROVIDER_WIRE_API=responses, COPILOT_MODEL.
Related
Describe the bug
When a repository ships a Claude-Code agent definition in
.claude/agents/<name>/AGENT.mdwith amodel:field, the GitHub Copilot CLI honors thatmodel:value as the default model for the Copilot custom agent of the same name — even when the agent is launched from.github/agents/<name>.mdand even when the session runs on a different model.On a BYOK provider (e.g. Ollama) where that model (
sonnet,opus, …) is not served, spawning the agent as atask-tool subagent silently fails: the orchestrator reportsAgent completed but produced no response.(or aModel '...' not found on provider ... (HTTP 404)), with no error surfaced to the caller.Repro
COPILOT_MODEL=deepseek-v4-flash:cloud(Ollama BYOK) and--model deepseek-v4-flash:cloud..github/agents/developer.md— a Copilot custom agent (nomodel:field)..claude/agents/developer/AGENT.md— a Claude-Code agent withmodel: sonnet.agent_type: test-orch, tooltask) spawnstask(agent_type: developer, mode: sync, ...).Result: subagent fails / displays as
Developer(sonnet), no response. Removing themodel: sonnetline from.claude/agents/developer/AGENT.md, or moving the agent to user scope~/.copilot/agents/, makes it inherit the session model and work.Evidence (local bisect)
.claude/agents/developer/AGENT.md(model: sonnet) present →Developer(sonnet), subagent fails.model: sonnetline →Developer(deepseek-v4-flash:cloud), subagent works..claude/agents/dir → same fix..copilot/agents/developer.md(no.claudecounterpart, nomodel:) → inherits session model, works.model: deepseek-v4-flash:cloudexplicitly to thetasktool → overrides the.claudemodel, works.The changelog confirms repo-level
.claude/agentsare intentionally discovered as custom agents, but honoring their Claude-specificmodel:hint for Copilot agents appears unintended and is the trigger.Expected behaviour
Option A:
.claude/agents/*/AGENT.mdmodel:is treated as a Claude-Code-only hint and is ignored by the Copilot CLI (agents inherit the session model like.github/agents/*.mddo).Option B: a configuration flag/setting to ignore
.claudemodels or force session-model inheritance for subagents.Environment
COPILOT_PROVIDER_BASE_URL,COPILOT_PROVIDER_WIRE_API=responses,COPILOT_MODEL.Related