Retry transient Codex Apps file upload failures#31657
Draft
guinness-oai wants to merge 1 commit into
Draft
Conversation
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Why
Codex Apps file parameters are uploaded with a direct PUT to a short-lived Sediment/Azure presigned URL. Today, one upload-stage transport failure consumes that URL and fails the whole MCP tool call. The surfaced error also collapses connect, TLS, request-body, and timeout failures into
error sending request for url, while including the presigned query string.This is the shared client-side failure reported in the Sites incident thread and the Codex box repro.
What changed
/filesagain so the retry gets a fresh presigned URL.Testing
just test -p codex-api— 137 passedjust test -p codex-core build_uploaded_argument_value_retries_upload_with_fresh_url— passedjust fix -p codex-apijust fix -p codex-corejust fmtThe new core test forces the first presigned PUT to a closed local port, then verifies that Codex reopens the file, allocates a second URL, and completes the upload.