Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
840 commits
Select commit Hold shift + click to select a range
66b7c67
Refresh on models etag mismatch (#8491)
aibrahim-oai Jan 1, 2026
79ce79a
use a SandboxUsers group for ACLs instead of granting to each sandbox…
iceweasel-oai Jan 2, 2026
7078a0b
Log compaction request bodies (#8676)
pakrym-oai Jan 2, 2026
2de7314
Remove model family from tui (#8488)
aibrahim-oai Jan 2, 2026
ab75338
Replaced user documentation with links to developers docs site (#8662)
etraut-openai Jan 2, 2026
3cfa4bc
perf(tui2): reduce unnecessary redraws (#8681)
joshka-oai Jan 2, 2026
82fcc08
Fixed broken link in README (#8682)
etraut-openai Jan 2, 2026
efd2d76
Account for last token count on resume (#8677)
aibrahim-oai Jan 2, 2026
6846bc1
hard disable remote models refresh when feature is disabled (#8687)
aibrahim-oai Jan 2, 2026
c673e7a
chore(deps): bump tracing-opentelemetry from 0.31.0 to 0.32.0 in /cod…
dependabot[bot] Jan 3, 2026
1b5095b
Attach more tags to feedback submissions (#8688)
pakrym-oai Jan 3, 2026
ee9d441
chore: update outdated docs (#8701)
tibo-openai Jan 3, 2026
90f37e8
perf(tui2): cache transcript view rendering (#8693)
joshka-oai Jan 3, 2026
19525ef
fix: brighten transcript copy affordance (#8697)
joshka-oai Jan 3, 2026
0c1658d
ci: prevent workflows from running on forks (#8629)
leezenn Jan 3, 2026
279283f
fix(tui2): avoid scroll stickiness at cell boundaries (#8695)
joshka-oai Jan 3, 2026
5678213
fix(tui2): render copy pill at viewport bottom (#8716)
joshka-oai Jan 5, 2026
181ff89
tui2: copy selection dismisses highlight (#8718)
joshka-oai Jan 5, 2026
1d678c8
chore(deps): bump clap_complete from 4.5.57 to 4.5.64 in /codex-rs (#…
dependabot[bot] Jan 5, 2026
db1423a
chore(deps): bump tokio-stream from 0.1.17 to 0.1.18 in /codex-rs (#8…
dependabot[bot] Jan 5, 2026
e139ef3
chore(deps): bump derive_more from 2.0.1 to 2.1.1 in /codex-rs (#8724)
dependabot[bot] Jan 5, 2026
a8e0fe8
chore(deps): bump insta from 1.44.3 to 1.46.0 in /codex-rs (#8725)
dependabot[bot] Jan 5, 2026
649badd
fix: chat multiple tool calls (#8556)
jif-oai Jan 5, 2026
0b53aed
fix: /review to respect session cwd (#8738)
tibo-openai Jan 5, 2026
468ee8a
[MCP] Sanitize MCP tool names to ensure they are compatible with the …
gpeal Jan 5, 2026
8f10d3b
feat(tui2): transcript scrollbar (auto-hide + drag) (#8728)
joshka-oai Jan 5, 2026
bba5e5e
fix(codex-api): handle Chat Completions DONE sentinel (#8708)
joshka-oai Jan 5, 2026
1d8e2b4
(MacOS) Load config requirements from MDM (#8743)
gt-oai Jan 5, 2026
807f8a4
feat: expose outputSchema to user_turn/turn_start app_server API (#8377)
apanasenko-oai Jan 5, 2026
fabb797
chore: GH pager (#8747)
jif-oai Jan 5, 2026
720fa67
better idempotency for creating/updating firewall rules during setup.…
iceweasel-oai Jan 5, 2026
95580f2
never let sandbox write to .codex/ or .codex/.sandbox/ (#8683)
iceweasel-oai Jan 5, 2026
57f8158
chore: improve skills render section (#8459)
gverma-openai Jan 5, 2026
7cf6f1c
Use issuer URL in device auth prompt link (#7858)
abrar71 Jan 5, 2026
07f077d
best effort to "hide" Sandbox users (#8492)
iceweasel-oai Jan 5, 2026
cafb07f
feat: add justification arg to prefix_rule() in *.rules (#8751)
bolinfest Jan 5, 2026
c29afc0
[device-auth] Update login instruction for headless environments. (#8…
mzeng-openai Jan 5, 2026
58a91a0
Use ConfigLayerStack for skills discovery. (#8497)
xl-openai Jan 5, 2026
5f8776d
Allow global exec flags after `resume` and fix CI codex build/timeout…
fjord-oai Jan 5, 2026
b1c93e1
chore(apply-patch) additional scenarios (#8230)
dylan-hurd-oai Jan 5, 2026
771f1ca
fix: accept whitespace-padded patch markers (#8746)
tibo-openai Jan 6, 2026
c92dbea
tui2: stop baking streaming wraps; reflow agent markdown (#8761)
joshka-oai Jan 6, 2026
4c3d2a5
fix: render cwd-relative paths in tui (#8771)
joshka-oai Jan 6, 2026
6346e4f
fix: fix readiness subscribe token wrap-around (#8770)
tibo-openai Jan 6, 2026
8858012
chore: emit unified exec begin only when PTY exist (#8780)
jif-oai Jan 6, 2026
7ecd0dc
fix: stop honoring CODEX_MANAGED_CONFIG_PATH environment variable in …
bolinfest Jan 6, 2026
06e21c7
fix: update model examples to gpt-5.2 (#8566)
seuros Jan 6, 2026
32db8ea
feat: add head-tail buffer for `unified_exec` (#8735)
jif-oai Jan 6, 2026
cab7136
chore: add model/list call to app-server-test-client (#8331)
owenlin0 Jan 6, 2026
d1c6329
feat: forced tool tips (#8752)
jif-oai Jan 6, 2026
740bf0e
chore: clear background terminals on interrupt (#8786)
jif-oai Jan 6, 2026
915352b
feat: add analytics config setting (#8350)
JaviSoto Jan 6, 2026
1dd1355
feat: agent controller (#8783)
jif-oai Jan 6, 2026
4ce9d0a
suppress popups while browsing input history (#8772)
xl-openai Jan 6, 2026
a0b2d03
Clear copy pill background and add snapshot test (#8777)
joshka-oai Jan 6, 2026
188f79a
feat: drop agent bus and store the agent status in codex directly (#8…
jif-oai Jan 6, 2026
8b7ec31
feat(app-server): thread/rollback API (#8454)
owenlin0 Jan 6, 2026
11d4f3f
[app-server] fix config loading for conversations (#8765)
celia-oai Jan 6, 2026
54ded1a
add web_search_cached flag (#8795)
sayan-oai Jan 6, 2026
dc1a568
fix: populate the release notes when the release is created (#8799)
bolinfest Jan 6, 2026
8b4d27d
fix: truncate long approval prefixes when rendering (#8734)
tibo-openai Jan 6, 2026
3389465
Enable model upgrade popup even when selected model is no longer in p…
charley-oai Jan 7, 2026
230a045
chore: stabilize core tool parallelism test (#8805)
tibo-openai Jan 7, 2026
8372d61
chore: silent just fmt (#8820)
jif-oai Jan 7, 2026
a590523
fix: parse git apply paths correctly (#8824)
tibo-openai Jan 7, 2026
124a09e
fix: handle /review arguments in TUI (#8823)
tibo-openai Jan 7, 2026
4cef89a
chore: rename unified exec sessions (#8822)
jif-oai Jan 7, 2026
0d788e6
fix: handle early codex exec exit (#8825)
tibo-openai Jan 7, 2026
116059c
chore: unify conversation with thread name (#8830)
jif-oai Jan 7, 2026
fedcb8f
Move tests below auth manager (#8840)
pakrym-oai Jan 7, 2026
a1e8118
fix: upgrade lru crate to 0.16.3 (#8845)
bolinfest Jan 7, 2026
9179c9d
Merge Modelfamily into modelinfo (#8763)
aibrahim-oai Jan 7, 2026
c31960b
remove unnecessary todos (#8842)
aibrahim-oai Jan 7, 2026
018de99
Stop using AuthManager as the source of codex_home (#8846)
pakrym-oai Jan 7, 2026
4c9b4b6
Fix app-server `write_models_cache` to treat models with less priorit…
aibrahim-oai Jan 7, 2026
1253d19
chore: drop useless feature flags (#8850)
jif-oai Jan 7, 2026
fe460e0
chore: drop some deprecated (#8848)
jif-oai Jan 7, 2026
e8421c7
[chore] update app server doc with skills (#8853)
celia-oai Jan 7, 2026
66450f0
fix: implement 'Allow this session' for apply_patch approvals (#8451)
owenlin0 Jan 7, 2026
187924d
Override truncation policy at model info level (#8856)
aibrahim-oai Jan 7, 2026
a9b5e8a
Simplify error managment in `run_turn` (#8849)
aibrahim-oai Jan 7, 2026
21c6d40
Add feature for optional request compression (#8767)
cconger Jan 7, 2026
5f3f702
Clarify YAML frontmatter formatting in skill-creator (#8610)
darlingm Jan 7, 2026
f07b8aa
Warn in /model if BASE_URL set (#8847)
gt-oai Jan 7, 2026
61e81af
Support symlink for skills discovery. (#8801)
xl-openai Jan 7, 2026
efd0c21
Feat: appServer.requirementList for requirement.toml (#8800)
shijie-oai Jan 7, 2026
54b290e
fix: update resource path resolution logic so it works with Bazel (#8…
bolinfest Jan 7, 2026
ef8b8eb
fix: use tokio for I/O in an async function (#8868)
bolinfest Jan 8, 2026
357e4c9
add footer note to TUI (#8867)
iceweasel-oai Jan 8, 2026
f6b563e
feat: introduce find_resource! macro that works with Cargo or Bazel (…
bolinfest Jan 8, 2026
75076aa
Support UserInput::Skill in V2 API. (#8864)
xl-openai Jan 8, 2026
ccba737
add ability to disable input temporarily in the TUI. (#8876)
iceweasel-oai Jan 8, 2026
35fd69a
fix: make the find_resource! macro responsible for the absolutize() c…
bolinfest Jan 8, 2026
0f8bb45
fix: windows can now paste non-ascii multiline text (#8774)
dylan-hurd-oai Jan 8, 2026
8a0c2e5
chore: add list thread ids on manager (#8855)
jif-oai Jan 8, 2026
634650d
feat: metrics capabilities (#8318)
jif-oai Jan 8, 2026
267c05f
fix: stabilize list_dir pagination order (#8826)
tibo-openai Jan 8, 2026
e21ce6c
chore: drop metrics exporter config (#8892)
jif-oai Jan 8, 2026
5b022c2
chore: align error limit comment (#8896)
tibo-openai Jan 8, 2026
be212db
fix: include project instructions in /review subagent (#8899)
tibo-openai Jan 8, 2026
0318f30
chore: add small debug client (#8894)
jif-oai Jan 8, 2026
7520d8b
fix: leverage find_resource! macro in load_sse_fixture_with_id (#8888)
bolinfest Jan 8, 2026
9ce6bbc
Avoid setpgid for inherited stdio on macOS (#8691)
seeekr Jan 8, 2026
1e29774
fix: leverage codex_utils_cargo_bin() in codex-rs/core/tests/suite (#…
bolinfest Jan 8, 2026
da667b1
chore: drop useless interaction_input (#8907)
jif-oai Jan 8, 2026
98e1712
nit: drop unused function call error (#8903)
jif-oai Jan 8, 2026
5522663
feat: add a few metrics (#8910)
jif-oai Jan 8, 2026
484f6f4
gitignore bazel-* (#8911)
zbarsky-openai Jan 8, 2026
932a5a4
config requirements: improve requirement error messages (#8843)
gt-oai Jan 8, 2026
59d6937
fix: reduce duplicate include_str!() calls (#8914)
bolinfest Jan 8, 2026
5b7707d
feat: add list loaded threads to app server (#8902)
jif-oai Jan 8, 2026
c4af304
[fix] app server flaky thread/resume tests (#8870)
celia-oai Jan 8, 2026
69898e3
clean: all history cloning (#8916)
jif-oai Jan 8, 2026
93dec90
otel test: retry WouldBlock errors (#8915)
gt-oai Jan 8, 2026
7b21b44
Update models.json (#8792)
github-actions[bot] Jan 8, 2026
98122cb
fix: preserve core env vars on Windows (#8897)
tibo-openai Jan 8, 2026
4156060
Add `read-only` when backfilling requirements from managed_config (#8…
gt-oai Jan 8, 2026
5bc3e32
add tooltip hint for shell commands (!) (#8926)
fps7806 Jan 8, 2026
634764e
Immutable CodexAuth (#8857)
pakrym-oai Jan 8, 2026
c9c6560
nit: parse_arguments (#8927)
jif-oai Jan 8, 2026
224c486
fix: increase timeout for tests that have been flaking with timeout i…
bolinfest Jan 8, 2026
a70f5b0
fix: correct login shell mismatch in the accept_elicitation_for_promp…
bolinfest Jan 8, 2026
051bf81
[fix] app server flaky send_messages test (#8874)
celia-oai Jan 8, 2026
41a3173
feat: fork conversation/thread (#8866)
apanasenko-oai Jan 8, 2026
0d3e673
remove `get_responses_requests` and `get_responses_request_bodies` to…
aibrahim-oai Jan 8, 2026
be4364b
[chore] move app server tests from chat completion to responses (#8939)
celia-oai Jan 8, 2026
62a73b6
Attempt to reload auth as a step in 401 recovery (#8880)
pakrym-oai Jan 8, 2026
bdfdebc
fix: increase timeout for wait_for_event() for Bazel (#8946)
bolinfest Jan 8, 2026
6372ba9
Elevated sandbox NUX (#8789)
iceweasel-oai Jan 9, 2026
51dd5af
fix: treat null MCP resource args as empty (#8917)
tibo-openai Jan 9, 2026
81caee3
Add 5s timeout to models list call + integration test (#8942)
aibrahim-oai Jan 9, 2026
d3ff668
fix: remove existing process hardening from Codex CLI (#8951)
bolinfest Jan 9, 2026
24d6e01
[device-auth] When headless environment is detected, show device logi…
mzeng-openai Jan 9, 2026
568b938
feat: first pass on clb tool (#8930)
jif-oai Jan 9, 2026
fceae86
nit: rename session metric (#8966)
jif-oai Jan 9, 2026
e9c548c
chore: non mutable btree when building specs (#8969)
jif-oai Jan 9, 2026
16c66c3
chore: move otel provider outside of trace module (#8968)
jif-oai Jan 9, 2026
225614d
chore: add mcp call metric (#8973)
jif-oai Jan 9, 2026
e2e3f44
chore: add approval metric (#8970)
jif-oai Jan 9, 2026
7e5b3e0
chore: metrics tool call (#8975)
jif-oai Jan 9, 2026
bc92dc5
chore: update metrics temporality (#8901)
jif-oai Jan 9, 2026
cacdae8
Work around crash in system-configuration library (#8954)
etraut-openai Jan 9, 2026
ea56186
fix(app-server): set originator header from initialize JSON-RPC reque…
owenlin0 Jan 9, 2026
5b5a5b9
Add config to disable /feedback (#8909)
gt-oai Jan 9, 2026
46b0c4a
chore: nuke telemetry file (#8985)
jif-oai Jan 9, 2026
5c380d5
Revert "fix(app-server): set originator header from initialize JSON-R…
jif-oai Jan 9, 2026
ed64804
nit: rename to analytics_enabled (#8978)
jif-oai Jan 9, 2026
1aed01e
renaming: task to turn (#8963)
jif-oai Jan 9, 2026
7daaabc
fix: add tui.alternate_screen config and --no-alt-screen CLI flag for…
hjanuschka Jan 9, 2026
2a06d64
feat: add support for building with Bazel (#8875)
zbarsky-openai Jan 9, 2026
fbe8833
fix(app-server): set originator header from initialize (re-revert) (#…
owenlin0 Jan 9, 2026
bc28466
fix: harden arg0 helper PATH handling (#8766)
viyatb-oai Jan 9, 2026
cabf85a
Log unhandled sse events (#8949)
pakrym-oai Jan 9, 2026
acfd94f
Add hierarchical agent prompt (#8996)
pakrym-oai Jan 9, 2026
1a0e2e6
Delete announcement_tip.toml (#9003)
pakrym-oai Jan 9, 2026
af1ed26
Refactor remote models tests to use TestCodex builder (#8940)
aibrahim-oai Jan 9, 2026
8e49a2c
Add model provider info to /status if non-default (#8981)
gt-oai Jan 10, 2026
cc0b5e8
Add URL to responses error messages (#8984)
gt-oai Jan 10, 2026
74b2238
fix: add .git to .bazelignore (#9008)
bolinfest Jan 10, 2026
cf51514
fix: include AGENTS.md as repo root marker for integration tests (#9010)
bolinfest Jan 10, 2026
6709ad8
Label attached images so agent can understand in-message labels (#8950)
charley-oai Jan 10, 2026
1982899
Revert "Delete announcement_tip.toml" (#9032)
jif-oai Jan 10, 2026
6a57d79
fix: support remote arm64 builds, as well (#9018)
zbarsky-openai Jan 11, 2026
86f81ca
feat: testing harness for collab 1 (#8983)
jif-oai Jan 12, 2026
623707a
feat: add wait tool implementation for collab (#9088)
jif-oai Jan 12, 2026
9659583
feat: add close tool implementation for collab (#9090)
jif-oai Jan 12, 2026
d556298
Add static mcp callback uri support (#8971)
WhammyLeaf Jan 12, 2026
898e5f8
nit: add docstring (#9099)
jif-oai Jan 12, 2026
4223948
feat: wire fork to codex cli (#8994)
apanasenko-oai Jan 12, 2026
0608853
chore(deps): bump tui-scrollbar from 0.2.1 to 0.2.2 in /codex-rs (#9071)
dependabot[bot] Jan 12, 2026
45ffcdf
chore(deps): bump ts-rs from 11.0.1 to 11.1.0 in /codex-rs (#9072)
dependabot[bot] Jan 12, 2026
7ac498e
chore(deps): bump which from 6.0.3 to 8.0.0 in /codex-rs (#9074)
dependabot[bot] Jan 12, 2026
729e097
chore(deps): bump clap from 4.5.53 to 4.5.54 in /codex-rs (#9075)
dependabot[bot] Jan 12, 2026
034d489
chore(deps): bump tokio-util from 0.7.16 to 0.7.18 in /codex-rs (#9076)
dependabot[bot] Jan 12, 2026
3e91a95
feat: hot reload mcp servers (#8957)
shijie-oai Jan 12, 2026
5dfa780
Remove unused conversation_id header (#9107)
pakrym-oai Jan 12, 2026
d7cdcfc
Add some tests for image attachments (#9080)
charley-oai Jan 12, 2026
3a6a43f
Extract single responses SSE event parsing (#9114)
pakrym-oai Jan 12, 2026
87f7226
Assemble sandbox/approval/network prompts dynamically (#8961)
aibrahim-oai Jan 12, 2026
490c1c1
Add model client sessions (#9102)
pakrym-oai Jan 13, 2026
12779c7
fix(tui): show in-flight coalesced tool calls in transcript overlay (…
Chriss4123 Jan 13, 2026
d75626a
Reuse websocket connection (#9127)
pakrym-oai Jan 13, 2026
ddae70b
fix: prompt for unsafe commands on Windows (#9117)
bolinfest Jan 13, 2026
e726a82
Websocket append support (#9128)
pakrym-oai Jan 13, 2026
cbca43d
Send message by default mid turn. queue messages by tab (#9077)
aibrahim-oai Jan 13, 2026
18b7379
Handle image paste from empty paste events (#9049)
aibrahim-oai Jan 13, 2026
325ce98
Use markdown for migration screen (#8952)
aibrahim-oai Jan 13, 2026
3c8fb90
Updated heuristic for tool call summary to detect file modifications …
etraut-openai Jan 13, 2026
17ab5f6
Show tab queue hint in footer (#9138)
aibrahim-oai Jan 13, 2026
3a300d1
Use thread rollback for Esc backtrack (#9140)
aibrahim-oai Jan 13, 2026
3b8d79e
chore: better error handling on collab tools (#9143)
jif-oai Jan 13, 2026
97f1f20
nit: collab send input cleaning (#9147)
jif-oai Jan 13, 2026
2d56519
Support response.done and add integration tests (#9129)
pakrym-oai Jan 13, 2026
fe03320
ollama: default to Responses API for built-ins (#8798)
drifkin Jan 13, 2026
40e2405
add generated jsonschema for config.toml (#8956)
sayan-oai Jan 13, 2026
57ba758
Fix queued messages during /review (#9122)
charley-oai Jan 13, 2026
51d75bb
fix: drop session span at end of the session (#9126)
apanasenko-oai Jan 13, 2026
2651980
Restrict MCP servers from `requirements.toml` (#9101)
gt-oai Jan 13, 2026
58e8f75
fix(tui): document paste-burst state machine (#9020)
joshka-oai Jan 13, 2026
bde734f
feat(app-server): add an --analytics-default-enabled flag (#9118)
owenlin0 Jan 13, 2026
e25d2ab
Fresh tooltips (#9130)
mzeng-openai Jan 13, 2026
ebacd28
fix(windows-sandbox-rs) bump SETUP_VERSION (#9134)
dylan-hurd-oai Jan 13, 2026
141d2b5
test(tui): add deterministic paste-burst tests (#9121)
joshka-oai Jan 13, 2026
3c711f3
Fix spinner/Esc interrupt when MCP startup completes mid-turn (#8661)
2mawi2 Jan 13, 2026
89403c5
Allow close skill popup with esc. (#9165)
xl-openai Jan 13, 2026
9f8d3c1
Fix flakiness in WebSocket tests (#9169)
pakrym-oai Jan 13, 2026
2cd1a0a
fix: report an appropriate error in the TUI for malformed rules (#9011)
bolinfest Jan 13, 2026
4c67308
fix: integration test for #9011 (#9166)
bolinfest Jan 13, 2026
903a0c0
feat: add bazel-codex entry to justfile (#9177)
bolinfest Jan 14, 2026
5a70b15
WebSocket test server script (#9175)
pakrym-oai Jan 14, 2026
ebbbee7
Update models.json (#9136)
github-actions[bot] Jan 14, 2026
7e33ac7
clean models manager (#9168)
aibrahim-oai Jan 14, 2026
c96c26c
[CODEX-4427] improve parsed commands (#8933)
aibrahim-oai Jan 14, 2026
4d787a2
Renew cache ttl on etag match (#9174)
aibrahim-oai Jan 14, 2026
ce49e92
fix(tui): harden paste-burst state transitions (#9124)
joshka-oai Jan 14, 2026
5a82a72
Use offline cache for tui migrations (#9186)
aibrahim-oai Jan 14, 2026
31d9b6f
Improve handling of config and rules errors for app server clients (#…
etraut-openai Jan 14, 2026
5675af5
chore: clarify default shell for unified_exec (#8997)
sayan-oai Jan 14, 2026
0c09dc3
feat: add threadId to MCP server messages (#9192)
bolinfest Jan 14, 2026
b9ff4ec
change api default model (#9188)
aibrahim-oai Jan 14, 2026
258fc4b
feat: add sourcing of rc files to shell snapshot (#9150)
jif-oai Jan 14, 2026
6fbb89e
fix: shell snapshot clean-up (#9155)
jif-oai Jan 14, 2026
dc3deaa
feat: return an error if the image sent by the user is a bad image (#…
jif-oai Jan 14, 2026
bc6d9ef
feat: only source shell snapshot if the file exists (#9197)
jif-oai Jan 14, 2026
7532f34
fix: drop double waiting header in TUI (#9145)
jif-oai Jan 14, 2026
bdae003
Render exec output deltas inline (#9194)
aibrahim-oai Jan 14, 2026
32b1795
chore: clamp min yield time for empty write_stdin (#9156)
jif-oai Jan 14, 2026
bcd7858
feat: add auto refresh on thread listeners (#9105)
jif-oai Jan 14, 2026
e1447c3
feat: add support for read-only bind mounts in the linux sandbox (#9112)
viyatb-oai Jan 14, 2026
92472e7
Use current model for review (#9179)
pakrym-oai Jan 14, 2026
4283a74
tui: double-press Ctrl+C/Ctrl+D to quit (#8936)
joshka-oai Jan 14, 2026
6a939ed
feat: emit events around collab tools (#9095)
jif-oai Jan 14, 2026
3d322fa
feat: add collab prompt (#9208)
jif-oai Jan 14, 2026
02f67ba
fix: Emit response.completed immediately for Responses SSE (#9170)
celia-oai Jan 14, 2026
8e937fb
Get model on session configured (#9191)
aibrahim-oai Jan 14, 2026
e958d03
Log headers in trace mode (#9214)
pakrym-oai Jan 14, 2026
fe1e0da
s/mcp_server_requirements/mcp_servers (#9212)
gt-oai Jan 14, 2026
577e1fd
feat: adding piped process to replace PTY when needed (#8797)
jif-oai Jan 14, 2026
e6d2ef4
Rename hierarchical_agents to child_agents_md (#9215)
pakrym-oai Jan 14, 2026
0471ddb
fix(tui2): align Steer submit keys (#9218)
joshka-oai Jan 14, 2026
27da8a6
fix(tui): disable double-press quit shortcut (#9220)
joshka-oai Jan 14, 2026
5e426ac
add WebSearchMode enum (#9216)
sayan-oai Jan 14, 2026
24b8889
Updated issue template to ask for terminal emulator (#9231)
etraut-openai Jan 14, 2026
71a2973
upgrade runners in rust-ci.yml to use the larger runners (#9106)
willwang-openai Jan 14, 2026
e59e7d1
fix: correct linux sandbox uid/gid mapping after unshare (#9234)
viyatb-oai Jan 14, 2026
3728db1
fix: eliminate unnecessary clone() for each SSE event (#9238)
bolinfest Jan 15, 2026
2a68b74
fix: increase timeout for release builds from 30 to 60 minutes (#9242)
bolinfest Jan 15, 2026
4a9c2bc
Add text element metadata to types (#9235)
charley-oai Jan 15, 2026
d67aa9e
## New Features
bolinfest Jan 15, 2026
80e9350
chore: sanitize upstream workflow triggers for fork safety
github-actions[bot] Jan 15, 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
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Without this, Bazel will consider BUILD.bazel files in
# .git/sl/origbackups (which can be populated by Sapling SCM).
.git
45 changes: 45 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
common --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
common --repo_env=BAZEL_NO_APPLE_CPP_TOOLCHAIN=1

common --disk_cache=~/.cache/bazel-disk-cache
common --repo_contents_cache=~/.cache/bazel-repo-contents-cache
common --repository_cache=~/.cache/bazel-repo-cache

common --experimental_platform_in_output_dir

common --enable_platform_specific_config
# TODO(zbarsky): We need to untangle these libc constraints to get linux remote builds working.
common:linux --host_platform=//:local
common --@rules_cc//cc/toolchains/args/archiver_flags:use_libtool_on_macos=False
common --@toolchains_llvm_bootstrapped//config:experimental_stub_libgcc_s

# We need to use the sh toolchain on windows so we don't send host bash paths to the linux executor.
common:windows --@rules_rust//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper

# TODO(zbarsky): rules_rust doesn't implement this flag properly with remote exec...
# common --@rules_rust//rust/settings:pipelined_compilation

common --incompatible_strict_action_env
# Not ideal, but We need to allow dotslash to be found
common --test_env=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

common --test_output=errors
common --bes_results_url=https://app.buildbuddy.io/invocation/
common --bes_backend=grpcs://remote.buildbuddy.io
common --remote_cache=grpcs://remote.buildbuddy.io
common --remote_download_toplevel
common --nobuild_runfile_links
common --remote_timeout=3600
common --noexperimental_throttle_remote_action_building
common --experimental_remote_execution_keepalive
common --grpc_keepalive_time=30s

# This limits both in-flight executions and concurrent downloads. Even with high number
# of jobs execution will still be limited by CPU cores, so this just pays a bit of
# memory in exchange for higher download concurrency.
common --jobs=30

common:remote --extra_execution_platforms=//:rbe
common:remote --remote_executor=grpcs://remote.buildbuddy.io
common:remote --jobs=800

2 changes: 2 additions & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
iTerm
iTerm2
psuedo
2 changes: 1 addition & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
skip = .git*,vendor,*-lock.yaml,*.lock,.codespellrc,*test.ts,*.jsonl,frame*.txt
check-hidden = true
ignore-regex = ^\s*"image/\S+": ".*|\b(afterAll)\b
ignore-words-list = ratatui,ser
ignore-words-list = ratatui,ser,iTerm,iterm2,iterm
9 changes: 8 additions & 1 deletion .github/ISSUE_TEMPLATE/2-bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,18 @@ body:
description: |
For MacOS and Linux: copy the output of `uname -mprs`
For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console
- type: input
id: terminal
attributes:
label: What terminal emulator and version are you using (if applicable)?
description: Also note any multiplexer in use (screen / tmux / zellij)
description: |
E.g, VSCode, Terminal.app, iTerm2, Ghostty, Windows Terminal (WSL / PowerShell)
- type: textarea
id: actual
attributes:
label: What issue are you seeing?
description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot.
description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot.
validations:
required: true
- type: textarea
Expand Down
44 changes: 44 additions & 0 deletions .github/actions/linux-code-sign/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: linux-code-sign
description: Sign Linux artifacts with cosign.
inputs:
target:
description: Target triple for the artifacts to sign.
required: true
artifacts-dir:
description: Absolute path to the directory containing built binaries to sign.
required: true

runs:
using: composite
steps:
- name: Install cosign
uses: sigstore/cosign-installer@v3.7.0

- name: Cosign Linux artifacts
shell: bash
env:
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 }}"
if [[ ! -d "$dest" ]]; then
echo "Destination $dest does not exist"
exit 1
fi

for binary in codex codex-responses-api-proxy; do
artifact="${dest}/${binary}"
if [[ ! -f "$artifact" ]]; then
echo "Binary $artifact not found"
exit 1
fi

cosign sign-blob \
--yes \
--bundle "${artifact}.sigstore" \
"$artifact"
done
246 changes: 246 additions & 0 deletions .github/actions/macos-code-sign/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
name: macos-code-sign
description: Configure, sign, notarize, and clean up macOS code signing artifacts.
inputs:
target:
description: Rust compilation target triple (e.g. aarch64-apple-darwin).
required: true
sign-binaries:
description: Whether to sign and notarize the macOS binaries.
required: false
default: "true"
sign-dmg:
description: Whether to sign and notarize the macOS dmg.
required: false
default: "true"
apple-certificate:
description: Base64-encoded Apple signing certificate (P12).
required: true
apple-certificate-password:
description: Password for the signing certificate.
required: true
apple-notarization-key-p8:
description: Base64-encoded Apple notarization key (P8).
required: true
apple-notarization-key-id:
description: Apple notarization key ID.
required: true
apple-notarization-issuer-id:
description: Apple notarization issuer ID.
required: true
runs:
using: composite
steps:
- name: Configure Apple code signing
shell: bash
env:
KEYCHAIN_PASSWORD: actions
APPLE_CERTIFICATE: ${{ inputs.apple-certificate }}
APPLE_CERTIFICATE_PASSWORD: ${{ inputs.apple-certificate-password }}
run: |
set -euo pipefail

if [[ -z "${APPLE_CERTIFICATE:-}" ]]; then
echo "APPLE_CERTIFICATE is required for macOS signing"
exit 1
fi

if [[ -z "${APPLE_CERTIFICATE_PASSWORD:-}" ]]; then
echo "APPLE_CERTIFICATE_PASSWORD is required for macOS signing"
exit 1
fi

cert_path="${RUNNER_TEMP}/apple_signing_certificate.p12"
echo "$APPLE_CERTIFICATE" | base64 -d > "$cert_path"

keychain_path="${RUNNER_TEMP}/codex-signing.keychain-db"
security create-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path"
security set-keychain-settings -lut 21600 "$keychain_path"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path"

keychain_args=()
cleanup_keychain() {
if ((${#keychain_args[@]} > 0)); then
security list-keychains -s "${keychain_args[@]}" || true
security default-keychain -s "${keychain_args[0]}" || true
else
security list-keychains -s || true
fi
if [[ -f "$keychain_path" ]]; then
security delete-keychain "$keychain_path" || true
fi
}

while IFS= read -r keychain; do
[[ -n "$keychain" ]] && keychain_args+=("$keychain")
done < <(security list-keychains | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s/"//g')

if ((${#keychain_args[@]} > 0)); then
security list-keychains -s "$keychain_path" "${keychain_args[@]}"
else
security list-keychains -s "$keychain_path"
fi

security default-keychain -s "$keychain_path"
security import "$cert_path" -k "$keychain_path" -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" "$keychain_path" > /dev/null

codesign_hashes=()
while IFS= read -r hash; do
[[ -n "$hash" ]] && codesign_hashes+=("$hash")
done < <(security find-identity -v -p codesigning "$keychain_path" \
| sed -n 's/.*\([0-9A-F]\{40\}\).*/\1/p' \
| sort -u)

if ((${#codesign_hashes[@]} == 0)); then
echo "No signing identities found in $keychain_path"
cleanup_keychain
rm -f "$cert_path"
exit 1
fi

if ((${#codesign_hashes[@]} > 1)); then
echo "Multiple signing identities found in $keychain_path:"
printf ' %s\n' "${codesign_hashes[@]}"
cleanup_keychain
rm -f "$cert_path"
exit 1
fi

APPLE_CODESIGN_IDENTITY="${codesign_hashes[0]}"

rm -f "$cert_path"

echo "APPLE_CODESIGN_IDENTITY=$APPLE_CODESIGN_IDENTITY" >> "$GITHUB_ENV"
echo "APPLE_CODESIGN_KEYCHAIN=$keychain_path" >> "$GITHUB_ENV"
echo "::add-mask::$APPLE_CODESIGN_IDENTITY"

- name: Sign macOS binaries
if: ${{ inputs.sign-binaries == 'true' }}
shell: bash
run: |
set -euo pipefail

if [[ -z "${APPLE_CODESIGN_IDENTITY:-}" ]]; then
echo "APPLE_CODESIGN_IDENTITY is required for macOS signing"
exit 1
fi

keychain_args=()
if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" && -f "${APPLE_CODESIGN_KEYCHAIN}" ]]; then
keychain_args+=(--keychain "${APPLE_CODESIGN_KEYCHAIN}")
fi

for binary in codex codex-responses-api-proxy; do
path="codex-rs/target/${{ inputs.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:
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 }}
run: |
set -euo pipefail

for var in APPLE_NOTARIZATION_KEY_P8 APPLE_NOTARIZATION_KEY_ID APPLE_NOTARIZATION_ISSUER_ID; do
if [[ -z "${!var:-}" ]]; then
echo "$var is required for notarization"
exit 1
fi
done

notary_key_path="${RUNNER_TEMP}/notarytool.key.p8"
echo "$APPLE_NOTARIZATION_KEY_P8" | base64 -d > "$notary_key_path"
cleanup_notary() {
rm -f "$notary_key_path"
}
trap cleanup_notary EXIT

source "$GITHUB_ACTION_PATH/notary_helpers.sh"

notarize_binary() {
local binary="$1"
local source_path="codex-rs/target/${{ inputs.target }}/release/${binary}"
local archive_path="${RUNNER_TEMP}/${binary}.zip"

if [[ ! -f "$source_path" ]]; then
echo "Binary $source_path not found"
exit 1
fi

rm -f "$archive_path"
ditto -c -k --keepParent "$source_path" "$archive_path"

notarize_submission "$binary" "$archive_path" "$notary_key_path"
}

notarize_binary "codex"
notarize_binary "codex-responses-api-proxy"

- name: Sign and notarize macOS dmg
if: ${{ inputs.sign-dmg == 'true' }}
shell: bash
env:
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 }}
run: |
set -euo pipefail

for var in APPLE_CODESIGN_IDENTITY APPLE_NOTARIZATION_KEY_P8 APPLE_NOTARIZATION_KEY_ID APPLE_NOTARIZATION_ISSUER_ID; do
if [[ -z "${!var:-}" ]]; then
echo "$var is required"
exit 1
fi
done

notary_key_path="${RUNNER_TEMP}/notarytool.key.p8"
echo "$APPLE_NOTARIZATION_KEY_P8" | base64 -d > "$notary_key_path"
cleanup_notary() {
rm -f "$notary_key_path"
}
trap cleanup_notary EXIT

source "$GITHUB_ACTION_PATH/notary_helpers.sh"

dmg_path="codex-rs/target/${{ inputs.target }}/release/codex-${{ inputs.target }}.dmg"

if [[ ! -f "$dmg_path" ]]; then
echo "dmg $dmg_path not found"
exit 1
fi

keychain_args=()
if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" && -f "${APPLE_CODESIGN_KEYCHAIN}" ]]; then
keychain_args+=(--keychain "${APPLE_CODESIGN_KEYCHAIN}")
fi

codesign --force --timestamp --sign "$APPLE_CODESIGN_IDENTITY" "${keychain_args[@]}" "$dmg_path"
notarize_submission "codex-${{ inputs.target }}.dmg" "$dmg_path" "$notary_key_path"
xcrun stapler staple "$dmg_path"

- name: Remove signing keychain
if: ${{ always() }}
shell: bash
env:
APPLE_CODESIGN_KEYCHAIN: ${{ env.APPLE_CODESIGN_KEYCHAIN }}
run: |
set -euo pipefail
if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" ]]; then
keychain_args=()
while IFS= read -r keychain; do
[[ "$keychain" == "$APPLE_CODESIGN_KEYCHAIN" ]] && continue
[[ -n "$keychain" ]] && keychain_args+=("$keychain")
done < <(security list-keychains | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s/"//g')
if ((${#keychain_args[@]} > 0)); then
security list-keychains -s "${keychain_args[@]}"
security default-keychain -s "${keychain_args[0]}"
fi

if [[ -f "$APPLE_CODESIGN_KEYCHAIN" ]]; then
security delete-keychain "$APPLE_CODESIGN_KEYCHAIN"
fi
fi
Loading