Codex: rust-v0.96.0 Release

Release date:
February 4, 2026
Previous version:
rust-v0.96.0-alpha.2 (released February 4, 2026)
Magnitude:
0 Diff Delta
Contributors:
0 total committers
Data confidence:
Commits:

Top Contributors in rust-v0.96.0

Could not determine top contributors for this release.

Directory Browser for rust-v0.96.0

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

New Features

  • Added thread/compact to the v2 app-server API as an async trigger RPC, so clients can start compaction immediately and track completion separately. (#10445)
  • Added websocket-side rate limit signaling via a new codex.rate_limits event, with websocket parity for ETag/reasoning metadata handling. (#10324)
  • Enabled unified_exec on all non-Windows platforms. (#10641)
  • Constrained requirement values now include source provenance, enabling source-aware config debugging in UI flows like /debug-config. (#10568)

Bug Fixes

  • Fixed Esc handling in the TUI request_user_input overlay: when notes are open, Esc now exits notes mode instead of interrupting the session. (#10569)
  • Thread listing now queries the state DB first (including archived threads) and falls back to filesystem traversal only when needed, improving listing correctness and resilience. (#10544)
  • Fixed thread path lookup to require that the resolved file actually exists, preventing invalid thread-id resolutions. (#10618)
  • Dynamic tool injection now runs in a single transaction to avoid partial state updates. (#10614)
  • Refined request_rule guidance used in approval-policy prompting to correct rule behavior. (#10379, #10598)

Documentation

  • Updated app-server docs for thread/compact to clarify its asynchronous behavior and thread-busy lifecycle. (#10445)
  • Updated TUI docs to match the mode-specific Esc behavior in request_user_input. (#10569)

Chores

  • Migrated state DB helpers to a versioned SQLite filename scheme and cleaned up legacy state files during runtime initialization. (#10623)
  • Expanded runtime telemetry with websocket timing metrics and simplified internal metadata flow in core client plumbing. (#10577, #10589)

Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.95.0...rust-v0.96.0

  • #10569 tui: make Esc clear request_user_input notes while notes are shown @charley-oai
  • #10577 feat: log webscocket timing into runtime metrics @apanasenko-oai
  • #10445 Add thread/compact v2 @aibrahim-oai
  • #10589 Move metadata calculation out of client @pakrym-oai
  • #10379 fix(core) updated request_rule guidance @dylan-hurd-oai
  • #10598 fix(core) Request Rule guidance tweak @dylan-hurd-oai
  • #10544 Prefer state DB thread listings before filesystem @jif-oai
  • #10614 fix: single transaction for dyn tools injection @jif-oai
  • #10568 Requirements: add source to constrained requirement values @gt-oai
  • #10611 chore: simplify user message detection @jif-oai
  • #10618 fix: make sure file exist in find_thread_path_by_id_str_in_subdir @jif-oai
  • #10619 nit: cleaning @jif-oai
  • #10324 Add a codex.rate_limits event for websockets @rasmusrygaard
  • #10623 Migrate state DB path helpers to versioned filename @jif-oai
  • #10638 Update tests to stop using sse_completed fixture @pakrym-oai
  • #10641 feat: land unified_exec @jif-oai