Skip to content

Add HTTP window ID to Responses client metadata#26923

Merged
ningyi-oai merged 3 commits into
mainfrom
dev/ningyi/to_do_http_window_id_client_metadata
Jun 8, 2026
Merged

Add HTTP window ID to Responses client metadata#26923
ningyi-oai merged 3 commits into
mainfrom
dev/ningyi/to_do_http_window_id_client_metadata

Conversation

@ningyi-oai

@ningyi-oai ningyi-oai commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Keep the existing x-codex-window-id HTTP header unchanged.
  • Also send the same window ID in Responses client_metadata, allowing supported backend paths to surface it as x-client-meta-x-codex-window-id.
  • Cover normal HTTP Responses and remote compaction v2 requests without changing window generation or compaction behavior.

Why

In the 2026-06-06T23 production hour, all 28,729 HTTP compaction requests had window_id in x-codex-turn-metadata, but only 73 retained the direct x-codex-window-id header. The request-body client_metadata path is already used for installation ID and is preserved through supported Responses API paths.

This is additive metadata only. It does not change the direct header, request count, model input, compaction routing, window generation, or user response behavior.

Legacy /v1/responses/compact is intentionally unchanged. Its current server-side CompressBody schema does not accept client_metadata and rejects unknown fields, so supporting that path requires a backend schema change before the Codex client can safely send this field.

Validation

  • Current head: 219baef3c, rebased onto origin/main at 26d932983.
  • The post-rebase diff remains limited to the original five files (22 insertions, 6 deletions); the legacy experiment remains fully reverted.
  • just test -p codex-core responses_stream_includes_subagent_header_on_review: passed; validates normal HTTP Responses metadata.
  • just test -p codex-core remote_compact_v2_reuses_compaction_trigger_for_followups: passed; validates remote compaction v2.
  • just test -p codex-core remote_manual_compact_chatgpt_auth_reuses_service_tier_and_prompt_cache_key: passed; validates that legacy compact keeps its accepted payload shape.
  • just test -p codex-core remote_manual_compact_api_auth_omits_service_tier_and_reuses_prompt_cache_key: passed; validates the legacy API-key payload as well.
  • just fmt: passed; an unrelated root justfile rewrite produced by the formatter was discarded.
  • git diff --check origin/main...HEAD: passed.

The focused server pytest could not start in the local monorepo environment because test setup is missing the dotenv module. Server source and tests explicitly show that CompressBody omits client_metadata and /v1/responses/compact returns HTTP 400 for unknown body fields.

@ningyi-oai ningyi-oai force-pushed the dev/ningyi/to_do_http_window_id_client_metadata branch from 12c7505 to 11fad7f Compare June 8, 2026 00:56
@ningyi-oai ningyi-oai marked this pull request as ready for review June 8, 2026 06:17
@ningyi-oai ningyi-oai requested a review from a team as a code owner June 8, 2026 06:17

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 11fad7f20a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +810 to +813
(
X_CODEX_WINDOW_ID_HEADER.to_string(),
self.current_window_id(),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add metadata to legacy compact payloads

When RemoteCompactionV2 is disabled, remote compaction still goes through compact_conversation_history and posts an ApiCompactionInput to /v1/responses/compact; that path destructures the ResponsesApiRequest and drops client_metadata before serializing the compact body. As a result, the compaction requests called out in the commit message still have no body client_metadata["x-codex-window-id"] for the backend to preserve if the direct x-codex-window-id header is stripped, while only normal /v1/responses and v2 compaction get the new metadata.

Useful? React with 👍 / 👎.

@ningyi-oai ningyi-oai force-pushed the dev/ningyi/to_do_http_window_id_client_metadata branch from d535bce to 219baef Compare June 8, 2026 17:19
@ningyi-oai ningyi-oai merged commit a815311 into main Jun 8, 2026
31 checks passed
@ningyi-oai ningyi-oai deleted the dev/ningyi/to_do_http_window_id_client_metadata branch June 8, 2026 17:50
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants