Skip to content

Sync upstream/main (2026-01-04) - #141

Merged
ScriptedAlchemy merged 139 commits into
mainfrom
sync-upstream-main-2026-01-04
Jan 6, 2026
Merged

ScriptedAlchemy merged 139 commits into
mainfrom
sync-upstream-main-2026-01-04

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Merges upstream/main into this fork.

Validation:

  • sdk/native: pnpm run build
  • sdk/native: pnpm run test
  • codex-rs: just fmt
  • codex-rs: cargo test -p codex-cli
  • codex-rs: just fix -p codex-cli

joshka-oai and others added 30 commits December 18, 2025 12:50
# Terminal Detection Metadata for Per-Terminal Scroll Scaling

## Summary
Expand terminal detection into structured metadata (`TerminalInfo`) with
multiplexer awareness, plus a testable environment shim and
characterization tests.

## Context / Motivation
- TUI2 owns its viewport and scrolling model (see
`codex-rs/tui2/docs/tui_viewport_and_history.md`), so scroll behavior
must be consistent across terminals and independent of terminal
scrollback quirks.
- Prior investigations show mouse wheel scroll deltas vary noticeably by
terminal. To tune scroll scaling (line increments per wheel tick) we
need reliable terminal identification, including when running inside
tmux/zellij.
- tmux is especially tricky because it can mask the underlying terminal;
we now consult `tmux display-message` client termtype/name to attribute
sessions to the actual terminal rather than tmux itself.
- This remains backwards compatible with the existing OpenTelemetry
user-agent token because `user_agent()` is still derived from the same
environment signals (now via `TerminalInfo`).

## Changes
- Introduce `TerminalInfo`, `TerminalName`, and `Multiplexer` with
`TERM_PROGRAM`/`TERM`/multiplexer detection and user-agent formatting in
`codex-rs/core/src/terminal.rs`.
- Add an injectable `Environment` trait + `FakeEnvironment` for testing,
and comprehensive characterization tests covering known terminals, tmux
client termtype/name, and zellij.
- Document module usage and detection order; update `terminal_info()` to
be the primary interface for callers.

## Testing
- `cargo test -p codex-core terminal::tests`
- manually checked ghostty, iTerm2, Terminal.app, vscode, tmux, zellij,
Warp, alacritty, kitty.
```
2025-12-18T07:07:49.191421Z  INFO Detected terminal info terminal=TerminalInfo { name: Iterm2, term_program: Some("iTerm.app"), version: Some("3.6.6"), term: None, multiplexer: None }
2025-12-18T07:07:57.991776Z  INFO Detected terminal info terminal=TerminalInfo { name: AppleTerminal, term_program: Some("Apple_Terminal"), version: Some("455.1"), term: None, multiplexer: None }
2025-12-18T07:08:07.732095Z  INFO Detected terminal info terminal=TerminalInfo { name: WarpTerminal, term_program: Some("WarpTerminal"), version: Some("v0.2025.12.10.08.12.stable_03"), term: None, multiplexer: None }
2025-12-18T07:08:24.860316Z  INFO Detected terminal info terminal=TerminalInfo { name: Kitty, term_program: None, version: None, term: None, multiplexer: None }
2025-12-18T07:08:38.302761Z  INFO Detected terminal info terminal=TerminalInfo { name: Alacritty, term_program: None, version: None, term: None, multiplexer: None }
2025-12-18T07:08:50.887748Z  INFO Detected terminal info terminal=TerminalInfo { name: VsCode, term_program: Some("vscode"), version: Some("1.107.1"), term: None, multiplexer: None }
2025-12-18T07:10:01.309802Z  INFO Detected terminal info terminal=TerminalInfo { name: WezTerm, term_program: Some("WezTerm"), version: Some("20240203-110809-5046fc22"), term: None, multiplexer: None }
2025-12-18T08:05:17.009271Z  INFO Detected terminal info terminal=TerminalInfo { name: Ghostty, term_program: Some("ghostty"), version: Some("1.2.3"), term: None, multiplexer: None }
2025-12-18T08:05:23.819973Z  INFO Detected terminal info terminal=TerminalInfo { name: Ghostty, term_program: Some("ghostty"), version: Some("1.2.3"), term: Some("xterm-ghostty"), multiplexer: Some(Tmux { version: Some("3.6a") }) }
2025-12-18T08:05:35.572853Z  INFO Detected terminal info terminal=TerminalInfo { name: Ghostty, term_program: Some("ghostty"), version: Some("1.2.3"), term: None, multiplexer: Some(Zellij) }
```

## Notes / Follow-ups
- Next step is to wire `TerminalInfo` into TUI2’s scroll scaling
configuration and add a per-terminal tuning table.
- The log output in TUI2 helps validate real-world detection before
applying behavior changes.
…280)

this fixes sandbox errors (legacy and elevated) for commands that
include pipes, which the model often favors.
See snapshots for view of edge cases
This is still named `UnifiedExecSessions` for consistency across the
code but should be renamed to `BackgroundTerminals` in a follow-up

Example:
<img width="945" height="687" alt="Screenshot 2025-12-18 at 20 12 53"
src="https://github.com/user-attachments/assets/92f39ff2-243c-4006-b402-e3fa9e93c952"
/>
This implements the new config design where config _requirements_ are
loaded separately (and with a special schema) as compared to config
_settings_. In particular, on UNIX, with this PR, you could define
`/etc/codex/requirements.toml` with:

```toml
allowed_approval_policies = ["never", "on-request"]
```

to enforce that `Config.approval_policy` must be one of those two values
when Codex runs.

We plan to expand the set of things that can be restricted by
`/etc/codex/requirements.toml` in short order.

Note that requirements can come from several sources:

- new MDM key on macOS (not implemented yet)
- `/etc/codex/requirements.toml`
- re-interpretation of legacy MDM key on macOS
(`com.openai.codex/config_toml_base64`)
- re-interpretation of legacy `/etc/codex/managed_config.toml`

So our resolution strategy is to load TOML data from those sources, in
order. Later TOMLs are "merged" into previous TOMLs, but any field that
is already set cannot be overwritten. See
`ConfigRequirementsToml::merge_unset_fields()`.
Add a v2 event for deprecation notices so we can get rid of
`codex/event/deprecation_notice`.
<img width="200" alt="7ff2254b-e96f-42fc-8232-b4e76cb26248"
src="https://github.com/user-attachments/assets/1f56799d-e2cd-4b69-9290-854943f7c6b6"
/>
Version `0.12.0` includes
modelcontextprotocol/rust-sdk#590, which I will
use in openai/codex#8142.

Changes:

