새 기능
- 직접 셸 명령 실행이 더 이상 진행 중인 턴을 중단하지 않으며, 턴이 활성화되어 있을 때 명령을 동시에 실행할 수 있습니다. (#10513)
- TUI 푸터에 표시될 메타데이터를 대화형으로 구성하는
/statusline 명령을 추가했습니다. (#10546)
- TUI 재개 선택기가 생성 시간과 마지막 업데이트 시간 간에 정렬 순서를 토글할 수 있으며, 선택기 내 모드 지표가 표시됩니다. (#10752)
- 앱 서버 클라이언트가 이제 활성 턴 제어, 실험적 기능 나열, 에이전트 재개, 특정 알림 거부를 위한 전용 API를 제공합니다. (#10721, #10821, #10903, #11319)
- Enterprise/관리자 요구 사항이 이제
requirements.toml을 통해 웹 검색 모드를 제한하고 네트워크 제약을 정의할 수 있습니다. (#10964, #10958)
- 이미지 첨부가 기존 형식에 추가로 GIF 및 WebP 입력을 수용합니다. (#11237)
- 셸 환경 및
rc 파일의 스냅샷 기능을 활성화했습니다. (#11172)
버그 수정
- Windows 시작 문제를 수정했습니다. 버퍼된 키 입력이 TUI 로그인 흐름을 즉시 종료할 수 있었습니다. (#10729)
- 필수 MCP 서버가 이제 손상된 상태에서 계속되지 않고 시작/재개 흐름 중 빠르게 실패합니다. (#10902)
- 파일 감시자 버그를 수정했습니다. 이 버그는 허위 스킬 재로드 이벤트를 발생시키고 매우 큰 로그 파일을 생성할 수 있었습니다. (#11217)
- TUI 입력 안정성을 개선했습니다: 긴 옵션 레이블이 올바르게 줄 바꿈되고, 유휴 상태일 때 스티어 모드에서 Tab이 제출되며, 기록 회수 시 커서 위치가 일관되게 유지되고, 임시 저장된 초안이 이미지 자리 표시자를 올바르게 복원합니다. (#11123, #10035, #11295, #9040)
- 모델 모달리티 엣지 케이스를 수정했습니다. 텍스트 전용 모델에서 더 명확한
view_image 오류를 표시하고 모델 전환 시 지원되지 않는 이미지 기록을 제거합니다. (#11336, #11349)
- 래핑된/heredoc 셸 명령에 대한 거짓 승인 불일치를 줄이고 exec 정책 평가에서 빈 명령 목록을 방지합니다. (#10941, #11397)
문서
- 앱 서버 문서 및 프로토콜 참조를 확장했습니다.
turn/steer, 실험적 기능 검색, resume_agent, 알림 거부, null developer_instructions 정규화에 대한 내용을 추가했습니다. (#10721, #10821, #10903, #10983, #11319)
- TUI 작성기 문서를 업데이트했습니다. 초안/이미지 복원, 스티어 모드 Tab 제출 동작, 기록 탐색 커서 의미론을 반영합니다. (#9040, #10035, #11295)
기타
- npm 릴리즈 패킹을 재구성했습니다. 플랫폼별 바이너리가
@openai/codex dist-태그를 통해 배포되어 패키지 크기 압력을 줄이면서 플랫폼별 설치를 유지합니다(@alpha 포함). (#11318, #11339)
time에 대한 보안 기반 종속성 업데이트를 적용했습니다(RUSTSEC-2026-0009). (#10876)
변경 로그
전체 변경 로그: https://github.com/openai/codex/compare/rust-v0.98.0...rust-v0.99.0
- #10729 fix(tui): flush input buffer on init to prevent early exit on Windows @Ashutosh0x
- #10689 fix: flaky landlock @jif-oai
- #10513 Allow user shell commands to run alongside active turns @jif-oai
- #10738 nit: backfill stronger @jif-oai
- #10246 adding fork information (UI) when forking @pap-openai
- #10748 Update explorer role default model @jif-oai
- #10425 Include real OS info in metrics. @iceweasel-oai
- #10745 feat: resumable backfill @jif-oai
- #10758 feat: wire ephemeral in
codex exec @jif-oai
- #10756 chore: handle shutdown correctly in tui @jif-oai
- #10637 feat: add memory tool @jif-oai
- #10751 feat: repair DB in case of missing lines @jif-oai
- #10762 nit: add DB version in discrepancy recording @jif-oai
- #10621 Leverage state DB metadata for thread summaries @jif-oai
- #9691 Add hooks implementation and wire up to
notify @gt-oai
- #10546 feat(tui): add /statusline command for interactive status line configuration @fcoury
- #10752 feat(tui): add sortable resume picker with created/updated timestamp toggle @fcoury
- #10769 fix(tui): fix resume_picker_orders_by_updated_at test @owenlin0
- #10423 fix(auth): isolate chatgptAuthTokens concept to auth manager and app-server @owenlin0
- #10775 nit: gpt-5.3-codex announcement @jif-oai
- #10782 nit: gpt-5.3-codex announcement 2 @jif-oai
- #10711 add sandbox policy and sandbox name to codex.tool.call metrics @iceweasel-oai
- #10660 chore: rm web-search-eligible header @sayan-oai
- #10783 fix: announcement in prio @jif-oai
- #10721 [app-server] Add a method to list experimental features. @mzeng-openai
- #10787 chore: limit update to 0.98.0 NUX to < 0.98.0 ver @sayan-oai
- #10655 Add analytics for /rename and /fork @pap-openai
- #10790 feat: wait for backfill to be ready @jif-oai
- #10693 Add app-server transport layer with websocket support @maxj-oai
- #10818 other announcement @jif-oai
- #10815 Sync app-server requirements API with refreshed cloud loader @xl-openai
- #10820 go back to auto-enabling web_search for azure @sayan-oai
- #10727 Send beta header with websocket connects @pakrym-oai
- #10809 updates: use brew api for version check @magus
- #10793 Add stage field for experimental flags. @mzeng-openai
- #10821 feat(app-server): turn/steer API @owenlin0
- #10792 Print warning when config does not meet requirements @gt-oai
- #10699 feat: expose detailed metrics to runtime metrics @apanasenko-oai
- #10784 Gate app tooltips to macOS @aibrahim-oai
- #10843 Log an event (info only) when we receive a file watcher event @etraut-openai
- #10852 Personality setting is no longer available in experimental menu @etraut-openai
- #10840 Removed the "remote_compaction" feature flag @etraut-openai
- #10876 sec: fix version of
time to prevent vulnerability @jif-oai
- #10892 nit: test an @jif-oai
- #10894 feat: backfill async again @jif-oai
- #10902 Handle required MCP startup failures across components @jif-oai
- #10851 Removed "exec_policy" feature flag @etraut-openai
- #10457 Queue nudges while plan generating @charley-oai
- #10822 Add app configs to config.toml @canvrno-oai
- #10420 feat(network-proxy): add structured policy decision to blocked errors @viyatb-oai
- #10814 fix(linux-sandbox): block io_uring syscalls in no-network seccomp policy @viyatb-oai
- #10698 core: preconnect Responses websocket for first turn @joshka-oai
- #10574 core: refresh developer instructions after compaction replacement history @charley-oai
- #10914 chore(app-server): update AGENTS.md for config + optional collection guidance @owenlin0
- #10928 chore(app-server): add experimental annotation to relevant fields @owenlin0
- #10927 Treat compaction failure as failure state @aibrahim-oai
- #10861 Support alternative websocket API @by-openai
- #10826 add originator to otel @alexsong-oai
- #10855 TUI/Core: preserve duplicate skill/app mention selection across submit + resume @daniel-oai
- #10943 app-server: print help message to console when starting websockets server @JaviSoto
- #10938 Mark Config.apps as experimental, correct schema generation issue @canvrno-oai
- #10947 fix(tui): conditionally restore status indicator using message phase @sayan-oai
- #10965 refactor(network-proxy): flatten network config under [network] @viyatb-oai
- #10970 Fixed a flaky test @etraut-openai
- #10710 Process-group cleanup for stdio MCP servers to prevent orphan process storms @etraut-openai
- #10964 feat: add support for allowed_web_search_modes in requirements.toml @bolinfest
- #10977 fix: use expected line ending in codex-rs/core/config.schema.json @bolinfest
- #10973 Do not poll for usage when using API Key auth @etraut-openai
- #10921 Show left/right arrows to navigate in tui request_user_input @charley-oai
- #10988 fix: normalize line endings when reading file on Windows @bolinfest
- #10903 Add resume_agent collab tool @jif-oai
- #10909 Bootstrap shell commands via user shell snapshot @jif-oai
- #10993 Fix flaky windows CI test @etraut-openai
- #10987 Fixed a flaky Windows test that is consistently causing a CI failure @etraut-openai
- #10958 feat(core): add network constraints schema to requirements.toml @viyatb-oai
- #10983 app-server: treat null mode developer instructions as built-in defaults @charley-oai
- #11039 feat: include state of [experimental_network] in /debug-config output @bolinfest
- #11040 Simplify pre-connect @pakrym-oai
- #10966 feat: enable premessage-deflate for websockets @apanasenko-oai
- #9040 fix(tui): rehydrate drafts and restore image placeholders @Chriss4123
- #10824 Fallback to HTTP on UPGRADE_REQUIRED @pakrym-oai
- #11028 Defer persistence of rollout file @etraut-openai
- #10980 fix: remove config.schema.json from tag check @bolinfest
- #11051 Gate view_image tool by model input_modalities @wiltzius-openai
- #11109 [bazel] Upgrade some rulesets in preparation for enabling windows @zbarsky-openai
- #11114 chore: refactor network-proxy so that ConfigReloader is injectable behavior @bolinfest
- #10718 Upgrade rmcp to 0.14 @mzeng-openai
- #11044 feat: include [experimental_network] in @bolinfest
- #10994 [apps] Improve app loading. @mzeng-openai
- #11121 chore: reverse the codex-network-proxy -> codex-core dependency @bolinfest
- #11105 feat: include NetworkConfig through ExecParams @bolinfest
- #11155 tui: avoid no-op status-line redraws @rakan-oai
- #10799 feat: do not close unified exec processes across turns @jif-oai
- #11172 chore: enable shell snapshot @jif-oai
- #11175 fix: do not show closed agents in
/agent @jif-oai
- #11173 chore: enable sub agents @jif-oai
- #11193 Deflake mixed parallel tools timing test @gt-oai
- #10770 Load requirements on windows @gt-oai
- #11132 core: account for all post-response items in auto-compact token checks @charley-oai
- #11198 tools: remove get_memory tool and tests @jif-oai
- #10937 Translate websocket errors @rasmusrygaard
- #11217 Fixed bug in file watcher that results in spurious skills update events and large log files @etraut-openai
- #11216 Move warmup to the task level @pakrym-oai
- #11203 Try to stop small helper methods @pakrym-oai
- #11197 [bazel] Upgrade some rulesets in preparation for enabling windows, part 2 @zbarsky-openai
- #11158 chore: remove network-proxy-cli crate @viyatb-oai
- #11230 Revert "chore: enable sub agents" @jif-oai
- #11123 TUI: fix request_user_input wrapping for long option labels @charley-oai
- #11133 core: add focused diagnostics for remote compaction overflows @charley-oai
- #10657 feat: search_tool @apanasenko-oai
- #11199 state: add memory consolidation lock primitives @jif-oai
- #10835 feat: extend skills/list to support additional roots. @xl-openai
- #10960 skill-creator: Remove invalid reference. @xl-openai
- #11219 feat: use a notify instead of grace to close ue process @jif-oai
- #11231 feat: tie shell snapshot to cwd @jif-oai
- #10962 fix(tui): keep unified exec summary on working line @joshka-oai
- #11232 Add originator to otel metadata tags @alexsong-oai
- #11237 adding image support for gif and webp @natea-oai
- #10924 [apps] Add gated instructions for Apps. @mzeng-openai
- #11228 Use longest remote model prefix matching @aibrahim-oai
- #11242 fix(feature) UnderDevelopment feature must be off @dylan-hurd-oai
- #11185 fix: nix build by adding missing dependencies and fix outputHashes @Philipp-M
- #10035 fix(tui): tab submits when no task running in steer mode @joshka-oai
- #11238 Remove offline fallback for models @aibrahim-oai
- #9739 Update models.json @github-actions
- #11255 Revert "Update models.json" @aibrahim-oai
- #11245 deflake linux-sandbox NoNewPrivs timeout @joshka-oai
- #11256 Revert "Revert "Update models.json"" @aibrahim-oai
- #11262 chore: change ConfigState so it no longer depends on a single config.toml file for reloading @bolinfest
- #11263 test: deflake nextest child-process leak in MCP harnesses @joshka-oai
- #11247 Adjust shell command timeouts for Windows @dylan-hurd-oai
- #11240 fix(app-server): for external auth, replace id_token with chatgpt_acc… @owenlin0
- #11140 chore(deps): bump insta from 1.46.2 to 1.46.3 in /codex-rs @dependabot
- #11139 chore(deps): bump anyhow from 1.0.100 to 1.0.101 in /codex-rs @dependabot
- #11138 chore(deps): bump regex from 1.12.2 to 1.12.3 in /codex-rs @dependabot
- #11239 Disable dynamic model refresh for custom model providers @etraut-openai
- #11269 feat: reserve loopback ephemeral listeners for managed proxy @bolinfest
- #11279 [apps] Add thread_id param to optionally load thread config for apps feature check. @mzeng-openai
- #11244 feat: add SkillPolicy to skill metadata and support allow_implicit_invocation @alexsong-oai
- #10215 chore(tui) cleanup /approvals @dylan-hurd-oai
- #11113 feat(sandbox): enforce proxy-aware network routing in sandbox @viyatb-oai
- #10940 feat: support configurable metric_exporter @alexsong-oai
- #11294 chore: put crypto provider logic in a shared crate @bolinfest
- #11207 feat: retain NetworkProxy, when appropriate @bolinfest
- #11200 memories: add extraction and prompt module foundation @jif-oai
- #11191 feat: add connector capabilities to sub-agents @jif-oai
- #11304 Fix spawn_agent input type @jif-oai
- #11300 feat: align memory phase 1 and make it stronger @jif-oai
- #11311 Extract hooks into dedicated crate @jif-oai
- #11306 feat: phase 2 consolidation @jif-oai
- #11318 chore: split NPM packages @jif-oai
- #11322 Fix pending input test waiting logic @jif-oai
- #11265 Remove ApiPrompt @pakrym-oai
- #11295 tui: keep history recall cursor at line end @joshka-oai
- #11288 fix(protocol): approval policy never prompt @fouad-openai
- #11323 Revert "Add app-server transport layer with websocket support (#10693)" @maxj-oai
- #11162 Fix: update parallel tool call exec approval to approve on request id @shijie-oai
- #11249 [apps] Improve app installation flow. @mzeng-openai
- #11319 feat: opt-out of events in the app-server @jif-oai
- #11241 Treat first rollout session_meta as canonical thread identity @guinness-oai
- #11339 Use
@openai/codex dist-tags for platform binaries instead of separate package names @bolinfest
- #11330 test(core): stabilize ARM bazel remote-model and parallelism tests @dylan-hurd-oai
- #11345 core: remove stale apply_patch SandboxPolicy TODO in seatbelt @bolinfest
- #11343 Compare full request for websockets incrementality @pakrym-oai
- #11344 fix: reduce usage of
open_if_present @jif-oai
- #11336 Always expose view_image and return unsupported image-input error @aibrahim-oai
- #11346 Sanitize MCP image output for text-only models @aibrahim-oai
- #11337 Extract tool building @pakrym-oai
- #10941 fix(core): canonicalize wrapper approvals and support heredoc prefix … @viyatb-oai
- #10946 include sandbox (seatbelt, elevated, etc.) as in turn metadata header @iceweasel-oai
- #11349 Strip unsupported images from prompt history to guard against model switch @aibrahim-oai
- #11348 Use thin LTO for alpha Rust release builds @bolinfest
- #11334 chore: unify memory job flow @jif-oai
- #11364 feat: mem v2 - PR1 @jif-oai
- #11365 feat: mem v2 - PR2 @jif-oai
- #11366 feat: mem v2 - PR3 @jif-oai
- #11274 Update models.json @github-actions
- #11361 Split command parsing/safety out of
codex-core into new codex-command @bolinfest
- #11369 feat: mem v2 - PR4 @jif-oai