Skip to content

fix(install): Codex add-only replace; refuse disabled/unknown enablement #3034

fix(install): Codex add-only replace; refuse disabled/unknown enablement

fix(install): Codex add-only replace; refuse disabled/unknown enablement #3034

Triggered via pull request September 17, 2026 04:02
Status Cancelled
Total duration 2m 46s
Artifacts –

ci.yml

on: pull_request
Detect changed paths
8s
Detect changed paths
Dependency review
6s
Dependency review
Matrix: host-filesystem
Matrix: verify
Examples check (Node 22.19)
2m 25s
Examples check (Node 22.19)
Release gates (Node 22.19)
2m 28s
Release gates (Node 22.19)
Host install proofs (Node 22.19)
2m 27s
Host install proofs (Node 22.19)
RSC runtime micro-eval (Node 22.19)
46s
RSC runtime micro-eval (Node 22.19)
Verify gate
3s
Verify gate
Candidate status
0s
Candidate status
Fit to window
Zoom out
Zoom in

Annotations

30 errors
Host filesystem (ubuntu-latest)
Process completed with exit code 1.
packages/agent-bundle/tests/install.test.ts > fails Codex replace closed for disabled or unknown enablement before any mutation: packages/agent-bundle/tests/install.test.ts#L854
expected 'Cannot replace the Codex install of i…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + Cannot replace the Codex install of install-fixture@install-fixture-marketplace%3A plugin list reports enabled%3A false. The native plugin CLI has no qualified settings-preserving update API%2C and native `plugin add` resets plugin-level enabled to true. Enable the plugin in Codex before replacing%2C or leave this install unchanged.
Host filesystem (macos-latest)
Canceling since a higher priority waiting request for ci-824 exists
Host filesystem (macos-latest)
Process completed with exit code 1.
packages/agent-bundle/tests/install.test.ts > fails Codex replace closed for disabled or unknown enablement before any mutation: packages/agent-bundle/tests/install.test.ts#L854
expected 'Cannot replace the Codex install of i…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + Cannot replace the Codex install of install-fixture@install-fixture-marketplace%3A plugin list reports enabled%3A false. The native plugin CLI has no qualified settings-preserving update API%2C and native `plugin add` resets plugin-level enabled to true. Enable the plugin in Codex before replacing%2C or leave this install unchanged.
Verify (fast, Node 26)
Canceling since a higher priority waiting request for ci-824 exists
Verify (fast, Node 26)
The operation was canceled.
packages/agent-bundle/tests/install.test.ts > fails Codex replace closed for disabled or unknown enablement before any mutation: packages/agent-bundle/tests/install.test.ts#L854
expected 'Cannot replace the Codex install of i…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + Cannot replace the Codex install of install-fixture@install-fixture-marketplace%3A plugin list reports enabled%3A false. The native plugin CLI has no qualified settings-preserving update API%2C and native `plugin add` resets plugin-level enabled to true. Enable the plugin in Codex before replacing%2C or leave this install unchanged.
packages/agent-bundle/tests/install-surface.test.ts > documents the same-version reinstall recipe per host, including Claude's version-gated update: packages/agent-bundle/tests/install-surface.test.ts#L770
expected '# Install install-fixture\n\nChecks h…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + # Install install-fixture + + Checks host installation. + + Version%3A `1.2.3` + + Run these commands from this bundle directory. The bundle is self-contained%3A every command below is + a host command or the bundled installer%2C and nothing requires the `agent-bundle` CLI. Where that CLI is + mentioned it is optional and automates the same steps. + + ## Codex + + Codex installs this bundle from its local marketplace snapshot%3A + + ```sh + codex plugin marketplace add ./ + codex plugin add install-fixture@install-fixture-marketplace + ``` + + ### Reinstall after a same-version rebuild + + `codex plugin add` re-copies the marketplace snapshot and keeps plugin settings in `config.toml`. + `codex plugin remove` deletes that settings subtree%2C including nested MCP overrides%2C so a same-version + refresh is add-only%3A + + ```sh + codex plugin marketplace add ./ + codex plugin add install-fixture@install-fixture-marketplace + ``` + + Native add resets a plugin-level `enabled = false` to `true`. + The native plugin CLI has no qualified settings-preserving update API%2C so the optional + `agent-bundle install` refuses replacement when `plugin list --json` reports `enabled%3A false` + or omits `enabled` (`AB7004`) and leaves that install unchanged. Enable the plugin in Codex first%2C then rerun. + + With the optional `agent-bundle` CLI%2C `agent-bundle install codex --from ./` runs this sequence + automatically when the installed copy has the same version but a different content hash; `--replace` + (alias `--force`) forces it. + + ### Uninstall + + ```sh + codex plugin remove install-fixture@install-fixture-marketplace + ``` + + Codex 0.147.0 deletes the cached plugin tree%2C `state/` included%2C on `plugin remove` and has no keep-data + option. + + The marketplace `install-fixture-marketplace` stays registered. Remove it only when nothing else installs from it%3A + `codex plugin list` shows every other plugin from it. + + ```sh + codex plugin marketplace remove install-fixture-marketplace + ``` + + With the optional `agent-bundle` CLI%2C `agent-bundle uninstall codex --from ./ --plan` prints exactly what + would be removed and `agent-bundle uninstall codex --from ./` reverses the recorded registrations. + `agent-bundle install codex` records a receipt at `~/.codex/agent-bundle/receipts/install-fixture.install-fixture-marketplace.user.json` (or + under `$CODEX_HOME`)%2C and `uninstall` consumes it%2C running the two commands above in order. `--keep-data` + cannot preserve durable state on Codex; the result says so (`unavailable`). A missing receipt or a cached + copy that no longer matches it is refused unless `--force`; a second run is a `not-installed` no-op. +
Verify (fast, Node 24)
Canceling since a higher priority waiting request for ci-824 exists
Verify (fast, Node 24)
The operation was canceled.
packages/agent-bundle/tests/install.test.ts > fails Codex replace closed for disabled or unknown enablement before any mutation: packages/agent-bundle/tests/install.test.ts#L854
expected 'Cannot replace the Codex install of i…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + Cannot replace the Codex install of install-fixture@install-fixture-marketplace%3A plugin list reports enabled%3A false. The native plugin CLI has no qualified settings-preserving update API%2C and native `plugin add` resets plugin-level enabled to true. Enable the plugin in Codex before replacing%2C or leave this install unchanged.
packages/agent-bundle/tests/install-surface.test.ts > documents the same-version reinstall recipe per host, including Claude's version-gated update: packages/agent-bundle/tests/install-surface.test.ts#L770
expected '# Install install-fixture\n\nChecks h…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + # Install install-fixture + + Checks host installation. + + Version%3A `1.2.3` + + Run these commands from this bundle directory. The bundle is self-contained%3A every command below is + a host command or the bundled installer%2C and nothing requires the `agent-bundle` CLI. Where that CLI is + mentioned it is optional and automates the same steps. + + ## Codex + + Codex installs this bundle from its local marketplace snapshot%3A + + ```sh + codex plugin marketplace add ./ + codex plugin add install-fixture@install-fixture-marketplace + ``` + + ### Reinstall after a same-version rebuild + + `codex plugin add` re-copies the marketplace snapshot and keeps plugin settings in `config.toml`. + `codex plugin remove` deletes that settings subtree%2C including nested MCP overrides%2C so a same-version + refresh is add-only%3A + + ```sh + codex plugin marketplace add ./ + codex plugin add install-fixture@install-fixture-marketplace + ``` + + Native add resets a plugin-level `enabled = false` to `true`. + The native plugin CLI has no qualified settings-preserving update API%2C so the optional + `agent-bundle install` refuses replacement when `plugin list --json` reports `enabled%3A false` + or omits `enabled` (`AB7004`) and leaves that install unchanged. Enable the plugin in Codex first%2C then rerun. + + With the optional `agent-bundle` CLI%2C `agent-bundle install codex --from ./` runs this sequence + automatically when the installed copy has the same version but a different content hash; `--replace` + (alias `--force`) forces it. + + ### Uninstall + + ```sh + codex plugin remove install-fixture@install-fixture-marketplace + ``` + + Codex 0.147.0 deletes the cached plugin tree%2C `state/` included%2C on `plugin remove` and has no keep-data + option. + + The marketplace `install-fixture-marketplace` stays registered. Remove it only when nothing else installs from it%3A + `codex plugin list` shows every other plugin from it. + + ```sh + codex plugin marketplace remove install-fixture-marketplace + ``` + + With the optional `agent-bundle` CLI%2C `agent-bundle uninstall codex --from ./ --plan` prints exactly what + would be removed and `agent-bundle uninstall codex --from ./` reverses the recorded registrations. + `agent-bundle install codex` records a receipt at `~/.codex/agent-bundle/receipts/install-fixture.install-fixture-marketplace.user.json` (or + under `$CODEX_HOME`)%2C and `uninstall` consumes it%2C running the two commands above in order. `--keep-data` + cannot preserve durable state on Codex; the result says so (`unavailable`). A missing receipt or a cached + copy that no longer matches it is refused unless `--force`; a second run is a `not-installed` no-op. +
Host filesystem (windows-latest)
Canceling since a higher priority waiting request for ci-824 exists
Host filesystem (windows-latest)
The operation was canceled.
packages/agent-bundle/tests/install.test.ts > fails Codex replace closed for disabled or unknown enablement before any mutation: packages/agent-bundle/tests/install.test.ts#L854
expected 'Cannot replace the Codex install of i…' to contain 'no settings-preserving update API' - Expected + Received - no settings-preserving update API + Cannot replace the Codex install of install-fixture@install-fixture-marketplace%3A plugin list reports enabled%3A false. The native plugin CLI has no qualified settings-preserving update API%2C and native `plugin add` resets plugin-level enabled to true. Enable the plugin in Codex before replacing%2C or leave this install unchanged.
Examples check (Node 22.19)
Canceling since a higher priority waiting request for ci-824 exists
Examples check (Node 22.19)
The operation was canceled.
Host install proofs (Node 22.19)
Canceling since a higher priority waiting request for ci-824 exists
Host install proofs (Node 22.19)
The operation was canceled.
Release gates (Node 22.19)
Canceling since a higher priority waiting request for ci-824 exists
Release gates (Node 22.19)
The operation was canceled.
Verify (integration-2, Node 24)
Canceling since a higher priority waiting request for ci-824 exists
Verify (integration-2, Node 24)
The operation was canceled.
Verify (integration-1, Node 24)
Canceling since a higher priority waiting request for ci-824 exists
Verify (integration-1, Node 24)
The operation was canceled.
CI
Canceling since a higher priority waiting request for ci-824 exists
Verify gate
Process completed with exit code 1.
Verify gate
Verify matrix result is 'cancelled'; see the Verify (…) jobs.