- `rmcp::model::CustomClientNotification` was renamed to
`rmcp::model::CustomNotification`
- a bunch of types have a `meta` field now, but it is `Option`, so I
added `meta: None` to a bunch of things
Allow SKILL.md to specify a more human-readable short description as
skill metadata.
…st (#8142)

Historically, `accept_elicitation_for_prompt_rule()` was flaky because
we were using a notification to update the sandbox followed by a `shell`
tool request that we expected to be subject to the new sandbox config,
but because [rmcp](https://crates.io/crates/rmcp) MCP servers delegate
each incoming message to a new Tokio task, messages are not guaranteed
to be processed in order, so sometimes the `shell` tool call would run
before the notification was processed.

Prior to this PR, we relied on a generous `sleep()` between the
notification and the request to reduce the change of the test flaking
out.

This PR implements a proper fix, which is to use a _request_ instead of
a notification for the sandbox update so that we can wait for the
response to the sandbox request before sending the request to the
`shell` tool call. Previously, `rmcp` did not support custom requests,
but I fixed that in
modelcontextprotocol/rust-sdk#590, which made it
into the `0.12.0` release (see #8288).

This PR updates `shell-tool-mcp` to expect
`"codex/sandbox-state/update"` as a _request_ instead of a notification
and sends the appropriate ack. Note this behavior is tied to our custom
`codex/sandbox-state` capability, which Codex honors as an MCP client,
which is why `core/src/mcp_connection_manager.rs` had to be updated as
part of this PR, as well.

This PR also updates the docs at `shell-tool-mcp/README.md`.
regression: #8199

Signed-off-by: Koichi Shiraishi <zchee.io@gmail.com>
…onfigBuilder (#8276)

openai/codex#8235 introduced `ConfigBuilder` and
this PR updates all call non-test call sites to use it instead of
`Config::load_from_base_config_with_overrides()`.

This is important because `load_from_base_config_with_overrides()` uses
an empty `ConfigRequirements`, which is a reasonable default for testing
so the tests are not influenced by the settings on the host. This method
is now guarded by `#[cfg(test)]` so it cannot be used by business logic.

Because `ConfigBuilder::build()` is `async`, many of the test methods
had to be migrated to be `async`, as well. On the bright side, this made
it possible to eliminate a bunch of `block_on_future()` stuff.
## Description

Introduced `ExternalSandbox` policy to cover use case when sandbox
defined by outside environment, effectively it translates to
`SandboxMode#DangerFullAccess` for file system (since sandbox configured
on container level) and configurable `network_access` (either Restricted
or Enabled by outside environment).

as example you can configure `ExternalSandbox` policy as part of
`sendUserTurn` v1 app_server API:

```
 {
            "conversationId": <id>,
            "cwd": <cwd>,
            "approvalPolicy": "never",
            "sandboxPolicy": {
                  "type": ""external-sandbox",
                  "network_access": "enabled"/"restricted"
            },
            "model": <model>,
            "effort": <effort>,
            ....
        }
```
Screenshots here but check the snapshot files to see it better
<img width="712" height="408" alt="Screenshot 2025-12-18 at 11 58 02"
src="https://github.com/user-attachments/assets/84a2c410-0767-4870-84d1-ae1c0d4c445e"
/>
<img width="523" height="352" alt="Screenshot 2025-12-18 at 11 17 41"
src="https://github.com/user-attachments/assets/d029c7ea-0feb-4493-9dca-af43a0c70c52"
/>
Only display the skill name (not the folder), and truncate the skill
description to a maximum of two lines.
Fix broken tests.
a new scope reads from /etc/codex
We were assembling the skill roots in two different places, and the
admin root was missing in one of them. This change centralizes root
selection into a helper so both paths stay in sync.
# External (non-OpenAI) Pull Request Requirements

Before opening this Pull Request, please read the dedicated
"Contributing" markdown file or your PR may be closed:
https://github.com/openai/codex/blob/main/docs/contributing.md

If your PR conforms to our contribution guidelines, replace this text
with a detailed and high quality description of your changes.

Include a link to a bug report or enhancement request.
Fixes #8214 by removing the '--staged' flag from the undo git restore
command. This ensures that while the working tree is reverted to the
snapshot state, the user's staged changes (index) are preserved,
preventing data loss. Also adds a regression test.
This will make it easier to test for expected errors in unit tests since
we can compare based on the field values rather than the message (which
might change over time). See openai/codex#8298
for an example.

It also ensures more consistency in the way a `ConstraintError` is
constructed.
This test was introduced in openai/codex#6507,
but was not included in `mod.rs`. It does not appear that it was getting
compiled?
Automated update of models.json.

Co-authored-by: aibrahim-oai <219906144+aibrahim-oai@users.noreply.github.com>
gt-oai and others added 11 commits January 5, 2026 17:41
Load managed requirements from MDM key `requirements_toml_base64`.

Tested on my Mac (using `defaults` to set the preference, though this
would be set by MDM in production):

```
➜  codex git:(gt/mdm-requirements) defaults read com.openai.codex requirements_toml_base64 | base64 -d
allowed_approval_policies = ["on-request"]

➜  codex git:(gt/mdm-requirements) just c --yolo
cargo run --bin codex -- "$@"
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.26s
     Running `target/debug/codex --yolo`
Error loading configuration: value `Never` is not in the allowed set [OnRequest]
error: Recipe `codex` failed on line 11 with exit code 1

➜  codex git:(gt/mdm-requirements) defaults delete com.openai.codex requirements_toml_base64

➜  codex git:(gt/mdm-requirements) just c --yolo
cargo run --bin codex -- "$@"
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.24s
     Running `target/debug/codex --yolo`
╭──────────────────────────────────────────────────────────╮
│ >_ OpenAI Codex (v0.0.0)                                 │
│                                                          │
│ model:     codex-auto-balanced medium   /model to change │
│ directory: ~/code/codex/codex-rs                         │
╰──────────────────────────────────────────────────────────╯

  Tip: Start a fresh idea with /new; the previous session stays in history.
```
What changed
- Added `outputSchema` support to the app-server APIs, mirroring `codex
exec --output-schema` behavior.
- V1 `sendUserTurn` now accepts `outputSchema` and constrains the final
assistant message for that turn.
- V2 `turn/start` now accepts `outputSchema` and constrains the final
assistant message for that turn (explicitly per-turn only).

Core behavior
- `Op::UserTurn` already supported `final_output_json_schema`; now V1
`sendUserTurn` forwards `outputSchema` into that field.
- `Op::UserInput` now carries `final_output_json_schema` for per-turn
settings updates; core maps it into
`SessionSettingsUpdate.final_output_json_schema` so it applies to the
created turn context.
- V2 `turn/start` does NOT persist the schema via `OverrideTurnContext`
(it’s applied only for the current turn). Other overrides
(cwd/model/etc) keep their existing persistent behavior.

API / docs
- `codex-rs/app-server-protocol/src/protocol/v1.rs`: add `output_schema:
Option<serde_json::Value>` to `SendUserTurnParams` (serialized as
`outputSchema`).
- `codex-rs/app-server-protocol/src/protocol/v2.rs`: add `output_schema:
Option<JsonValue>` to `TurnStartParams` (serialized as `outputSchema`).
- `codex-rs/app-server/README.md`: document `outputSchema` for
`turn/start` and clarify it applies only to the current turn.
- `codex-rs/docs/codex_mcp_interface.md`: document `outputSchema` for v1
`sendUserTurn` and v2 `turn/start`.

Tests added/updated
- New app-server integration tests asserting `outputSchema` is forwarded
into outbound `/responses` requests as `text.format`:
  - `codex-rs/app-server/tests/suite/output_schema.rs`
  - `codex-rs/app-server/tests/suite/v2/output_schema.rs`
- Added per-turn semantics tests (schema does not leak to the next
turn):
  - `send_user_turn_output_schema_is_per_turn_v1`
  - `turn_start_output_schema_is_per_turn_v2`
- Added protocol wire-compat tests for the merged op:
  - serialize omits `final_output_json_schema` when `None`
  - deserialize works when field is missing
  - serialize includes `final_output_json_schema` when `Some(schema)`

Call site updates (high level)
- Updated all `Op::UserInput { .. }` constructions to include
`final_output_json_schema`:
  - `codex-rs/app-server/src/codex_message_processor.rs`
  - `codex-rs/core/src/codex_delegate.rs`
  - `codex-rs/mcp-server/src/codex_tool_runner.rs`
  - `codex-rs/tui/src/chatwidget.rs`
  - `codex-rs/tui2/src/chatwidget.rs`
  - plus impacted core tests.

Validation
- `just fmt`
- `cargo test -p codex-core`
- `cargo test -p codex-app-server`
- `cargo test -p codex-mcp-server`
- `cargo test -p codex-tui`
- `cargo test -p codex-tui2`
- `cargo test -p codex-protocol`
- `cargo clippy --all-features --tests --profile dev --fix -- -D
warnings`
… (#8686)

make sure if the Sandbox has to re-initialize with different Sandbox
user SID, it still finds/updates the firewall rule instead of creating a
new one.
Never treat .codex or .codex/.sandbox as a workspace root.
Handle write permissions to .codex/.sandbox in a single method so that
the sandbox setup/runner can write logs and other setup files to that
directory.
This change improves the skills render section
- Separate the skills list from usage rules with clear subheadings
- Define skill more clearly upfront
- Remove confusing trigger/discovery wording and make reference-following guidance more actionable
## Summary

When using device-code login with a custom issuer
(`--experimental_issuer`), Codex correctly uses that issuer for the auth
flow — but the **terminal prompt still told users to open the default
OpenAI device URL** (`https://auth.openai.com/codex/device`). That’s
confusing and can send users to the **wrong domain** (especially for
enterprise/staging issuers). This PR updates the prompt (and related
URLs) to consistently use the configured issuer. 🎯

---

## 🔧 What changed

* 🔗 **Device auth prompt link** now uses the configured issuer (instead
of a hard-coded OpenAI URL)
* 🧭 **Redirect callback URL** is derived from the same issuer for
consistency
* 🧼 Minor cleanup: normalize the issuer base URL once and reuse it
(avoids formatting quirks like trailing `/`)

---

## 🧪 Repro + Before/After

### ▶️ Command

```bash
codex login --device-auth --experimental_issuer https://auth.example.com
```

### ❌ Before (wrong link shown)

```text
1. Open this link in your browser and sign in to your account
   https://auth.openai.com/codex/device
```

### ✅ After (correct link shown)

```text
1. Open this link in your browser and sign in to your account
   https://auth.example.com/codex/device
```

Full example output (same as before, but with the correct URL):

```text
Welcome to Codex [v0.72.0]
OpenAI's command-line coding agent

Follow these steps to sign in with ChatGPT using device code authorization:

1. Open this link in your browser and sign in to your account
   https://auth.example.com/codex/device

2. Enter this one-time code (expires in 15 minutes)
   BUT6-0M8K4

Device codes are a common phishing target. Never share this code.
```

---

## ✅ Test plan

* 🟦 `codex login --device-auth` (default issuer): output remains
unchanged
* 🟩 `codex login --device-auth --experimental_issuer
https://auth.example.com`:

  * prompt link points to the issuer ✅
  * callback URL is derived from the same issuer ✅
  * no double slashes / mismatched domains ✅

Co-authored-by: Eric Traut <etraut@openai.com>
The elevated sandbox creates two new Windows users - CodexSandboxOffline
and CodexSandboxOnline. This is necessary, so this PR does all that it
can to "hide" those users. It uses the registry plus directory flags (on
their home directories) to get them to show up as little as possible.
Adds an optional `justification` parameter to the `prefix_rule()`
execpolicy DSL so policy authors can attach human-readable rationale to
a rule. That justification is propagated through parsing/matching and
can be surfaced to the model (or approval UI) when a command is blocked
or requires approval.

When a command is rejected (or gated behind approval) due to policy, a
generic message makes it hard for the model/user to understand what went
wrong and what to do instead. Allowing policy authors to supply a short
justification improves debuggability and helps guide the model toward
compliant alternatives.

Example:

```python
prefix_rule(
    pattern = ["git", "push"],
    decision = "forbidden",
    justification = "pushing is blocked in this repo",
)
```

If Codex tried to run `git push origin main`, now the failure would
include:

```
`git push origin main` rejected: pushing is blocked in this repo
```

whereas previously, all it was told was:

```
execpolicy forbids this command
```
@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Update: merged latest upstream/main (as of 2026-01-05) into this branch.\n\nChanges since initial PR: \n- Merge upstream/main (commit 3ff5b72)\n- rustfmt follow-up for seatbelt tests (commit c118d75)\n\nLocal validation: \n- codex-rs: just fmt; just fix -p codex-core; cargo test -p codex-core --tests (with a couple flaky long-running suites manually interrupted; key seatbelt + remote_models + verbosity tests re-run individually).\n- sdk/native: pnpm install; pnpm run build; pnpm test (in progress; fast-embed downloads model on first run and is slow on macOS).

mzeng-openai and others added 3 commits January 5, 2026 13:46
…753)

We've seen reports that people who try to login on a remote/headless
machine will open the login link on their own machine and got errors.
Update the instructions to ask those users to use `codex login
--device-auth` instead.

<img width="1434" height="938" alt="CleanShot 2026-01-05 at 11 35 02@2x"
src="https://github.com/user-attachments/assets/2b209953-6a42-4eb0-8b55-bb0733f2e373"
/>
Use ConfigLayerStack to get all folders while loading skills.
… (#8440)

**Motivation**
- Bring `codex exec resume` to parity with top‑level flags so global
options (git check bypass, json, model, sandbox toggles) work after the
subcommand, including when outside a git repo.

**Description**
- Exec CLI: mark `--skip-git-repo-check`, `--json`, `--model`,
`--full-auto`, and `--dangerously-bypass-approvals-and-sandbox` as
global so they’re accepted after `resume`.
- Tests: add `exec_resume_accepts_global_flags_after_subcommand` to
verify those flags work when passed after `resume`.

**Testing**
- `just fmt`
- `cargo test -p codex-exec` (pass; ran with elevated perms to allow
network/port binds)
- Manual: exercised `codex exec resume` with global flags after the
subcommand to confirm behavior.
@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

More validation (2026-01-05):

  • codex-rs:

    • just fmt
    • just fix -p codex-core
    • cargo nextest run -p codex-core --tests --no-fail-fast (1086 passed, 17 skipped)
  • sdk/native:

    • pnpm -C sdk/native run build
    • pnpm -C sdk/native test (JS) (fast-embed test downloads the model on first run; then passes)
    • cargo test in sdk/native (Rust) (all passed; fast_embed test ~2m first run due to model download)

Note: pnpm run test (which runs cargo test --workspace --all-features) can hit an intermittent hang in codex-core --test all during shutdown; tests appear to finish but the process sometimes doesn’t exit. Targeted nextest + SDK test runs above are clean.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Validation update:

  • codex-rs: , , and (1086 passed, 17 skipped)
  • sdk/native: npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
    Scope: all 15 workspace projects
    ../.. | Progress: resolved 0, reused 1, downloaded 0, added 0
    ../.. | -94 ---------
    ../.. | Progress: resolved 0, reused 94, downloaded 0, added 0, done

../typescript prepare$ pnpm run build
../typescript prepare: ../native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: ../native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
../typescript prepare: > @openai/codex-sdk@0.0.0-dev build /Users/bytedance/codex-native/sdk/typescript
../typescript prepare: > tsup
../typescript prepare: CLI Building entry: src/index.ts
../typescript prepare: CLI Using tsconfig: tsconfig.json
../typescript prepare: CLI tsup v8.5.0
../typescript prepare: CLI Using tsup config: /Users/bytedance/codex-native/sdk/typescript/tsup.config.ts
../typescript prepare: CLI Target: node18
../typescript prepare: CLI Cleaning output folder
../typescript prepare: ESM Build start
../typescript prepare: ESM dist/index.js 10.05 KB
../typescript prepare: ESM dist/index.js.map 20.73 KB
../typescript prepare: ESM ⚡️ Build success in 9ms
../typescript prepare: DTS Build start
../typescript prepare: DTS ⚡️ Build success in 514ms
../typescript prepare: DTS dist/index.d.ts 9.45 KB
../typescript prepare: Done
../.. preinstall$ node -e "if (!/pnpm/.test(process.env.npm_execpath||'') && !/pnpm/.test(process.env.npm_config_user_agent||'')) { console.error('This repository uses PNPM. Please run: pnpm install'); process.exit(1) }"
../.. preinstall: Done
Done in 2.3s using pnpm v10.25.0,

@codex-native/sdk@0.0.6 build /Users/bytedance/codex-native/sdk/native
npm run build:rust && npm run build:napi && npm run build:ts && npm run verify:build

@codex-native/sdk@0.0.6 build:rust
cargo fmt && cargo clippy --release --features napi-bindings -- -D warnings

@codex-native/sdk@0.0.6 build:napi
napi build --platform --release --features napi-bindings

@codex-native/sdk@0.0.6 build:ts
tsup

CLI Building entry: {"index":"src/index.ts","cli":"src/cli/index.ts"}
CLI Using tsconfig: tsconfig.json
CLI tsup v8.5.0
CLI Using tsup config: /Users/bytedance/codex-native/sdk/native/tsup.config.ts
CLI Target: node18
CLI Cleaning output folder
ESM Build start
CJS Build start
CJS dist/index.cjs 159.50 KB
CJS dist/cli.cjs 120.59 KB
CJS dist/index.cjs.map 352.17 KB
CJS dist/cli.cjs.map 245.98 KB
CJS ⚡️ Build success in 36ms
ESM dist/index.mjs 85.06 KB
ESM dist/cli.mjs 53.42 KB
ESM dist/chunk-HZEXE6DJ.mjs 69.71 KB
ESM dist/index.mjs.map 201.71 KB
ESM dist/cli.mjs.map 98.32 KB
ESM dist/chunk-HZEXE6DJ.mjs.map 149.91 KB
ESM ⚡️ Build success in 36ms
DTS Build start
DTS ⚡️ Build success in 1620ms
DTS dist/cli.d.mts 20.00 B
DTS dist/index.d.mts 78.32 KB
DTS dist/cli.d.ts 20.00 B
DTS dist/index.d.ts 78.32 KB

@codex-native/sdk@0.0.6 verify:build
node -e "const fs=require('fs');const hasNode=fs.readdirSync('.').some(f=>f.endsWith('.node'));const hasDist=fs.existsSync('dist/index.mjs')&&fs.existsSync('dist/index.d.ts');if(!hasNode||!hasDist){console.error('Build incomplete: missing .node or dist files');process.exit(1)}console.log('✓ Build verification passed')"

✓ Build verification passed,

@codex-native/sdk@0.0.6 pretest /Users/bytedance/codex-native/sdk/native
node -e "const fs=require('fs');const hasNode=fs.readdirSync('.').some(f=>f.endsWith('.node'));if(!hasNode){process.exitCode=1;console.error('missing .node binary; run npm run build:ci');} else {console.log('✓ native binary present; skipping rebuild');}"

✓ native binary present; skipping rebuild

@codex-native/sdk@0.0.6 test /Users/bytedance/codex-native/sdk/native
node ./scripts/run-jest.mjs --runInBand

console.warn
Skipping OSS integration test: no running Ollama server detected. Set CODEX_NATIVE_RUN_OSS_TEST=1 to force running the test.

  232 |   const autoDetectedOllama = ossEnvPreference === null && !isCI && isOllamaAvailable();
  233 |   if (ossEnvPreference === null && !autoDetectedOllama) {
> 234 |     console.warn(
      |             ^
  235 |       "Skipping OSS integration test: no running Ollama server detected. " +
  236 |         'Set CODEX_NATIVE_RUN_OSS_TEST=1 to force running the test.',
  237 |     );

  at tests/agents-models-defaults.test.ts:234:13
  at tests/agents-models-defaults.test.ts:78:1

console.log

📟 LSP diagnostics detected:
• src/app.ts
  - [WARNING] Unused variable (1:1 · tsc)

  at LspDiagnosticsBridge.processDiagnostics (src/lsp/bridge.ts:67:15)

console.log

📟 LSP diagnostics detected:
• README.md
  - [INFO] Trailing whitespace (5:1 · markdownlint)

  at LspDiagnosticsBridge.processDiagnostics (src/lsp/bridge.ts:67:15) (JS), and  inside  (all passed; fastembed tests may download model weights on first run)

Notes:

  • The workspace-wide run was started via

codex-monorepo@ test /Users/bytedance/codex-native
pnpm run ci:codespell && pnpm run ci:shear && pnpm run ci:format && pnpm run test:codex-rs && pnpm run sdk:build && pnpm run sdk:test

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:codespell /Users/bytedance/codex-native
codespell --config .codespellrc

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:shear /Users/bytedance/codex-native
bash -c 'cd codex-rs && cargo shear'

Analyzing /Users/bytedance/codex-native/codex-rs

No unused dependencies!
sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:format /Users/bytedance/codex-native
bash -c 'cd codex-rs && rustup toolchain install nightly --profile minimal >/dev/null && rustup component add rustfmt --toolchain nightly >/dev/null && cargo +nightly fmt -- --config imports_granularity=Item --check'

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ test:codex-rs /Users/bytedance/codex-native
cd codex-rs && cargo test --workspace --all-features

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 25 tests
test requests::chat::tests::groups_consecutive_tool_calls_into_a_single_assistant_message ... ok
test endpoint::compact::tests::errors_when_wire_is_chat ... ok
test requests::chat::tests::attaches_conversation_and_subagent_headers ... ok
test requests::responses::tests::azure_default_store_attaches_ids_and_headers ... ok
test endpoint::models::tests::list_models_includes_etag ... ok
test endpoint::models::tests::appends_client_version_query ... ok
test sse::chat::tests::emits_tool_calls_even_when_content_and_reasoning_present ... ok
test sse::chat::tests::completes_on_done_sentinel_without_json ... ok
test sse::chat::tests::concatenates_tool_call_arguments_across_deltas ... ok
test endpoint::models::tests::parses_models_response ... ok
test sse::chat::tests::drops_partial_tool_calls_on_stop_finish_reason ... ok
test sse::chat::tests::emits_multiple_tool_calls ... ok
test sse::chat::tests::emits_tool_calls_for_multiple_choices ... ok
test sse::chat::tests::merges_tool_calls_by_index_when_id_missing_on_subsequent_deltas ... ok
test sse::chat::tests::preserves_tool_call_name_when_empty_deltas_arrive ... ok
test sse::responses::tests::context_window_error_with_newline_is_fatal ... ok
test sse::responses::tests::context_window_error_is_fatal ... ok
test sse::responses::tests::quota_exceeded_error_is_fatal ... ok
test sse::responses::tests::error_when_missing_completed ... ok
test sse::responses::tests::test_try_parse_retry_after ... ok
test sse::responses::tests::test_try_parse_retry_after_azure ... ok
test sse::responses::tests::test_try_parse_retry_after_no_delay ... ok
test sse::responses::tests::error_when_error_event ... ok
test sse::responses::tests::parses_items_and_completed ... ok
test sse::responses::tests::table_driven_event_kinds ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 6 tests
test chat_client_uses_responses_path_for_responses_wire ... ok
test responses_client_uses_responses_path_for_responses_wire ... ok
test streaming_client_adds_auth_headers ... ok
test responses_client_uses_chat_path_for_chat_wire ... ok
test chat_client_uses_chat_completions_path_for_chat_wire ... ok
test streaming_client_retries_on_transport_error ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 1 test
test models_client_hits_models_endpoint ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 2 tests
test responses_stream_aggregates_output_text_deltas ... ok
test responses_stream_parses_items_and_completed_end_to_end ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 20 tests
test bespoke_event_handling::tests::test_handle_turn_diff_is_noop_for_v1 ... ok
test bespoke_event_handling::tests::test_handle_token_count_event_without_usage_info ... ok
test bespoke_event_handling::tests::test_handle_turn_diff_emits_v2_notification ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_without_args ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_error ... ok
test bespoke_event_handling::tests::test_handle_token_count_event_emits_usage_and_rate_limits ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_completed_without_error ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_failed_with_error ... ok
test bespoke_event_handling::tests::test_handle_error_records_message ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_error_multiple_turns ... ok
test bespoke_event_handling::tests::test_handle_turn_interrupted_emits_interrupted_with_error ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_with_args ... ok
test bespoke_event_handling::tests::test_handle_turn_plan_update_emits_notification_for_v2 ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_success ... ok
test outgoing_message::tests::verify_account_login_completed_notification_serialization ... ok
test outgoing_message::tests::verify_account_updated_notification_serialization ... ok
test outgoing_message::tests::verify_server_notification_serialization ... ok
test outgoing_message::tests::verify_account_rate_limits_notification_serialization ... ok
test codex_message_processor::tests::extract_conversation_summary_prefers_plain_user_messages ... ok
test codex_message_processor::tests::read_summary_from_rollout_returns_empty_preview_when_no_user_message ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 79 tests
test suite::auth::login_api_key_rejected_when_forced_chatgpt ... ok
test suite::auth::get_auth_status_no_auth ... ok
test suite::config::get_config_toml_parses_all_fields ... ok
test suite::auth::get_auth_status_with_api_key ... ok
test suite::auth::get_auth_status_with_api_key_no_include_token ... ok
test suite::auth::get_auth_status_with_api_key_when_auth_not_required ... ok
test suite::config::get_config_toml_empty ... ok
test suite::login::login_chatgpt_includes_forced_workspace_query_param ... ok
test suite::login::login_chatgpt_rejected_when_forced_api ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_accepts_cancellation_token ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_sorts_and_includes_indices ... ok
test suite::archive_conversation::archive_conversation_moves_rollout_into_archived_directory ... ok
test suite::list_resume::list_conversations_fetches_through_filtered_pages ... ok
test suite::create_conversation::test_conversation_create_and_send_message_ok ... ok
test suite::login::logout_chatgpt_removes_auth ... ok
test suite::codex_message_processor_flow::test_codex_jsonrpc_conversation_flow ... ok
test suite::send_message::test_send_message_session_not_found ... ok
test suite::set_default_model::set_default_model_persists_overrides ... ok
test suite::codex_message_processor_flow::test_send_user_turn_updates_sandbox_and_cwd_between_turns ... ok
test suite::user_agent::get_user_agent_returns_current_codex_user_agent ... ok
test suite::v2::account::get_account_no_auth ... ok
test suite::user_info::user_info_returns_email_from_auth_json ... ok
test suite::send_message::test_send_message_raw_notifications_opt_in ... ok
test suite::v2::account::get_account_when_auth_not_required ... ok
test suite::output_schema::send_user_turn_accepts_output_schema_v1 ... ok
test suite::v2::account::get_account_with_api_key ... ok
test suite::v2::account::get_account_with_chatgpt ... ok
test suite::output_schema::send_user_turn_output_schema_is_per_turn_v1 ... ok
test suite::codex_message_processor_flow::test_send_user_turn_changes_approval_policy_behavior ... ok
test suite::v2::account::login_account_api_key_rejected_when_forced_chatgpt ... ok
test suite::v2::account::login_account_chatgpt_includes_forced_workspace_query_param ... ok
test suite::v2::account::login_account_chatgpt_rejected_when_forced_api ... ok
test suite::v2::account::login_account_api_key_succeeds_and_notifies ... ok
test suite::list_resume::test_list_and_resume_conversations ... ok
test suite::v2::account::logout_account_removes_auth_and_notifies ... ok
test suite::v2::config_rpc::config_read_returns_effective_and_layers ... ok
test suite::v2::config_rpc::config_read_includes_system_layer_and_overrides ... ok
test suite::v2::config_rpc::config_batch_write_applies_multiple_edits ... ok
test suite::v2::config_rpc::config_read_includes_tools ... ok
test suite::v2::model_list::list_models_rejects_invalid_cursor ... ok
test suite::v2::config_rpc::config_value_write_rejects_version_conflict ... ok
test suite::v2::model_list::list_models_pagination_works ... ok
test suite::v2::config_rpc::config_value_write_replaces_value ... ok
test suite::v2::model_list::list_models_returns_all_models_with_large_limit ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_auth ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_chatgpt_auth ... ok
test suite::v2::output_schema::turn_start_accepts_output_schema_v2 ... ok
test suite::send_message::test_send_message_success ... ok
test suite::v2::output_schema::turn_start_output_schema_is_per_turn_v2 ... ok
test suite::v2::review::review_start_rejects_empty_commit_sha ... ok
test suite::v2::review::review_start_rejects_empty_base_branch ... ok
test suite::v2::review::review_start_rejects_empty_custom_instructions ... ok
test suite::v2::thread_list::thread_list_basic_empty ... ok
test suite::v2::thread_archive::thread_archive_moves_rollout_into_archived_directory ... ok
test suite::v2::review::review_start_runs_review_turn_and_emits_code_review_item ... ok
test suite::v2::rate_limits::get_account_rate_limits_returns_snapshot ... ok
test suite::v2::thread_list::thread_list_includes_git_info ... ok
test suite::v2::thread_list::thread_list_respects_provider_filter ... ok
test suite::v2::thread_list::thread_list_pagination_next_cursor_none_on_last_page ... ok
test suite::interrupt::test_shell_command_interruption ... ok
test suite::v2::review::review_start_with_detached_delivery_returns_new_thread_id ... ok
test suite::v2::thread_list::thread_list_fetches_until_limit_or_exhausted ... ok
test suite::v2::account::login_account_chatgpt_start_can_be_cancelled ... ok
test suite::v2::thread_resume::thread_resume_returns_rollout_history ... ok
test suite::v2::thread_list::thread_list_stops_when_not_enough_filtered_results_exist ... ok
test suite::v2::thread_resume::thread_resume_prefers_path_over_thread_id ... ok
test suite::v2::thread_resume::thread_resume_returns_original_thread ... ok
test suite::v2::thread_start::thread_start_creates_thread_and_emits_started ... ok
test suite::v2::turn_start::turn_start_accepts_local_image_input ... ok
test suite::v2::turn_start::turn_start_emits_notifications_and_accepts_model_override ... ok
test suite::v2::thread_resume::thread_resume_supports_history_and_overrides ... ok
test suite::v2::thread_list::thread_list_enforces_max_limit ... ok
test suite::v2::turn_start::turn_start_exec_approval_decline_v2 ... ok
test suite::v2::turn_start::turn_start_file_change_approval_decline_v2 ... ok
test suite::v2::turn_start::command_execution_notifications_include_process_id ... ok
test suite::v2::turn_start::turn_start_file_change_approval_v2 ... ok
test suite::v2::turn_start::turn_start_exec_approval_toggle_v2 ... ok
test suite::v2::turn_start::turn_start_updates_sandbox_and_cwd_between_turns_v2 ... ok
test suite::v2::turn_interrupt::turn_interrupt_aborts_running_turn ... ok

test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.72s

running 20 tests
test protocol::common::tests::conversation_id_serializes_as_plain_string ... ok
test protocol::common::tests::serialize_account_logout ... ok
test protocol::common::tests::serialize_get_account_rate_limits ... ok
test protocol::common::tests::account_serializes_fields_in_camel_case ... ok
test protocol::common::tests::serialize_new_conversation ... ok
test protocol::common::tests::conversation_id_deserializes_from_plain_string ... ok
test protocol::common::tests::serialize_client_notification ... ok
test protocol::common::tests::serialize_get_account ... ok
test protocol::common::tests::serialize_list_models ... ok
test protocol::common::tests::serialize_account_login_chatgpt ... ok
test protocol::common::tests::serialize_account_login_api_key ... ok
test protocol::v2::tests::codex_error_info_serializes_http_status_code_in_camel_case ... ok
test protocol::v2::tests::skills_list_params_serialization_uses_force_reload ... ok
test protocol::v2::tests::sandbox_policy_round_trips_external_sandbox_network_access ... ok
test protocol::thread_history::tests::splits_reasoning_when_interleaved ... ok
test protocol::thread_history::tests::builds_multiple_turns_with_reasoning_items ... ok
test protocol::thread_history::tests::marks_turn_as_interrupted_when_aborted ... ok
test protocol::common::tests::serialize_server_request ... ok
test protocol::v2::tests::core_turn_item_into_thread_item_converts_supported_variants ... ok
test export::tests::generated_ts_has_no_optional_nullable_fields ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.08s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 49 tests
test invocation::tests::test_apply_patch_should_resolve_absolute_paths_in_cwd ... ok
test invocation::tests::test_cd_then_apply_patch_then_extra_is_ignored ... ok
test invocation::tests::test_cd_single_quoted_path_with_spaces ... ok
test invocation::tests::test_cmd_heredoc_with_cd ... ok
test invocation::tests::test_cd_two_args_is_ignored ... ok
test invocation::tests::test_echo_and_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_pipe_apply_patch_is_ignored ... ok
test invocation::tests::test_apply_patch_with_arg_is_ignored ... ok
test invocation::tests::test_double_cd_then_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_with_semicolon_is_ignored ... ok
test invocation::tests::test_cd_or_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_double_quoted_path_with_spaces ... ok
test invocation::tests::test_heredoc ... ok
test invocation::tests::test_echo_then_cd_and_apply_patch_is_ignored ... ok
test invocation::tests::test_heredoc_applypatch ... ok
test invocation::tests::test_heredoc_non_login_shell ... ok
test invocation::tests::test_heredoc_with_leading_cd ... ok
test invocation::tests::test_literal ... ok
test invocation::tests::test_literal_applypatch ... ok
test invocation::tests::test_powershell_heredoc_no_profile ... ok
test invocation::tests::test_powershell_heredoc ... ok
test invocation::tests::test_pwsh_heredoc ... ok
test parser::test_parse_one_hunk ... ok
test parser::test_parse_patch ... ok
test parser::test_update_file_chunk ... ok
test seek_sequence::tests::test_exact_match_finds_sequence ... ok
test seek_sequence::tests::test_pattern_longer_than_input_returns_none ... ok
test parser::test_parse_patch_lenient ... ok
test seek_sequence::tests::test_rstrip_match_ignores_trailing_whitespace ... ok
test seek_sequence::tests::test_trim_match_ignores_leading_and_trailing_whitespace ... ok
test invocation::tests::test_implicit_patch_single_arg_is_error ... ok
test invocation::tests::test_apply_patch_resolves_move_path_with_effective_cwd ... ok
test invocation::tests::test_implicit_patch_bash_script_is_error ... ok
test tests::test_delete_file_hunk_removes_file ... ok
test tests::test_apply_patch_fails_on_write_error ... ok
test tests::test_add_file_hunk_creates_file_with_contents ... ok
test invocation::tests::test_unified_diff_insert_at_eof ... ok
test tests::test_unified_diff_first_line_replacement ... ok
test invocation::tests::test_unified_diff_last_line_replacement ... ok
test tests::test_unified_diff ... ok
test tests::test_multiple_update_chunks_apply_to_single_file ... ok
test tests::test_unified_diff_insert_at_eof ... ok
test tests::test_pure_addition_chunk_followed_by_removal ... ok
test tests::test_unified_diff_last_line_replacement ... ok
test tests::test_unified_diff_interleaved_changes ... ok
test tests::test_update_file_hunk_modifies_content ... ok
test tests::test_update_line_with_unicode_dash ... ok
test tests::test_update_file_hunk_interleaved_changes ... ok
test tests::test_update_file_hunk_can_move_file ... ok

test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test suite::tool::test_apply_patch_cli_rejects_empty_update_hunk ... ok
test suite::tool::test_apply_patch_cli_add_overwrites_existing_file ... ok
test suite::tool::test_apply_patch_cli_failure_after_partial_success_leaves_changes ... ok
test suite::tool::test_apply_patch_cli_rejects_empty_patch ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_chunks ... ok
test suite::tool::test_apply_patch_cli_delete_directory_fails ... ok
test suite::tool::test_apply_patch_cli_move_overwrites_existing_destination ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_operations ... ok
test suite::tool::test_apply_patch_cli_moves_file_to_new_directory ... ok
test suite::tool::test_apply_patch_cli_rejects_invalid_hunk_header ... ok
test suite::cli::test_apply_patch_cli_add_and_update ... ok
test suite::tool::test_apply_patch_cli_requires_existing_file_for_update ... ok
test suite::tool::test_apply_patch_cli_rejects_missing_file_delete ... ok
test suite::cli::test_apply_patch_cli_stdin_add_and_update ... ok
test suite::tool::test_apply_patch_cli_reports_missing_context ... ok
test suite::tool::test_apply_patch_cli_updates_file_appends_trailing_newline ... ok
test suite::scenarios::test_apply_patch_scenarios ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 3 tests
test tests::returns_ok_when_future_completes_first ... ok
test tests::returns_err_when_token_already_cancelled ... ok
test tests::returns_err_when_token_cancelled_first ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 5 tests
test types::tests::assistant_text_messages_extracts_text_content ... ok
test types::tests::unified_diff_falls_back_to_pr_output_diff ... ok
test types::tests::unified_diff_prefers_current_diff_task_turn ... ok
test types::tests::assistant_error_message_combines_code_and_message ... ok
test types::tests::user_text_prompt_joins_parts_with_spacing ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 2 tests
test suite::apply_command_e2e::test_apply_command_creates_fibonacci_file ... ok
test suite::apply_command_e2e::test_apply_command_with_merge_conflicts ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s

running 6 tests
test debug_sandbox::pid_tracker::tests::pid_is_alive_detects_current_process ... ok
test login::tests::formats_long_key ... ok
test login::tests::short_key_returns_stars ... ok
test debug_sandbox::pid_tracker::tests::list_child_pids_includes_spawned_child ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_bash_subshell_descendants ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_spawned_children ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s

running 14 tests
test tests::format_exit_messages_skips_zero_usage ... ok
test tests::feature_toggles_known_features_generate_overrides ... ok
test tests::feature_toggles_unknown_feature_errors ... ok
test wsl_paths::tests::normalize_is_noop_on_unix_paths ... ok
test wsl_paths::tests::win_to_wsl_basic ... ok
test tests::resume_all_flag_sets_show_all ... ok
test tests::resume_merges_dangerously_bypass_flag ... ok
test tests::resume_picker_logic_last ... ok
test tests::resume_picker_logic_none_and_not_last ... ok
test tests::resume_model_flag_applies_when_no_root_flags ... ok
test tests::resume_picker_logic_with_session_id ... ok
test tests::resume_merges_option_flags_and_full_auto ... ok
test tests::format_exit_messages_includes_resume_hint_without_color ... ok
test tests::format_exit_messages_applies_color_when_enabled ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 1 test
test execpolicy_check_matches_expected_json ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.41s

running 6 tests
test add_streamable_http_rejects_removed_flag ... ok
test add_cant_add_command_and_url ... ok
test add_streamable_http_with_custom_env_var ... ok
test add_with_env_preserves_key_order_and_values ... ok
test add_and_remove_server_updates_global_config ... ok
test add_streamable_http_without_manual_token ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.93s

running 3 tests
test list_shows_empty_state ... ok
test get_disabled_server_shows_single_line ... ok
test list_and_get_render_expected_output ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s

running 1 test
test default_client::tests::inject_trace_headers_uses_current_span_context ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 12 tests
test tests::composer_input_renders_typed_characters ... ignored, very slow
test tests::select_attempt_validates_bounds ... ok
test tests::parse_task_id_from_url_and_raw ... ok
test tests::branch_override_is_used_when_provided ... ok
test tests::format_task_status_lines_with_diff_and_label ... ok
test tests::format_task_status_lines_without_diff_falls_back ... ok
test tests::trims_override_whitespace ... ok
test tests::collect_attempt_diffs_includes_sibling_attempts ... ok
test app::tests::load_tasks_uses_env_parameter ... ok
test tests::falls_back_to_current_branch_when_default_is_missing ... ok
test tests::falls_back_to_main_when_no_git_info_is_available ... ok
test tests::prefers_current_branch_when_available ... ok

test result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 1 test
test mock_backend_varies_by_env ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 28 tests
test config_override::tests::parses_array ... ok
test config_override::tests::parses_bool ... ok
test config_override::tests::parses_basic_scalar ... ok
test config_override::tests::parses_inline_table ... ok
test config_override::tests::fails_on_unquoted_string ... ok
test elapsed::tests::test_format_duration_minutes ... ok
test elapsed::tests::test_format_duration_one_hour_has_space ... ok
test elapsed::tests::test_format_duration_seconds ... ok
test elapsed::tests::test_format_duration_subsecond ... ok
test format_env_display::tests::combines_env_pairs_and_vars ... ok
test format_env_display::tests::formats_env_vars_with_dollar_prefix ... ok
test format_env_display::tests::returns_dash_when_empty ... ok
test format_env_display::tests::formats_sorted_env_pairs ... ok
test fuzzy_match::tests::indices_are_deduped_for_multichar_lowercase_expansion ... ok
test fuzzy_match::tests::case_insensitive_matching_basic ... ok
test fuzzy_match::tests::empty_needle_matches_with_max_score_and_no_indices ... ok
test fuzzy_match::tests::ascii_basic_indices ... ok
test fuzzy_match::tests::prefer_contiguous_match_over_spread ... ok
test fuzzy_match::tests::start_of_string_bonus_applies ... ok
test fuzzy_match::tests::unicode_dotted_i_istanbul_highlighting ... ok
test fuzzy_match::tests::unicode_german_sharp_s_casefold ... ok
test oss::tests::test_get_default_model_for_provider_lmstudio ... ok
test oss::tests::test_get_default_model_for_provider_ollama ... ok
test oss::tests::test_get_default_model_for_provider_unknown ... ok
test sandbox_mode_cli_arg::tests::maps_cli_args_to_protocol_modes ... ok
test sandbox_summary::tests::summarizes_external_sandbox_without_network_access_suffix ... ok
test sandbox_summary::tests::summarizes_external_sandbox_with_enabled_network ... ok
test sandbox_summary::tests::workspace_write_summary_still_includes_network_access ... ok

test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 671 tests
test auth::storage::tests::keyring_auth_storage_compute_store_key_for_home_directory ... ok
test apply_patch::tests::convert_apply_patch_maps_add_variant ... ok
test auth::storage::tests::keyring_auth_storage_load_returns_deserialized_auth ... ok
test auth::storage::tests::auto_auth_storage_load_falls_back_when_keyring_errors ... ok
test auth::storage::tests::auto_auth_storage_load_uses_file_when_keyring_empty ... ok
test auth::storage::tests::auto_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::keyring_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::file_storage_delete_removes_auth_file ... ok
test auth::storage::tests::file_storage_save_persists_auth_dot_json ... ok
test auth::storage::tests::file_storage_load_returns_auth_dot_json ... ok
test auth::storage::tests::auto_auth_storage_load_prefers_keyring_value ... ok
test auth::storage::tests::auto_auth_storage_save_falls_back_when_keyring_errors ... ok
test auth::storage::tests::auto_auth_storage_save_prefers_keyring ... ok
test auth::storage::tests::keyring_auth_storage_save_persists_and_removes_fallback_file ... ok
test auth::tests::logout_removes_auth_file ... ok
test auth::tests::login_with_api_key_overwrites_existing_auth_json ... ok
test bash::tests::accepts_concatenated_flag_and_value ... ok
test bash::tests::accepts_concatenated_flag_with_single_quotes ... ok
test bash::tests::accepts_multiple_commands_with_allowed_operators ... ok
test bash::tests::accepts_numbers_as_words ... ok
test bash::tests::accepts_single_simple_command ... ok
test bash::tests::extracts_double_and_single_quoted_strings ... ok
test bash::tests::parse_zsh_lc_plain_commands ... ok
test bash::tests::rejects_command_and_process_substitutions_and_expansions ... ok
test bash::tests::rejects_concatenation_with_command_substitution ... ok
test auth::tests::refresh_without_id_token ... ok
test bash::tests::rejects_parentheses_and_subshells ... ok
test bash::tests::rejects_concatenation_with_variable_substitution ... ok
test bash::tests::rejects_redirections_and_unsupported_operators ... ok
test bash::tests::rejects_variable_assignment_prefix ... ok
test bash::tests::rejects_trailing_operator_parse_error ... ok
test client_common::tests::omits_text_when_not_set ... ok
test client_common::tests::serializes_text_schema_with_strict_format ... ok
test client_common::tests::serializes_text_verbosity_when_set ... ok
test auth::tests::missing_auth_json_returns_none ... ok
test auth::tests::plan_type_maps_known_plan ... ok
test auth::tests::plan_type_maps_unknown_to_unknown ... ok
test codex::tests::falls_back_to_content_when_structured_is_null ... ok
test auth::tests::enforce_login_restrictions_allows_api_key_if_login_method_not_set_but_forced_chatgpt_workspace_id_is_set ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_method_mismatch ... ok
test codex::tests::prefers_structured_content_when_present ... ok
test auth::tests::enforce_login_restrictions_allows_matching_workspace ... ok
test codex::tests::abort_gracefuly_emits_turn_aborted_only ... ok
test codex::tests::fatal_tool_error_stops_turn_and_reports_error ... ok
test auth::tests::enforce_login_restrictions_blocks_env_api_key_when_chatgpt_required ... ok
test codex::tests::abort_review_task_emits_exited_then_aborted_and_records_history ... ok
test codex::tests::abort_regular_task_emits_turn_aborted_only ... ok
test codex::tests::includes_timed_out_message ... ok
test codex::tests::reconstruct_history_matches_live_compactions ... ok
test codex::tests::success_flag_reflects_is_error_true ... ok
test codex::tests::success_flag_true_with_no_error_and_content_used ... ok
test codex::tests::record_initial_history_reconstructs_forked_transcript ... ok
test codex::tests::record_initial_history_seeds_token_info_from_rollout ... ok
test command_safety::is_dangerous_command::tests::bash_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::bash_git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::external_sandbox_only_prompts_for_dangerous_commands ... ok
test command_safety::is_dangerous_command::tests::git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_f_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_rf_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::sudo_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::usr_bin_git_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::zsh_git_reset_is_dangerous ... ok
test command_safety::is_safe_command::tests::base64_output_options_are_unsafe ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples_with_operators ... ok
test command_safety::is_safe_command::tests::bash_lc_unsafe_examples ... ok
test command_safety::is_safe_command::tests::known_safe_examples ... ok
test command_safety::is_safe_command::tests::ripgrep_rules ... ok
test command_safety::is_safe_command::tests::unknown_or_partial ... ok
test command_safety::is_safe_command::tests::windows_powershell_full_path_is_safe ... ok
test command_safety::is_safe_command::tests::zsh_lc_safe_command_sequence ... ok
test compact::tests::build_token_limited_compacted_history_appends_summary_message ... ok
test compact::tests::build_token_limited_compacted_history_truncates_overlong_user_messages ... ok
test compact::tests::collect_user_messages_extracts_user_text_only ... ok
test compact::tests::collect_user_messages_filters_session_prefix_entries ... ok
test compact::tests::content_items_to_text_ignores_image_only_content ... ok
test compact::tests::content_items_to_text_joins_non_empty_segments ... ok
test config::constraint::tests::constrained_allow_any_accepts_any_value ... ok
test config::constraint::tests::constrained_allow_any_default_uses_default_value ... ok
test config::constraint::tests::constrained_can_set_allows_probe_without_setting ... ok
test config::constraint::tests::constrained_new_rejects_invalid_initial_value ... ok
test config::constraint::tests::constrained_set_rejects_invalid_value_and_leaves_previous ... ok
test config::edit::tests::async_builder_set_model_persists ... ok
test codex::tests::record_initial_history_reconstructs_resumed_transcript ... ok
test config::edit::tests::batch_write_table_upsert_preserves_inline_comments ... ok
test config::edit::tests::blocking_clear_model_removes_inline_table_entry ... ok
test config::edit::tests::blocking_builder_set_model_round_trips_back_and_forth ... ok
test config::edit::tests::blocking_clear_path_noop_when_missing ... ok
test config::edit::tests::blocking_record_model_migration_seen_preserves_table ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_after_removing_keys ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_prefix_on_update ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_suffix ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comments ... ok
test config::edit::tests::blocking_replace_mcp_servers_round_trips ... ok
test config::edit::tests::blocking_set_hide_full_access_warning_preserves_table ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_workspace_mismatch ... ok
test config::edit::tests::blocking_set_asynchronous_helpers_available ... ok
test config::edit::tests::blocking_set_hide_gpt5_1_migration_prompt_preserves_table ... ok
test config::edit::tests::blocking_set_hide_gpt_5_1_codex_max_migration_prompt_preserves_table ... ok
test codex::tests::set_rate_limits_retains_previous_credits ... ok
test config::edit::tests::blocking_set_hide_rate_limit_model_nudge_preserves_table ... ok
test config::edit::tests::blocking_set_model_top_level ... ok
test config::edit::tests::blocking_set_model_preserves_inline_table_contents ... ok
test config::edit::tests::blocking_set_model_scopes_to_active_profile ... ok
test config::edit::tests::blocking_set_model_with_explicit_profile ... ok
test config::notifications_tests::test_tui_notifications_custom_array ... ok
test config::notifications_tests::test_tui_notifications_true ... ok
test config::edit::tests::blocking_set_path_updates_notifications ... ok
test config::edit::tests::builder_with_edits_applies_custom_paths ... ok
test config::edit::tests::replace_mcp_servers_blocking_clears_table_when_empty ... ok
test config::service::tests::toml_value_to_item_handles_nested_config_tables ... ok
test auth::tests::loads_api_key_from_auth_json ... ok
test codex::tests::set_rate_limits_updates_plan_type_when_present ... ok
test config::service::tests::invalid_user_value_rejected_even_if_overridden_by_managed ... ok
test codex::tests::record_model_warning_appends_user_message ... ok
test config::service::tests::write_value_defaults_to_user_config_path ... ok
test auth::tests::pro_account_with_no_api_key_uses_chatgpt_auth ... ok
test config::service::tests::read_reports_managed_overrides_user_and_session_flags ... ok
test config::service::tests::version_conflict_rejected ... ok
test config::service::tests::write_value_reports_managed_override ... ok
test config::service::tests::read_includes_origins_and_layers ... ok
test config::service::tests::write_value_preserves_comments_and_order ... ok
test config::service::tests::upsert_merges_tables_replace_overwrites ... ok
test codex::tests::unified_exec_rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::service::tests::write_value_reports_override ... ok
test codex_delegate::tests::forward_events_cancelled_while_send_blocked_shuts_down_delegate ... ok
test config::tests::add_dir_override_extends_workspace_writable_roots ... ok
test codex::tests::rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::tests::load_global_mcp_servers_accepts_legacy_ms_field ... ok
test config::tests::load_global_mcp_servers_rejects_inline_bearer_token ... ok
test config::tests::cli_override_takes_precedence_over_profile_sandbox_mode ... ok
test config::tests::load_global_mcp_servers_returns_empty_if_missing ... ok
test config::tests::managed_config_wins_over_cli_overrides ... ok
test config::tests::cli_override_sets_compact_prompt ... ok
test config::tests::config_defaults_to_file_cli_auth_store_mode ... ok
test config::tests::config_defaults_to_auto_oauth_store_mode ... ok
test config::tests::replace_mcp_servers_serializes_cwd ... ok
test config::tests::config_honors_explicit_file_oauth_store_mode ... ok
test config::tests::replace_mcp_servers_round_trips_entries ... ok
test config::tests::legacy_toggles_map_to_features ... ok
test config::tests::config_honors_explicit_keyring_auth_store_mode ... ok
test config::tests::profile_sandbox_mode_overrides_base ... ok
test config::tests::feature_table_overrides_legacy_flags ... ok
test config::tests::replace_mcp_servers_serializes_disabled_flag ... ok
test config::tests::replace_mcp_servers_serializes_env_sorted ... ok
test config::tests::replace_mcp_servers_serializes_env_vars ... ok
test config::tests::replace_mcp_servers_streamable_http_isolates_headers_between_servers ... ok
test config::tests::replace_mcp_servers_serializes_tool_filters ... ok
test config::tests::set_model_updates_defaults ... ok
test config::tests::set_model_overwrites_existing_model ... ok
test config::tests::loads_compact_prompt_from_file ... ok
test config::tests::set_model_updates_existing_profile ... ok
test config::tests::set_model_updates_profile ... ok
test config::tests::test_resolve_oss_provider_explicit_override ... ok
test config::tests::test_resolve_oss_provider_explicit_overrides_all ... ok
test config::tests::test_resolve_oss_provider_from_global_config ... ok
test config::tests::test_resolve_oss_provider_from_profile ... ok
test config::tests::test_resolve_oss_provider_none_when_not_configured ... ok
test config::tests::test_resolve_oss_provider_profile_fallback_to_global ... ok
test config::tests::replace_mcp_servers_streamable_http_removes_optional_sections ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_custom_headers ... ok
test config::tests::test_set_project_trusted_converts_inline_to_explicit ... ok
test config::tests::test_set_project_trusted_migrates_top_level_inline_projects_preserving_entries ... ok
test config::tests::test_set_project_trusted_writes_explicit_tables ... ok
test config::tests::test_toml_parsing ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_bearer_token ... ok
test config::tests::test_untrusted_project_gets_workspace_write_sandbox ... ok
test config::tests::tui_config_missing_notifications_field_defaults_to_enabled ... ok
test config::types::tests::deserialize_disabled_server_config ... ok
test config::types::tests::deserialize_rejects_command_and_url ... ok
test config::types::tests::deserialize_rejects_env_for_http_transport ... ok
test config::types::tests::deserialize_rejects_headers_for_stdio ... ok
test config::types::tests::deserialize_rejects_inline_bearer_token_field ... ok
test config::types::tests::deserialize_server_config_with_tool_filters ... ok
test config::types::tests::deserialize_stdio_command_server_config ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_arg_with_args_and_env ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_args ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_cwd ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_env_vars ... ok
test config::types::tests::deserialize_streamable_http_server_config ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_env_var ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_headers ... ok
test config_loader::config_requirements::tests::deserialize_allowed_approval_policies ... ok
test config_loader::config_requirements::tests::deserialize_allowed_sandbox_modes ... ok
test config_loader::config_requirements::tests::merge_unset_fields_only_fills_missing_values ... ok
test config::tests::test_untrusted_project_gets_unless_trusted_approval_policy ... ok
test config::tests::test_sandbox_config_parsing ... ok
test config::tests::test_set_default_oss_provider ... ok
test config_loader::tests::load_requirements_toml_produces_expected_constraints ... ok
test config::tests::profile_legacy_toggles_override_base ... ok
test config_loader::tests::managed_preferences_requirements_are_applied ... ok
test config::tests::managed_config_overrides_oauth_store_mode ... ok
test config_loader::tests::managed_preferences_requirements_take_precedence ... ok
test config_loader::tests::managed_preferences_take_highest_precedence ... ok
test config_loader::tests::merges_managed_config_layer_on_top ... ok
test config_loader::unit_tests::ensure_resolve_relative_paths_in_config_toml_preserves_all_fields ... ok
test context_manager::history::tests::filters_non_api_messages ... ok
test config_loader::tests::project_layer_is_added_when_dot_codex_exists_without_config_toml ... ok
test config_loader::tests::returns_empty_when_all_layers_missing ... ok
test context_manager::history::tests::format_exec_output_marks_byte_truncation_without_omitted_lines ... ok
test context_manager::history::tests::format_exec_output_returns_original_when_within_limits ... ok
test config::tests::test_precedence_fixture_with_gpt5_profile ... ok
test context_manager::history::tests::get_history_for_prompt_drops_ghost_commits ... ok
test context_manager::history::tests::non_last_reasoning_tokens_ignore_entries_after_last_user ... ok
test context_manager::history::tests::non_last_reasoning_tokens_return_zero_when_no_user_messages ... ok
test context_manager::history::tests::normalization_retains_local_shell_outputs ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_custom_tool_call_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_function_call_inserts_output ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_local_shell_call_with_id_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_mixed_inserts_and_removals_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_custom_tool_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_function_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::format_exec_output_prefers_line_marker_when_both_limits_exceeded ... ok
test context_manager::history::tests::record_items_respects_custom_token_limit ... ok
test context_manager::history::tests::format_exec_output_truncates_large_error ... ok
test context_manager::history::tests::remove_first_item_handles_custom_tool_pair ... ok
test context_manager::history::tests::remove_first_item_handles_local_shell_pair ... ok
test context_manager::history::tests::remove_first_item_removes_matching_call_for_output ... ok
test context_manager::history::tests::remove_first_item_removes_matching_output_for_function_call ... ok
test context_manager::history::tests::record_items_truncates_function_call_output_content ... ok
test conversation_manager::tests::drops_from_last_user_only ... ok
test context_manager::history::tests::record_items_truncates_custom_tool_call_output_content ... ok
test config::tests::test_precedence_fixture_with_o3_profile ... ok
test custom_prompts::tests::empty_when_dir_missing ... ok
test config::tests::test_precedence_fixture_with_zdr_profile ... ok
test custom_prompts::tests::parse_frontmatter_preserves_body_newlines ... ok
test context_manager::history::tests::format_exec_output_reports_omitted_lines_and_keeps_head_and_tail ... ok
test config_loader::tests::project_layers_prefer_closest_cwd ... ok
test custom_prompts::tests::discovers_symlinked_md_files ... ok
test custom_prompts::tests::parses_frontmatter_and_strips_from_body ... ok
test default_client::tests::test_invalid_suffix_is_sanitized ... ok
test default_client::tests::test_invalid_suffix_is_sanitized2 ... ok
test custom_prompts::tests::discovers_and_sorts_files ... ok
test config_loader::tests::project_root_markers_supports_alternate_markers ... ok
test environment_context::tests::equals_except_shell_compares_sandbox_policy ... ok
test custom_prompts::tests::excludes_builtins ... ok
test environment_context::tests::equals_except_shell_compares_approval_policy ... ok
test environment_context::tests::serialize_external_sandbox_environment_context ... ok
test environment_context::tests::serialize_external_sandbox_with_restricted_network_environment_context ... ok
test environment_context::tests::serialize_full_access_environment_context ... ok
test environment_context::tests::serialize_read_only_environment_context ... ok
test custom_prompts::tests::skips_non_utf8_files ... ok
test error::tests::sandbox_denied_reports_both_streams_when_available ... ok
test error::tests::sandbox_denied_reports_exit_code_when_no_output_available ... ok
test error::tests::sandbox_denied_reports_stdout_when_no_stderr ... ok
test error::tests::sandbox_denied_uses_aggregated_output_when_stderr_empty ... ok
test error::tests::to_error_event_handles_response_stream_failed ... ok
test environment_context::tests::equals_except_shell_compares_workspace_write_policy ... ok
test error::tests::unexpected_status_cloudflare_html_is_simplified ... ok
test error::tests::unexpected_status_non_html_is_unchanged ... ok
test error::tests::usage_limit_reached_error_formats_business_plan_without_reset ... ok
test error::tests::usage_limit_reached_error_formats_default_when_none ... ok
test error::tests::usage_limit_reached_error_formats_default_for_other_plans ... ok
test error::tests::usage_limit_reached_error_formats_free_plan ... ok
test error::tests::usage_limit_reached_error_formats_plus_plan ... ok
test error::tests::usage_limit_reached_error_formats_pro_plan_with_reset ... ok
test error::tests::usage_limit_reached_error_formats_team_plan ... ok
test config::tests::test_did_user_set_custom_approval_policy_or_sandbox_mode_defaults_no ... ok
test error::tests::usage_limit_reached_includes_days_hours_minutes ... ok
test environment_context::tests::equals_except_shell_ignores_shell ... ok
test event_mapping::tests::parses_agent_message ... ok
test event_mapping::tests::parses_reasoning_including_raw_content ... ok
test event_mapping::tests::parses_reasoning_summary_and_raw_content ... ok
test event_mapping::tests::parses_user_message_with_text_and_two_images ... ok
test event_mapping::tests::parses_web_search_call ... ok
test event_mapping::tests::skips_user_instructions_and_env ... ok
test error::tests::usage_limit_reached_includes_minutes_when_available ... ok
test error::tests::usage_limit_reached_includes_hours_and_minutes ... ok
test default_client::tests::test_macos ... ok
test exec::tests::sandbox_detection_flags_sigsys_exit_code ... ok
test environment_context::tests::serialize_workspace_write_environment_context ... ok
test exec::tests::sandbox_detection_identifies_keyword_in_stderr ... ok
test exec::tests::sandbox_detection_ignores_non_sandbox_mode ... ok
test exec::tests::sandbox_detection_requires_keywords ... ok
test exec::tests::sandbox_detection_respects_quick_reject_exit_codes ... ok
test exec::tests::sandbox_detection_uses_aggregated_output ... ok
test error::tests::usage_limit_reached_less_than_minute ... ok
test exec_env::tests::test_core_inherit_defaults_keep_sensitive_vars ... ok
test exec_env::tests::test_core_inherit_with_default_excludes_enabled ... ok
test exec_env::tests::test_include_only ... ok
test exec_env::tests::test_inherit_all ... ok
test exec_env::tests::test_inherit_all_with_default_excludes ... ok
test exec_env::tests::test_inherit_none ... ok
test exec_env::tests::test_set_overrides ... ok
test default_client::tests::test_get_codex_user_agent ... ok
test exec_policy::tests::exec_approval_requirement_falls_back_to_heuristics ... ok
test exec_policy::tests::append_execpolicy_amendment_rejects_empty_prefix ... ok
test exec_policy::tests::collect_policy_files_returns_empty_when_dir_missing ... ok
test exec_policy::tests::append_execpolicy_amendment_updates_policy_and_file ... ok
test default_client::tests::test_create_client_sets_default_headers ... ok
test exec_policy::tests::ignores_policies_outside_policy_dir ... ok
test config::tests::test_precedence_fixture_with_gpt3_profile ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_disabled_when_execpolicy_feature_disabled ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_omitted_when_policy_prompts ... ok
test exec_policy::tests::exec_approval_requirement_respects_approval_policy ... ok
test exec_policy::tests::exec_approval_requirement_prefers_execpolicy_match ... ok
test exec_policy::tests::evaluates_bash_lc_inner_commands ... ok
test exec_policy::tests::heuristics_apply_when_other_commands_match_policy ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_single_command_without_policy_match ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_when_heuristics_allow ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_multi_command_scripts ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_suppressed_when_policy_matches_allow ... ok
test exec_policy::tests::proposed_execpolicy_amendment_uses_first_no_match_in_multi_command_scripts ... ok
test exec_policy::tests::returns_empty_policy_when_feature_disabled ... ok
test exec_policy::tests::loads_policies_from_policy_subdirectory ... ok
test exec_policy::tests::loads_policies_from_multiple_config_layers ... ok
test config_loader::tests::project_paths_resolve_relative_to_dot_codex_and_override_in_order ... ok
test git_info::tests::resolve_root_git_project_for_trust_returns_none_outside_repo ... ok
test git_info::tests::test_collect_git_info_non_git_directory ... ok
test git_info::tests::resolve_root_git_project_for_trust_non_worktrees_gitdir_returns_none ... ok
test conversation_manager::tests::ignores_session_prefix_messages_when_truncating ... ok
test client_common::tests::get_full_instructions_no_user_content ... ok
test exec::tests::kill_child_process_group_kills_grandchildren_on_timeout ... ok
test git_info::tests::test_git_info_serialization ... ok
test git_info::tests::test_git_info_serialization_with_nones ... ok
test git_info::tests::test_recent_commits_non_git_directory_returns_empty ... ok
test git_info::tests::test_collect_git_info_git_repository ... ok
test mcp::tests::group_tools_by_server_strips_prefix_and_groups ... ok
test mcp::tests::split_qualified_tool_name_rejects_invalid_names ... ok
test mcp::tests::split_qualified_tool_name_returns_server_and_tool ... ok
test mcp_connection_manager::tests::filter_tools_applies_per_server_filters ... ok
test mcp_connection_manager::tests::mcp_init_error_display_includes_startup_timeout_hint ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_github_pat ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_login_when_auth_required ... ok
test mcp_connection_manager::tests::mcp_init_error_display_reports_generic_errors ... ok
test mcp_connection_manager::tests::test_qualify_tools_duplicated_names_skipped ... ok
test mcp_connection_manager::tests::test_qualify_tools_long_names_same_server ... ok
test mcp_connection_manager::tests::test_qualify_tools_sanitizes_invalid_characters ... ok
test mcp_connection_manager::tests::test_qualify_tools_short_non_duplicated_names ... ok
test mcp_connection_manager::tests::tool_filter_allows_by_default ... ok
test mcp_connection_manager::tests::tool_filter_applies_disabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_then_disabled ... ok
test git_info::tests::resolve_root_git_project_for_trust_regular_repo_returns_repo_root ... ok
test message_history::tests::append_entry_trims_history_to_soft_cap ... ok
test message_history::tests::append_entry_trims_history_when_beyond_max_bytes ... ok
test message_history::tests::lookup_reads_history_entries ... ok
test model_provider_info::tests::detects_azure_responses_base_urls ... ok
test model_provider_info::tests::test_deserialize_azure_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_example_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_ollama_model_provider_toml ... ok
test message_history::tests::lookup_uses_stable_log_id_after_appends ... ok
test models_manager::manager::tests::bundled_models_json_roundtrips ... ok
test models_manager::manager::tests::build_available_models_picks_default_after_hiding_hidden_models ... ok
test git_info::tests::test_collect_git_info_with_branch ... ok
test git_info::tests::test_collect_git_info_detached_head ... ok
test git_info::tests::test_collect_git_info_with_remote ... ok
test models_manager::model_family::tests::remote_overrides_apply_extended_metadata ... ok
test models_manager::model_family::tests::remote_overrides_apply_when_slug_matches ... ok
test models_manager::model_family::tests::remote_overrides_skip_non_matching_models ... ok
test models_manager::model_presets::tests::only_one_default_model_is_configured ... ok
test parse_command::tests::bash_cd_then_bar_is_same_as_bar ... ok
test parse_command::tests::bash_cd_then_cat_is_read ... ok
test parse_command::tests::bash_dash_c_pipeline_parsing ... ok
test parse_command::tests::bash_lc_redirect_not_quoted ... ok
test parse_command::tests::bin_bash_lc_sed ... ok
test parse_command::tests::bin_zsh_lc_sed ... ok
test parse_command::tests::cat_with_double_dash_and_sed_ranges ... ok
test parse_command::tests::cd_then_cat_is_single_read ... ok
test parse_command::tests::drop_trailing_nl_in_pipeline ... ok
test parse_command::tests::drops_yes_in_pipelines ... ok
test parse_command::tests::empty_tokens_is_not_small ... ok
test parse_command::tests::fd_file_finder_variants ... ok
test parse_command::tests::filters_out_printf ... ok
test parse_command::tests::find_basic_name_filter ... ok
test parse_command::tests::find_type_only_path ... ok
test parse_command::tests::git_status_is_unknown ... ok
test parse_command::tests::grep_with_query_and_path ... ok
test parse_command::tests::handles_complex_bash_command ... ok
test parse_command::tests::handles_complex_bash_command_head ... ok
test parse_command::tests::handles_git_pipe_wc ... ok
test parse_command::tests::head_behavior ... ok
test parse_command::tests::head_with_no_space ... ok
test parse_command::tests::ls_with_glob ... ok
test parse_command::tests::ls_with_time_style_and_path ... ok
test parse_command::tests::parses_mixed_sequence_with_pipes_semicolons_and_or ... ok
test parse_command::tests::powershell_command_is_stripped ... ok
test parse_command::tests::powershell_with_path_is_stripped ... ok
test parse_command::tests::preserves_rg_with_spaces ... ok
test parse_command::tests::pwsh_with_noprofile_and_c_alias_is_stripped ... ok
test parse_command::tests::rg_with_equals_style_flags ... ok
test parse_command::tests::sed_behavior ... ok
test parse_command::tests::shorten_path_on_windows ... ok
test parse_command::tests::small_formatting_always_true_commands ... ok
test parse_command::tests::split_on_or_connector ... ok
test parse_command::tests::strips_true_in_sequence ... ok
test parse_command::tests::strips_true_inside_bash_lc ... ok
test parse_command::tests::supports_cat ... ok
test parse_command::tests::supports_cat_sed_n ... ok
test parse_command::tests::supports_cd_and_rg_files ... ok
test parse_command::tests::supports_grep_query_with_slashes_not_shortened ... ok
test parse_command::tests::supports_grep_recursive_current_dir ... ok
test parse_command::tests::supports_grep_recursive_specific_file ... ok
test parse_command::tests::supports_grep_weird_backtick_in_query ... ok
test parse_command::tests::supports_head_file_only ... ok
test parse_command::tests::supports_head_n ... ok
test parse_command::tests::supports_ls_with_pipe ... ok
test parse_command::tests::supports_nl_then_sed_reading ... ok
test parse_command::tests::supports_npm_run_build_is_unknown ... ok
test parse_command::tests::supports_rg_files_then_head ... ok
test parse_command::tests::supports_rg_files_with_path_and_pipe ... ok
test parse_command::tests::supports_searching_for_navigate_to_route ... ok
test parse_command::tests::supports_sed_n ... ok
test parse_command::tests::supports_sed_n_then_nl_as_search ... ok
test parse_command::tests::supports_single_string_script_with_cd_and_pipe ... ok
test parse_command::tests::supports_tail_file_only ... ok
test parse_command::tests::supports_tail_n_last_lines ... ok
test parse_command::tests::supports_tail_n_plus ... ok
test parse_command::tests::tail_behavior ... ok
test parse_command::tests::tail_with_no_space ... ok
test parse_command::tests::trim_on_semicolon ... ok
test parse_command::tests::zsh_lc_supports_cat ... ok
test powershell::tests::extracts_basic_powershell_command ... ok
test powershell::tests::extracts_full_path_powershell_command ... ok
test powershell::tests::extracts_lowercase_flags ... ok
test powershell::tests::extracts_with_noprofile_and_alias ... ok
test git_info::tests::resolve_root_git_project_for_trust_detects_worktree_and_returns_main_root ... ok
test models_manager::manager::tests::refresh_available_models_drops_removed_remote_models ... ok
test models_manager::manager::tests::refresh_available_models_sorts_and_marks_default ... ok
test models_manager::manager::tests::refresh_available_models_refetches_when_cache_stale ... ok
test project_doc::tests::agents_local_md_preferred ... ok
test exec::tests::process_exec_tool_call_respects_cancellation_token ... ok
test models_manager::manager::tests::refresh_available_models_uses_cache_when_fresh ... ok
test project_doc::tests::agents_md_preferred_over_fallbacks ... ok
test project_doc::tests::doc_larger_than_limit_is_truncated ... ok
test project_doc::tests::concatenates_root_and_cwd_docs ... ok
test project_doc::tests::finds_doc_in_repo_root ... ok
test project_doc::tests::keeps_existing_instructions_when_doc_missing ... ok
test project_doc::tests::doc_smaller_than_limit_is_returned ... ok
test project_doc::tests::merges_existing_instructions_with_project_doc ... ok
test rollout::tests::test_get_conversation_contents ... ok
test project_doc::tests::no_doc_file_returns_none ... ok
test rollout::tests::test_list_conversations_latest_first ... ok
test rollout::tests::test_model_provider_filter_selects_only_matching_sessions ... ok
test rollout::tests::test_source_filter_excludes_non_matching_sessions ... ok
test project_doc::tests::uses_configured_fallback_when_agents_missing ... ok
test safety::tests::external_sandbox_auto_approves_in_on_request ... ok
test safety::tests::test_writable_roots_constraint ... ok
test rollout::tests::test_stable_ordering_same_second_pagination ... ok
test rollout::tests::test_pagination_cursor ... ok
test shell::detect_shell_type_tests::test_detect_shell_type ... ok
test rollout::tests::test_updated_at_uses_file_mtime ... ok
test shell::tests::derive_exec_args ... ok
test shell::tests::detects_bash ... ok
test shell::tests::detects_powershell_as_default ... ok
test shell::tests::detects_sh ... ok
test shell::tests::detects_zsh ... ok
test shell::tests::finds_poweshell ... ok
test shell::tests::fish_fallback_to_zsh ... ok
test project_doc::tests::zero_byte_limit_disables_docs ... ok
test project_doc::tests::skills_are_appended_to_project_doc ... ok
test shell_snapshot::tests::strip_snapshot_preamble_removes_leading_output ... ok
test shell_snapshot::tests::strip_snapshot_preamble_requires_marker ... ok
test shell::tests::test_current_shell_detects_zsh ... ok
test project_doc::tests::skills_render_without_project_doc ... ok
test shell::tests::can_run_on_shell_test ... ok
test skills::loader::tests::deduplicates_by_name_preferring_system_over_admin ... ok
test shell_snapshot::tests::try_new_creates_and_deletes_snapshot_file ... ok
test shell_snapshot::tests::macos_zsh_snapshot_includes_sections ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpWhUbzf/.git/
test seatbelt::tests::create_seatbelt_args_for_cwd_as_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpk1D44W/.git/
test skills::loader::tests::deduplicates_by_name_preferring_user_over_system ... ok
test skills::loader::tests::enforces_short_description_length_limits ... ok
test seatbelt::tests::create_seatbelt_args_with_read_only_git_and_codex_subpaths ... ok
test skills::loader::tests::enforces_length_limits ... ok
test skills::loader::tests::loads_short_description_from_metadata ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_system ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_user ... ok
test skills::loader::tests::loads_skills_from_codex_dir_when_not_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpEFr9bb/.git/
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpVRTZKd/.git/
test skills::loader::tests::loads_skills_from_system_cache_when_present ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmp1BOwhA/.git/
test skills::loader::tests::loads_system_skills_when_present ... ok
test skills::loader::tests::loads_valid_skill ... ok
test skills::loader::tests::non_git_repo_skills_search_does_not_walk_parents ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_disabled_when_threshold_disabled ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_includes_threshold ... ok
test terminal::tests::detects_alacritty ... ok
test terminal::tests::detects_apple_terminal ... ok
test terminal::tests::detects_ghostty ... ok
test terminal::tests::detects_gnome_terminal ... ok
test terminal::tests::detects_iterm2 ... ok
test terminal::tests::detects_kitty ... ok
test terminal::tests::detects_konsole ... ok
test terminal::tests::detects_term_fallbacks ... ok
test terminal::tests::detects_term_program ... ok
test terminal::tests::detects_tmux_client_termname ... ok
test terminal::tests::detects_tmux_client_termtype ... ok
test terminal::tests::detects_tmux_multiplexer ... ok
test terminal::tests::detects_tmux_term_program_uses_client_termtype ... ok
test terminal::tests::detects_vscode ... ok
test terminal::tests::detects_vte ... ok
test terminal::tests::detects_warp_terminal ... ok
test terminal::tests::detects_wezterm ... ok
test terminal::tests::detects_windows_terminal ... ok
test terminal::tests::detects_zellij_multiplexer ... ok
test text_encoding::tests::test_cp1251_privet_word ... ok
test text_encoding::tests::test_cp1251_russian_text ... ok
test text_encoding::tests::test_cp866_russian_text ... ok
test text_encoding::tests::test_cp866_uppercase_followed_by_ascii ... ok
test text_encoding::tests::test_cp866_uppercase_text ... ok
test text_encoding::tests::test_fallback_to_lossy ... ok
test text_encoding::tests::test_iso8859_10_nordic_text ... ok
test text_encoding::tests::test_iso8859_11_thai_text ... ok
test text_encoding::tests::test_iso8859_13_baltic_text ... ok
test text_encoding::tests::test_iso8859_1_latin_text ... ok
test text_encoding::tests::test_iso8859_2_central_european_text ... ok
test text_encoding::tests::test_iso8859_3_south_europe_text ... ok
test text_encoding::tests::test_iso8859_4_baltic_text ... ok
test text_encoding::tests::test_iso8859_5_cyrillic_text ... ok
test text_encoding::tests::test_iso8859_6_arabic_text ... ok
test text_encoding::tests::test_iso8859_7_greek_text ... ok
test text_encoding::tests::test_iso8859_8_hebrew_text ... ok
test text_encoding::tests::test_iso8859_9_turkish_text ... ok
test text_encoding::tests::test_koi8_r_privet_word ... ok
test text_encoding::tests::test_latin1_cafe ... ok
test text_encoding::tests::test_preserves_ansi_sequences ... ok
test text_encoding::tests::test_utf8_passthrough ... ok
test text_encoding::tests::test_windows_1250_central_european_text ... ok
test text_encoding::tests::test_windows_1251_encoded_text ... ok
test text_encoding::tests::test_windows_1252_multiple_quotes ... ok
test text_encoding::tests::test_windows_1252_privet_gibberish_is_preserved ... ok
test text_encoding::tests::test_windows_1252_quotes ... ok
test text_encoding::tests::test_windows_1253_greek_text ... ok
test text_encoding::tests::test_windows_1254_turkish_text ... ok
test text_encoding::tests::test_windows_1255_hebrew_text ... ok
test text_encoding::tests::test_windows_1256_arabic_text ... ok
test text_encoding::tests::test_windows_1257_baltic_text ... ok
test text_encoding::tests::test_windows_1258_vietnamese_text ... ok
test text_encoding::tests::test_windows_874_thai_text ... ok
test text_encoding::tests::test_windows_932_shift_jis_text ... ok
test text_encoding::tests::test_windows_936_gbk_text ... ok
test text_encoding::tests::test_windows_949_korean_text ... ok
test text_encoding::tests::test_windows_950_big5_text ... ok
test token_data::tests::id_token_info_handles_missing_fields ... ok
test token_data::tests::id_token_info_parses_email_and_plan ... ok
test tools::context::tests::custom_tool_calls_should_roundtrip_as_custom_outputs ... ok
test tools::context::tests::function_payloads_remain_function_outputs ... ok
test tools::context::tests::telemetry_preview_returns_original_within_limits ... ok
test tools::context::tests::telemetry_preview_truncates_by_bytes ... ok
test tools::context::tests::telemetry_preview_truncates_by_lines ... ok
test tools::handlers::grep_files::tests::parse_truncates_after_limit ... ok
test tools::handlers::grep_files::tests::parses_basic_results ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpaBebae/repo/.git/
test skills::loader::tests::loads_skills_from_repo_root ... ok
test skills::loader::tests::loads_skills_from_nearest_codex_dir_under_repo_root ... ok
test tools::handlers::grep_files::tests::run_search_handles_no_matches ... ok
test skills::loader::tests::loads_skills_when_cwd_is_file_in_repo ... ok
test skills::loader::tests::skill_roots_include_admin_with_lowest_priority_on_unix ... ok
test tools::handlers::grep_files::tests::run_search_respects_limit ... ok
test tools::handlers::grep_files::tests::run_search_returns_results ... ok
test tools::handlers::list_dir::tests::errors_when_offset_exceeds_entries ... ok
test tools::handlers::grep_files::tests::run_search_with_glob_filter ... ok
test tools::handlers::list_dir::tests::handles_large_limit_without_overflow ... ok
test tools::handlers::mcp_resource::tests::call_tool_result_from_content_marks_success ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_all_servers_is_sorted ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_single_server_copies_next_cursor ... ok
test tools::handlers::mcp_resource::tests::parse_arguments_handles_empty_and_json ... ok
test tools::handlers::mcp_resource::tests::resource_with_server_serializes_server_field ... ok
test tools::handlers::mcp_resource::tests::template_with_server_serializes_server_field ... ok
test tools::handlers::read_file::tests::errors_when_offset_exceeds_length ... ok
test tools::handlers::list_dir::tests::bfs_truncation ... ok
test tools::handlers::read_file::tests::indentation_mode_captures_block ... ok
test tools::handlers::read_file::tests::indentation_mode_expands_parents ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_shallow ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_no_headers ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_javascript_sample ... ignored
test skills::loader::tests::skips_hidden_and_invalid ... ok
test tools::handlers::list_dir::tests::lists_directory_entries ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_siblings ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_python_sample ... ok
test tools::handlers::read_file::tests::reads_non_utf8_lines ... ok
test tools::handlers::read_file::tests::reads_requested_range ... ok
test tools::handlers::read_file::tests::indentation_mode_respects_sibling_flag ... ok
test tools::handlers::read_file::tests::respects_limit_even_with_more_lines ... ok
test tools::handlers::shell::tests::shell_command_handler_respects_explicit_login_flag ... ok
test tools::handlers::list_dir::tests::respects_depth_parameter ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_bash_shell ... ok
test tools::handlers::read_file::tests::trims_crlf_endings ... ok
test tools::handlers::read_file::tests::truncates_lines_longer_than_max_length ... ok
test tools::handlers::unified_exec::tests::test_get_command_uses_default_shell_when_unspecified ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_includes_entrypoint_for_node_binary ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_cmd_shell ... ok
test tools::sandboxing::tests::external_sandbox_skips_exec_approval_on_request ... ok
test tools::sandboxing::tests::restricted_sandbox_requires_exec_approval_on_request ... ok
test tools::spec::tests::chat_tools_include_top_level_name ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_skips_entrypoint_for_codex_binary ... ok
test tools::handlers::shell::tests::commands_generated_by_shell_command_handler_can_be_matched_by_is_known_safe_command ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_powershell_shell ... ok
test tools::handlers::list_dir::tests::indicates_truncated_results ... ok
test skills::loader::tests::repo_skills_search_does_not_escape_repo_root ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_default ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_default ... ok
test tools::spec::tests::test_build_specs_default_shell_present ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_mcp_tools_converted ... ok
test tools::handlers::shell::tests::shell_command_handler_to_exec_params_uses_session_shell_and_turn_context ... ok
test tools::spec::tests::test_build_specs_mcp_tools_sorted_by_name ... ok
test tools::spec::tests::test_codex_5_1_mini_defaults ... ok
test tools::spec::tests::test_codex_mini_defaults ... ok
test tools::spec::tests::test_codex_mini_unified_exec_web_search ... ok
test git_info::tests::test_get_git_working_tree_state_clean_repo ... ok
test tools::spec::tests::test_exp_5_1_defaults ... ok
test tools::spec::tests::test_full_toolset_specs_for_gpt5_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_parallel_support_flags ... ignored
test tools::spec::tests::test_shell_command_tool ... ok
test tools::spec::tests::test_shell_tool ... ok
test tools::spec::tests::test_get_openai_tools_mcp_tools_with_additional_properties_schema ... ok
test truncate::tests::split_string_handles_empty_string ... ok
test truncate::tests::split_string_handles_overlapping_budgets_without_removal ... ok
test truncate::tests::split_string_only_keeps_prefix_when_tail_budget_is_zero ... ok
test truncate::tests::split_string_only_keeps_suffix_when_prefix_budget_is_zero ... ok
test truncate::tests::split_string_respects_utf8_boundaries ... ok
test truncate::tests::split_string_works ... ok
test truncate::tests::truncate_bytes_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_bytes_over_limit_returns_truncated ... ok
test truncate::tests::truncate_bytes_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_bytes_under_limit_returns_original ... ok
test truncate::tests::truncate_middle_bytes_handles_utf8_content ... ok
test truncate::tests::truncate_middle_tokens_handles_utf8_content ... ok
test truncate::tests::truncate_tokens_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_tokens_over_limit_returns_truncated ... ok
test truncate::tests::truncate_tokens_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_tokens_under_limit_returns_original ... ok
test truncate::tests::truncate_with_token_budget_reports_truncation_at_zero_limit ... ok
test truncate::tests::truncate_with_token_budget_returns_original_when_under_limit ... ok
test truncate::tests::truncates_across_multiple_under_limit_texts_and_reports_omitted ... ok
test turn_diff_tracker::tests::accumulates_add_and_update ... ok
test turn_diff_tracker::tests::accumulates_delete ... ok
test tools::spec::tests::test_gpt_5_1_defaults ... ok
test turn_diff_tracker::tests::accumulates_move_and_update ... ok
test turn_diff_tracker::tests::binary_files_differ_update ... ok
test tools::spec::tests::test_mcp_tool_array_without_items_gets_default_string_items ... ok
test tools::spec::tests::test_mcp_tool_anyof_defaults_to_string ... ok
test turn_diff_tracker::tests::move_declared_but_file_only_appears_at_dest_is_add ... ok
test turn_diff_tracker::tests::filenames_with_spaces_add_and_update ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_avoids_splitting_utf8_codepoints ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_makes_progress_on_invalid_utf8 ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_respects_max_bytes_for_ascii ... ok
test unified_exec::session_manager::tests::pruning_falls_back_to_lru_when_no_exited ... ok
test unified_exec::session_manager::tests::pruning_prefers_exited_sessions_outside_recently_used ... ok
test unified_exec::session_manager::tests::pruning_protects_recent_sessions_even_if_exited ... ok
test unified_exec::session_manager::tests::unified_exec_env_injects_defaults ... ok
test unified_exec::session_manager::tests::unified_exec_env_overrides_existing_values ... ok
test unified_exec::tests::completed_commands_do_not_persist_sessions ... ignored
test tools::spec::tests::test_gpt_5_defaults ... ok
test unified_exec::tests::requests_with_large_timeout_are_capped ... ignored
test unified_exec::tests::push_chunk_trims_only_excess_bytes ... ok
test tools::spec::tests::test_mcp_tool_integer_normalized_to_number ... ok
test turn_diff_tracker::tests::move_without_1change_yields_no_diff ... ok
test user_instructions::tests::test_is_skill_instructions ... ok
test user_instructions::tests::test_is_user_instructions ... ok
test user_instructions::tests::test_skill_instructions ... ok
test user_instructions::tests::test_user_instructions ... ok
test user_notification::tests::test_user_notification ... ok
test user_shell_command::tests::detects_user_shell_command_text_variants ... ok
test turn_diff_tracker::tests::update_persists_across_new_baseline_for_new_file ... ok
test tools::spec::tests::test_mcp_tool_property_missing_type_defaults_to_string ... ok
test util::tests::feedback_tags_macro_compiles ... ok
test util::tests::test_try_parse_error_message ... ok
test util::tests::test_try_parse_error_message_no_error ... ok
test git_info::tests::test_get_git_working_tree_state_with_changes ... ok
test tools::spec::tests::test_test_model_family_includes_sync_tool ... ok
test user_shell_command::tests::formats_basic_record ... ok
test user_shell_command::tests::uses_aggregated_output_over_streams ... ok
test git_info::tests::test_get_git_working_tree_state_unpushed_commit ... ok
test git_info::tests::test_get_git_working_tree_state_branch_fallback ... ok
test git_info::tests::test_recent_commits_orders_and_limits ... ok
test unified_exec::tests::reusing_completed_session_returns_unknown_session ... ok
test unified_exec::tests::unified_exec_persists_across_requests ... ok
test unified_exec::tests::multi_unified_exec_sessions ... ok
test unified_exec::tests::unified_exec_timeouts ... ok

test result: ok. 667 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 16.26s

running 566 tests
test suite::abort_tasks::interrupt_long_running_tool_emits_turn_aborted ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_preserves_success_after_failure ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::abort_tasks::interrupt_tool_records_history_entries ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_across_multiple_tool_calls ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_can_use_shell_command_output_as_patch_input ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_failure_propagates_error_and_skips_diff ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_emits_turn_diff ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_updates_relative_workdir ... ok
test suite::auth_refresh::refresh_token_returns_permanent_error_for_expired_refresh_token ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::auth_refresh::refresh_token_returns_transient_error_on_server_failure ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::auth_refresh::refresh_token_succeeds_updates_storage ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::client::azure_responses_request_includes_store_and_reasoning_ids ... ok
test suite::client::configured_reasoning_summary_is_sent ... ok
test suite::client::configured_verbosity_is_sent ... ok
test suite::client::azure_overrides_assign_properties_used_for_responses_url ... ok
test suite::client::chatgpt_auth_sends_correct_request ... ok
test suite::cli_stream::chat_mode_stream_cli ... ok
test suite::cli_stream::responses_api_stream_cli ... ok
test suite::client::configured_verbosity_not_sent_for_models_without_support ... ok
test suite::cli_stream::exec_cli_applies_experimental_instructions_file ... ok
test suite::approvals::approving_execpolicy_amendment_persists_policy_and_skips_future_prompts ... ok
test suite::cli_stream::integration_creates_and_checks_session_file ... ok
test suite::cli_stream::integration_git_info_unit_test ... ok
test suite::client::includes_configured_effort_in_request ... ok
test suite::client::includes_conversation_id_and_model_headers_in_request ... ok
test suite::client::includes_base_instructions_override_in_request ... ok
test suite::client::history_dedupes_streamed_and_final_messages_across_turns ... ok
test suite::client::includes_developer_instructions_message_in_request ... ok
test suite::client::includes_no_effort_in_request ... ok
test suite::client::reasoning_summary_is_omitted_when_disabled ... ok
test suite::client::skills_append_to_instructions ... ok
test suite::client::includes_user_instructions_message_in_request ... ok
test suite::codex_delegate::codex_delegate_ignores_legacy_deltas ... ok
test suite::codex_delegate::codex_delegate_forwards_patch_approval_and_proceeds_on_decision ... ok
test suite::codex_delegate::codex_delegate_forwards_exec_approval_and_proceeds_on_approval ... ok
test suite::compact::auto_compact_counts_encrypted_reasoning_before_last_user ... ok
test suite::compact::auto_compact_allows_multiple_attempts_when_interleaved_with_other_turn_events ... ok
test suite::compact::auto_compact_persists_rollout_entries ... ok
test suite::compact::auto_compact_runs_after_token_limit_hit ... ok
test suite::compact::auto_compact_runs_after_resume_when_token_usage_is_over_limit ... ok
test suite::compact::auto_compact_triggers_after_function_call_over_95_percent_usage ... ok
test suite::compact::manual_compact_emits_api_and_local_token_usage_events ... ok
test suite::compact::manual_compact_retries_after_context_window_error ... ok
test suite::compact::manual_compact_twice_preserves_latest_user_messages ... ok
test suite::compact::manual_compact_uses_custom_prompt ... ok
test suite::compact::multiple_auto_compact_per_task_runs_after_token_limit_hit ... ok
test suite::compact::summarize_context_three_requests_and_instructions ... ok
test suite::compact_remote::remote_compact_persists_replacement_history_in_rollout ... ok
test suite::compact_remote::remote_compact_replaces_history_for_followups ... ok
test suite::compact_remote::remote_compact_runs_automatically ... ok
test suite::deprecation_notice::emits_deprecation_notice_for_legacy_feature_flag ... ok
test suite::exec::exit_code_0_succeeds ... ok
test suite::exec::exit_command_not_found_is_ok ... ok
test suite::exec::truncates_output_bytes ... ok
test suite::exec::truncates_output_lines ... ok
test suite::exec::write_file_fails_as_sandbox_error ... ok
test suite::exec_policy::execpolicy_blocks_shell_invocation ... ok
test suite::approvals::approval_matrix_covers_all_modes ... ok
test suite::grep_files::grep_files_tool_collects_matches ... ok
test suite::grep_files::grep_files_tool_reports_empty_results ... ok
test suite::items::agent_message_content_delta_has_item_metadata ... ok
test suite::items::assistant_message_item_is_emitted ... ok
test suite::items::reasoning_content_delta_has_item_metadata ... ok
test suite::items::reasoning_item_is_emitted ... ok
test suite::items::reasoning_raw_content_delta_respects_flag ... ok
test suite::items::user_message_item_is_emitted ... ok
test suite::items::web_search_item_is_emitted ... ok
test suite::json_result::codex_returns_json_result_for_gpt5 ... ok
test suite::json_result::codex_returns_json_result_for_gpt5_codex ... ok
test suite::list_dir::list_dir_tool_depth_one_omits_children ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_depth_three_includes_grandchildren ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_depth_two_includes_children_only ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_returns_entries ... ignored, disabled until we enable list_dir tool
test suite::list_models::list_models_returns_api_key_models ... ok
test suite::list_models::list_models_returns_chatgpt_models ... ok
test suite::live_cli::live_create_file_hello_txt ... ignored
test suite::live_cli::live_print_working_directory ... ignored
test suite::model_overrides::override_turn_context_does_not_create_config_file ... ok
test suite::model_overrides::override_turn_context_does_not_persist_when_config_exists ... ok
test suite::model_tools::model_selects_expected_tools ... ok
test suite::models_etag_responses::refresh_models_on_models_etag_mismatch_and_avoid_duplicate_models_fetch ... ok
test suite::otel::handle_container_exec_autoapprove_from_config_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_approved_for_session_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_approved_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_denies_records_tool_decision ... ok
test suite::otel::handle_response_item_records_tool_result_for_custom_tool_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_function_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_local_shell_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_local_shell_missing_ids ... ok
test suite::otel::handle_responses_span_records_response_kind_and_tool_name ... ok
test suite::otel::handle_sandbox_error_user_approves_for_session_records_tool_decision ... ok
test suite::otel::handle_sandbox_error_user_approves_retry_records_tool_decision ... ok
test suite::otel::handle_sandbox_error_user_denies_records_tool_decision ... ok
test suite::otel::process_sse_emits_completed_telemetry ... ok
test suite::otel::process_sse_emits_failed_event_on_parse_error ... ok
test suite::otel::process_sse_emits_tracing_for_output_item ... ok
test suite::otel::process_sse_failed_event_logs_missing_error ... ok
test suite::otel::process_sse_failed_event_logs_parse_error ... ok
test suite::otel::process_sse_failed_event_logs_response_completed_parse_error ... ok
test suite::otel::process_sse_failed_event_records_response_error_message ... ok
test suite::otel::process_sse_records_failed_event_when_stream_closes_without_completed ... ok
test suite::otel::record_responses_sets_span_fields_for_response_events ... ok
test suite::otel::responses_api_emits_api_request_event ... ok
test suite::prompt_caching::codex_mini_latest_tools ... ok
test suite::prompt_caching::override_before_first_turn_emits_environment_context ... ok
test suite::prompt_caching::overrides_turn_context_but_keeps_cached_prefix_and_key_constant ... ok
test suite::prompt_caching::per_turn_overrides_keep_cached_prefix_and_key_constant ... ok
test suite::prompt_caching::prefixes_context_and_instructions_once_and_consistently_across_requests ... ok
test suite::prompt_caching::prompt_tools_are_consistent_across_requests ... ok
test suite::prompt_caching::send_user_turn_with_changes_sends_environment_context ... ok
test suite::prompt_caching::send_user_turn_with_no_changes_does_not_send_environment_context ... ok
test suite::quota_exceeded::quota_exceeded_emits_single_error_event ... ok
test suite::read_file::read_file_tool_returns_requested_lines ... ignored, disabled until we enable read_file tool
test suite::remote_models::remote_models_apply_remote_base_instructions ... ok
test suite::remote_models::remote_models_hide_picker_only_models ... ok
test suite::remote_models::remote_models_preserve_builtin_presets ... ok
test suite::remote_models::remote_models_remote_model_uses_unified_exec ... ok
test suite::resume::resume_includes_initial_messages_from_reasoning_events ... ok
test suite::resume::resume_includes_initial_messages_from_rollout_events ... ok
test suite::resume_warning::emits_warning_when_resumed_model_differs ... ok
test suite::review::review_does_not_emit_agent_message_on_structured_output ... ok
test suite::review::review_filters_agent_message_related_events ... ok
test suite::review::review_history_surfaces_in_parent_session ... ok
test suite::review::review_input_isolated_from_parent_history ... ok
test suite::review::review_op_emits_lifecycle_and_review_output ... ok
test suite::review::review_op_with_plain_text_emits_review_fallback ... ok
test suite::review::review_uses_custom_review_model_from_config ... ok
test suite::review::review_uses_overridden_cwd_for_base_branch_merge_base ... ok
test suite::rmcp_client::stdio_image_completions_round_trip ... ok
test suite::rmcp_client::stdio_image_responses_round_trip ... ok
test suite::rmcp_client::stdio_server_propagates_whitelisted_env_vars ... ok
test suite::rmcp_client::stdio_server_round_trip ... ok
test suite::rmcp_client::streamable_http_tool_call_round_trip ... ok
test suite::rmcp_client::streamable_http_with_oauth_round_trip ... ok
test suite::rollout_list_find::find_handles_gitignore_covering_codex_home_directory ... ok
test suite::rollout_list_find::find_ignores_granular_gitignore_rules ... ok
test suite::rollout_list_find::find_locates_rollout_file_by_id ... ok
test suite::seatbelt::danger_full_access_allows_all_writes ... ok
test suite::seatbelt::if_git_repo_is_writable_root_then_dot_git_folder_is_read_only ... ok
test suite::seatbelt::if_parent_of_repo_is_writable_then_dot_git_folder_is_writable ... ok
test suite::seatbelt::java_home_finds_runtime_under_seatbelt ... ok
test suite::seatbelt::openpty_works_under_seatbelt ... ok
test suite::seatbelt::read_only_allows_writes_to_darwin_user_temp_dir ... ok
test suite::seatbelt::read_only_allows_writes_to_slash_tmp ... ok
test suite::seatbelt::read_only_disallows_writes_to_tmp_when_tmp_is_cwd ... ok
test suite::seatbelt::read_only_forbids_all_writes ... ok
test suite::shell_command::multi_line_output_with_login ... ok
test suite::shell_command::output_with_login ... ok
test suite::shell_command::output_without_login ... ok
test suite::shell_command::pipe_output_with_login ... ok
test suite::shell_command::pipe_output_without_login ... ok
test suite::shell_command::shell_command_times_out_with_timeout_ms ... ok
test suite::shell_command::shell_command_works ... ok
test suite::shell_command::unicode_output::with_login ... ok
test suite::shell_command::unicode_output::with_login ... ok
test suite::shell_command::unicode_output::without_login ... ok
test suite::shell_command::unicode_output::without_login ... ok
test suite::shell_command::unicode_output_with_newlines::with_login ... ok
test suite::shell_command::unicode_output_with_newlines::with_login ... ok
test suite::shell_command::unicode_output_with_newlines::without_login ... ok
test suite::shell_command::unicode_output_with_newlines::without_login ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::local_shell_call_output_is_structured ... ok
test suite::shell_serialization::shell_command_output_is_freeform ... ok
test suite::shell_serialization::shell_command_output_is_not_truncated_over_10k_bytes ... ok
test suite::shell_serialization::shell_command_output_is_not_truncated_under_10k_bytes ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shell_expects ... ok
test suite::client::context_window_error_sets_total_tokens_to_model_window has been running for over 60 seconds
test suite::client::env_var_overrides_loaded_auth has been running for over 60 seconds
test suite::client::includes_default_reasoning_effort_in_request_when_defined_by_model_family has been running for over 60 seconds
test suite::client::includes_default_verbosity_in_request has been running for over 60 seconds
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shellcommand_expects ... ok
test suite::client::prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens has been running for over 60 seconds
test suite::client::resume_includes_initial_messages_and_sends_prior_items has been running for over 60 seconds
test suite::client::token_count_includes_rate_limits_snapshot has been running for over 60 seconds
test suite::client::usage_limit_error_emits_rate_limit_event has been running for over 60 seconds
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_localshell_expects ... ok
test suite::compact_resume_fork::compact_resume_after_second_compaction_preserves_history has been running for over 60 seconds
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shell_expects ... ok
test suite::compact_resume_fork::compact_resume_and_fork_preserve_model_history_view has been running for over 60 seconds
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shellcommand_expects ... ok
test suite::fork_conversation::fork_conversation_twice_drops_to_first_message has been running for over 60 seconds
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_snapshot::linux_shell_command_uses_shell_snapshot ... ok
test suite::shell_snapshot::linux_unified_exec_uses_shell_snapshot ... ignored
test suite::shell_snapshot::macos_unified_exec_uses_shell_snapshot ... ignored, requires unrestricted networking on macOS
test suite::shell_snapshot::shell_command_snapshot_still_intercepts_apply_patch ... ok
test suite::shell_snapshot::shell_snapshot_deleted_after_shutdown_with_skills ... ok
test suite::shell_snapshot::windows_unified_exec_uses_shell_snapshot ... ignored
test suite::skills::list_skills_includes_system_cache_entries ... ok
test suite::skills::skill_load_errors_surface_in_session_configured ... ok
test suite::skills::user_turn_includes_skill_instructions ... ok
test suite::stream_error_allows_next_turn::continue_after_stream_error ... ok
test suite::stream_no_completed::retries_on_early_close ... ok
test suite::text_encoding_fix::test_cp1251_shell_output ... ok
test suite::text_encoding_fix::test_cp866_shell_output ... ok
test suite::text_encoding_fix::test_invalid_bytes_still_fall_back_to_lossy ... ok
test suite::text_encoding_fix::test_mixed_ascii_and_legacy_encoding ... ok
test suite::text_encoding_fix::test_pure_latin1_shell_output ... ok
test suite::text_encoding_fix::test_smart_decoding_improves_over_lossy_utf8 ... ok
test suite::text_encoding_fix::test_utf8_shell_output ... ok
test suite::text_encoding_fix::test_windows_1252_smart_decoding ... ok
test suite::tool_harness::apply_patch_reports_parse_diagnostics ... ok
test suite::tool_harness::apply_patch_tool_executes_and_emits_patch_events ... ok
test suite::tool_harness::shell_tool_executes_command_and_streams_output ... ok
test suite::tool_harness::update_plan_tool_emits_plan_update_event ... ok
test suite::tool_harness::update_plan_tool_rejects_malformed_payload ... ok
test suite::tool_parallelism::mixed_tools_fall_back_to_serial ... ok
test suite::tool_parallelism::non_parallel_tools_run_serially ... ok
test suite::tool_parallelism::read_file_tools_run_in_parallel ... ok
test suite::tool_parallelism::shell_tools_start_before_response_completed_when_stream_delayed ... ok
test suite::tool_parallelism::tool_results_grouped ... ok
test suite::tools::custom_tool_unknown_returns_custom_output_error ... ok
test suite::tools::sandbox_denied_shell_returns_original_output ... ok
test suite::tools::shell_escalated_permissions_rejected_then_ok ... ok
test suite::tools::shell_spawn_failure_truncates_exec_error ... ok
test suite::tools::shell_timeout_handles_background_grandchild_stdout ... ok
test suite::tools::shell_timeout_includes_timeout_prefix_and_metadata ... ok
test suite::tools::unified_exec_spec_toggle_end_to_end ... ok
test suite::truncation::byte_policy_marker_reports_bytes ... ok
test suite::truncation::mcp_image_output_preserves_image_and_no_text_summary ... ok
test suite::truncation::mcp_tool_call_output_exceeds_limit_truncated_for_model ... ok
test suite::truncation::mcp_tool_call_output_not_truncated_with_custom_limit ... ok
test suite::truncation::shell_command_output_not_truncated_with_custom_limit ... ok
test suite::truncation::token_policy_marker_reports_tokens ... ok
test suite::truncation::tool_call_output_configured_limit_chars_type ... ok
test suite::truncation::tool_call_output_exceeds_limit_truncated_chars_limit ... ok
test suite::truncation::tool_call_output_exceeds_limit_truncated_for_model ... ok
test suite::truncation::tool_call_output_truncated_only_once ... ok
test suite::truncation::truncate_function_error_trims_respond_to_model ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmplPHGka/.git/
[main (root-commit) ac46c2a] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main e9a918d] ignore logs directory
1 file changed, 1 insertion(+)
create mode 100644 .gitignore
test suite::undo::undo_does_not_touch_ignored_directory_contents ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpag7dLi/.git/
[main (root-commit) 68d9524] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 1272f73] seed tracked
3 files changed, 3 insertions(+)
create mode 100644 .gitignore
create mode 100644 stable.txt
create mode 100644 target.txt
test suite::undo::undo_does_not_touch_unrelated_files ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmphGSof6/.git/
[main (root-commit) 68d9524] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 8eaa6df] baseline tracked
1 file changed, 1 insertion(+)
create mode 100644 tracked.txt
test suite::undo::undo_overwrites_manual_edits_after_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpPCJEBQ/.git/
[main (root-commit) fdb9e48] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 14329eb] add user file
1 file changed, 1 insertion(+)
create mode 100644 user_file.txt
[main 4430a24] add ai file
1 file changed, 1 insertion(+)
create mode 100644 ai_file.txt
test suite::undo::undo_preserves_unrelated_staged_changes ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpjn6c3V/.git/
[main (root-commit) a4232fe] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
test suite::undo::undo_removes_new_file_created_during_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmphuUi2c/.git/
[main (root-commit) a4232fe] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main ebb8821] add rename target
1 file changed, 1 insertion(+)
create mode 100644 rename_me.txt
test suite::undo::undo_restores_moves_and_renames ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpCvYH8e/.git/
[main (root-commit) 75fd4ba] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main ed2f6ea] track file
1 file changed, 1 insertion(+)
create mode 100644 tracked.txt
test suite::undo::undo_restores_tracked_file_edit ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpx7UhZl/.git/
[main (root-commit) 75fd4ba] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 7319f43] init
test suite::undo::undo_restores_untracked_file_edit ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpWfWanu/.git/
[main (root-commit) cb2ca7b] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
test suite::undo::undo_reverts_only_latest_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpb6qu55/.git/
[main (root-commit) 10b2b9f] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 9ab5457] seed story
1 file changed, 1 insertion(+)
create mode 100644 story.txt
test suite::undo::undo_sequential_turns_consumes_snapshots ... ok
test suite::undo::undo_without_snapshot_reports_failure ... ok
test suite::unified_exec::exec_command_reports_chunk_and_exit_metadata ... ok
test suite::unified_exec::unified_exec_closes_long_running_session_at_turn_end ... ok
test suite::unified_exec::unified_exec_emits_end_event_when_session_dies_via_stdin ... ok
test suite::unified_exec::unified_exec_emits_exec_command_begin_event ... ok
test suite::unified_exec::unified_exec_emits_exec_command_end_event ... ok
test suite::unified_exec::unified_exec_emits_one_begin_and_one_end_event ... ok
test suite::unified_exec::unified_exec_emits_output_delta_for_exec_command ... ok
test suite::unified_exec::unified_exec_emits_terminal_interaction_for_write_stdin ... ok
test suite::unified_exec::unified_exec_formats_large_output_summary ... ok
test suite::unified_exec::unified_exec_full_lifecycle_with_background_end_event ... ok
test suite::unified_exec::unified_exec_intercepts_apply_patch_exec_command ... ok
test suite::unified_exec::unified_exec_prunes_exited_sessions_first ... ignored
test suite::unified_exec::unified_exec_python_prompt_under_seatbelt ... ok
test suite::unified_exec::unified_exec_resolves_relative_workdir ... ok
test suite::unified_exec::unified_exec_respects_early_exit_notifications ... ok
test suite::unified_exec::unified_exec_respects_workdir_override ... ignored, flaky
test suite::unified_exec::unified_exec_reuses_session_via_stdin ... ok
test suite::unified_exec::unified_exec_runs_on_all_platforms ... ok
test suite::unified_exec::unified_exec_runs_under_sandbox ... ok
test suite::unified_exec::unified_exec_streams_after_lagged_output ... ok
test suite::unified_exec::unified_exec_terminal_interaction_captures_delayed_output ... ok
test suite::unified_exec::unified_exec_timeout_and_followup_poll ... ok
test suite::unified_exec::write_stdin_returns_exit_metadata_and_clears_session ... ok
test suite::user_notification::summarize_context_three_requests_and_instructions ... ignored, flaky on ubuntu-24.04-arm - aarch64-unknown-linux-gnu
test suite::user_shell_cmd::user_shell_cmd_can_be_interrupted ... ok
test suite::user_shell_cmd::user_shell_cmd_ls_and_cat_in_temp_dir ... ok
test suite::user_shell_cmd::user_shell_command_history_is_persisted_and_shared_with_model ... ok
test suite::user_shell_cmd::user_shell_command_is_truncated_only_once ... ok
test suite::user_shell_cmd::user_shell_command_output_is_truncated_in_history ... ok
test suite::view_image::user_turn_with_local_image_attaches_image ... ok
test suite::view_image::view_image_tool_attaches_local_image ... ok
test suite::view_image::view_image_tool_errors_when_file_missing ... ok
test suite::view_image::view_image_tool_errors_when_path_is_directory ... ok
test suite::view_image::view_image_tool_placeholder_for_non_image_files ... ok
 ELIFECYCLE  Command failed.
 ELIFECYCLE  Test failed. See above for more details. but appears to sometimes hang at process shutdown; I interrupted it with SIGQUIT after the suite finished executing to avoid blocking.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

