Repository navigation
Rubber Duck #4380
Description
Activity
- addedarea:agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agentsarea:modelsModel selection, availability, switching, rate limits, and model-specific behaviorModel selection, availability, switching, rate limits, and model-specific behaviorand removed
on Aug 6, 2026 Hi @tanselmi-appliedsurety I agree, typically you should have received a complementary model.
Are you able to provide a session process log of when this happened to you? That will help to make sure we have identified the exact problem 😄 You can find the session's log file by using
/session infoand the log file will look like/Users/nick/.copilot/logs/process-1786017957609-61781.logJust to double check, can you also confirm if you have overridden the rubber duck subagent model in your subagent settings? If you go to
/subagentsyou are able to change the model mapping behavior for rubber duck from the default of "complementary (different family)". If it is set to "inherit" it will use your session model, and if you have set a specific model it will use that.It is also possible that the session agent itself decided to override the rubber duck model choice, which we can identify from the process log. We discourage this option in instructions but leave it open for some flexibility in-session.
tanselmi-appliedsurety commented
on Aug 6, 2026 AuthorMore actionsThanks @nick-thinks — checked both.
- Rubber-duck model mapping
• /subagents : rubber-duck → complementary — unavailable, disabled
• Overridden: No
• Status: On
I did not set this. settings.json has no rubber-duck model override (only explore/task/research/etc.). So complementary is the built-in default, but the UI treats it as unavailable for the current session model/catalog.- Process log
Attached a redacted extract from yesterday’s session ( v1.0.78 ) with multiple rubber-duck execute/complete events.
Note: INFO logs show the duck runs, but do not emit complementary selection debug ( parent_model / available_models / selected_model ). Happy to capture a fresher log if you want a specific debug flag/level.
That matches the original report: complementary path fails open to same-family/session model (e.g. terra-on-terra) instead of a different family.
Reacted by Nick McKennaAdding evidence from a case with the same symptom but what looks like a different mechanism — filed separately as #4432 to keep the two apart.
In my case the parent session was
claude-opus-5and a complementary model was available (gpt-5.6-sol, samehighprice category). Rubber-duck still ran onclaude-opus-4.8.Cause: the parent agent passed
modelexplicitly in thetasktool call. Fromevents.jsonl:{"agent_type":"rubber-duck","name":"reval-review","model":"claude-opus-4.8","prompt":"..."}subagent.completed agentName: "rubber-duck" model: "claude-opus-4.8"Driving
subagentStartPlaninruntime.nodedirectly (parentclaude-opus-5;claude-opus-5/claude-opus-4.8/gpt-5.6-solall athigh):/subagentssettingexplicit modelargresolved (none) (none) gpt-5.6-sol✅(none) claude-opus-4.8claude-opus-4.8❌complementaryclaude-opus-4.8claude-opus-4.8❌gpt-5.6-solclaude-opus-4.8claude-opus-4.8❌So an explicit
modelargument outranks even a/subagentsvalue the user deliberately set. Since that argument is emitted by the calling model rather than typed by the user, model discretion silently overrides user configuration — with no warning surfaced.@tanselmi-appliedsurety — worth checking your
events.jsonlfor a"model"key in thetasktool arguments (tool.execution_start,toolName: "task"). If it is absent, yours is the separatecomplementary unavailablepath your/subagentsoutput points to, and the two need different fixes. If it is present, these are the same bug.Repro script and suggested fixes are in #4432.
Reacted by Nick McKenna
Describe the bug
rubber-duck reviews sometimes use the same model family as the primary session instead of selecting an independent reviewer, reducing the value of adversarial review.
i have observed this on a variety of models. most recently using 5.6 Terra - Max
Affected version
v1.0.78
Steps to reproduce the behavior
Have code/plan/contract whilst working in a gpt-5.6-terra session and request a rubber-duck review...
you then see this: Rubber-duck(gpt-5.6-terra) Assess audit design quality
└ Agent started in background with agent_id: audit-design-duck. You'll be notif...
Expected behavior
I would expect a different model family selected from the current model being used in the session.
Additional context
No response