[Feature Request] Implement provider-scoped circuit breaker for shared 429 rate-limit coordination across subagents

Status Fixed / completed
Reported on v2.1.263
Maintainer reply None cached
Activity 0 comments · opened Sep 6, 2026 · closed Sep 6, 2026

Bug Description
Type: missing capability Title: Subagent 429 retries are a tight per-call loop, not a provider-scoped circuit breaker Area: Agent orchestration / subagents / rate limiting Failure mode: Shared-provider 429 retry amplification Details: Observed: A dispatched general-purpose subagent doing PR-body work hit: 429 Rate limited · Retrying in 0s · attempt 4/10 This showed near-immediate retries occurring inside the subagent's own request loop, with no visible provider/account-level throttle state shared with the parent or other concurrently running agents. Why this matters: Multiple agents/subagents can share the same provider account, subscription, model family, and effective quota window. If each agent independently retries a 429, one throttled request can become a retry-amplification event across the agent fleet. A 429 should reduce aggregate pressure, not cause each worker to independently probe the same constrained provider. Expected capability: Agent orchestration should maintain a provider-scoped circuit breaker keyed approximately by: provider + account/subscription + model family + rate-limit/reset window When a 429 occurs: Respect Retry-After / provider reset metadata when available. Otherwise use bounded exponential backoff with jitter. Publish shared throttle state so sibling agents using the same quota stop independent retries. Disable worker-local retry loops while the circuit is open. Allow one parent/Conductor-owned recovery probe after cooldown. Gradually release affected workers after a successful probe rather than generating a simultaneous retry burst. Preserve each subagent's durable task/checkpoint state during cooldown and resume from the next unfinished event instead of redispatching/reconstructing the task. Important distinction: Per-agent retry discipline is not sufficient here. The missing capability is harness-level shared provider-pressure coordination across subagent boundaries. Observed context: MVP-Core multi-agent orchestration with CA1-CA4/Gatekeeper; the specific attempt 4/10 event occurred in the single dispatched CA3 continuation worker handling issue #7337. No duplicate worker was intentionally launched. Cause: Not diagnosed. This report describes observed harness behavior and the missing coordination primitive; it does not claim a specific implementation root cause. Desired invariant: SHARED PROVIDER QUOTA -> SHARED RETRY AUTHORITY RESOURCE PRESSURE -> CONTAIN -> PRESERVE -> YIELD -> RESUME Reproduction: Under provider/account pressure, dispatch a subagent that performs model-backed work and observe its 429 handling. The reported session produced the exact message above. Cross-agent behavior should additionally be tested with multiple agents sharing the same provider/account quota to verify that one 429 opens shared throttle state rather than independent retry loops.

Environment Info

  • Platform: win32
  • Terminal: windows-terminal
  • Version: 2.1.263
  • Feedback ID: fbb5a8e1-36b2-4771-afd4-a14603cb063e

Errors

[{"error":"Error: EBUSY: resource busy or locked, open 'E:\\source\\MechSolATL\\MVP-Core\\AgentOrchestration\\Locks\\boot-transaction.lock'\n    at async <anonymous> (node:fs/promises:179:56)\n    at async vt (B:/~BUN/root/chunk-b8n3wdc0.js:11:2086)\n    at async TVt (B:/~BUN/root/chunk-b8n3wdc0.js:11:4244)\n    at async <anonymous> (B:/~BUN/root/chunk-wxm61xb2.js:1162:855)\n    at async rio (B:/~BUN/root/chunk-wxm61xb2.js:1162:5566)\n    at async Din (B:/~BUN/root/chunk-wxm61xb2.js:1162:928)\n    at async eio (B:/~BUN/root/chunk-wxm61xb2.js:1160:18222)\n    at async x6o (B:/~BUN/root/chunk-wxm61xb2.js:3220:2615)\n    at async run (B:/~BUN/root/chunk-wxm61xb2.js:1224:1643)\n    at async <anonymous> (B:/~BUN/root/chunk-m8qyvwrt.js:333:3860)","timestamp":"2026-09-06T17:56:54.387Z"}]

View original on GitHub ↗