openai/codex-plugin-cc · error · Error
`/codex:review` now maps directly to the built-in reviewer a
Error message
`/codex:review` now maps directly to the built-in reviewer and does not support custom focus text. Retry with `/codex:adversarial-review ${focusText.trim()}` for focused review instructions. What it means
validateNativeReviewRequest is the validator for `/codex:review` (reviewName === 'Review'), which maps to the codex built-in reviewer (runAppServerReview). The built-in reviewer takes a structured target, not free text, so any non-empty focusText positional is rejected with a redirect to adversarial-review which does accept focus.
Source
Thrown at plugins/codex/scripts/codex-companion.mjs:273
throw new Error("Codex CLI is not installed or is missing required runtime support. Install it with `npm install -g @openai/codex`, then rerun `/codex:setup`.");
}
}
function buildNativeReviewTarget(target) {
if (target.mode === "working-tree") {
return { type: "uncommittedChanges" };
}
if (target.mode === "branch") {
return { type: "baseBranch", branch: target.baseRef };
}
return null;
}
function validateNativeReviewRequest(target, focusText) {
if (focusText.trim()) {
throw new Error(
`\`/codex:review\` now maps directly to the built-in reviewer and does not support custom focus text. Retry with \`/codex:adversarial-review ${focusText.trim()}\` for focused review instructions.`
);
}
const nativeTarget = buildNativeReviewTarget(target);
if (!nativeTarget) {
throw new Error("This `/codex:review` target is not supported by the built-in reviewer. Retry with `/codex:adversarial-review` for custom targeting.");
}
return nativeTarget;
}
function renderStatusPayload(report, asJson) {
return asJson ? report : renderStatusReport(report);
}
function isActiveJobStatus(status) {
return status === "queued" || status === "running";View on GitHub (pinned to db52e28f4d)
Solutions
- Use /codex:adversarial-review <focus text> when you need to inject custom focus instructions.
- Use /codex:review with no positional arguments for the standard built-in review.
- Update slash-command wrappers to stop appending focus text to review.
Example fix
// before codex-companion.mjs review "focus on error handling" // after codex-companion.mjs adversarial-review "focus on error handling"
Defensive patterns
Strategy: validation
Validate before calling
if (reviewName === 'Review' && focusText.trim()) {
throw new Error('review does not accept focus; use adversarial-review');
} Prevention
- Route focus-bearing review requests to adversarial-review.
- Strip positionals from /codex:review invocations.
When it happens
Trigger: Running `/codex:review check error handling` where the positional words become focusText. The user expected review to accept a focus string like the older API.
Common situations: Migration from an older companion where /codex:review accepted focus text; muscle memory from adversarial-review syntax.
Related errors
- Usage: node scripts/app-server-broker.mjs serve --endpoint <
- Missing required --endpoint.
- This `/codex:review` target is not supported by the built-in
- `status --wait` requires a job id.
- Unknown subcommand: ${subcommand}
AI-assisted analysis of openai/codex-plugin-cc@db52e28f4d (2026-08-13).
Data as JSON: /api/errors/b0b070152ebe838a.
Report an issue: GitHub.