More validation (2026-01-05):

  • codex-rs:

    • (1086 passed, 17 skipped)
  • sdk/native:

@codex-native/sdk@0.0.6 build /Users/bytedance/codex-native/sdk/native
npm run build:rust && npm run build:napi && npm run build:ts && npm run verify:build

@codex-native/sdk@0.0.6 build:rust
cargo fmt && cargo clippy --release --features napi-bindings -- -D warnings

@codex-native/sdk@0.0.6 build:napi
napi build --platform --release --features napi-bindings

@codex-native/sdk@0.0.6 build:ts
tsup

CLI Building entry: {"index":"src/index.ts","cli":"src/cli/index.ts"}
CLI Using tsconfig: tsconfig.json
CLI tsup v8.5.0
CLI Using tsup config: /Users/bytedance/codex-native/sdk/native/tsup.config.ts
CLI Target: node18
CLI Cleaning output folder
ESM Build start
CJS Build start
CJS dist/cli.cjs 120.59 KB
CJS dist/index.cjs 159.50 KB
CJS dist/cli.cjs.map 245.98 KB
CJS dist/index.cjs.map 352.17 KB
CJS ⚡️ Build success in 38ms
ESM dist/index.mjs 85.06 KB
ESM dist/cli.mjs 53.42 KB
ESM dist/chunk-HZEXE6DJ.mjs 69.71 KB
ESM dist/index.mjs.map 201.71 KB
ESM dist/cli.mjs.map 98.32 KB
ESM dist/chunk-HZEXE6DJ.mjs.map 149.91 KB
ESM ⚡️ Build success in 38ms
DTS Build start
DTS ⚡️ Build success in 1558ms
DTS dist/cli.d.mts 20.00 B
DTS dist/index.d.mts 78.32 KB
DTS dist/cli.d.ts 20.00 B
DTS dist/index.d.ts 78.32 KB

