Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
257 commits
Select commit Hold shift + click to select a range
3b1c78a
[skill-creator] Add forward-testing instructions (#13600)
ebrevdo Mar 10, 2026
b7f8e91
Add OpenAI Docs skill (#13596)
cguo-oai Mar 10, 2026
f2d66fa
add(core): arc_monitor (#13936)
mzeng-openai Mar 10, 2026
d751e68
feat: Allow sync with remote plugin status. (#14176)
xl-openai Mar 10, 2026
3d4628c
Add granular metrics for cloud requirements load (#14108)
alexsong-oai Mar 10, 2026
91ca20c
Add spawn_agent model overrides (#14160)
aibrahim-oai Mar 10, 2026
722e8f0
unifying all image saves to /tmp to bug-proof (#14149)
won-openai Mar 10, 2026
d569452
app-server: propagate nested experimental gating for AskForApproval::…
dylan-hurd-oai Mar 10, 2026
ee8f841
Add output schema to MCP tools and expose MCP tool results in code mo…
pakrym-oai Mar 10, 2026
3d41ff0
Add model-controlled truncation for code mode results (#14258)
pakrym-oai Mar 10, 2026
a67660d
Load agent metadata from role files (#14177)
gabec-openai Mar 10, 2026
b1dddcb
Increase sdk workflow timeout to 15 minutes (#14252)
aibrahim-oai Mar 10, 2026
ce1d9ab
Clarify close_agent tool description (#14269)
aibrahim-oai Mar 10, 2026
07c22d2
Add code_mode output helpers for text and images (#14244)
pakrym-oai Mar 10, 2026
8ac27b2
Add ephemeral flag support to thread fork (#14248)
joeytrasatti-openai Mar 10, 2026
889b479
feat: Add additional macOS Sandbox Permissions for Launch Services, C…
leoshimo-oai Mar 10, 2026
2621ba1
Pass more params to compaction (#14247)
rasmusrygaard Mar 10, 2026
83b22bb
Add store/load support for code mode (#14259)
pakrym-oai Mar 10, 2026
c1a4246
chore: add a separate reject-policy flag for skill approvals (#14271)
celia-oai Mar 10, 2026
9b5078d
Stabilize pipe process stdin round-trip test (#14013)
aibrahim-oai Mar 11, 2026
e77b2fd
prompt changes to guardian (#14263)
maja-openai Mar 11, 2026
8a099b3
Rename code mode tool to exec (#14254)
pakrym-oai Mar 11, 2026
285b3a5
Show spawned agent model and effort in TUI (#14273)
aibrahim-oai Mar 11, 2026
c8446d7
Stabilize websocket response.failed error delivery (#14017)
aibrahim-oai Mar 11, 2026
da74da6
render local file links from target paths (#13857)
pash-openai Mar 11, 2026
01792a4
Prefix code mode output with success or failure message and include e…
pakrym-oai Mar 11, 2026
31bf1db
Make unified exec session_id numeric (#14279)
pakrym-oai Mar 11, 2026
39c1bc1
Add realtime start instructions config override (#14270)
aibrahim-oai Mar 11, 2026
a4d884c
Split spawn_csv from multi_agent (#14282)
aibrahim-oai Mar 11, 2026
12ee9eb
Add snippets annotated with types to tools when code mode enabled (#1…
pakrym-oai Mar 11, 2026
180a582
Add keyboard based fast switching between agents in TUI (#13923)
gabec-openai Mar 11, 2026
f385199
fix(arc_monitor): api path (#14290)
fouad-openai Mar 11, 2026
fd4a673
Responses: set x-client-request-id as convesration_id when talking to…
cconger Mar 11, 2026
7f22329
Revert "Pass more params to compaction" (#14298)
rasmusrygaard Mar 11, 2026
5485831
Allow bool web_search in ToolsToml (#14352)
pakrym-oai Mar 11, 2026
fa1242c
fix(otel): make HTTP trace export survive app-server runtimes (#14300)
owenlin0 Mar 11, 2026
7b2cee5
chore: wire through plugin policies + category from marketplace.json …
sayan-oai Mar 11, 2026
65b3251
Add ALL_TOOLS export to code mode (#14294)
pakrym-oai Mar 11, 2026
8f8a0f5
spawn prompt (#14362)
aibrahim-oai Mar 11, 2026
52a3bde
feat(core): emit turn metric for network proxy state (#14250)
viyatb-oai Mar 11, 2026
c32c445
Clarify locked role settings in spawn prompt (#14283)
aibrahim-oai Mar 11, 2026
f5bb338
Defer initial context insertion until the first turn (#14313)
charley-oai Mar 11, 2026
5259e5e
fix(network-proxy): serve HTTP proxy listener as HTTP/1 (#14395)
viyatb-oai Mar 11, 2026
5a89660
Add js_repl cwd and homeDir helpers (#14385)
fjord-oai Mar 11, 2026
f548309
Keep agent-switch word-motion keys out of draft editing (#14376)
joshka-oai Mar 11, 2026
8791f0a
Let models opt into original image detail (#14175)
fjord-oai Mar 11, 2026
f50e88d
check for large binaries in CI (#14382)
owenlin0 Mar 11, 2026
7263175
chore(app-server): stop emitting codex/event/ notifications (#14392)
owenlin0 Mar 12, 2026
77b0c75
feat: search_tool migrate to bring you own tool of Responses API (#14…
apanasenko-oai Mar 12, 2026
f276325
refactor: centralize filesystem permissions precedence (#14174)
viyatb-oai Mar 12, 2026
c1ea3f9
chore(app-server): delete unused rpc methods from v1.rs (#14394)
owenlin0 Mar 12, 2026
c2d5458
fix: align core approvals with split sandbox policies (#14171)
viyatb-oai Mar 12, 2026
bf5e997
Include spawn agent model metadata in app-server items (#14410)
aibrahim-oai Mar 12, 2026
5bc82c5
feat(app-server): propagate traces across tasks and core ops (#14387)
owenlin0 Mar 12, 2026
917c2df
chore: use AVAILABLE and ON_INSTALL as default plugin install and aut…
sayan-oai Mar 12, 2026
ba5b942
[apps] Add tool_suggest tool. (#14287)
mzeng-openai Mar 12, 2026
367a8a2
Clarify spawn agent authorization (#14432)
aibrahim-oai Mar 12, 2026
f6c6128
Support waiting for code_mode sessions (#14295)
pakrym-oai Mar 12, 2026
b5f927b
feat: refactor on openai-curated plugins. (#14427)
xl-openai Mar 12, 2026
04892b4
refactor: make bubblewrap the default Linux sandbox (#13996)
viyatb-oai Mar 12, 2026
e99e8e4
fix: follow up on linux sandbox review nits (#14440)
viyatb-oai Mar 12, 2026
19d0949
Handle pre-approved permissions in zsh fork (#14431)
mousseau-oai Mar 12, 2026
23e55d7
[elicitation] User-friendly tool call messages. (#14403)
mzeng-openai Mar 12, 2026
745ed4e
Use granted permissions when invoking apply_patch (#14429)
mousseau-oai Mar 12, 2026
7f2ca50
Updated out-of-date tip about availability on free and go plans (#14471)
etraut-openai Mar 12, 2026
0c8a366
fix: move inline codex-rs/core unit tests into sibling files (#14444)
bolinfest Mar 12, 2026
2f03b1a
Dispatch tools when code mode is not awaited directly (#14437)
pakrym-oai Mar 12, 2026
ff6764e
Add Python app-server SDK (#14435)
shaqayeq-oai Mar 12, 2026
a30b807
fix(cli): support legacy use_linux_sandbox_bwrap flag (#14473)
viyatb-oai Mar 12, 2026
09aa71a
Fix stdio-to-uds peer-close flake (#13882)
aibrahim-oai Mar 12, 2026
c0528b9
Move code mode tool files under tools/code_mode and split functionali…
pakrym-oai Mar 12, 2026
4e99c0f
rename spawn_csv feature flag to enable_fanout (#14475)
daveaitel-openai Mar 12, 2026
774965f
fix: preserve split filesystem semantics in linux sandbox (#14173)
viyatb-oai Mar 12, 2026
cfe3f68
Cleanup code_mode tool descriptions (#14480)
pakrym-oai Mar 12, 2026
4fa7d6f
Handle malformed agent role definitions nonfatally (#14488)
gabec-openai Mar 12, 2026
fa26597
Do not allow unified_exec for sandboxed scenarios on Windows (#14398)
iceweasel-oai Mar 12, 2026
3e96c86
use scopes_supported for OAuth when present on MCP servers (#14419)
jgershen-oai Mar 12, 2026
d1b03f0
Add default code-mode yield timeout (#14484)
pakrym-oai Mar 12, 2026
25e301e
Add parallel tool call test (#14494)
pakrym-oai Mar 12, 2026
4724a2e
chore(app-server): stop exporting EventMsg schemas (#14478)
owenlin0 Mar 12, 2026
d3e6680
fix turn_start_jsonrpc_span_parents_core_turn_spans flakiness (#14490)
owenlin0 Mar 12, 2026
09ba6b4
Reuse tool runtime for code mode worker (#14496)
pakrym-oai Mar 12, 2026
f35d460
Fix js_repl hangs on U+2028/U+2029 dynamic tool responses (#14421)
aaronl-openai Mar 12, 2026
a5a4899
Skip nested tool call parallel test on Windows (#14505)
pakrym-oai Mar 12, 2026
dadffd2
Fix MCP tool calling (#14491)
pakrym-oai Mar 12, 2026
1181238
memories: focus write prompts on user preferences (#14493)
andi-oai Mar 12, 2026
04e14bd
Rename exec session IDs to cell IDs (#14510)
pakrym-oai Mar 12, 2026
bc48b92
Update tool search prompts (#14500)
mzeng-openai Mar 12, 2026
a314c7d
Decouple request permissions feature and tool (#14426)
mousseau-oai Mar 12, 2026
b560494
Persist js_repl codex helpers across cells (#14503)
fjord-oai Mar 12, 2026
a2546d5
Expose code-mode tools through globals (#14517)
pakrym-oai Mar 12, 2026
6517173
feat(search_tool): gate search_tool on model supports_search_tool fie…
apanasenko-oai Mar 12, 2026
53d5972
Reapply "Pass more params to compaction" (#14298) (#14521)
rasmusrygaard Mar 12, 2026
d32820a
Fix `codex exec --profile` handling (#14524)
etraut-openai Mar 12, 2026
b7dba72
Rename reject approval policy to granular (#14516)
mousseau-oai Mar 12, 2026
1ea69e8
feat: add plugin/read. (#14445)
xl-openai Mar 12, 2026
76d8d17
login: add custom CA support for login flows (#14178)
joshka-oai Mar 13, 2026
793bf32
Split multi-agent handlers per tool (#14535)
pakrym-oai Mar 13, 2026
d9a403a
[js_repl] Hard-stop active js_repl execs on explicit user interrupts …
aaronl-openai Mar 13, 2026
6912da8
client: extend custom CA handling across HTTPS and websocket clients …
joshka-oai Mar 13, 2026
7626f61
Add typed multi-agent tool outputs (#14536)
pakrym-oai Mar 13, 2026
f194d4b
fix: reopen writable linux carveouts under denied parents (#14514)
viyatb-oai Mar 13, 2026
1a363d5
Add plugin usage telemetry (#14531)
alexsong-oai Mar 13, 2026
0daffe6
code_mode: Move exec params from runtime declarations to @pragma (#14…
cconger Mar 13, 2026
650beb1
Refactor cloud requirements error and surface in JSON-RPC error (#14504)
alexsong-oai Mar 13, 2026
3e8f471
Add realtime v2 event parser behind feature flag (#14537)
aibrahim-oai Mar 13, 2026
7c7e267
Simplify permissions available in request permissions tool (#14529)
mousseau-oai Mar 13, 2026
0c60eea
feat: support skill-scoped managed network domain overrides in skill …
celia-oai Mar 13, 2026
eaf81d3
Add codex tool support for realtime v2 handoff (#14554)
aibrahim-oai Mar 13, 2026
2253a9d
Add realtime transcription mode for websocket sessions (#14556)
aibrahim-oai Mar 13, 2026
c7e847a
Add diagnostics for read_only_unless_trusted timeout flake (#14518)
aibrahim-oai Mar 13, 2026
8e89e9e
Split multi-agent handler into dedicated files (#14603)
pakrym-oai Mar 13, 2026
9c9867c
code mode: single line tool declarations (#14526)
pakrym-oai Mar 13, 2026
6b3d82d
Use a private desktop for Windows sandbox instead of Winsta0\Default …
iceweasel-oai Mar 13, 2026
958f93f
sending back imagaegencall response back to responseapi (#14558)
won-openai Mar 13, 2026
59b588b
Improve granular approval policy prompt (#14553)
mousseau-oai Mar 13, 2026
9f2da5a
chore: clarify plugin + app copy in model instructions (#14541)
sayan-oai Mar 13, 2026
8567e3a
[bazel] Bump up cc and rust toolchains (#14542)
zbarsky-openai Mar 13, 2026
9dba733
Start TUI on embedded app server (#14512)
etraut-openai Mar 13, 2026
3aabce9
Unify realtime v1/v2 session config (#14606)
aibrahim-oai Mar 13, 2026
50558e6
app-server: Add platform os and family to init response (#14527)
euroelessar Mar 13, 2026
d58620c
Use subagents naming in the TUI (#14618)
aibrahim-oai Mar 13, 2026
914f7c7
Override local apps settings with requirements.toml settings (#14304)
canvrno-oai Mar 13, 2026
014e195
feat(app-server, core): add more spans (#14479)
owenlin0 Mar 13, 2026
ef37d31
fix: preserve zsh-fork escalation fds across unified-exec spawn paths…
bolinfest Mar 13, 2026
477a2dd
Add code_mode_only feature (#14617)
pakrym-oai Mar 13, 2026
6720caf
Slash copy osc52 wsl support (#13201)
won-openai Mar 13, 2026
cfd97b3
Rename multi-agent wait tool to wait_agent (#14631)
aibrahim-oai Mar 13, 2026
36dfb84
Stabilize multi-agent feature flag (#14622)
aibrahim-oai Mar 13, 2026
f8f82bf
app-server: add v2 filesystem APIs (#14245)
euroelessar Mar 13, 2026
cb7d8f4
Normalize MCP tool names to code-mode safe form (#14605)
pakrym-oai Mar 13, 2026
e3cbf91
Fix wait_agent expectations in core tests (#14637)
charley-oai Mar 13, 2026
bc24017
Add Smart Approvals guardian review across core, app-server, and TUI …
charley-oai Mar 13, 2026
467e621
Fix stale create_wait_tool reference (#14639)
charley-oai Mar 13, 2026
9a44a7e
[hooks] stop continuation & stop_hook_active mechanics (#14532)
eternal-openai Mar 13, 2026
e9050e3
Fix realtime transcription session.update tools payload (#14635)
aibrahim-oai Mar 13, 2026
7fa5201
Use parser-specific realtime voice enum (#14636)
aibrahim-oai Mar 13, 2026
b859a98
refactor: make unified-exec zsh-fork state explicit (#14633)
bolinfest Mar 14, 2026
4b9d5c8
Add openai_base_url config override for built-in provider (#12031)
etraut-openai Mar 14, 2026
69c8a1e
Fix Windows CI assertions for guardian and Smart Approvals (#14645)
aibrahim-oai Mar 14, 2026
bbd329a
Fix turn context reconstruction after backtracking (#14616)
charley-oai Mar 14, 2026
6dc04df
fix: persist future network host approvals across sessions (#14619)
viyatb-oai Mar 14, 2026
7f57139
fix: sync split sandbox policies for spawned subagents (#14650)
viyatb-oai Mar 14, 2026
d272f45
move plugin/skill instructions into dev msg and reorder (#14609)
sayan-oai Mar 14, 2026
ae0a651
Enforce errors on overriding built-in model providers (#12024)
etraut-openai Mar 14, 2026
8ca358a
Refresh Python SDK generated types (#14646)
sayan-oai Mar 14, 2026
e389091
make defaultPrompt an array, keep backcompat (#14649)
sayan-oai Mar 14, 2026
70eddad
dynamic tool calls: add param `exposeToContext` to optionally hide to…
cconger Mar 14, 2026
4b31848
Add argument-comment Dylint runner (#14651)
bolinfest Mar 14, 2026
9060dc7
fix: fix symlinked writable roots in sandbox policies (#14674)
viyatb-oai Mar 14, 2026
d692b74
Add auth 401 observability to client bug reports (#14611)
ccy-oai Mar 14, 2026
49edf31
[apps] Add tool call meta. (#14647)
mzeng-openai Mar 15, 2026
d4af605
[apps] Improve search tool fallback. (#14732)
mzeng-openai Mar 16, 2026
ba463a9
Preserve background terminals on interrupt and rename cleanup command…
friel-openai Mar 16, 2026
6fdeb1d
Reuse guardian session across approvals (#14668)
charley-oai Mar 16, 2026
029aab5
fix(core): preserve tool_params for elicitations (#14769)
mzeng-openai Mar 16, 2026
33acc1e
fix: sub-agent role when using profiles (#14807)
jif-oai Mar 16, 2026
18ad675
feat: improve skills cache key to take into account config layering (…
jif-oai Mar 16, 2026
3f266bc
feat: make interrupt state not final for multi-agents (#13850)
jif-oai Mar 16, 2026
c04a0a7
fix: tui freeze when sub-agents are present (#14816)
jif-oai Mar 16, 2026
db89b73
Move TUI on top of app server (parallel code) (#14717)
etraut-openai Mar 16, 2026
7a6e30b
Use request permission profile in app server (#14665)
mousseau-oai Mar 16, 2026
a0e41f4
Fixed build failures related to PR 14717 (#14826)
etraut-openai Mar 16, 2026
663dd3f
fix(core): fix sanitize name to use '_' everywhere (#14833)
apanasenko-oai Mar 16, 2026
4c9dbc1
memories: exclude AGENTS and skills from stage1 input (#14268)
andi-oai Mar 16, 2026
d0a693e
windows-sandbox: add runner IPC foundation for future unified_exec (#…
iceweasel-oai Mar 16, 2026
a3ba10b
Add exit helper to code mode scripts (#14851)
pakrym-oai Mar 16, 2026
6f05d8d
[stack 1/4] Split realtime websocket methods by version (#14828)
aibrahim-oai Mar 16, 2026
b77fe8f
Apply argument comment lint across codex-rs (#14652)
bolinfest Mar 16, 2026
59533a2
skill-creator: default new skills to ~/.codex/skills (#14837)
xl-openai Mar 17, 2026
49c2b66
Add marketplace display names to plugin/list (#14861)
xl-openai Mar 17, 2026
1d85fe7
feat: support remote_sync for plugin install/uninstall. (#14878)
xl-openai Mar 17, 2026
fbd7f9b
[stack 2/4] Align main realtime v2 wire and runtime flow (#14830)
aibrahim-oai Mar 17, 2026
e5a28ba
fix: align marketplace display name with existing interface conventio…
xl-openai Mar 17, 2026
8e34caf
[codex] add Jason as a predefined subagent name (#14881)
tibo-openai Mar 17, 2026
15ede60
fix: tighten up shell arg quoting in GitHub workflows (#14864)
bolinfest Mar 17, 2026
79f476e
[stack 3/4] Add current thread context to realtime startup (#14829)
aibrahim-oai Mar 17, 2026
32e4a5d
[stack 4/4] Reduce realtime self-interruptions during playback (#14827)
aibrahim-oai Mar 17, 2026
db7e02c
fix: canonicalize symlinked Linux sandbox cwd (#14849)
viyatb-oai Mar 17, 2026
57f865c
Fix tui_app_server: ignore duplicate legacy stream events (#14892)
etraut-openai Mar 17, 2026
d37dcca
Revert tui code so it does not rely on in-process app server (#14899)
etraut-openai Mar 17, 2026
603b649
fix(linux-sandbox): ignore missing writable roots (#14890)
viyatb-oai Mar 17, 2026
3164856
feat: centralize package manager version (#14920)
jif-oai Mar 17, 2026
4ed19b0
feat: rename to get more explicit close agent (#14935)
jif-oai Mar 17, 2026
ef36d39
Fix agent jobs finalization race and reduce status polling churn (#14…
daveaitel-openai Mar 17, 2026
e8add54
feat: show effective model in spawn agent event (#14944)
jif-oai Mar 17, 2026
6ea0410
fix(core): prevent hanging turn/start due to websocket warming issues…
owenlin0 Mar 17, 2026
8e258eb
Feat: CXA-1831 Persist latest model and reasoning effort in sqlite (#…
shijie-oai Mar 17, 2026
78e8ee4
fix(tui): restore remote resume and fork history (#14930)
fcoury Mar 17, 2026
f26ad3c
Fix fuzzy search notification buffering in app-server tests (#14955)
aibrahim-oai Mar 17, 2026
d484bb5
feat: add suffix to shell snapshot name (#14938)
jif-oai Mar 17, 2026
0d531c0
Fix code mode yield startup race (#14959)
aibrahim-oai Mar 17, 2026
904dbd4
generate an internal json schema for `RolloutLine` (#14434)
keyz Mar 17, 2026
95bdea9
use framed IPC for elevated command runner (#14846)
iceweasel-oai Mar 17, 2026
49e7dda
Add device-code onboarding and ChatGPT token refresh to app-server TU…
etraut-openai Mar 17, 2026
683c37c
[plugins] Support plugin installation elicitation. (#14896)
mzeng-openai Mar 17, 2026
b023886
Stabilize Windows cmd-based shell test harnesses (#14958)
aibrahim-oai Mar 17, 2026
23a44dd
Stabilize permissions popup selection tests (#14966)
aibrahim-oai Mar 17, 2026
4d9d4b7
Stabilize approval matrix write-file command (#14968)
aibrahim-oai Mar 17, 2026
2cc4ee4
temporarily disable private desktop until it works with elevated IPC …
iceweasel-oai Mar 17, 2026
ee756eb
Rename exec_wait tool to wait (#14983)
pakrym-oai Mar 17, 2026
0d2ff40
Add auth env observability (#14905)
ccy-oai Mar 17, 2026
43ee72a
fix(tui): implement /mcp inventory for tui_app_server (#14931)
fcoury Mar 17, 2026
1a9555e
Cleanup skills/remote/xxx endpoints. (#14977)
xl-openai Mar 17, 2026
c6ab4ee
Gate realtime audio interruption logic to v2 (#14984)
aibrahim-oai Mar 17, 2026
98be562
Unify realtime shutdown in core (#14902)
aibrahim-oai Mar 17, 2026
0d1539e
fix(linux-sandbox): prefer system /usr/bin/bwrap when available (#14963)
viyatb-oai Mar 17, 2026
fc75d07
Add Python SDK public API and examples (#14446)
shaqayeq-oai Mar 17, 2026
a5d3114
feat: Add product-aware plugin policies and clean up manifest naming …
xl-openai Mar 18, 2026
19b8871
app-server: reject websocket requests with Origin headers (#14995)
maxj-oai Mar 18, 2026
83a60fd
Add FS abstraction and use in view_image (#14960)
pakrym-oai Mar 18, 2026
6fe8a05
fix: honor active permission profiles in sandbox debug (#14293)
viyatb-oai Mar 18, 2026
d950543
feat: support restricted ReadOnlyAccess in elevated Windows sandbox (…
viyatb-oai Mar 18, 2026
7706164
Prefer websockets when providers support them (#13592)
pakrym-oai Mar 18, 2026
3ce879c
Handle realtime conversation end in the TUI (#14903)
aibrahim-oai Mar 18, 2026
226241f
Use workspace requirements for guardian prompt override (#14727)
charley-oai Mar 18, 2026
6fef421
[hooks] userpromptsubmit - hook before user's prompt is executed (#14…
eternal-openai Mar 18, 2026
a361303
Pin setup-zig GitHub Action to immutable SHA (#14858)
viyatb-oai Mar 18, 2026
84f4e7b
fix(subagents) share execpolicy by default (#13702)
dylan-hurd-oai Mar 18, 2026
40a7d1d
[plugins] Support configuration tool suggest allowlist. (#15022)
mzeng-openai Mar 18, 2026
0f9484d
feat: adapt artifacts to new packaging and 2.5.6 (#14947)
jif-oai Mar 18, 2026
a265d60
feat: add memory citation to agent message (#14821)
jif-oai Mar 18, 2026
58ac2a8
nit: disable live memory edition (#15058)
jif-oai Mar 18, 2026
347c6b1
Removed remaining core events from tui_app_server (#14942)
etraut-openai Mar 18, 2026
7ae9957
chore: disable memory read path for morpheus (#15059)
jif-oai Mar 18, 2026
606d850
Add notify to code-mode (#14842)
pakrym-oai Mar 18, 2026
580f32a
fix: harden plugin feature gating (#15020)
xl-openai Mar 18, 2026
334164a
feat(tui): restore composer history in app-server tui (#14945)
fcoury Mar 18, 2026
392347d
fix: try to fix "Stage npm package" step in ci.yml (#15092)
bolinfest Mar 18, 2026
88e5382
Propagate tool errors to code mode (#15075)
pakrym-oai Mar 18, 2026
5cada46
Return image URL from view_image tool (#15072)
pakrym-oai Mar 18, 2026
e5de136
Add a startup deprecation warning for custom prompts (#15076)
etraut-openai Mar 18, 2026
86982ca
Revert "fix: harden plugin feature gating" (#15102)
xl-openai Mar 18, 2026
7b37a03
Add final message prefix to realtime handoff output (#15077)
aibrahim-oai Mar 18, 2026
ebbbc52
Align SQLite feedback logs with feedback formatter (#13494)
charley-oai Mar 18, 2026
bb30432
Feat: reuse persisted model and reasoning effort on thread resume (#1…
shijie-oai Mar 18, 2026
b306885
don't add transcript for v2 realtime (#15111)
aibrahim-oai Mar 18, 2026
3590e18
Add update_plan code mode result (#15103)
pakrym-oai Mar 18, 2026
56d0c6b
Add apply_patch code mode result (#15100)
pakrym-oai Mar 18, 2026
dcd5e08
fix: harden plugin feature gating (#15104)
xl-openai Mar 19, 2026
81996fc
Add exec-server stub server and protocol docs (#15089)
starr-openai Mar 19, 2026
825d093
Support featured plugins (#15042)
alexsong-oai Mar 19, 2026
4fd2774
Add Python SDK thread.run convenience methods (#15088)
shaqayeq-oai Mar 19, 2026
903660e
Remove stdio transport from exec server (#15119)
pakrym-oai Mar 19, 2026
20f2a21
feat(core, tracing): create turn spans over websockets (#14632)
owenlin0 Mar 19, 2026
b14689d
Forward session and turn headers to MCP HTTP requests (#15011)
nicholasclark-openai Mar 19, 2026
42e932d
[hooks] turn_id extension for Stop & UserPromptSubmit (#15118)
eternal-openai Mar 19, 2026
10eb3ec
Simple directory mentions (#14970)
canvrno-oai Mar 19, 2026
01df50c
Add thread/shellCommand to app server API surface (#14988)
etraut-openai Mar 19, 2026
db5781a
feat: support product-scoped plugins. (#15041)
xl-openai Mar 19, 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,7 @@ common --jobs=30
common:remote --extra_execution_platforms=//:rbe
common:remote --remote_executor=grpcs://remote.buildbuddy.io
common:remote --jobs=800
# TODO(team): Evaluate if this actually helps, zbarsky is not sure, everything seems bottlenecked on `core` either way.
# Enable pipelined compilation since we are not bound by local CPU count.
#common:remote --@rules_rust//rust/settings:pipelined_compilation

3 changes: 2 additions & 1 deletion .github/actions/linux-code-sign/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ runs:
- name: Cosign Linux artifacts
shell: bash
env:
ARTIFACTS_DIR: ${{ inputs.artifacts-dir }}
COSIGN_EXPERIMENTAL: "1"
COSIGN_YES: "true"
COSIGN_OIDC_CLIENT_ID: "sigstore"
COSIGN_OIDC_ISSUER: "https://oauth2.sigstore.dev/auth"
run: |
set -euo pipefail
dest="${{ inputs.artifacts-dir }}"
dest="$ARTIFACTS_DIR"
if [[ ! -d "$dest" ]]; then
echo "Destination $dest does not exist"
exit 1
Expand Down
13 changes: 9 additions & 4 deletions .github/actions/macos-code-sign/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ runs:
- name: Sign macOS binaries
if: ${{ inputs.sign-binaries == 'true' }}
shell: bash
env:
TARGET: ${{ inputs.target }}
run: |
set -euo pipefail
Expand All @@ -131,14 +133,15 @@ runs:
fi
for binary in codex codex-responses-api-proxy; do
path="codex-rs/target/${{ inputs.target }}/release/${binary}"
path="codex-rs/target/${TARGET}/release/${binary}"
codesign --force --options runtime --timestamp --sign "$APPLE_CODESIGN_IDENTITY" "${keychain_args[@]}" "$path"
done
- name: Notarize macOS binaries
if: ${{ inputs.sign-binaries == 'true' }}
shell: bash
env:
TARGET: ${{ inputs.target }}
APPLE_NOTARIZATION_KEY_P8: ${{ inputs.apple-notarization-key-p8 }}
APPLE_NOTARIZATION_KEY_ID: ${{ inputs.apple-notarization-key-id }}
APPLE_NOTARIZATION_ISSUER_ID: ${{ inputs.apple-notarization-issuer-id }}
Expand All @@ -163,7 +166,7 @@ runs:
notarize_binary() {
local binary="$1"
local source_path="codex-rs/target/${{ inputs.target }}/release/${binary}"
local source_path="codex-rs/target/${TARGET}/release/${binary}"
local archive_path="${RUNNER_TEMP}/${binary}.zip"
if [[ ! -f "$source_path" ]]; then
Expand All @@ -184,6 +187,7 @@ runs:
if: ${{ inputs.sign-dmg == 'true' }}
shell: bash
env:
TARGET: ${{ inputs.target }}
APPLE_NOTARIZATION_KEY_P8: ${{ inputs.apple-notarization-key-p8 }}
APPLE_NOTARIZATION_KEY_ID: ${{ inputs.apple-notarization-key-id }}
APPLE_NOTARIZATION_ISSUER_ID: ${{ inputs.apple-notarization-issuer-id }}
Expand All @@ -206,7 +210,8 @@ runs:
source "$GITHUB_ACTION_PATH/notary_helpers.sh"
dmg_path="codex-rs/target/${{ inputs.target }}/release/codex-${{ inputs.target }}.dmg"
dmg_name="codex-${TARGET}.dmg"
dmg_path="codex-rs/target/${TARGET}/release/${dmg_name}"
if [[ ! -f "$dmg_path" ]]; then
echo "dmg $dmg_path not found"
Expand All @@ -219,7 +224,7 @@ runs:
fi
codesign --force --timestamp --sign "$APPLE_CODESIGN_IDENTITY" "${keychain_args[@]}" "$dmg_path"
notarize_submission "codex-${{ inputs.target }}.dmg" "$dmg_path" "$notary_key_path"
notarize_submission "$dmg_name" "$dmg_path" "$notary_key_path"
xcrun stapler staple "$dmg_path"
- name: Remove signing keychain
Expand Down
9 changes: 9 additions & 0 deletions .github/blob-size-allowlist.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Paths are matched exactly, relative to the repository root.
# Keep this list short and limited to intentional large checked-in assets.

.github/codex-cli-splash.png
MODULE.bazel.lock
codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json
codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json
codex-rs/tui/tests/fixtures/oss-story.jsonl
codex-rs/tui_app_server/tests/fixtures/oss-story.jsonl
32 changes: 32 additions & 0 deletions .github/workflows/blob-size-policy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: blob-size-policy

on:
pull_request: {}

jobs:
check:
name: Blob size policy
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Determine PR comparison range
id: range
shell: bash
run: |
set -euo pipefail
echo "base=$(git rev-parse HEAD^1)" >> "$GITHUB_OUTPUT"
echo "head=$(git rev-parse HEAD^2)" >> "$GITHUB_OUTPUT"
- name: Check changed blob sizes
env:
BASE_SHA: ${{ steps.range.outputs.base }}
HEAD_SHA: ${{ steps.range.outputs.head }}
run: |
python3 scripts/check_blob_size.py \
--base "$BASE_SHA" \
--head "$HEAD_SHA" \
--max-bytes 512000 \
--allowlist .github/blob-size-allowlist.txt
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
run: |
set -euo pipefail
# Use a rust-release version that includes all native binaries.
CODEX_VERSION=0.74.0
CODEX_VERSION=0.115.0
OUTPUT_DIR="${RUNNER_TEMP}"
python3 ./scripts/stage_npm_packages.py \
--release-version "$CODEX_VERSION" \
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/issue-deduplicator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,7 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
gh issue edit "${{ github.event.issue.number }}" --remove-label codex-deduplicate || true
gh issue edit "$ISSUE_NUMBER" --remove-label codex-deduplicate || true
echo "Attempted to remove label: codex-deduplicate"
69 changes: 61 additions & 8 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
name: Detect changed areas
runs-on: ubuntu-24.04
outputs:
argument_comment_lint: ${{ steps.detect.outputs.argument_comment_lint }}
argument_comment_lint_package: ${{ steps.detect.outputs.argument_comment_lint_package }}
codex: ${{ steps.detect.outputs.codex }}
workflows: ${{ steps.detect.outputs.workflows }}
steps:
Expand All @@ -39,12 +41,18 @@ jobs:
fi
codex=false
argument_comment_lint=false
argument_comment_lint_package=false
workflows=false
for f in "${files[@]}"; do
[[ $f == codex-rs/* ]] && codex=true
[[ $f == codex-rs/* || $f == tools/argument-comment-lint/* || $f == justfile ]] && argument_comment_lint=true
[[ $f == tools/argument-comment-lint/* || $f == .github/workflows/rust-ci.yml ]] && argument_comment_lint_package=true
[[ $f == .github/* ]] && workflows=true
done
echo "argument_comment_lint=$argument_comment_lint" >> "$GITHUB_OUTPUT"
echo "argument_comment_lint_package=$argument_comment_lint_package" >> "$GITHUB_OUTPUT"
echo "codex=$codex" >> "$GITHUB_OUTPUT"
echo "workflows=$workflows" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -83,6 +91,44 @@ jobs:
- name: cargo shear
run: cargo shear

argument_comment_lint:
name: Argument comment lint
runs-on: ubuntu-24.04
needs: changed
if: ${{ needs.changed.outputs.argument_comment_lint == 'true' || needs.changed.outputs.workflows == 'true' || github.event_name == 'push' }}
steps:
- uses: actions/checkout@v6
- name: Install Linux sandbox build dependencies
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends pkg-config libcap-dev
- uses: dtolnay/rust-toolchain@1.93.0
with:
toolchain: nightly-2025-09-18
components: llvm-tools-preview, rustc-dev, rust-src
- name: Cache cargo-dylint tooling
id: cargo_dylint_cache
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/cargo-dylint
~/.cargo/bin/dylint-link
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
key: argument-comment-lint-${{ runner.os }}-${{ hashFiles('tools/argument-comment-lint/Cargo.lock', 'tools/argument-comment-lint/rust-toolchain', '.github/workflows/rust-ci.yml') }}
- name: Install cargo-dylint tooling
if: ${{ steps.cargo_dylint_cache.outputs.cache-hit != 'true' }}
run: cargo install --locked cargo-dylint dylint-link
- name: Test argument comment lint package
if: ${{ needs.changed.outputs.argument_comment_lint_package == 'true' || github.event_name == 'push' }}
working-directory: tools/argument-comment-lint
run: cargo test
- name: Run argument comment lint on codex-rs
run: |
bash -n tools/argument-comment-lint/run.sh
./tools/argument-comment-lint/run.sh
# --- CI to validate on different os/targets --------------------------------
lint_build:
name: Lint/Build — ${{ matrix.runner }} - ${{ matrix.target }}${{ matrix.profile == 'release' && ' (release)' || '' }}
Expand Down Expand Up @@ -305,7 +351,7 @@ jobs:

- if: ${{ matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl'}}
name: Install Zig
uses: mlugg/setup-zig@v2
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2
with:
version: 0.14.0

Expand Down Expand Up @@ -657,30 +703,37 @@ jobs:
# --- Gatherer job that you mark as the ONLY required status -----------------
results:
name: CI results (required)
needs: [changed, general, cargo_shear, lint_build, tests]
needs:
[changed, general, cargo_shear, argument_comment_lint, lint_build, tests]
if: always()
runs-on: ubuntu-24.04
steps:
- name: Summarize
shell: bash
run: |
echo "arglint: ${{ needs.argument_comment_lint.result }}"
echo "general: ${{ needs.general.result }}"
echo "shear : ${{ needs.cargo_shear.result }}"
echo "lint : ${{ needs.lint_build.result }}"
echo "tests : ${{ needs.tests.result }}"
# If nothing relevant changed (PR touching only root README, etc.),
# declare success regardless of other jobs.
if [[ '${{ needs.changed.outputs.codex }}' != 'true' && '${{ needs.changed.outputs.workflows }}' != 'true' && '${{ github.event_name }}' != 'push' ]]; then
if [[ '${{ needs.changed.outputs.argument_comment_lint }}' != 'true' && '${{ needs.changed.outputs.codex }}' != 'true' && '${{ needs.changed.outputs.workflows }}' != 'true' && '${{ github.event_name }}' != 'push' ]]; then
echo 'No relevant changes -> CI not required.'
exit 0
fi
# Otherwise require the jobs to have succeeded
[[ '${{ needs.general.result }}' == 'success' ]] || { echo 'general failed'; exit 1; }
[[ '${{ needs.cargo_shear.result }}' == 'success' ]] || { echo 'cargo_shear failed'; exit 1; }
[[ '${{ needs.lint_build.result }}' == 'success' ]] || { echo 'lint_build failed'; exit 1; }
[[ '${{ needs.tests.result }}' == 'success' ]] || { echo 'tests failed'; exit 1; }
if [[ '${{ needs.changed.outputs.argument_comment_lint }}' == 'true' || '${{ needs.changed.outputs.workflows }}' == 'true' || '${{ github.event_name }}' == 'push' ]]; then
[[ '${{ needs.argument_comment_lint.result }}' == 'success' ]] || { echo 'argument_comment_lint failed'; exit 1; }
fi
if [[ '${{ needs.changed.outputs.codex }}' == 'true' || '${{ needs.changed.outputs.workflows }}' == 'true' || '${{ github.event_name }}' == 'push' ]]; then
[[ '${{ needs.general.result }}' == 'success' ]] || { echo 'general failed'; exit 1; }
[[ '${{ needs.cargo_shear.result }}' == 'success' ]] || { echo 'cargo_shear failed'; exit 1; }
[[ '${{ needs.lint_build.result }}' == 'success' ]] || { echo 'lint_build failed'; exit 1; }
[[ '${{ needs.tests.result }}' == 'success' ]] || { echo 'tests failed'; exit 1; }
fi
- name: sccache summary note
if: always()
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/rust-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ jobs:
- if: ${{ matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl'}}
name: Install Zig
uses: mlugg/setup-zig@v2
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2
with:
version: 0.14.0

Expand Down Expand Up @@ -490,9 +490,10 @@ jobs:
- name: Stage npm packages
env:
GH_TOKEN: ${{ github.token }}
RELEASE_VERSION: ${{ steps.release_name.outputs.name }}
run: |
./scripts/stage_npm_packages.py \
--release-version "${{ steps.release_name.outputs.name }}" \
--release-version "$RELEASE_VERSION" \
--package codex \
--package codex-responses-api-proxy \
--package codex-sdk
Expand Down Expand Up @@ -561,10 +562,12 @@ jobs:
- name: Download npm tarballs from release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_TAG: ${{ needs.release.outputs.tag }}
RELEASE_VERSION: ${{ needs.release.outputs.version }}
run: |
set -euo pipefail
version="${{ needs.release.outputs.version }}"
tag="${{ needs.release.outputs.tag }}"
version="$RELEASE_VERSION"
tag="$RELEASE_TAG"
mkdir -p dist/npm
patterns=(
"codex-npm-${version}.tgz"
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ on:

jobs:
sdks:
runs-on: ubuntu-latest
runs-on:
group: codex-runners
labels: codex-linux-x64
timeout-minutes: 10
steps:
- name: Checkout repository
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/shell-tool-mcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,14 @@ jobs:
steps:
- name: Compute version and tags
id: compute
env:
RELEASE_TAG_INPUT: ${{ inputs.release-tag }}
RELEASE_VERSION_INPUT: ${{ inputs.release-version }}
run: |
set -euo pipefail
version="${{ inputs.release-version }}"
release_tag="${{ inputs.release-tag }}"
version="$RELEASE_VERSION_INPUT"
release_tag="$RELEASE_TAG_INPUT"
if [[ -z "$version" ]]; then
if [[ -n "$release_tag" && "$release_tag" =~ ^rust-v.+ ]]; then
Expand Down Expand Up @@ -483,20 +486,22 @@ jobs:
STAGING_DIR: ${{ runner.temp }}/shell-tool-mcp

- name: Ensure binaries are executable
env:
STAGING_DIR: ${{ steps.staging.outputs.dir }}
run: |
set -euo pipefail
staging="${{ steps.staging.outputs.dir }}"
chmod +x \
"$staging"/vendor/*/bash/*/bash \
"$staging"/vendor/*/zsh/*/zsh
"$STAGING_DIR"/vendor/*/bash/*/bash \
"$STAGING_DIR"/vendor/*/zsh/*/zsh
- name: Create npm tarball
shell: bash
env:
STAGING_DIR: ${{ steps.staging.outputs.dir }}
run: |
set -euo pipefail
mkdir -p dist/npm
staging="${{ steps.staging.outputs.dir }}"
pack_info=$(cd "$staging" && npm pack --ignore-scripts --json --pack-destination "${GITHUB_WORKSPACE}/dist/npm")
pack_info=$(cd "$STAGING_DIR" && npm pack --ignore-scripts --json --pack-destination "${GITHUB_WORKSPACE}/dist/npm")
filename=$(PACK_INFO="$pack_info" node -e 'const data = JSON.parse(process.env.PACK_INFO); console.log(data[0].filename);')
mv "dist/npm/${filename}" "dist/npm/codex-shell-tool-mcp-npm-${PACKAGE_VERSION}.tgz"
Expand Down
Loading