Skip to content

fix(release): add missing Intel V8 signing entitlement - #30953

Merged
malsamiri-oai merged 2 commits into
mainfrom
codex/se-8006-intel-v8-entitlement
Jul 7, 2026
Merged

fix(release): add missing Intel V8 signing entitlement#30953
malsamiri-oai merged 2 commits into
mainfrom
codex/se-8006-intel-v8-entitlement

Conversation

@malsamiri-oai

@malsamiri-oai malsamiri-oai commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Why

Intel macOS release binaries crash on the first Code Mode tool call while V8 creates its code range. The x86_64 V8 allocator later makes a non-MAP_JIT reservation executable, which Hardened Runtime rejects when the signature contains only com.apple.security.cs.allow-jit.

Tracks SE-8006.
Fixes #28390.

What

  • check in an entitlement profile for each macOS release binary
  • grant allow-jit and allow-unsigned-executable-memory to codex, codex-app-server, and codex-code-mode-host
  • keep codex-responses-api-proxy on its existing allow-jit-only profile
  • resolve entitlement paths directly from the binary name during signing and final verification, failing if the profile is missing
  • verify the expected Mach-O architecture and exact entitlement dictionary for the signed binary, tar.gz, zstd, package, and DMG copies

Verification

  • just test-github-scripts (33 tests)
  • UV_CACHE_DIR=/private/tmp/codex-uv-cache just fmt-check
  • plutil -lint on all four entitlement profiles
  • parsed rust-release.yml as YAML
  • git diff --check
  • ad-hoc Hardened Runtime signing smoke on an x86_64 Mach-O slice: strict codesign verification passed; the Codex profile contained both keys and the proxy profile retained only allow-jit

Release validation

Run a native Intel smoke of the final Developer ID-signed x86_64 Codex binary through V8 isolate creation before shipping. PR #30849 is diagnostic scaffolding, but its non-sandbox release job currently fails in the harness before V8 starts, so it is not counted as coverage here.

@malsamiri-oai
malsamiri-oai requested a review from a team as a code owner July 2, 2026 21:46
@Norcy

Norcy commented Jul 3, 2026

Copy link
Copy Markdown

Who can merge it? We need it

@anp-oai anp-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.

At a high level I think I'd prefer just having an entitlements file checked in for each binary instead of dynamically selecting them in a script. How hard would that be?

Comment thread .github/scripts/macos-signing/select_codex_entitlements.sh Outdated
@malsamiri-oai
malsamiri-oai force-pushed the codex/se-8006-intel-v8-entitlement branch from 4e7df07 to fba0d47 Compare July 7, 2026 16:16
@malsamiri-oai
malsamiri-oai enabled auto-merge (squash) July 7, 2026 16:23
@malsamiri-oai

Copy link
Copy Markdown
Contributor Author

@anp-oai Updated this to use checked-in entitlement files per binary and removed the selector script. codex, codex-app-server, and codex-code-mode-host now use the V8 entitlement profile, while the responses proxy keeps its existing allow-jit-only profile. Could you take another look when you have a chance?

@malsamiri-oai
malsamiri-oai merged commit f363ed7 into main Jul 7, 2026
35 checks passed
@malsamiri-oai
malsamiri-oai deleted the codex/se-8006-intel-v8-entitlement branch July 7, 2026 16:47
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 7, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

5 participants