@codex-native/sdk@0.0.6 verify:build
node -e "const fs=require('fs');const hasNode=fs.readdirSync('.').some(f=>f.endsWith('.node'));const hasDist=fs.existsSync('dist/index.mjs')&&fs.existsSync('dist/index.d.ts');if(!hasNode||!hasDist){console.error('Build incomplete: missing .node or dist files');process.exit(1)}console.log('✓ Build verification passed')"

✓ Build verification passed

@codex-native/sdk@0.0.6 pretest /Users/bytedance/codex-native/sdk/native
node -e "const fs=require('fs');const hasNode=fs.readdirSync('.').some(f=>f.endsWith('.node'));if(!hasNode){process.exitCode=1;console.error('missing .node binary; run npm run build:ci');} else {console.log('✓ native binary present; skipping rebuild');}"

✓ native binary present; skipping rebuild

@codex-native/sdk@0.0.6 test /Users/bytedance/codex-native/sdk/native
node ./scripts/run-jest.mjs --runInBand

 ELIFECYCLE  Test failed. See above for more details. (JS) (fast-embed test downloads the model on first run; then passes)

  • in (Rust) (all passed; fast_embed test ~2m first run due to model download)

Note:

codex-monorepo@ test /Users/bytedance/codex-native
pnpm run ci:codespell && pnpm run ci:shear && pnpm run ci:format && pnpm run test:codex-rs && pnpm run sdk:build && pnpm run sdk:test

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:codespell /Users/bytedance/codex-native
codespell --config .codespellrc

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:shear /Users/bytedance/codex-native
bash -c 'cd codex-rs && cargo shear'

Analyzing /Users/bytedance/codex-native/codex-rs

No unused dependencies!
sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:format /Users/bytedance/codex-native
bash -c 'cd codex-rs && rustup toolchain install nightly --profile minimal >/dev/null && rustup component add rustfmt --toolchain nightly >/dev/null && cargo +nightly fmt -- --config imports_granularity=Item --check'

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ test:codex-rs /Users/bytedance/codex-native
cd codex-rs && cargo test --workspace --all-features

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 25 tests
test requests::chat::tests::groups_consecutive_tool_calls_into_a_single_assistant_message ... ok
test endpoint::compact::tests::errors_when_wire_is_chat ... ok
test requests::responses::tests::azure_default_store_attaches_ids_and_headers ... ok
test requests::chat::tests::attaches_conversation_and_subagent_headers ... ok
test sse::chat::tests::completes_on_done_sentinel_without_json ... ok
test sse::chat::tests::concatenates_tool_call_arguments_across_deltas ... ok
test sse::chat::tests::drops_partial_tool_calls_on_stop_finish_reason ... ok
test endpoint::models::tests::list_models_includes_etag ... ok
test endpoint::models::tests::appends_client_version_query ... ok
test sse::chat::tests::emits_multiple_tool_calls ... ok
test sse::chat::tests::emits_tool_calls_even_when_content_and_reasoning_present ... ok
test endpoint::models::tests::parses_models_response ... ok
test sse::chat::tests::emits_tool_calls_for_multiple_choices ... ok
test sse::chat::tests::preserves_tool_call_name_when_empty_deltas_arrive ... ok
test sse::chat::tests::merges_tool_calls_by_index_when_id_missing_on_subsequent_deltas ... ok
test sse::responses::tests::quota_exceeded_error_is_fatal ... ok
test sse::responses::tests::context_window_error_with_newline_is_fatal ... ok
test sse::responses::tests::context_window_error_is_fatal ... ok
test sse::responses::tests::error_when_missing_completed ... ok
test sse::responses::tests::test_try_parse_retry_after_azure ... ok
test sse::responses::tests::error_when_error_event ... ok
test sse::responses::tests::parses_items_and_completed ... ok
test sse::responses::tests::test_try_parse_retry_after_no_delay ... ok
test sse::responses::tests::test_try_parse_retry_after ... ok
test sse::responses::tests::table_driven_event_kinds ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 6 tests
test streaming_client_adds_auth_headers ... ok
test responses_client_uses_responses_path_for_responses_wire ... ok
test responses_client_uses_chat_path_for_chat_wire ... ok
test chat_client_uses_chat_completions_path_for_chat_wire ... ok
test chat_client_uses_responses_path_for_responses_wire ... ok
test streaming_client_retries_on_transport_error ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 1 test
test models_client_hits_models_endpoint ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 2 tests
test responses_stream_aggregates_output_text_deltas ... ok
test responses_stream_parses_items_and_completed_end_to_end ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 20 tests
test bespoke_event_handling::tests::test_handle_token_count_event_without_usage_info ... ok
test bespoke_event_handling::tests::test_handle_turn_diff_is_noop_for_v1 ... ok
test bespoke_event_handling::tests::test_handle_turn_diff_emits_v2_notification ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_without_args ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_completed_without_error ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_error ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_error_multiple_turns ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_failed_with_error ... ok
test bespoke_event_handling::tests::test_handle_error_records_message ... ok
test bespoke_event_handling::tests::test_handle_token_count_event_emits_usage_and_rate_limits ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_with_args ... ok
test bespoke_event_handling::tests::test_handle_turn_interrupted_emits_interrupted_with_error ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_success ... ok
test bespoke_event_handling::tests::test_handle_turn_plan_update_emits_notification_for_v2 ... ok
test outgoing_message::tests::verify_server_notification_serialization ... ok
test outgoing_message::tests::verify_account_updated_notification_serialization ... ok
test outgoing_message::tests::verify_account_login_completed_notification_serialization ... ok
test outgoing_message::tests::verify_account_rate_limits_notification_serialization ... ok
test codex_message_processor::tests::extract_conversation_summary_prefers_plain_user_messages ... ok
test codex_message_processor::tests::read_summary_from_rollout_returns_empty_preview_when_no_user_message ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 79 tests
test suite::auth::login_api_key_rejected_when_forced_chatgpt ... ok
test suite::auth::get_auth_status_no_auth ... ok
test suite::auth::get_auth_status_with_api_key_no_include_token ... ok
test suite::config::get_config_toml_parses_all_fields ... ok
test suite::auth::get_auth_status_with_api_key_when_auth_not_required ... ok
test suite::auth::get_auth_status_with_api_key ... ok
test suite::config::get_config_toml_empty ... ok
test suite::login::login_chatgpt_includes_forced_workspace_query_param ... ok
test suite::login::login_chatgpt_rejected_when_forced_api ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_sorts_and_includes_indices ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_accepts_cancellation_token ... ok
test suite::archive_conversation::archive_conversation_moves_rollout_into_archived_directory ... ok
test suite::list_resume::list_conversations_fetches_through_filtered_pages ... ok
test suite::create_conversation::test_conversation_create_and_send_message_ok ... ok
test suite::login::logout_chatgpt_removes_auth ... ok
test suite::codex_message_processor_flow::test_codex_jsonrpc_conversation_flow ... ok
test suite::send_message::test_send_message_session_not_found ... ok
test suite::set_default_model::set_default_model_persists_overrides ... ok
test suite::codex_message_processor_flow::test_send_user_turn_updates_sandbox_and_cwd_between_turns ... ok
test suite::v2::account::get_account_no_auth ... ok
test suite::user_agent::get_user_agent_returns_current_codex_user_agent ... ok
test suite::user_info::user_info_returns_email_from_auth_json ... ok
test suite::v2::account::get_account_when_auth_not_required ... ok
test suite::send_message::test_send_message_raw_notifications_opt_in ... ok
test suite::codex_message_processor_flow::test_send_user_turn_changes_approval_policy_behavior ... ok
test suite::v2::account::get_account_with_api_key ... ok
test suite::output_schema::send_user_turn_accepts_output_schema_v1 ... ok
test suite::output_schema::send_user_turn_output_schema_is_per_turn_v1 ... ok
test suite::v2::account::get_account_with_chatgpt ... ok
test suite::v2::account::login_account_api_key_rejected_when_forced_chatgpt ... ok
test suite::list_resume::test_list_and_resume_conversations ... ok
test suite::v2::account::login_account_chatgpt_includes_forced_workspace_query_param ... ok
test suite::v2::account::login_account_api_key_succeeds_and_notifies ... ok
test suite::v2::account::login_account_chatgpt_rejected_when_forced_api ... ok
test suite::v2::account::logout_account_removes_auth_and_notifies ... ok
test suite::v2::config_rpc::config_read_returns_effective_and_layers ... ok
test suite::v2::config_rpc::config_read_includes_system_layer_and_overrides ... ok
test suite::v2::config_rpc::config_batch_write_applies_multiple_edits ... ok
test suite::v2::config_rpc::config_read_includes_tools ... ok
test suite::v2::config_rpc::config_value_write_rejects_version_conflict ... ok
test suite::v2::config_rpc::config_value_write_replaces_value ... ok
test suite::v2::model_list::list_models_pagination_works ... ok
test suite::v2::model_list::list_models_rejects_invalid_cursor ... ok
test suite::v2::model_list::list_models_returns_all_models_with_large_limit ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_auth ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_chatgpt_auth ... ok
test suite::send_message::test_send_message_success ... ok
test suite::v2::output_schema::turn_start_accepts_output_schema_v2 ... ok
test suite::v2::output_schema::turn_start_output_schema_is_per_turn_v2 ... ok
test suite::v2::review::review_start_rejects_empty_commit_sha ... ok
test suite::v2::review::review_start_rejects_empty_base_branch ... ok
test suite::v2::review::review_start_rejects_empty_custom_instructions ... ok
test suite::v2::thread_list::thread_list_basic_empty ... ok
test suite::v2::account::login_account_chatgpt_start_can_be_cancelled ... ok
test suite::v2::review::review_start_runs_review_turn_and_emits_code_review_item ... ok
test suite::v2::rate_limits::get_account_rate_limits_returns_snapshot ... ok
test suite::v2::thread_archive::thread_archive_moves_rollout_into_archived_directory ... ok
test suite::interrupt::test_shell_command_interruption ... ok
test suite::v2::thread_list::thread_list_includes_git_info ... ok
test suite::v2::thread_list::thread_list_respects_provider_filter ... ok
test suite::v2::thread_list::thread_list_pagination_next_cursor_none_on_last_page ... ok
test suite::v2::review::review_start_with_detached_delivery_returns_new_thread_id ... ok
test suite::v2::thread_list::thread_list_fetches_until_limit_or_exhausted ... ok
test suite::v2::thread_list::thread_list_stops_when_not_enough_filtered_results_exist ... ok
test suite::v2::thread_resume::thread_resume_returns_rollout_history ... ok
test suite::v2::thread_resume::thread_resume_prefers_path_over_thread_id ... ok
test suite::v2::thread_start::thread_start_creates_thread_and_emits_started ... ok
test suite::v2::turn_start::turn_start_accepts_local_image_input ... ok
test suite::v2::thread_resume::thread_resume_returns_original_thread ... ok
test suite::v2::turn_start::turn_start_emits_notifications_and_accepts_model_override ... ok
test suite::v2::thread_resume::thread_resume_supports_history_and_overrides ... ok
test suite::v2::thread_list::thread_list_enforces_max_limit ... ok
test suite::v2::turn_start::turn_start_file_change_approval_decline_v2 ... ok
test suite::v2::turn_start::turn_start_exec_approval_decline_v2 ... ok
test suite::v2::turn_start::command_execution_notifications_include_process_id ... ok
test suite::v2::turn_start::turn_start_file_change_approval_v2 ... ok
test suite::v2::turn_start::turn_start_exec_approval_toggle_v2 ... ok
test suite::v2::turn_start::turn_start_updates_sandbox_and_cwd_between_turns_v2 ... ok
test suite::v2::turn_interrupt::turn_interrupt_aborts_running_turn ... ok

test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.93s

running 20 tests
test protocol::common::tests::conversation_id_serializes_as_plain_string ... ok
test protocol::common::tests::serialize_account_login_chatgpt ... ok
test protocol::common::tests::serialize_new_conversation ... ok
test protocol::common::tests::serialize_get_account_rate_limits ... ok
test protocol::common::tests::serialize_account_logout ... ok
test protocol::common::tests::account_serializes_fields_in_camel_case ... ok
test protocol::common::tests::conversation_id_deserializes_from_plain_string ... ok
test protocol::common::tests::serialize_list_models ... ok
test protocol::common::tests::serialize_get_account ... ok
test protocol::common::tests::serialize_client_notification ... ok
test protocol::common::tests::serialize_account_login_api_key ... ok
test protocol::v2::tests::skills_list_params_serialization_uses_force_reload ... ok
test protocol::v2::tests::codex_error_info_serializes_http_status_code_in_camel_case ... ok
test protocol::v2::tests::sandbox_policy_round_trips_external_sandbox_network_access ... ok
test protocol::thread_history::tests::builds_multiple_turns_with_reasoning_items ... ok
test protocol::thread_history::tests::splits_reasoning_when_interleaved ... ok
test protocol::common::tests::serialize_server_request ... ok
test protocol::thread_history::tests::marks_turn_as_interrupted_when_aborted ... ok
test protocol::v2::tests::core_turn_item_into_thread_item_converts_supported_variants ... ok
test export::tests::generated_ts_has_no_optional_nullable_fields ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.69s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 49 tests
test invocation::tests::test_apply_patch_should_resolve_absolute_paths_in_cwd ... ok
test invocation::tests::test_echo_and_apply_patch_is_ignored ... ok
test invocation::tests::test_apply_patch_with_arg_is_ignored ... ok
test invocation::tests::test_cd_pipe_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_two_args_is_ignored ... ok
test invocation::tests::test_cd_single_quoted_path_with_spaces ... ok
test invocation::tests::test_cd_double_quoted_path_with_spaces ... ok
test invocation::tests::test_cmd_heredoc_with_cd ... ok
test invocation::tests::test_cd_with_semicolon_is_ignored ... ok
test invocation::tests::test_double_cd_then_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_or_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_then_apply_patch_then_extra_is_ignored ... ok
test invocation::tests::test_echo_then_cd_and_apply_patch_is_ignored ... ok
test invocation::tests::test_heredoc_applypatch ... ok
test invocation::tests::test_heredoc ... ok
test invocation::tests::test_heredoc_non_login_shell ... ok
test invocation::tests::test_heredoc_with_leading_cd ... ok
test invocation::tests::test_literal ... ok
test invocation::tests::test_literal_applypatch ... ok
test invocation::tests::test_powershell_heredoc ... ok
test invocation::tests::test_powershell_heredoc_no_profile ... ok
test invocation::tests::test_pwsh_heredoc ... ok
test parser::test_parse_one_hunk ... ok
test parser::test_parse_patch ... ok
test parser::test_parse_patch_lenient ... ok
test seek_sequence::tests::test_exact_match_finds_sequence ... ok
test seek_sequence::tests::test_pattern_longer_than_input_returns_none ... ok
test parser::test_update_file_chunk ... ok
test seek_sequence::tests::test_rstrip_match_ignores_trailing_whitespace ... ok
test seek_sequence::tests::test_trim_match_ignores_leading_and_trailing_whitespace ... ok
test invocation::tests::test_implicit_patch_bash_script_is_error ... ok
test invocation::tests::test_implicit_patch_single_arg_is_error ... ok
test invocation::tests::test_apply_patch_resolves_move_path_with_effective_cwd ... ok
test invocation::tests::test_unified_diff_insert_at_eof ... ok
test tests::test_delete_file_hunk_removes_file ... ok
test invocation::tests::test_unified_diff_last_line_replacement ... ok
test tests::test_apply_patch_fails_on_write_error ... ok
test tests::test_add_file_hunk_creates_file_with_contents ... ok
test tests::test_unified_diff_insert_at_eof ... ok
test tests::test_pure_addition_chunk_followed_by_removal ... ok
test tests::test_unified_diff ... ok
test tests::test_unified_diff_first_line_replacement ... ok
test tests::test_multiple_update_chunks_apply_to_single_file ... ok
test tests::test_unified_diff_last_line_replacement ... ok
test tests::test_unified_diff_interleaved_changes ... ok
test tests::test_update_file_hunk_can_move_file ... ok
test tests::test_update_file_hunk_interleaved_changes ... ok
test tests::test_update_file_hunk_modifies_content ... ok
test tests::test_update_line_with_unicode_dash ... ok

test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test suite::tool::test_apply_patch_cli_rejects_empty_patch ... ok
test suite::tool::test_apply_patch_cli_delete_directory_fails ... ok
test suite::tool::test_apply_patch_cli_add_overwrites_existing_file ... ok
test suite::tool::test_apply_patch_cli_rejects_empty_update_hunk ... ok
test suite::tool::test_apply_patch_cli_failure_after_partial_success_leaves_changes ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_operations ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_chunks ... ok
test suite::tool::test_apply_patch_cli_rejects_invalid_hunk_header ... ok
test suite::tool::test_apply_patch_cli_rejects_missing_file_delete ... ok
test suite::tool::test_apply_patch_cli_move_overwrites_existing_destination ... ok
test suite::cli::test_apply_patch_cli_add_and_update ... ok
test suite::tool::test_apply_patch_cli_requires_existing_file_for_update ... ok
test suite::cli::test_apply_patch_cli_stdin_add_and_update ... ok
test suite::tool::test_apply_patch_cli_reports_missing_context ... ok
test suite::tool::test_apply_patch_cli_moves_file_to_new_directory ... ok
test suite::tool::test_apply_patch_cli_updates_file_appends_trailing_newline ... ok
test suite::scenarios::test_apply_patch_scenarios ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 3 tests
test tests::returns_ok_when_future_completes_first ... ok
test tests::returns_err_when_token_already_cancelled ... ok
test tests::returns_err_when_token_cancelled_first ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 5 tests
test types::tests::unified_diff_falls_back_to_pr_output_diff ... ok
test types::tests::assistant_error_message_combines_code_and_message ... ok
test types::tests::assistant_text_messages_extracts_text_content ... ok
test types::tests::user_text_prompt_joins_parts_with_spacing ... ok
test types::tests::unified_diff_prefers_current_diff_task_turn ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 2 tests
test suite::apply_command_e2e::test_apply_command_creates_fibonacci_file ... ok
test suite::apply_command_e2e::test_apply_command_with_merge_conflicts ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s

running 6 tests
test debug_sandbox::pid_tracker::tests::pid_is_alive_detects_current_process ... ok
test login::tests::short_key_returns_stars ... ok
test login::tests::formats_long_key ... ok
test debug_sandbox::pid_tracker::tests::list_child_pids_includes_spawned_child ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_spawned_children ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_bash_subshell_descendants ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s

running 14 tests
test tests::feature_toggles_unknown_feature_errors ... ok
test tests::format_exit_messages_skips_zero_usage ... ok
test tests::feature_toggles_known_features_generate_overrides ... ok
test wsl_paths::tests::normalize_is_noop_on_unix_paths ... ok
test wsl_paths::tests::win_to_wsl_basic ... ok
test tests::resume_picker_logic_last ... ok
test tests::resume_model_flag_applies_when_no_root_flags ... ok
test tests::resume_picker_logic_none_and_not_last ... ok
test tests::resume_picker_logic_with_session_id ... ok
test tests::resume_all_flag_sets_show_all ... ok
test tests::resume_merges_dangerously_bypass_flag ... ok
test tests::resume_merges_option_flags_and_full_auto ... ok
test tests::format_exit_messages_includes_resume_hint_without_color ... ok
test tests::format_exit_messages_applies_color_when_enabled ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 1 test
test execpolicy_check_matches_expected_json ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.71s

running 6 tests
test add_cant_add_command_and_url ... ok
test add_streamable_http_rejects_removed_flag ... ok
test add_streamable_http_with_custom_env_var ... ok
test add_with_env_preserves_key_order_and_values ... ok
test add_and_remove_server_updates_global_config ... ok
test add_streamable_http_without_manual_token ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s

running 3 tests
test list_shows_empty_state ... ok
test get_disabled_server_shows_single_line ... ok
test list_and_get_render_expected_output ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s

running 1 test
test default_client::tests::inject_trace_headers_uses_current_span_context ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 12 tests
test tests::composer_input_renders_typed_characters ... ignored, very slow
test tests::trims_override_whitespace ... ok
test tests::select_attempt_validates_bounds ... ok
test tests::branch_override_is_used_when_provided ... ok
test tests::parse_task_id_from_url_and_raw ... ok
test tests::format_task_status_lines_with_diff_and_label ... ok
test tests::format_task_status_lines_without_diff_falls_back ... ok
test tests::collect_attempt_diffs_includes_sibling_attempts ... ok
test app::tests::load_tasks_uses_env_parameter ... ok
test tests::falls_back_to_current_branch_when_default_is_missing ... ok
test tests::falls_back_to_main_when_no_git_info_is_available ... ok
test tests::prefers_current_branch_when_available ... ok

test result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 1 test
test mock_backend_varies_by_env ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 28 tests
test elapsed::tests::test_format_duration_minutes ... ok
test elapsed::tests::test_format_duration_one_hour_has_space ... ok
test elapsed::tests::test_format_duration_seconds ... ok
test elapsed::tests::test_format_duration_subsecond ... ok
test config_override::tests::parses_basic_scalar ... ok
test config_override::tests::fails_on_unquoted_string ... ok
test format_env_display::tests::formats_env_vars_with_dollar_prefix ... ok
test config_override::tests::parses_bool ... ok
test config_override::tests::parses_array ... ok
test format_env_display::tests::combines_env_pairs_and_vars ... ok
test config_override::tests::parses_inline_table ... ok
test format_env_display::tests::formats_sorted_env_pairs ... ok
test format_env_display::tests::returns_dash_when_empty ... ok
test fuzzy_match::tests::ascii_basic_indices ... ok
test fuzzy_match::tests::case_insensitive_matching_basic ... ok
test fuzzy_match::tests::empty_needle_matches_with_max_score_and_no_indices ... ok
test fuzzy_match::tests::indices_are_deduped_for_multichar_lowercase_expansion ... ok
test fuzzy_match::tests::prefer_contiguous_match_over_spread ... ok
test fuzzy_match::tests::start_of_string_bonus_applies ... ok
test fuzzy_match::tests::unicode_dotted_i_istanbul_highlighting ... ok
test fuzzy_match::tests::unicode_german_sharp_s_casefold ... ok
test oss::tests::test_get_default_model_for_provider_lmstudio ... ok
test oss::tests::test_get_default_model_for_provider_ollama ... ok
test oss::tests::test_get_default_model_for_provider_unknown ... ok
test sandbox_mode_cli_arg::tests::maps_cli_args_to_protocol_modes ... ok
test sandbox_summary::tests::summarizes_external_sandbox_with_enabled_network ... ok
test sandbox_summary::tests::summarizes_external_sandbox_without_network_access_suffix ... ok
test sandbox_summary::tests::workspace_write_summary_still_includes_network_access ... ok

