Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
288 commits
Select commit Hold shift + click to select a range
dd55214
Enable zstd compression for code-mode gRPC responses (#57212)
cayoub-oai Oct 25, 2026
9756b49
Coordinate resume picker sources independently (#57215)
bc-openai Oct 25, 2026
13b1318
Support negotiated WebSocket compression in the remote app-server cli…
thorvald-oai Oct 25, 2026
20f5dde
Log app-server WebSocket compression statistics (#57220)
thorvald-oai Oct 25, 2026
abf4bb9
Expand keyboard navigation and selection in the transcript (#57221)
fcoury-oai Oct 25, 2026
285fc74
Integrate Find with transcript selection mode (#57222)
fcoury-oai Oct 25, 2026
9f622c2
Wire keyboard selection into transcript overlays (#57223)
fcoury-oai Oct 25, 2026
964aeda
Fix transcript selection input routing and preserve composer drafts (…
fcoury-oai Oct 25, 2026
480ab2d
Add managed enforcement of DELETE journaling on NFS (#57225)
dkovalenko-oai Oct 25, 2026
ca8b7a0
Allow NFS database migration with shared file permissions (#57226)
dkovalenko-oai Oct 25, 2026
3047741
Preserve acknowledged permissions when resuming and forking threads (…
charliemarsh-oai Oct 25, 2026
7948c07
Give remote control pairing a 35-second deadline (#57228)
etraut-openai Oct 25, 2026
0b021a5
Simplify code-mode cell completion delivery (#57229)
cconger Oct 26, 2026
4fc522f
Add optional thread resumption to `codex queue` (#57232)
etraut-openai Oct 26, 2026
eee977b
Stop dotenv loading on persistent I/O errors (#57233)
etraut-openai Oct 26, 2026
e7d32ee
Prevent credential collisions in registry auth test fixtures (#57234)
jif-oai Oct 26, 2026
f427056
Tag exec_command telemetry with the configured shell snapshot mode (#…
jif-oai Oct 26, 2026
49d6fe5
Exercise V2 spawning in subagent context inheritance tests (#57238)
tamird Oct 26, 2026
3d8ca70
Make the MCP HTTP probe timeout test deterministic (#57239)
jif-oai Oct 26, 2026
333d7bd
Bound memory baseline files and recover incomplete snapshots (#57240)
dhruvgupta-oai Oct 26, 2026
b881730
Honor configured message limits for encrypted guardian transcripts (#…
ioanbudea-OAI Oct 26, 2026
db7516f
Reduce the default thread unload delay to one minute (#57242)
jif-oai Oct 26, 2026
7a9625f
Pause Tokio time in startup draft handoff tests (#57243)
goodman-oai Oct 26, 2026
cc6baf9
Wait for process completion in the unified exec reuse test (#57244)
goodman-oai Oct 26, 2026
e84504b
Stabilize the rejected queue message test (#57245)
goodman-oai Oct 26, 2026
12b2b58
Release the rollout maintenance lock when its guard is dropped (#57247)
goodman-oai Oct 26, 2026
8f71a86
Make login token-refresh tests wait for auth publication (#57248)
goodman-oai Oct 26, 2026
3ad642e
Allow disabling plugin discovery prefetch at app-server startup (#57249)
zamoshchin-openai Oct 26, 2026
f358635
Show native dollar thread usage for ENT26 plans (#57251)
jif-oai Oct 26, 2026
987b8df
Allow slow daemon startup while detecting early process exits (#57253)
etraut-openai Oct 26, 2026
438cfc5
Record reviewed exceptions for zstd security advisories (#57255)
charliemarsh-oai Oct 26, 2026
766f547
Keep parent history out of attached thread views (#57256)
btraut-openai Oct 26, 2026
eb3572f
Avoid unnecessary connector directory work for tool suggestions (#57257)
charliemarsh-oai Oct 26, 2026
a8bca62
Reduce remote plugin catalog cache probing overhead (#57258)
charliemarsh-oai Oct 26, 2026
81cbc26
Render Markdown in TUI async question choices (#57259)
imac-oai Oct 26, 2026
5184977
Centralize permission request preparation and approval actions (#57260)
swastik-oai Oct 26, 2026
bd72161
Separate `apply_patch` request preparation from execution (#57261)
swastik-oai Oct 26, 2026
3cacafa
Add incremental skill catalogs behind `skill_catalog_deltas` (#57262)
adaley-openai Oct 26, 2026
698599a
Support model-catalog wording for permission path warnings (#57263)
goodman-oai Oct 26, 2026
c93a54e
Show effective processing tiers in TUI status surfaces (#57265)
etraut-openai Oct 26, 2026
654b2ec
Keep cloud conversation settings server-owned in the TUI (#57267)
bc-openai Oct 26, 2026
fcb3ba7
Record reasons for embedded TUI starts (#57268)
etraut-openai Oct 26, 2026
0818b91
Add native Windows MSVC V8 source archive builds (#57269)
seanh-oai Oct 26, 2026
51e3f94
Load cloud config for sandbox and remote exec-server commands (#57270)
abhinav-oai Oct 26, 2026
7077b1e
Enable text selection and mouse scrolling in the warning viewer (#57271)
imac-oai Oct 26, 2026
e963cab
Add code-mode output truncation protocol contracts (#57272)
seanh-oai Oct 26, 2026
bae1126
Reject unsupported options for `codex queue` (#57273)
etraut-openai Oct 26, 2026
369b2ea
Defer REPL evidence rendering to synchronous context preparation (#57…
ioanbudea-OAI Oct 26, 2026
166aed9
Preserve image generation failure metadata for premium usage limits (…
jimxie-oai Oct 26, 2026
d416d8a
Support window prefixes for extension world-state sections (#57276)
fc-oai Oct 26, 2026
6eb3574
Use the crates.io release of `i18n-config` (#57277)
goodman-oai Oct 26, 2026
716b4ec
Refactor agent spawning, startup, and communication helpers (#57278)
rhan-oai Oct 26, 2026
6d8f311
Render untrusted additional context as named tool outputs (#57279)
akira-oai Oct 26, 2026
f2df3e3
Preserve full MCP results in rollout traces (#57280)
cassirer-openai Oct 26, 2026
812d9a3
Enable agents navigation for remote App Server sessions (#57281)
etraut-openai Oct 26, 2026
efab309
Promote rounded token counts to the next compact unit (#57282)
etraut-openai Oct 26, 2026
a3eabbb
Express TUI mouse capture as an explicit policy (#57284)
imac-oai Oct 26, 2026
f9c4c3c
Let the terminal handle links in expanded questions (#57285)
imac-oai Oct 26, 2026
136d891
Support `network_proxy` in managed requirements (#57286)
viyatb-oai Oct 26, 2026
b46a380
Preserve parent tool declarations in prediction forks (#57287)
keyz Oct 26, 2026
16effdf
Add a plugin process host with bounded IPC and lifecycle management (…
joesavona Oct 26, 2026
a014908
Represent user message presentation with an enum (#57291)
imac-oai Oct 26, 2026
b52a272
Render async questions and replies with Markdown in the TUI (#57292)
imac-oai Oct 26, 2026
126a0ee
Add GPT-6.1 Terra to model catalogs (#57293)
BOZHANG-OAI Oct 26, 2026
62f7f34
Extract plugin manager errors and box realtime handoff routing (#57294)
TAFOYA-OAI Oct 26, 2026
3e9264f
Defer synchronous Guardian evidence limits to preparation (#57295)
ioanbudea-OAI Oct 26, 2026
fa4c060
Surface refresh-token rejection errors during workspace routing (#57304)
smurching-oai Oct 26, 2026
4aca387
Bump `openai/fence` to `v0.12.2` in the blob size policy (#57307)
joesavona Oct 26, 2026
e977cb3
Preserve tool output versions and history order in rollout traces (#5…
cassirer-openai Oct 26, 2026
1f28129
Centralize Guardian root context preparation (#57312)
ioanbudea-OAI Oct 26, 2026
9526f8d
Default gateway OAuth delivery to Authorization bearer tokens (#57313)
smurching-oai Oct 26, 2026
95cafae
Format all Rust sources and clean up repository checks (#57314)
joesavona Oct 27, 2026
b01148d
Keep failed subagents from marking tasks as needing attention (#57315)
bc-openai Oct 27, 2026
ce7adb6
Add opt-in concise hints for explicitly selected plugins (#57317)
adaley-openai Oct 27, 2026
c587d6e
Add model catalog fields for granular approval templates (#57325)
goodman-oai Oct 27, 2026
b7f7e7f
Separate TUI session resume preparation from activation (#57342)
bc-openai Oct 27, 2026
9510f36
Preserve child signal failures in the npm wrapper (#57352)
dkovalenko-oai Oct 27, 2026
3f74ff2
Avoid object-identity preflight for MXC path grants (#57353)
iceweasel-oai Oct 27, 2026
f69b8d2
Report when NFS database migration finds no databases (#57357)
dkovalenko-oai Oct 27, 2026
adfcac1
Serialize session index mutations across processes (#57358)
dkovalenko-oai Oct 27, 2026
ff2346f
Bound waits for the thread writer coordination lock (#57360)
dkovalenko-oai Oct 27, 2026
118aae2
Explain safety policy blocks with turn-scoped recourse in the TUI (#5…
etraut-openai Oct 27, 2026
6c0db39
Offer safer rewrites after safety blocks in the TUI (#57365)
etraut-openai Oct 27, 2026
155dde7
Show the selected ChatGPT workspace in `/status` (#57366)
etraut-openai Oct 27, 2026
2cab11c
Pin the Rust toolchain to 1.95.0 (#57373)
TAFOYA-OAI Oct 27, 2026
d30fe14
Drain pending terminal reports before returning to the shell (#57391)
etraut-openai Oct 27, 2026
d0f33fa
Render integral limits and parenthesized matrices in TUI math (#57393)
etraut-openai Oct 27, 2026
6fe77fc
Add experimental GCP account setup to the app server (#57394)
alexsong-oai Oct 27, 2026
124e4e5
Make thread item timestamps optional in TypeScript exports (#57420)
keyz Oct 27, 2026
5c6ef3d
Centralize Guardian root context preparation (#57425)
ioanbudea-OAI Oct 27, 2026
b6ad8ea
Test goal provenance in existing workers' Guardian reviews (#57430)
jif-oai Oct 27, 2026
ed1b92f
Add opt-in synchronous Guardian review for native tool calls (#57433)
jif-oai Oct 27, 2026
aeb6b22
Extract unified exec command preparation into a reusable module (#57435)
swastik-oai Oct 27, 2026
5557e08
Carry prepared commands through unified execution (#57438)
swastik-oai Oct 27, 2026
e1dd7ed
Preserve Guardian request metadata with custom OpenAI base URLs (#57439)
jif-oai Oct 27, 2026
a5ef02e
Add Guardian native multi-agent history feature flag (#57441)
jif-oai Oct 27, 2026
eec8bde
Preserve native multi-agent calls in Guardian review history (#57448)
jif-oai Oct 27, 2026
824b766
Route state-changing multi-agent calls through Guardian review (#57451)
jif-oai Oct 27, 2026
6a6e2fb
Distinguish policy-restricted capacity failures from server overloads…
toml-openai Oct 27, 2026
90de7b9
Centralize Guardian classification of multi-agent tool calls (#57455)
jif-oai Oct 27, 2026
50983c7
Move Guardian token usage calculation into the reviewer crate (#57458)
jif-oai Oct 27, 2026
2ebf42f
Always put Code Mode tool descriptions before namespace descriptions …
swastik-oai Oct 27, 2026
b89952d
Fix guardian handoff mocks for native history tests (#57468)
jif-oai Oct 27, 2026
6b3b67d
Test encrypted native call history across Guardian reviews (#57474)
jif-oai Oct 27, 2026
e344f4b
Move Guardian session helpers into the reviewer crate (#57476)
jif-oai Oct 27, 2026
75667b3
Move Guardian approval request types into the reviewer crate (#57478)
jif-oai Oct 27, 2026
dddc3c0
Skip unrelated indexed rollouts during selected thread migration (#57…
charliemarsh-oai Oct 27, 2026
3b600d0
Move guardian prompt composition into the reviewer crate (#57488)
jif-oai Oct 27, 2026
6b56106
Move Guardian action JSON formatting into the reviewer crate (#57493)
jif-oai Oct 27, 2026
603a7ba
Centralize synchronous Guardian context preparation (#57494)
ioanbudea-OAI Oct 27, 2026
2edc8dc
Add an option to omit descriptions from skill catalogs (#57500)
adaley-openai Oct 27, 2026
b07a347
Render escaped percent signs in TUI math (#57501)
etraut-openai Oct 27, 2026
f40f3df
Preserve local image attachments when restoring killed text (#57502)
etraut-openai Oct 27, 2026
615a8c9
Fix macOS standalone release pruning (#57503)
etraut-openai Oct 27, 2026
c8e73bf
Use the native clipboard for WSL SSH sessions with X11 forwarding (#5…
etraut-openai Oct 27, 2026
479f704
Move Guardian request mappings into the reviewer crate (#57506)
jif-oai Oct 27, 2026
a43fffc
Resolve Guardian command path conventions inside `ReviewAction` (#57507)
swastik-oai Oct 27, 2026
2d1984b
Add a bounded V8 runtime for UI plugin processes (#57508)
joesavona Oct 27, 2026
73bdd06
Extract Guardian planned-action assembly into the reviewer crate (#57…
jif-oai Oct 27, 2026
5a361b5
Explicitly unlock daemon PID reservation probes on Unix (#57512)
jif-oai Oct 27, 2026
27ace64
Replace the npm wrapper with the native binary using `execve` (#57513)
bolinfest Oct 27, 2026
d257beb
Add experimental ChatGPT workspace switching to app-server (#57514)
dhruvgupta-oai Oct 27, 2026
77f0cbf
Limit MXC volume expansion probes to symbolic links (#57515)
iceweasel-oai Oct 27, 2026
4c54667
Add profile and provider status line items (#57516)
etraut-openai Oct 27, 2026
6574bcd
Defer synchronous Guardian heartbeat compression to preparation (#57519)
ioanbudea-OAI Oct 27, 2026
19d7301
Add isolated reviews to the guardian reviewer pool (#57522)
swastik-oai Oct 27, 2026
4d3ed3f
Release empty PID probe locks explicitly on Unix (#57533)
jif-oai Oct 27, 2026
e3149dd
Preserve host-assigned user input IDs in Responses messages (#57538)
zbrunson-openai Oct 27, 2026
aa854da
Add model-gated literature search to standalone web search (#57542)
rhan-oai Oct 27, 2026
0d68383
Expose and persist image generation IDs (#57552)
jimxie-oai Oct 27, 2026
f088e0c
Allow replacing dynamic tools between model steps (#57553)
sdcoffey Oct 27, 2026
33d306d
Keep submitted prompts shaded when terminal colors are unavailable (#…
bc-openai Oct 27, 2026
d93071f
Avoid retaining unneeded output items in HTTP response streams (#57563)
btraut-openai Oct 27, 2026
fab1a57
Preserve rich composer content in Vim registers (#57564)
bc-openai Oct 27, 2026
f00c70f
Allow catalog URL overrides for the built-in OpenAI provider (#57567)
jamy-OAI Oct 27, 2026
02bc25c
Configure memory consolidation service tiers independently (#57568)
mandal-OAI Oct 27, 2026
6562117
Preserve process output and control replies under backpressure (#57569)
ztanner-oai Oct 27, 2026
d03a6e1
Support Apps tool catalogs without shared snapshots (#57572)
bkotsopoulos Oct 27, 2026
83747cc
Add filesystem-free classification of intercepted patch commands (#57…
swastik-oai Oct 27, 2026
e343a12
Refactor HTTP client construction and request execution (#57575)
bz-openai Oct 27, 2026
133c11d
Allow model catalogs to customize approval instruction headings (#57581)
goodman-oai Oct 27, 2026
5078420
Preserve output boundaries through token truncation (#57584)
seanh-oai Oct 27, 2026
cb66dbe
Replace unavailable image references in model requests (#57585)
kchainani-oai Oct 27, 2026
37f199d
Add host-reserved V2 child creation APIs (#57586)
rhan-oai Oct 27, 2026
a9ea49e
Add a standalone `codex-exec-server` executable (#57589)
dkovalenko-oai Oct 27, 2026
cf2c04b
Ship `codex-exec-server` in CLI and app-server packages (#57590)
dkovalenko-oai Oct 27, 2026
c8091ae
Remove empty local staging routing files (#57593)
fcoury-oai Oct 27, 2026
b538d2b
Preserve WebSocket probe evidence and redact diagnostic details (#57597)
dob-oai Oct 27, 2026
28cade4
Cache empty remote skill discovery with filesystem watches (#57598)
adams-oai Oct 27, 2026
e8e6a92
Support catalog headings for saved command-prefix notices (#57599)
goodman-oai Oct 27, 2026
939f5de
Add `codex doctor --network-only` for focused network diagnostics (#5…
dob-oai Oct 28, 2026
9cce575
Share runtime authentication with model providers and catalogs (#57607)
cooper-oai Oct 28, 2026
c0e88f3
Disable terminal status sequences on older VTE backends (#57612)
fcoury-oai Oct 28, 2026
68b67f0
Preserve rollout tracing across sub-agent reloads (#57615)
cassirer-openai Oct 28, 2026
04e365c
Release sampling prompts after stream setup (#57618)
btraut-openai Oct 28, 2026
4aa14ea
Show Bedrock setup for explicitly configured OpenAI providers (#57626)
alexsong-oai Oct 28, 2026
7ac6081
Stop shipping `codex-exec-server` in release artifacts (#57628)
fcoury-oai Oct 28, 2026
6ba3a84
Restore spawned descendants when unarchiving a thread (#57635)
etraut-openai Oct 28, 2026
424916e
Add OpenTelemetry requirement types to the app-server protocol (#57638)
arnavpatidar-OAI Oct 28, 2026
d63fe53
Generate Rust bindings that match Bazel-built V8 archives (#57644)
seanh-oai Oct 28, 2026
727283c
Support managed OpenTelemetry configuration requirements (#57649)
abhinav-oai Oct 28, 2026
bea47c0
Redact OTEL exporter headers in app-server config responses (#57654)
arnavpatidar-OAI Oct 28, 2026
0736b26
Fix trace exporter activation after account switches (#57657)
arnavpatidar-OAI Oct 28, 2026
154e873
Support managed OpenTelemetry metadata and PEM client identities (#57…
abhinav-oai Oct 28, 2026
26ad281
Remove detached delivery from `review/start` (#57667)
yansenzhou-oai Oct 28, 2026
f021168
Wait for turn profiles before asserting sampling counts in trace test…
ioanbudea-OAI Oct 28, 2026
d09a5cd
Move Guardian review state into the reviewer extension (#57697)
jif-oai Oct 28, 2026
13b0217
Move Guardian context policy and prompts into the reviewer extension …
jif-oai Oct 28, 2026
e6de6a2
Move Guardian review evidence into the reviewer extension (#57702)
jif-oai Oct 28, 2026
e742db9
Preserve parent routing affinity for Guardian reviews (#57710)
jif-oai Oct 28, 2026
5d5e5c5
Move `ReviewAction` into the Guardian reviewer crate (#57720)
jif-oai Oct 28, 2026
6f8bf68
Disable optimization for the on-demand Bazel schema generator (#57723)
jif-oai Oct 28, 2026
5fd36fc
Remove `free_guardian` configuration from Guardian tests (#57729)
ioanbudea-OAI Oct 28, 2026
6c839b3
Separate test-only Rust sources from Bazel library and binary inputs …
jif-oai Oct 28, 2026
29e3c61
Avoid recompiling Bazel integration tests for runtime fixture changes…
jif-oai Oct 28, 2026
ce2d47b
Move Guardian MCP elicitation helpers into the reviewer crate (#57743)
jif-oai Oct 28, 2026
fc916a2
Expose Guardian assessments in response streams (#57757)
jif-oai Oct 28, 2026
7c11b80
Include terminal launch commands in Guardian stdin reviews (#57758)
jif-oai Oct 28, 2026
5c0e421
Respect model catalog origins when selecting Guardian reviewers (#57770)
ioanbudea-OAI Oct 28, 2026
1cc3cf8
Skip non-regular files when detecting pasted image paths (#57774)
etraut-openai Oct 28, 2026
5fdb50a
Restrict code-mode host replacement to session admission (#57782)
aakash-oai Oct 28, 2026
c8bd6c1
Exclude unrelated network shares from MXC default reads (#57783)
iceweasel-oai Oct 28, 2026
575cc53
Fix app-server thread listener startup and shutdown races (#57787)
charliemarsh-oai Oct 28, 2026
7f4d53e
Release app-server thread runtimes after shutdown (#57788)
charliemarsh-oai Oct 28, 2026
84bef6e
Refresh the model catalog once when Guardian's default reviewer is mi…
jif-oai Oct 28, 2026
c6fce1c
Centralize synchronous Guardian prompt preparation (#57790)
ioanbudea-OAI Oct 28, 2026
22aec5f
Extend GitHub release read retries and add jitter (#57796)
imac-oai Oct 28, 2026
c92700d
Backfill exec completion items through paginated history (#57800)
btraut-openai Oct 28, 2026
ef186f8
Detach realtime sideband observers without ending the session (#57817)
jiahao-oai Oct 28, 2026
f37aa4b
Reduce unnecessary work in configuration processing (#57818)
bc-openai Oct 28, 2026
7f60546
Load up to eight plugins concurrently (#57819)
bc-openai Oct 28, 2026
78a3185
Improve TUI reconnect recovery and offline exit handling (#57820)
etraut-openai Oct 28, 2026
e6c5a83
Include directly attached threads in diagnostic uploads (#57824)
btraut-openai Oct 28, 2026
2f47f97
Update CI setup to use `meta/install-dotslash` (#57825)
seanh-oai Oct 28, 2026
ab190cd
Build V8 from source by default in Bazel (#57832)
seanh-oai Oct 28, 2026
3da7de5
Add isolated Guardian assessments for prepared actions (#57834)
swastik-oai Oct 28, 2026
55503b2
Limit concurrent image availability checks to eight (#57835)
kchainani-oai Oct 28, 2026
d359945
Declare the image generation result type in code mode (#57836)
alicec-oai Oct 28, 2026
b91f251
Ship the standalone executor in release packages (#57837)
dkovalenko-oai Oct 28, 2026
c62e9df
Preserve reasoning token accounting across resume and fork (#57839)
andrewgu-oai Oct 28, 2026
7ce5fa7
Validate thread providers before resume and input (#57840)
abhinav-oai Oct 28, 2026
d373d64
Add optional process metrics sampling for code-mode hosts (#57841)
aakash-oai Oct 28, 2026
6ff1e1c
## New Features
fcoury-oai Oct 29, 2026
e1d807c
sync CodeFx with Codex rust-v0.166.0
Hitller-win Nov 1, 2026
4f3ac82
ci: allow manual blocking checks
Hitller-win Nov 1, 2026
4bf2aa6
docs: update Codefx release references to 0.166.0
Hitller-win Nov 1, 2026
a6585c1
style: format capacity retry handling
Hitller-win Nov 1, 2026
fc24ab1
style: format installer tooling
Hitller-win Nov 1, 2026
cc1c449
style: format workflow YAML
Hitller-win Nov 1, 2026
6b724d4
fix: update argument lint tooling
Hitller-win Nov 1, 2026
a61dad0
fix: refresh Bazel module lock
Hitller-win Nov 1, 2026
1c308e1
fix: update libz-sys security patch
Hitller-win Nov 1, 2026
cc41321
fix: refresh Bazel lock for libz-sys
Hitller-win Nov 1, 2026
6f72b71
ci: reuse Bazel actions and cancel stale checks
Hitller-win Nov 1, 2026
a8fc19b
ci: allow combined SDK checks to finish
Hitller-win Nov 1, 2026
07cb507
ci: invalidate Bazel cache on config locks
Hitller-win Nov 1, 2026
3424cc5
ci: use hosted runners for PR checks
Hitller-win Nov 1, 2026
3fbda6b
ci: serialize matrix runners
Hitller-win Nov 1, 2026
01f4e7c
ci: fix matrix dependency graph
Hitller-win Nov 1, 2026
bb2e881
ci: accept MSVC terms for Windows cross builds
Hitller-win Nov 1, 2026
10ab4f7
ci: pass MSVC terms to Windows Bazel
Hitller-win Nov 1, 2026
8ac93ce
ci: pass fixed Windows host environment
Hitller-win Nov 1, 2026
4f60070
fix(bazel): gate Windows voice tools to MSVC
Hitller-win Nov 2, 2026
4be7e52
fix(bazel): restore SHA256-pinned zlib download with Launchpad fallback
caokai674 Nov 5, 2026
8306d26
fix(bazel): mark unprovisioned Windows voice native tools incompatible
caokai674 Nov 5, 2026
e666576
ci: isolate stale workflow concurrency queues for PR validation
caokai674 Nov 5, 2026
0fc7ab8
fix(ci): document scoped pin-utils unmaintained advisory exception
caokai674 Nov 5, 2026
3c62880
fix(ci): use standard macOS arm64 runners in Codefx workflows
caokai674 Nov 6, 2026
efb8b32
fix(ci): retire macOS workflows and retain Linux/Windows only
caokai674 Nov 6, 2026
b5f89d6
fix(ci): remove duplicate Linux lint timeout after macOS matrix removal
caokai674 Nov 6, 2026
48aaad9
ci(release): limit all Codefx release paths to verified Linux/Windows…
caokai674 Nov 6, 2026
e3441d6
ci: stop superseded Linux/Windows matrices on PR cancellation
caokai674 Nov 6, 2026
5a5ec17
ci: isolate required PR gate from stuck superseded scheduler-v2 runs
caokai674 Nov 6, 2026
8b6497c
ci: fix Prettier YAML whitespace in .github/workflows/bazel.yml
caokai674 Nov 6, 2026
f75aca1
ci: fix Prettier YAML whitespace in .github/workflows/repo-checks.yml
caokai674 Nov 6, 2026
c854d59
ci: isolate v8-canary from superseded scheduler-v2 queue
caokai674 Nov 6, 2026
305773b
ci: fix Bazel workflow Prettier and extend cold lint timeout
caokai674 Nov 6, 2026
475d07b
ci: isolate Bazel PR concurrency and extend cold Bazel job budgets
caokai674 Nov 6, 2026
cbe9062
ci: isolate required Rust checks from stale PR workflow runs
caokai674 Nov 6, 2026
89113ed
ci: allow SDK Bazel cold builds to finish before timeout
caokai674 Nov 6, 2026
b863d4e
ci: prevent cancelled V8 canaries from spawning Windows source builds
caokai674 Nov 6, 2026
881c218
test(codex-api): assert fallback retries for capacity errors without …
caokai674 Nov 6, 2026
a325794
test(codex-api): cover SSE capacity fallback when Retry-After is absent
caokai674 Nov 6, 2026
a7a225c
ci(bazel): allow cold Linux tests and downstream builds to complete w…
caokai674 Nov 6, 2026
7faad5b
ci(rust): give full Bazel argument lint builds a 180-minute budget
caokai674 Nov 6, 2026
9f7a989
ci(postmerge): budget for cold Linux/Windows Rust builds and argument…
caokai674 Nov 6, 2026
973e3c2
ci(postmerge): allow 180 minutes for cold nextest archives and native…
caokai674 Nov 6, 2026
860fcbc
style(codex-api): apply rustfmt output from required CI
caokai674 Nov 6, 2026
d06605c
style(codex-api): apply rustfmt output from required CI
caokai674 Nov 6, 2026
3daa076
ci: run rollout group-ownership tests on host and reclaim Bazel disk …
caokai674 Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 10 additions & 19 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ common:macos --strategy=CcConfigureMakeRule=remote,sandboxed,local
common:windows --test_env=SYSTEMROOT
common:windows --test_env=COMSPEC
common:windows --test_env=WINDIR
common:windows --test_env=SystemDrive
common:windows --test_env=LOCALAPPDATA
# Rust's libtest harness runs test bodies on std-spawned threads. The default
# 2 MiB stack can be too small for large async test futures on Windows CI; see
# https://github.com/openai/codex/pull/19067 for the motivating failure.
Expand Down Expand Up @@ -111,8 +113,9 @@ common:ci --build_metadata=REPO_URL=https://github.com/openai/codex.git
common:ci --build_metadata=ROLE=CI
common:ci --build_metadata=VISIBILITY=PUBLIC

# Disable disk cache in CI since we have a remote one and aren't using persistent workers.
common:ci --disk_cache=
# Keep the local action cache enabled in CI. BuildBuddy remains the preferred
# remote cache when credentials are available, while this path lets jobs on
# public runners reuse the same Bazel actions through actions/cache.

# Shared config for the main Bazel CI workflow.
common:ci-bazel --config=ci
Expand Down Expand Up @@ -172,6 +175,10 @@ build:argument-comment-lint --@rules_rust//rust/toolchain/channel=nightly
# Rearrange caches on Windows so they're on the same volume as the checkout.
common:ci-windows --config=ci-bazel
common:ci-windows --build_metadata=TAG_os=windows
# The Windows GNU test graph uses an MSVC host toolchain for helper binaries
# and therefore materializes windows_support's MSVC runtime repository. CI has
# explicitly accepted the Visual Studio terms for these Windows jobs.
common:ci-windows --repo_env=BAZEL_MSVC_RUNTIME_VISUAL_STUDIO_EULA=1
common:ci-windows --repo_contents_cache=D:/a/.cache/bazel-repo-contents-cache
# The hidden dynamic-tool callback currently times out on Windows, and ConPTY
# cannot reliably interrupt foreground processes on Windows Bazel runners.
Expand All @@ -196,6 +203,7 @@ common:ci-macos --strategy=TestRunner=darwin-sandbox,local
# still run against Windows binaries.
common:ci-windows-cross --config=ci-windows
common:ci-windows-cross --build_metadata=TAG_windows_cross_compile=true
common:ci-windows-cross --repo_env=BAZEL_MSVC_RUNTIME_VISUAL_STUDIO_EULA=1
common:ci-windows-cross --host_platform=//:rbe
common:ci-windows-cross --strategy=TestRunner=local
# V8 embeds IsolateData offsets in snapshot builtins; Windows snapshots must be
Expand All @@ -216,23 +224,6 @@ common:ci-v8 --config=ci
common:ci-v8 --build_metadata=TAG_workflow=v8
common:ci-v8 --build_metadata=TAG_os=linux

# Source-built Bazel V8 artifacts use the in-process sandbox by default. This
# does not affect Cargo's default prebuilt rusty_v8 path.
common --@v8//:v8_enable_pointer_compression=True
common --@v8//:v8_enable_sandbox=True

# Keep currently published rusty_v8 release artifacts non-sandboxed until the
# artifact migration ships matching Rust feature selection for Cargo consumers.
common:v8-release-compat --@v8//:v8_enable_pointer_compression=False
common:v8-release-compat --@v8//:v8_enable_sandbox=False
common:v8-target-x64 --@v8//bazel/config:v8_target_cpu=x64
common:v8-target-arm64 --@v8//bazel/config:v8_target_cpu=arm64

# Match rusty_v8's upstream GN release contract for published artifacts: every
# target object uses Chromium's custom libc++ headers and the archive folds in
# the matching runtime objects.
common:rusty-v8-upstream-libcxx --@v8//:v8_use_rusty_v8_custom_libcxx=True

# Native Windows MSVC builds inherit the runner's MSVC SDK environment.
# Client environment capture and repository discovery happen before target
# transitions, so these runner settings cannot live in runtime_package.bzl.
Expand Down
2 changes: 2 additions & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
iTerm
iTerm2
numer
oint
psuedo
SOM
te
TE
WRONLY
2 changes: 1 addition & 1 deletion .github/actions/build-bazel-package-binaries/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ runs:
cache-scope: bazel-release

- name: Install Cargo for workspace metadata
uses: dtolnay/rust-toolchain@d124f86f28ff42855784ff3319f48ac182c248f8 # 1.99.1
uses: dtolnay/rust-toolchain@e081816240890017053eacbb1bdf337761dc5582 # 1.95.0

- name: Configure MSVC environment
if: ${{ runner.os == 'Windows' }}
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/build-cargo-package-binaries/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ runs:
*) echo "Unsupported build mode: $BUILD_MODE" >&2; exit 1 ;;
esac

- uses: dtolnay/rust-toolchain@d124f86f28ff42855784ff3319f48ac182c248f8 # 1.99.1
- uses: dtolnay/rust-toolchain@e081816240890017053eacbb1bdf337761dc5582 # 1.95.0
with:
targets: ${{ inputs.target }}

Expand Down
8 changes: 6 additions & 2 deletions .github/actions/build-codex-packages/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ runs:
shell: bash
working-directory: codex-rs
env:
BASE_BINARIES: "codex codex-app-server codex-code-mode-host"
BASE_BINARIES: "codex codex-app-server codex-code-mode-host codex-exec-server"
WINDOWS_ONLY_BINARIES: "codex-command-runner codex-windows-sandbox-setup"
BUILD_MODE: ${{ inputs.build-mode }}
BUILD_SYSTEM: ${{ inputs.build-system }}
Expand Down Expand Up @@ -138,6 +138,7 @@ runs:
package_args=(
--target "$target"
--code-mode-host-bin "${release_dir}/codex-code-mode-host${exe_suffix}"
--exec-server-bin "${release_dir}/codex-exec-server${exe_suffix}"
--cargo-profile release
--package-version "$CODEX_PACKAGE_VERSION"
--force
Expand Down Expand Up @@ -183,7 +184,6 @@ runs:
mkdir -p "${GITHUB_WORKSPACE}/codex-rs/target"
pytest_args=(
-v
--basetemp "${GITHUB_WORKSPACE}/codex-rs/target/package-smoke-tmp"
--package-target "$target"
--symbols-archive "${GITHUB_WORKSPACE}/symbols-dist/${target}/codex-symbols-${target}.tar.gz"
)
Expand All @@ -194,13 +194,17 @@ runs:
exit 1
fi
# Windows setup helpers can finish background ACL work after pytest exits.
# Separate roots keep the next run from deleting their executables.
uv run --frozen pytest "${pytest_args[@]}" \
--basetemp "${GITHUB_WORKSPACE}/codex-rs/target/package-smoke-gzip-tmp" \
--compression gzip \
--cli-archive "${archive_dir}/codex-package-${target}.tar.gz" \
--app-server-archive "${archive_dir}/codex-app-server-package-${target}.tar.gz" \
test_codex_package.py
uv run --frozen pytest "${pytest_args[@]}" \
--basetemp "${GITHUB_WORKSPACE}/codex-rs/target/package-smoke-zstd-tmp" \
--compression zstd \
--cli-archive "${archive_dir}/codex-package-${target}.tar.zst" \
--app-server-archive "${archive_dir}/codex-app-server-package-${target}.tar.zst" \
Expand Down
30 changes: 30 additions & 0 deletions .github/actions/prepare-bazel-ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,23 @@ outputs:
runs:
using: composite
steps:
# GitHub-hosted Linux runners have limited free disk space. A full
# cold Bazel graph exhausted the filesystem and prevented cache saves.
# These preinstalled SDKs are unused by the Rust/Bazel CI matrix.
- name: Reclaim unused runner disk space (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
set -euo pipefail
for unused_path in /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL; do
if [[ -d "$unused_path" ]]; then
echo "Removing unused hosted-runner SDK: $unused_path"
sudo rm -rf -- "$unused_path"
fi
done
sudo apt-get clean
df -h "$GITHUB_WORKSPACE"

- id: setup_ci
uses: ./.github/actions/setup-ci

Expand Down Expand Up @@ -113,6 +130,19 @@ runs:
echo "repository-cache-key=bazel-cache-${CACHE_SCOPE}-${TARGET}-${CACHE_HASH}" >> "${GITHUB_OUTPUT}"
echo "repository-cache-restore-key=bazel-cache-${CACHE_SCOPE}-${TARGET}-" >> "${GITHUB_OUTPUT}"

# The repository cache only avoids downloading external archives. Keep the
# Bazel action cache separate and share it by target so test, clippy, and
# release verification jobs reuse compiled actions without sharing
# incompatible platform outputs. The action cache is content addressed by
# Bazel, so source changes safely invalidate individual entries.
- name: Cache Bazel action outputs
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/bazel-disk-cache
key: bazel-action-${{ inputs.cache-scope }}-${{ inputs.target }}-${{ hashFiles('.bazelrc', 'MODULE.bazel', 'MODULE.bazel.lock', 'codex-rs/Cargo.lock', 'codex-rs/Cargo.toml') }}
restore-keys: |
bazel-action-${{ inputs.cache-scope }}-${{ inputs.target }}-

# Restore the Bazel repository cache explicitly so external dependencies
# do not need to be re-downloaded on every CI run. Keep restore failures
# non-fatal so transient cache-service errors degrade to a cold build
Expand Down
1 change: 1 addition & 0 deletions .github/actions/run-argument-comment-lint/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ runs:
shell: bash
run: |
./.github/scripts/run-argument-comment-lint-bazel.sh \
--repo_env=BAZEL_MSVC_RUNTIME_VISUAL_STUDIO_EULA=1 \
--config=argument-comment-lint \
--platforms=//:local_windows \
--keep_going \
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/setup-ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ runs:
run: mkdir -p "$RUNNER_TEMP/dotslash-curl" && echo retry-all-errors > "$RUNNER_TEMP/dotslash-curl/.curlrc"

- name: Install DotSlash
uses: facebook/install-dotslash@1e4e7b3e07eaca387acb98f1d4720e0bee8dbb6a # v2
uses: meta/install-dotslash@1e4e7b3e07eaca387acb98f1d4720e0bee8dbb6a # v2
env:
CURL_HOME: ${{ runner.temp }}/dotslash-curl

Expand Down
2 changes: 2 additions & 0 deletions .github/scripts/build-codex-package-archive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ case "$target" in
;;
esac

resource_args+=(--exec-server-bin "${entrypoint_dir%/}/codex-exec-server${exe_suffix}")

code_mode_host_bin="${entrypoint_dir%/}/codex-code-mode-host${exe_suffix}"
if [[ "$code_mode_host_bin_provided" == "false" && -f "$code_mode_host_bin" ]]; then
resource_args+=(--code-mode-host-bin "$code_mode_host_bin")
Expand Down
4 changes: 3 additions & 1 deletion .github/scripts/contract_releases.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Discover and download published Codex packages for contract runners."""

import json
import random
import re
import subprocess
import sys
Expand All @@ -16,7 +17,7 @@

def github_read(args: list[str]) -> str:
"""Retry release reads unless the error is known permanent; never retry verification."""
for attempt, delay in enumerate((2, 5, 0), start=1):
for attempt, delay in enumerate((2, 5, 15, 45, 0), start=1):
try:
return subprocess.check_output(
args, text=True, stderr=subprocess.PIPE, timeout=120
Expand Down Expand Up @@ -58,6 +59,7 @@ def github_read(args: list[str]) -> str:
)
if not will_retry:
raise
delay += random.randint(0, delay // 2)
print(f"Retrying GitHub release read in {delay}s.", file=sys.stderr)
time.sleep(delay)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
APP = Path("CodexCLI.app")
EXECUTABLE = APP / "Contents/MacOS/codex"
SIGNING = Path(__file__).resolve().parent
HELPERS = ("bin/codex-code-mode-host", "codex-path/rg")
HELPERS = ("bin/codex-code-mode-host", "bin/codex-exec-server", "codex-path/rg")
LAUNCHER = """#!/bin/sh
set -eu
entry="$0"
Expand Down
7 changes: 7 additions & 0 deletions .github/scripts/macos-signing/sign_macos_cli_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import argparse
import os
import plistlib
import subprocess
import sys
from pathlib import Path
Expand Down Expand Up @@ -134,6 +135,12 @@ def main(configuration: bundle.ProfileConfiguration | None = None):
check=True,
)
if relative.startswith("bin/"):
# Signing tools may omit the blob when no entitlements are requested.
if (
actual.stat().st_size == 0
and plistlib.loads(entitlements.read_bytes()) == {}
):
actual.write_bytes(entitlements.read_bytes())
expected = reports / f"{name}-expected.plist"
subprocess.run(
[
Expand Down
30 changes: 23 additions & 7 deletions .github/scripts/macos-signing/test_sign_macos_cli_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,15 @@
target = Path(args[-1]).name
if target == "CodexCLI.app":
source = Path(os.environ["CODEX_REPO_ROOT"]) / "signing-verification/codex-provisioned-entitlements.plist"
elif target in ("codex", "codex-code-mode-host"):
elif target in ("codex", "codex-code-mode-host", "codex-exec-server"):
source = Path(os.environ["MOCK_SIGNING_SCRIPTS"]) / (target + ".entitlements.plist")
else:
sys.exit(0)
if target == "codex-exec-server" and os.environ.get("MOCK_EXECUTOR_ENTITLEMENTS"):
sys.stdout.buffer.write(plistlib.dumps({"unexpected": True}))
sys.exit(0)
if not plistlib.loads(source.read_bytes()) and os.environ.get("MOCK_OMIT_EMPTY_ENTITLEMENTS"):
sys.exit(0)
if os.environ.get("MOCK_WRONG_ENTITLEMENTS"):
sys.stdout.buffer.write(plistlib.dumps({"unexpected": True}))
else:
Expand Down Expand Up @@ -145,15 +150,21 @@ def run_driver(self, driver, operation, package, env):
)

def test_standard_and_provisioned_signing_and_verification(self):
for provisioned, target in itertools.product(
(False, True), ("aarch64-apple-darwin", "x86_64-apple-darwin")
for provisioned, target, omit_empty in itertools.product(
(False, True),
("aarch64-apple-darwin", "x86_64-apple-darwin"),
(False, True),
):
with (
self.subTest(provisioned=provisioned, target=target),
self.subTest(
provisioned=provisioned, target=target, omit_empty=omit_empty
),
tempfile.TemporaryDirectory() as directory,
):
root = Path(directory).resolve()
package, driver, env = self.fixture(root, provisioned, target)
if omit_empty:
env["MOCK_OMIT_EMPTY_ENTITLEMENTS"] = "1"
result = self.run_driver(driver, "sign", package, env)
self.assertEqual(result.returncode, 0, result.stderr)
result = self.run_driver(driver, "verify", package, env)
Expand Down Expand Up @@ -189,13 +200,13 @@ def test_standard_and_provisioned_signing_and_verification(self):
)
self.assertEqual(
["--entitlements" in call for call in signing],
[True, True, False],
[True, True, True, False],
)
self.assertEqual(
[call[0] for call in calls if call[0].startswith("notarize")],
["notarize_with_akv.py"]
if provisioned
else ["notarize_macos_binary_with_akv.sh"] * 3,
else ["notarize_macos_binary_with_akv.sh"] * 4,
)
self.assertEqual(
[call[1:] for call in calls if call[0] == "lipo"],
Expand Down Expand Up @@ -318,7 +329,12 @@ def test_signing_and_notarization_failures_stop_the_driver(self):

def test_verification_rejects_wrong_signing_identity_and_entitlements(self):
for provisioned, failure in itertools.product(
(False, True), ("MOCK_WRONG_SIGNING_IDENTITY", "MOCK_WRONG_ENTITLEMENTS")
(False, True),
(
"MOCK_WRONG_SIGNING_IDENTITY",
"MOCK_WRONG_ENTITLEMENTS",
"MOCK_EXECUTOR_ENTITLEMENTS",
),
):
with (
self.subTest(provisioned=provisioned, failure=failure),
Expand Down
23 changes: 23 additions & 0 deletions .github/scripts/run-bazel-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,29 @@ if [[ -n "${CODEX_BAZEL_EXECUTION_LOG_COMPACT_DIR:-}" ]]; then
fi

if [[ "${RUNNER_OS:-}" == "Windows" ]]; then
# The Windows GNU test graph uses an MSVC host toolchain for helper
# binaries. Pass the Visual Studio terms acceptance directly to Bazel's
# repository environment so the windows_support module extension receives
# it even when the local fallback omits the ci-windows config.
post_config_bazel_args+=("--repo_env=BAZEL_MSVC_RUNTIME_VISUAL_STUDIO_EULA=1")

# third_party/voice/windows_native.bzl reads these values during analysis.
# Bazel's inherited `--action_env=NAME` form is intentionally rejected here;
# pass the runner's concrete values so remote and local Windows actions see
# the same fixed host environment.
system_root="${SystemRoot:-${SYSTEMROOT:-}}"
processor_architecture="${PROCESSOR_ARCHITECTURE:-}"
if [[ -z "$system_root" || -z "$processor_architecture" ]]; then
echo "SystemRoot and PROCESSOR_ARCHITECTURE must be set for Windows Bazel CI." >&2
exit 1
fi
post_config_bazel_args+=(
"--action_env=SystemRoot=${system_root}"
"--host_action_env=SystemRoot=${system_root}"
"--action_env=PROCESSOR_ARCHITECTURE=${processor_architecture}"
"--host_action_env=PROCESSOR_ARCHITECTURE=${processor_architecture}"
)

pass_windows_build_env=1
if [[ $windows_cross_compile -eq 1 && -n "${BUILDBUDDY_API_KEY:-}" ]]; then
# Remote build actions execute on Linux RBE workers. Passing the Windows
Expand Down
7 changes: 7 additions & 0 deletions .github/scripts/run-bazel-query-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ run_bazel() {

bazel_query_args=(query)

if [[ "${RUNNER_OS:-}" == "Windows" ]]; then
# Windows GNU lint/test target discovery still uses the MSVC host toolchain
# for helper binaries, so match the main CI Bazel invocation's explicit
# Visual Studio terms acceptance.
bazel_query_args+=(--repo_env=BAZEL_MSVC_RUNTIME_VISUAL_STUDIO_EULA=1)
fi

if [[ -n "${BAZEL_REPO_CONTENTS_CACHE:-}" ]]; then
bazel_query_args+=("--repo_contents_cache=${BAZEL_REPO_CONTENTS_CACHE}")
fi
Expand Down
Loading
Loading