Describe the bug
With HydraFusion selected (policy max), most turns fail at the routing step and silently continue on a lower-tier model. The UI only shows:
HydraFusion routing failed; continuing with gpt-5.6-luna
The session log records the reason:
{
"type": "session.fusion_route_failed",
"syntheticModel": "hydrafusion",
"policy": "max",
"reason": "invalid_response",
"errorMessage": "fusion routing returned an invalid response: fusion route references a model outside the selected policy universe: gpt-6.1-sol",
"fallbackModel": "gpt-5.6-luna"
}
In one session over two days there were 10 routing failures against 3 successful routes:
| Model returned by the router |
Failures |
gpt-6.1-sol |
9 |
claude-sonnet-5.5 |
1 |
Both rejected models are enabled for the account. The model list the runtime publishes to VS Code in the same session lists gpt-6.1-sol (and claude-sonnet-5.5) with "policyState": "enabled". The server-side router (routeSource: "capi_plan") therefore seems to work with a different model set than the runtime's "policy universe" for max. I couldn't find out how the runtime builds that set.
There are two problems here:
- Router and runtime disagree on the allowed models. The router keeps choosing models the runtime then rejects, so most turns never run as HydraFusion.
- The fallback is a silent capability downgrade. When the route is rejected, the turn runs on
gpt-5.6-luna instead. A user who picked HydraFusion with the max policy for a demanding task (planning, in my case) ends up on a much cheaper model, with only a transient warning.
A related observation: the routes that did succeed under max also only used gpt-5.6-luna (primary/fallback/follow-up) and gpt-5.6-terra (secondary) with the Critique pattern. Higher-tier models such as claude-opus-5.5, which is enabled for the account, were never chosen. Those resolved routes also report "policyVersion": null and "modelUniverseVersion": null, which may be relevant to the mismatch.
Affected version
Copilot runtime 1.0.92-4.unstable.r37397886721.gad270aa (bundled @github/copilot-sdk-linux-x64 1.0.17-unstable.37397886721.gad270aa)
Steps to reproduce the behavior
- In VS Code agent mode (Copilot SDK agent host), select HydraFusion as the model. The routing policy is
max.
- Send a normal multi-step coding/planning request.
- The warning "HydraFusion routing failed; continuing with gpt-5.6-luna" appears for most turns.
- The session's
events.jsonl contains session.fusion_route_failed events with reason: "invalid_response" and "fusion route references a model outside the selected policy universe: ".
This happened consistently over two days. I haven't tested other policies.
Expected behavior
- The router only returns models that are inside the runtime's policy universe for the selected policy. Models the account has enabled (such as
gpt-6.1-sol) should either be in the max universe or not be routed to.
- If a route is invalid anyway, the fallback should not silently downgrade capability. Either fall back to a model of comparable tier for the selected policy, or fail the turn with a clear, retryable error so the user can pick a model.
- Ideally, the UI makes it obvious that the turn did not run as HydraFusion.
Additional context
Describe the bug
With HydraFusion selected (policy
max), most turns fail at the routing step and silently continue on a lower-tier model. The UI only shows:The session log records the reason:
{ "type": "session.fusion_route_failed", "syntheticModel": "hydrafusion", "policy": "max", "reason": "invalid_response", "errorMessage": "fusion routing returned an invalid response: fusion route references a model outside the selected policy universe: gpt-6.1-sol", "fallbackModel": "gpt-5.6-luna" }In one session over two days there were 10 routing failures against 3 successful routes:
gpt-6.1-solclaude-sonnet-5.5Both rejected models are enabled for the account. The model list the runtime publishes to VS Code in the same session lists
gpt-6.1-sol(andclaude-sonnet-5.5) with"policyState": "enabled". The server-side router (routeSource: "capi_plan") therefore seems to work with a different model set than the runtime's "policy universe" formax. I couldn't find out how the runtime builds that set.There are two problems here:
gpt-5.6-lunainstead. A user who picked HydraFusion with themaxpolicy for a demanding task (planning, in my case) ends up on a much cheaper model, with only a transient warning.A related observation: the routes that did succeed under
maxalso only usedgpt-5.6-luna(primary/fallback/follow-up) andgpt-5.6-terra(secondary) with the Critique pattern. Higher-tier models such asclaude-opus-5.5, which is enabled for the account, were never chosen. Those resolved routes also report"policyVersion": nulland"modelUniverseVersion": null, which may be relevant to the mismatch.Affected version
Copilot runtime
1.0.92-4.unstable.r37397886721.gad270aa(bundled@github/copilot-sdk-linux-x641.0.17-unstable.37397886721.gad270aa)Steps to reproduce the behavior
max.events.jsonlcontainssession.fusion_route_failedevents withreason: "invalid_response"and "fusion route references a model outside the selected policy universe: ".This happened consistently over two days. I haven't tested other policies.
Expected behavior
gpt-6.1-sol) should either be in themaxuniverse or not be routed to.Additional context
*.ghe.comhost). I don't know whether the router's model set differs for those tenants.session.fusion_*event fields if that helps.