test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 671 tests
test auth::storage::tests::keyring_auth_storage_compute_store_key_for_home_directory ... ok
test apply_patch::tests::convert_apply_patch_maps_add_variant ... ok
test auth::storage::tests::file_storage_delete_removes_auth_file ... ok
test auth::storage::tests::keyring_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::keyring_auth_storage_load_returns_deserialized_auth ... ok
test auth::storage::tests::auto_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::auto_auth_storage_save_prefers_keyring ... ok
test auth::storage::tests::auto_auth_storage_load_prefers_keyring_value ... ok
test auth::storage::tests::auto_auth_storage_load_uses_file_when_keyring_empty ... ok
test auth::storage::tests::auto_auth_storage_load_falls_back_when_keyring_errors ... ok
test auth::storage::tests::file_storage_save_persists_auth_dot_json ... ok
test auth::storage::tests::file_storage_load_returns_auth_dot_json ... ok
test auth::storage::tests::auto_auth_storage_save_falls_back_when_keyring_errors ... ok
test auth::storage::tests::keyring_auth_storage_save_persists_and_removes_fallback_file ... ok
test auth::tests::logout_removes_auth_file ... ok
test auth::tests::login_with_api_key_overwrites_existing_auth_json ... ok
test bash::tests::accepts_concatenated_flag_and_value ... ok
test bash::tests::accepts_concatenated_flag_with_single_quotes ... ok
test bash::tests::accepts_multiple_commands_with_allowed_operators ... ok
test bash::tests::accepts_numbers_as_words ... ok
test bash::tests::accepts_single_simple_command ... ok
test bash::tests::extracts_double_and_single_quoted_strings ... ok
test bash::tests::parse_zsh_lc_plain_commands ... ok
test bash::tests::rejects_command_and_process_substitutions_and_expansions ... ok
test bash::tests::rejects_concatenation_with_command_substitution ... ok
test bash::tests::rejects_concatenation_with_variable_substitution ... ok
test bash::tests::rejects_parentheses_and_subshells ... ok
test bash::tests::rejects_redirections_and_unsupported_operators ... ok
test auth::tests::refresh_without_id_token ... ok
test bash::tests::rejects_variable_assignment_prefix ... ok
test bash::tests::rejects_trailing_operator_parse_error ... ok
test client_common::tests::omits_text_when_not_set ... ok
test client_common::tests::serializes_text_schema_with_strict_format ... ok
test client_common::tests::serializes_text_verbosity_when_set ... ok
test auth::tests::missing_auth_json_returns_none ... ok
test auth::tests::plan_type_maps_known_plan ... ok
test auth::tests::plan_type_maps_unknown_to_unknown ... ok
test codex::tests::falls_back_to_content_when_structured_is_null ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_method_mismatch ... ok
test auth::tests::enforce_login_restrictions_allows_matching_workspace ... ok
test codex::tests::prefers_structured_content_when_present ... ok
test auth::tests::enforce_login_restrictions_allows_api_key_if_login_method_not_set_but_forced_chatgpt_workspace_id_is_set ... ok
test codex::tests::fatal_tool_error_stops_turn_and_reports_error ... ok
test codex::tests::abort_gracefuly_emits_turn_aborted_only ... ok
test auth::tests::enforce_login_restrictions_blocks_env_api_key_when_chatgpt_required ... ok
test codex::tests::includes_timed_out_message ... ok
test codex::tests::record_initial_history_reconstructs_forked_transcript ... ok
test codex::tests::reconstruct_history_matches_live_compactions ... ok
test codex::tests::record_initial_history_reconstructs_resumed_transcript ... ok
test codex::tests::success_flag_reflects_is_error_true ... ok
test codex::tests::success_flag_true_with_no_error_and_content_used ... ok
test codex::tests::record_initial_history_seeds_token_info_from_rollout ... ok
test codex::tests::abort_review_task_emits_exited_then_aborted_and_records_history ... ok
test command_safety::is_dangerous_command::tests::bash_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::bash_git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::external_sandbox_only_prompts_for_dangerous_commands ... ok
test command_safety::is_dangerous_command::tests::git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_f_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_rf_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::sudo_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::usr_bin_git_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::zsh_git_reset_is_dangerous ... ok
test command_safety::is_safe_command::tests::base64_output_options_are_unsafe ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples_with_operators ... ok
test command_safety::is_safe_command::tests::bash_lc_unsafe_examples ... ok
test command_safety::is_safe_command::tests::known_safe_examples ... ok
test command_safety::is_safe_command::tests::ripgrep_rules ... ok
test command_safety::is_safe_command::tests::unknown_or_partial ... ok
test command_safety::is_safe_command::tests::windows_powershell_full_path_is_safe ... ok
test command_safety::is_safe_command::tests::zsh_lc_safe_command_sequence ... ok
test compact::tests::build_token_limited_compacted_history_appends_summary_message ... ok
test compact::tests::build_token_limited_compacted_history_truncates_overlong_user_messages ... ok
test compact::tests::collect_user_messages_extracts_user_text_only ... ok
test compact::tests::collect_user_messages_filters_session_prefix_entries ... ok
test compact::tests::content_items_to_text_ignores_image_only_content ... ok
test compact::tests::content_items_to_text_joins_non_empty_segments ... ok
test config::constraint::tests::constrained_allow_any_accepts_any_value ... ok
test config::constraint::tests::constrained_allow_any_default_uses_default_value ... ok
test config::constraint::tests::constrained_can_set_allows_probe_without_setting ... ok
test config::constraint::tests::constrained_new_rejects_invalid_initial_value ... ok
test config::constraint::tests::constrained_set_rejects_invalid_value_and_leaves_previous ... ok
test config::edit::tests::async_builder_set_model_persists ... ok
test codex::tests::abort_regular_task_emits_turn_aborted_only ... ok
test config::edit::tests::batch_write_table_upsert_preserves_inline_comments ... ok
test config::edit::tests::blocking_builder_set_model_round_trips_back_and_forth ... ok
test config::edit::tests::blocking_clear_path_noop_when_missing ... ok
test config::edit::tests::blocking_clear_model_removes_inline_table_entry ... ok
test config::edit::tests::blocking_record_model_migration_seen_preserves_table ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_after_removing_keys ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_prefix_on_update ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_suffix ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comments ... ok
test config::edit::tests::blocking_replace_mcp_servers_round_trips ... ok
test config::edit::tests::blocking_set_asynchronous_helpers_available ... ok
test config::edit::tests::blocking_set_hide_full_access_warning_preserves_table ... ok
test config::edit::tests::blocking_set_hide_gpt5_1_migration_prompt_preserves_table ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_workspace_mismatch ... ok
test config::edit::tests::blocking_set_hide_gpt_5_1_codex_max_migration_prompt_preserves_table ... ok
test config::edit::tests::blocking_set_hide_rate_limit_model_nudge_preserves_table ... ok
test config::edit::tests::blocking_set_model_preserves_inline_table_contents ... ok
test config::edit::tests::blocking_set_model_scopes_to_active_profile ... ok
test config::edit::tests::blocking_set_model_top_level ... ok
test config::edit::tests::blocking_set_model_with_explicit_profile ... ok
test config::edit::tests::blocking_set_path_updates_notifications ... ok
test config::notifications_tests::test_tui_notifications_custom_array ... ok
test config::notifications_tests::test_tui_notifications_true ... ok
test config::edit::tests::builder_with_edits_applies_custom_paths ... ok
test config::edit::tests::replace_mcp_servers_blocking_clears_table_when_empty ... ok
test auth::tests::loads_api_key_from_auth_json ... ok
test config::service::tests::toml_value_to_item_handles_nested_config_tables ... ok
test config::service::tests::invalid_user_value_rejected_even_if_overridden_by_managed ... ok
test config::service::tests::read_includes_origins_and_layers ... ok
test config::service::tests::read_reports_managed_overrides_user_and_session_flags ... ok
test config::service::tests::version_conflict_rejected ... ok
test codex::tests::set_rate_limits_updates_plan_type_when_present ... ok
test codex::tests::set_rate_limits_retains_previous_credits ... ok
test config::service::tests::write_value_defaults_to_user_config_path ... ok
test config::service::tests::write_value_preserves_comments_and_order ... ok
test auth::tests::pro_account_with_no_api_key_uses_chatgpt_auth ... ok
test config::service::tests::upsert_merges_tables_replace_overwrites ... ok
test codex::tests::record_model_warning_appends_user_message ... ok
test config::service::tests::write_value_reports_managed_override ... ok
test config::service::tests::write_value_reports_override ... ok
test config::tests::add_dir_override_extends_workspace_writable_roots ... ok
test codex::tests::unified_exec_rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::tests::cli_override_takes_precedence_over_profile_sandbox_mode ... ok
test codex_delegate::tests::forward_events_cancelled_while_send_blocked_shuts_down_delegate ... ok
test codex::tests::rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::tests::load_global_mcp_servers_returns_empty_if_missing ... ok
test config::tests::load_global_mcp_servers_accepts_legacy_ms_field ... ok
test config::tests::load_global_mcp_servers_rejects_inline_bearer_token ... ok
test config::tests::managed_config_wins_over_cli_overrides ... ok
test config::tests::cli_override_sets_compact_prompt ... ok
test config::tests::config_defaults_to_auto_oauth_store_mode ... ok
test config::tests::replace_mcp_servers_serializes_cwd ... ok
test config::tests::config_honors_explicit_file_oauth_store_mode ... ok
test config::tests::replace_mcp_servers_round_trips_entries ... ok
test config::tests::replace_mcp_servers_serializes_disabled_flag ... ok
test config::tests::replace_mcp_servers_serializes_env_sorted ... ok
test config::tests::replace_mcp_servers_serializes_env_vars ... ok
test config::tests::config_honors_explicit_keyring_auth_store_mode ... ok
test config::tests::config_defaults_to_file_cli_auth_store_mode ... ok
test config::tests::replace_mcp_servers_serializes_tool_filters ... ok
test config::tests::replace_mcp_servers_streamable_http_isolates_headers_between_servers ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_bearer_token ... ok
test config::tests::replace_mcp_servers_streamable_http_removes_optional_sections ... ok
test config::tests::set_model_overwrites_existing_model ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_custom_headers ... ok
test config::tests::set_model_updates_defaults ... ok
test config::tests::feature_table_overrides_legacy_flags ... ok
test config::tests::set_model_updates_existing_profile ... ok
test config::tests::set_model_updates_profile ... ok
test config::tests::test_resolve_oss_provider_explicit_override ... ok
test config::tests::test_resolve_oss_provider_explicit_overrides_all ... ok
test config::tests::test_resolve_oss_provider_from_global_config ... ok
test config::tests::test_resolve_oss_provider_from_profile ... ok
test config::tests::test_resolve_oss_provider_none_when_not_configured ... ok
test config::tests::test_resolve_oss_provider_profile_fallback_to_global ... ok
test config::tests::test_sandbox_config_parsing ... ok
test config::tests::profile_sandbox_mode_overrides_base ... ok
test config::tests::test_set_project_trusted_converts_inline_to_explicit ... ok
test config::tests::test_set_project_trusted_migrates_top_level_inline_projects_preserving_entries ... ok
test config::tests::test_set_project_trusted_writes_explicit_tables ... ok
test config::tests::test_toml_parsing ... ok
test config::tests::test_untrusted_project_gets_unless_trusted_approval_policy ... ok
test config::tests::test_untrusted_project_gets_workspace_write_sandbox ... ok
test config::tests::tui_config_missing_notifications_field_defaults_to_enabled ... ok
test config::types::tests::deserialize_disabled_server_config ... ok
test config::types::tests::deserialize_rejects_command_and_url ... ok
test config::types::tests::deserialize_rejects_env_for_http_transport ... ok
test config::types::tests::deserialize_rejects_headers_for_stdio ... ok
test config::types::tests::deserialize_rejects_inline_bearer_token_field ... ok
test config::types::tests::deserialize_server_config_with_tool_filters ... ok
test config::types::tests::deserialize_stdio_command_server_config ... ok
test config::tests::test_set_default_oss_provider ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_arg_with_args_and_env ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_args ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_cwd ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_env_vars ... ok
test config::types::tests::deserialize_streamable_http_server_config ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_env_var ... ok
test config_loader::config_requirements::tests::deserialize_allowed_approval_policies ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_headers ... ok
test config_loader::config_requirements::tests::merge_unset_fields_only_fills_missing_values ... ok
test config_loader::config_requirements::tests::deserialize_allowed_sandbox_modes ... ok
test config_loader::tests::load_requirements_toml_produces_expected_constraints ... ok
test config_loader::tests::managed_preferences_requirements_are_applied ... ok
test config::tests::legacy_toggles_map_to_features ... ok
test config_loader::tests::managed_preferences_requirements_take_precedence ... ok
test config_loader::tests::managed_preferences_take_highest_precedence ... ok
test config_loader::tests::merges_managed_config_layer_on_top ... ok
test config_loader::tests::project_layer_is_added_when_dot_codex_exists_without_config_toml ... ok
test config::tests::loads_compact_prompt_from_file ... ok
test config_loader::tests::returns_empty_when_all_layers_missing ... ok
test config_loader::unit_tests::ensure_resolve_relative_paths_in_config_toml_preserves_all_fields ... ok
test context_manager::history::tests::filters_non_api_messages ... ok
test config_loader::tests::project_layers_prefer_closest_cwd ... ok
test config::tests::profile_legacy_toggles_override_base ... ok
test config_loader::tests::project_root_markers_supports_alternate_markers ... ok
test context_manager::history::tests::format_exec_output_returns_original_when_within_limits ... ok
test config::tests::managed_config_overrides_oauth_store_mode ... ok
test context_manager::history::tests::get_history_for_prompt_drops_ghost_commits ... ok
test context_manager::history::tests::non_last_reasoning_tokens_ignore_entries_after_last_user ... ok
test context_manager::history::tests::non_last_reasoning_tokens_return_zero_when_no_user_messages ... ok
test context_manager::history::tests::normalization_retains_local_shell_outputs ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_custom_tool_call_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_function_call_inserts_output ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_local_shell_call_with_id_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_mixed_inserts_and_removals_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_custom_tool_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_function_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::record_items_respects_custom_token_limit ... ok
test context_manager::history::tests::record_items_truncates_custom_tool_call_output_content ... ok
test context_manager::history::tests::record_items_truncates_function_call_output_content ... ok
test context_manager::history::tests::remove_first_item_handles_custom_tool_pair ... ok
test context_manager::history::tests::remove_first_item_handles_local_shell_pair ... ok
test context_manager::history::tests::remove_first_item_removes_matching_call_for_output ... ok
test context_manager::history::tests::remove_first_item_removes_matching_output_for_function_call ... ok
test conversation_manager::tests::drops_from_last_user_only ... ok
test context_manager::history::tests::format_exec_output_marks_byte_truncation_without_omitted_lines ... ok
test context_manager::history::tests::format_exec_output_prefers_line_marker_when_both_limits_exceeded ... ok
test custom_prompts::tests::discovers_and_sorts_files ... ok
test custom_prompts::tests::discovers_symlinked_md_files ... ok
test custom_prompts::tests::empty_when_dir_missing ... ok
test custom_prompts::tests::parse_frontmatter_preserves_body_newlines ... ok
test context_manager::history::tests::format_exec_output_reports_omitted_lines_and_keeps_head_and_tail ... ok
test custom_prompts::tests::parses_frontmatter_and_strips_from_body ... ok
test custom_prompts::tests::excludes_builtins ... ok
test custom_prompts::tests::skips_non_utf8_files ... ok
test default_client::tests::test_invalid_suffix_is_sanitized ... ok
test default_client::tests::test_invalid_suffix_is_sanitized2 ... ok
test context_manager::history::tests::format_exec_output_truncates_large_error ... ok
test environment_context::tests::equals_except_shell_compares_approval_policy ... ok
test environment_context::tests::equals_except_shell_compares_sandbox_policy ... ok
test environment_context::tests::equals_except_shell_compares_workspace_write_policy ... ok
test config::tests::test_did_user_set_custom_approval_policy_or_sandbox_mode_defaults_no ... ok
test environment_context::tests::serialize_external_sandbox_environment_context ... ok
test environment_context::tests::serialize_external_sandbox_with_restricted_network_environment_context ... ok
test environment_context::tests::equals_except_shell_ignores_shell ... ok
test environment_context::tests::serialize_full_access_environment_context ... ok
test environment_context::tests::serialize_read_only_environment_context ... ok
test error::tests::sandbox_denied_reports_both_streams_when_available ... ok
test error::tests::sandbox_denied_reports_exit_code_when_no_output_available ... ok
test error::tests::sandbox_denied_reports_stdout_when_no_stderr ... ok
test error::tests::sandbox_denied_uses_aggregated_output_when_stderr_empty ... ok
test error::tests::to_error_event_handles_response_stream_failed ... ok
test error::tests::unexpected_status_cloudflare_html_is_simplified ... ok
test error::tests::unexpected_status_non_html_is_unchanged ... ok
test error::tests::usage_limit_reached_error_formats_business_plan_without_reset ... ok
test error::tests::usage_limit_reached_error_formats_default_for_other_plans ... ok
test error::tests::usage_limit_reached_error_formats_default_when_none ... ok
test error::tests::usage_limit_reached_error_formats_free_plan ... ok
test error::tests::usage_limit_reached_error_formats_plus_plan ... ok
test environment_context::tests::serialize_workspace_write_environment_context ... ok
test error::tests::usage_limit_reached_error_formats_pro_plan_with_reset ... ok
test config::tests::test_precedence_fixture_with_gpt5_profile ... ok
test default_client::tests::test_get_codex_user_agent ... ok
test error::tests::usage_limit_reached_error_formats_team_plan ... ok
test error::tests::usage_limit_reached_includes_days_hours_minutes ... ok
test event_mapping::tests::parses_agent_message ... ok
test error::tests::usage_limit_reached_includes_hours_and_minutes ... ok
test event_mapping::tests::parses_reasoning_including_raw_content ... ok
test default_client::tests::test_macos ... ok
test event_mapping::tests::parses_reasoning_summary_and_raw_content ... ok
test error::tests::usage_limit_reached_includes_minutes_when_available ... ok
test error::tests::usage_limit_reached_less_than_minute ... ok
test event_mapping::tests::parses_user_message_with_text_and_two_images ... ok
test event_mapping::tests::parses_web_search_call ... ok
test event_mapping::tests::skips_user_instructions_and_env ... ok
test exec::tests::sandbox_detection_flags_sigsys_exit_code ... ok
test exec::tests::sandbox_detection_identifies_keyword_in_stderr ... ok
test exec::tests::sandbox_detection_ignores_non_sandbox_mode ... ok
test exec::tests::sandbox_detection_requires_keywords ... ok
test exec::tests::sandbox_detection_respects_quick_reject_exit_codes ... ok
test exec::tests::sandbox_detection_uses_aggregated_output ... ok
test exec_env::tests::test_core_inherit_defaults_keep_sensitive_vars ... ok
test exec_env::tests::test_include_only ... ok
test exec_env::tests::test_core_inherit_with_default_excludes_enabled ... ok
test exec_env::tests::test_inherit_all ... ok
test exec_env::tests::test_inherit_none ... ok
test exec_env::tests::test_inherit_all_with_default_excludes ... ok
test exec_env::tests::test_set_overrides ... ok
test config::tests::test_precedence_fixture_with_o3_profile ... ok
test exec_policy::tests::append_execpolicy_amendment_rejects_empty_prefix ... ok
test exec_policy::tests::exec_approval_requirement_falls_back_to_heuristics ... ok
test exec_policy::tests::collect_policy_files_returns_empty_when_dir_missing ... ok
test config::tests::test_precedence_fixture_with_zdr_profile ... ok
test exec_policy::tests::append_execpolicy_amendment_updates_policy_and_file ... ok
test exec_policy::tests::ignores_policies_outside_policy_dir ... ok
test default_client::tests::test_create_client_sets_default_headers ... ok
test config_loader::tests::project_paths_resolve_relative_to_dot_codex_and_override_in_order ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_disabled_when_execpolicy_feature_disabled ... ok
test exec_policy::tests::exec_approval_requirement_respects_approval_policy ... ok
test exec_policy::tests::exec_approval_requirement_prefers_execpolicy_match ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_omitted_when_policy_prompts ... ok
test exec_policy::tests::evaluates_bash_lc_inner_commands ... ok
test exec_policy::tests::heuristics_apply_when_other_commands_match_policy ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_when_heuristics_allow ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_multi_command_scripts ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_single_command_without_policy_match ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_suppressed_when_policy_matches_allow ... ok
test exec_policy::tests::proposed_execpolicy_amendment_uses_first_no_match_in_multi_command_scripts ... ok
test config::tests::test_precedence_fixture_with_gpt3_profile ... ok
test exec_policy::tests::returns_empty_policy_when_feature_disabled ... ok
test exec_policy::tests::loads_policies_from_policy_subdirectory ... ok
test exec_policy::tests::loads_policies_from_multiple_config_layers ... ok
test conversation_manager::tests::ignores_session_prefix_messages_when_truncating ... ok
test git_info::tests::resolve_root_git_project_for_trust_returns_none_outside_repo ... ok
test git_info::tests::test_collect_git_info_non_git_directory ... ok
test git_info::tests::resolve_root_git_project_for_trust_non_worktrees_gitdir_returns_none ... ok
test client_common::tests::get_full_instructions_no_user_content ... ok
test git_info::tests::resolve_root_git_project_for_trust_regular_repo_returns_repo_root ... ok
test git_info::tests::test_git_info_serialization ... ok
test git_info::tests::test_git_info_serialization_with_nones ... ok
test git_info::tests::test_collect_git_info_git_repository ... ok
test git_info::tests::test_recent_commits_non_git_directory_returns_empty ... ok
test mcp::tests::group_tools_by_server_strips_prefix_and_groups ... ok
test mcp::tests::split_qualified_tool_name_rejects_invalid_names ... ok
test mcp::tests::split_qualified_tool_name_returns_server_and_tool ... ok
test mcp_connection_manager::tests::filter_tools_applies_per_server_filters ... ok
test mcp_connection_manager::tests::mcp_init_error_display_includes_startup_timeout_hint ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_github_pat ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_login_when_auth_required ... ok
test mcp_connection_manager::tests::mcp_init_error_display_reports_generic_errors ... ok
test mcp_connection_manager::tests::test_qualify_tools_duplicated_names_skipped ... ok
test mcp_connection_manager::tests::test_qualify_tools_long_names_same_server ... ok
test mcp_connection_manager::tests::test_qualify_tools_sanitizes_invalid_characters ... ok
test mcp_connection_manager::tests::test_qualify_tools_short_non_duplicated_names ... ok
test mcp_connection_manager::tests::tool_filter_allows_by_default ... ok
test mcp_connection_manager::tests::tool_filter_applies_disabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_then_disabled ... ok
test git_info::tests::test_collect_git_info_with_branch ... ok
test git_info::tests::test_collect_git_info_with_remote ... ok
test git_info::tests::resolve_root_git_project_for_trust_detects_worktree_and_returns_main_root ... ok
test message_history::tests::lookup_reads_history_entries ... ok
test model_provider_info::tests::detects_azure_responses_base_urls ... ok
test model_provider_info::tests::test_deserialize_azure_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_example_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_ollama_model_provider_toml ... ok
test message_history::tests::lookup_uses_stable_log_id_after_appends ... ok
test models_manager::manager::tests::build_available_models_picks_default_after_hiding_hidden_models ... ok
test models_manager::manager::tests::bundled_models_json_roundtrips ... ok
test git_info::tests::test_collect_git_info_detached_head ... ok
test message_history::tests::append_entry_trims_history_to_soft_cap ... ok
test exec::tests::kill_child_process_group_kills_grandchildren_on_timeout ... ok
test models_manager::model_family::tests::remote_overrides_apply_extended_metadata ... ok
test models_manager::model_family::tests::remote_overrides_apply_when_slug_matches ... ok
test models_manager::model_family::tests::remote_overrides_skip_non_matching_models ... ok
test models_manager::model_presets::tests::only_one_default_model_is_configured ... ok
test parse_command::tests::bash_cd_then_bar_is_same_as_bar ... ok
test parse_command::tests::bash_cd_then_cat_is_read ... ok
test parse_command::tests::bash_dash_c_pipeline_parsing ... ok
test parse_command::tests::bash_lc_redirect_not_quoted ... ok
test parse_command::tests::bin_bash_lc_sed ... ok
test parse_command::tests::bin_zsh_lc_sed ... ok
test parse_command::tests::cat_with_double_dash_and_sed_ranges ... ok
test parse_command::tests::cd_then_cat_is_single_read ... ok
test message_history::tests::append_entry_trims_history_when_beyond_max_bytes ... ok
test parse_command::tests::drop_trailing_nl_in_pipeline ... ok
test parse_command::tests::drops_yes_in_pipelines ... ok
test parse_command::tests::empty_tokens_is_not_small ... ok
test parse_command::tests::fd_file_finder_variants ... ok
test parse_command::tests::find_basic_name_filter ... ok
test parse_command::tests::find_type_only_path ... ok
test parse_command::tests::filters_out_printf ... ok
test parse_command::tests::git_status_is_unknown ... ok
test parse_command::tests::grep_with_query_and_path ... ok
test parse_command::tests::handles_complex_bash_command ... ok
test parse_command::tests::handles_complex_bash_command_head ... ok
test parse_command::tests::handles_git_pipe_wc ... ok
test parse_command::tests::head_behavior ... ok
test parse_command::tests::head_with_no_space ... ok
test parse_command::tests::ls_with_glob ... ok
test parse_command::tests::ls_with_time_style_and_path ... ok
test parse_command::tests::powershell_command_is_stripped ... ok
test parse_command::tests::powershell_with_path_is_stripped ... ok
test parse_command::tests::preserves_rg_with_spaces ... ok
test parse_command::tests::pwsh_with_noprofile_and_c_alias_is_stripped ... ok
test parse_command::tests::rg_with_equals_style_flags ... ok
test parse_command::tests::sed_behavior ... ok
test parse_command::tests::parses_mixed_sequence_with_pipes_semicolons_and_or ... ok
test parse_command::tests::small_formatting_always_true_commands ... ok
test parse_command::tests::shorten_path_on_windows ... ok
test parse_command::tests::split_on_or_connector ... ok
test parse_command::tests::strips_true_in_sequence ... ok
test parse_command::tests::strips_true_inside_bash_lc ... ok
test parse_command::tests::supports_cat ... ok
test parse_command::tests::supports_cd_and_rg_files ... ok
test parse_command::tests::supports_grep_query_with_slashes_not_shortened ... ok
test parse_command::tests::supports_grep_recursive_current_dir ... ok
test parse_command::tests::supports_cat_sed_n ... ok
test parse_command::tests::supports_grep_recursive_specific_file ... ok
test parse_command::tests::supports_grep_weird_backtick_in_query ... ok
test parse_command::tests::supports_head_file_only ... ok
test parse_command::tests::supports_head_n ... ok
test parse_command::tests::supports_ls_with_pipe ... ok
test parse_command::tests::supports_npm_run_build_is_unknown ... ok
test parse_command::tests::supports_rg_files_then_head ... ok
test parse_command::tests::supports_nl_then_sed_reading ... ok
test parse_command::tests::supports_rg_files_with_path_and_pipe ... ok
test parse_command::tests::supports_searching_for_navigate_to_route ... ok
test parse_command::tests::supports_sed_n ... ok
test parse_command::tests::supports_sed_n_then_nl_as_search ... ok
test parse_command::tests::supports_tail_file_only ... ok
test parse_command::tests::supports_single_string_script_with_cd_and_pipe ... ok
test parse_command::tests::supports_tail_n_last_lines ... ok
test parse_command::tests::supports_tail_n_plus ... ok
test parse_command::tests::tail_with_no_space ... ok
test parse_command::tests::tail_behavior ... ok
test parse_command::tests::trim_on_semicolon ... ok
test parse_command::tests::zsh_lc_supports_cat ... ok
test powershell::tests::extracts_basic_powershell_command ... ok
test powershell::tests::extracts_full_path_powershell_command ... ok
test powershell::tests::extracts_lowercase_flags ... ok
test powershell::tests::extracts_with_noprofile_and_alias ... ok
test models_manager::manager::tests::refresh_available_models_sorts_and_marks_default ... ok
test models_manager::manager::tests::refresh_available_models_drops_removed_remote_models ... ok
test models_manager::manager::tests::refresh_available_models_refetches_when_cache_stale ... ok
test models_manager::manager::tests::refresh_available_models_uses_cache_when_fresh ... ok
test project_doc::tests::agents_md_preferred_over_fallbacks ... ok
test project_doc::tests::agents_local_md_preferred ... ok
test project_doc::tests::doc_larger_than_limit_is_truncated ... ok
test project_doc::tests::doc_smaller_than_limit_is_returned ... ok
test project_doc::tests::concatenates_root_and_cwd_docs ... ok
test project_doc::tests::finds_doc_in_repo_root ... ok
test project_doc::tests::merges_existing_instructions_with_project_doc ... ok
test project_doc::tests::keeps_existing_instructions_when_doc_missing ... ok
test rollout::tests::test_get_conversation_contents ... ok
test rollout::tests::test_list_conversations_latest_first ... ok
test project_doc::tests::no_doc_file_returns_none ... ok
test project_doc::tests::uses_configured_fallback_when_agents_missing ... ok
test rollout::tests::test_model_provider_filter_selects_only_matching_sessions ... ok
test project_doc::tests::zero_byte_limit_disables_docs ... ok
test rollout::tests::test_source_filter_excludes_non_matching_sessions ... ok
test safety::tests::external_sandbox_auto_approves_in_on_request ... ok
test rollout::tests::test_stable_ordering_same_second_pagination ... ok
test safety::tests::test_writable_roots_constraint ... ok
test rollout::tests::test_updated_at_uses_file_mtime ... ok
test shell::detect_shell_type_tests::test_detect_shell_type ... ok
test rollout::tests::test_pagination_cursor ... ok
test shell::tests::derive_exec_args ... ok
test shell::tests::detects_bash ... ok
test shell::tests::detects_powershell_as_default ... ok
test shell::tests::detects_sh ... ok
test shell::tests::detects_zsh ... ok
test shell::tests::finds_poweshell ... ok
test shell::tests::fish_fallback_to_zsh ... ok
test project_doc::tests::skills_render_without_project_doc ... ok
test project_doc::tests::skills_are_appended_to_project_doc ... ok
test shell_snapshot::tests::strip_snapshot_preamble_removes_leading_output ... ok
test shell_snapshot::tests::strip_snapshot_preamble_requires_marker ... ok
test shell::tests::test_current_shell_detects_zsh ... ok
test shell::tests::can_run_on_shell_test ... ok
test shell_snapshot::tests::try_new_creates_and_deletes_snapshot_file ... ok
test shell_snapshot::tests::macos_zsh_snapshot_includes_sections ... ok
test skills::loader::tests::deduplicates_by_name_preferring_system_over_admin ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpXLJgUR/.git/
test seatbelt::tests::create_seatbelt_args_for_cwd_as_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmp81MbZb/.git/
test seatbelt::tests::create_seatbelt_args_with_read_only_git_and_codex_subpaths ... ok
test skills::loader::tests::deduplicates_by_name_preferring_user_over_system ... ok
test skills::loader::tests::enforces_short_description_length_limits ... ok
test skills::loader::tests::enforces_length_limits ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_system ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_user ... ok
test skills::loader::tests::loads_short_description_from_metadata ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpa340sA/.git/
test skills::loader::tests::loads_skills_from_codex_dir_when_not_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpOg6snq/.git/
test exec::tests::process_exec_tool_call_respects_cancellation_token ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmptYTdEC/.git/
test skills::loader::tests::loads_skills_from_system_cache_when_present ... ok
test skills::loader::tests::loads_system_skills_when_present ... ok
test skills::loader::tests::loads_valid_skill ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpdhzbFc/repo/.git/
test skills::loader::tests::non_git_repo_skills_search_does_not_walk_parents ... ok
test skills::loader::tests::loads_skills_from_repo_root ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_disabled_when_threshold_disabled ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_includes_threshold ... ok
test terminal::tests::detects_alacritty ... ok
test terminal::tests::detects_ghostty ... ok
test terminal::tests::detects_apple_terminal ... ok
test terminal::tests::detects_gnome_terminal ... ok
test terminal::tests::detects_iterm2 ... ok
test terminal::tests::detects_kitty ... ok
test terminal::tests::detects_konsole ... ok
test terminal::tests::detects_term_fallbacks ... ok
test terminal::tests::detects_tmux_client_termname ... ok
test terminal::tests::detects_term_program ... ok
test terminal::tests::detects_tmux_client_termtype ... ok
test terminal::tests::detects_tmux_multiplexer ... ok
test terminal::tests::detects_tmux_term_program_uses_client_termtype ... ok
test terminal::tests::detects_vscode ... ok
test terminal::tests::detects_vte ... ok
test terminal::tests::detects_warp_terminal ... ok
test terminal::tests::detects_wezterm ... ok
test terminal::tests::detects_windows_terminal ... ok
test terminal::tests::detects_zellij_multiplexer ... ok
test text_encoding::tests::test_cp1251_russian_text ... ok
test text_encoding::tests::test_cp1251_privet_word ... ok
test text_encoding::tests::test_cp866_uppercase_followed_by_ascii ... ok
test text_encoding::tests::test_cp866_uppercase_text ... ok
test text_encoding::tests::test_cp866_russian_text ... ok
test text_encoding::tests::test_iso8859_10_nordic_text ... ok
test text_encoding::tests::test_fallback_to_lossy ... ok
test text_encoding::tests::test_iso8859_11_thai_text ... ok
test text_encoding::tests::test_iso8859_13_baltic_text ... ok
test text_encoding::tests::test_iso8859_1_latin_text ... ok
test text_encoding::tests::test_iso8859_3_south_europe_text ... ok
test text_encoding::tests::test_iso8859_2_central_european_text ... ok
test text_encoding::tests::test_iso8859_5_cyrillic_text ... ok
test text_encoding::tests::test_iso8859_4_baltic_text ... ok
test text_encoding::tests::test_iso8859_7_greek_text ... ok
test text_encoding::tests::test_iso8859_6_arabic_text ... ok
test text_encoding::tests::test_iso8859_8_hebrew_text ... ok
test text_encoding::tests::test_iso8859_9_turkish_text ... ok
test text_encoding::tests::test_koi8_r_privet_word ... ok
test text_encoding::tests::test_latin1_cafe ... ok
test text_encoding::tests::test_preserves_ansi_sequences ... ok
test text_encoding::tests::test_utf8_passthrough ... ok
test text_encoding::tests::test_windows_1251_encoded_text ... ok
test text_encoding::tests::test_windows_1250_central_european_text ... ok
test text_encoding::tests::test_windows_1252_multiple_quotes ... ok
test text_encoding::tests::test_windows_1252_privet_gibberish_is_preserved ... ok
test text_encoding::tests::test_windows_1252_quotes ... ok
test text_encoding::tests::test_windows_1254_turkish_text ... ok
test text_encoding::tests::test_windows_1253_greek_text ... ok
test text_encoding::tests::test_windows_1255_hebrew_text ... ok
test text_encoding::tests::test_windows_1256_arabic_text ... ok
test text_encoding::tests::test_windows_1257_baltic_text ... ok
test text_encoding::tests::test_windows_1258_vietnamese_text ... ok
test text_encoding::tests::test_windows_874_thai_text ... ok
test text_encoding::tests::test_windows_932_shift_jis_text ... ok
test text_encoding::tests::test_windows_949_korean_text ... ok
test text_encoding::tests::test_windows_936_gbk_text ... ok
test text_encoding::tests::test_windows_950_big5_text ... ok
test token_data::tests::id_token_info_handles_missing_fields ... ok
test tools::context::tests::custom_tool_calls_should_roundtrip_as_custom_outputs ... ok
test token_data::tests::id_token_info_parses_email_and_plan ... ok
test tools::context::tests::function_payloads_remain_function_outputs ... ok
test tools::context::tests::telemetry_preview_returns_original_within_limits ... ok
test tools::context::tests::telemetry_preview_truncates_by_bytes ... ok
test tools::context::tests::telemetry_preview_truncates_by_lines ... ok
test tools::handlers::grep_files::tests::parse_truncates_after_limit ... ok
test tools::handlers::grep_files::tests::parses_basic_results ... ok
test skills::loader::tests::loads_skills_from_nearest_codex_dir_under_repo_root ... ok
test skills::loader::tests::loads_skills_when_cwd_is_file_in_repo ... ok
test git_info::tests::test_get_git_working_tree_state_clean_repo ... ok
test tools::handlers::list_dir::tests::bfs_truncation ... ok
test tools::handlers::list_dir::tests::errors_when_offset_exceeds_entries ... ok
test tools::handlers::grep_files::tests::run_search_handles_no_matches ... ok
test tools::handlers::grep_files::tests::run_search_with_glob_filter ... ok
test tools::handlers::grep_files::tests::run_search_respects_limit ... ok
test tools::handlers::grep_files::tests::run_search_returns_results ... ok
test tools::handlers::mcp_resource::tests::call_tool_result_from_content_marks_success ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_all_servers_is_sorted ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_single_server_copies_next_cursor ... ok
test tools::handlers::mcp_resource::tests::parse_arguments_handles_empty_and_json ... ok
test tools::handlers::mcp_resource::tests::resource_with_server_serializes_server_field ... ok
test tools::handlers::mcp_resource::tests::template_with_server_serializes_server_field ... ok
test tools::handlers::read_file::tests::errors_when_offset_exceeds_length ... ok
test tools::handlers::list_dir::tests::handles_large_limit_without_overflow ... ok
test tools::handlers::read_file::tests::indentation_mode_expands_parents ... ok
test tools::handlers::read_file::tests::indentation_mode_captures_block ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_no_headers ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_shallow ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_javascript_sample ... ignored
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_siblings ... ok
test tools::handlers::list_dir::tests::lists_directory_entries ... ok
test tools::handlers::list_dir::tests::respects_depth_parameter ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_python_sample ... ok
test tools::handlers::read_file::tests::indentation_mode_respects_sibling_flag ... ok
test tools::handlers::read_file::tests::reads_non_utf8_lines ... ok
test tools::handlers::read_file::tests::respects_limit_even_with_more_lines ... ok
test tools::handlers::read_file::tests::trims_crlf_endings ... ok
test tools::handlers::read_file::tests::reads_requested_range ... ok
test tools::handlers::shell::tests::shell_command_handler_respects_explicit_login_flag ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_bash_shell ... ok
test tools::handlers::read_file::tests::truncates_lines_longer_than_max_length ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_cmd_shell ... ok
test tools::handlers::unified_exec::tests::test_get_command_uses_default_shell_when_unspecified ... ok
test skills::loader::tests::skill_roots_include_admin_with_lowest_priority_on_unix ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_powershell_shell ... ok
test tools::sandboxing::tests::external_sandbox_skips_exec_approval_on_request ... ok
test tools::sandboxing::tests::restricted_sandbox_requires_exec_approval_on_request ... ok
test tools::spec::tests::chat_tools_include_top_level_name ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_includes_entrypoint_for_node_binary ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_skips_entrypoint_for_codex_binary ... ok
test tools::handlers::shell::tests::commands_generated_by_shell_command_handler_can_be_matched_by_is_known_safe_command ... ok
test skills::loader::tests::skips_hidden_and_invalid ... ok
test tools::handlers::list_dir::tests::indicates_truncated_results ... ok
test skills::loader::tests::repo_skills_search_does_not_escape_repo_root ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_default ... ok
test tools::spec::tests::test_build_specs_default_shell_present ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_default ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_mcp_tools_converted ... ok
test tools::handlers::shell::tests::shell_command_handler_to_exec_params_uses_session_shell_and_turn_context ... ok
test git_info::tests::test_get_git_working_tree_state_with_changes ... ok
test tools::spec::tests::test_build_specs_mcp_tools_sorted_by_name ... ok
test tools::spec::tests::test_codex_mini_defaults ... ok
test tools::spec::tests::test_codex_mini_unified_exec_web_search ... ok
test tools::spec::tests::test_codex_5_1_mini_defaults ... ok
test git_info::tests::test_get_git_working_tree_state_unpushed_commit ... ok
test tools::spec::tests::test_parallel_support_flags ... ignored
test tools::spec::tests::test_shell_command_tool ... ok
test tools::spec::tests::test_shell_tool ... ok
test tools::spec::tests::test_exp_5_1_defaults ... ok
test truncate::tests::split_string_handles_empty_string ... ok
test truncate::tests::split_string_handles_overlapping_budgets_without_removal ... ok
test truncate::tests::split_string_only_keeps_prefix_when_tail_budget_is_zero ... ok
test truncate::tests::split_string_only_keeps_suffix_when_prefix_budget_is_zero ... ok
test truncate::tests::split_string_respects_utf8_boundaries ... ok
test truncate::tests::split_string_works ... ok
test truncate::tests::truncate_bytes_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_bytes_over_limit_returns_truncated ... ok
test truncate::tests::truncate_bytes_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_bytes_under_limit_returns_original ... ok
test truncate::tests::truncate_middle_bytes_handles_utf8_content ... ok
test truncate::tests::truncate_middle_tokens_handles_utf8_content ... ok
test truncate::tests::truncate_tokens_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_tokens_over_limit_returns_truncated ... ok
test truncate::tests::truncate_tokens_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_tokens_under_limit_returns_original ... ok
test truncate::tests::truncate_with_token_budget_reports_truncation_at_zero_limit ... ok
test truncate::tests::truncate_with_token_budget_returns_original_when_under_limit ... ok
test truncate::tests::truncates_across_multiple_under_limit_texts_and_reports_omitted ... ok
test turn_diff_tracker::tests::accumulates_add_and_update ... ok
test turn_diff_tracker::tests::accumulates_delete ... ok
test tools::spec::tests::test_full_toolset_specs_for_gpt5_codex_unified_exec_web_search ... ok
test turn_diff_tracker::tests::accumulates_move_and_update ... ok
test turn_diff_tracker::tests::binary_files_differ_update ... ok
test turn_diff_tracker::tests::filenames_with_spaces_add_and_update ... ok
test turn_diff_tracker::tests::move_declared_but_file_only_appears_at_dest_is_add ... ok
test tools::spec::tests::test_get_openai_tools_mcp_tools_with_additional_properties_schema ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_avoids_splitting_utf8_codepoints ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_makes_progress_on_invalid_utf8 ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_respects_max_bytes_for_ascii ... ok
test unified_exec::session_manager::tests::pruning_falls_back_to_lru_when_no_exited ... ok
test turn_diff_tracker::tests::move_without_1change_yields_no_diff ... ok
test unified_exec::session_manager::tests::pruning_prefers_exited_sessions_outside_recently_used ... ok
test unified_exec::session_manager::tests::pruning_protects_recent_sessions_even_if_exited ... ok
test unified_exec::session_manager::tests::unified_exec_env_injects_defaults ... ok
test unified_exec::tests::completed_commands_do_not_persist_sessions ... ignored
test unified_exec::session_manager::tests::unified_exec_env_overrides_existing_values ... ok
test unified_exec::tests::push_chunk_trims_only_excess_bytes ... ok
test unified_exec::tests::requests_with_large_timeout_are_capped ... ignored
test turn_diff_tracker::tests::update_persists_across_new_baseline_for_new_file ... ok
test tools::spec::tests::test_gpt_5_1_defaults ... ok
test tools::spec::tests::test_gpt_5_defaults ... ok
test user_instructions::tests::test_is_skill_instructions ... ok
test user_instructions::tests::test_is_user_instructions ... ok
test user_instructions::tests::test_skill_instructions ... ok
test user_instructions::tests::test_user_instructions ... ok
test user_notification::tests::test_user_notification ... ok
test user_shell_command::tests::detects_user_shell_command_text_variants ... ok
test tools::spec::tests::test_mcp_tool_anyof_defaults_to_string ... ok
test tools::spec::tests::test_mcp_tool_array_without_items_gets_default_string_items ... ok
test util::tests::feedback_tags_macro_compiles ... ok
test util::tests::test_try_parse_error_message ... ok
test util::tests::test_try_parse_error_message_no_error ... ok
test tools::spec::tests::test_test_model_family_includes_sync_tool ... ok
test tools::spec::tests::test_mcp_tool_integer_normalized_to_number ... ok
test tools::spec::tests::test_mcp_tool_property_missing_type_defaults_to_string ... ok
test user_shell_command::tests::formats_basic_record ... ok
test user_shell_command::tests::uses_aggregated_output_over_streams ... ok
test git_info::tests::test_get_git_working_tree_state_branch_fallback ... ok
test git_info::tests::test_recent_commits_orders_and_limits ... ok
test unified_exec::tests::reusing_completed_session_returns_unknown_session ... ok
test unified_exec::tests::unified_exec_persists_across_requests ... ok
test unified_exec::tests::multi_unified_exec_sessions ... ok
test unified_exec::tests::unified_exec_timeouts ... ok

