Problem
apiProxy.enableTokenSteering is always emitted as true, undocumented, and not overridable from frontmatter. Token steering resolves the provider after explicit workflow config and without checking which provider slots are actually provisioned. This silently downgrades models (e.g. claude-sonnet-5 → claude-sonnet-4.5) and reroutes calls to providers the proxy itself reports as unconfigured (e.g. Copilot when only Anthropic is configured), causing 100% call failure and, in one case, a 17-minute non-terminating retry loop.
Context
See github/gh-aw#50113 for full repro (two runs, opencode and copilot BYOK engines). Related: #1454, #1970, #2198.
Root Cause
The steering alias map (e.g. sonnet-6x group, Copilot-first ordered) is resolved without filtering against the run's actually-configured provider slots (OpenAI=false, Anthropic=true, Copilot=false, ...), and without deferring to explicit COPILOT_PROVIDER_TYPE/GH_AW_ENGINE_MODEL config.
Proposed Solution
- Filter alias candidates against configured provider slots before resolving — never steer to a provider reporting
configured: false.
- Honor explicit provider/model config over alias table, or fail loudly (not silently substitute) when overridden.
- Expose a documented
enableTokenSteering override (frontmatter/env knob) to opt out per workflow.
- Treat "provider not configured" as a non-retryable, fast-fail error in the primary agent path (mirror the bounded 3-attempt policy already used by the
title sub-agent).
Generated by Firewall Issue Dispatcher · auto · 23.8 AIC · ⊞ 9K · ◷
Problem
apiProxy.enableTokenSteeringis always emitted astrue, undocumented, and not overridable from frontmatter. Token steering resolves the provider after explicit workflow config and without checking which provider slots are actually provisioned. This silently downgrades models (e.g.claude-sonnet-5→claude-sonnet-4.5) and reroutes calls to providers the proxy itself reports as unconfigured (e.g. Copilot when only Anthropic is configured), causing 100% call failure and, in one case, a 17-minute non-terminating retry loop.Context
See github/gh-aw#50113 for full repro (two runs, opencode and copilot BYOK engines). Related: #1454, #1970, #2198.
Root Cause
The steering alias map (e.g.
sonnet-6xgroup, Copilot-first ordered) is resolved without filtering against the run's actually-configured provider slots (OpenAI=false, Anthropic=true, Copilot=false, ...), and without deferring to explicitCOPILOT_PROVIDER_TYPE/GH_AW_ENGINE_MODELconfig.Proposed Solution
configured: false.enableTokenSteeringoverride (frontmatter/env knob) to opt out per workflow.titlesub-agent).