Skip to content

Codex fork 0.153.4

Choose a tag to compare

@Dirard Dirard released this 05 Sep 20:44

Codex fork 0.153.4

Built from fork commit f6073442d1. This release was rebased onto fork origin/main at 59acd25a94, based on upstream main at ddf04ad267, and includes the 0.153.3 and 0.153.4 fixes plus subsequent main-branch changes. The full review also covered the fork-only repository configuration carried on origin/main.

Upstream changes since 0.153.2

  • Updated GPT-6-Astra model availability and guidance for asynchronous questions.
  • Added interactive asynchronous questions in the TUI, including selectable and custom answers, with preserved state during history and queue navigation.
  • Improved Guardian authorization context, retained instructions, post-compaction reviews, and request-scoped approval decisions.
  • Added explicit root-turn identity for independent tasks and memory requests, and improved ordering of retained thread context.
  • Added managed WebMCP policy to the app-server API and extended persisted thread metadata.
  • Improved remote execution, Windows sandbox integration, Markdown copying, and model-picker presentation.

Go SDK

  • Regenerated stable and experimental schemas, bindings, and compatibility digests against the rebased app-server sources.
  • Added persisted daybreakEnabled thread metadata and its update parameter. Corrected the experimental-field inventory so stable-mode clients reject this experimental parameter before writing to the transport.
  • Added the managed allowWebmcp requirement.
  • Updated Guardian action paths to LegacyAppPathString, preserving foreign-platform and UNC path representation.
  • Existing typed resource clients expose these fields without additional wrapper methods. This upstream update changes payloads, not the set of RPC methods or notifications.
  • Corrected union-field generation across actual variants: compatible shapes are merged, required nullable values remain nullable while their keys stay required, and incompatible shapes retain their JSON representation instead of taking the first variant's type.
  • Generated wrappers backed by json.RawMessage or Optional[...] are now Go aliases, preserving the underlying JSON marshal and unmarshal methods. Calls with unset nullable named parameters omit the parameter payload.
  • Stable-mode clients now accept supported non-granular approval policies. Granular approval policy values and Daybreak fields remain experimental and continue to be rejected before transport in stable mode.

Go SDK compatibility note

Some previously incorrect generated field types necessarily changed to represent the existing protocol correctly. The app-server wire protocol itself is unchanged.

  • Nullable fields: ParsedCommand.Path, CommandAction.Path, PluginSource.Path, ResponseItem.Name, and ResponseItem.Status.
  • Fields now using json.RawMessage: McpServerElicitationRequestParams.RequestedSchema, ResponseItem.Action, ResponseItem.Arguments, ResponseItem.Content, SandboxPolicy.NetworkAccess, ThreadItem.Content, ThreadItem.DurationMs, ThreadItem.Result, and ThreadTimelineEntry.Item.

Applications accessing the raw fields directly should decode the appropriate variant with encoding/json. The generated aliases have the runtime type identity of their underlying Go targets, so reflection-based code should not expect a distinct generated named type.

Reliability fixes found during the full fork review

  • Local compaction now honors the minimum of three model-capacity retries even when the provider's configured stream retry count is zero, using the shared retry handler.
  • Starting a new compaction window clears the previous server-observed prefill baseline, so BodyAfterPrefix accounting follows the new compacted context. A stale prepared-window update still leaves the current baseline intact.
  • Repeated compaction without progress now returns ContextWindowExceeded through the normal task-error path, producing an error event and terminal failed status instead of a successful completion.
  • Direct-only MCP tools now have non-dispatching Code Mode stubs that return direct_tool_required, instead of an undefined JavaScript function. MCP tools explicitly omitted from Code Mode remain absent from both its callable tools and metadata.
  • Deferred non-V2 follow-ups capture their status cursor before starting, coordinate the previous completion watcher, and reliably report completion when Running/Completed updates coalesce or a follow-up starts after interruption. Interrupting a turn preserves pending trigger messages without silently restarting them.
  • Realtime streams install their final close callback before router publication and synchronize closed-state registration, preventing close races and stale session registrations.
  • Filtered subscriptions claim only matching pending notifications, preserving unmatched backlog order, deduplication, and byte accounting when concurrent thread-scoped flows share a routing key. Live notifications rejected by existing subscriptions also remain queued for the matching operation's later Wait.
  • JSONSchema now passes the schema object directly to turn/start; its name argument remains for source compatibility, and ObjectSchema defaults additionalProperties to false for strict output schemas.
  • LocalImage resolves relative paths once and uses the resulting absolute path for both validation and submission, preventing client and app-server working directories from selecting different files.
  • Stabilized the existing grandchild-context regression fixture so legitimate extra parent continuations do not receive a test-server 404. The context and ancestry assertions remain unchanged.

Fork maintenance

  • Restored the upstream assemble-codex-package development command.
  • Removed unused Bazel helper parameters left behind by the retired SDK runtime-layout implementation.
  • Removed the redundant single-binary Windows workflow; the existing fork release workflow supports targeted Windows builds with the complete runtime set.
  • Removed a forwarding-only tool-event helper without changing event handling.
  • Removed lifecycle bookkeeping used only to test its own declarations; generated lifecycle metadata checks and runtime behavior remain intact.
  • Made schema generation use the existing platform-aware Python interpreter.
  • Made release packaging verify the exact CLI version instead of accepting a matching substring.
  • Corrected an inherited MCP hook-output regression test to enforce the stricter global/per-tool output budget in both limit orderings.

Retained fork capabilities

  • Configurable byte and line truncation for function, custom, dynamic, MCP, and command output, including overlapping output budgets.
  • Custom providers and context/auto-compaction limits for typed and fallback agents; configurable plaintext messages for cross-provider delegation.
  • Inherited dynamic tools, cumulative per-turn spawn limits, quiet check_agent_status waits, and parent completion notifications.
  • Compaction headroom and progress checks, prompt-cache preservation, and tolerant parsing of malformed completed-response usage metadata.
  • The Go SDK's typed clients, protocol-mode selection, generated bindings, and strict compatibility handshake.

Packages

Each asset contains the complete runtime binary set for one target under bin/. Binary names do not have target suffixes.

  • Linux GNU/glibc: codex-package-x86_64-unknown-linux-gnu.tar.gz and codex-package-aarch64-unknown-linux-gnu.tar.gz, each containing codex, codex-app-server, codex-code-mode-host, codex-responses-api-proxy, and bwrap.
  • macOS: codex-package-x86_64-apple-darwin.tar.gz and codex-package-aarch64-apple-darwin.tar.gz, each containing codex, codex-app-server, codex-code-mode-host, and codex-responses-api-proxy.
  • Windows: codex-package-x86_64-pc-windows-msvc.zip, containing codex.exe, codex-app-server.exe, codex-code-mode-host.exe, codex-responses-api-proxy.exe, codex-command-runner.exe, and codex-windows-sandbox-setup.exe.

Upstream release notes: 0.153.3, 0.153.4.