New Features
- Added an experimental code mode for more isolated coding workflows. (#13418)
- Added an experimental hooks engine with
SessionStartandStophook events. (#13276) - WebSocket app-server deployments now expose
GET /readyzandGET /healthzon the same listener for easier health checks. (#13782) - Added a config switch to disable bundled system skills entirely. (#13792)
- Handoffs now carry realtime transcript context, which improves continuity when work is transferred between turns. (#14132)
- Improved the
$mention picker by clearly labeling Skills, Apps, and Plugins, and by surfacing plugins first. (#14147, #14163)
Bug Fixes
- Fixed a Linux
tmuxcrash caused by concurrent user-shell lookups. (#13900) - Fixed apps being enabled in unsupported sessions by tightening the enablement check. (#14011)
- Fixed reopened threads getting stuck as in-progress after quitting mid-run and then resuming later. (#14125)
- Fixed permission handling so legacy
workspace-writebehavior is preserved and newer permission profiles degrade more safely on older builds. (#13957, #14107) - Fixed approval flows so granted permissions persist across turns, work with reject-style configs, and are honored by
apply_patch. (#14009, #14055, #14118, #14165)
Chores
- Laid the groundwork for the Python SDK’s generated v2 schema types and pinned platform-specific runtime binaries. (#13953)
Changelog
Full Changelog: rust-v0.113.0...rust-v0.114.0
- #14009 feat(core) Persist request_permission data across turns @dylan-hurd-oai
- #14136 fix(core): use dedicated types for responsesapi web search tool config @owenlin0
- #13782 codex-rs/app-server: add health endpoints for --listen websocket server @maxj-oai
- #14055 fix(core) RequestPermissions + ApplyPatch @dylan-hurd-oai
- #14118 feat(approvals) RejectConfig for request_permissions @dylan-hurd-oai
- #13957 fix(protocol): preserve legacy workspace-write semantics @viyatb-oai
- #14107 fix: keep permissions profiles forward compatible @viyatb-oai
- #14147 make dollar-mention always clarify item category (skill, app, plugin) @sayan-oai
- #14152 Refactor tool output into trait implementations @pakrym-oai
- #14163 sort plugins first in menu @sayan-oai
- #13418 Add code_mode experimental feature @pakrym-oai
- #13276 start of hooks engine @eternal-openai
- #14135 tui: only show fast status for gpt-5.4 @pash-openai
- #14157 Enforce single tool output type in codex handlers @pakrym-oai
- #14165 fix(core) default RejectConfig.request_permissions @dylan-hurd-oai
- #14167 Export tools module into code mode runner @pakrym-oai
- #13792 feat: support disabling bundled system skills @xl-openai
- #14169 Move exec command truncation into ExecCommandToolOutput @pakrym-oai
- #14011 [apps] Fix apps enablement condition. @mzeng-openai
- #14000 Delay pending cleanup until task aborts @aibrahim-oai
- #12296 Implemented thread-level atomic elicitation counter for stopwatch pausing @cconger
- #14132 Use realtime transcript for handoff context @aibrahim-oai
- #13879 Stabilize incomplete SSE retry test @aibrahim-oai
- #14184 Fix unified exec test output assertion @aibrahim-oai
- #14002 Stabilize websocket test server binding @aibrahim-oai
- #13939 Stabilize app-server notify initialize test @aibrahim-oai
- #13953 python-sdk: generated type foundation (all v2 schemas) @shaqayeq-oai
- #13603 Fix release-mode integration test compiler failure @etraut-openai
- #13900 Fix Linux tmux segfault in user shell lookup @etraut-openai
- #13901 Log ChatGPT user ID for feedback tags @etraut-openai
- #14183 Expose strongly-typed result for exec_command @pakrym-oai
- #14003 Stabilize split PTY output on Windows @aibrahim-oai
- #14229 Reuse McpToolOutput in McpHandler @pakrym-oai
- #14125 Mark incomplete resumed turns interrupted when idle @guinness-oai