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
Dependency review
6s
Matrix: host-filesystem
Matrix: verify
Examples check (Node 22.19)
2m 25s
Release gates (Node 22.19)
2m 28s
Host install proofs (Node 22.19)
2m 27s
RSC runtime micro-eval (Node 22.19)
46s
Candidate status
0s
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.
|
|
packages/agent-bundle/tests/packed-install-bin.test.ts >:
file:///D:/a/agent-bundle/agent-bundle/node_modules/.pnpm/@rstest+core@0.11.12/node_modules/@rstest/core/dist/3573%7E0.js#L1518
Worker stopped before task completed (code=3221225786%2C signal=null)
|
|
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.
|