Skip to content

Sub-agents can run a different model than the configured session model (agent-type defaults + experiment override), with no surfacing #3824

@ericstj

Description

@ericstj

Summary

When the main agent is configured to a specific model, spawned sub-agents (Task tool: explore, general-purpose, etc.) frequently execute on a different model than the configured session model. Two distinct mechanisms produce this:

  1. Agent-type defaults — sub-agent types map to their own models (e.g. lightweight agents → a Haiku model), independent of the session model.
  2. A server-side model-selection experiment — for some session models a treatment arm routes the sub-agent to a different model family entirely (observed: Claude-model sessions routing sub-agents to GPT-5.x). Decisions surface in the CLI's own subagent_model_selection instrumentation as final_decision_reason = treatment_selected vs session_model_kept / explicit_override / experiment_disabled, with session_model / control_model / treatment_model / chosen_model fields.

Why this matters

  • Attribution: A run "using model X" silently executes part of its work (sub-agent tasks) on model Y/Z. For evaluation/benchmarking this misattributes cost, tokens, and behavior to the wrong model.
  • Nondeterminism / variance: The experiment arm (treatment vs control) makes two otherwise-identical runs use different sub-agent models, adding unexplained run-to-run variance.
  • Effort interaction: Sub-agents also inherit the persisted reasoning effort, so when routed to a model that lacks the configured level they hit the silent downgrade described in Reasoning effort "xhigh" silently downgraded to "medium" (not "max") on models without xhigh (e.g. claude-opus-4.6, claude-sonnet-4.6) #3823.
  • Visibility: There is no obvious user-facing indication of which model a sub-agent actually ran on.

Observed (at scale)

  • claude-opus-4.6 / claude-sonnet-4.6 sessions → sub-agent routed to gpt-5.4 (treatment_selected).
  • claude-opus-4.7 / claude-opus-4.8 sessions → sub-agent routed to gpt-5.5 (treatment_selected); control runs kept the session model (session_model_kept).
  • Sub-agents also ran models not present in the session's configured model at all (e.g. claude-haiku-4.5, claude-opus-4.8) via agent-type defaults.

Expected / requests

  • Make the sub-agent's effective model explicit and discoverable (transcript/headers or --verbose).
  • Provide a way to pin sub-agents to the session model (or an explicitly chosen model) — important for evaluation and reproducibility.
  • Clarify whether routing sub-agents to a different model family under an experiment is intended when the user has explicitly selected a model.

Environment

  • Copilot CLI 1.0.62, Windows, enterprise plan.

Related: #3823 (unsupported reasoning effort silently downgraded), which compounds this for sub-agents routed to a model lacking the configured effort.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agentsarea:modelsModel selection, availability, switching, rate limits, and model-specific behavior
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions