Problem statement
Abort the Copilot CLI agent turn when it loops on rejected write-once safe-output tool calls — this loop is burning the full 15-minute action timeout and is the top failure signature (10 red runs / 6h). The agent repeatedly issues empty-argument safeoutputs tools/call probes, each rejected with Error [-32602]: Empty arguments are not allowed, and never recovers, so the Execute GitHub Copilot CLI action is killed by GitHub's 15-minute step timeout with no safe output emitted.
Affected workflows and run IDs
- PR Code Quality Reviewer (8): 28740795656, 28740785171, 28740755674, 28735756664, 28734734127, 28734706324, 28734262314, 28734041366
- Impeccable Skills Reviewer (1): 28740755671
- Matt Pocock Skills Reviewer (1): 28740755672
All sampled runs (5/10) share the identical terminal annotation: The action 'Execute GitHub Copilot CLI' has timed out after 15 minutes.
Probable root cause
The agent treats write-once safe-output tools as discoverable and probes them with empty arguments. The -32602 rejection is advisory (points to tools/list), so the agent retries indefinitely rather than failing fast. audit-diff (base 28740795656 vs success 28737497728) shows no firewall anomaly and no rate-limit pressure, confirming an agent-side control-flow hang, not infrastructure.
Proposed remediation
- Add a bounded-retry / circuit-breaker around safe-output tool invocation: after N consecutive
-32602 empty-argument rejections for the same tool, stop retrying and either emit noop or terminate the turn with a non-zero exit before the 15-minute action ceiling.
- Make the
-32602 rejection terminal-hint stronger (e.g., "do not retry with empty arguments; call tools/list once or noop") so the agent stops probing.
- Consider lowering the per-step timeout or adding an internal watchdog so a stuck agent fails fast (minutes, not 15) and frees the runner.
Success criteria / verification
- No
Execute GitHub Copilot CLI step in reviewer workflows exceeds the timeout due to repeated -32602 empty-argument loops.
- A run that would previously loop now terminates within a bounded window and emits either a real safe output or
noop.
- 24–48h after deploy: reviewer-workflow timeout rate drops from ~10/6h to ~0; re-run
audit-diff on a previously-looping workflow confirms clean turn completion (non-zero token usage recorded).
Parent report: #43552 · Analyzed runs: 28740795656, 28740755671, 28735756664
Related to #43552
Generated by 🔍 [aw] Failure Investigator (6h) · 290 AIC · ⌖ 21.1 AIC · ⊞ 5.2K · ◷
Problem statement
Abort the Copilot CLI agent turn when it loops on rejected write-once safe-output tool calls — this loop is burning the full 15-minute action timeout and is the top failure signature (10 red runs / 6h). The agent repeatedly issues empty-argument
safeoutputs tools/callprobes, each rejected withError [-32602]: Empty arguments are not allowed, and never recovers, so theExecute GitHub Copilot CLIaction is killed by GitHub's 15-minute step timeout with no safe output emitted.Affected workflows and run IDs
All sampled runs (5/10) share the identical terminal annotation:
The action 'Execute GitHub Copilot CLI' has timed out after 15 minutes.Probable root cause
The agent treats write-once safe-output tools as discoverable and probes them with empty arguments. The
-32602rejection is advisory (points totools/list), so the agent retries indefinitely rather than failing fast.audit-diff(base 28740795656 vs success 28737497728) shows no firewall anomaly and no rate-limit pressure, confirming an agent-side control-flow hang, not infrastructure.Proposed remediation
-32602empty-argument rejections for the same tool, stop retrying and either emitnoopor terminate the turn with a non-zero exit before the 15-minute action ceiling.-32602rejection terminal-hint stronger (e.g., "do not retry with empty arguments; calltools/listonce ornoop") so the agent stops probing.Success criteria / verification
Execute GitHub Copilot CLIstep in reviewer workflows exceeds the timeout due to repeated-32602empty-argument loops.noop.audit-diffon a previously-looping workflow confirms clean turn completion (non-zero token usage recorded).Parent report: #43552 · Analyzed runs: 28740795656, 28740755671, 28735756664
Related to #43552