From 27c0bb330bac93301b6ef30be6cf9f20796c88cb Mon Sep 17 00:00:00 2001 From: rka-oai Date: Sat, 25 Jul 2026 12:48:40 -0700 Subject: [PATCH] Bound Code Mode metadata compatibility headers (#35364) (cherry picked from commit 5c36e869c1a7bdc5ec4c1325d02e60dfbadcc9b8) --- codex-rs/core/src/responses_metadata.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/codex-rs/core/src/responses_metadata.rs b/codex-rs/core/src/responses_metadata.rs index 6724516a15..794b50930e 100644 --- a/codex-rs/core/src/responses_metadata.rs +++ b/codex-rs/core/src/responses_metadata.rs @@ -248,10 +248,13 @@ impl CodexResponsesMetadata { pub(crate) fn compatibility_headers(&self) -> ApiHeaderMap { let mut headers = ApiHeaderMap::new(); insert_header(&mut headers, X_CODEX_WINDOW_ID_HEADER, &self.window_id); - // Direct x-codex-turn-metadata is compatibility output. New per-request consumers should - // prefer client_metadata["x-codex-turn-metadata"], which is rendered from this same object. + // Direct x-codex-turn-metadata is compatibility output. Keep the unbounded Code Mode + // mapping in client_metadata only so HTTP and WebSocket headers remain bounded. if self.has_turn_metadata() - && let Some(turn_metadata_json) = self.turn_metadata_json() + && let Ok(turn_metadata_json) = to_ascii_json_string(&CodexTurnMetadataPayload { + code_mode_tool_names: None, + ..self.turn_metadata_payload() + }) { insert_header( &mut headers,