Skip to content

feat(auth): add pinned X.509 workload token exchange - #2470

Merged
jbeckwith-oai merged 3 commits into
mainfrom
codex/x509-01-token-exchange
Aug 25, 2026
Merged

jbeckwith-oai merged 3 commits into
mainfrom
codex/x509-01-token-exchange

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

Part 1 of 5 in the X.509 workload-identity stack.

  • Add the certificate-authenticated OAuth exchange against the single approved https://mtls.auth.openai.com/oauth/token issuer.
  • Validate the exact grant/token types, safe bearer syntax, bounded issuer-approved lifetime, sanitized OAuth failures, caller cancellation, and fixed issuer deadline.
  • Exercise genuine ephemeral mTLS certificates, issuer hostname/SNI verification, and direct/CONNECT transport boundaries.

Verification

  • Focused issuer-exchange and transport-conformance suites on the repository runtime and the exact minimum supported Node 22.22.0.
  • pnpm lint, pnpm exec tsc --noEmit, and pnpm build.
  • Two independent security/code-review rounds; final full-stack Codex Security diff scan: zero findings.

Next: codex/x509-02-capability-boundary.

@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner August 25, 2026 19:27
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-08-25T20:58:21.579927Z c4dbb9c New commits
🔒 Security Review ✅ Completed 2026-08-25T20:57:39.137486Z c4dbb9c New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@openai-sdks

openai-sdks Bot commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 237/237 SDK tests passed in 10.362s for Node SDK PR #2470.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 142ms
tests/chat-completions-create.test.ts ✅ Passed 230ms
tests/chat-completions-stream.test.ts ✅ Passed 190ms
tests/files-content-binary.test.ts ✅ Passed 141ms
tests/files-create-multipart.test.ts ✅ Passed 158ms
tests/files-list-pagination.test.ts ✅ Passed 158ms
tests/initialize-config.test.ts ✅ Passed 188ms
tests/instance-isolation.test.ts ✅ Passed 128ms
tests/models-list.test.ts ✅ Passed 133ms
tests/responses-background-lifecycle.test.ts ✅ Passed 226ms
tests/responses-body-method-errors.test.ts ✅ Passed 316ms
tests/responses-cancel-timeout.test.ts ✅ Passed 249ms
tests/responses-cancel.test.ts ✅ Passed 207ms
tests/responses-compact-retries.test.ts ✅ Passed 279ms
tests/responses-compact.test.ts ✅ Passed 182ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 121ms
tests/responses-create-advanced.test.ts ✅ Passed 181ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.083s
tests/responses-create-errors.test.ts ✅ Passed 196ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 167ms
tests/responses-create-retries.test.ts ✅ Passed 251ms
tests/responses-create-stream-failures.test.ts ✅ Passed 210ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 2.157s
tests/responses-create-stream-wire.test.ts ✅ Passed 2.573s
tests/responses-create-stream.test.ts ✅ Passed 112ms
tests/responses-create-terminal-states.test.ts ✅ Passed 241ms
tests/responses-create-timeout.test.ts ✅ Passed 214ms
tests/responses-create.test.ts ✅ Passed 218ms
tests/responses-delete.test.ts ✅ Passed 275ms
tests/responses-input-items-errors.test.ts ✅ Passed 232ms
tests/responses-input-items-list.test.ts ✅ Passed 181ms
tests/responses-input-items-options.test.ts ✅ Passed 98ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 236ms
tests/responses-input-tokens-count.test.ts ✅ Passed 225ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.167s
tests/responses-not-found-errors.test.ts ✅ Passed 258ms
tests/responses-parse.test.ts ✅ Passed 192ms
tests/responses-retrieve-retries.test.ts ✅ Passed 237ms
tests/responses-retrieve.test.ts ✅ Passed 208ms
tests/responses-stored-method-errors.test.ts ✅ Passed 525ms
tests/retry-behavior.test.ts ✅ Passed 3.014s
tests/sdk-error-shape.test.ts ✅ Passed 280ms

View OkTest run #32898144296

SDK merge (d0eec064f2d0) · head (c4dbb9cadd39) · base (0d12ca8e5f15) · OkTest (2b1bdfd25e98)

@github-actions

github-actions Bot commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

32 mixed files remain; 0 existing customizations changed.

Compared 0d12ca8e5f15 → c4dbb9cadd39. Generated baselines verified.

32 existing customizations unchanged
  • api.md
  • scripts/castiron/README.md
  • scripts/castiron/custom_code_report.py
  • scripts/castiron/test_custom_code_report.py
  • src/client.ts
  • src/resources/audio/transcriptions.ts
  • src/resources/audio/translations.ts
  • src/resources/beta/assistants.ts
  • src/resources/beta/beta.ts
  • src/resources/beta/index.ts
  • src/resources/beta/responses/internal-base.ts
  • src/resources/beta/responses/responses.ts
  • src/resources/beta/threads/index.ts
  • src/resources/beta/threads/runs/index.ts
  • src/resources/beta/threads/runs/runs.ts
  • src/resources/beta/threads/threads.ts
  • src/resources/chat/completions/completions.ts
  • src/resources/chat/completions/index.ts
  • src/resources/conversations/index.ts
  • src/resources/embeddings.ts
  • src/resources/files.ts
  • src/resources/fine-tuning/checkpoints/permissions.ts
  • src/resources/images.ts
  • src/resources/responses/internal-base.ts
  • src/resources/responses/responses.ts
  • src/resources/skills/skills.ts
  • src/resources/skills/versions/versions.ts
  • src/resources/vector-stores/file-batches.ts
  • src/resources/vector-stores/files.ts
  • src/resources/webhooks/index.ts
  • src/resources/webhooks/webhooks.ts
  • tests/lib/data-residency.test.ts

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 32898186782 --repo openai/openai-node \
  --name castiron-custom-code-32898186782-1 --dir /tmp/castiron-custom-code-32898186782-1
git apply --stat /tmp/castiron-custom-code-32898186782-1/custom-code.patch
cat /tmp/castiron-custom-code-32898186782-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin 0d12ca8e5f15591b08f96c6f7b78e6271e21f874 c4dbb9cadd391f775252bd04bbe1b543b73fb60d
python3 scripts/castiron/custom_code_report.py report \
  --base 0d12ca8e5f15591b08f96c6f7b78e6271e21f874 \
  --head c4dbb9cadd391f775252bd04bbe1b543b73fb60d --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-c4dbb9cadd39
cat /tmp/castiron-custom-code-c4dbb9cadd39/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

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

Copy link
Copy Markdown

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: 8d99b529a8

ℹ️ 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".

@HAYDEN-OAI HAYDEN-OAI 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.

Reviewed issuer and transport pinning, certificate boundaries, OAuth response validation, sensitive-error redaction, and cancellation/deadline handling. No additional substantive issues beyond the existing non-blocking cancellation-race comment.

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

Copy link
Copy Markdown

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: c4dbb9cadd

ℹ️ 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".

@jbeckwith-oai
jbeckwith-oai added this pull request to the merge queue Aug 25, 2026
Merged via the queue into main with commit 9dd8648 Aug 25, 2026
35 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the codex/x509-01-token-exchange branch August 25, 2026 21:03
@openai-sdks openai-sdks Bot mentioned this pull request Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants