github / github/copilot-cli

🐛 Repo `.claude/agents/*/AGENT.md` `model:` field overrides session model for Copilot custom agents, breaking subagent spawns on BYOK providers

Offen
#4,437 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

area:agents area:models
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

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

  1. Session started with COPILOT_MODEL=deepseek-v4-flash:cloud (Ollama BYOK) and --model deepseek-v4-flash:cloud.
  2. 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.
  3. 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

  • #3266 (background task agents silently substitute requested model)
  • #2758 (opt-out for the cost-multiplier guard that clamps subagent model to session model)

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit nachzuverfolgen, wie repo-level .claude/agents/*/AGENT.md entdeckt wird und wie sein model-Feld auf Copilot custom agents abgebildet wird; vergleiche dies mit .github/agents/developer.md und ~/.copilot/agents/developer.md. Reproduziere dies mit Ollama BYOK und task(agent_type: developer), und überprüfe anschließend, dass der Subagent das Sitzungsmodell übernimmt und eine Antwort zurückgibt, wenn das Claude-Modell nicht verfügbar ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
ollama, shell
Bereich
ai, cli
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
50/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.