test result: ok. 667 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 14.73s

running 566 tests
test suite::abort_tasks::interrupt_long_running_tool_emits_turn_aborted ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_preserves_success_after_failure ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_across_multiple_tool_calls ... ok
test suite::abort_tasks::interrupt_tool_records_history_entries ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_can_use_shell_command_output_as_patch_input ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_failure_propagates_error_and_skips_diff ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_emits_turn_diff ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_updates_relative_workdir ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::auth_refresh::refresh_token_returns_permanent_error_for_expired_refresh_token ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::auth_refresh::refresh_token_returns_transient_error_on_server_failure ... ok
test suite::auth_refresh::refresh_token_succeeds_updates_storage ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::client::azure_responses_request_includes_store_and_reasoning_ids ... ok
test suite::client::azure_overrides_assign_properties_used_for_responses_url ... ok
test suite::client::configured_verbosity_is_sent ... ok
test suite::client::configured_reasoning_summary_is_sent ... ok
test suite::cli_stream::responses_api_stream_cli ... ok
test suite::client::chatgpt_auth_sends_correct_request ... ok
test suite::cli_stream::exec_cli_applies_experimental_instructions_file ... ok
test suite::cli_stream::chat_mode_stream_cli ... ok
test suite::approvals::approving_execpolicy_amendment_persists_policy_and_skips_future_prompts ... ok
test suite::client::configured_verbosity_not_sent_for_models_without_support ... ok
test suite::client::context_window_error_sets_total_tokens_to_model_window ... ok
test suite::cli_stream::integration_creates_and_checks_session_file ... ok
test suite::client::includes_configured_effort_in_request ... ok
test suite::cli_stream::integration_git_info_unit_test ... ok
test suite::client::includes_default_reasoning_effort_in_request_when_defined_by_model_family ... ok
test suite::client::includes_default_verbosity_in_request ... ok
test suite::client::includes_base_instructions_override_in_request ... ok
test suite::client::reasoning_summary_is_omitted_when_disabled ... ok
test suite::client::includes_user_instructions_message_in_request ... ok
test suite::codex_delegate::codex_delegate_forwards_exec_approval_and_proceeds_on_approval ... ok
test suite::codex_delegate::codex_delegate_forwards_patch_approval_and_proceeds_on_decision ... ok
test suite::codex_delegate::codex_delegate_ignores_legacy_deltas ... ok
test suite::compact::auto_compact_allows_multiple_attempts_when_interleaved_with_other_turn_events ... ok
test suite::compact::auto_compact_counts_encrypted_reasoning_before_last_user ... ok
test suite::compact::auto_compact_persists_rollout_entries ... ok
test suite::compact::auto_compact_runs_after_resume_when_token_usage_is_over_limit ... ok
test suite::compact::auto_compact_runs_after_token_limit_hit ... ok
test suite::compact::auto_compact_triggers_after_function_call_over_95_percent_usage ... ok
test suite::compact::manual_compact_emits_api_and_local_token_usage_events ... ok
test suite::compact::manual_compact_retries_after_context_window_error ... ok
test suite::compact::manual_compact_twice_preserves_latest_user_messages ... ok
test suite::compact::manual_compact_uses_custom_prompt ... ok
test suite::compact::multiple_auto_compact_per_task_runs_after_token_limit_hit ... ok
test suite::compact::summarize_context_three_requests_and_instructions ... ok
test suite::compact_remote::remote_compact_persists_replacement_history_in_rollout ... ok
test suite::compact_remote::remote_compact_replaces_history_for_followups ... ok
test suite::compact_remote::remote_compact_runs_automatically ... ok
test suite::approvals::approval_matrix_covers_all_modes ... ok
test suite::compact_resume_fork::compact_resume_and_fork_preserve_model_history_view ... ok
test suite::deprecation_notice::emits_deprecation_notice_for_legacy_feature_flag ... ok
test suite::exec::exit_code_0_succeeds ... ok
test suite::exec::exit_command_not_found_is_ok ... ok
test suite::exec::truncates_output_bytes ... ok
test suite::exec::truncates_output_lines ... ok
test suite::exec::write_file_fails_as_sandbox_error ... ok
test suite::exec_policy::execpolicy_blocks_shell_invocation ... ok
test suite::client::env_var_overrides_loaded_auth has been running for over 60 seconds
test suite::client::history_dedupes_streamed_and_final_messages_across_turns has been running for over 60 seconds
test suite::client::includes_conversation_id_and_model_headers_in_request has been running for over 60 seconds
test suite::client::includes_developer_instructions_message_in_request has been running for over 60 seconds
test suite::client::includes_no_effort_in_request has been running for over 60 seconds
test suite::client::prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens has been running for over 60 seconds
test suite::client::resume_includes_initial_messages_and_sends_prior_items has been running for over 60 seconds
test suite::client::skills_append_to_instructions has been running for over 60 seconds
test suite::client::token_count_includes_rate_limits_snapshot has been running for over 60 seconds
test suite::client::usage_limit_error_emits_rate_limit_event has been running for over 60 seconds
test suite::compact_resume_fork::compact_resume_after_second_compaction_preserves_history has been running for over 60 seconds
test suite::fork_conversation::fork_conversation_twice_drops_to_first_message has been running for over 60 seconds
 ELIFECYCLE  Command failed.
 ELIFECYCLE  Test failed. See above for more details. (which runs ) can hit an intermittent hang in during shutdown; tests appear to finish but the process sometimes doesn’t exit. Targeted nextest + SDK test runs above are clean.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

More validation (2026-01-05):

  • codex-rs:

    • (1086 passed, 17 skipped)
  • sdk/native:

@codex-native/sdk@0.0.6 pretest /Users/bytedance/codex-native/sdk/native
node -e "const fs=require('fs');const hasNode=fs.readdirSync('.').some(f=>f.endsWith('.node'));if(!hasNode){process.exitCode=1;console.error('missing .node binary; run npm run build:ci');} else {console.log('✓ native binary present; skipping rebuild');}"

✓ native binary present; skipping rebuild

@codex-native/sdk@0.0.6 test /Users/bytedance/codex-native/sdk/native
node ./scripts/run-jest.mjs --runInBand

