Escape turn metadata headers as ASCII JSON#19620
Merged
etraut-openai merged 5 commits intomainfrom Apr 29, 2026
Merged
Conversation
Bojun-Vvibe
added a commit
to Bojun-Vvibe/oss-contributions
that referenced
this pull request
Apr 26, 2026
…rge-after-nits, BerriAI/litellm#26531 needs-discussion
This was referenced Apr 26, 2026
Bojun-Vvibe
added a commit
to Bojun-Vvibe/oss-contributions
that referenced
this pull request
Apr 26, 2026
- anomalyco/opencode#24411: structured-vs-string reasoning_details split for Kilo - anomalyco/opencode#24412: startup-stdin side-buffer drain into TUI prompt - openai/codex#19620: AsciiJsonFormatter for HTTP turn-metadata headers
pakrym-oai
reviewed
Apr 29, 2026
pakrym-oai
reviewed
Apr 29, 2026
pakrym-oai
approved these changes
Apr 29, 2026
Collaborator
pakrym-oai
left a comment
There was a problem hiding this comment.
Percent encoding might be a more HTTP-native solution for this.
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.
Why
x-codex-turn-metadatais sent as an HTTP/WebSocket header, but Codex was serializing the metadata JSON with raw UTF-8 string contents. When a workspace path contains non-ASCII characters, common HTTP stacks can reject or corrupt that header before the request reaches the provider.Fixes #17468. Also addresses the duplicate WebSocket report in #19581.
What changed
codex_utils_string::to_ascii_json_string, a shared helper that serializes JSON normally while escaping non-ASCII string content as\uXXXX.Verification
cargo test -p codex-utils-stringcargo test -p codex-core turn_metadatajust bazel-lock-check