openai / openai/codex-plugin-cc
adversarial-review threads are always ephemeral — no way to verify which model actually ran a review
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 33.3k
- Forks
- 2.3k
- PR merge metrics
- No merged PRs in 30d
Description
Summary
We use adversarial-review as an independent code-review gate and need to verify,
after the fact, which model actually executed the review (guarding against silent
local fallback or misconfiguration). Today that is not possible from the job artifacts:
adversarial-reviewstarts its thread withephemeral: trueunconditionally
(scripts/codex-companion.mjs, review path passes nopersistThread), so no
rollout is written under~/.codex/sessions/.- The persisted job record only stores the requested model (
request.model),
not the model that actually served the turn. taskthreads, by contrast, setpersistThread: trueand do write rollouts.
We currently work around this by correlating the job's threadId against the
tracing telemetry in ~/.codex/logs_2.sqlite (span attribute model= on
sampling-request spans), which does cover ephemeral threads — but that is an
internal format we would rather not depend on.
Requests
- Opt-in persistence for review threads — e.g.
adversarial-review --persist-thread(or persist by default), so a rollout exists for audit. - Document the existing
--modelflag foradversarial-review— the parser
accepts and forwards it today, but help text does not mention it. - Add
--efforttoadversarial-review— currently it silently inherits the
value from~/.codex/config.toml, which makes review runs non-reproducible
across machines. - Expose the effective runtime model in the job result — ideally also the
response.modelreturned by the Responses API for each sampling request (or an
execution receipt), with a clear distinction betweenrequested_model,
effective_runtime_model, andresponse_model. - Keep the current
outputSchema(structured verdict) — it is a strength of the
review path; none of the above should require dropping it.
Environment
- plugin
openai-codex/codex1.0.6 (Claude Code marketplace) - measured on macOS, Codex CLI with app-server transport
Why it matters
A review gate is only as trustworthy as its provenance. Without any persisted
artifact tying the review thread to the model that actually ran it, "review by
model X" is a request, not a fact. Structured Outputs plus a persisted model
receipt would make adversarial-review fully auditable.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in scripts/codex-companion.mjs and trace the adversarial-review path, its argument parser, thread creation, and persisted job result. Compare it with the task path's persistThread behavior, then inspect the existing request.model handling and Responses API sampling results. Done means the requested review options, persisted audit artifact, and requested/effective/response model distinctions are documented and tested without removing outputSchema.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- cli, observability, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100