console.warn
Skipping OSS integration test: no running Ollama server detected. Set CODEX_NATIVE_RUN_OSS_TEST=1 to force running the test.

  232 |   const autoDetectedOllama = ossEnvPreference === null && !isCI && isOllamaAvailable();
  233 |   if (ossEnvPreference === null && !autoDetectedOllama) {
> 234 |     console.warn(
      |             ^
  235 |       "Skipping OSS integration test: no running Ollama server detected. " +
  236 |         'Set CODEX_NATIVE_RUN_OSS_TEST=1 to force running the test.',
  237 |     );

  at tests/agents-models-defaults.test.ts:234:13
  at tests/agents-models-defaults.test.ts:78:1

console.log

📟 LSP diagnostics detected:
• src/app.ts
  - [WARNING] Unused variable (1:1 · tsc)

  at LspDiagnosticsBridge.processDiagnostics (src/lsp/bridge.ts:67:15)

console.log

📟 LSP diagnostics detected:
• README.md
  - [INFO] Trailing whitespace (5:1 · markdownlint)

  at LspDiagnosticsBridge.processDiagnostics (src/lsp/bridge.ts:67:15) (JS) completed
  • in completed (fastembed test took ~2m on first run due to model download)

Note: running

codex-monorepo@ test /Users/bytedance/codex-native
pnpm run ci:codespell && pnpm run ci:shear && pnpm run ci:format && pnpm run test:codex-rs && pnpm run sdk:build && pnpm run sdk:test

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:codespell /Users/bytedance/codex-native
codespell --config .codespellrc

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:shear /Users/bytedance/codex-native
bash -c 'cd codex-rs && cargo shear'

Analyzing /Users/bytedance/codex-native/codex-rs

No unused dependencies!
sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ ci:format /Users/bytedance/codex-native
bash -c 'cd codex-rs && rustup toolchain install nightly --profile minimal >/dev/null && rustup component add rustfmt --toolchain nightly >/dev/null && cargo +nightly fmt -- --config imports_granularity=Item --check'

sdk/native/npm/darwin-x64 |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["darwin"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-arm64-musl |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-gnu |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["glibc"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/linux-x64-musl |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["linux"],"libc":["musl"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-arm64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["arm64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})
sdk/native/npm/win32-x64-msvc |  WARN  Unsupported platform: wanted: {"cpu":["x64"],"os":["win32"],"libc":["any"]} (current: {"os":"darwin","cpu":"arm64","libc":"unknown"})

codex-monorepo@ test:codex-rs /Users/bytedance/codex-native
cd codex-rs && cargo test --workspace --all-features

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 25 tests
test endpoint::compact::tests::errors_when_wire_is_chat ... ok
test requests::chat::tests::groups_consecutive_tool_calls_into_a_single_assistant_message ... ok
test sse::chat::tests::completes_on_done_sentinel_without_json ... ok
test endpoint::models::tests::list_models_includes_etag ... ok
test endpoint::models::tests::parses_models_response ... ok
test requests::chat::tests::attaches_conversation_and_subagent_headers ... ok
test requests::responses::tests::azure_default_store_attaches_ids_and_headers ... ok
test endpoint::models::tests::appends_client_version_query ... ok
test sse::chat::tests::drops_partial_tool_calls_on_stop_finish_reason ... ok
test sse::chat::tests::emits_tool_calls_even_when_content_and_reasoning_present ... ok
test sse::chat::tests::concatenates_tool_call_arguments_across_deltas ... ok
test sse::chat::tests::emits_multiple_tool_calls ... ok
test sse::chat::tests::emits_tool_calls_for_multiple_choices ... ok
test sse::chat::tests::merges_tool_calls_by_index_when_id_missing_on_subsequent_deltas ... ok
test sse::chat::tests::preserves_tool_call_name_when_empty_deltas_arrive ... ok
test sse::responses::tests::context_window_error_is_fatal ... ok
test sse::responses::tests::context_window_error_with_newline_is_fatal ... ok
test sse::responses::tests::quota_exceeded_error_is_fatal ... ok
test sse::responses::tests::error_when_missing_completed ... ok
test sse::responses::tests::test_try_parse_retry_after_azure ... ok
test sse::responses::tests::test_try_parse_retry_after ... ok
test sse::responses::tests::test_try_parse_retry_after_no_delay ... ok
test sse::responses::tests::error_when_error_event ... ok
test sse::responses::tests::table_driven_event_kinds ... ok
test sse::responses::tests::parses_items_and_completed ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 6 tests
test streaming_client_adds_auth_headers ... ok
test chat_client_uses_responses_path_for_responses_wire ... ok
test responses_client_uses_responses_path_for_responses_wire ... ok
test chat_client_uses_chat_completions_path_for_chat_wire ... ok
test responses_client_uses_chat_path_for_chat_wire ... ok
test streaming_client_retries_on_transport_error ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 1 test
test models_client_hits_models_endpoint ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 2 tests
test responses_stream_aggregates_output_text_deltas ... ok
test responses_stream_parses_items_and_completed_end_to_end ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 20 tests
test bespoke_event_handling::tests::test_handle_turn_diff_is_noop_for_v1 ... ok
test bespoke_event_handling::tests::test_handle_token_count_event_without_usage_info ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_without_args ... ok
test bespoke_event_handling::tests::test_handle_turn_diff_emits_v2_notification ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_error ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_completed_without_error ... ok
test bespoke_event_handling::tests::test_handle_error_records_message ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_failed_with_error ... ok
test bespoke_event_handling::tests::test_handle_token_count_event_emits_usage_and_rate_limits ... ok
test bespoke_event_handling::tests::test_handle_turn_complete_emits_error_multiple_turns ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_begin_notification_with_args ... ok
test bespoke_event_handling::tests::test_construct_mcp_tool_call_end_notification_success ... ok
test bespoke_event_handling::tests::test_handle_turn_interrupted_emits_interrupted_with_error ... ok
test bespoke_event_handling::tests::test_handle_turn_plan_update_emits_notification_for_v2 ... ok
test outgoing_message::tests::verify_account_login_completed_notification_serialization ... ok
test outgoing_message::tests::verify_account_updated_notification_serialization ... ok
test outgoing_message::tests::verify_server_notification_serialization ... ok
test outgoing_message::tests::verify_account_rate_limits_notification_serialization ... ok
test codex_message_processor::tests::extract_conversation_summary_prefers_plain_user_messages ... ok
test codex_message_processor::tests::read_summary_from_rollout_returns_empty_preview_when_no_user_message ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 79 tests
test suite::auth::get_auth_status_no_auth ... ok
test suite::auth::login_api_key_rejected_when_forced_chatgpt ... ok
test suite::auth::get_auth_status_with_api_key ... ok
test suite::config::get_config_toml_parses_all_fields ... ok
test suite::auth::get_auth_status_with_api_key_when_auth_not_required ... ok
test suite::auth::get_auth_status_with_api_key_no_include_token ... ok
test suite::config::get_config_toml_empty ... ok
test suite::login::login_chatgpt_rejected_when_forced_api ... ok
test suite::login::login_chatgpt_includes_forced_workspace_query_param ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_accepts_cancellation_token ... ok
test suite::fuzzy_file_search::test_fuzzy_file_search_sorts_and_includes_indices ... ok
test suite::archive_conversation::archive_conversation_moves_rollout_into_archived_directory ... ok
test suite::list_resume::list_conversations_fetches_through_filtered_pages ... ok
test suite::create_conversation::test_conversation_create_and_send_message_ok ... ok
test suite::login::logout_chatgpt_removes_auth ... ok
test suite::send_message::test_send_message_session_not_found ... ok
test suite::codex_message_processor_flow::test_codex_jsonrpc_conversation_flow ... ok
test suite::set_default_model::set_default_model_persists_overrides ... ok
test suite::codex_message_processor_flow::test_send_user_turn_updates_sandbox_and_cwd_between_turns ... ok
test suite::user_agent::get_user_agent_returns_current_codex_user_agent ... ok
test suite::v2::account::get_account_no_auth ... ok
test suite::v2::account::get_account_when_auth_not_required ... ok
test suite::user_info::user_info_returns_email_from_auth_json ... ok
test suite::send_message::test_send_message_raw_notifications_opt_in ... ok
test suite::output_schema::send_user_turn_accepts_output_schema_v1 ... ok
test suite::v2::account::get_account_with_api_key ... ok
test suite::v2::account::get_account_with_chatgpt ... ok
test suite::v2::account::login_account_api_key_rejected_when_forced_chatgpt ... ok
test suite::codex_message_processor_flow::test_send_user_turn_changes_approval_policy_behavior ... ok
test suite::output_schema::send_user_turn_output_schema_is_per_turn_v1 ... ok
test suite::v2::account::login_account_chatgpt_includes_forced_workspace_query_param ... ok
test suite::v2::account::login_account_chatgpt_rejected_when_forced_api ... ok
test suite::list_resume::test_list_and_resume_conversations ... ok
test suite::v2::account::login_account_api_key_succeeds_and_notifies ... ok
test suite::v2::account::logout_account_removes_auth_and_notifies ... ok
test suite::v2::config_rpc::config_read_returns_effective_and_layers ... ok
test suite::v2::config_rpc::config_read_includes_system_layer_and_overrides ... ok
test suite::v2::config_rpc::config_batch_write_applies_multiple_edits ... ok
test suite::v2::config_rpc::config_read_includes_tools ... ok
test suite::v2::model_list::list_models_rejects_invalid_cursor ... ok
test suite::v2::config_rpc::config_value_write_rejects_version_conflict ... ok
test suite::v2::model_list::list_models_pagination_works ... ok
test suite::v2::config_rpc::config_value_write_replaces_value ... ok
test suite::v2::model_list::list_models_returns_all_models_with_large_limit ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_auth ... ok
test suite::v2::rate_limits::get_account_rate_limits_requires_chatgpt_auth ... ok
test suite::v2::output_schema::turn_start_accepts_output_schema_v2 ... ok
test suite::v2::output_schema::turn_start_output_schema_is_per_turn_v2 ... ok
test suite::v2::review::review_start_rejects_empty_custom_instructions ... ok
test suite::v2::review::review_start_rejects_empty_base_branch ... ok
test suite::v2::review::review_start_rejects_empty_commit_sha ... ok
test suite::send_message::test_send_message_success ... ok
test suite::v2::thread_list::thread_list_basic_empty ... ok
test suite::v2::thread_archive::thread_archive_moves_rollout_into_archived_directory ... ok
test suite::v2::rate_limits::get_account_rate_limits_returns_snapshot ... ok
test suite::v2::review::review_start_runs_review_turn_and_emits_code_review_item ... ok
test suite::v2::thread_list::thread_list_includes_git_info ... ok
test suite::v2::thread_list::thread_list_pagination_next_cursor_none_on_last_page ... ok
test suite::v2::thread_list::thread_list_respects_provider_filter ... ok
test suite::v2::review::review_start_with_detached_delivery_returns_new_thread_id ... ok
test suite::v2::thread_list::thread_list_fetches_until_limit_or_exhausted ... ok
test suite::v2::account::login_account_chatgpt_start_can_be_cancelled ... ok
test suite::v2::thread_resume::thread_resume_returns_rollout_history ... ok
test suite::v2::thread_list::thread_list_stops_when_not_enough_filtered_results_exist ... ok
test suite::v2::thread_resume::thread_resume_prefers_path_over_thread_id ... ok
test suite::interrupt::test_shell_command_interruption ... ok
test suite::v2::thread_resume::thread_resume_returns_original_thread ... ok
test suite::v2::thread_start::thread_start_creates_thread_and_emits_started ... ok
test suite::v2::turn_start::turn_start_accepts_local_image_input ... ok
test suite::v2::thread_list::thread_list_enforces_max_limit ... ok
test suite::v2::thread_resume::thread_resume_supports_history_and_overrides ... ok
test suite::v2::turn_start::turn_start_emits_notifications_and_accepts_model_override ... ok
test suite::v2::turn_start::turn_start_file_change_approval_decline_v2 ... ok
test suite::v2::turn_start::turn_start_exec_approval_decline_v2 ... ok
test suite::v2::turn_start::command_execution_notifications_include_process_id ... ok
test suite::v2::turn_start::turn_start_file_change_approval_v2 ... ok
test suite::v2::turn_start::turn_start_exec_approval_toggle_v2 ... ok
test suite::v2::turn_start::turn_start_updates_sandbox_and_cwd_between_turns_v2 ... ok
test suite::v2::turn_interrupt::turn_interrupt_aborts_running_turn ... ok

test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.47s

running 20 tests
test protocol::common::tests::conversation_id_deserializes_from_plain_string ... ok
test protocol::common::tests::conversation_id_serializes_as_plain_string ... ok
test protocol::common::tests::account_serializes_fields_in_camel_case ... ok
test protocol::common::tests::serialize_account_logout ... ok
test protocol::common::tests::serialize_client_notification ... ok
test protocol::common::tests::serialize_get_account ... ok
test protocol::common::tests::serialize_new_conversation ... ok
test protocol::common::tests::serialize_account_login_api_key ... ok
test protocol::common::tests::serialize_list_models ... ok
test protocol::common::tests::serialize_get_account_rate_limits ... ok
test protocol::common::tests::serialize_account_login_chatgpt ... ok
test protocol::v2::tests::codex_error_info_serializes_http_status_code_in_camel_case ... ok
test protocol::v2::tests::sandbox_policy_round_trips_external_sandbox_network_access ... ok
test protocol::thread_history::tests::splits_reasoning_when_interleaved ... ok
test protocol::thread_history::tests::marks_turn_as_interrupted_when_aborted ... ok
test protocol::thread_history::tests::builds_multiple_turns_with_reasoning_items ... ok
test protocol::v2::tests::skills_list_params_serialization_uses_force_reload ... ok
test protocol::common::tests::serialize_server_request ... ok
test protocol::v2::tests::core_turn_item_into_thread_item_converts_supported_variants ... ok
test export::tests::generated_ts_has_no_optional_nullable_fields ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.23s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 49 tests
test invocation::tests::test_apply_patch_should_resolve_absolute_paths_in_cwd ... ok
test invocation::tests::test_echo_and_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_two_args_is_ignored ... ok
test invocation::tests::test_cd_pipe_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_with_semicolon_is_ignored ... ok
test invocation::tests::test_cd_or_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_double_quoted_path_with_spaces ... ok
test invocation::tests::test_cd_then_apply_patch_then_extra_is_ignored ... ok
test invocation::tests::test_double_cd_then_apply_patch_is_ignored ... ok
test invocation::tests::test_cd_single_quoted_path_with_spaces ... ok
test invocation::tests::test_apply_patch_with_arg_is_ignored ... ok
test invocation::tests::test_cmd_heredoc_with_cd ... ok
test invocation::tests::test_echo_then_cd_and_apply_patch_is_ignored ... ok
test invocation::tests::test_heredoc ... ok
test invocation::tests::test_heredoc_applypatch ... ok
test invocation::tests::test_heredoc_non_login_shell ... ok
test invocation::tests::test_heredoc_with_leading_cd ... ok
test invocation::tests::test_literal ... ok
test invocation::tests::test_literal_applypatch ... ok
test invocation::tests::test_powershell_heredoc ... ok
test invocation::tests::test_powershell_heredoc_no_profile ... ok
test invocation::tests::test_pwsh_heredoc ... ok
test parser::test_parse_one_hunk ... ok
test parser::test_parse_patch ... ok
test parser::test_update_file_chunk ... ok
test parser::test_parse_patch_lenient ... ok
test seek_sequence::tests::test_exact_match_finds_sequence ... ok
test seek_sequence::tests::test_pattern_longer_than_input_returns_none ... ok
test seek_sequence::tests::test_rstrip_match_ignores_trailing_whitespace ... ok
test seek_sequence::tests::test_trim_match_ignores_leading_and_trailing_whitespace ... ok
test invocation::tests::test_implicit_patch_bash_script_is_error ... ok
test invocation::tests::test_implicit_patch_single_arg_is_error ... ok
test invocation::tests::test_apply_patch_resolves_move_path_with_effective_cwd ... ok
test invocation::tests::test_unified_diff_last_line_replacement ... ok
test invocation::tests::test_unified_diff_insert_at_eof ... ok
test tests::test_add_file_hunk_creates_file_with_contents ... ok
test tests::test_delete_file_hunk_removes_file ... ok
test tests::test_unified_diff ... ok
test tests::test_unified_diff_last_line_replacement ... ok
test tests::test_unified_diff_insert_at_eof ... ok
test tests::test_apply_patch_fails_on_write_error ... ok
test tests::test_unified_diff_first_line_replacement ... ok
test tests::test_pure_addition_chunk_followed_by_removal ... ok
test tests::test_unified_diff_interleaved_changes ... ok
test tests::test_multiple_update_chunks_apply_to_single_file ... ok
test tests::test_update_file_hunk_can_move_file ... ok
test tests::test_update_file_hunk_interleaved_changes ... ok
test tests::test_update_file_hunk_modifies_content ... ok
test tests::test_update_line_with_unicode_dash ... ok

test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test suite::tool::test_apply_patch_cli_add_overwrites_existing_file ... ok
test suite::tool::test_apply_patch_cli_failure_after_partial_success_leaves_changes ... ok
test suite::tool::test_apply_patch_cli_rejects_empty_patch ... ok
test suite::tool::test_apply_patch_cli_delete_directory_fails ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_chunks ... ok
test suite::tool::test_apply_patch_cli_rejects_empty_update_hunk ... ok
test suite::tool::test_apply_patch_cli_moves_file_to_new_directory ... ok
test suite::cli::test_apply_patch_cli_stdin_add_and_update ... ok
test suite::tool::test_apply_patch_cli_rejects_invalid_hunk_header ... ok
test suite::tool::test_apply_patch_cli_rejects_missing_file_delete ... ok
test suite::tool::test_apply_patch_cli_applies_multiple_operations ... ok
test suite::tool::test_apply_patch_cli_move_overwrites_existing_destination ... ok
test suite::tool::test_apply_patch_cli_requires_existing_file_for_update ... ok
test suite::tool::test_apply_patch_cli_reports_missing_context ... ok
test suite::tool::test_apply_patch_cli_updates_file_appends_trailing_newline ... ok
test suite::cli::test_apply_patch_cli_add_and_update ... ok
test suite::scenarios::test_apply_patch_scenarios ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 3 tests
test tests::returns_err_when_token_already_cancelled ... ok
test tests::returns_ok_when_future_completes_first ... ok
test tests::returns_err_when_token_cancelled_first ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 5 tests
test types::tests::unified_diff_prefers_current_diff_task_turn ... ok
test types::tests::unified_diff_falls_back_to_pr_output_diff ... ok
test types::tests::assistant_error_message_combines_code_and_message ... ok
test types::tests::assistant_text_messages_extracts_text_content ... ok
test types::tests::user_text_prompt_joins_parts_with_spacing ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 2 tests
test suite::apply_command_e2e::test_apply_command_creates_fibonacci_file ... ok
test suite::apply_command_e2e::test_apply_command_with_merge_conflicts ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s

running 6 tests
test debug_sandbox::pid_tracker::tests::pid_is_alive_detects_current_process ... ok
test login::tests::short_key_returns_stars ... ok
test login::tests::formats_long_key ... ok
test debug_sandbox::pid_tracker::tests::list_child_pids_includes_spawned_child ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_spawned_children ... ok
test debug_sandbox::pid_tracker::tests::pid_tracker_collects_bash_subshell_descendants ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s

running 14 tests
test tests::format_exit_messages_skips_zero_usage ... ok
test tests::feature_toggles_known_features_generate_overrides ... ok
test tests::feature_toggles_unknown_feature_errors ... ok
test wsl_paths::tests::normalize_is_noop_on_unix_paths ... ok
test wsl_paths::tests::win_to_wsl_basic ... ok
test tests::resume_model_flag_applies_when_no_root_flags ... ok
test tests::resume_picker_logic_last ... ok
test tests::resume_picker_logic_with_session_id ... ok
test tests::resume_merges_dangerously_bypass_flag ... ok
test tests::resume_all_flag_sets_show_all ... ok
test tests::resume_merges_option_flags_and_full_auto ... ok
test tests::resume_picker_logic_none_and_not_last ... ok
test tests::format_exit_messages_includes_resume_hint_without_color ... ok
test tests::format_exit_messages_applies_color_when_enabled ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 1 test
test execpolicy_check_matches_expected_json ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.55s

running 6 tests
test add_streamable_http_rejects_removed_flag ... ok
test add_cant_add_command_and_url ... ok
test add_streamable_http_with_custom_env_var ... ok
test add_with_env_preserves_key_order_and_values ... ok
test add_and_remove_server_updates_global_config ... ok
test add_streamable_http_without_manual_token ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.04s

running 3 tests
test list_shows_empty_state ... ok
test get_disabled_server_shows_single_line ... ok
test list_and_get_render_expected_output ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s

running 1 test
test default_client::tests::inject_trace_headers_uses_current_span_context ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 12 tests
test tests::composer_input_renders_typed_characters ... ignored, very slow
test tests::format_task_status_lines_without_diff_falls_back ... ok
test tests::format_task_status_lines_with_diff_and_label ... ok
test tests::select_attempt_validates_bounds ... ok
test tests::parse_task_id_from_url_and_raw ... ok
test tests::trims_override_whitespace ... ok
test tests::branch_override_is_used_when_provided ... ok
test tests::collect_attempt_diffs_includes_sibling_attempts ... ok
test app::tests::load_tasks_uses_env_parameter ... ok
test tests::prefers_current_branch_when_available ... ok
test tests::falls_back_to_main_when_no_git_info_is_available ... ok
test tests::falls_back_to_current_branch_when_default_is_missing ... ok

test result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 1 test
test mock_backend_varies_by_env ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 28 tests
test elapsed::tests::test_format_duration_one_hour_has_space ... ok
test elapsed::tests::test_format_duration_minutes ... ok
test elapsed::tests::test_format_duration_seconds ... ok
test elapsed::tests::test_format_duration_subsecond ... ok
test config_override::tests::parses_bool ... ok
test config_override::tests::fails_on_unquoted_string ... ok
test config_override::tests::parses_basic_scalar ... ok
test config_override::tests::parses_inline_table ... ok
test config_override::tests::parses_array ... ok
test format_env_display::tests::formats_env_vars_with_dollar_prefix ... ok
test format_env_display::tests::formats_sorted_env_pairs ... ok
test format_env_display::tests::combines_env_pairs_and_vars ... ok
test format_env_display::tests::returns_dash_when_empty ... ok
test fuzzy_match::tests::case_insensitive_matching_basic ... ok
test fuzzy_match::tests::ascii_basic_indices ... ok
test fuzzy_match::tests::empty_needle_matches_with_max_score_and_no_indices ... ok
test fuzzy_match::tests::indices_are_deduped_for_multichar_lowercase_expansion ... ok
test fuzzy_match::tests::prefer_contiguous_match_over_spread ... ok
test fuzzy_match::tests::start_of_string_bonus_applies ... ok
test fuzzy_match::tests::unicode_dotted_i_istanbul_highlighting ... ok
test fuzzy_match::tests::unicode_german_sharp_s_casefold ... ok
test oss::tests::test_get_default_model_for_provider_lmstudio ... ok
test oss::tests::test_get_default_model_for_provider_ollama ... ok
test oss::tests::test_get_default_model_for_provider_unknown ... ok
test sandbox_mode_cli_arg::tests::maps_cli_args_to_protocol_modes ... ok
test sandbox_summary::tests::summarizes_external_sandbox_with_enabled_network ... ok
test sandbox_summary::tests::summarizes_external_sandbox_without_network_access_suffix ... ok
test sandbox_summary::tests::workspace_write_summary_still_includes_network_access ... ok

test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 671 tests
test auth::storage::tests::keyring_auth_storage_compute_store_key_for_home_directory ... ok
test apply_patch::tests::convert_apply_patch_maps_add_variant ... ok
test auth::storage::tests::file_storage_delete_removes_auth_file ... ok
test auth::storage::tests::keyring_auth_storage_load_returns_deserialized_auth ... ok
test auth::storage::tests::keyring_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::auto_auth_storage_delete_removes_keyring_and_file ... ok
test auth::storage::tests::auto_auth_storage_load_prefers_keyring_value ... ok
test auth::storage::tests::auto_auth_storage_save_prefers_keyring ... ok
test auth::storage::tests::file_storage_save_persists_auth_dot_json ... ok
test auth::storage::tests::file_storage_load_returns_auth_dot_json ... ok
test auth::storage::tests::auto_auth_storage_load_uses_file_when_keyring_empty ... ok
test auth::storage::tests::auto_auth_storage_load_falls_back_when_keyring_errors ... ok
test auth::storage::tests::auto_auth_storage_save_falls_back_when_keyring_errors ... ok
test auth::storage::tests::keyring_auth_storage_save_persists_and_removes_fallback_file ... ok
test auth::tests::logout_removes_auth_file ... ok
test auth::tests::login_with_api_key_overwrites_existing_auth_json ... ok
test bash::tests::accepts_concatenated_flag_and_value ... ok
test bash::tests::accepts_concatenated_flag_with_single_quotes ... ok
test bash::tests::accepts_multiple_commands_with_allowed_operators ... ok
test bash::tests::accepts_numbers_as_words ... ok
test auth::tests::refresh_without_id_token ... ok
test bash::tests::accepts_single_simple_command ... ok
test bash::tests::extracts_double_and_single_quoted_strings ... ok
test bash::tests::parse_zsh_lc_plain_commands ... ok
test bash::tests::rejects_command_and_process_substitutions_and_expansions ... ok
test bash::tests::rejects_concatenation_with_command_substitution ... ok
test bash::tests::rejects_concatenation_with_variable_substitution ... ok
test bash::tests::rejects_parentheses_and_subshells ... ok
test bash::tests::rejects_redirections_and_unsupported_operators ... ok
test bash::tests::rejects_variable_assignment_prefix ... ok
test bash::tests::rejects_trailing_operator_parse_error ... ok
test client_common::tests::omits_text_when_not_set ... ok
test client_common::tests::serializes_text_schema_with_strict_format ... ok
test client_common::tests::serializes_text_verbosity_when_set ... ok
test auth::tests::missing_auth_json_returns_none ... ok
test auth::tests::plan_type_maps_known_plan ... ok
test auth::tests::plan_type_maps_unknown_to_unknown ... ok
test codex::tests::falls_back_to_content_when_structured_is_null ... ok
test auth::tests::enforce_login_restrictions_allows_api_key_if_login_method_not_set_but_forced_chatgpt_workspace_id_is_set ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_method_mismatch ... ok
test codex::tests::prefers_structured_content_when_present ... ok
test auth::tests::enforce_login_restrictions_allows_matching_workspace ... ok
test codex::tests::abort_gracefuly_emits_turn_aborted_only ... ok
test codex::tests::fatal_tool_error_stops_turn_and_reports_error ... ok
test auth::tests::enforce_login_restrictions_blocks_env_api_key_when_chatgpt_required ... ok
test codex::tests::includes_timed_out_message ... ok
test codex::tests::reconstruct_history_matches_live_compactions ... ok
test codex::tests::record_initial_history_reconstructs_forked_transcript ... ok
test codex::tests::record_initial_history_reconstructs_resumed_transcript ... ok
test codex::tests::success_flag_reflects_is_error_true ... ok
test codex::tests::success_flag_true_with_no_error_and_content_used ... ok
test codex::tests::record_initial_history_seeds_token_info_from_rollout ... ok
test codex::tests::abort_review_task_emits_exited_then_aborted_and_records_history ... ok
test command_safety::is_dangerous_command::tests::bash_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::bash_git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::external_sandbox_only_prompts_for_dangerous_commands ... ok
test command_safety::is_dangerous_command::tests::git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::git_status_is_not_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_f_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::rm_rf_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::sudo_git_reset_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::usr_bin_git_is_dangerous ... ok
test command_safety::is_dangerous_command::tests::zsh_git_reset_is_dangerous ... ok
test command_safety::is_safe_command::tests::base64_output_options_are_unsafe ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples ... ok
test command_safety::is_safe_command::tests::bash_lc_safe_examples_with_operators ... ok
test command_safety::is_safe_command::tests::bash_lc_unsafe_examples ... ok
test command_safety::is_safe_command::tests::known_safe_examples ... ok
test command_safety::is_safe_command::tests::ripgrep_rules ... ok
test command_safety::is_safe_command::tests::unknown_or_partial ... ok
test command_safety::is_safe_command::tests::windows_powershell_full_path_is_safe ... ok
test command_safety::is_safe_command::tests::zsh_lc_safe_command_sequence ... ok
test compact::tests::build_token_limited_compacted_history_appends_summary_message ... ok
test compact::tests::build_token_limited_compacted_history_truncates_overlong_user_messages ... ok
test compact::tests::collect_user_messages_extracts_user_text_only ... ok
test compact::tests::collect_user_messages_filters_session_prefix_entries ... ok
test compact::tests::content_items_to_text_ignores_image_only_content ... ok
test compact::tests::content_items_to_text_joins_non_empty_segments ... ok
test config::constraint::tests::constrained_allow_any_accepts_any_value ... ok
test config::constraint::tests::constrained_allow_any_default_uses_default_value ... ok
test config::constraint::tests::constrained_can_set_allows_probe_without_setting ... ok
test config::constraint::tests::constrained_new_rejects_invalid_initial_value ... ok
test config::constraint::tests::constrained_set_rejects_invalid_value_and_leaves_previous ... ok
test config::edit::tests::async_builder_set_model_persists ... ok
test config::edit::tests::batch_write_table_upsert_preserves_inline_comments ... ok
test config::edit::tests::blocking_builder_set_model_round_trips_back_and_forth ... ok
test config::edit::tests::blocking_clear_model_removes_inline_table_entry ... ok
test config::edit::tests::blocking_clear_path_noop_when_missing ... ok
test config::edit::tests::blocking_record_model_migration_seen_preserves_table ... ok
test codex::tests::abort_regular_task_emits_turn_aborted_only ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_after_removing_keys ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_prefix_on_update ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comment_suffix ... ok
test config::edit::tests::blocking_replace_mcp_servers_preserves_inline_comments ... ok
test config::edit::tests::blocking_replace_mcp_servers_round_trips ... ok
test config::edit::tests::blocking_set_asynchronous_helpers_available ... ok
test config::edit::tests::blocking_set_hide_full_access_warning_preserves_table ... ok
test config::edit::tests::blocking_set_hide_gpt5_1_migration_prompt_preserves_table ... ok
test config::edit::tests::blocking_set_hide_gpt_5_1_codex_max_migration_prompt_preserves_table ... ok
test codex::tests::set_rate_limits_retains_previous_credits ... ok
test config::edit::tests::blocking_set_hide_rate_limit_model_nudge_preserves_table ... ok
test auth::tests::enforce_login_restrictions_logs_out_for_workspace_mismatch ... ok
test config::edit::tests::blocking_set_model_preserves_inline_table_contents ... ok
test config::edit::tests::blocking_set_model_scopes_to_active_profile ... ok
test config::edit::tests::blocking_set_model_top_level ... ok
test config::edit::tests::blocking_set_model_with_explicit_profile ... ok
test config::notifications_tests::test_tui_notifications_custom_array ... ok
test config::notifications_tests::test_tui_notifications_true ... ok
test config::edit::tests::blocking_set_path_updates_notifications ... ok
test config::edit::tests::builder_with_edits_applies_custom_paths ... ok
test config::edit::tests::replace_mcp_servers_blocking_clears_table_when_empty ... ok
test config::service::tests::toml_value_to_item_handles_nested_config_tables ... ok
test codex::tests::set_rate_limits_updates_plan_type_when_present ... ok
test auth::tests::loads_api_key_from_auth_json ... ok
test config::service::tests::invalid_user_value_rejected_even_if_overridden_by_managed ... ok
test config::service::tests::read_includes_origins_and_layers ... ok
test config::service::tests::version_conflict_rejected ... ok
test config::service::tests::read_reports_managed_overrides_user_and_session_flags ... ok
test config::service::tests::write_value_defaults_to_user_config_path ... ok
test config::service::tests::write_value_preserves_comments_and_order ... ok
test auth::tests::pro_account_with_no_api_key_uses_chatgpt_auth ... ok
test config::service::tests::write_value_reports_managed_override ... ok
test codex::tests::record_model_warning_appends_user_message ... ok
test config::service::tests::upsert_merges_tables_replace_overwrites ... ok
test config::service::tests::write_value_reports_override ... ok
test codex::tests::unified_exec_rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::tests::add_dir_override_extends_workspace_writable_roots ... ok
test codex_delegate::tests::forward_events_cancelled_while_send_blocked_shuts_down_delegate ... ok
test config::tests::cli_override_takes_precedence_over_profile_sandbox_mode ... ok
test config::tests::load_global_mcp_servers_returns_empty_if_missing ... ok
test config::tests::load_global_mcp_servers_accepts_legacy_ms_field ... ok
test config::tests::load_global_mcp_servers_rejects_inline_bearer_token ... ok
test codex::tests::rejects_escalated_permissions_when_policy_not_on_request ... ok
test config::tests::managed_config_wins_over_cli_overrides ... ok
test config::tests::cli_override_sets_compact_prompt ... ok
test config::tests::config_defaults_to_auto_oauth_store_mode ... ok
test config::tests::replace_mcp_servers_serializes_cwd ... ok
test config::tests::replace_mcp_servers_round_trips_entries ... ok
test config::tests::config_honors_explicit_file_oauth_store_mode ... ok
test config::tests::config_honors_explicit_keyring_auth_store_mode ... ok
test config::tests::config_defaults_to_file_cli_auth_store_mode ... ok
test config::tests::replace_mcp_servers_serializes_disabled_flag ... ok
test config::tests::replace_mcp_servers_serializes_env_sorted ... ok
test config::tests::replace_mcp_servers_serializes_env_vars ... ok
test config::tests::replace_mcp_servers_serializes_tool_filters ... ok
test config::tests::feature_table_overrides_legacy_flags ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_bearer_token ... ok
test config::tests::replace_mcp_servers_streamable_http_isolates_headers_between_servers ... ok
test config::tests::profile_sandbox_mode_overrides_base ... ok
test config::tests::set_model_updates_defaults ... ok
test config::tests::replace_mcp_servers_streamable_http_serializes_custom_headers ... ok
test config::tests::replace_mcp_servers_streamable_http_removes_optional_sections ... ok
test config::tests::set_model_overwrites_existing_model ... ok
test config::tests::set_model_updates_profile ... ok
test config::tests::test_resolve_oss_provider_explicit_override ... ok
test config::tests::test_resolve_oss_provider_explicit_overrides_all ... ok
test config::tests::test_resolve_oss_provider_from_global_config ... ok
test config::tests::test_resolve_oss_provider_from_profile ... ok
test config::tests::test_resolve_oss_provider_none_when_not_configured ... ok
test config::tests::test_resolve_oss_provider_profile_fallback_to_global ... ok
test config::tests::set_model_updates_existing_profile ... ok
test config::tests::test_sandbox_config_parsing ... ok
test config::tests::test_set_project_trusted_converts_inline_to_explicit ... ok
test config::tests::test_set_project_trusted_migrates_top_level_inline_projects_preserving_entries ... ok
test config::tests::test_set_project_trusted_writes_explicit_tables ... ok
test config::tests::test_toml_parsing ... ok
test config::tests::test_untrusted_project_gets_unless_trusted_approval_policy ... ok
test config::tests::test_untrusted_project_gets_workspace_write_sandbox ... ok
test config::tests::tui_config_missing_notifications_field_defaults_to_enabled ... ok
test config::types::tests::deserialize_disabled_server_config ... ok
test config::types::tests::deserialize_rejects_command_and_url ... ok
test config::types::tests::deserialize_rejects_env_for_http_transport ... ok
test config::types::tests::deserialize_rejects_headers_for_stdio ... ok
test config::types::tests::deserialize_rejects_inline_bearer_token_field ... ok
test config::types::tests::deserialize_server_config_with_tool_filters ... ok
test config::types::tests::deserialize_stdio_command_server_config ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_arg_with_args_and_env ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_args ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_cwd ... ok
test config::types::tests::deserialize_stdio_command_server_config_with_env_vars ... ok
test config::types::tests::deserialize_streamable_http_server_config ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_env_var ... ok
test config::tests::test_set_default_oss_provider ... ok
test config::types::tests::deserialize_streamable_http_server_config_with_headers ... ok
test config_loader::config_requirements::tests::deserialize_allowed_approval_policies ... ok
test config_loader::config_requirements::tests::merge_unset_fields_only_fills_missing_values ... ok
test config::tests::loads_compact_prompt_from_file ... ok
test config_loader::config_requirements::tests::deserialize_allowed_sandbox_modes ... ok
test config::tests::legacy_toggles_map_to_features ... ok
test config_loader::tests::load_requirements_toml_produces_expected_constraints ... ok
test config_loader::tests::managed_preferences_requirements_are_applied ... ok
test config::tests::profile_legacy_toggles_override_base ... ok
test config_loader::tests::managed_preferences_requirements_take_precedence ... ok
test config_loader::tests::managed_preferences_take_highest_precedence ... ok
test config_loader::tests::merges_managed_config_layer_on_top ... ok
test config_loader::tests::returns_empty_when_all_layers_missing ... ok
test config_loader::tests::project_layer_is_added_when_dot_codex_exists_without_config_toml ... ok
test context_manager::history::tests::filters_non_api_messages ... ok
test config_loader::unit_tests::ensure_resolve_relative_paths_in_config_toml_preserves_all_fields ... ok
test config_loader::tests::project_layers_prefer_closest_cwd ... ok
test config::tests::managed_config_overrides_oauth_store_mode ... ok
test context_manager::history::tests::format_exec_output_returns_original_when_within_limits ... ok
test config_loader::tests::project_root_markers_supports_alternate_markers ... ok
test context_manager::history::tests::get_history_for_prompt_drops_ghost_commits ... ok
test context_manager::history::tests::non_last_reasoning_tokens_ignore_entries_after_last_user ... ok
test context_manager::history::tests::non_last_reasoning_tokens_return_zero_when_no_user_messages ... ok
test context_manager::history::tests::normalization_retains_local_shell_outputs ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_custom_tool_call_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_function_call_inserts_output ... ok
test context_manager::history::tests::normalize_adds_missing_output_for_local_shell_call_with_id_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_mixed_inserts_and_removals_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_custom_tool_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::normalize_removes_orphan_function_call_output_panics_in_debug - should panic ... ok
test context_manager::history::tests::record_items_respects_custom_token_limit ... ok
test context_manager::history::tests::record_items_truncates_custom_tool_call_output_content ... ok
test context_manager::history::tests::record_items_truncates_function_call_output_content ... ok
test context_manager::history::tests::remove_first_item_handles_custom_tool_pair ... ok
test context_manager::history::tests::remove_first_item_handles_local_shell_pair ... ok
test context_manager::history::tests::remove_first_item_removes_matching_call_for_output ... ok
test context_manager::history::tests::remove_first_item_removes_matching_output_for_function_call ... ok
test conversation_manager::tests::drops_from_last_user_only ... ok
test context_manager::history::tests::format_exec_output_marks_byte_truncation_without_omitted_lines ... ok
test context_manager::history::tests::format_exec_output_prefers_line_marker_when_both_limits_exceeded ... ok
test custom_prompts::tests::discovers_and_sorts_files ... ok
test custom_prompts::tests::discovers_symlinked_md_files ... ok
test custom_prompts::tests::empty_when_dir_missing ... ok
test custom_prompts::tests::parse_frontmatter_preserves_body_newlines ... ok
test context_manager::history::tests::format_exec_output_truncates_large_error ... ok
test custom_prompts::tests::parses_frontmatter_and_strips_from_body ... ok
test custom_prompts::tests::excludes_builtins ... ok
test context_manager::history::tests::format_exec_output_reports_omitted_lines_and_keeps_head_and_tail ... ok
test default_client::tests::test_invalid_suffix_is_sanitized ... ok
test default_client::tests::test_invalid_suffix_is_sanitized2 ... ok
test custom_prompts::tests::skips_non_utf8_files ... ok
test environment_context::tests::equals_except_shell_compares_approval_policy ... ok
test environment_context::tests::equals_except_shell_compares_sandbox_policy ... ok
test default_client::tests::test_get_codex_user_agent ... ok
test environment_context::tests::equals_except_shell_compares_workspace_write_policy ... ok
test environment_context::tests::serialize_external_sandbox_environment_context ... ok
test environment_context::tests::serialize_external_sandbox_with_restricted_network_environment_context ... ok
test environment_context::tests::serialize_full_access_environment_context ... ok
test environment_context::tests::equals_except_shell_ignores_shell ... ok
test environment_context::tests::serialize_read_only_environment_context ... ok
test error::tests::sandbox_denied_reports_both_streams_when_available ... ok
test error::tests::sandbox_denied_reports_exit_code_when_no_output_available ... ok
test error::tests::sandbox_denied_reports_stdout_when_no_stderr ... ok
test error::tests::sandbox_denied_uses_aggregated_output_when_stderr_empty ... ok
test error::tests::to_error_event_handles_response_stream_failed ... ok
test error::tests::unexpected_status_cloudflare_html_is_simplified ... ok
test error::tests::unexpected_status_non_html_is_unchanged ... ok
test error::tests::usage_limit_reached_error_formats_business_plan_without_reset ... ok
test environment_context::tests::serialize_workspace_write_environment_context ... ok
test error::tests::usage_limit_reached_error_formats_default_for_other_plans ... ok
test error::tests::usage_limit_reached_error_formats_default_when_none ... ok
test error::tests::usage_limit_reached_error_formats_free_plan ... ok
test error::tests::usage_limit_reached_error_formats_plus_plan ... ok
test default_client::tests::test_macos ... ok
test error::tests::usage_limit_reached_error_formats_team_plan ... ok
test error::tests::usage_limit_reached_error_formats_pro_plan_with_reset ... ok
test error::tests::usage_limit_reached_includes_days_hours_minutes ... ok
test error::tests::usage_limit_reached_includes_minutes_when_available ... ok
test event_mapping::tests::parses_agent_message ... ok
test event_mapping::tests::parses_reasoning_including_raw_content ... ok
test event_mapping::tests::parses_reasoning_summary_and_raw_content ... ok
test event_mapping::tests::parses_user_message_with_text_and_two_images ... ok
test event_mapping::tests::parses_web_search_call ... ok
test error::tests::usage_limit_reached_includes_hours_and_minutes ... ok
test event_mapping::tests::skips_user_instructions_and_env ... ok
test error::tests::usage_limit_reached_less_than_minute ... ok
test exec::tests::sandbox_detection_flags_sigsys_exit_code ... ok
test exec::tests::sandbox_detection_identifies_keyword_in_stderr ... ok
test exec::tests::sandbox_detection_ignores_non_sandbox_mode ... ok
test exec::tests::sandbox_detection_requires_keywords ... ok
test exec::tests::sandbox_detection_respects_quick_reject_exit_codes ... ok
test exec::tests::sandbox_detection_uses_aggregated_output ... ok
test exec_env::tests::test_core_inherit_defaults_keep_sensitive_vars ... ok
test exec_env::tests::test_core_inherit_with_default_excludes_enabled ... ok
test exec_env::tests::test_include_only ... ok
test exec_env::tests::test_inherit_all ... ok
test exec_env::tests::test_inherit_all_with_default_excludes ... ok
test exec_env::tests::test_inherit_none ... ok
test exec_env::tests::test_set_overrides ... ok
test config::tests::test_precedence_fixture_with_zdr_profile ... ok
test exec_policy::tests::append_execpolicy_amendment_rejects_empty_prefix ... ok
test config::tests::test_precedence_fixture_with_gpt5_profile ... ok
test config::tests::test_precedence_fixture_with_o3_profile ... ok
test config::tests::test_did_user_set_custom_approval_policy_or_sandbox_mode_defaults_no ... ok
test exec_policy::tests::exec_approval_requirement_falls_back_to_heuristics ... ok
test default_client::tests::test_create_client_sets_default_headers ... ok
test exec_policy::tests::collect_policy_files_returns_empty_when_dir_missing ... ok
test exec_policy::tests::append_execpolicy_amendment_updates_policy_and_file ... ok
test exec_policy::tests::ignores_policies_outside_policy_dir ... ok
test config_loader::tests::project_paths_resolve_relative_to_dot_codex_and_override_in_order ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_disabled_when_execpolicy_feature_disabled ... ok
test conversation_manager::tests::ignores_session_prefix_messages_when_truncating ... ok
test config::tests::test_precedence_fixture_with_gpt3_profile ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_multi_command_scripts ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_when_heuristics_allow ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_present_for_single_command_without_policy_match ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_omitted_when_policy_prompts ... ok
test exec_policy::tests::exec_approval_requirement_respects_approval_policy ... ok
test exec_policy::tests::proposed_execpolicy_amendment_is_suppressed_when_policy_matches_allow ... ok
test exec_policy::tests::exec_approval_requirement_prefers_execpolicy_match ... ok
test exec_policy::tests::heuristics_apply_when_other_commands_match_policy ... ok
test exec_policy::tests::evaluates_bash_lc_inner_commands ... ok
test exec_policy::tests::proposed_execpolicy_amendment_uses_first_no_match_in_multi_command_scripts ... ok
test exec_policy::tests::loads_policies_from_policy_subdirectory ... ok
test exec_policy::tests::returns_empty_policy_when_feature_disabled ... ok
test exec_policy::tests::loads_policies_from_multiple_config_layers ... ok
test git_info::tests::resolve_root_git_project_for_trust_returns_none_outside_repo ... ok
test git_info::tests::test_collect_git_info_non_git_directory ... ok
test git_info::tests::resolve_root_git_project_for_trust_non_worktrees_gitdir_returns_none ... ok
test client_common::tests::get_full_instructions_no_user_content ... ok
test git_info::tests::test_collect_git_info_git_repository ... ok
test git_info::tests::test_git_info_serialization ... ok
test git_info::tests::test_git_info_serialization_with_nones ... ok
test git_info::tests::resolve_root_git_project_for_trust_regular_repo_returns_repo_root ... ok
test git_info::tests::test_recent_commits_non_git_directory_returns_empty ... ok
test mcp::tests::group_tools_by_server_strips_prefix_and_groups ... ok
test mcp::tests::split_qualified_tool_name_rejects_invalid_names ... ok
test mcp::tests::split_qualified_tool_name_returns_server_and_tool ... ok
test mcp_connection_manager::tests::filter_tools_applies_per_server_filters ... ok
test mcp_connection_manager::tests::mcp_init_error_display_includes_startup_timeout_hint ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_github_pat ... ok
test mcp_connection_manager::tests::mcp_init_error_display_prompts_for_login_when_auth_required ... ok
test mcp_connection_manager::tests::mcp_init_error_display_reports_generic_errors ... ok
test mcp_connection_manager::tests::test_qualify_tools_duplicated_names_skipped ... ok
test mcp_connection_manager::tests::test_qualify_tools_long_names_same_server ... ok
test mcp_connection_manager::tests::test_qualify_tools_sanitizes_invalid_characters ... ok
test mcp_connection_manager::tests::test_qualify_tools_short_non_duplicated_names ... ok
test mcp_connection_manager::tests::tool_filter_allows_by_default ... ok
test mcp_connection_manager::tests::tool_filter_applies_disabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_list ... ok
test mcp_connection_manager::tests::tool_filter_applies_enabled_then_disabled ... ok
test git_info::tests::test_collect_git_info_with_branch ... ok
test git_info::tests::test_collect_git_info_detached_head ... ok
test message_history::tests::lookup_reads_history_entries ... ok
test message_history::tests::lookup_uses_stable_log_id_after_appends ... ok
test model_provider_info::tests::detects_azure_responses_base_urls ... ok
test model_provider_info::tests::test_deserialize_azure_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_example_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_ollama_model_provider_toml ... ok
test models_manager::manager::tests::build_available_models_picks_default_after_hiding_hidden_models ... ok
test message_history::tests::append_entry_trims_history_to_soft_cap ... ok
test git_info::tests::test_collect_git_info_with_remote ... ok
test models_manager::manager::tests::bundled_models_json_roundtrips ... ok
test git_info::tests::resolve_root_git_project_for_trust_detects_worktree_and_returns_main_root ... ok
test message_history::tests::append_entry_trims_history_when_beyond_max_bytes ... ok
test models_manager::model_family::tests::remote_overrides_apply_extended_metadata ... ok
test models_manager::model_family::tests::remote_overrides_apply_when_slug_matches ... ok
test models_manager::model_family::tests::remote_overrides_skip_non_matching_models ... ok
test models_manager::model_presets::tests::only_one_default_model_is_configured ... ok
test parse_command::tests::bash_cd_then_bar_is_same_as_bar ... ok
test parse_command::tests::bash_cd_then_cat_is_read ... ok
test parse_command::tests::bash_dash_c_pipeline_parsing ... ok
test parse_command::tests::bash_lc_redirect_not_quoted ... ok
test parse_command::tests::bin_bash_lc_sed ... ok
test parse_command::tests::bin_zsh_lc_sed ... ok
test parse_command::tests::cat_with_double_dash_and_sed_ranges ... ok
test parse_command::tests::cd_then_cat_is_single_read ... ok
test parse_command::tests::drop_trailing_nl_in_pipeline ... ok
test parse_command::tests::drops_yes_in_pipelines ... ok
test parse_command::tests::empty_tokens_is_not_small ... ok
test parse_command::tests::fd_file_finder_variants ... ok
test parse_command::tests::filters_out_printf ... ok
test parse_command::tests::find_basic_name_filter ... ok
test parse_command::tests::find_type_only_path ... ok
test parse_command::tests::git_status_is_unknown ... ok
test parse_command::tests::grep_with_query_and_path ... ok
test parse_command::tests::handles_complex_bash_command ... ok
test parse_command::tests::handles_complex_bash_command_head ... ok
test parse_command::tests::handles_git_pipe_wc ... ok
test parse_command::tests::head_behavior ... ok
test parse_command::tests::head_with_no_space ... ok
test parse_command::tests::ls_with_glob ... ok
test parse_command::tests::ls_with_time_style_and_path ... ok
test parse_command::tests::parses_mixed_sequence_with_pipes_semicolons_and_or ... ok
test parse_command::tests::powershell_command_is_stripped ... ok
test parse_command::tests::powershell_with_path_is_stripped ... ok
test parse_command::tests::preserves_rg_with_spaces ... ok
test parse_command::tests::pwsh_with_noprofile_and_c_alias_is_stripped ... ok
test parse_command::tests::rg_with_equals_style_flags ... ok
test parse_command::tests::sed_behavior ... ok
test parse_command::tests::shorten_path_on_windows ... ok
test parse_command::tests::small_formatting_always_true_commands ... ok
test parse_command::tests::split_on_or_connector ... ok
test parse_command::tests::strips_true_in_sequence ... ok
test parse_command::tests::strips_true_inside_bash_lc ... ok
test parse_command::tests::supports_cat ... ok
test parse_command::tests::supports_cat_sed_n ... ok
test parse_command::tests::supports_cd_and_rg_files ... ok
test parse_command::tests::supports_grep_query_with_slashes_not_shortened ... ok
test parse_command::tests::supports_grep_recursive_current_dir ... ok
test parse_command::tests::supports_grep_recursive_specific_file ... ok
test parse_command::tests::supports_grep_weird_backtick_in_query ... ok
test parse_command::tests::supports_head_file_only ... ok
test parse_command::tests::supports_head_n ... ok
test parse_command::tests::supports_ls_with_pipe ... ok
test parse_command::tests::supports_nl_then_sed_reading ... ok
test parse_command::tests::supports_npm_run_build_is_unknown ... ok
test parse_command::tests::supports_rg_files_then_head ... ok
test parse_command::tests::supports_rg_files_with_path_and_pipe ... ok
test parse_command::tests::supports_searching_for_navigate_to_route ... ok
test parse_command::tests::supports_sed_n ... ok
test parse_command::tests::supports_sed_n_then_nl_as_search ... ok
test exec::tests::kill_child_process_group_kills_grandchildren_on_timeout ... ok
test parse_command::tests::supports_tail_file_only ... ok
test parse_command::tests::supports_single_string_script_with_cd_and_pipe ... ok
test parse_command::tests::supports_tail_n_last_lines ... ok
test parse_command::tests::tail_behavior ... ok
test parse_command::tests::supports_tail_n_plus ... ok
test parse_command::tests::trim_on_semicolon ... ok
test parse_command::tests::tail_with_no_space ... ok
test powershell::tests::extracts_basic_powershell_command ... ok
test parse_command::tests::zsh_lc_supports_cat ... ok
test powershell::tests::extracts_full_path_powershell_command ... ok
test powershell::tests::extracts_lowercase_flags ... ok
test powershell::tests::extracts_with_noprofile_and_alias ... ok
test models_manager::manager::tests::refresh_available_models_sorts_and_marks_default ... ok
test models_manager::manager::tests::refresh_available_models_drops_removed_remote_models ... ok
test models_manager::manager::tests::refresh_available_models_refetches_when_cache_stale ... ok
test models_manager::manager::tests::refresh_available_models_uses_cache_when_fresh ... ok
test project_doc::tests::agents_local_md_preferred ... ok
test project_doc::tests::agents_md_preferred_over_fallbacks ... ok
test project_doc::tests::concatenates_root_and_cwd_docs ... ok
test project_doc::tests::doc_larger_than_limit_is_truncated ... ok
test project_doc::tests::finds_doc_in_repo_root ... ok
test project_doc::tests::doc_smaller_than_limit_is_returned ... ok
test project_doc::tests::keeps_existing_instructions_when_doc_missing ... ok
test project_doc::tests::merges_existing_instructions_with_project_doc ... ok
test rollout::tests::test_get_conversation_contents ... ok
test project_doc::tests::no_doc_file_returns_none ... ok
test rollout::tests::test_list_conversations_latest_first ... ok
test project_doc::tests::uses_configured_fallback_when_agents_missing ... ok
test rollout::tests::test_model_provider_filter_selects_only_matching_sessions ... ok
test rollout::tests::test_pagination_cursor ... ok
test rollout::tests::test_source_filter_excludes_non_matching_sessions ... ok
test safety::tests::external_sandbox_auto_approves_in_on_request ... ok
test rollout::tests::test_stable_ordering_same_second_pagination ... ok
test project_doc::tests::skills_are_appended_to_project_doc ... ok
test project_doc::tests::zero_byte_limit_disables_docs ... ok
test shell::detect_shell_type_tests::test_detect_shell_type ... ok
test safety::tests::test_writable_roots_constraint ... ok
test shell::tests::derive_exec_args ... ok
test shell::tests::detects_bash ... ok
test shell::tests::detects_powershell_as_default ... ok
test shell::tests::detects_sh ... ok
test shell::tests::detects_zsh ... ok
test shell::tests::finds_poweshell ... ok
test shell::tests::fish_fallback_to_zsh ... ok
test rollout::tests::test_updated_at_uses_file_mtime ... ok
test project_doc::tests::skills_render_without_project_doc ... ok
test shell_snapshot::tests::strip_snapshot_preamble_removes_leading_output ... ok
test shell_snapshot::tests::strip_snapshot_preamble_requires_marker ... ok
test shell::tests::test_current_shell_detects_zsh ... ok
test shell::tests::can_run_on_shell_test ... ok
test shell_snapshot::tests::try_new_creates_and_deletes_snapshot_file ... ok
test shell_snapshot::tests::macos_zsh_snapshot_includes_sections ... ok
test skills::loader::tests::deduplicates_by_name_preferring_system_over_admin ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmppiAdBw/.git/
test seatbelt::tests::create_seatbelt_args_for_cwd_as_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpZ99VyI/.git/
test seatbelt::tests::create_seatbelt_args_with_read_only_git_and_codex_subpaths ... ok
test skills::loader::tests::deduplicates_by_name_preferring_user_over_system ... ok
test skills::loader::tests::enforces_short_description_length_limits ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_system ... ok
test skills::loader::tests::enforces_length_limits ... ok
test skills::loader::tests::deduplicates_by_name_preferring_repo_over_user ... ok
test skills::loader::tests::loads_short_description_from_metadata ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpJdhZpo/.git/
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpwa8wbP/.git/
test skills::loader::tests::loads_skills_from_codex_dir_when_not_git_repo ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpsquOwG/.git/
test skills::loader::tests::loads_skills_from_system_cache_when_present ... ok
test exec::tests::process_exec_tool_call_respects_cancellation_token ... ok
test skills::loader::tests::loads_system_skills_when_present ... ok
test skills::loader::tests::loads_skills_from_repo_root ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpcRtoiI/repo/.git/
test skills::loader::tests::loads_valid_skill ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_disabled_when_threshold_disabled ... ok
test tasks::ghost_snapshot::tests::large_untracked_warning_includes_threshold ... ok
test skills::loader::tests::loads_skills_from_nearest_codex_dir_under_repo_root ... ok
test terminal::tests::detects_apple_terminal ... ok
test terminal::tests::detects_ghostty ... ok
test terminal::tests::detects_gnome_terminal ... ok
test terminal::tests::detects_iterm2 ... ok
test terminal::tests::detects_alacritty ... ok
test terminal::tests::detects_kitty ... ok
test terminal::tests::detects_konsole ... ok
test terminal::tests::detects_term_fallbacks ... ok
test terminal::tests::detects_term_program ... ok
test terminal::tests::detects_tmux_client_termname ... ok
test terminal::tests::detects_tmux_client_termtype ... ok
test terminal::tests::detects_tmux_multiplexer ... ok
test terminal::tests::detects_tmux_term_program_uses_client_termtype ... ok
test terminal::tests::detects_vscode ... ok
test terminal::tests::detects_vte ... ok
test terminal::tests::detects_warp_terminal ... ok
test terminal::tests::detects_wezterm ... ok
test terminal::tests::detects_windows_terminal ... ok
test terminal::tests::detects_zellij_multiplexer ... ok
test text_encoding::tests::test_cp1251_russian_text ... ok
test text_encoding::tests::test_cp1251_privet_word ... ok
test text_encoding::tests::test_cp866_russian_text ... ok
test text_encoding::tests::test_cp866_uppercase_followed_by_ascii ... ok
test text_encoding::tests::test_cp866_uppercase_text ... ok
test text_encoding::tests::test_fallback_to_lossy ... ok
test text_encoding::tests::test_iso8859_10_nordic_text ... ok
test text_encoding::tests::test_iso8859_11_thai_text ... ok
test text_encoding::tests::test_iso8859_13_baltic_text ... ok
test text_encoding::tests::test_iso8859_1_latin_text ... ok
test text_encoding::tests::test_iso8859_3_south_europe_text ... ok
test text_encoding::tests::test_iso8859_2_central_european_text ... ok
test text_encoding::tests::test_iso8859_5_cyrillic_text ... ok
test text_encoding::tests::test_iso8859_4_baltic_text ... ok
test text_encoding::tests::test_iso8859_6_arabic_text ... ok
test text_encoding::tests::test_iso8859_7_greek_text ... ok
test text_encoding::tests::test_iso8859_8_hebrew_text ... ok
test text_encoding::tests::test_iso8859_9_turkish_text ... ok
test text_encoding::tests::test_koi8_r_privet_word ... ok
test text_encoding::tests::test_preserves_ansi_sequences ... ok
test text_encoding::tests::test_latin1_cafe ... ok
test text_encoding::tests::test_utf8_passthrough ... ok
test text_encoding::tests::test_windows_1250_central_european_text ... ok
test text_encoding::tests::test_windows_1251_encoded_text ... ok
test text_encoding::tests::test_windows_1252_multiple_quotes ... ok
test text_encoding::tests::test_windows_1252_privet_gibberish_is_preserved ... ok
test text_encoding::tests::test_windows_1252_quotes ... ok
test text_encoding::tests::test_windows_1253_greek_text ... ok
test text_encoding::tests::test_windows_1254_turkish_text ... ok
test text_encoding::tests::test_windows_1255_hebrew_text ... ok
test text_encoding::tests::test_windows_1256_arabic_text ... ok
test text_encoding::tests::test_windows_1257_baltic_text ... ok
test text_encoding::tests::test_windows_1258_vietnamese_text ... ok
test text_encoding::tests::test_windows_932_shift_jis_text ... ok
test text_encoding::tests::test_windows_874_thai_text ... ok
test text_encoding::tests::test_windows_949_korean_text ... ok
test text_encoding::tests::test_windows_936_gbk_text ... ok
test token_data::tests::id_token_info_handles_missing_fields ... ok
test text_encoding::tests::test_windows_950_big5_text ... ok
test token_data::tests::id_token_info_parses_email_and_plan ... ok
test tools::context::tests::custom_tool_calls_should_roundtrip_as_custom_outputs ... ok
test tools::context::tests::telemetry_preview_returns_original_within_limits ... ok
test tools::context::tests::function_payloads_remain_function_outputs ... ok
test tools::context::tests::telemetry_preview_truncates_by_bytes ... ok
test tools::context::tests::telemetry_preview_truncates_by_lines ... ok
test tools::handlers::grep_files::tests::parse_truncates_after_limit ... ok
test tools::handlers::grep_files::tests::parses_basic_results ... ok
test skills::loader::tests::non_git_repo_skills_search_does_not_walk_parents ... ok
test skills::loader::tests::loads_skills_when_cwd_is_file_in_repo ... ok
test tools::handlers::grep_files::tests::run_search_handles_no_matches ... ok
test tools::handlers::grep_files::tests::run_search_returns_results ... ok
test tools::handlers::grep_files::tests::run_search_respects_limit ... ok
test tools::handlers::list_dir::tests::errors_when_offset_exceeds_entries ... ok
test tools::handlers::list_dir::tests::handles_large_limit_without_overflow ... ok
test tools::handlers::list_dir::tests::bfs_truncation ... ok
test tools::handlers::grep_files::tests::run_search_with_glob_filter ... ok
test tools::handlers::mcp_resource::tests::call_tool_result_from_content_marks_success ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_all_servers_is_sorted ... ok
test tools::handlers::mcp_resource::tests::list_resources_payload_from_single_server_copies_next_cursor ... ok
test tools::handlers::mcp_resource::tests::parse_arguments_handles_empty_and_json ... ok
test tools::handlers::mcp_resource::tests::resource_with_server_serializes_server_field ... ok
test tools::handlers::mcp_resource::tests::template_with_server_serializes_server_field ... ok
test tools::handlers::read_file::tests::errors_when_offset_exceeds_length ... ok
test tools::handlers::read_file::tests::indentation_mode_captures_block ... ok
test tools::handlers::list_dir::tests::lists_directory_entries ... ok
test tools::handlers::read_file::tests::indentation_mode_expands_parents ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample ... ok
test tools::handlers::list_dir::tests::respects_depth_parameter ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_no_headers ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_javascript_sample ... ignored
test skills::loader::tests::skill_roots_include_admin_with_lowest_priority_on_unix ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_siblings ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_cpp_sample_shallow ... ok
test tools::handlers::read_file::tests::indentation_mode_handles_python_sample ... ok
test tools::handlers::read_file::tests::reads_requested_range ... ok
test tools::handlers::read_file::tests::reads_non_utf8_lines ... ok
test tools::handlers::read_file::tests::indentation_mode_respects_sibling_flag ... ok
test tools::handlers::read_file::tests::respects_limit_even_with_more_lines ... ok
test tools::handlers::shell::tests::shell_command_handler_respects_explicit_login_flag ... ok
test tools::handlers::read_file::tests::trims_crlf_endings ... ok
test tools::handlers::read_file::tests::truncates_lines_longer_than_max_length ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_bash_shell ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_cmd_shell ... ok
test tools::handlers::unified_exec::tests::test_get_command_uses_default_shell_when_unspecified ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_includes_entrypoint_for_node_binary ... ok
test tools::runtimes::apply_patch::tests::build_command_spec_skips_entrypoint_for_codex_binary ... ok
test tools::handlers::unified_exec::tests::test_get_command_respects_explicit_powershell_shell ... ok
test tools::handlers::shell::tests::commands_generated_by_shell_command_handler_can_be_matched_by_is_known_safe_command ... ok
test tools::sandboxing::tests::external_sandbox_skips_exec_approval_on_request ... ok
test tools::sandboxing::tests::restricted_sandbox_requires_exec_approval_on_request ... ok
test tools::spec::tests::chat_tools_include_top_level_name ... ok
test git_info::tests::test_get_git_working_tree_state_clean_repo ... ok
test skills::loader::tests::skips_hidden_and_invalid ... ok
test tools::handlers::list_dir::tests::indicates_truncated_results ... ok
test skills::loader::tests::repo_skills_search_does_not_escape_repo_root ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_gpt51_codex_default ... ok
test tools::spec::tests::test_build_specs_default_shell_present ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_default ... ok
test tools::spec::tests::test_build_specs_gpt5_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_build_specs_mcp_tools_converted ... ok
test tools::spec::tests::test_build_specs_mcp_tools_sorted_by_name ... ok
test git_info::tests::test_get_git_working_tree_state_with_changes ... ok
test tools::handlers::shell::tests::shell_command_handler_to_exec_params_uses_session_shell_and_turn_context ... ok
test git_info::tests::test_get_git_working_tree_state_unpushed_commit ... ok
test tools::spec::tests::test_codex_5_1_mini_defaults ... ok
test tools::spec::tests::test_codex_mini_unified_exec_web_search ... ok
test tools::spec::tests::test_codex_mini_defaults ... ok
test tools::spec::tests::test_parallel_support_flags ... ignored
test tools::spec::tests::test_shell_command_tool ... ok
test tools::spec::tests::test_shell_tool ... ok
test tools::spec::tests::test_exp_5_1_defaults ... ok
test truncate::tests::split_string_handles_empty_string ... ok
test truncate::tests::split_string_handles_overlapping_budgets_without_removal ... ok
test truncate::tests::split_string_only_keeps_prefix_when_tail_budget_is_zero ... ok
test truncate::tests::split_string_only_keeps_suffix_when_prefix_budget_is_zero ... ok
test truncate::tests::split_string_respects_utf8_boundaries ... ok
test truncate::tests::split_string_works ... ok
test truncate::tests::truncate_bytes_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_bytes_over_limit_returns_truncated ... ok
test truncate::tests::truncate_bytes_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_bytes_under_limit_returns_original ... ok
test truncate::tests::truncate_middle_bytes_handles_utf8_content ... ok
test truncate::tests::truncate_middle_tokens_handles_utf8_content ... ok
test truncate::tests::truncate_tokens_less_than_placeholder_returns_placeholder ... ok
test truncate::tests::truncate_tokens_over_limit_returns_truncated ... ok
test truncate::tests::truncate_tokens_reports_original_line_count_when_truncated ... ok
test truncate::tests::truncate_tokens_under_limit_returns_original ... ok
test truncate::tests::truncate_with_token_budget_reports_truncation_at_zero_limit ... ok
test truncate::tests::truncate_with_token_budget_returns_original_when_under_limit ... ok
test truncate::tests::truncates_across_multiple_under_limit_texts_and_reports_omitted ... ok
test tools::spec::tests::test_full_toolset_specs_for_gpt5_codex_unified_exec_web_search ... ok
test tools::spec::tests::test_get_openai_tools_mcp_tools_with_additional_properties_schema ... ok
test turn_diff_tracker::tests::accumulates_delete ... ok
test turn_diff_tracker::tests::accumulates_add_and_update ... ok
test turn_diff_tracker::tests::accumulates_move_and_update ... ok
test tools::spec::tests::test_gpt_5_1_defaults ... ok
test turn_diff_tracker::tests::binary_files_differ_update ... ok
test turn_diff_tracker::tests::filenames_with_spaces_add_and_update ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_avoids_splitting_utf8_codepoints ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_makes_progress_on_invalid_utf8 ... ok
test unified_exec::async_watcher::tests::split_valid_utf8_prefix_respects_max_bytes_for_ascii ... ok
test unified_exec::session_manager::tests::pruning_falls_back_to_lru_when_no_exited ... ok
test unified_exec::session_manager::tests::pruning_prefers_exited_sessions_outside_recently_used ... ok
test unified_exec::session_manager::tests::pruning_protects_recent_sessions_even_if_exited ... ok
test turn_diff_tracker::tests::move_declared_but_file_only_appears_at_dest_is_add ... ok
test unified_exec::session_manager::tests::unified_exec_env_injects_defaults ... ok
test unified_exec::tests::completed_commands_do_not_persist_sessions ... ignored
test unified_exec::session_manager::tests::unified_exec_env_overrides_existing_values ... ok
test unified_exec::tests::push_chunk_trims_only_excess_bytes ... ok
test unified_exec::tests::requests_with_large_timeout_are_capped ... ignored
test turn_diff_tracker::tests::move_without_1change_yields_no_diff ... ok
test turn_diff_tracker::tests::update_persists_across_new_baseline_for_new_file ... ok
test tools::spec::tests::test_mcp_tool_anyof_defaults_to_string ... ok
test user_instructions::tests::test_is_skill_instructions ... ok
test user_instructions::tests::test_is_user_instructions ... ok
test user_instructions::tests::test_skill_instructions ... ok
test user_instructions::tests::test_user_instructions ... ok
test user_notification::tests::test_user_notification ... ok
test user_shell_command::tests::detects_user_shell_command_text_variants ... ok
test tools::spec::tests::test_gpt_5_defaults ... ok
test tools::spec::tests::test_mcp_tool_array_without_items_gets_default_string_items ... ok
test util::tests::feedback_tags_macro_compiles ... ok
test util::tests::test_try_parse_error_message ... ok
test util::tests::test_try_parse_error_message_no_error ... ok
test tools::spec::tests::test_mcp_tool_property_missing_type_defaults_to_string ... ok
test tools::spec::tests::test_mcp_tool_integer_normalized_to_number ... ok
test tools::spec::tests::test_test_model_family_includes_sync_tool ... ok
test user_shell_command::tests::uses_aggregated_output_over_streams ... ok
test user_shell_command::tests::formats_basic_record ... ok
test git_info::tests::test_get_git_working_tree_state_branch_fallback ... ok
test git_info::tests::test_recent_commits_orders_and_limits ... ok
test unified_exec::tests::reusing_completed_session_returns_unknown_session ... ok
test unified_exec::tests::unified_exec_persists_across_requests ... ok
test unified_exec::tests::multi_unified_exec_sessions ... ok
test unified_exec::tests::unified_exec_timeouts ... ok

test result: ok. 667 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 14.69s

running 566 tests
test suite::abort_tasks::interrupt_long_running_tool_emits_turn_aborted ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_preserves_success_after_failure ... ok
test suite::apply_patch_cli::apply_patch_aggregates_diff_across_multiple_tool_calls ... ok
test suite::abort_tasks::interrupt_tool_records_history_entries ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_change_context_disambiguates_target::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_add_overwrites_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_directory_reports_verification_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_can_use_shell_command_output_as_patch_input ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_delete_missing_file_reports_error::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_end_of_file_anchor::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_insert_only_hunk_modifies_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_missing_second_chunk_context_rejected::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_overwrites_existing_destination::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_move_without_content_change_has_no_turn_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_moves_file_to_new_directory::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_chunks::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_multiple_operations_integration::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_empty_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_invalid_hunk_header::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_move_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_rejects_path_traversal_outside_workspace::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_context::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_reports_missing_target_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_updates_file_appends_trailing_newline::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_cli_verification_failure_has_no_side_effects::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_emits_turn_diff_event_with_unified_diff::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_failure_propagates_error_and_skips_diff ... ok
test suite::apply_patch_cli::apply_patch_function_accepts_lenient_heredoc_wrapped_patch::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_emits_turn_diff ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::apply_patch_cli::apply_patch_shell_command_heredoc_with_cd_updates_relative_workdir ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_freeform_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shell_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_function_expects ... ok
test suite::auth_refresh::refresh_token_returns_permanent_error_for_expired_refresh_token ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellcommandviaheredoc_expects ... ok
test suite::auth_refresh::refresh_token_returns_transient_error_on_server_failure ... ok
test suite::auth_refresh::refresh_token_succeeds_updates_storage ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::apply_patch_cli::apply_patch_turn_diff_for_rename_with_content_change::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::client::azure_responses_request_includes_store_and_reasoning_ids ... ok
test suite::client::azure_overrides_assign_properties_used_for_responses_url ... ok
test suite::client::configured_reasoning_summary_is_sent ... ok
test suite::cli_stream::responses_api_stream_cli ... ok
test suite::client::configured_verbosity_is_sent ... ok
test suite::cli_stream::exec_cli_applies_experimental_instructions_file ... ok
test suite::cli_stream::chat_mode_stream_cli ... ok
test suite::client::chatgpt_auth_sends_correct_request ... ok
test suite::client::configured_verbosity_not_sent_for_models_without_support ... ok
test suite::approvals::approving_execpolicy_amendment_persists_policy_and_skips_future_prompts ... ok
test suite::cli_stream::integration_creates_and_checks_session_file ... ok
test suite::client::context_window_error_sets_total_tokens_to_model_window ... ok
test suite::client::includes_default_reasoning_effort_in_request_when_defined_by_model_family ... ok
test suite::cli_stream::integration_git_info_unit_test ... ok
test suite::client::includes_conversation_id_and_model_headers_in_request ... ok
test suite::client::history_dedupes_streamed_and_final_messages_across_turns ... ok
test suite::client::includes_developer_instructions_message_in_request ... ok
test suite::client::includes_no_effort_in_request ... ok
test suite::client::resume_includes_initial_messages_and_sends_prior_items ... ok
test suite::client::reasoning_summary_is_omitted_when_disabled ... ok
test suite::client::skills_append_to_instructions ... ok
test suite::codex_delegate::codex_delegate_forwards_patch_approval_and_proceeds_on_decision ... ok
test suite::codex_delegate::codex_delegate_ignores_legacy_deltas ... ok
test suite::codex_delegate::codex_delegate_forwards_exec_approval_and_proceeds_on_approval ... ok
test suite::compact::auto_compact_counts_encrypted_reasoning_before_last_user ... ok
test suite::compact::auto_compact_allows_multiple_attempts_when_interleaved_with_other_turn_events ... ok
test suite::compact::auto_compact_persists_rollout_entries ... ok
test suite::compact::auto_compact_runs_after_resume_when_token_usage_is_over_limit ... ok
test suite::compact::auto_compact_runs_after_token_limit_hit ... ok
test suite::compact::auto_compact_triggers_after_function_call_over_95_percent_usage ... ok
test suite::compact::manual_compact_emits_api_and_local_token_usage_events ... ok
test suite::compact::manual_compact_retries_after_context_window_error ... ok
test suite::compact::manual_compact_twice_preserves_latest_user_messages ... ok
test suite::compact::manual_compact_uses_custom_prompt ... ok
test suite::compact::multiple_auto_compact_per_task_runs_after_token_limit_hit ... ok
test suite::compact::summarize_context_three_requests_and_instructions ... ok
test suite::compact_remote::remote_compact_persists_replacement_history_in_rollout ... ok
test suite::compact_remote::remote_compact_replaces_history_for_followups ... ok
test suite::compact_remote::remote_compact_runs_automatically ... ok
test suite::deprecation_notice::emits_deprecation_notice_for_legacy_feature_flag ... ok
test suite::exec::exit_code_0_succeeds ... ok
test suite::exec::exit_command_not_found_is_ok ... ok
test suite::exec::truncates_output_bytes ... ok
test suite::exec::truncates_output_lines ... ok
test suite::exec::write_file_fails_as_sandbox_error ... ok
test suite::exec_policy::execpolicy_blocks_shell_invocation ... ok
test suite::approvals::approval_matrix_covers_all_modes ... ok
test suite::grep_files::grep_files_tool_collects_matches ... ok
test suite::grep_files::grep_files_tool_reports_empty_results ... ok
test suite::items::agent_message_content_delta_has_item_metadata ... ok
test suite::items::assistant_message_item_is_emitted ... ok
test suite::items::reasoning_content_delta_has_item_metadata ... ok
test suite::items::reasoning_item_is_emitted ... ok
test suite::items::reasoning_raw_content_delta_respects_flag ... ok
test suite::items::user_message_item_is_emitted ... ok
test suite::items::web_search_item_is_emitted ... ok
test suite::json_result::codex_returns_json_result_for_gpt5 ... ok
test suite::json_result::codex_returns_json_result_for_gpt5_codex ... ok
test suite::list_dir::list_dir_tool_depth_one_omits_children ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_depth_three_includes_grandchildren ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_depth_two_includes_children_only ... ignored, disabled until we enable list_dir tool
test suite::list_dir::list_dir_tool_returns_entries ... ignored, disabled until we enable list_dir tool
test suite::list_models::list_models_returns_api_key_models ... ok
test suite::list_models::list_models_returns_chatgpt_models ... ok
test suite::live_cli::live_create_file_hello_txt ... ignored
test suite::live_cli::live_print_working_directory ... ignored
test suite::model_overrides::override_turn_context_does_not_create_config_file ... ok
test suite::model_overrides::override_turn_context_does_not_persist_when_config_exists ... ok
test suite::model_tools::model_selects_expected_tools ... ok
test suite::models_etag_responses::refresh_models_on_models_etag_mismatch_and_avoid_duplicate_models_fetch ... ok
test suite::otel::handle_container_exec_autoapprove_from_config_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_approved_for_session_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_approved_records_tool_decision ... ok
test suite::otel::handle_container_exec_user_denies_records_tool_decision ... ok
test suite::otel::handle_response_item_records_tool_result_for_custom_tool_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_function_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_local_shell_call ... ok
test suite::otel::handle_response_item_records_tool_result_for_local_shell_missing_ids ... ok
test suite::otel::handle_responses_span_records_response_kind_and_tool_name ... ok
test suite::otel::handle_sandbox_error_user_approves_for_session_records_tool_decision ... ok
test suite::otel::handle_sandbox_error_user_approves_retry_records_tool_decision ... ok
test suite::otel::handle_sandbox_error_user_denies_records_tool_decision ... ok
test suite::otel::process_sse_emits_completed_telemetry ... ok
test suite::otel::process_sse_emits_failed_event_on_parse_error ... ok
test suite::otel::process_sse_emits_tracing_for_output_item ... ok
test suite::otel::process_sse_failed_event_logs_missing_error ... ok
test suite::otel::process_sse_failed_event_logs_parse_error ... ok
test suite::otel::process_sse_failed_event_logs_response_completed_parse_error ... ok
test suite::otel::process_sse_failed_event_records_response_error_message ... ok
test suite::otel::process_sse_records_failed_event_when_stream_closes_without_completed ... ok
test suite::otel::record_responses_sets_span_fields_for_response_events ... ok
test suite::otel::responses_api_emits_api_request_event ... ok
test suite::prompt_caching::codex_mini_latest_tools ... ok
test suite::prompt_caching::override_before_first_turn_emits_environment_context ... ok
test suite::prompt_caching::overrides_turn_context_but_keeps_cached_prefix_and_key_constant ... ok
test suite::prompt_caching::per_turn_overrides_keep_cached_prefix_and_key_constant ... ok
test suite::prompt_caching::prefixes_context_and_instructions_once_and_consistently_across_requests ... ok
test suite::prompt_caching::prompt_tools_are_consistent_across_requests ... ok
test suite::prompt_caching::send_user_turn_with_changes_sends_environment_context ... ok
test suite::prompt_caching::send_user_turn_with_no_changes_does_not_send_environment_context ... ok
test suite::quota_exceeded::quota_exceeded_emits_single_error_event ... ok
test suite::read_file::read_file_tool_returns_requested_lines ... ignored, disabled until we enable read_file tool
test suite::remote_models::remote_models_apply_remote_base_instructions ... ok
test suite::remote_models::remote_models_hide_picker_only_models ... ok
test suite::remote_models::remote_models_preserve_builtin_presets ... ok
test suite::remote_models::remote_models_remote_model_uses_unified_exec ... ok
test suite::resume::resume_includes_initial_messages_from_reasoning_events ... ok
test suite::resume::resume_includes_initial_messages_from_rollout_events ... ok
test suite::resume_warning::emits_warning_when_resumed_model_differs ... ok
test suite::review::review_does_not_emit_agent_message_on_structured_output ... ok
test suite::review::review_filters_agent_message_related_events ... ok
test suite::review::review_history_surfaces_in_parent_session ... ok
test suite::review::review_input_isolated_from_parent_history ... ok
test suite::review::review_op_emits_lifecycle_and_review_output ... ok
test suite::review::review_op_with_plain_text_emits_review_fallback ... ok
test suite::review::review_uses_custom_review_model_from_config ... ok
test suite::review::review_uses_overridden_cwd_for_base_branch_merge_base ... ok
test suite::rmcp_client::stdio_image_completions_round_trip ... ok
test suite::rmcp_client::stdio_image_responses_round_trip ... ok
test suite::rmcp_client::stdio_server_propagates_whitelisted_env_vars ... ok
test suite::rmcp_client::stdio_server_round_trip ... ok
test suite::rmcp_client::streamable_http_tool_call_round_trip ... ok
test suite::rmcp_client::streamable_http_with_oauth_round_trip ... ok
test suite::rollout_list_find::find_handles_gitignore_covering_codex_home_directory ... ok
test suite::rollout_list_find::find_ignores_granular_gitignore_rules ... ok
test suite::rollout_list_find::find_locates_rollout_file_by_id ... ok
test suite::seatbelt::danger_full_access_allows_all_writes ... ok
test suite::seatbelt::if_git_repo_is_writable_root_then_dot_git_folder_is_read_only ... ok
test suite::client::env_var_overrides_loaded_auth has been running for over 60 seconds
test suite::client::includes_base_instructions_override_in_request has been running for over 60 seconds
test suite::client::includes_configured_effort_in_request has been running for over 60 seconds
test suite::seatbelt::if_parent_of_repo_is_writable_then_dot_git_folder_is_writable ... ok
test suite::client::includes_default_verbosity_in_request has been running for over 60 seconds
test suite::seatbelt::java_home_finds_runtime_under_seatbelt ... ok
test suite::seatbelt::openpty_works_under_seatbelt ... ok
test suite::seatbelt::read_only_allows_writes_to_darwin_user_temp_dir ... ok
test suite::seatbelt::read_only_allows_writes_to_slash_tmp ... ok
test suite::client::includes_user_instructions_message_in_request has been running for over 60 seconds
test suite::client::prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens has been running for over 60 seconds
test suite::seatbelt::read_only_disallows_writes_to_tmp_when_tmp_is_cwd ... ok
test suite::seatbelt::read_only_forbids_all_writes ... ok
test suite::client::token_count_includes_rate_limits_snapshot has been running for over 60 seconds
test suite::client::usage_limit_error_emits_rate_limit_event has been running for over 60 seconds
test suite::shell_command::multi_line_output_with_login ... ok
test suite::shell_command::output_with_login ... ok
test suite::shell_command::output_without_login ... ok
test suite::shell_command::pipe_output_with_login ... ok
test suite::shell_command::pipe_output_without_login ... ok
test suite::shell_command::shell_command_times_out_with_timeout_ms ... ok
test suite::compact_resume_fork::compact_resume_after_second_compaction_preserves_history has been running for over 60 seconds
test suite::compact_resume_fork::compact_resume_and_fork_preserve_model_history_view has been running for over 60 seconds
test suite::shell_command::shell_command_works ... ok
test suite::shell_command::unicode_output::with_login ... ok
test suite::fork_conversation::fork_conversation_twice_drops_to_first_message has been running for over 60 seconds
test suite::shell_command::unicode_output::with_login ... ok
test suite::shell_command::unicode_output::without_login ... ok
test suite::shell_command::unicode_output::without_login ... ok
test suite::shell_command::unicode_output_with_newlines::with_login ... ok
test suite::shell_command::unicode_output_with_newlines::with_login ... ok
test suite::shell_command::unicode_output_with_newlines::without_login ... ok
test suite::shell_command::unicode_output_with_newlines::without_login ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_creates_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_reports_failure_output::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_call_updates_existing_file::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_custom_tool_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_freeform_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_function_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shell_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::apply_patch_function_call_output_is_structured::applypatchmodeloutput_shellviaheredoc_expects ... ok
test suite::shell_serialization::local_shell_call_output_is_structured ... ok
test suite::shell_serialization::shell_command_output_is_freeform ... ok
test suite::shell_serialization::shell_command_output_is_not_truncated_over_10k_bytes ... ok
test suite::shell_serialization::shell_command_output_is_not_truncated_under_10k_bytes ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_for_freeform_tool_records_duration::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_for_nonzero_exit::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_is_structured_with_freeform_apply_patch::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_preserves_fixture_json_without_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_reserializes_truncated_content::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_stays_json_without_freeform_apply_patch::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_localshell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shell_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_serialization::shell_output_structures_fixture_with_serialization::shellmodeloutput_shellcommand_expects ... ok
test suite::shell_snapshot::linux_shell_command_uses_shell_snapshot ... ok
test suite::shell_snapshot::linux_unified_exec_uses_shell_snapshot ... ignored
test suite::shell_snapshot::macos_unified_exec_uses_shell_snapshot ... ignored, requires unrestricted networking on macOS
test suite::shell_snapshot::shell_command_snapshot_still_intercepts_apply_patch ... ok
test suite::shell_snapshot::shell_snapshot_deleted_after_shutdown_with_skills ... ok
test suite::shell_snapshot::windows_unified_exec_uses_shell_snapshot ... ignored
test suite::skills::list_skills_includes_system_cache_entries ... ok
test suite::skills::skill_load_errors_surface_in_session_configured ... ok
test suite::skills::user_turn_includes_skill_instructions ... ok
test suite::stream_error_allows_next_turn::continue_after_stream_error ... ok
test suite::stream_no_completed::retries_on_early_close ... ok
test suite::text_encoding_fix::test_cp1251_shell_output ... ok
test suite::text_encoding_fix::test_cp866_shell_output ... ok
test suite::text_encoding_fix::test_invalid_bytes_still_fall_back_to_lossy ... ok
test suite::text_encoding_fix::test_mixed_ascii_and_legacy_encoding ... ok
test suite::text_encoding_fix::test_pure_latin1_shell_output ... ok
test suite::text_encoding_fix::test_smart_decoding_improves_over_lossy_utf8 ... ok
test suite::text_encoding_fix::test_utf8_shell_output ... ok
test suite::text_encoding_fix::test_windows_1252_smart_decoding ... ok
test suite::tool_harness::apply_patch_reports_parse_diagnostics ... ok
test suite::tool_harness::apply_patch_tool_executes_and_emits_patch_events ... ok
test suite::tool_harness::shell_tool_executes_command_and_streams_output ... ok
test suite::tool_harness::update_plan_tool_emits_plan_update_event ... ok
test suite::tool_harness::update_plan_tool_rejects_malformed_payload ... ok
test suite::tool_parallelism::mixed_tools_fall_back_to_serial ... ok
test suite::tool_parallelism::non_parallel_tools_run_serially ... ok
test suite::tool_parallelism::read_file_tools_run_in_parallel ... ok
test suite::tool_parallelism::shell_tools_start_before_response_completed_when_stream_delayed ... ok
test suite::tool_parallelism::tool_results_grouped ... ok
test suite::tools::custom_tool_unknown_returns_custom_output_error ... ok
test suite::tools::sandbox_denied_shell_returns_original_output ... ok
test suite::tools::shell_escalated_permissions_rejected_then_ok ... ok
test suite::tools::shell_spawn_failure_truncates_exec_error ... ok
test suite::tools::shell_timeout_handles_background_grandchild_stdout ... ok
test suite::tools::shell_timeout_includes_timeout_prefix_and_metadata ... ok
test suite::tools::unified_exec_spec_toggle_end_to_end ... ok
test suite::truncation::byte_policy_marker_reports_bytes ... ok
test suite::truncation::mcp_image_output_preserves_image_and_no_text_summary ... ok
test suite::truncation::mcp_tool_call_output_exceeds_limit_truncated_for_model ... ok
test suite::truncation::mcp_tool_call_output_not_truncated_with_custom_limit ... ok
test suite::truncation::shell_command_output_not_truncated_with_custom_limit ... ok
test suite::truncation::token_policy_marker_reports_tokens ... ok
test suite::truncation::tool_call_output_configured_limit_chars_type ... ok
test suite::truncation::tool_call_output_exceeds_limit_truncated_chars_limit ... ok
test suite::truncation::tool_call_output_exceeds_limit_truncated_for_model ... ok
test suite::truncation::tool_call_output_truncated_only_once ... ok
test suite::truncation::truncate_function_error_trims_respond_to_model ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpkosl2n/.git/
[main (root-commit) 3ffcc53] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 3b0f7e7] ignore logs directory
1 file changed, 1 insertion(+)
create mode 100644 .gitignore
test suite::undo::undo_does_not_touch_ignored_directory_contents ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmptc7sVF/.git/
[main (root-commit) 93b3da2] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 6152df7] seed tracked
3 files changed, 3 insertions(+)
create mode 100644 .gitignore
create mode 100644 stable.txt
create mode 100644 target.txt
test suite::undo::undo_does_not_touch_unrelated_files ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmp5XLRlx/.git/
[main (root-commit) d547160] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 0376316] baseline tracked
1 file changed, 1 insertion(+)
create mode 100644 tracked.txt
test suite::undo::undo_overwrites_manual_edits_after_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpi84ykK/.git/
[main (root-commit) d547160] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 69a0fda] add user file
1 file changed, 1 insertion(+)
create mode 100644 user_file.txt
[main c46cd99] add ai file
1 file changed, 1 insertion(+)
create mode 100644 ai_file.txt
test suite::undo::undo_preserves_unrelated_staged_changes ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpSB9fH4/.git/
[main (root-commit) 9fb9d2d] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
test suite::undo::undo_removes_new_file_created_during_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpJm9v7b/.git/
[main (root-commit) 9fb9d2d] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main d5c15be] add rename target
1 file changed, 1 insertion(+)
create mode 100644 rename_me.txt
test suite::undo::undo_restores_moves_and_renames ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmp5EkW6S/.git/
[main (root-commit) 9b22202] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main a055c67] track file
1 file changed, 1 insertion(+)
create mode 100644 tracked.txt
test suite::undo::undo_restores_tracked_file_edit ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpOT5baV/.git/
[main (root-commit) 6bd4605] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main 960b0fe] init
test suite::undo::undo_restores_untracked_file_edit ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpvhvo6n/.git/
[main (root-commit) 6bd4605] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
test suite::undo::undo_reverts_only_latest_turn ... ok
Initialized empty Git repository in /private/var/folders/vt/k5n58rgd0vl3djs61xv2c0t80000gn/T/.tmpYjx6KX/.git/
[main (root-commit) ec2c003] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt
[main cc593ee] seed story
1 file changed, 1 insertion(+)
create mode 100644 story.txt
test suite::undo::undo_sequential_turns_consumes_snapshots ... ok
test suite::undo::undo_without_snapshot_reports_failure ... ok
test suite::unified_exec::exec_command_reports_chunk_and_exit_metadata ... ok
test suite::unified_exec::unified_exec_closes_long_running_session_at_turn_end ... ok
test suite::unified_exec::unified_exec_emits_end_event_when_session_dies_via_stdin ... ok
test suite::unified_exec::unified_exec_emits_exec_command_begin_event ... ok
test suite::unified_exec::unified_exec_emits_exec_command_end_event ... ok
test suite::unified_exec::unified_exec_emits_one_begin_and_one_end_event ... ok
test suite::unified_exec::unified_exec_emits_output_delta_for_exec_command ... ok
test suite::unified_exec::unified_exec_emits_terminal_interaction_for_write_stdin ... ok
test suite::unified_exec::unified_exec_formats_large_output_summary ... ok
test suite::unified_exec::unified_exec_full_lifecycle_with_background_end_event ... ok
test suite::unified_exec::unified_exec_intercepts_apply_patch_exec_command ... ok
test suite::unified_exec::unified_exec_prunes_exited_sessions_first ... ignored
test suite::unified_exec::unified_exec_python_prompt_under_seatbelt ... ok
test suite::unified_exec::unified_exec_resolves_relative_workdir ... ok
test suite::unified_exec::unified_exec_respects_early_exit_notifications ... ok
test suite::unified_exec::unified_exec_respects_workdir_override ... ignored, flaky
test suite::unified_exec::unified_exec_reuses_session_via_stdin ... ok
test suite::unified_exec::unified_exec_runs_on_all_platforms ... ok
test suite::unified_exec::unified_exec_runs_under_sandbox ... ok
test suite::unified_exec::unified_exec_streams_after_lagged_output ... ok
test suite::unified_exec::unified_exec_terminal_interaction_captures_delayed_output ... ok
test suite::unified_exec::unified_exec_timeout_and_followup_poll ... ok
test suite::unified_exec::write_stdin_returns_exit_metadata_and_clears_session ... ok
test suite::user_notification::summarize_context_three_requests_and_instructions ... ignored, flaky on ubuntu-24.04-arm - aarch64-unknown-linux-gnu
test suite::user_shell_cmd::user_shell_cmd_can_be_interrupted ... ok
test suite::user_shell_cmd::user_shell_cmd_ls_and_cat_in_temp_dir ... ok
test suite::user_shell_cmd::user_shell_command_history_is_persisted_and_shared_with_model ... ok
test suite::user_shell_cmd::user_shell_command_is_truncated_only_once ... ok
test suite::user_shell_cmd::user_shell_command_output_is_truncated_in_history ... ok
test suite::view_image::user_turn_with_local_image_attaches_image ... ok
test suite::view_image::view_image_tool_attaches_local_image ... ok
test suite::view_image::view_image_tool_errors_when_file_missing ... ok
test suite::view_image::view_image_tool_errors_when_path_is_directory ... ok
test suite::view_image::view_image_tool_placeholder_for_non_image_files ... ok
 ELIFECYCLE  Command failed with exit code 101.
 ELIFECYCLE  Test failed. See above for more details. (which invokes ) can hit a known hang in during shutdown; tests appear to finish but the process sometimes doesn’t exit. Nextest run + targeted suites above are clean.

@chatgpt-codex-connector

Copy link
Copy Markdown
Contributor

To use Codex here, create a Codex account and connect to github.

2 similar comments
@chatgpt-codex-connector

Copy link
Copy Markdown
Contributor

To use Codex here, create a Codex account and connect to github.

@chatgpt-codex-connector

Copy link
Copy Markdown
Contributor

To use Codex here, create a Codex account and connect to github.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Updated branch with latest upstream/main (openai/codex @ 5f8776d) via merge commit ca706b7.

Post-merge fixes/tests:

  • Fixed native SDK resume wiring after upstream added ResumeArgs.images: sdk/native/rust-bindings/run.rs (commit 134044c)
  • codex-rs: just fmt; just fix -p codex-exec; cargo test -p codex-exec
  • codex-rs: cargo nextest run --all-features --no-fail-fast (2879 passed; excluded 2 slow codex-exec-server dotslash-based tests)
  • codex-exec-server slow tests validated individually (dotslash fetch takes >30s on first run):
    • cargo test -p codex-exec-server --test all list_tools
    • cargo test -p codex-exec-server --test all accept_elicitation_for_prompt_rule
  • sdk/native: pnpm run build; pnpm test; cargo test

Note: the two exec-server tests can exceed the repo nextest slow-timeout (15s) on cold dotslash cache because they fetch a bash artifact from GitHub releases.

@ScriptedAlchemy
ScriptedAlchemy merged commit 5523010 into main Jan 6, 2026
28 checks passed
@ScriptedAlchemy
ScriptedAlchemy deleted the sync-upstream-main-2026-01-04 branch January 6, 2026 03:08
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.