The Codex CLI retries rate-limited model requests itself and only reports an `error` notice with `willRetry: true`. With a long Retry-After it sleeps for the full value and emits nothing, so the turn, and any delegated task waiting on it, stays running indefinitely. Bound the wait in the adapter. Each rate-limited retry notice gets the Retry-After delay when the error text carries one, or exponential backoff (5s doubling, capped at 5 minutes), plus 60s for the retried request to show progress. Past attempt 5, a Retry-After above 5 minutes, or a missed deadline ends the turn as a retryable usage-limit failure with code `rateLimitRetryExhausted` and the reset time when known, then interrupts the native turn. Any progress or newer notice re-arms the bound.
Hong Liu committed on 10/22/2026, 7:49:17 PMparent044f072
4 files changedLine totals unavailable