Problem
Stop letting a background review sub-agent take down the whole PR Code Quality Reviewer run — bound it or make it non-fatal. The workflow spawns a background task-tool sub-agent (grumpy-coder) to do a parallel/first-pass code review. When that sub-agent misbehaves, the entire run fails — and it misbehaved two different ways in this 6h window:
- Sub-agent hangs forever → main session idle-timeout. §30496052606 (22:25 UTC):
grumpy-coder was still status: running after being polled at 253s, 431s, 628s, and 751s elapsed (39 tool calls, 0 turns reported by read_agent). The main session eventually hit its own idle timeout: [copilot-sdk-driver] error: Timeout after 870000ms waiting for session.idle, failureClass=sdk_session_idle_timeout, killing the whole job after 14.5 minutes with zero output.
- Sub-agent model allocation fails → all 4 harness retries exhausted. §30486275442 (19:52 UTC): every one of 4 fresh-session retry attempts hit
[copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot immediately after the task tool spawned the background review sub-agent, failureClass=partial_execution each time, exhausting retriesRemaining=0.
This is a confirmed recurrence of the pattern flagged (but not ticketed) in the prior 6h report (#48897), which documented 2 occurrences of the same "No model available" error and explicitly said: "if it recurs next window, file a sub-issue to harden the workflow against background-task failures." It has now recurred 2 more times with 2 distinct failure modes, both traceable to the same design pattern.
Affected Workflows and Runs
.github/workflows/pr-code-quality-reviewer.lock.yml
- §30496052606 — idle-timeout hang (2026-07-29 22:25 UTC)
- §30486275442 — model-unavailable retry exhaustion (2026-07-29 19:52 UTC)
- Prior occurrences (documented, not ticketed): §30479767476, §30470606972
Probable Root Cause
The main review agent uses the task tool to launch a background code-review sub-agent for a secondary/critical pass, then polls it with read_agent while continuing (or waiting). Two independent failure surfaces exist because the sub-agent is fully coupled to the parent run's success/fail outcome and to the parent's own session-idle watchdog:
- No per-sub-agent timeout/deadline is enforced — a stuck sub-agent burns the parent's entire idle budget instead of being cancelled after a bounded wait.
- No fallback when the sub-agent's model allocation is rejected ("No model available") — the harness retries the entire run from scratch up to 4 times rather than treating the optional sub-agent as skippable.
- Both failure modes fully fail the run even though, in prior occurrences, the main review had already produced valid output before the sub-agent hiccup.
Proposed Remediation
- Enforce an explicit timeout on the background review sub-agent (e.g. cancel/
stop_bash-equivalent for task agents) shorter than the parent job's own idle-timeout window, so a hang fails fast and visibly instead of silently consuming the full budget.
- Treat the background sub-agent as best-effort: if it errors (model unavailable) or times out, log/report it as a partial-degradation warning and let the main review's own output stand, instead of failing/retrying the whole run.
- If retries are kept for the "No model available" case, do not retry via a full fresh session replay (4x cost) — surface the error after 1 retry and fail fast, or skip the sub-agent step entirely on that error class.
Success Criteria
- A hung or model-unavailable background review sub-agent no longer fails the entire PR Code Quality Reviewer run.
- Next occurrence of either signature is either (a) absent, or (b) degrades gracefully with the main review output still posted.
- No
sdk_session_idle_timeout or exhausted-retry (partial_execution x4) failures attributable to the background sub-agent pattern in the following 6h window.
Parent: #48897
Related to #48897
Generated by 🔍 [aw] Failure Investigator (6h) · age00 · 161.9 AIC · ⌖ 20.7 AIC · ⊞ 5.2K · ◷
Recurrence confirmed — 2026-07-30 13:19 UTC failure-investigation pass
This is still happening — prioritize it, it's the highest-volume P0 in today's window.
Run 30531715045 (PR Code Quality Reviewer, 2026-07-30) failed at Execute GitHub Copilot CLI with the same signature this issue was opened for. audit-diff against a same-day Copilot CLI run shows the step made 32 allowed requests to api.githubcopilot.com (0 blocked) but the run recorded zero input/output/cache tokens anywhere — a clean network path with no usable response captured. This rules out auth/rate-limit/firewall as the cause and points at the response-handling/parsing path between the Copilot CLI process and the workflow's usage accounting.
Filed as part of #49095 (2026-07-30 6h report). No new issue opened — just corroborating evidence for this one.
Generated by 🔍 [aw] Failure Investigator (6h) · agent · 180.1 AIC · ⌖ 21.7 AIC · ⊞ 6.8K · ◷
Recurrence confirmed, wider blast radius — 2026-07-30 19:13 UTC failure-investigation pass
Widen this issue's scope now — the "No model available" background-subagent crash has spread past PR Code Quality Reviewer into at least 2 more workflows this window; treat it as a fleet-wide task-tool risk, not a single-workflow bug.
Run §30567931948 (Linter Miner, 2026-07-30 17:52 UTC) hit the identical signature from agent-stdio.log:
[copilot-sdk-driver] [sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot
[copilot-harness] attempt 2 failed: exitCode=1 failureClass=permission_denied ... permissionDeniedCount=4 hasNumerousPermissionDenied=true
[copilot-harness] attempt 2: AI credits budget exceeded — not retrying (non-retryable guard condition)
The failure fired the moment the main agent's task tool spawned a background general-purpose sub-agent (linter-writer) — same shape as this issue's original two runs. audit cohort-comparison flags this run risky: turns dropped 3→0 and posture flipped write_capable→read_only vs. its own successful baseline (§30476970759).
Three more agent-job failures landed in the same 6h window with the same top-level Execute GitHub Copilot CLI step signature but unconfirmed root cause (no local log fetched — audit budget for this pass was capped at 2 calls, spent on Linter Miner + a separate cluster):
- Breaking Change Checker — §30557179518 (does not use the
task sub-agent pattern per its workflow source — if this is the same "No model available" error, it means the fault also hits the main session directly, not just background sub-agents)
- Daily Agent of the Day Blog Writer — §30554082997 (this one does dispatch sub-agents per its workflow source — likely same pattern)
- CI Optimization Coach — §30548066957 (no
task sub-agent usage detected — same open question as Breaking Change Checker)
Action: pull agent-stdio.log for those 3 runs to confirm/rule out the same signature. If Breaking Change Checker or CI Optimization Coach show "No model available" without a task-tool sub-agent in the call chain, remediation item #2 in this issue (treat sub-agent as best-effort) won't fully cover it — the model-allocation failure needs a fix at the harness/engine level, not just at the sub-agent-supervision level.
No new issue filed — this is the same tracked signature, now with a larger blast radius.
Generated by [aw] Failure Investigator (6h) · run https://github.com/github/gh-aw/actions/runs/30573634803
Generated by 🔍 [aw] Failure Investigator (6h) · agent · 101.2 AIC · ⌖ 25.9 AIC · ⊞ 5.3K · ◷
Recurrence confirmed, signature spreads further — 2026-07-31 pass
Stop treating this as a single-workflow issue — 2 more workflows hit the exact same "No model available" signature this window; the open question from the 2026-07-30 update is now resolved.
- Linter Miner — §30653018084:
[copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot immediately after the task tool spawn, both attempts exhausted, ending "AI credits budget exceeded — not retrying."
- Daily Agent of the Day Blog Writer — §30641133423: identical signature on attempts 3 and 4, ending
failureClass=authentication_failed.
- PR Code Quality Reviewer — §30647761131: same signature reconfirmed on attempt 1, ending "AI credits budget exceeded — not retrying."
This directly answers the 2026-07-30 update's open question: Daily Agent of the Day Blog Writer does share this signature. By contrast, CI Optimization Coach's failure this window is NOT part of this cluster — its root cause is an unrelated prompt.txt ENOENT precondition failure with no connection to model allocation or the task tool; tracked separately as a new sub-issue of #49245.
No new issue filed — same tracked signature, still open, confirmed recurring on 2 more workflows in a single window.
Generated by 🔍 [aw] Failure Investigator (6h) · agent · 249.9 AIC · ⌖ 19.3 AIC · ⊞ 6.8K · ◷
Fix the PR Code Quality Reviewer background sub-agent hang — it recurred twice more in the last 6h, still hitting the exact 15-min action-timeout symptom this issue documents.
New occurrences (2026-08-01):
| Run |
Time (UTC) |
Failed step |
Signal |
| §30687802684 |
06:28 |
Execute GitHub Copilot CLI |
Explicit: ##[error]The action 'Execute GitHub Copilot CLI' has timed out after 15 minutes. — matches the idle-timeout hang symptom (internal watchdog fires ~14.5min, outer Action-level 15min kill follows) described above. |
| §30683628677 |
04:16 |
Execute GitHub Copilot CLI |
Same workflow/step failure; captured log tail is cleanup-only (truncated before the root-cause line), consistent with — not conclusively distinct from — the same hang pattern. |
Why this matters now: this is at least the 5th–6th occurrence of the same design flaw (unbounded background task-tool sub-agent coupled to the parent session's idle watchdog and the job's hard 15-minute step timeout). The fix proposed in this issue (bound the sub-agent with its own timeout/deadline, make it non-fatal, or remove the hard coupling to the parent's idle budget) has not shipped yet and failures continue at the same rate.
Action: prioritize this fix — it is the single highest-frequency agentic-workflow failure in the current 6h window and continues to burn full 15-minute job budgets with zero usable output.
Filed by the 6h Failure Investigator scan covering 2026-08-01T01:38–07:38 UTC. Other failures in this window (Daily Container Image Security Scan gate finding a real CVE, isolated Claude/Copilot CLI failures in ESLint Refiner and Go Logger Enhancement with inconclusive truncated logs) were each single-occurrence/P2 and did not warrant new tracking.
Generated by 🔍 [aw] Failure Investigator (6h) · agent · 71.3 AIC · ⌖ 24.2 AIC · ⊞ 5.3K · ◷
Fix the background-subagent "No model available" crash now — it hit PR Code Quality Reviewer twice more this window with zero mitigation in place.
New occurrences (2026-08-01 evening):
| Run |
Time (UTC) |
Failed step |
Signal |
| §30722461036 |
23:00 |
Execute GitHub Copilot CLI |
Confirmed via agent-stdio.log: task-tool spawns a general-purpose background sub-agent → [copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot → attempt 4 failed: exitCode=1 failureClass=partial_execution → all 3 retries exhausted — giving up. Exact signature this issue tracks. |
| §30715022302 |
19:33 |
Execute GitHub Copilot CLI |
Same workflow/step/exit-code-1 pattern as the confirmed run above; not separately audited to conserve budget, presumed same cluster given identical failure surface within the same 4h span. |
Why this matters now: the remediation this issue proposes (bound the sub-agent, treat model-unavailable as non-fatal, stop full-session retries) still hasn't shipped — this is at least the 7th–8th occurrence of the same design flaw, and it remains the highest-recurrence P0 in the fleet.
Action: ship remediation item #2 (treat background sub-agent failures as best-effort/non-fatal) first — it's the cheapest fix and directly kills this exact "all retries exhausted" failure mode.
Other failures this window (Smoke Copilot × 2 distinct causes, Smoke Codex × 1) were each single-occurrence safe-output validation errors, not this cluster — tracked separately as a note on #49583, not ticketed individually (each is P2 in isolation).
Filed by the 6h Failure Investigator scan covering 2026-08-01T19:19–2026-08-02T01:19 UTC.
Generated by 🔍 [aw] Failure Investigator (6h) · agent · 142.4 AIC · ⌖ 34 AIC · ⊞ 6.8K · ◷
Problem
Stop letting a background review sub-agent take down the whole PR Code Quality Reviewer run — bound it or make it non-fatal. The workflow spawns a background
task-tool sub-agent (grumpy-coder) to do a parallel/first-pass code review. When that sub-agent misbehaves, the entire run fails — and it misbehaved two different ways in this 6h window:grumpy-coderwas stillstatus: runningafter being polled at 253s, 431s, 628s, and 751s elapsed (39 tool calls, 0 turns reported byread_agent). The main session eventually hit its own idle timeout:[copilot-sdk-driver] error: Timeout after 870000ms waiting for session.idle,failureClass=sdk_session_idle_timeout, killing the whole job after 14.5 minutes with zero output.[copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilotimmediately after thetasktool spawned the background review sub-agent,failureClass=partial_executioneach time, exhaustingretriesRemaining=0.This is a confirmed recurrence of the pattern flagged (but not ticketed) in the prior 6h report (#48897), which documented 2 occurrences of the same "No model available" error and explicitly said: "if it recurs next window, file a sub-issue to harden the workflow against background-task failures." It has now recurred 2 more times with 2 distinct failure modes, both traceable to the same design pattern.
Affected Workflows and Runs
.github/workflows/pr-code-quality-reviewer.lock.ymlProbable Root Cause
The main review agent uses the
tasktool to launch a background code-review sub-agent for a secondary/critical pass, then polls it withread_agentwhile continuing (or waiting). Two independent failure surfaces exist because the sub-agent is fully coupled to the parent run's success/fail outcome and to the parent's own session-idle watchdog:Proposed Remediation
stop_bash-equivalent fortaskagents) shorter than the parent job's own idle-timeout window, so a hang fails fast and visibly instead of silently consuming the full budget.Success Criteria
sdk_session_idle_timeoutor exhausted-retry (partial_executionx4) failures attributable to the background sub-agent pattern in the following 6h window.Parent: #48897
Related to #48897
Recurrence confirmed — 2026-07-30 13:19 UTC failure-investigation pass
This is still happening — prioritize it, it's the highest-volume P0 in today's window.
Run 30531715045 (PR Code Quality Reviewer, 2026-07-30) failed at
Execute GitHub Copilot CLIwith the same signature this issue was opened for.audit-diffagainst a same-day Copilot CLI run shows the step made 32 allowed requests toapi.githubcopilot.com(0 blocked) but the run recorded zero input/output/cache tokens anywhere — a clean network path with no usable response captured. This rules out auth/rate-limit/firewall as the cause and points at the response-handling/parsing path between the Copilot CLI process and the workflow's usage accounting.Filed as part of #49095 (2026-07-30 6h report). No new issue opened — just corroborating evidence for this one.
Recurrence confirmed, wider blast radius — 2026-07-30 19:13 UTC failure-investigation pass
Widen this issue's scope now — the "No model available" background-subagent crash has spread past PR Code Quality Reviewer into at least 2 more workflows this window; treat it as a fleet-wide
task-tool risk, not a single-workflow bug.Run §30567931948 (Linter Miner, 2026-07-30 17:52 UTC) hit the identical signature from
agent-stdio.log:The failure fired the moment the main agent's
tasktool spawned a backgroundgeneral-purposesub-agent (linter-writer) — same shape as this issue's original two runs.auditcohort-comparison flags this runrisky: turns dropped 3→0 and posture flippedwrite_capable→read_onlyvs. its own successful baseline (§30476970759).Three more agent-job failures landed in the same 6h window with the same top-level
Execute GitHub Copilot CLIstep signature but unconfirmed root cause (no local log fetched — audit budget for this pass was capped at 2 calls, spent on Linter Miner + a separate cluster):tasksub-agent pattern per its workflow source — if this is the same "No model available" error, it means the fault also hits the main session directly, not just background sub-agents)tasksub-agent usage detected — same open question as Breaking Change Checker)Action: pull
agent-stdio.logfor those 3 runs to confirm/rule out the same signature. If Breaking Change Checker or CI Optimization Coach show "No model available" without atask-tool sub-agent in the call chain, remediation item #2 in this issue (treat sub-agent as best-effort) won't fully cover it — the model-allocation failure needs a fix at the harness/engine level, not just at the sub-agent-supervision level.No new issue filed — this is the same tracked signature, now with a larger blast radius.
Recurrence confirmed, signature spreads further — 2026-07-31 pass
Stop treating this as a single-workflow issue — 2 more workflows hit the exact same "No model available" signature this window; the open question from the 2026-07-30 update is now resolved.
[copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilotimmediately after thetasktool spawn, both attempts exhausted, ending "AI credits budget exceeded — not retrying."failureClass=authentication_failed.This directly answers the 2026-07-30 update's open question: Daily Agent of the Day Blog Writer does share this signature. By contrast, CI Optimization Coach's failure this window is NOT part of this cluster — its root cause is an unrelated
prompt.txtENOENT precondition failure with no connection to model allocation or thetasktool; tracked separately as a new sub-issue of #49245.No new issue filed — same tracked signature, still open, confirmed recurring on 2 more workflows in a single window.
Fix the PR Code Quality Reviewer background sub-agent hang — it recurred twice more in the last 6h, still hitting the exact 15-min action-timeout symptom this issue documents.
New occurrences (2026-08-01):
##[error]The action 'Execute GitHub Copilot CLI' has timed out after 15 minutes.— matches the idle-timeout hang symptom (internal watchdog fires ~14.5min, outer Action-level 15min kill follows) described above.Why this matters now: this is at least the 5th–6th occurrence of the same design flaw (unbounded background
task-tool sub-agent coupled to the parent session's idle watchdog and the job's hard 15-minute step timeout). The fix proposed in this issue (bound the sub-agent with its own timeout/deadline, make it non-fatal, or remove the hard coupling to the parent's idle budget) has not shipped yet and failures continue at the same rate.Action: prioritize this fix — it is the single highest-frequency agentic-workflow failure in the current 6h window and continues to burn full 15-minute job budgets with zero usable output.
Filed by the 6h Failure Investigator scan covering 2026-08-01T01:38–07:38 UTC. Other failures in this window (Daily Container Image Security Scan gate finding a real CVE, isolated Claude/Copilot CLI failures in ESLint Refiner and Go Logger Enhancement with inconclusive truncated logs) were each single-occurrence/P2 and did not warrant new tracking.
Fix the background-subagent "No model available" crash now — it hit PR Code Quality Reviewer twice more this window with zero mitigation in place.
New occurrences (2026-08-01 evening):
agent-stdio.log:task-tool spawns ageneral-purposebackground sub-agent →[copilot-sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot→attempt 4 failed: exitCode=1 failureClass=partial_execution→all 3 retries exhausted — giving up. Exact signature this issue tracks.Why this matters now: the remediation this issue proposes (bound the sub-agent, treat model-unavailable as non-fatal, stop full-session retries) still hasn't shipped — this is at least the 7th–8th occurrence of the same design flaw, and it remains the highest-recurrence P0 in the fleet.
Action: ship remediation item #2 (treat background sub-agent failures as best-effort/non-fatal) first — it's the cheapest fix and directly kills this exact "all retries exhausted" failure mode.
Other failures this window (Smoke Copilot × 2 distinct causes, Smoke Codex × 1) were each single-occurrence safe-output validation errors, not this cluster — tracked separately as a note on #49583, not ticketed individually (each is P2 in isolation).
Filed by the 6h Failure Investigator scan covering 2026-08-01T19:19–2026-08-02T01:19 UTC.