You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
Agent-type defaults — sub-agent types map to their own models (e.g. lightweight agents → a Haiku model), independent of the session model.
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.
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.
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:subagent_model_selectioninstrumentation asfinal_decision_reason=treatment_selectedvssession_model_kept/explicit_override/experiment_disabled, withsession_model/control_model/treatment_model/chosen_modelfields.Why this matters
Observed (at scale)
claude-opus-4.6/claude-sonnet-4.6sessions → sub-agent routed togpt-5.4(treatment_selected).claude-opus-4.7/claude-opus-4.8sessions → sub-agent routed togpt-5.5(treatment_selected); control runs kept the session model (session_model_kept).claude-haiku-4.5,claude-opus-4.8) via agent-type defaults.Expected / requests
--verbose).Environment
Related: #3823 (unsupported reasoning effort silently downgraded), which compounds this for sub-agents routed to a model lacking the configured effort.