checkpoint: into wallentx/termux-target from release/0.143.0 @ 8317ef5b5db6 - #291
Merged
unemployabot[bot] merged 11 commits intoJul 6, 2026
Conversation
## Why Generic plugin guidance is currently emitted only with initial context from host plugin state. An executor-selected plugin can become available later in the same turn, making its skills and tools usable without ever telling the model how plugin capabilities should be used. ## What - project every ready selected plugin package, including skill-only plugins - carry plugin availability with the exact MCP runtime projection while preserving MCP manager reuse when servers and connectors are unchanged - move generic plugin guidance from the static initial-context path into persisted World State - recognize legacy and retained plugin fragments so resume and compaction do not duplicate guidance ## Testing - `just test -p codex-mcp-extension` - `just test -p codex-core plugins_instructions` - `just test -p codex-core plugin_availability_change_reuses_the_mcp_manager` - `just test -p codex-app-server --test all selected_capabilit`
## Summary Cancelling an inline review could leave the TUI stuck in MCP startup state, so subsequent `/review` commands were rejected as though another task were still running. Specifically, the child’s “Starting MCP servers” event was incorrectly forwarded to the parent TUI, so the parent was marking itself as busy. This keeps delegate-session MCP startup events inside the delegate instead of exposing them as parent-session state. ## Reproduction Here's the before -- notice that after I cancel the first review, I'm prevented from running `/review` again: https://github.com/user-attachments/assets/571a0793-3253-4bcc-8f10-3782d176162f And the after -- notice that after I cancel, I can immediately start a new `/review`: https://github.com/user-attachments/assets/dd98b1d7-6a71-4a1f-a4b2-3295bc4848e5
## Summary - preserve reasoning item IDs on summary part and text delta events - track streamed response items by ID so reasoning summaries can continue after later items begin - keep TUI output complete and deduplicated when reasoning and final-answer events interleave ## Stack - **1/2: this PR — interleaved item support** - 2/2: openai#30752 — wire reasoning summary delivery configuration through the CLI and app-server ## Validation - just test -p codex-api preserves_reasoning_summary_item_ids - just test -p codex-core interleaved_reasoning_summary_events_keep_reasoning_item_metadata - just test -p codex-tui live_reasoning_summary_is_not_rendered_twice_when_item_completes - just fix -p codex-api -p codex-core -p codex-tui - just fmt
## Summary - deserialize `retry_model` from streamed `safety_buffering` payloads - preserve the existing downstream faster-model API and legacy header fallback - update SSE, WebSocket, and end-to-end safety-buffering coverage ## Root cause Follow-up to openai#31064. The Responses API emits the retry target as `retry_model`, but the client was looking for `faster_model`, so the payload value was ignored in favor of the compatibility fallback. ## Behavior A non-null `retry_model` from the buffering payload takes precedence. An explicit null leaves the retry target unset, while an omitted field continues to fall back to the existing response header. ## Validation - `just test -p codex-api` (135 tests) - `just test -p codex-core safety_buffering` (2 tests) - `just fix -p codex-api` - `just fmt` - `git diff --check`
) ## Why App-server initialization captures exec-policy parse warnings only once. Each `thread/start` then reloads config for that thread's cwd and rereads its `.rules` files, so rules that become malformed after initialization—or belong to a different project—are dropped without a fresh warning to the requesting client. ## What changed - Validate exec-policy rules against the freshly loaded per-thread config during `thread/start`. - Send the existing structured `configWarning` only to the connection that requested the thread. - Preserve nonfatal startup and avoid repeating an identical warning already delivered during initialization. This is intentionally separate from the TUI `legacy_core` cleanup in openai#31179 and the managed-requirements fallback fix in openai#31188.
## Why The TUI still reached through `codex_app_server_client::legacy_core` to validate exec-policy rules during local startup. The app server already owns this validation and reports parse failures through `configWarning`, so the duplicate TUI preflight preserved an unnecessary core dependency and could inspect the wrong machine when connected to a remote app server. ## What changed - Remove the TUI's direct exec-policy startup check. - Remove the two exec-policy re-exports from `legacy_core`. - Rely on the app server's existing config-warning flow for malformed custom rules in both embedded and remote sessions.
* Release 0.137.0-alpha.4
* Seed Termux release automation
* Prepare Termux rust-v0.137.0-alpha.4
* Release 0.137.0-alpha.5
* Seed Termux release automation
* Prepare Termux rust-v0.137.0-alpha.5
* ## New Features
- TUI controls now support F13-F24 keybindings, paste in searchable menus, and a compact reasoning-only status/title item (#25329, #25400, #25504).
- Enterprise/admin flows now show monthly credit limits and can apply cloud-managed config bundles, including EDU workspaces (#24812, #24617, #24619, #24620, #24622, #25963).
- Remote-control clients can start pairing and list or revoke controller grants through app-server v2 RPCs (#25675, #25785).
- Plugin workflows gained machine-readable `codex plugin list --json` output and cached remote catalog suggestions (#25330, #25457).
- Hosted web and image tools are available in more code-mode flows, with standalone web searches able to run in parallel (#25176, #25702, #25890, #25923).
- Multi-agent v2 keeps runtime choice with each thread and exposes cleaner follow-up and metadata defaults for spawned agents (#25266, #25636, #25720, #25721, #25722, #25841, #26114).
## Bug Fixes
- Cancelling a submitted prompt before visible output now restores the draft, attachments, and collaboration mode for editing (#25316).
- Slash-command filtering and footer shortcut hints now reset or render according to the current UI state (#25492, #25625).
- Platform reliability improved for macOS app launches and Windows SQLite startup, thread resume, and sandbox setup refreshes (#25485, #25490, #25509, #25949).
- Plugin loading preserves app manifest order, deduplicates local/remote curated installs, and treats malformed `skills` fields as warnings (#25491, #25681, #25717, #25782).
- Permission requests and approvals now carry environment identity, and managed MITM proxying exports readable CA bundles to child commands (#25850, #25858, #25862, #22668).
- Local session history is safer for compressed rollouts, renamed titles, pathless side-chat reloads, and stack-heavy startup/config rebuilds (#25087, #25624, #25661, #25814, #25844, #25847).
## Documentation
- Added app-server docs and generated schema updates for monthly credit limits, remote-control RPCs, and environment-scoped permission approvals (#24812, #25675, #25785, #25862).
- Moved repo review rules and contributor conventions into `AGENTS.md`, including Rust test-module layout and Python 3 compatibility guidance (#25682, #25690, #25738).
## Chores
- Root formatting and Justfile workflows are more complete and Windows-aware (#24983, #25165, #25683).
- Rust CI and release workflows use the git CLI for Cargo fetches to avoid intermittent libgit2/submodule failures (#25644, #25775).
- Python SDK releases now publish runtime wheels from the SDK workflow and pin to a glibc-compatible runtime package (#25906, #25907).
- Bazel CI’s BuildBuddy wrapper was reintroduced with Windows-safe process handling and validation (#25915).
- Shared prompts, context fragments, and skills plumbing moved into dedicated crates/extension paths to reduce `codex-core` coupling (#25151, #25953, #25959, #26106, #26122, #26167).
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.136.0...rust-v0.137.0
- #25329 feat(tui): allow function keys through f24 in keymaps @fcoury-oai
- #24617 Add config bundle transport types @joeflorencio-openai
- #25435 Add build_unsigned_archive release mode @shijie-oai
- #24619 Compose requirements layers @joeflorencio-openai
- #24620 Add cloud-managed config layer support @joeflorencio-openai
- #25462 Revert "Add build_unsigned_archive release mode" @shijie-oai
- #25113 store and expose parent_thread_id on Threads @owenlin0
- #25266 Set multi-agent v2 dogfood defaults @jif-oai
- #25060 Add goal extension idle continuation @jif-oai
- #25576 Use templates for goal steering prompts @jif-oai
- #25577 Remove Plan-mode gate from idle turn injection @jif-oai
- #25096 Add goal extension GoalApi @jif-oai
- #25087 Read compressed rollouts and materialize before append @jif-oai
- #25628 [codex] fix compressed rollout fixture SessionMeta initialization @fcoury-oai
- #25316 feat(tui): restore output-free cancelled prompts @fcoury-oai
- #23763 Preserve auto-review approval policy in codex exec @won-openai
- #25400 Allow paste in searchable selection menus @charliemarsh-oai
- #25485 Use deep links for macOS codex app paths @etraut-openai
- #25492 Reset slash popup selection when filter changes @etraut-openai
- #25504 Add reasoning-only status surface item @etraut-openai
- #25624 Preserve renamed thread titles during reconciliation @jif-oai
- #25089 Compress cold local rollouts @jif-oai
- #25490 Disable SQLite intrinsics for Windows x64 releases @etraut-openai
- #25603 [codex] Inherit raw events for spawned child listeners @vivi
- #25644 [codex] Use git CLI for release Cargo fetches @shijie-oai
- #25655 nit: drop todo @jif-oai
- #25654 Parallelize cold rollout compression @jif-oai
- #25121 exec-server: add environment path refs @starr-openai
- #25636 [codex] Rename multi-agent v2 assign_task to followup_task @jif-oai
- #25491 Preserve plugin app manifest order @charlesgong-openai
- #24983 [codex] Make justfile recipes Windows-aware @iceweasel-oai
- #25151 [codex] Consolidate shared prompts in codex-prompts @anp-oai
- #25659 Throttle repeated rollout compression runs @jif-oai
- #25165 Check root Python script formatting in CI @anp-oai
- #23767 [codex-rs] auto-review model override @won-openai
- #25149 exec-server: canonicalize bound filesystem paths @starr-openai
- #25669 fix: deflake zsh-fork approval test @jif-oai
- #24979 feat: gate unified exec zsh fork composition @bolinfest
- #24980 refactor: hide shell override for zsh fork unified exec @bolinfest
- #25679 Add rollout compression counters @jif-oai
- #25682 [codex] document out-of-line test module convention @anp-oai
- #25680 Add rollout compression histograms @jif-oai
- #25689 [codex] Generalize deferred nested tool guidance @sayan-oai
- #25690 Add Python version compatibility guidance @anp-oai
- #25681 fix: Deduplicate installed local and remote curated plugins @xl-openai
- #25701 fix: rename McpServer to TestAppServer @bolinfest
- #25702 [codex] enable parallel standalone web search calls @sayan-oai
- #25705 Fix stale TestAppServer rename in plugin_list test @bolinfest
- #25684 Move tool search metadata onto ToolExecutor @jif-oai
- #25625 fix(tui): clarify footer shortcut overlay hints @fcoury-oai
- #25649 [codex] Publish release symbol artifacts @nornagon-openai
- #25661 Reject directory rollout paths for pathless side chats @bolinfest
- #22668 Wire managed MITM CA trust into child env @winston-openai
- #25712 app-server: remove experimental persist_extended_history bool flag @owenlin0
- #24621 Move cloud requirements crate to cloud config @joeflorencio-openai
- #25717 Handle invalid plugin skills manifest field @xli-oai
- #25675 feat(remote-control): add pairing start @apanasenko-oai
- #25683 [codex] Add comprehensive root formatting check @anp-oai
- #25738 Move code review rules into AGENTS @pakrym-oai
- #24812 feat: show enterprise monthly credit limits in status @efrazer-oai
- #25330 [codex] Add plugin list JSON output @xl-openai
- #25457 [codex] Cache remote plugin catalog for suggestions @xl-openai
- #25783 [codex] Move plugin discoverable logic into core-plugins @xl-openai
- #25782 [codex] Validate plugin skill base names @xl-openai
- #25814 feat: reuse compressed rollout search snippets @jif-oai
- #25720 Add multi-agent runtime metadata types @jif-oai
- #25721 Persist multi-agent runtime metadata @jif-oai
- #25722 Resolve per-thread multi-agent runtime @jif-oai
- #25841 session: keep startup prewarm aligned with resolved multi-agent runtime @jif-oai
- #25840 fix: main oops @jif-oai
- #25723 Test remote multi-agent runtime selector override @jif-oai
- #25724 Test runtime selector before first turn @jif-oai
- #25844 Reduce stack pressure in session startup and config rebuilds @jif-oai
- #25857 flake: Keep plugin test homes alive @jif-oai
- #25847 Run Codex async main on a sized stack @jif-oai
- #25775 [codex] Use git CLI for Cargo fetches across Rust workflows @anp-oai
- #25167 [app-server][core] Add connector-level Guardian reviewer overrides @zamoshchin-openai
- #25868 Skip startup prewarm when websockets are disabled @jif-oai
- #25156 Route Bazel CI through shared BuildBuddy remote config wrapper @anp-oai
- #25739 core: derive built-in permission profiles from raw policies @bolinfest
- #25909 [codex] Revert shared BuildBuddy Bazel wrapper @anp-oai
- #25850 Key request-permission grants by environment @jif-oai
- #25707 [codex-analytics] Track CodexErr details in turn analytics @rhan-oai
- #25858 Add environmentId to request_permissions @jif-oai
- #25176 Route standalone image generation through host finalization md @won-openai
- #25916 Fix Windows release PDB staging @shijie-oai
- #25862 Propagate permission approval environment id @jif-oai
- #25907 [codex] Pin Python SDK to glibc-compatible runtime @aibrahim-oai
- #24859 Use environment secrets for Azure signing @shijie-oai
- #25509 Fix Windows running thread resume path normalization @etraut-openai
- #25135 Populate workspace kind on Codex turn events @knittel-openai
- #24622 Switch runtime to cloud config bundle @joeflorencio-openai
- #25938 fix: update image generation test helper rename @joeflorencio-openai
- #25911 core: stop passing legacy SandboxPolicy to guardian reviews @bolinfest
- #25668 Split cloud config bundle service modules @joeflorencio-openai
- #25890 [codex] Keep hosted tools visible in code-only mode @aibrahim-oai
- #25867 Add remote request permissions integration coverage @jif-oai
- #25943 config: remove dead profile sandbox fallback @bolinfest
- #25948 Revert "Use environment secrets for Azure signing" @shijie-oai
- #25923 Expose standalone image generation in code mode @won-openai
- #25906 [codex] Publish Python runtime wheels with Python SDK releases @aibrahim-oai
- #25953 feat: add skills extension scaffold @jif-oai
- #25915 [codex] Fix Windows BuildBuddy Bazel wrapper execution @anp-oai
- #25926 config: express implicit sandbox defaults as permission profiles @bolinfest
- #25959 feat: add extension turn-input contributors @jif-oai
- #25963 Allow EDU accounts to fetch cloud config bundles @joeflorencio-openai
- #25785 feat(app-server): add remote control client management RPCs @apanasenko-oai
- #25988 revert: publish release symbol artifacts @shijie-oai
- #26114 feat: default hide_spawn_agent_metadata to true @jif-oai
- #26122 chore: extract context fragments into dedicated crate @jif-oai
- #26144 Reject MAv2 close_agent self-targets @jif-oai
- #26106 skills: resolve per-turn catalogs from turn input context @jif-oai
- #26155 fix: serialize goal progress accounting @jif-oai
- #26156 chore: mechanical rename @jif-oai
- #26167 Implement v1 skills extension prompt injection @jif-oai
- #26176 fix: main @jif-oai
- #25949 [codex] Restore setup helper UAC manifest @iceweasel-oai
* Seed Termux release automation
* Prepare Termux rust-v0.137.0
* Release 0.138.0-alpha.1
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.1
* Release 0.138.0-alpha.2
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.2
* Release 0.138.0-alpha.4
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.4
* Release 0.138.0-alpha.6
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.6
* Release 0.138.0-alpha.7
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.7
* Release 0.138.0-alpha.8
* ## New Features
- The `/app` command can now hand off the current CLI thread into Codex Desktop on macOS and native Windows, and Windows workspace launches can open directly into Desktop instead of stopping at a manual prompt. (#25638, #26500)
- Local image attachments and standalone image generations now expose their saved file paths to the model, which makes follow-up edits and file references more reliable. (#25944, #25947)
- Reasoning effort selection is more flexible: the TUI adds fallback shortcuts for terminals that miss `Alt` bindings, and model-defined effort levels now flow through in the order advertised by the model. (#25623, #26444, #26446)
- App-server integrations can now read account token usage, and Codex auth supports v2 personal access tokens in CLI and app-server flows. (#25344, #25731)
- Plugin automation got richer structured output: add/remove and marketplace commands support `--json`, plugin list JSON includes marketplace source, and plugin detail data now exposes default prompts, remote MCP servers, and unavailable app templates. (#26631, #26417, #25887, #26453, #26317)
## Bug Fixes
- Goal workflows are more predictable: multiline paste in `/goal edit` no longer submits early, idle auto-turns stay out of Plan mode, and goals stop auto-continuing after terminal turn failures. (#26047, #26147, #26690)
- Forked threads now keep user-renamed titles instead of falling back to the original first-prompt name. (#26075)
- The TUI no longer adds extra blank space while streaming, and cancelled prompts reopen with the cursor at the end so you can keep editing naturally. (#26636, #26457)
- TUI config write failures now show the underlying cause, making validation problems and read-only filesystem issues much easier to diagnose. (#26537)
- Startup is more resilient across environments, with support for `/usr/bin/bash`, shorter Linux proxy socket paths, and pre-refresh of expired OAuth-backed MCP credentials. (#26538, #26553, #26482)
- Workspace instruction loading is more accurate for remote and symlinked workspaces, so the right `AGENTS.md` files are picked up consistently. (#26205, #26465)
## Documentation
- The CLI README was refreshed to remove stale guidance and better match the current documentation flow. (#26313)
## Chores
- TUI startup does less repeated plugin work by reusing discovery results and loading only hook metadata on the critical path. (#26469, #26272)
- `resume --last` now finds the newest matching session through the state DB first, which speeds up restore on large local histories. (#26462)
- Large MCP/Ollama streams and long message histories process much faster thanks to optimized byte scanning. (#26265)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.137.0...rust-v0.138.0
- #26179 nit: small prompt update for MAv2 @jif-oai
- #26175 feat: guard git enrichment @jif-oai
- #26047 Fix multiline paste in /goal edit @etraut-openai
- #25700 core: stop threading SandboxPolicy through exec @bolinfest
- #25925 [codex] Copy user Bazel settings into Codex worktrees @anp-oai
- #26216 [codex] Pin Python SDK to runtime 0.137.0a4 @aibrahim-oai
- #25887 Preserve remote plugin default prompts @ericning-o
- #25944 Expose local image paths to models @won-openai
- #25469 [profile-switcher][rust] -- [1/2] Add app-server account session protocol @dhruvgupta-oai
- #26075 Fix forked thread name inheritance @etraut-openai
- #25960 Restore Windows coverage for code-mode image generation exposure @won-openai
- #26226 [codex] Split Python runtime release workflow @aibrahim-oai
- #26254 feat: catalog multi-agent v2 config @jif-oai
- #26251 Rewrite oversized tool outputs during remote compaction @pakrym-oai
- #26260 codex-pr-body: avoid confidential references @anp-oai
- #26074 Use Windows setup marker as completion signal @abhinav-oai
- #26002 log plugin MCP server names @chrisdong-oai
- #25623 fix(tui): add reasoning effort fallback shortcuts @fcoury-oai
- #25638 feat(tui): add /app desktop handoff @fcoury-oai
- #26189 cli: add package path from install context @bolinfest
- #25946 [codex-analytics] report compaction request token counts @rhan-oai
- #26252 ci: sign macOS release artifacts with Azure Key Vault @eburke-openai
- #26367 chore: calm down @jif-oai
- #26147 Gate automatic idle turns in Plan mode @jif-oai
- #26172 Bridge host-loaded skills into the skills extension @jif-oai
- #26265 Optimize unbounded byte scans with memchr @charliemarsh-oai
- #26396 Reduce SQLite contention from OpenTelemetry SDK debug logs @zanie-oai
- #26272 Load plugin hooks without other plugin capabilities @charliemarsh-oai
- #26313 Simplify Codex CLI README @etraut-openai
- #25947 Add saved image path hint to standalone image generation @won-openai
- #26291 Bound external agent session detection work @stefanstokic-oai
- #26417 Expose configured marketplace source in plugin list JSON @mpc-oai
- #26436 app-server: support -c config overrides @bolinfest
- #26435 external-agent-migration: avoid mixed MCP transport configs @stefanstokic-oai
- #26248 [codex-analytics] emit forked thread id on initialization @kbazzi
- #26320 core: allow excluding tool namespaces from code mode @sayan-oai
- #25945 Use Azure artifact signing environment secrets @shijie-oai
- #26205 Route AGENTS.md loading through environment filesystems @anp-oai
- #26445 [codex] Fix Windows sandbox build script lint @pakrym-oai
- #23710 build: use ThinLTO for release binaries @anp-oai
- #26447 Remove response.processed websocket request @pakrym-oai
- #26312 Cleanup experimentalFeature/enablement/set @mzeng-openai
- #26444 [codex] Support model-defined reasoning efforts @aibrahim-oai
- #26446 [codex] Use model-advertised reasoning effort order @aibrahim-oai
- #26466 Use Winget release environment secret @shijie-oai
- #26465 [codex] Preserve logical paths during AGENTS.md discovery @anp-oai
- #26453 fix(app-server): expose remote MCP servers in plugin read @ericning-o
- #26473 Add skill for pushing CI configuration changes @anp-oai
- #26317 [codex] Expose unavailable app templates in plugin detail @charlesgong-openai
- #26471 Improve Windows sandbox setup refresh diagnostics @iceweasel-oai
- #26431 Pull plugin service less frequently @beggers-openai
- #25000 ci: test windows cross build @cconger
- #25955 [codex] Emit sandbox outcome telemetry event @rreichel3-oai
- #26487 [codex] Add use_responses_lite 'override' logic @rka-oai
- #26482 fix(rmcp): refresh expired OAuth tokens before startup @anp-oai
- #26256 [codex] Keep Bazel startup options stable across commands @anp-oai
- #26499 core: derive exec policy filesystem policy from profile @bolinfest
- #26215 feat(remote-control): allow pairing while disabled @apanasenko-oai
- #26480 [codex] Add environment shell info @pakrym-oai
- #26210 Encrypt multi-agent v2 message payloads @jif-oai
- #26566 nit: doc @jif-oai
- #25710 [codex] Forward turn moderation metadata through app-server @carlc-oai
- #26599 [codex] Keep v1 spawn metadata visible @jif-oai
- #26610 refactor: split agent control modules @jif-oai
- #25344 feat(app-server): expose account token usage [1 of 2] @fcoury-oai
- #26553 [codex] Fix long proxy socket paths @viyatb-oai
- #26537 Surface TUI config write error causes @etraut-openai
- #26500 Open Windows app workspaces via deep link @etraut-openai
- #26551 Fix `/goal` usage text for control commands @etraut-openai
- #26554 Render code comment directives in TUI replay @etraut-openai
- #26623 feat: reload v2 agents on delivery @jif-oai
- #26532 Require absolute cwd in thread settings @pakrym-oai
- #26625 [codex] Allow socketpair in proxy-routed Linux sandbox @viyatb-oai
- #26538 [codex] Add /usr/bin/bash shell fallback @pakrym-oai
- #26449 feat(remote-control): add pairing status transport @hefuc-oai
- #26433 Make turn diff tracker multi-env aware @pakrym-oai
- #26636 fix(tui): avoid doubled blank rows while streaming @fcoury-oai
- #26450 feat(app-server): add remote control pairing status RPC @hefuc-oai
- #26335 Clean up Rust release workflow @shijie-oai
- #26547 [1 of 2] Align goal extension with core behavior @etraut-openai
- #26181 fix(tui): Windows composer background @fcoury-oai
- #26457 fix(tui): restore cancelled prompt cursor at end @fcoury-oai
- #26307 [codex] Respect Windows sandbox backend in exec policy @iceweasel-oai
- #26484 [codex] Add turn profiling analytics @aibrahim-oai
- #26552 Make runtime workspace roots absolute in app-server API @pakrym-oai
- #26462 Use state DB first for `resume --last` @charliemarsh-oai
- #26469 Speed up TUI startup by reusing plugin discovery @charliemarsh-oai
- #26631 Add JSON output for plugin subcommands @mpc-oai
- #26669 [codex] Bound WSL local curated discovery @xl-openai
- #26548 [2 of 2] Finish moving goal runtime to extension @etraut-openai
- #26674 protocol: remove submission-side serde from Op @pakrym-oai
- #26690 Block active goals after terminal turn errors @etraut-openai
- #25936 [codex] Remove legacy remote plugin startup sync @xl-openai
- #26490 [codex] Use standalone tools for Responses Lite @rka-oai
- #26013 [codex] Gate terminal visualization instructions in TUI @vie-oai
- #25731 [codex-rs] support v2 personal access tokens @cooper-oai
- #26542 [codex] Send Responses Lite transport header @rka-oai
- #24852 permissions: enforce managed permission profile allowlists @viyatb-oai
- #26698 [codex] Deduplicate skill load warnings @xl-openai
- #26716 Remove `just bench-smoke` from `just test`. @anp-oai
* Seed Termux release automation
* Prepare Termux rust-v0.138.0-alpha.8
* Seed Termux release automation
* Prepare Termux rust-v0.138.0
* ## New Features
- Code mode can now call standalone web search directly, including from nested JavaScript tool calls, and receive plaintext search results. (#26719)
- Tool and connector input schemas now preserve `oneOf` and `allOf`, and large schemas keep more shallow structure when compacted, improving compatibility with richer MCP tools. (#24118, #27084)
- `codex doctor` now includes editor and pager environment details in the local report while redacting raw values in JSON output. (#27081)
- Plugin marketplace automation is more informative and responsive: `codex plugin marketplace list --json` now includes each marketplace source, and plugin lists can return from the cached remote catalog before refreshing in the background. (#27009, #26932)
## Bug Fixes
- `codex resume --last "..."` and `codex fork --last "..."` now treat the trailing argument as the initial prompt instead of misreading it as a session ID. (#26818)
- MCP startup warnings from subagents now stay in the thread that owns them, avoiding duplicate parent-thread alerts and stuck startup spinners in the TUI. (#26639)
- Image edits now use the exact referenced image file paths instead of guessing from conversation history, so attached-image edits land on the intended input. (#26486)
- Bare URLs with `~` in the path are now linkified end to end in the TUI instead of being truncated before the tilde. (#27088)
- Thread resets such as `/new`, `/clear`, and `/fork` no longer drop cloud-managed requirements or feature flags during TUI config reloads. (#25177)
- Sandbox execution now preserves approved escalation decisions and enforces configured proxy-only networking more consistently. (#24981, #27035)
## Chores
- Release builds once again publish separate symbol archives with line tables, improving post-release crash symbolication without bringing back the earlier full-debug build slowdown. (#26202)
- The embedded V8 toolchain was updated to `rusty_v8` 149.2.0. (#26464)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.138.0...rust-v0.139.0
- #26741 fix(remote-control): preserve enrollment on generic websocket 404s @apanasenko-oai
- #26804 fix(core-plugins): send Codex product SKU to plugin-service @ericning-o
- #26464 build(v8): update rusty_v8 to 149.2.0 @cconger
- #26895 ci: use bazel environment for BuildBuddy secret @bolinfest
- #24981 fix: preserve approval sandbox decisions in unified exec @bolinfest
- #26818 fix(tui): accept prompts with resume and fork @fcoury-oai
- #24820 deps: update starlark to 0.14.2 @bolinfest
- #26639 fix(tui): scope MCP startup status by thread @fcoury-oai
- #26719 [codex] Enable standalone web search in code mode @rka-oai
- #26632 feat: add v2 agent residency lru @jif-oai
- #26974 Ignore proc-macro-error2 advisory @jif-oai
- #26969 feat: count V2 concurrency by active execution @jif-oai
- #26994 Rename multi-agent v2 close_agent to interrupt_agent @jif-oai
- #26997 Avoid reopening v2 descendants on resume @jif-oai
- #26821 [codex] Exclude external tool output from memories @rka-oai
- #26202 [codex] Restore release symbol artifacts with line tables @nornagon-openai
- #26852 fix(app-server): avoid blocking connection cleanup @apanasenko-oai
- #26923 Add HTTP window ID to Responses client metadata @ningyi-oai
- #26680 [codex-analytics] report compaction analytics details @rhan-oai
- #26637 [codex] Speed up external agent session imports @stefanstokic-oai
- #27009 [plugins] Expose marketplace source in marketplace list JSON @mpc-oai
- #27024 ci: template custom runner names by repo @bolinfest
- #26230 fix: preserve auto review across config and delegation @viyatb-oai
- #27038 [codex] Clarify PR babysitter state mutations @anp-oai
- #27037 [codex] Calm multi-agent v2 usage prompts @jif-oai
- #26687 Pair thread environment settings @pakrym-oai
- #27054 cli: add -P sandbox permissions profile alias @bolinfest
- #27035 Enforce configured network proxy in codex sandbox @viyatb-oai
- #26486 Route image edits through referenced file paths @won-openai
- #27060 [codex-analytics] stop sending codex error subreason @rhan-oai
- #27044 [codex] Require complete main-agent skill reads @fchen-oai
- #24118 feat: support oneOf and allOf in tool input schemas @celia-oai
- #26934 [codex] Prune stale curated plugin caches @xl-openai
- #26932 Use cached remote plugin catalog for plugin list @xl-openai
- #26091 [codex] Add OTEL counter descriptions @richardopenai
- #27081 feat(doctor): report editor and pager environment @fcoury-oai
- #27084 chore: preserve one more schema layer during large tool compaction @celia-oai
- #26840 Add typed file URIs @anp-oai
- #27088 fix(tui): linkify complete bare URLs with tildes @fcoury-oai
- #27068 Show effective sandbox modes in /debug-config @canvrno-oai
- #27092 Add extra config to StoredThread, leave empty for now @kumquatexpress
- #27096 Update web search citation prompt @yuning-oai
- #25177 Preserve cloud requirements across TUI thread resets @canvrno-oai
- #27106 [codex] Remove remote compaction failure log @pakrym-oai
* Seed Termux release automation
* Prepare Termux rust-v0.139.0
* Release 0.140.0-alpha.2
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.2
* Release 0.140.0-alpha.4
* Release 0.140.0-alpha.7
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.4
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.7
* Release 0.140.0-alpha.8
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.8
* Release 0.140.0-alpha.11
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.11
* Release 0.140.0-alpha.13
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.13
* Release 0.140.0-alpha.14
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.14
* Release 0.140.0-alpha.15
* Release 0.140.0-alpha.16
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.15
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.16
* Release 0.140.0-alpha.17
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.17
* Release 0.140.0-alpha.18
* Remove stale TUI realtime audio modules
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.18
* Release 0.140.0-alpha.19
* Seed Termux release automation
* Prepare Termux rust-v0.140.0-alpha.19
* ## New Features
- Added `/usage` views for daily, weekly, and cumulative account token activity. (#27925)
- `/goal` now preserves oversized text, large pasted blocks, and image attachments, including in remote app-server sessions. (#27508, #27509, #27510)
- Added permanent session deletion through `codex delete`, `/delete`, and app-server `thread/delete`, with confirmation safeguards and subagent cleanup. (#25018, #27476)
- Added `/import` for selectively importing setup, project configuration, and recent chats from Claude Code. (#27070, #27071, #27703)
- Typing `@` now opens the unified mentions menu for files, plugins, and skills by default. (#27499)
- Added managed Amazon Bedrock API-key authentication and encrypted local storage for CLI and MCP OAuth credentials. (#27443, #27689, #27504, #27535, #27539, #27541)
## Bug Fixes
- Corrupted SQLite state databases are now backed up and rebuilt automatically from rollout data, including malformed database-directory cases. (#26859, #27719)
- Prevented `/review` from crashing when `Esc` is pressed with queued guidance, while preserving that guidance when the review is canceled. (#22879)
- Improved MCP reliability by retrying transient startup failures, reporting unusable OAuth credentials as logged out, and preserving explicitly disabled servers. (#25147, #26713, #27414)
- Fixed remote plugin uninstall requests and correctly surfaced apps requiring authentication during installation. (#27085, #27223)
- Persisted “Don’t remind me” update dismissals reliably and cleared stale running-hook indicators after completed turns. (#27619, #27783)
- Non-TTY background commands can now be interrupted with Ctrl-C while preserving their final output and exit status. (#26734)
## Documentation
- Clarified contributor guidance around keeping crate APIs narrow and supporting Linux, macOS, and Windows. (#27939, #27966)
## Chores
- Improved responsiveness for large repositories and long sessions by preserving Git’s built-in filesystem monitor, avoiding duplicate history reads, accelerating archive lookup, and caching turn-diff rendering. (#26880, #27031, #27276, #27489)
- Removed the experimental `/realtime` voice controls and related audio dependencies from the TUI. (#27801)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.139.0...rust-v0.140.0
- #26880 [codex] preserve fsmonitor for worktree Git reads @tamird
- #27085 Use server app auth requirements for remote plugin install @xl-openai
- #27098 [codex] Return workspace directory installed plugins @xl-openai
- #27007 multi-agent: add path-based v2 activity tracking @jif-oai
- #27166 app-server: clear stale thread watches after v2 agent interruption @jif-oai
- #27080 [codex] Ignore pending PR review comments @anp-oai
- #26420 Avoid no-op backfill state writes @zanie-oai
- #27031 Avoid rereading rollout history during cold resume @zanie-oai
- #22879 fix: Prevent /review crash when entering Esc on steer message @canvrno-oai
- #27173 app-server: reject direct input to multi-agent v2 sub-agents @jif-oai
- #27184 Load selected executor skills through extensions @jif-oai
- #26835 [codex] Test extension API contracts @anp-oai
- #27063 [codex-analytics] add extensible feature thread sources @marksteinbrick-oai
- #26479 [codex] Speed up local nextest runs @anp-oai
- #27223 fix: use plugin service route for remote uninstall @ericning-o
- #22685 Add SOCKS5 TCP MITM coverage @winston-openai
- #26681 Allow creating a new goal after completion @etraut-openai
- #26711 Reduce TUI legacy core dependencies @etraut-openai
- #27110 [1/6] Add Python goal routing foundation @aibrahim-oai
- #27191 Route hosted Apps MCP through extensions @jif-oai
- #26830 [codex] Characterize global instruction lifecycle @anp-oai
- #26713 [codex] Report unusable MCP OAuth credentials as logged out @anp-oai
- #26734 [codex] Handle Ctrl-C for non-TTY unified exec @pakrym-oai
- #27116 Stop mirroring Codex user input into realtime @guinness-oai
- #27111 [2/6] Add private Python goal operations @aibrahim-oai
- #25147 [codex] Retry streamable HTTP initialize failures @ssetty-oai
- #27257 [codex] Tighten MCP connection manager API visibility and order @aibrahim-oai
- #26701 TUI Plugin Sharing 1 - add remote plugin identity @canvrno-oai
- #27129 feat: use provider defaults for memory models @celia-oai
- #27094 Add spans to build_tool_router @mchen-oai
- #24999 Add per-session realtime model and version overrides @guinness-oai
- #27078 [codex-analytics] emit goal lifecycle analytics @marksteinbrick-oai
- #27285 [codex] Fix post-merge analytics integration failures @anp-oai
- #27107 Add spans to run_turn @mchen-oai
- #27261 [codex] Make MCP connection startup fallible @aibrahim-oai
- #27174 feat: keep child MCP warnings out of parent transcript @jif-oai
- #27198 Use plugin-service MCP as the hosted plugin runtime @jif-oai
- #27375 [codex] Tag multi-agent spawn metrics with version @jif-oai
- #27383 Remove async-trait from extension contributors @jif-oai
- #27259 Use latest-wins MCP manager replacement @charliemarsh-oai
- #27264 [codex] Store compact window id in rollout @pakrym-oai
- #27280 [codex] add io PathUri native conversion APIs @anp-oai
- #27315 [codex] link Windows releases with LLD @tamird
- #27276 Reduce archive rollout lookup CPU @etraut-openai
- #27299 [codex] Outline ToolExecutor handler bodies @anp-oai
- #27391 Index visible thread list ordering @zanie-oai
- #27407 Fix compressed rollout search path matching @jif-oai
- #27304 [codex] Remove async_trait from ToolExecutor @anp-oai
- #26041 Add app-server background terminal process APIs @etraut-openai
- #25018 Add app-server `thread/delete` API @etraut-openai
- #26859 fix: Auto-recover from corrupted sqlite databases @ddr-oai
- #27064 [codex] remove blocking external agent migration flow @stefanstokic-oai
- #27421 [codex] Raise app-server recursion limit @anp-oai
- #27062 [codex] Retry transient Guardian review failures @kbazzi
- #27065 [codex] extract external agent import picker renderer @stefanstokic-oai
- #26409 [plugins] Inject remote_plugin_id into install elicitations @adaley-openai
- #27439 feat: make ThreadStore available on ThreadExtensionDependencies @bolinfest
- #27343 Guard core test subprocess cleanup @etraut-openai
- #27070 [codex] add external agent import picker UX @stefanstokic-oai
- #27321 [codex] Move release platform rules into bazel package @anp-oai
- #27071 [codex] add /import for external agents @stefanstokic-oai
- #27311 [codex] Skip local curated discovery for remote plugins @xl-openai
- #27414 [codex] Preserve disabled MCP servers across runtime overlays @e-provencher
- #27312 [codex] reuse release artifacts for npm staging @tamird
- #27319 Forward standalone assistant output to realtime @guinness-oai
- #27057 [codex] Add reusable OTEL gauge instruments @richardopenai
- #27245 image: add shared data URL preparation utilities @fjord-oai
- #27392 [codex-analytics] emit internally started turn events @marksteinbrick-oai
- #27322 [codex] Preserve build-script dependencies in rules_rs annotations @anp-oai
- #27489 core: cache turn diff rendering @nornagon-openai
- #27465 [codex] Remove redundant plugin app auth state @xl-openai
- #27484 Remove TUI legacy core test_support dependencies @etraut-openai
- #27476 Add session delete commands in CLI and TUI @etraut-openai
- #27247 core: resize all history images behind a feature flag @fjord-oai
- #27487 Trim TUI legacy telemetry and migration dependencies @etraut-openai
- #27438 [codex] Add token budget context feature @pakrym-oai
- #27501 [codex] Expand hosted web search citation guidance @yuning-oai
- #27526 tools: simplify default tool search text @sayan-oai
- #27488 [codex] Add new context window tool @pakrym-oai
- #27443 feat: add Bedrock API key as a managed auth mode @celia-oai
- #27532 [codex] Add comp_hash to model metadata @aibrahim-oai
- #27246 core: strip image detail from Responses Lite requests @fjord-oai
- #27517 [codex] Pass auth mode to plugin manager @xl-openai
- #27520 [codex] Compact when comp_hash changes @aibrahim-oai
- #27518 [codex] Add context remaining tool @pakrym-oai
- #27266 image: preserve metadata when resizing prompt images @fjord-oai
- #27103 [codex-analytics] report cached input tokens for v2 compaction @rhan-oai
- #27356 Use generic search metadata for dynamic tools @sayan-oai
- #27082 [codex-analytics] Emit structured compaction codex errors @rhan-oai
- #26513 [codex] Tune cloud config cache intervals @alexsong-oai
- #27387 skills: make backend plugin skills invocable without an executor @jif-oai
- #27403 skills: cache remote catalog failures per thread @jif-oai
- #27573 core: enable remote compaction v2 by default @jif-oai
- #27388 skills: expose remote skill resource tools @jif-oai
- #27569 multi-agent: move concurrency guidance into v2 usage hints @jif-oai
- #27585 nit: cap error @jif-oai
- #27404 test: cover referenced backend skill reads without an executor @jif-oai
- #27591 skills: render catalog locators by authority @jif-oai
- #27413 skills: decouple the skills extension from core @jif-oai
- #27527 [codex] publish npm packages concurrently @tamird
- #27528 [codex] publish DotSlash alongside npm @tamird
- #27529 [codex] download only release artifacts @tamird
- #27490 Remove TUI legacy Windows sandbox dependency @etraut-openai
- #27483 Emit plugin ID on MCP tool call analytics events @chrisdong-oai
- #27417 Print TUI session info on fatal exits @etraut-openai
- #27507 lint: allow self-documenting builder arguments @anp-oai
- #27420 [codex] Propagate plugin app categories @charlesgong-openai
- #27454 [codex] add cross-platform filesystem adapter coverage @anp-oai
- #27415 [codex] Surface runtime warnings in codex exec @anp-oai
- #27639 [codex] revert concurrent npm publishing @tamird
- #27646 feat: disable orchestrator skills for now @jif-oai
- #27323 [codex] Provide ARM64 MinGW powl compatibility support @anp-oai
- #27433 [codex] remove EnvironmentPathRef @anp-oai
- #27424 [codex] migrate ExecutorFileSystem paths to PathUri @anp-oai
- #27101 [codex] Load user instructions through an injected provider @anp-oai
- #27634 Resolve MCP server registrations through a catalog @jif-oai
- #27122 core: Consolidate Responses API Codex metadata @owenlin0
- #27450 [codex-rs] enforce PAT workspace restrictions @cooper-oai
- #27653 [codex] migrate exec-server filesystem protocol to PathUri @anp-oai
- #27663 Include thread id in token budget context @pakrym-oai
- #26418 [codex] Avoid duplicate hooks.json discovery with profiles @abhinav-oai
- #27689 feat: prefer managed Bedrock auth in model provider @celia-oai
- #27700 Remove fs/join and fs/parent from exec-server protocol @anp-oai
- #26426 Warn when hooks.json has unsupported top-level fields @abhinav-oai
- #27318 [codex] Move persistence policy application into ThreadStore @wiltzius-openai
- #27498 Route image extension reads through turn environments v2 @won-openai
- #27623 Add spans to turn lifecycle gaps @mchen-oai
- #27619 tui: clear stale hook row after turn completion @kotakem-openai
- #27711 Fix image extension PathUri conversion @anp-oai
- #27475 [codex] Remove async_trait from first-party code @anp-oai
- #27719 fix: Recover from sqlite directory being a file @ddr-oai
- #27715 ci(v8): gate Windows source builds on relevant changes @cconger
- #27702 [codex] parallelize release code generation @tamird
- #27709 [codex] resolve environment shell metadata eagerly @pakrym-oai
- #27445 feat(app-server): persist remote-control desired state @apanasenko-oai
- #27508 [1 of 3] Support long raw TUI goal objectives @etraut-openai
- #27256 Add request_user_input auto-resolution window contract @shijie-oai
- #27724 code-mode standalone: extract protocol and add host crate @cconger
- #27778 Translate non-English issues @etraut-openai
- #27316 Keep request_user_input direct-model only @shijie-oai
- #27696 [codex] Load AGENTS.md from all bound environments @anp-oai
- #27670 Make MCP server contributions thread-scoped @jif-oai
- #27732 [code-mode] Reject remote image URLs from output helpers @rka-oai
- #27692 Add executor-owned plugin resolution @jif-oai
- #27863 Extract shared plugin MCP config parsing @jif-oai
- #27703 [codex] restore source-specific import copy @stefanstokic-oai
- #27879 fix: serialize auth environment tests @jif-oai
- #27791 Reject transcript backtrack in side conversations @etraut-openai
- #27075 [ez][codex-rs] Support approvals reviewer in app defaults @zamoshchin-openai
- #27538 Use dependency groups for Python SDK tooling @charliemarsh-oai
- #27783 Persist update dismissal without cache @etraut-openai
- #27814 tui: Allow extra o's in /goal command @btraut-openai
- #27901 Use uv as Python SDK build backend @charliemarsh-oai
- #27720 realtime: add AVAS architecture override @bakks
- #27919 chore: prompt MAv2 @jif-oai
- #27816 sandboxing: migrate cwd inputs to PathUri @anp-oai
- #27890 [codex] expose remote plugin share URL @ericning-o
- #27913 [codex] unify apply patch parsing @pakrym-oai
- #27920 Handle standalone image generation failures as terminal items @won-openai
- #27927 [codex] Add size to internal filesystem metadata @pakrym-oai
- #27504 feat: add secret auth storage configuration @celia-oai
- #27674 [login] revoke existing auth before starting login @cooper-oai
- #27535 feat: add auth-specific encrypted secret namespaces @celia-oai
- #27939 [codex] Add crate API surface review rule @pakrym-oai
- #27926 [codex] Align implicit skill reads with parser @alexsong-oai
- #23254 fix(plugins) rm plugin descriptions @dylan-hurd-oai
- #27830 Support plaintext agent messages @jif-oai
- #27801 Remove TUI realtime voice support @etraut-openai
- #27539 feat: use encrypted local secrets for CLI auth @celia-oai
- #27076 Warn for structured feature toggles @canvrno-oai
- #27541 feat: use encrypted local secrets for MCP OAuth @celia-oai
- #27936 [codex] add roles to realtime append text @agamble-oai
- #27509 [2 of 3] Support long pasted text in TUI goals @etraut-openai
- #27109 Add Guardian catalog diagnostics metadata @won-openai
- #27966 Specify platform support in AGENTS.md @anp-oai
- #27855 [codex] parallelize Windows compression @tamird
- #27499 Promote TUI unified mentions in composer to default mentions feature @canvrno-oai
- #27972 [codex] Let generic test turns inherit their environment @pakrym-oai
- #27856 [codex] package Windows symbols in parallel @tamird
- #27976 [codex] make PathUri::from_abs_path infallible @anp-oai
- #27854 [codex] parallelize Windows package archives @tamird
- #27853 [codex] stage npm packages concurrently @tamird
- #27710 [codex] add latency tracing spans @rphilizaire-openai
- #27510 [3 of 3] Support images in TUI goals @etraut-openai
- #27925 feat(tui): reland token activity command @fcoury-oai
- #27988 [codex] Limit app-based plugin suggestions to remote catalogs @xl-openai
- #27652 [codex] Add auth mode to plugin manager constructor @felixxia-oai
- #27964 [codex] Add hermetic Wine test support @anp-oai
- #27459 [codex] Gate plugin MCP servers by auth route @felixxia-oai
- #27961 feat(app-server): enforce managed remote control disable @apanasenko-oai
- #27937 [codex] Add hermetic Wine exec-server test @anp-oai
- #27996 [codex] Send request-scoped turn state over WebSocket @aibrahim-oai
- #28002 [codex] Send turn state through compact requests @aibrahim-oai
* Seed Termux release automation
* Prepare Termux rust-v0.140.0
* Release 0.141.0-alpha.3
* Seed Termux release automation
* Prepare Termux rust-v0.141.0-alpha.3
* Release 0.141.0-alpha.5
* Seed Termux release automation
* Prepare Termux rust-v0.141.0-alpha.5
* Release 0.141.0-alpha.6
* Seed Termux release automation
* Prepare Termux rust-v0.141.0-alpha.6
* Release 0.141.0-alpha.7
* Seed Termux release automation
* Prepare Termux rust-v0.141.0-alpha.7
* checkpoint: into wallentx/termux-target from release/0.141.0 @ 512c55a29a8f (#242)
* ## New Features
- Remote executors now use authenticated, end-to-end encrypted Noise relay channels. (#26242, #26245)
- Cross-platform remote execution now preserves executor-native working directories and shells, including filesystem permission paths across app-server and exec-server boundaries. (#27819, #27995, #28032, #28122, #28165, #28367)
- Selected executor plugins can activate their stdio MCP servers per thread; plugin discovery also adds a created-by-me marketplace and auth-specific curated catalogs. (#27870, #27884, #27893, #28203, #28383)
- App-server clients can list immediate child threads, correlate external-agent imports with detailed results, and read or redeem rate-limit reset credits. (#26662, #28008, #28143)
- Realtime clients can explicitly append speech, control how Codex responses enter conversations, and omit startup context. (#27917, #28405)
- TUI input prompts can auto-resolve after inactivity, with a countdown that pauses on interaction. (#28235)
## Bug Fixes
- Hook trust bypass now persists through `codex exec` thread start and resume, while blocking `PostToolUse` hooks correctly reject code-mode tool calls. (#26434, #28365)
- Plugin capabilities now route consistently by authentication mode, deduplicate conflicting App/MCP declarations, and preserve remote marketplace ordering. (#27461, #27602, #27607, #27902, #27958, #28395)
- Windows sandbox execution repairs stale credentials automatically and gives PowerShell commands more time before backgrounding. (#27086, #27944)
- Idle exec-server relays remain connected, and steered user input immediately interrupts `wait_agent`. (#28286, #28341)
- Bundled SQLite is pinned to a version containing the WAL-reset corruption fix. (#27992)
- TLS connections now support P-521 certificate signatures commonly used by enterprise proxies. (#27706)
## Chores
- Reduced latency and memory use in large, tool-heavy sessions by caching tool search and eliminating repeated request and history copies. (#27258, #27813, #28306, #28309, #28313, #28323, #28327)
- Bounded prompt-image caching to 64 MiB and feedback uploads to eight related threads. (#28294, #28332)
- Terminal resize reflow is now always enabled, ignoring obsolete disabled settings. (#27794)
## Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.140.0...rust-v0.141.0
- #28001 [codex] package Windows ARM64 on x64 @tamird
- #28032 [codex] Carry exec-server cwd as PathUri @anp-oai
- #27607 [codex] Dedupe plugin MCPs by app declaration name @felixxia-oai
- #27992 [codex] Pin bundled SQLite to fixed WAL-reset version @gpeal
- #28125 build: run buildifier from just fmt @anp-oai
- #28120 bazel: add PowerShell to Wine test harness @anp-oai
- #27819 path-uri: render native paths across platforms @anp-oai
- #28122 [codex] exec-server honors remote environment cwd and shell @anp-oai
- #26662 feat(app-server): filter threads by parent @btraut-openai
- #27884 Add selected-plugin precedence and attribution to the MCP catalog @jif-oai
- #27870 Discover stdio MCP servers from selected executor plugins @jif-oai
- #28283 [codex] update multi-agent v2 prompts @jif-oai
- #27602 [codex] Preserve plugin apps in connector listings @felixxia-oai
- #27461 [codex] Skip plugin MCP OAuth for matching app routes @felixxia-oai
- #27893 Activate selected executor plugin MCPs in app-server @jif-oai
- #28332 [codex] Cap feedback upload subtrees @jif-oai
- #27365 Represent dynamic tools with explicit namespaces internally @sayan-oai
- #28333 skills: hide orchestrator skills with a local executor @jif-oai
- #27756 [codex] simplify shell snapshot ownership @pakrym-oai
- #27794 Remove terminal resize reflow flag gates @etraut-openai
- #28286 chore: restore exec-server relay keepalives @jif-oai
- #28164 [codex] simplify memory read metrics @pakrym-oai
- #27371 Expose explicit dynamic tool namespaces in thread start @sayan-oai
- #28309 linearize history output normalization @jif-oai
- #28306 avoid cloning sampling request input @jif-oai
- #28323 serialize websocket requests directly @jif-oai
- #28313 avoid cloning websocket request history @jif-oai
- #28344 [codex] remove stale PathExt import @pakrym-oai
- #27059 [codex] Cover OTLP HTTP log and trace event export @richardopenai
- #28327 reuse encoded Responses request bodies @jif-oai
- #27995 [codex] preserve explicit environment cwd @pakrym-oai
- #28285 guardian: isolate review context from skills and memories @jif-oai
- #26702 TUI Plugin Sharing 2 - add remote plugin section plumbing @canvrno-oai
- #28294 bound prompt image cache retention @jif-oai
- #28257 Support staging OAuth client ID overrides @apanasenko-oai
- #28341 core: let steer interrupt wait_agent @jif-oai
- #28336 skills: cache orchestrator resources per thread @jif-oai
- #28357 Extract shared Windows sandbox session runner @iceweasel-oai
- #27706 Use aws-lc-rs for rustls crypto provider @malsamiri-oai
- #28347 [codex] add path-types skill @anp-oai
- #28235 Add request user input auto-resolution timer @shijie-oai
- #28234 [mcp] Increase default tool timeout to 300 seconds @adaley-openai
- #28008 [codex] Add external agent import result accounting @charlesgong-openai
- #27944 recover stale Windows sandbox credentials @iceweasel-oai
- #27086 Add Windows unified exec yield floor @iceweasel-oai
- #28358 Add hidden Windows sandbox wrapper entrypoint @iceweasel-oai
- #27258 core: cache the tool search handler per session @mchen-oai
- #28143 feat(app-server): expose rate-limit reset credits @jayp-oai
- #28355 feat(core): add metadata field to ResponseItem @owenlin0
- #28203 [codex] Add created-by-me remote plugin marketplace @ericning-o
- #28365 Respect blocking PostToolUse hooks in code mode @abhinav-oai
- #27813 [codex] Reuse Apps policy evaluation across MCP tool exposure @mzeng-openai
- #28300 Deflake realtime handoff steering test @felixxia-oai
- #28395 [codex] Preserve remote plugin directory order @jameswt-oai
- #27955 [codex] retain resolved environments across turns @pakrym-oai
- #27917 Add realtime speech append control @guinness-oai
- #27093 [codex-analytics] Analytics Capture to File in Debug Builds @jameswt-oai
- #26242 exec-server: add Noise relay transport @viyatb-oai
- #28165 Use PathUri in filesystem permission paths for exec-server @anp-oai
- #28415 [codex] Fix missing response item metadata in tests @adaley-openai
- #27058 [codex] Add second-based OTEL duration histograms @richardopenai
- #27902 [codex] Centralize plugin auth capability filtering @felixxia-oai
- #28405 Add a toggle for realtime startup context @guinness-oai
- #26434 Preserve hook trust bypass in codex exec threads @abhinav-oai
- #26245 exec-server: default remote transport to Noise @viyatb-oai
- #28383 [codex] Load API curated marketplace by auth @felixxia-oai
- #27958 [codex] Make plugin details capability aware @felixxia-oai
- #28367 Use ApiPathString in app-server filesystem permission paths @anp-oai
- #28421 [codex] Bind shell snapshots to retained thread environments @pakrym-oai
- #28429 [codex] Add interruptible sleep tool @pakrym-oai
- #28441 [codex] Use expect in integration tests @pakrym-oai
- #28163 [codex] Use local environment for user shell commands @pakrym-oai
* Seed Termux release automation
* Prepare Termux rust-v0.141.0
---------
Co-authored-by: sayan-oai <sayan@openai.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: William Allen <wallentx@users.noreply.github.com>
* checkpoint: into wallentx/termux-target from release/0.142.0 @ 8f4b05f9cc47 (#244)
* [codex] Add optional IDs to response items (#28812)
## Why
`ResponseItem` variants do not have a consistent internal ID shape: some
variants carry required IDs, some carry optional IDs, and some cannot
represent an ID at all. The existing fields also use inconsistent serde,
TypeScript, and JSON-schema annotations. A single enum-level access path
is needed before history recording can assign and retain IDs.
This PR establishes that internal model only. It intentionally does not
generate or serialize IDs; allocation and wire persistence are isolated
in the stacked follow-up.
## What changed
- Give every concrete `ResponseItem` variant an `Option<String>` ID
field.
- Apply the same internal-only annotations to every ID field:
`#[serde(default, skip_serializing)]`, `#[ts(skip)]`, and
`#[schemars(skip)]`.
- Add `ResponseItem::id()` and `ResponseItem::set_id()` as the shared
accessors.
- Preserve IDs when history items are rewritten for truncation.
- Adapt consumers that previously assumed reasoning and image-generation
IDs were required.
- Regenerate app-server schemas so the hidden fields are represented
consistently.
The serde catch-all `ResponseItem::Other` remains ID-less because it
must remain a unit variant.
## Test plan
- `cargo check --tests -p codex-core -p codex-api -p codex-rollout-trace
-p codex-image-generation-extension`
- `just test -p codex-protocol`
- `just test -p codex-app-server-protocol`
- `just test -p codex-api -p codex-rollout-trace -p
codex-image-generation-extension`
- `just test -p codex-core event_mapping`
* fix(install): support older awk checksum parsing (#28784)
## Why
The standalone installer validates package checksums with an awk
interval expression. Older mawk releases do not support that expression,
so they reject valid 64-character digests and report that the release
manifest is missing an entry. This affects both x64 and ARM64 systems on
common Debian-derived environments.
Fixes #24219.
## What Changed
Replace the awk interval expression with an explicit length check plus
rejection of non-hexadecimal characters. This preserves the existing
SHA-256 validation and lowercase normalization while working with older
awk implementations.
## How to Test
1. Build and run the checksum predicate with mawk 1.3.4 20121129.
2. Confirm the old interval predicate rejects a valid 64-character
digest.
3. Confirm the updated predicate accepts that digest.
4. Put the old mawk binary first on PATH as awk and run
scripts/install/install.sh with an isolated HOME, CODEX_HOME, and
CODEX_INSTALL_DIR.
5. Confirm Codex installs successfully and the installed binary reports
version 0.140.0.
6. Verify the predicate rejects wrong-length digests, non-hexadecimal
digests, and entries for another asset while accepting uppercase
hexadecimal digests.
* [codex] Use unique IDs for realtime-routed turns (#28826)
## Why
A durable realtime voice orchestrator can reconnect and resume through
multiple fresh `Session` instances. Realtime handoffs were using the
Session-local `auto-compact-N` counter as their turn identity, but that
counter restarts at zero for every resumed Session. The durable thread
could therefore accumulate duplicate turn IDs, violating the uniqueness
assumptions made by app-server and web clients. In Codex Apps, a new
delegated response stream could be attached to an older turn with the
same ID, placing live output higher in history and putting turn-scoped
actions at risk.
Persisted rollout and reconstructed model-context order were already
correct because raw response items remain append-only and chronological.
This change restores unique identity for reconstructed and live turn
surfaces.
## What changed
- Generate a UUIDv7 specifically for each realtime-routed delegation.
- Leave the existing `auto-compact-N` identity path unchanged for actual
internal auto-compaction turns.
- Extend the inbound realtime handoff integration test to require a UUID
turn ID from `turn/started`.
## Verification
- `just test -p codex-core inbound_handoff_request_starts_turn`
- `just fix -p codex-core`
- `just fmt`
* [codex] control automatic realtime handoff delivery (#27986)
## What
Built on the realtime speech-control plumbing merged in #27917.
- Add optional `codexResponseHandoffPrefix` to `thread/realtime/start`.
- Apply that prefix only to automatic V1 commentary sent through
`conversation.handoff.append`; final answers remain unprefixed.
- Add opt-in `clientManagedHandoffs`. When true, core suppresses
automatic response handoffs and completion output so delivery is
controlled by explicit client append APIs.
- Preserve existing automatic behavior by default.
`codexResponsesAsItems: true` continues to select item routing when
client-managed mode is disabled.
## Why
Voice clients need two delivery policies: automatic background context
with silent commentary instructions and fully client-owned handoffs.
Phase-aware prefixing keeps routine commentary silent without
suppressing the final answer, while client-managed mode lets an app
decide exactly which updates to append.
## Validation
- `just fmt`
- `cargo test -p codex-app-server-protocol
serialize_thread_realtime_start`
- `RUST_MIN_STACK=16777216 cargo test -p codex-core --test all
conversation_handoff_persists_across_item_done_until_turn_complete`
- `RUST_MIN_STACK=16777216 cargo test -p codex-app-server --test all
webrtc_v1_client_managed_handoffs_disable_automatic_output`
- `RUST_MIN_STACK=16777216 cargo test -p codex-app-server --test all
webrtc_v1_final_automatic_handoff_omits_silent_prefix`
- `cargo build -p codex-cli --bin codex`
- Local Codex Apps compatibility check: 43 focused webview tests passed,
and a live voice session routed through the source-built app-server.
The explicit `RUST_MIN_STACK` avoids a macOS Tokio test-worker stack
overflow seen with the default test environment.
* [codex] Support assistant realtime append text (#28836)
## Why
Frontend realtime voice continuity needs to replay a tiny
previous-session overlap as actual conversation items, including
assistant text. The app-server `thread/realtime/appendText` API already
carries a role through to the Rust realtime websocket layer, but the
shared role enum only accepted `user` and `developer`.
## What Changed
- Added `assistant` to `ConversationTextRole` and regenerated the
app-server schema/type fixtures.
- Added `output_text` as a realtime conversation content type.
- Updated realtime websocket item creation so assistant appendText emits
`content: [{ type: "output_text", text }]`, while user and developer
continue to emit `input_text`.
- Updated app-server docs and tests to cover assistant appendText
alongside the existing developer role behavior.
## Validation
- `just write-app-server-schema`
- `just fmt` (first sandboxed attempt failed because `uv` could not
access `~/.cache/uv`; reran with filesystem access and passed)
- `just test -p codex-api` passed: 126/126
- `just test -p codex-app-server-protocol` passed: 239/239, including
generated JSON/TypeScript fixture checks
- `just test -p codex-app-server` was started locally but stopped per
request after unrelated local sandbox/Seatbelt failures (`sandbox-exec:
sandbox_apply: Operation not permitted`) and one missing local `codex`
binary failure; CI should be faster and more authoritative for the full
suite.
* Refresh signed exec-server URLs on reconnect (#28374)
## Summary
- add a provider API that supplies a fresh signed WebSocket URL for each
remote exec-server connection
- refresh the signed URL after disconnects and retry once when a
handshake returns `401 Unauthorized`
- allow `EnvironmentManager` consumers to register remote environments
backed by the URL provider
## Tests
- `just test -p codex-exec-server -E
'test(remote_websocket_client_refreshes_url_after_unauthorized_handshake)
| test(remote_websocket_client_refreshes_url_after_disconnect)'` — 2
passed
- `cargo check -p codex-core-api` — passed
- `just fix -p codex-exec-server` — passed
- `just fix -p codex-core-api` — no test targets; no-op
- `just fmt` — passed
- `just test -p codex-exec-server` — 187 passed; 32 unrelated macOS
sandbox tests could not invoke nested `sandbox-exec` (`Operation not
permitted`)
* Expose selecte namespaces as direct model tools (#28825)
## Why
Som tools, such as history and notes, must remain top-level when MCP
deferral is enabled while staying unavailable through code-mode `exec`.
## What changed
- Added `features.code_mode.direct_only_tool_namespaces`.
- Classified matching MCP tools as `DirectModelOnly`.
- Kept those tools top-level in `code_mode_only`.
- Excluded them from `tool_search` deferral and the nested `exec`
surface.
- Updated the generated config schema.
## Validation
- `code_mode_only_exposes_direct_model_only_mcp_namespaces`
- `load_config_resolves_code_mode_config`
* [codex] Support plugin manifest path lists (#28790)
## Summary
Allow plugin manifests to declare `skills` as either a single path
string or an array of path strings in the core plugin loader.
## Why
Some plugin packages need to expose skills from more than one directory.
Before this change, `plugin.json` only accepted a single string for
`skills`, so manifests like this were ignored as an invalid `skills`
shape:
```json
{
"skills": ["./skills/abc", "./skills/edk"]
}
```
This keeps the existing single-string form working while adding support
for the list form. The final scope is intentionally limited to the core
plugin manifest/load path for `skills`; `apps`, file-backed
`mcpServers`, and the bundled plugin-creator assets are unchanged in
this PR.
## What changed
- Parse `skills` as either a string or an array of strings in
`plugin.json`.
- Store resolved skill paths as a list in `PluginManifestPaths`.
- Load manifest-declared skill roots in addition to the default
`./skills` root.
- Deduplicate exact duplicate skill roots before loading.
- Rely on existing skill-loader dedupe by canonical `SKILL.md` path for
overlapping roots such as `./skills` plus `./skills/abc`.
- Update plugin manifest tests to cover:
- single string `skills`
- list of string `skills`
- duplicate skill roots
- `./skills` as a manifest path
- explicit child roots like `./skills/abc` and `./skills/edk`
- overlapping-root dedupe
## Validation
- `just test -p codex-plugin`
- `just test -p codex-core-plugins`
- `just test -p codex-mcp-extension`
- `git diff --check`
* Record more path migration guidance for codex. (#28851)
Some common themes pulled out of both human and automated reviews from
the last couple of days' migrations to `PathUri` and
`LegacyAppPathString`.
* unified-exec: retain PathUri in command events (#28780)
## Why
App-server must report command events containing foreign-platform paths
without changing existing client or rollout path-string formats.
## What changed
- retain `PathUri` through exec command begin/end events
- convert cwd values to `LegacyAppPathString` at the app-server
compatibility boundary
- drop command actions with foreign paths and log them
- serialize rollout-trace cwd values using their inferred native path
representation
- restore Wine coverage for retained Windows cwd values and successful
completion
* [codex] Split plugin and skill warmup tracing (#28605)
## What changed
- promote plugin config loading to an info-level `plugins_for_config`
span
- promote skill config loading to an info-level `skills_for_config` span
- attach stable OpenTelemetry names to both spans
## Why
`session_init.plugin_skill_warmup` currently combines plugin loading and
skill loading, which makes cold-start traces unable to identify which
phase dominates. These child spans preserve the existing aggregate while
making the two costs independently visible.
Context:
https://openai.slack.com/archives/C0ARA9GF5D4/p1781639496496439?thread_ts=1781202444.891669&cid=C0ARA9GF5D4
## Impact
This is observability-only. It does not change plugin or skill loading
behavior.
## Validation
- `just test -p codex-core-skills -p codex-core-plugins` (347 passed)
- `just fmt`
* [codex] Pass plugin namespace into skill loading (#28608)
## What changed
- retain the parsed plugin manifest namespace on loaded plugins
- carry that namespace through `PluginSkillRoot` and `SkillRoot`
- use the provided namespace when qualifying plugin skill names
- include the namespace in the skills cache key
## Why
Plugin loading has already parsed `plugin.json`, but skill parsing
currently walks every `SKILL.md` ancestor and probes/reads the manifest
again to reconstruct the same namespace. Passing the parsed namespace
removes those repeated filesystem calls, which are particularly costly
on remote filesystems.
Context:
https://openai.slack.com/archives/C0ARA9GF5D4/p1781639496496439?thread_ts=1781202444.891669&cid=C0ARA9GF5D4
## Impact
Plugin skill names remain unchanged. A regression test uses a
deliberately different on-disk manifest name to verify that plugin roots
use the provided parsed namespace.
## Validation
- `just test -p codex-core-skills -p codex-core-plugins -p codex-plugin
-p codex-utils-plugins` (352 passed)
- `just fix -p codex-core-skills -p codex-core-plugins -p codex-plugin
-p codex-utils-plugins`
- `just fmt`
* [codex] add rollout token budget configuration (varlength 1/N) (#28746)
## What
This PR defines the structured configuration contract for shared rollout
token budgets (across ALL agent threads under 1 rollout).
```toml
[features.rollout_budget]
enabled = true
limit_tokens = 100000
reminder_interval_tokens = 10000
sampling_token_weight = 1.0
prefill_token_weight = 0.1
```
The reminder interval defaults to 10% of the rollout limit. Sampling and
prefill weights default to `1.0`.
## Scope
This PR only defines and validates configuration. It does not track
usage, inject reminders, or stop a rollout. Accounting and reminders are
implemented in the stacked follow-up #28494.
The existing `token_budget` feature remains unchanged. `rollout_budget`
has its own feature key and configuration type.
## Tests
The config test verifies that the structured fields resolve into
`RolloutBudgetConfig` and do not enable the existing `token_budget`
feature.
Local checks:
- `just write-config-schema`
- `just test -p codex-core load_config_resolves_rollout…
…nt/wallentx_termux-target_from_release_0.143.0_8317ef5b5db6 # Conflicts: # .github/workflows/rust-release.yml # codex-rs/Cargo.toml
unemployabot
Bot
deleted the
checkpoint/wallentx_termux-target_from_release_0.143.0_8317ef5b5db6
branch
July 6, 2026 20:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Termux release checkpoint
release/0.143.08317ef5b5db6f778f6f5a8425bfc253962e2621fwallentx/termux-targetThis PR carries release-train conflict fixes and follow-up changes back into the reusable Termux patch branch.
Release-only workflow files and metadata under
.githubwere restored to the destination branch versions before opening this PR.