[codex] Retry temporarily offline exec-server recovery - #30098
Merged
Conversation
richardopenai
marked this pull request as ready for review
June 25, 2026 18:49
Contributor
Codex Cloud Agents (CCA) couldn't complete this review. The original Codex Review is unaffected. |
apanasenko-oai
approved these changes
Jun 25, 2026
richardopenai
enabled auto-merge (squash)
June 25, 2026 19:08
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
409 environment_offlineresponses inside the existing exec-server recovery loopRoot cause
When an exec server disconnects and reconnects, the client already starts recovery and calls ERS
/connect. During the transient executor presence gap, ERS can return409 environment_offline. The retry classifier treated every 409 as terminal, so the first response aborted the existing 25-second recovery window before the executor came back online. That then caused active processes to be marked lost.This change classifies only the structured
environment_offlineconflict as retryable. Recovery continues with the existing bounded deadline, exponential backoff, and jitter.Validation
just test -p codex-exec-server client::recovery::tests— 4 passedjust fix -p codex-exec-server— passedjust fmt— passedjust test -p codex-exec-serverreached unrelated macOS filesystem-sandbox integration failures because nested/usr/bin/sandbox-execis denied in this environment (sandbox_apply: Operation not permitted).