Termux rust-v0.138.0 - #200
Merged
Merged
Conversation
- The Python SDK now supports first-class authentication, including API key login, ChatGPT browser and device-code flows, account inspection, and logout APIs. (openai#23093) - Python turn APIs are easier to use for text-only workflows: you can pass a plain string as input, and handle-based runs now return a richer `TurnResult` with collected items, timing, and usage data. (openai#23151, openai#23162) - `codex exec resume` now accepts `--output-schema`, so resumed automations can keep session context while still enforcing structured JSON output. (openai#23123) - TUI startup is faster because terminal capability probes are now batched instead of waiting on several serial checks before the first interactive frame. (openai#23175) - Remote executor registration can now use standard Codex auth instead of a separate registry credential flow. (openai#22769) - App-server turns can preserve requested image fidelity, including original-resolution local images, across user inputs and image-producing tools. (openai#20693) ## Bug Fixes - Goal continuations now stop when they hit usage limits or a repeated blocker instead of looping and burning more tokens, and completion responses phrase usage more naturally. (openai#23094, openai#22907) - The session picker is easier to trust: renamed threads now show `name (thread-id)` in resume hints, and pasted text works in the picker search box. (openai#23234, openai#23338) - Multi-session TUI flows are more reliable: in-progress MCP calls stay marked as active during replay, and elicitation replies are sent back to the thread that requested them. (openai#23236, openai#23241) - Remote sessions now keep websocket connections alive and show repo-relative diff paths again instead of `/tmp/...`-prefixed paths. (openai#23226, openai#23261) - Windows installs are more robust: `codex doctor` now detects npm-managed installs correctly, and MSVC release binaries no longer depend on separately installed VC++ runtime DLLs. (openai#22967, openai#22905) - TUI polish fixes include immediate shutdown feedback on exit, hiding the ChatGPT usage link for non-OpenAI providers, and keeping a cleared Fast tier from reappearing after side-thread resume. (openai#23323, openai#23127, openai#23121) ## Documentation - The Python SDK docs, FAQ, and examples were refreshed around the new auth flow and turn APIs, with clearer setup guidance and simpler text-only examples. (openai#22941, openai#23093, openai#23151, openai#23162) ## Chores - Memory summaries are now versioned and rebuilt when the stored format is stale, which should keep long-lived memory context leaner and more predictable. (openai#23148) ## Changelog Full Changelog: openai/codex@rust-v0.131.0...rust-v0.132.0 - openai#20693 Preserve image detail in app-server inputs @fjord-oai - openai#22891 tui: pass active permission profiles through app commands @bolinfest - openai#22924 app-server-protocol: remove PermissionProfile from API @bolinfest - openai#22941 [codex] Refine Python SDK user-facing docs @aibrahim-oai - openai#22967 Fix Windows doctor npm root probe @etraut-openai - openai#22920 core: set permission profiles from snapshots @bolinfest - openai#22939 [codex] Split Python SDK helper logic @aibrahim-oai - openai#22907 Improve goal completion usage reporting @etraut-openai - openai#23030 test: construct permission profiles directly @bolinfest - openai#22769 exec-server: support auth-backed remote executor registration @miz-openai - openai#22946 [codex] preserve MCP result meta in McpToolCallItemResult @miaolin-oai - openai#23069 multiagent: trim model-visible description, cap to 5 models @sayan-oai - openai#22913 [1 of 4] tui: route primary settings writes through app server @etraut-openai - openai#23093 sdk/python: add first-class login support @aibrahim-oai - openai#23151 [codex] Return TurnResult from Python turn handles @aibrahim-oai - openai#23147 Make multi-agent v2 tool namespace configurable @jif-oai - openai#23036 test: reduce core sandbox policy test setup @bolinfest - openai#23162 [codex] Accept string input for Python turns @aibrahim-oai - openai#23226 Add exec-server websocket keepalive @starr-openai - openai#23148 Densify and version memory summaries @jif-oai - openai#22448 [codex] Add installed-plugin mention API @xli-oai - openai#23288 chore: goal ext skeleton @jif-oai - openai#23291 Make extension lifecycle hooks async @jif-oai - openai#23293 feat: add extension event sink capability @jif-oai - openai#23295 chore: isolate thread goal storage behind GoalStore @jif-oai - openai#23301 chore: goal resumed metrics @jif-oai - openai#23305 chore: make token usage async @jif-oai - openai#23306 Emit goal update events from goal extension tools @jif-oai - openai#23121 tui: keep cleared Fast tier from reappearing after side-thread resume @etraut-openai - openai#23123 Support --output-schema for exec resume @etraut-openai - openai#23128 Fix TUI stream cleanup after turn errors @etraut-openai - openai#23127 Hide ChatGPT usage link for non-OpenAI status @etraut-openai - openai#23175 [1 of 2] Optimize TUI startup terminal probes @etraut-openai - openai#22706 [codex] Remove legacy shell output formatting paths @pakrym-oai - openai#23332 nit: read prompt @jif-oai - openai#22905 windows: link MSVC release binaries with static CRT @iceweasel-oai - openai#23323 fix(tui): show shutdown feedback on exit @fcoury-oai - openai#23261 Fix remote turn diff display roots @starr-openai - openai#22569 Simplify legacy Windows sandbox ACL persistence @iceweasel-oai - openai#23273 Upload rust full CI JUnit reports @starr-openai - openai#22893 fix: harden plugin creator sharing validation @efrazer-oai - openai#23094 goal: pause continuation loops on usage limits and blockers @etraut-openai - openai#23234 Clarify resume hints for renamed threads @etraut-openai - openai#23241 TUI: route elicitation responses to request thread @etraut-openai - openai#23236 TUI: replay in-progress MCP calls as started @etraut-openai - openai#23088 goals: keep pause transitions explicit @etraut-openai - openai#23338 feat(tui): handle paste in session picker @fcoury-oai - openai#23335 feat(app-server): add optional thread_id to experimentalFeature/list @owenlin0
(cherry picked from commit 337303c)
Termux rust-v0.132.0
…nt/wallentx_termux-target_from_release_0.132.0_a234e07f3bcf # Conflicts: # .github/workflows/rust-release.yml # codex-rs/Cargo.toml
…et_from_release_0.132.0_a234e07f3bcf checkpoint: into wallentx/termux-target from release/0.132.0 @ a234e07
Termux rust-v0.133.0-alpha.1
…nt/wallentx_termux-target_from_release_0.133.0_5180a72112f6 # Conflicts: # .github/workflows/rust-release.yml # codex-rs/Cargo.toml
…et_from_release_0.133.0_5180a72112f6 checkpoint: into wallentx/termux-target from release/0.133.0 @ 5180a72
Termux rust-v0.133.0-alpha.3
…nt/wallentx_termux-target_from_release_0.133.0_cf55321c25b5 # Conflicts: # codex-rs/Cargo.toml
…et_from_release_0.133.0_cf55321c25b5 checkpoint: into wallentx/termux-target from release/0.133.0 @ cf55321
- Goals are now enabled by default, backed by dedicated storage, and track progress across active turns. (openai#23300, openai#23685, openai#23696, openai#23732) - `codex remote-control` now runs like a foreground command, waits for readiness, reports machine status, and keeps explicit daemon-style `start`/`stop` commands. (openai#22878) - Permission profiles gained list APIs, inheritance, managed `requirements.toml` support, runtime refresh behavior, and stronger Windows sandbox integration. (openai#22928, openai#23412, openai#22270, openai#23433, openai#22931, openai#23715) - Plugin discovery is easier to inspect, with marketplace-aware list output, installed versions, visible marketplace roots, and remote collection support. (openai#23372, openai#23584, openai#23727, openai#23730) - Extensions can observe more lifecycle events, including subagent start/stop, tool execution, turn metadata, and async approval/turn processing. (openai#22782, openai#22873, openai#23309, openai#23688, openai#23690, openai#23692) ## Bug Fixes - Fixed TUI startup choosing the wrong working directory when reusing a local app-server socket. (openai#23538) - Fixed plan-mode free-form answers so modified Enter keys, like Shift+Enter, no longer submit unexpectedly. (openai#23536) - Removed stale background terminal poll events after a process exits. (openai#23231) - Preserved raw code-mode exec output unless an explicit output token limit is requested. (openai#23564) - Made AGENTS instruction loading more reliable, including local global reads and warnings for invalid UTF-8 instead of silent drops. (openai#23343, openai#23232) - Fixed app-server startup/shutdown races, empty resume/fork paths, plugin upgrade failures, and realtime v1 websocket compatibility. (openai#23516, openai#23578, openai#23400, openai#23356, openai#23771) ## Documentation - Added clearer plugin-creator guidance for updating and reinstalling local personal plugins. (openai#23542) - Expanded app-server/API docs and schema coverage around managed permission profile requirements. (openai#23433, openai#23555) ## Chores - Added a canonical Codex package archive pipeline and moved installers, npm packages, DotSlash, and SDK runtimes toward that shared layout. (openai#23513, openai#23582, openai#23586, openai#23596, openai#23635, openai#23636, openai#23637, openai#23638, openai#23786) - Fixed Linux Python runtime wheel tags so glibc-based systems can install the runtime artifacts. (openai#21812) - Improved release and CI reliability with package-builder tests, prebuilt resource packaging, DotSlash zstd handling, platform-sharded Rust tests, and Codex Linux release runners. (openai#23760, openai#23759, openai#23752, openai#23358, openai#23761) ## Changelog Full Changelog: openai/codex@rust-v0.132.0...rust-v0.133.0 - openai#23343 codex: route global AGENTS reads through LOCAL_FS @starr-openai - openai#22380 fix: default unknown tool schemas to empty schemas @celia-oai - openai#23309 Add tool lifecycle extension contributor @jif-oai - openai#23253 Reduce rust-ci-full Windows nextest timeout flakes @starr-openai - openai#22878 Improve `codex remote-control` CLI UX @owenlin0 - openai#21812 Publish Linux runtime wheels with glibc-compatible tags @aibrahim-oai - openai#22709 [codex] Trim unused TurnContextItem fields @pakrym-oai - openai#23353 Include plugin id in plugin MCP tool metadata @mzeng-openai - openai#22728 [codex] Move pending input into input queue @pakrym-oai - openai#23371 fix(tui): warn on unsupported iTerm2 pet versions @fcoury-oai - openai#23376 [codex-analytics] preserve user thread source for exec threads @marksteinbrick-oai - openai#23360 app-server: use profile ids in v2 permission params @bolinfest - openai#23384 [codex] Remove external websocket session resets @pakrym-oai - openai#22721 cleanup: Remove skill env var dependency prompting @xl-openai - openai#23389 Remove ToolSearch feature toggle @sayan-oai - openai#23080 [1 of 7] Add thread settings to UserInput @etraut-openai - openai#23081 [2 of 7] Remove UserInputWithTurnContext @etraut-openai - openai#23075 [3 of 7] Remove UserTurn @etraut-openai - openai#23396 [codex] Extract turn skill and plugin injections @pakrym-oai - openai#23356 fix(plugins): keep version upgrades additive @iceweasel-oai - openai#22508 [5 of 7] Replace OverrideTurnContext with ThreadSettings @etraut-openai - openai#22086 CI: Customize v8 building @cconger - openai#23390 Remove explicit connector tool undeferral @sayan-oai - openai#22928 core: expose permission profile picker metadata @viyatb-oai - openai#23352 Preserve context baselines for full-history agent forks @jif-oai - openai#23300 feat: dedicated goal DB @jif-oai - openai#22835 Remove ToolsConfig from tool planning @jif-oai - openai#22870 Add `body_after_prefix` auto-compact token limit scope @jif-oai - openai#23144 Defer v1 multi-agent tools behind tool search @jif-oai - openai#23409 [codex] Allow empty turn/start requests @pakrym-oai - openai#23388 [codex] Move hook request plumbing into hook runtime @pakrym-oai - openai#23405 [codex] Preserve steer input as user input @pakrym-oai - openai#22914 [2 of 4] tui: route app and skill enablement through app server @etraut-openai - openai#23397 [codex] Make contextual user fragments dyn-renderable @pakrym-oai - openai#23475 chore: namespace v1 sub-agent tools @jif-oai - openai#23493 Make `deny` canonical for filesystem permission entries @viyatb-oai - openai#22929 Harden CLI rate limit window labels @ase-openai - openai#22782 Add SubagentStart hook @abhinav-oai - openai#23513 build: add Codex package builder @bolinfest - openai#23369 Make local environment optional in EnvironmentManager @starr-openai - openai#23327 Refactor exec-server websocket pump @starr-openai - openai#23536 fix(tui): preserve modified enter in plan questions @fcoury-oai - openai#23400 Fix empty rollout path app-server handling @wiltzius-openai - openai#23551 Route local-only app-server gating through processors @starr-openai - openai#23372 Split plugin install discovery into list and request tools @mzeng-openai - openai#23516 fix: serialize unix app-server startup @efrazer-oai - openai#22169 [codex] Honor role-defined spawn service tiers @aibrahim-oai - openai#23555 Add CUA requirements subsection for locked computer use @adams-oai - openai#23538 Fix: TUI starting in wrong CWD @canvrno-oai - openai#23526 build: fetch rg for Codex packages @bolinfest - openai#23573 Remove unused ARC monitor path @mzeng-openai - openai#23576 test: fix multi-agent service tier assertion @bolinfest - openai#23541 build: default Codex package target and output @bolinfest - openai#23358 Fan out rust-ci-full nextest by platform @starr-openai - openai#23593 feat: expose codex-app-server version flag @bolinfest - openai#23412 feat: add permission profile list api @viyatb-oai - openai#23535 Move plugin and skill warmup into session startup @aibrahim-oai - openai#23231 Fix stale background terminal poll events @etraut-openai - openai#23564 [codex] Preserve raw code-mode exec output by default @aibrahim-oai - openai#23232 Warn on invalid UTF-8 in AGENTS.md files @etraut-openai - openai#23584 feat: Add vertical remote plugin collection support @xl-openai - openai#23586 build: package prebuilt Codex entrypoints @bolinfest - openai#23582 ci: build Codex package archives in release workflow @bolinfest - openai#23596 runtime: detect Codex package layout @bolinfest - openai#23500 add encryptedcontent to functioncalloutput @sayan-oai - openai#23633 Migrate exec-server remote registration to environments @richardopenai - openai#23451 Add timeout for remote compaction requests @jif-oai - openai#23667 feat: rename 1 @jif-oai - openai#23669 feat: rename 3 @jif-oai - openai#23668 feat: rename 2 @jif-oai - openai#23675 fix: main @jif-oai - openai#23685 feat: wire goal extension tools to the dedicated goal store @jif-oai - openai#23690 feat: async approval contrib @jif-oai - openai#23692 feat: async turn item process @jif-oai - openai#23688 feat: expose turn-start metadata to extensions @jif-oai - openai#23605 [codex] Hide deferred tools from code mode prompt @pakrym-oai - openai#23634 runtime: use install context for bundled bwrap @bolinfest - openai#23635 release: publish Codex package archive checksums @bolinfest - openai#23592 feat: Add btw alias for side slash command @anp-oai - openai#23696 feat: account active goal progress in the goal extension @jif-oai - openai#23176 [2 of 2] Start fresh TUI thread in background @etraut-openai - openai#23578 fix(app-server): speed up shutdown @fcoury-oai - openai#22896 windows-sandbox: add resolved permissions helper @bolinfest - openai#23502 Add thread/settings/update app-server API @etraut-openai - openai#23507 Sync TUI thread settings through app server @etraut-openai - openai#23666 feat: add turn_id and truncation_policy to extension tool calls @jif-oai - openai#23636 install: consume Codex package archives @bolinfest - openai#23717 [codex] Preserve failed goal accounting flushes @jif-oai - openai#23655 add standalone websearch api client @sayan-oai - openai#23724 Fix thread settings clippy failure @etraut-openai - openai#23637 npm: ship platform packages in Codex package layout @bolinfest - openai#23729 fix(config): resolve cloud requirements deny-read globs @viyatb-oai - openai#23638 dotslash: publish Codex entrypoints from package archives @bolinfest - openai#22918 windows-sandbox: send permission profiles to elevated runner @bolinfest - openai#23735 windows-sandbox: share bundled helper lookup @bolinfest - openai#18868 Add MITM hook config model @evawong-oai - openai#22270 feat(permissions): resolve permission profile inheritance @viyatb-oai - openai#23719 cli: add strict config to exec-server @bolinfest - openai#23542 [skills] Create a personal update flow for plugin creator @caseychow-oai - openai#21272 Support compact SessionStart hooks @abhinav-oai - openai#20659 Wire MITM hooks into runtime enforcement @evawong-oai - openai#23752 release: use DotSlash zstd for package archives @bolinfest - openai#22923 windows-sandbox: drive write roots from resolved permissions @bolinfest - openai#23761 chore: use Codex Linux runners for Rust releases @bolinfest - openai#23759 release: package prebuilt resource binaries @bolinfest - openai#23167 windows-sandbox: feed setup from resolved permissions @bolinfest - openai#22931 core: refresh active permission profiles at runtime @viyatb-oai - openai#22873 Add SubagentStop hook @abhinav-oai - openai#23727 feat(plugins): tabulate plugin list output @caseychow-oai - openai#23732 Make goals feature on by default and no longer experimental @etraut-openai - openai#23537 Honor client-resolved service tier defaults @shijie-oai - openai#23771 [codex] Fix realtime v1 websocket compatibility @guinness-oai - openai#23764 Remove Windows sandbox resource stamping @iceweasel-oai - openai#23730 [codex] List marketplaces considered by plugin discovery @caseychow-oai - openai#23760 ci: run Codex package builder tests @bolinfest - openai#23737 [codex] Add plugin id to MCP tool call items @mzeng-openai - openai#18240 Use named MITM permissions config @evawong-oai - openai#23774 [codex] Reject read-only fallback with approvals disabled @viyatb-oai - openai#23714 windows-sandbox: add profile-native elevated APIs @bolinfest - openai#23433 feat: support managed permission profiles in requirements.toml @viyatb-oai - openai#23715 core: pass permission profiles to Windows runner @bolinfest - openai#23786 sdk: launch packaged Codex runtimes @bolinfest
Termux rust-v0.133.0
…nt/wallentx_termux-target_from_release_0.133.0_7bcabc22ebc3
…et_from_release_0.133.0_7bcabc22ebc3 checkpoint: into wallentx/termux-target from release/0.133.0 @ 7bcabc2
## Summary - Restore separate release symbol archives for macOS, Linux, and Windows binaries. - Build release binaries with `line-tables-only` debuginfo instead of full debuginfo. - Strip Unix distribution binaries after extracting symbols, preserve Windows PDBs, and keep symbol archives available to the release job. - Strip the packaged Linux `bwrap` binary before hashing it so the embedded digest matches the distributed bytes. ## Root cause The first symbol-artifact implementation enabled `CARGO_PROFILE_RELEASE_DEBUG=full`. In the June 2 release runs, macOS ARM primary builds reached the 90-minute timeout while still inside `Cargo build`. After the symbol changes were reverted, the same primary build completed in about 22 minutes. The archive step itself completed in tens of seconds when reached. Rust's `line-tables-only` debuginfo level preserves function names and source locations for symbolication without emitting the heavier variable and type information from full debuginfo. ## Validation - Ran `just fmt` from `codex-rs`. - Ran `just test-github-scripts` from the repository root: 23 tests passed. - Ran `bash -n` and `shellcheck` on `.github/scripts/archive-release-symbols-and-strip-binaries.sh`. - Parsed both modified workflows as YAML and ran `git diff --check`. - Built a macOS release smoke binary with `line-tables-only`, archived its dSYM through the restored script, stripped the production binary, and verified that `atos` resolves `symbol_smoke_function` to `main.rs:2`. - Ran Linux archive-script control-flow coverage with stubbed `objcopy` and `strip` commands. - Ran Windows PDB archive staging coverage and verified underscore-emitted Rust PDB names are staged under shipped hyphenated binary names. ## Follow-up The release workflow only runs for tags or manual dispatches, so CI cannot dry-run the full release matrix on this PR. The next release run will verify runner time and memory behavior under `line-tables-only`.
## Why Remote-control app-server sessions can reconnect every 5-7 seconds when the shared transport-event queue fills. The queue's consumer handled `ConnectionClosed` by awaiting all in-flight RPCs for the disconnected connection. A stuck RPC therefore blocked processing of replacement connection and initialize events until remote-control forwarding hit its five-second timeout and reconnected again. Related issue: N/A (internal remote-control incident investigation). ## What Changed - Split fast RPC admission closure from draining: `ConnectionRpcGate::close()` rejects queued and future RPCs, while `shutdown()` continues waiting for RPCs that already started. - Close a disconnected connection's RPC gate before spawning the existing RPC drain and resource cleanup in a tracked background task, so the transport-event consumer remains available without waiting for active RPCs. - Reap completed cleanup tasks during normal operation, drain them during graceful shutdown, and abort them during forced shutdown. - Add regression coverage for closing with an active RPC, rejecting post-close requests without polling them, and preserving the existing shutdown wait behavior. ## Verification `just test -p codex-app-server --lib connection_rpc_gate` passes all 6 tests, including the new close-versus-drain regression coverage.
Termux rust-v0.138.0-alpha.7
…nt/wallentx_termux-target_from_release_0.138.0_2ae55f9a4229
…et_from_release_0.138.0_2ae55f9a4229 checkpoint: into wallentx/termux-target from release/0.138.0 @ 2ae55f9
## Summary - Keep the existing `x-codex-window-id` HTTP header unchanged. - Also send the same window ID in Responses `client_metadata`, allowing supported backend paths to surface it as `x-client-meta-x-codex-window-id`. - Cover normal HTTP Responses and remote compaction v2 requests without changing window generation or compaction behavior. ## Why In the `2026-06-06T23` production hour, all 28,729 HTTP compaction requests had `window_id` in `x-codex-turn-metadata`, but only 73 retained the direct `x-codex-window-id` header. The request-body `client_metadata` path is already used for installation ID and is preserved through supported Responses API paths. This is additive metadata only. It does not change the direct header, request count, model input, compaction routing, window generation, or user response behavior. Legacy `/v1/responses/compact` is intentionally unchanged. Its current server-side `CompressBody` schema does not accept `client_metadata` and rejects unknown fields, so supporting that path requires a backend schema change before the Codex client can safely send this field. ## Validation - Current head: `219baef3c`, rebased onto `origin/main` at `26d932983`. - The post-rebase diff remains limited to the original five files (`22` insertions, `6` deletions); the legacy experiment remains fully reverted. - `just test -p codex-core responses_stream_includes_subagent_header_on_review`: passed; validates normal HTTP Responses metadata. - `just test -p codex-core remote_compact_v2_reuses_compaction_trigger_for_followups`: passed; validates remote compaction v2. - `just test -p codex-core remote_manual_compact_chatgpt_auth_reuses_service_tier_and_prompt_cache_key`: passed; validates that legacy compact keeps its accepted payload shape. - `just test -p codex-core remote_manual_compact_api_auth_omits_service_tier_and_reuses_prompt_cache_key`: passed; validates the legacy API-key payload as well. - `just fmt`: passed; an unrelated root `justfile` rewrite produced by the formatter was discarded. - `git diff --check origin/main...HEAD`: passed. The focused server pytest could not start in the local monorepo environment because test setup is missing the `dotenv` module. Server source and tests explicitly show that `CompressBody` omits `client_metadata` and `/v1/responses/compact` returns HTTP 400 for unknown body fields.
## Why Compaction analytics adds retained image count and compaction summary output tokens for v1.5 specifically. ## What changed - Add nullable `retained_image_count` and `compaction_summary_tokens` fields to `codex_compaction_event`. - Populate them only for `responses_compaction_v2`: retained images come from the retained v2 compacted history, and summary tokens come from `response.completed.token_usage.output_tokens`. - Leave local and legacy remote compaction events as `null` for these detail fields. ## Verification - `just fmt` - `just fix -p codex-core` - `just test -p codex-core build_v2_compacted_history_counts_retained_input_images` - `git diff --check`
## Why Importing large external-agent session histories currently starts a full live Codex thread for every imported session. This initializes unrelated runtime systems and repeats expensive transcript, metadata, hashing, and ledger work. On a 50-session, 238 MiB fixture, the existing path took roughly 70 seconds to complete the import and 77 seconds end to end. ## What changed - Persist imported sessions directly through `ThreadStore` instead of starting full live threads. - Process imports through a bounded five-session pipeline. - Parse, extract, and hash each source file in one pass. - Move blocking source preparation onto the blocking thread pool. - Reuse prepared content hashes and update the import ledger once per batch. - Avoid metadata readback for newly written rollouts. - Preserve imported conversation history and visible thread metadata. - Keep the implementation out of `codex-core` and avoid changes to the public `ThreadStore` trait. ## Performance For the same 50-session, 238 MiB fixture: | Path | Import completion | End to end | | --- | ---: | ---: | | Existing import | 69.61s | 76.62s | | This change | 5.95s | 6.58s | All 50 sessions imported successfully with no warnings or contention signals. ## Validation - `just test -p codex-external-agent-sessions` - `just test -p codex-app-server external_agent_config_import` - Verified imports do not initialize unrelated required MCP servers. - Verified previously imported source versions are skipped and changed sources can be imported again. - Verified imported rollouts remain readable through thread listing and history APIs.
…27009) ## Summary - Follow-up to openai#26417 and openai#26631 - Add `marketplaceSource` to `codex plugin marketplace list --json` entries for configured marketplaces - Reuse the existing `marketplaceSource` shape from `codex plugin list --json` - Keep human-readable marketplace list output unchanged - Add CLI coverage for configured local and git marketplace sources Example: ```json { "marketplaces": [ { "name": "debug", "root": "/path/to/.codex/.tmp/marketplaces/debug", "marketplaceSource": { "sourceType": "git", "source": "https://example.com/acme/agent-skills.git" } } ] } ``` ## Validation - `just fmt` - `just fix -p codex-cli` - `just test -p codex-cli marketplace_list` - `just test -p codex-cli`
## Why
These workflows currently hard-code the `codex` runner group and custom
runner labels. That makes the same workflow definitions less portable
across repository copies or renamed repos, even though the runner fleet
follows the repository name scheme. Template the runner identities from
the repository name so `openai/codex` still resolves to the existing
`codex-*` runners while other repos can use their own `<repo>-*` runner
names.
## What Changed
- Replaced custom runner `group` values such as `codex-runners` with
`${{ github.event.repository.name }}-runners`.
- Replaced custom runner labels such as `codex-linux-x64` and
`codex-windows-arm64` with `${{ github.event.repository.name }}-...`.
- Covered direct `runs-on` objects, matrix `runs_on` entries, reusable
workflow runner inputs, and release runner labels.
## Verification
- Parsed all `.github/workflows/*.yml` files as YAML with Ruby.
- Searched `.github/workflows` to confirm no hardcoded runner-field
`codex-runners` or `codex-*` labels remain.
## Why Auto Review should remain the effective approval reviewer when settings cross runtime boundaries. A config or app-server round trip must not change the reviewer identity, and delegated work must not silently fall back to user review. This requires both a stable canonical serialized value and propagation of the effective setting. `auto_review` is the canonical value across protocol and app-server output, while `guardian_subagent` remains accepted as backward-compatible input. ## What changed - serialize `ApprovalsReviewer::AutoReview` consistently as `auto_review` across core protocol and app-server v2 - continue accepting `guardian_subagent` when reading existing config or client requests - carry the active turn's approval reviewer into spawned agents - update config/debug expectations and add delegated-task regression coverage ## Scope This does not change Guardian policy or remove compatibility with existing `guardian_subagent` inputs. It preserves the selected reviewer across serialization, config reloads, app-server settings, and delegated task setup. Related Guardian changes are split independently: - openai#26231 adds denials and soft denials - openai#26334 retries transient reviewer failures - openai#26333 reuses narrowly scoped low-risk approvals - openai#26232 adds TUI denial recovery ## Validation - `just test -p codex-app-server-protocol` (224 passed) - regression coverage for delegated task reviewer propagation - serialization coverage for canonical `auto_review` output and legacy `guardian_subagent` input --------- Co-authored-by: saud-oai <saud@openai.com>
# Why Codex is doing a bit too much on my PRs that it's babysitting. In particular I'd like it to not interact with comment threads that involve other humans -- I should be the one doing human interaction. This is tricky because it's still very useful to be able to drop review comments myself and have Codex iterate on them. ## What This updates `.codex/skills/babysit-pr/SKILL.md` with an explicit GitHub state mutation policy.
## Summary - tighten the default multi-agent v2 root and subagent usage hints to bias toward local work - add a pre-call gate to the v2 spawn_agent description for independent, bounded, parallelizable subtasks ## Validation - just fmt - started just test -p codex-core, but it was interrupted before completion per follow-up request to commit and push immediately
Termux rust-v0.138.0-alpha.8
…nt/wallentx_termux-target_from_release_0.138.0_e82a4c4a5c22
…et_from_release_0.138.0_e82a4c4a5c22 checkpoint: into wallentx/termux-target from release/0.138.0 @ e82a4c4
|
Termux Android artifact ready for testing:
You must be signed in to GitHub with repository access to download Actions artifacts. |
wallentx
approved these changes
Jun 9, 2026
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 train
rust-v0.138.0rust-v0.138.0-termuxrelease/0.138.0wallentx/termux-targetThis PR is intentionally created from
wallentx/termux-targetwith the Termux release automation files copied fromdev, then targeted at the upstream release branch. If GitHub reports conflicts, resolve them manually by keeping the upstream release code while preserving the Termux compatibility fixes.Merging this PR is the manual approval gate. The release build workflow uploads the Android artifact to test; after merge, the deployment workflow attaches that exact artifact to
rust-v0.138.0-termuxand opens the checkpoint PR.Upstream notes
New Features
/appcommand 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. (feat(tui): add /app desktop handoff openai/codex#25638, Open Windows app workspaces via deep link openai/codex#26500)Altbindings, and model-defined effort levels now flow through in the order advertised by the model. (fix(tui): add reasoning effort fallback shortcuts openai/codex#25623, [codex] Support model-defined reasoning efforts openai/codex#26444, [codex] Use model-advertised reasoning effort order openai/codex#26446)--json, plugin list JSON includes marketplace source, and plugin detail data now exposes default prompts, remote MCP servers, and unavailable app templates. (Add JSON output for plugin subcommands openai/codex#26631, Expose configured marketplace source in plugin list JSON openai/codex#26417, Preserve remote plugin default prompts openai/codex#25887, fix(app-server): expose remote MCP servers in plugin read openai/codex#26453, [codex] Expose unavailable app templates in plugin detail openai/codex#26317)Bug Fixes
/goal editno longer submits early, idle auto-turns stay out of Plan mode, and goals stop auto-continuing after terminal turn failures. (Fix multiline paste in /goal edit openai/codex#26047, Gate automatic idle turns in Plan mode openai/codex#26147, Block active goals after terminal turn errors openai/codex#26690)/usr/bin/bash, shorter Linux proxy socket paths, and pre-refresh of expired OAuth-backed MCP credentials. ([codex] Add /usr/bin/bash shell fallback openai/codex#26538, [codex] Fix long proxy socket paths openai/codex#26553, fix(rmcp): refresh expired OAuth tokens before startup openai/codex#26482)AGENTS.mdfiles are picked up consistently. (Route AGENTS.md loading through environment filesystems openai/codex#26205, [codex] Preserve logical paths during AGENTS.md discovery openai/codex#26465)Documentation
Chores
resume --lastnow finds the newest matching session through the state DB first, which speeds up restore on large local histories. (Use state DB first forresume --lastopenai/codex#26462)Changelog
Full Changelog: openai/codex@rust-v0.137.0...rust-v0.138.0
/goalusage text for control commands openai/codex#26551 Fix/goalusage text for control commands @etraut-openairesume --lastopenai/codex#26462 Use state DB first forresume --last@charliemarsh-oaijust bench-smokefromjust test. openai/codex#26716 Removejust bench-smokefromjust test. @anp-oai