Skip to content

codex-api: route file uploads through HTTP client factory#31363

Draft
bolinfest wants to merge 1 commit into
pr31362from
pr31363
Draft

codex-api: route file uploads through HTTP client factory#31363
bolinfest wants to merge 1 commit into
pr31362from
pr31363

Conversation

@bolinfest

@bolinfest bolinfest commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Why

Codex Apps file parameters use a three-step upload flow: create a file record, PUT bytes to a returned signed URL, and finalize the upload. Each step still constructed a default reqwest client, so the flow could bypass features.respect_system_proxy even after model API requests honored it.

This stack entry makes the resolved client policy a required input to the upload API and resolves each concrete destination independently.

What changed

  • Require HttpClientFactory in upload_openai_file.
  • Build clients for the create, signed upload, and finalize URLs through the shared API route policy.
  • Pass the factory derived from the turn configuration at the Apps/MCP call site.
  • Return a destination-aware ClientBuild error when enabled route selection cannot construct a client.
  • Preserve the legacy logged fallback for the feature-off ReqwestDefault policy.

Review guide

  1. codex-api/src/files.rs changes the upload API and centralizes route-aware client construction.
  2. The three request stages each supply their actual URL, including the separately hosted signed blob URL.
  3. core/src/mcp_openai_file.rs is the only production caller and supplies the turn configuration factory.

Validation

  • cargo check --tests -p codex-api -p codex-core
  • just test -p codex-api files (1 matching upload test passed; 135 tests skipped by filter)
  • just fix -p codex-api -p codex-core

Follow-up

Other direct HTTP clients remain separate migration slices.


Stack created with Sapling. Best reviewed with ReviewStack.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant