core-agent-ide/codex-rs/core
Michael Bolin e61bae12e3
feat: introduce codex-utils-cargo-bin as an alternative to assert_cmd::Command (#8496)
This PR introduces a `codex-utils-cargo-bin` utility crate that
wraps/replaces our use of `assert_cmd::Command` and
`escargot::CargoBuild`.

As you can infer from the introduction of `buck_project_root()` in this
PR, I am attempting to make it possible to build Codex under
[Buck2](https://buck2.build) as well as `cargo`. With Buck2, I hope to
achieve faster incremental local builds (largely due to Buck2's
[dice](https://buck2.build/docs/insights_and_knowledge/modern_dice/)
build strategy, as well as benefits from its local build daemon) as well
as faster CI builds if we invest in remote execution and caching.

See
https://buck2.build/docs/getting_started/what_is_buck2/#why-use-buck2-key-advantages
for more details about the performance advantages of Buck2.

Buck2 enforces stronger requirements in terms of build and test
isolation. It discourages assumptions about absolute paths (which is key
to enabling remote execution). Because the `CARGO_BIN_EXE_*` environment
variables that Cargo provides are absolute paths (which
`assert_cmd::Command` reads), this is a problem for Buck2, which is why
we need this `codex-utils-cargo-bin` utility.

My WIP-Buck2 setup sets the `CARGO_BIN_EXE_*` environment variables
passed to a `rust_test()` build rule as relative paths.
`codex-utils-cargo-bin` will resolve these values to absolute paths,
when necessary.


---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/8496).
* #8498
* __->__ #8496
2025-12-23 19:29:32 -08:00
..
src Remove reasoning format (#8484) 2025-12-23 16:01:46 -08:00
templates Removed experimental "command risk assessment" feature (#7799) 2025-12-10 09:48:11 -08:00
tests feat: introduce codex-utils-cargo-bin as an alternative to assert_cmd::Command (#8496) 2025-12-23 19:29:32 -08:00
Cargo.toml feat: introduce codex-utils-cargo-bin as an alternative to assert_cmd::Command (#8496) 2025-12-23 19:29:32 -08:00
gpt-5.1-codex-max_prompt.md refactoring with_escalated_permissions to use SandboxPermissions instead (#7750) 2025-12-10 17:18:48 +00:00
gpt-5.2-codex_prompt.md caribou (#8265) 2025-12-18 08:58:44 -08:00
gpt_5_1_prompt.md chore(prompt) Remove truncation details (#7941) 2025-12-12 20:21:53 +00:00
gpt_5_2_prompt.md chore(prompt) Remove truncation details (#7941) 2025-12-12 20:21:53 +00:00
gpt_5_codex_prompt.md refactoring with_escalated_permissions to use SandboxPermissions instead (#7750) 2025-12-10 17:18:48 +00:00
models.json Update models.json (#8446) 2025-12-22 12:05:05 -08:00
prompt.md chore(prompt) Update base prompt (#7943) 2025-12-12 20:50:49 +00:00
README.md docs: align sandbox defaults, dedupe sections and improve getting started guide (#5357) 2025-10-19 16:41:10 -07:00
review_prompt.md docs: Fix markdown list item spacing in codex-rs/core/review_prompt.md (#4144) 2025-10-30 17:39:21 -07:00

codex-core

This crate implements the business logic for Codex. It is designed to be used by the various Codex UIs written in Rust.

Dependencies

Note that codex-core makes some assumptions about certain helper utilities being available in the environment. Currently, this support matrix is:

macOS

Expects /usr/bin/sandbox-exec to be present.

Linux

Expects the binary containing codex-core to run the equivalent of codex sandbox linux (legacy alias: codex debug landlock) when arg0 is codex-linux-sandbox. See the codex-arg0 crate for details.

All Platforms

Expects the binary containing codex-core to simulate the virtual apply_patch CLI when arg1 is --codex-run-as-apply-patch. See the codex-arg0 crate for details.