Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
545 commits
Select commit Hold shift + click to select a range
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
be274cb
tui: improve rendering of search cell (#8273)
nornagon-openai Dec 18, 2025
2e5d52c
[release] Add a dmg target for MacOS (#8207)
celia-oai Dec 18, 2025
ad41182
grant read ACL to exe directory first so we can call the command runn…
iceweasel-oai Dec 18, 2025
e9023d5
use mainline version as baseline in ci (#8271)
iceweasel-oai Dec 18, 2025
df46ea4
Terminal Detection Metadata for Per-Terminal Scroll Scaling (#8252)
joshka-oai Dec 18, 2025
6395430
add a default dacl to restricted token to enable reading of pipes (#8…
iceweasel-oai Dec 18, 2025
87abf06
fix: flaky tests 5 (#8282)
jif-oai Dec 18, 2025
4fb0b54
feat: add `/ps` (#8279)
jif-oai Dec 18, 2025
2f048f2
feat: add support for /etc/codex/requirements.toml on UNIX (#8277)
bolinfest Dec 18, 2025
d7ae342
feat(app-server): add v2 deprecation notice (#8285)
owenlin0 Dec 18, 2025
8f0b383
model list (#8286)
pakrym-oai Dec 18, 2025
9fb9ed6
Set exclude to true by default in app server (#8281)
ambrosino-oai Dec 18, 2025
53f5317
chore: upgrade rmcp crate from 0.10.0 to 0.12.0 (#8288)
bolinfest Dec 18, 2025
1cd1cf1
Update system skills bundled with codex-rs (#8253)
gverma-openai Dec 18, 2025
358a5ba
Support skills shortDescription. (#8278)
xl-openai Dec 18, 2025
46baedd
fix: change codex/sandbox-state/update from a notification to a reque…
bolinfest Dec 18, 2025
2d98260
fix: remove duplicate shell_snapshot FeatureSpec (#8274)
zchee Dec 18, 2025
3d4ced3
chore: migrate from Config::load_from_base_config_with_overrides to C…
bolinfest Dec 19, 2025
3429de2
feat: introduce ExternalSandbox policy (#8290)
apanasenko-oai Dec 19, 2025
6c76d17
feat: collapse "waiting" of `unified_exec` (#8257)
jif-oai Dec 19, 2025
dcc0119
UI tweaks on skills popup. (#8250)
xl-openai Dec 19, 2025
ba835c3
Fix tests (#8299)
xl-openai Dec 19, 2025
d353372
skills feature default on. (#8297)
xl-openai Dec 19, 2025
8120c87
Support admin scope skills. (#8296)
xl-openai Dec 19, 2025
f4371d2
Add short descriptions to system skills (#8301)
gverma-openai Dec 19, 2025
339b052
Fix admin skills. (#8305)
xl-openai Dec 19, 2025
6f94a90
Keep skills feature flag default OFF for windows. (#8308)
xl-openai Dec 19, 2025
eeda6a5
Revert "Keep skills feature flag default OFF for windows." (#8325)
xl-openai Dec 19, 2025
37071e7
Update system skills from OSS repo (#8328)
gverma-openai Dec 19, 2025
b15b508
Fix link to contributing.md in experimental.md (#8311)
jdijk-deventit Dec 19, 2025
014235f
Fix: /undo destructively interacts with git staging (#8214) (#8303)
Galaxy-0 Dec 19, 2025
7e5c343
feat: make ConstraintError an enum (#8330)
bolinfest Dec 19, 2025
0a7021d
fix: enable resume_warning that was missing from mod.rs (#8333)
bolinfest Dec 19, 2025
e3d3445
Update models.json (#8168)
github-actions[bot] Dec 19, 2025
1d4463b
feat(tui2): coalesce transcript scroll redraws (#8295)
joshka-oai Dec 19, 2025
ec3738b
feat: move file name derivation into codex-file-search (#8334)
RQfreefly Dec 19, 2025
dc61fc5
feat: support allowed_sandbox_modes in requirements.toml (#8298)
bolinfest Dec 19, 2025
797a68b
bump cargo-deny-action ver (#8345)
sayan-oai Dec 19, 2025
f0dc6fd
Rename OpenAI models to models manager (#8346)
aibrahim-oai Dec 20, 2025
a697408
chore: enusre the logic that creates ConfigLayerStack has access to c…
bolinfest Dec 20, 2025
63942b8
feat(tui2): tune scrolling inpu based on (#8357)
joshka-oai Dec 20, 2025
987dd7f
Chore: remove rmcp feature and exp flag usages (#8087)
shijie-oai Dec 20, 2025
fab1ded
Remove plan from system skills (#8374)
gverma-openai Dec 21, 2025
112f40e
Release 0.77.0
shijie-oai Dec 21, 2025
eead969
chore: sanitize upstream workflow triggers for fork safety
github-actions[bot] Dec 21, 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
  •  
  •  
  •  
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
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
46 changes: 46 additions & 0 deletions .github/actions/macos-code-sign/notary_helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env bash

notarize_submission() {
local label="$1"
local path="$2"
local notary_key_path="$3"

if [[ -z "${APPLE_NOTARIZATION_KEY_ID:-}" || -z "${APPLE_NOTARIZATION_ISSUER_ID:-}" ]]; then
echo "APPLE_NOTARIZATION_KEY_ID and APPLE_NOTARIZATION_ISSUER_ID are required for notarization"
exit 1
fi

if [[ -z "$notary_key_path" || ! -f "$notary_key_path" ]]; then
echo "Notary key file $notary_key_path not found"
exit 1
fi

if [[ ! -f "$path" ]]; then
echo "Notarization payload $path not found"
exit 1
fi

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

local status submission_id
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 $label"
exit 1
fi

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

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