Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
502 commits
Select commit Hold shift + click to select a range
7dfc3a4
add --branch to codex cloud exec (#7602)
nornagon-openai Dec 4, 2025
6e6338a
Inline response recording and remove process_items indirection (#7310)
aibrahim-oai Dec 4, 2025
903b777
Add models endpoint (#7603)
aibrahim-oai Dec 4, 2025
342c084
fix(app-server): add duration_ms to McpToolCallItem (#7605)
owenlin0 Dec 4, 2025
e8f6d65
fix(app-server): add will_retry to ErrorNotification (#7611)
owenlin0 Dec 4, 2025
28dcdb5
Fix `handle_shortcut_overlay_key` for cross-platform consistency (#7583)
448523760 Dec 4, 2025
0972cd9
chore: refactor to move Arc<RwLock> concern outside exec_policy_for (…
bolinfest Dec 4, 2025
073a853
chore(apply-patch) scenarios for e2e testing (#7567)
dylan-hurd-oai Dec 5, 2025
6736d18
fix: sse for chat (#7594)
jif-oai Dec 5, 2025
7b359c9
Call models endpoint in models manager (#7616)
aibrahim-oai Dec 5, 2025
4c9762d
fix typo (#7626)
zhao-oai Dec 5, 2025
b1c918d
feat: exec policy integration in shell mcp (#7609)
zhao-oai Dec 5, 2025
b8eab7c
fix: taking plan type from usage endpoint instead of thru auth token …
zhao-oai Dec 5, 2025
e91bb6b
fix: ignore ghost snapshots in token consumption (#7638)
jif-oai Dec 5, 2025
5f80ad6
fix: chat completion with parallel tool call (#7634)
jif-oai Dec 5, 2025
d08efb1
Wire `with_remote_overrides` to construct model families (#7621)
aibrahim-oai Dec 5, 2025
a8cbbdb
feat(core) Add login to shell_command tool (#6846)
dylan-hurd-oai Dec 5, 2025
f48d880
Fix unified_exec on windows (#7620)
pakrym Dec 5, 2025
2e4a402
cloud: status, diff, apply (#7614)
nornagon-openai Dec 5, 2025
952d6c9
Move justfile to repository root (#7652)
joshka-oai Dec 6, 2025
6c9c563
fix(apply-patch): preserve CRLF line endings on Windows (#7515)
dylan-hurd-oai Dec 6, 2025
93f61db
Also load skills from repo root. (#7645)
xl-openai Dec 6, 2025
f521d29
fix: OTEL HTTP exporter panic and mTLS support (#7651)
asm89 Dec 6, 2025
8209080
fix: exec-server stream was erroring for large requests (#7654)
bolinfest Dec 6, 2025
315b1e9
docs: fix documentation of rmcp client flag (#7665)
JaySabva Dec 6, 2025
9a74228
docs: Remove experimental_use_rmcp_client from config (#7672)
JaySabva Dec 7, 2025
b2cb05d
docs: point dev checks to just (#7673)
voctory Dec 7, 2025
7386e2e
fix: clear out space on ubuntu runners before running Rust tests (#7678)
bolinfest Dec 7, 2025
3c087e8
fix: ensure macOS CI runners for Rust tests include recent Homebrew f…
bolinfest Dec 7, 2025
3c3d3d1
fix: add integration tests for codex-exec-mcp-server with execpolicy …
bolinfest Dec 7, 2025
53a486f
Add remote models feature flag (#7648)
aibrahim-oai Dec 7, 2025
acb8ed4
Fixed regression for chat endpoint; missing tools name caused litellm…
etraut-openai Dec 8, 2025
57ba9fa
fix(doc): TOML otel exporter example — multi-line inline table is inv…
448523760 Dec 8, 2025
9892365
fix: refine the warning message and docs for deprecated tools config …
gameofby Dec 8, 2025
056c2ee
fix: update URLs to use HTTPS in model migration prompts (#7705)
rakleed Dec 8, 2025
701f42b
chore(deps): bump ts-rs from 11.0.1 to 11.1.0 in /codex-rs (#7713)
dependabot[bot] Dec 8, 2025
7a6d609
chore(deps): bump derive_more from 2.0.1 to 2.1.0 in /codex-rs (#7714)
dependabot[bot] Dec 8, 2025
9fa9e3e
chore(deps): bump insta from 1.43.2 to 1.44.3 in /codex-rs (#7715)
dependabot[bot] Dec 8, 2025
5e888ab
chore(deps): bump wildmatch from 2.5.0 to 2.6.1 in /codex-rs (#7716)
dependabot[bot] Dec 8, 2025
cfda44b
fix wrap behavior for long commands (#7655)
zhao-oai Dec 8, 2025
c2bdee0
proposing execpolicy amendment when prompting due to sandbox denial (…
zhao-oai Dec 8, 2025
da983c1
feat: add is-mutating detection for shell command handler (#7729)
jif-oai Dec 8, 2025
585f75b
Make the device auth instructions more clear. (#7745)
mzeng-openai Dec 8, 2025
28e7218
feat: linux codesign with sigstore (#7674)
shijie-oai Dec 8, 2025
4a3e9ed
fix(tui): add missing Ctrl+n/Ctrl+p support to ListSelectionView (#7629)
pppp606 Dec 8, 2025
222a491
load models from disk and set a ttl and etag (#7722)
aibrahim-oai Dec 8, 2025
0a32aca
updating app server types to support execpoilcy amendment (#7747)
zhao-oai Dec 8, 2025
71c75e6
Enhance model picker (#7709)
aibrahim-oai Dec 8, 2025
a9f566a
Restore status header after stream recovery (#7660)
joshka-oai Dec 8, 2025
cb45139
Add formatting client version to the `x.x.x` style. (#7711)
aibrahim-oai Dec 8, 2025
badda73
feat: windows codesign with Azure trusted signing (#7675)
shijie-oai Dec 8, 2025
ac5fa6b
Do not emit start/end events for write stdin (#7561)
pakrym-oai Dec 8, 2025
382f047
Remove legacy `ModelInfo` and merge it with `ModelFamily` (#7748)
aibrahim-oai Dec 8, 2025
06704b1
fix: pre-main hardening logic must tolerate non-UTF-8 env vars (#7749)
bolinfest Dec 9, 2025
0f2b589
Revert "feat: windows codesign with Azure trusted signing" (#7753)
shijie-oai Dec 9, 2025
cacfd00
override instructions using `ModelInfo` (#7754)
aibrahim-oai Dec 9, 2025
68505ab
use chatgpt provider for /models (#7756)
aibrahim-oai Dec 9, 2025
933e247
Fix transcript pager page continuity (#7363)
muyuanjin Dec 9, 2025
80140c6
Use codex-max prompt/tools for experimental models. (#7765)
cassirer-openai Dec 9, 2025
6382dc2
chore: enable parallel tc (#7589)
jif-oai Dec 9, 2025
2237b70
Fix Nix cargo output hashes for rmcp and filedescriptor (#7762)
tyleranton Dec 9, 2025
164265b
Vendor ConPtySystem (#7656)
pakrym-oai Dec 9, 2025
a7e3e37
fix: allow sendmsg(2) and recvmsg(2) syscalls in our Linux sandbox (#…
bolinfest Dec 9, 2025
9df70a0
Add vim navigation keys to transcript pager (#7550)
joshka-oai Dec 9, 2025
ac32377
Fix: gracefully error out for unsupported images (#7478)
jobchong Dec 9, 2025
7836aed
feat: shell snapshotting (#7641)
jif-oai Dec 9, 2025
05e546e
fix more typos in execpolicy.md (#7787)
zhao-oai Dec 9, 2025
225a5f7
Add vim-style navigation for CLI option selection (#7784)
brolfe-oai Dec 9, 2025
0c8828c
feat(tui2): add feature-flagged tui2 frontend (#7793)
joshka-oai Dec 10, 2025
fa4cac1
fix: introduce AbsolutePathBuf and resolve relative paths in config.t…
bolinfest Dec 10, 2025
893f526
feat: support mcp in-session login (#7751)
shijie-oai Dec 10, 2025
967d063
parse rg | head a search (#7797)
pakrym-oai Dec 10, 2025
fc42493
Elevated Sandbox 1 (#7788)
iceweasel-oai Dec 10, 2025
42e0817
Revert "Revert "feat: windows codesign with Azure trusted signing"" (…
shijie-oai Dec 10, 2025
f11520f
Revert "feat: windows codesign with Azure trusted signing" (#7804)
shijie-oai Dec 10, 2025
ab9ddcd
Revert "Revert "feat: windows codesign with Azure trusted signing"" (…
shijie-oai Dec 10, 2025
6fa24d6
Express rate limit warning as % remaining (#7795)
gverma-openai Dec 10, 2025
d1c5db5
chore: disable trusted signing pkg cache hit (#7807)
shijie-oai Dec 10, 2025
0ad5498
chore: rework unified exec events (#7775)
jif-oai Dec 10, 2025
463249e
fix: flaky test 2 (#7818)
jif-oai Dec 10, 2025
97b9009
feat: use remote branch for review is local trails (#7813)
jif-oai Dec 10, 2025
e0fb3ca
refactoring with_escalated_permissions to use SandboxPermissions inst…
zhao-oai Dec 10, 2025
c4af707
Removed experimental "command risk assessment" feature (#7799)
etraut-openai Dec 10, 2025
f677d05
fix: flaky tests 3 (#7826)
jif-oai Dec 10, 2025
bd51d1b
fix: Upgrade @modelcontextprotocol/sdk to ^1.24.0 (#7817)
Bronx83 Dec 10, 2025
9f40d6e
fix: remove duplicated parallel FeatureSpec (#7823)
zchee Dec 10, 2025
4b684c5
Remove conversation_id and bring back request ID logging (#7830)
pakrym-oai Dec 10, 2025
8a71f8b
[app-server] Make sure that config writes preserve comments & order o…
celia-oai Dec 10, 2025
cb9a189
make `model` optional in config (#7769)
aibrahim-oai Dec 10, 2025
1a58096
fix: Prevent slash command popup from activating on invalid inputs (#…
448523760 Dec 10, 2025
4953b2a
Error when trying to push a release while another release is in progr…
aibrahim-oai Dec 10, 2025
bfb4d57
[app-server-protocol] Add types for config (#7658)
celia-oai Dec 10, 2025
eb2e545
Disable ansi codes in tui log file (#7836)
pakrym-oai Dec 10, 2025
b36ecb6
Inject SKILL.md when it's explicitly mentioned. (#7763)
xl-openai Dec 10, 2025
3216250
Show the default model in model picker (#7838)
aibrahim-oai Dec 10, 2025
90f262e
feat(tui2): copy tui crate and normalize snapshots (#7833)
joshka-oai Dec 10, 2025
e2559ab
fix: thread/list returning fewer than the requested amount due to fil…
JaviSoto Dec 10, 2025
87f5b69
fix: ensure accept_elicitation_for_prompt_rule() test passes locally …
bolinfest Dec 10, 2025
c136780
fixing typo in execpolicy docs (#7847)
zhao-oai Dec 11, 2025
7cabe54
[app-server] make app server not throw error when login id is not fou…
celia-oai Dec 11, 2025
038767a
fix: add a hopefully-temporary sleep to reduce test flakiness (#7848)
bolinfest Dec 11, 2025
ce19dbb
[app-server] Update readme to include mcp endpoints (#7850)
celia-oai Dec 11, 2025
3fc8b28
fix: remove inaccurate `#[allow(dead_code)]` marker (#7851)
bolinfest Dec 11, 2025
0572500
Fixed regression that broke fuzzy matching for slash commands (#7859)
etraut-openai Dec 11, 2025
83aac0f
Only show Worked for after the final assistant message (#7854)
pakrym-oai Dec 11, 2025
13c0919
Elevated Sandbox 2 (#7792)
iceweasel-oai Dec 11, 2025
dca7f4c
fix(stuff) (#7855)
dylan-hurd-oai Dec 11, 2025
b2280d6
feat: warning for long snapshots (#7870)
jif-oai Dec 11, 2025
29381ba
feat: add shell snapshot for shell command (#7786)
jif-oai Dec 11, 2025
d4554ce
fix: flaky tests 4 (#7875)
jif-oai Dec 11, 2025
238ce7d
feat: robin (#7882)
aibrahim-oai Dec 11, 2025
bb8fdb2
Revert "Only show Worked for after the final assistant message" (#7884)
pakrym-oai Dec 11, 2025
703bf12
fix: dont quit on 'q' in onboarding ApiKeyEntry state (#7869)
sayan-oai Dec 11, 2025
8c4c6a1
fix: drop stale filedescriptor output hash for nix (#7865)
tyleranton Dec 11, 2025
0af7e4a
fix: omit reasoning summary when ReasoningSummary::None (#7845)
apanasenko-oai Dec 11, 2025
b9fb3b8
Chore: limit find family visability (#7891)
aibrahim-oai Dec 11, 2025
c4f3f56
remove release script (#7885)
aibrahim-oai Dec 11, 2025
3e81ed4
Elevated Sandbox 3 (#7809)
iceweasel-oai Dec 11, 2025
b7fa7ca
Update Model Info (#7853)
aibrahim-oai Dec 11, 2025
bacbe87
Update RMCP client config guidance (#7895)
nornagon-openai Dec 11, 2025
e0d7ac5
fix: policy/*.codexpolicy -> rules/*.rules (#7888)
bolinfest Dec 11, 2025
36610d9
Fix toasts on Windows under WSL 2 (#7137)
dank-openai Dec 11, 2025
43e6e75
Added deprecation notice for "chat" wire_api (#7897)
etraut-openai Dec 11, 2025
95f7d37
Fix misleading 'maximize' high effort description on xhigh models (#7…
voctory Dec 12, 2025
c787e9d
Make migration screen dynamic (#7896)
aibrahim-oai Dec 12, 2025
9e91e49
Revert "fix(apply-patch): preserve CRLF line endings on Windows" (#7903)
dylan-hurd-oai Dec 12, 2025
163a7e3
feat: use latest disk value for mcp servers status (#7907)
shijie-oai Dec 12, 2025
190fa9e
docs: clarify xhigh reasoning effort on gpt-5.2 (#7911)
voctory Dec 12, 2025
4312cae
feat: introduce utilities for locating pwsh.exe and powershell.exe (#…
bolinfest Dec 12, 2025
60479a9
Make skill name and description limit based on characters not byte co…
etraut-openai Dec 12, 2025
9287be7
fix(tui): show xhigh reasoning warning for gpt-5.2 (#7910)
voctory Dec 12, 2025
49bf49c
feat: more safe commands (#7728)
jif-oai Dec 12, 2025
b99ce88
fix: break tui (#7876)
jif-oai Dec 12, 2025
f152b16
fix: race on rx subscription (#7921)
jif-oai Dec 12, 2025
9429e8b
chore(gpt-5.2) prompt update (#7934)
dylan-hurd-oai Dec 12, 2025
b3ddd50
Remote compact for API-key users (#7835)
pakrym-oai Dec 12, 2025
149696d
chores: models manager (#7937)
aibrahim-oai Dec 12, 2025
92098d3
feat: clean config loading and config api (#7924)
jif-oai Dec 12, 2025
570eb5f
chore(prompt) Remove truncation details (#7941)
dylan-hurd-oai Dec 12, 2025
677732f
Elevated Sandbox 4 (#7889)
iceweasel-oai Dec 12, 2025
26d0d82
chore(prompt) Update base prompt (#7943)
dylan-hurd-oai Dec 12, 2025
9009490
fix: use PowerShell to parse PowerShell (#7607)
bolinfest Dec 12, 2025
4d2deb1
Sign two additional exes for Windows (#7942)
iceweasel-oai Dec 12, 2025
54fecee
support 1p (#7945)
aibrahim-oai Dec 12, 2025
c978b6e
fix: restore MCP startup progress messages in TUI (fixes #7827) (#7828)
ivanmurashko Dec 12, 2025
3d07cd6
fix cargo build switch (#7948)
iceweasel-oai Dec 12, 2025
642b756
fix: introduce AbsolutePathBuf as part of sandbox config (#7856)
bolinfest Dec 12, 2025
b1905d3
fix: added test helpers for platform-specific paths (#7954)
bolinfest Dec 13, 2025
7c18f7b
fix: include Error in log message (#7955)
bolinfest Dec 13, 2025
596fcd0
docs: remove blanket ban on unsigned integers (#7957)
joshka-oai Dec 13, 2025
ad7b9d6
[codex] add otel tracing (#7844)
apanasenko-oai Dec 13, 2025
6ec2831
Sync tui2 with tui and keep dual-run glue (#7965)
joshka-oai Dec 13, 2025
1ad261d
Changed default wrap algorithm from OptimalFit to FirstFit (#7960)
etraut-openai Dec 13, 2025
a2c86e5
docs: update the docs for @openai/codex-shell-tool-mcp (#7962)
bolinfest Dec 13, 2025
5d77d4d
Reimplement skills loading using SkillsManager + skills/list op. (#7914)
xl-openai Dec 14, 2025
7c6a479
docs: document enabling experimental skills (#8024)
voctory Dec 14, 2025
c3d5102
chore: fix tooltip typos and align tone (#8047)
tibo-openai Dec 15, 2025
dd68245
chore(deps): bump actions/upload-artifact from 5 to 6 (#8038)
dependabot[bot] Dec 15, 2025
d39477a
chore(deps): bump socket2 from 0.6.0 to 0.6.1 in /codex-rs (#8046)
dependabot[bot] Dec 15, 2025
1e3cad9
Do not panic when session contains a tool call without an output (#8048)
etraut-openai Dec 15, 2025
b349ec4
chore(deps): bump actions/download-artifact from 4 to 7 (#8037)
dependabot[bot] Dec 15, 2025
a21f0ac
chore(deps): bump actions/cache from 4 to 5 (#8039)
dependabot[bot] Dec 15, 2025
3843cc7
chore(deps): bump sentry from 0.34.0 to 0.46.0 in /codex-rs (#8043)
dependabot[bot] Dec 15, 2025
adbbcb0
chore(deps): bump lru from 0.12.5 to 0.16.2 in /codex-rs (#8045)
dependabot[bot] Dec 15, 2025
fc53411
fix: Don't trigger keybindings view on input burst (#7980)
pedrovhb Dec 15, 2025
4274e61
feat: config ghost commits (#7873)
jif-oai Dec 15, 2025
0d9801d
feat: ghost snapshot v2 (#8055)
jif-oai Dec 15, 2025
4501c0e
Update config.md (#8066)
kvokka Dec 15, 2025
5b472c9
Fixed formatting issue (#8069)
etraut-openai Dec 15, 2025
c696456
stage new windows sandbox binaries as artifacts (#8076)
iceweasel-oai Dec 15, 2025
017a4a0
Fix: Skip Option<()> schema generation to avoid invalid Windows filen…
448523760 Dec 15, 2025
b4635cc
better name for windows sandbox features (#8077)
iceweasel-oai Dec 15, 2025
2c6995c
exec-server: additional context for errors (#7935)
nornagon-openai Dec 15, 2025
54def78
docs: fix gpt-5.2 typo in config.md (#8079)
Raptors65 Dec 15, 2025
fbeb7d4
chore(ci): drop Homebrew origin/main workaround for macOS runners (#8…
voctory Dec 15, 2025
f754b19
Fix: Detect Bun global install via path check (#8004)
miraclebakelaser Dec 15, 2025
3ee5c40
chore: persist comments in edit (#7931)
jif-oai Dec 16, 2025
d9554c8
Fixes mcp elicitation test that fails for me when run locally (#8020)
etraut-openai Dec 16, 2025
412dd37
chore(app-server): remove stubbed thread/compact API (#8086)
owenlin0 Dec 16, 2025
b093565
WIP: Rework TUI viewport, history printing, and selection/copy (#7601)
joshka-oai Dec 16, 2025
d802b18
fix parallel tool calls (#7956)
aibrahim-oai Dec 16, 2025
c0a12b3
feat: merge remote models instead of destructing (#7997)
aibrahim-oai Dec 16, 2025
b9d1a08
chore(shell_command) fix freeform timeout output (#7791)
dylan-hurd-oai Dec 16, 2025
f074e57
refactor(tui2): make transcript line metadata explicit (#8089)
joshka-oai Dec 16, 2025
bef36f4
feat: if .codex is a sub-folder of a writable root, then make it read…
bolinfest Dec 16, 2025
cf44511
refactor TUI event loop to enable dropping + recreating crossterm eve…
sayan-oai Dec 16, 2025
ae57e18
feat: close unified_exec at end of turn (#8052)
jif-oai Dec 16, 2025
c9f5b9a
feat: do not compact on last user turn (#8060)
jif-oai Dec 16, 2025
021c9a6
feat: unified exec footer (#8067)
jif-oai Dec 16, 2025
d748251
nit: trace span for regular task (#8053)
jif-oai Dec 16, 2025
b53889a
Revert "feat: unified exec footer" (#8109)
jif-oai Dec 16, 2025
3d14da9
bug fixes and perf improvements for elevated sandbox setup (#8094)
iceweasel-oai Dec 16, 2025
e290d48
chore(apply-patch) move invocation parsing (#8110)
dylan-hurd-oai Dec 16, 2025
b27c702
chore: mac codesign refactor (#8085)
shijie-oai Dec 16, 2025
5ceeaa9
Upgrade GitHub Actions for Node 24 compatibility (#8102)
salmanmkc Dec 16, 2025
3a32716
fix tui2 compile error (#8124)
zchee Dec 16, 2025
5186569
feat(sdk): add xhigh reasoning effort support to TypeScript SDK (#8108)
conorbranagan Dec 16, 2025
bbc5675
Revert "chore: review in read-only (#7593)" (#8127)
etraut-openai Dec 16, 2025
a3b137d
chore(apply-patch) move invocation tests (#8111)
dylan-hurd-oai Dec 16, 2025
3fbf379
docs: refine tui2 viewport roadmap (#8122)
joshka-oai Dec 16, 2025
600d01b
chore: update listMcpServers to listMcpServerStatus (#8114)
shijie-oai Dec 16, 2025
cafcd60
Add a workflow for a hardcoded version of models (#8118)
aibrahim-oai Dec 16, 2025
3a0d9bc
include new windows binaries in npm package. (#8140)
iceweasel-oai Dec 17, 2025
14d80c3
Add `user_agent` header (#8149)
aibrahim-oai Dec 17, 2025
42b8f28
Fixed resume matching to respect case insensitivity when using WSL mo…
etraut-openai Dec 17, 2025
70913ef
[app-server] add new RawResponseItem v2 event (#8152)
celia-oai Dec 17, 2025
ae3793e
chore(apply-patch) unicode scenario (#8141)
dylan-hurd-oai Dec 17, 2025
ebd1099
fix the models script (#8163)
aibrahim-oai Dec 17, 2025
2041b72
chore: dedup review result duplication (#8057)
jif-oai Dec 17, 2025
4897efc
Add public skills + improve repo skill discovery and error UX (#8098)
xl-openai Dec 17, 2025
813bdb9
feat: fallback unified_exec to shell_command (#8075)
jif-oai Dec 17, 2025
2bf5767
fix: flaky test 6 (#8175)
jif-oai Dec 17, 2025
0abaf1b
nit: prevent race in event rendering (#8181)
jif-oai Dec 17, 2025
2e7e4f6
nit: drop dead branch with `unified_exec` tool (#8182)
jif-oai Dec 17, 2025
45c164a
nit: doc (#8186)
jif-oai Dec 17, 2025
de3fa03
feat: change ConfigLayerName into a disjoint union rather than a simp…
bolinfest Dec 17, 2025
9352c6b
feat: Constrain values for approval_policy (#7778)
gt-oai Dec 17, 2025
ac6ba28
feat: experimental menu (#8071)
jif-oai Dec 17, 2025
f74e0cd
feat: unified exec footer (#8117)
jif-oai Dec 17, 2025
a2cc003
chore: move back stuff out of beta program (#8199)
jif-oai Dec 17, 2025
3702793
chore: update listMcpServerStatus to be non-blocking (#8151)
shijie-oai Dec 17, 2025
9f28c62
fix: proper skills dir cleanup (#8194)
jif-oai Dec 17, 2025
167553f
fix: session downgrade (#8196)
jif-oai Dec 17, 2025
3d92b44
feat: add config to disable warnings around ghost snapshot (#8178)
jif-oai Dec 17, 2025
1e9babe
fix: PathBuf -> AbsolutePathBuf in ConfigToml struct (#8205)
bolinfest Dec 17, 2025
df35189
feat: make list_models non-blocking (#8198)
shijie-oai Dec 17, 2025
a9a7cf3
download new windows binaries when staging npm package (#8203)
iceweasel-oai Dec 17, 2025
927a6ac
Load models from static file (#8153)
aibrahim-oai Dec 17, 2025
25ecd0c
speed and reliability improvements for setting reads ACLs (#8216)
iceweasel-oai Dec 17, 2025
774bd9e
feat: model picker (#8209)
aibrahim-oai Dec 18, 2025
a879701
chore: cleanup Config instantiation codepaths (#8226)
bolinfest Dec 18, 2025
6f102e1
Show migration link (#8228)
aibrahim-oai Dec 18, 2025
da3869e
Support SYSTEM skills. (#8220)
xl-openai Dec 18, 2025
50dafbc
Make loading malformed skills fail-open (#8243)
gverma-openai Dec 18, 2025
580c59a
fix: introduce ConfigBuilder (#8235)
bolinfest Dec 18, 2025
e1deeef
Change "Team" to "Buisness" and add Education (#8221)
ethantphillips Dec 18, 2025
5c8d221
Reintroduce feature flags for skills. (#8244)
xl-openai Dec 18, 2025
cea76b8
nit: ui background terminals (#8255)
jif-oai Dec 18, 2025
1cfacbf
chore: add beta features (#8201)
jif-oai Dec 18, 2025
9bf41e9
chore: simplify loading of Mac-specific logic in config_loader (#8248)
bolinfest Dec 18, 2025
374d591
chores: clean picker (#8232)
aibrahim-oai Dec 18, 2025
deafead
chore: prefer AsRef<Path> to &Path (#8249)
bolinfest Dec 18, 2025
4c9d589
docs: clarify codex resume --all (CWD column & filtering) (#8264)
magsonleone Dec 18, 2025
f084e52
caribou (#8265)
aibrahim-oai Dec 18, 2025
aea47b6
feat: add name to beta features (#8266)
jif-oai Dec 18, 2025
425c8dc
cloud: default to current branch in cloud exec (#7460)
squinlan-oai Dec 18, 2025
b903285
feat: migrate to new constraint-based loading strategy (#8251)
bolinfest Dec 18, 2025
7157421
splash screen (#8270)
aibrahim-oai Dec 18, 2025
64bce09
Release 0.75.0
aibrahim-oai Dec 18, 2025
7822822
chore: sanitize upstream workflow triggers for fork safety
github-actions[bot] Dec 19, 2025
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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
iTerm
psuedo
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
212 changes: 212 additions & 0 deletions .github/actions/macos-code-sign/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
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
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
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
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

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"

submission_json=$(xcrun notarytool submit "$archive_path" \
--key "$notary_key_path" \
--key-id "$APPLE_NOTARIZATION_KEY_ID" \
--issuer "$APPLE_NOTARIZATION_ISSUER_ID" \
--output-format json \
--wait)

status=$(printf '%s\n' "$submission_json" | jq -r '.status // "Unknown"')
submission_id=$(printf '%s\n' "$submission_json" | jq -r '.id // ""')

if [[ -z "$submission_id" ]]; then
echo "Failed to retrieve submission ID for $binary"
exit 1
fi

echo "::notice title=Notarization::$binary submission ${submission_id} completed with status ${status}"

if [[ "$status" != "Accepted" ]]; then
echo "Notarization failed for ${binary} (submission ${submission_id}, status ${status})"
exit 1
fi
}

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

- 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
57 changes: 57 additions & 0 deletions .github/actions/windows-code-sign/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: windows-code-sign
description: Sign Windows binaries with Azure Trusted Signing.
inputs:
target:
description: Target triple for the artifacts to sign.
required: true
client-id:
description: Azure Trusted Signing client ID.
required: true
tenant-id:
description: Azure tenant ID for Trusted Signing.
required: true
subscription-id:
description: Azure subscription ID for Trusted Signing.
required: true
endpoint:
description: Azure Trusted Signing endpoint.
required: true
account-name:
description: Azure Trusted Signing account name.
required: true
certificate-profile-name:
description: Certificate profile name for signing.
required: true

runs:
using: composite
steps:
- name: Azure login for Trusted Signing (OIDC)
uses: azure/login@v2
with:
client-id: ${{ inputs.client-id }}
tenant-id: ${{ inputs.tenant-id }}
subscription-id: ${{ inputs.subscription-id }}

- name: Sign Windows binaries with Azure Trusted Signing
uses: azure/trusted-signing-action@v0
with:
endpoint: ${{ inputs.endpoint }}
trusted-signing-account-name: ${{ inputs.account-name }}
certificate-profile-name: ${{ inputs.certificate-profile-name }}
exclude-environment-credential: true
exclude-workload-identity-credential: true
exclude-managed-identity-credential: true
exclude-shared-token-cache-credential: true
exclude-visual-studio-credential: true
exclude-visual-studio-code-credential: true
exclude-azure-cli-credential: false
exclude-azure-powershell-credential: true
exclude-azure-developer-cli-credential: true
exclude-interactive-browser-credential: true
cache-dependencies: false
files: |
${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex.exe
${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-responses-api-proxy.exe
${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-windows-sandbox-setup.exe
${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-command-runner.exe
24 changes: 24 additions & 0 deletions .github/dotslash-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,30 @@
"path": "codex-responses-api-proxy.exe"
}
}
},
"codex-command-runner": {
"platforms": {
"windows-x86_64": {
"regex": "^codex-command-runner-x86_64-pc-windows-msvc\\.exe\\.zst$",
"path": "codex-command-runner.exe"
},
"windows-aarch64": {
"regex": "^codex-command-runner-aarch64-pc-windows-msvc\\.exe\\.zst$",
"path": "codex-command-runner.exe"
}
}
},
"codex-windows-sandbox-setup": {
"platforms": {
"windows-x86_64": {
"regex": "^codex-windows-sandbox-setup-x86_64-pc-windows-msvc\\.exe\\.zst$",
"path": "codex-windows-sandbox-setup.exe"
},
"windows-aarch64": {
"regex": "^codex-windows-sandbox-setup-aarch64-pc-windows-msvc\\.exe\\.zst$",
"path": "codex-windows-sandbox-setup.exe"
}
}
}
}
}
22 changes: 22 additions & 0 deletions .github/workflows/cargo-deny.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: cargo-deny

on: workflow_dispatch

jobs:
cargo-deny:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./codex-rs
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Run cargo-deny
uses: EmbarkStudios/cargo-deny-action@v1
with:
rust-version: stable
manifest-path: ./codex-rs/Cargo.toml
Loading