Skip to content

[aw-failures] PR Code Quality Reviewer hard-fails — Copilot CLI returns model_not_supported for claude-sonnet-4.6 (0 output) #40914

Description

@github-actions

Problem statement

The PR Code Quality Reviewer agent job fails when the GitHub Copilot CLI backend rejects the configured model claude-sonnet-4.6 with a non-retryable model_not_supported error. The run exits code 1 producing an empty agent_output.json, so no review is posted.

Affected workflows and run IDs

  1. PR Code Quality Reviewer — §27991312466 (PR event, PR fix: pass through supported local and Docker action refs without pin resolution #40887, 5.9m, model claude-sonnet-4.6, Copilot engine). A prior baseline run of the same workflow succeeded, so the failure is intermittent rather than a hard config break.

Evidence

[copilot-harness] attempt 1 failed: exitCode=1 failureClass=model_not_supported
  isModelNotSupportedError=true isCAPIError400=false isCAPIQuotaExceededError=false
  isAuthError=false permissionDeniedCount=0 hasOutput=true retriesRemaining=3
  • failureClass=model_not_supported is treated as non-retryable — the harness gave up after attempt 1 despite retriesRemaining=3.
  • Firewall clean (59/59 allowed, api.githubcopilot.com reached 33×); not a network/auth/quota issue.
  • Final agent_output.json empty; last assistant message {"content":""}.

Probable root cause

The Copilot CAPI backend intermittently does not recognize/support the claude-sonnet-4.6 model identifier passed by the Copilot engine. Either (a) the model id/alias sent to CAPI is wrong or transiently unavailable, or (b) model_not_supported is being classified as terminal when the underlying condition is a transient backend availability blip. Same failure class as #40381 (Codex gpt-5-codex alias → retired model), but a different model — suggesting the model-id → CAPI mapping / retry policy needs hardening generally.

Proposed remediation

  1. Verify the exact model string the Copilot engine sends to CAPI for claude-sonnet-4.6 and confirm it matches a currently-supported CAPI model id.
  2. Make model_not_supported retryable with backoff (it consumed only attempt 1 of 4) when hasOutput/transient indicators suggest a backend blip, OR fail fast with a clear actionable message naming the unsupported model.
  3. Emit the rejected model id into the conclusion outputs (model_not_supported_error) so future audits can confirm frequency.

Success criteria / verification

  • A PR Code Quality Reviewer run on claude-sonnet-4.6 completes and posts its review, or fails with an explicit "model X not supported by CAPI" message naming the model.
  • model_not_supported no longer terminates after a single attempt when retries remain.

Related (not separately filed — budget-scoped)

Parent: failure report #39883. Analyzed runs: 27991312466, 27989420451, 27979436784.
Related to #39883

Generated by 🔍 [aw] Failure Investigator (6h) · 334.1 AIC · ⌖ 42 AIC · ⊞ 4.9K ·

  • expires on Jun 29, 2026, 5:41 PM UTC-08:00

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions