Skip to content

Integrate current Codex base with opt-in durable agent mailboxes - #995

Open
GraciousGazelles wants to merge 10000 commits into
mainfrom
codex/w14939-integration-970111-20261025
Open

GraciousGazelles wants to merge 10000 commits into
mainfrom
codex/w14939-integration-970111-20261025

Conversation

@GraciousGazelles

Copy link
Copy Markdown
Collaborator

Summary

  • Carry the selected upstream base with the accepted MCP lifecycle cleanup and safe subagent-tail output update.
  • Add opt-in durable local agent mailboxes with typed request/reply and wait reporting, durable canonical history delivery, and replay/compaction handling while preserving the existing in-memory path.
  • Retain focused weekly rate-limit pacing, same-model transient capacity retry, and exact-model-scoped developer instruction overlays.
  • Run CI on standard GitHub-hosted runners and restore the required CodeQL gate.

Validation

  • Hosted focused overlay and configuration tests passed on the packaged source.
  • The x86_64 and AArch64 development packages built successfully, with binary version matching the package manifest; focused MCP cleanup tests passed.
  • Packages remain opt-in previews; this PR does not replace default launchers or claim existing-thread resume acceptance.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review ✅ Completed 2026-10-25T12:08:19.199443Z 342bd8b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the repository's build, packaging, and CI configurations, including bumping the Bazel version to 9.2.0, enabling transparent huge pages for jemalloc, and adding new composite GitHub Actions for Bazel and Cargo packaging. It also streamlines the macOS signing process, configures MSVC SDK environments for Windows Bazel builds, and removes obsolete skills and devcontainer setups. The review feedback highlights critical bugs in several newly added GitHub Actions where the logical operators && and || are misused within GHA expressions, causing unexpected boolean coercion that breaks Bazel configurations, Cargo split-debuginfo settings, and PYTHONPATH resolution. Additionally, it is recommended to avoid using the global -Dwarnings flag in .bazelrc to prevent build failures during compiler upgrades.

Comment thread .bazelrc Resolved

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Comment thread codex-cli/bin/codex.js Resolved
Comment thread codex-cli/bin/codex.js Fixed
GraciousGazelles added a commit that referenced this pull request Oct 25, 2026
GraciousGazelles added a commit that referenced this pull request Oct 26, 2026
GraciousGazelles added a commit that referenced this pull request Oct 26, 2026
GraciousGazelles added a commit that referenced this pull request Oct 27, 2026
GraciousGazelles and others added 20 commits October 29, 2026 07:51
## Why

Source-built V8 archives and generated Rust bindings must agree on their ABI, including in debug builds. Linux platform selection must also distinguish GNU and musl when using LLVM platforms.

## What changed

- Always select source-built V8 archives and matching bindings for Bazel consumers, removing the `rusty_v8_from_source` flag.
- Use LLVM's libc-aware Linux selectors for archives, bindings, headers, and bindgen targets.
- Keep `V8_ENABLE_CHECKS` undefined in debug builds to match Rust's `HandleScope` layout, and set `V8_LOGGING_LEVEL=2` for debug verification.
- Include compiler-rt builtins in the ARM64 GNU/Linux archive to provide `__clear_cache`.
- Set the Intel macOS minimum version for `codex-code-mode-host` releases to 10.13 for V8's aligned allocation support.

## Testing

Always include the existing ignored CppGC ABI checks in Bazel `v8-poc` unit tests and remove their exclusion from Bazel CI.

GitOrigin-RevId: f698a47502154cdfb80febed02e4465d9f2d1e0c
## What changed

Add `ReviewInput` to bundle an approval request with its captured parent history and review context. Its `assess_isolated` method runs a fresh reviewer without publishing a live approval, honors deadlines and cancellation, and returns a `GuardianAssessment` or review error.

Share review parameter construction with the live review path and extract assessment parsing and error conversion into `GuardianReviewSessionOutcome::into_assessment`.

## Testing

Add a mock-backed test that verifies the isolated assessment is returned and the reviewer receives the captured history without instructions added after capture.

GitOrigin-RevId: 10dd5fddf5fc58bfab124f5962a6b7f45d435c83
Replace `join_all` with a buffered stream in `replace_unresolvable_image_files` so at most eight distinct image file IDs are checked concurrently. Collect unavailable IDs as checks complete before replacing their image content with placeholders.

GitOrigin-RevId: 2a9ed8742fbb6157c99c69a15f212df3ed88810c
## What changed

Add an output schema for `image_gen.imagegen` so its code-mode declaration returns `Promise<{ image_url: string; output_hint?: string; }>`. Direct API tool serialization remains unchanged.

## Testing

Add coverage for the generated return type and unchanged direct API serialization, assert the full declaration in the app-server integration test, and verify that code-mode results omit oversized output hints.

GitOrigin-RevId: b3cee52a6b68c881f0c7507e791cc0fe86ca0d24
## What changed

- Include `codex-exec-server` in canonical CLI and app-server packages and advertise its path through `execServer` in `codex-package.json`.
- Build and sign the executor in release workflows, preserve signed prebuilt inputs, and verify packaged signatures. Use empty entitlements for the macOS executor.
- Have installers check for the executor when package metadata advertises it, while continuing to accept older packages.
- Omit the standalone executor and its manifest entry from npm packages to stay within npm's package size limit. Keep `codex exec-server` and its runtime helpers available.

## Testing

Add package smoke tests for executor initialization, version reporting, filesystem and process sandbox enforcement, and invalid-argument/configuration parity with `codex exec-server`. Extend archive, npm staging, and macOS signing tests to cover executor contents, executable permissions, preserved bytes, and entitlement verification.

GitOrigin-RevId: bc741fe7faa6fe631d076de18d448c55247c23c7
)

## Why

Resuming or forking a thread loses the session flag indicating that reported token usage already includes retained reasoning. Counting that reasoning again can trigger automatic compaction too early.

## What changed

Persist `last_usage_includes_reasoning` with `TokenUsageInfo` and use it when estimating context usage. Record the flag with completed sampling and compaction usage, and mark local estimates as including reasoning. Older records without the field retain the existing accounting behavior.

## Testing

Add coverage for saved inclusive, exclusive, and legacy token counts. Extend the encrypted-reasoning compaction test to verify the compaction threshold for live, forked, and cold-resumed threads.

GitOrigin-RevId: 9f22262a693111ec0406dce11804eb4844ad8983
## Why

Existing chats retain their provider configuration when the selected provider changes. Reject resume and input until the configured provider matches the chat, while keeping history readable and allowing recovery after configuration is restored.

## What changed

- Validate saved providers before applying resume overrides, preserving the provider when only model or reasoning settings change.
- Check the current provider selection, including profiles and launch overrides, before accepting input. Reject input when configuration cannot be loaded.
- Return structured `ModelProviderError` data for provider mismatches, missing definitions, and policy conflicts, with generated JSON Schema, TypeScript, and Python types.

## Testing

Add coverage for override bypass prevention, provider restoration, readable history after rejection, and blocked requests sending no inference traffic. Verify schema fields and Python round trips match the error wire format.

GitOrigin-RevId: 051f97c3815c547d8411c71b770df30eae969f68
## What changed

- Add `GetProcessMetrics` and provider sampling APIs for process ID, start time, cumulative CPU time, and resident memory, exposed through `ThreadManager` without creating a thread or session.
- Distinguish unsupported collection, a locally absent host, and sampling failures. Process-owned providers never start or replace a host when sampling.
- Bound gRPC sampling to one second without retries or explicit connection resets. Run optional collectors on a detached worker with at most one collection in flight, so stalled collection cannot block the HTTP/2 driver or runtime shutdown.

## Testing

Add coverage for snapshots, collector errors and panics, deadlines, overload, and shutdown with a stuck collector. Extend lifecycle tests to check that sampling preserves session state and keepalive behavior without starting or restarting local hosts.

GitOrigin-RevId: eeafe275891d0464636f28a29345a87aed1a12dc
## What changed

Add output collection and rendering components in `code-mode-runtime`, without wiring them into runtime execution yet.

- Retain a text prefix and rolling tail under a 1 MiB text allowance, with independent allowances of 8 MiB for image URLs and 62 MiB for audio URLs and a separate 32,768-item limit.
- Render retained output using the shared token-budget formatter, preserving media details and reporting collector losses even with a zero-token budget. Summarize scattered losses to keep notices bounded.
- Preserve collected output and omission accounting when delivery fails, and document the separate media limits in the protocol.

## Testing

Add unit tests for Unicode retention, item pressure, independent media allowances, media-space reclamation, failed delivery, default token budgets, and loss-notice placement and aggregation.

GitOrigin-RevId: f419fdbe316a8456cea3b7b097c4d3a658f3150f
## Why

Bounding collected output also requires limiting the raw event backlog between
V8 and the cell actor. Previously, runtime events and cell output accumulated
in an unbounded channel and vector.

## What changed

- Select the event transport and `OutputCollector` from the cell's
  `output_truncation` mode. Server mode uses an ordered, bounded channel with
  backpressure; client mode retains untruncated output.
- Transfer the collector with each observation and restore it on failed
  delivery, preserving retained media and omission metadata.
- Include server-mode script errors in the observation's output budget. Build
  completion output only after completion wins against termination, so a
  rejected error cannot evict output returned by termination.
- Keep the public service on client-side truncation.

## Testing

Add regression coverage for channel backpressure, event ordering, receiver
closure, failed observation delivery, termination during completion commit,
and oversized errors across UTF-8 and omission boundaries.

GitOrigin-RevId: 7604b60416e33c636ca41138be65dc0fd452774a
## Why

Loading plugin mentions should not fetch the browsable plugin catalog.

## What changed

Use `plugin/installed` instead of `plugin/list` to fetch mention candidates for the current working directory. Update the failure warning to name the endpoint being called.

## Testing

Adapt the existing eligibility test to `PluginInstalledResponse`, retaining coverage that includes active and shared plugins and excludes uninstalled, disabled, and admin-disabled plugins.

GitOrigin-RevId: 9c1bc2b91e25ca11fdfd0391bbc3615986b371c5
## What changed

- Add a sign-in wizard behind `features.gcp_setup_wizard`, disabled by default, to collect a project ID, optional location, and optional credential file. Users can leave the credential file blank to use Application Default Credentials.
- Delegate credential validation and configuration persistence to the app-server, showing progress and allowing retries after errors.
- Share editable single-line fields with Bedrock setup and compact the sign-in menu when terminal height is limited.

## Testing

Add onboarding tests and snapshots covering feature gating, field editing, navigation, validation failures, successful configuration persistence, and compact menu rendering.

GitOrigin-RevId: 96eb31e847aa1c2d503176be68ff2e2efe4722fa
Give users more time to complete browser sign-in, including MFA, by
increasing the OAuth callback timeout from three minutes to ten minutes.

GitOrigin-RevId: 6a89bd3f7efb323a83ce317604faeef3a4fb2230
## Why

Hosted Apps returns no resource templates, so querying `resources/templates/list` is unnecessary.

## What changed

Return an empty template list for host-owned Apps in single-server binding requests and skip it during aggregate template discovery. Use server registration metadata so extension-provided servers named `codex_apps` continue to expose their templates.

## Testing

Add coverage for hosted Apps versus extension registrations and for full MCP server status with standalone and thread connections. Verify that status requests still call `resources/list` but omit `resources/templates/list`.

GitOrigin-RevId: 3182b619391aefbb2a47ca7b8d9611402846bfe3

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.