openai / openai/codex-plugin-cc

/codex:review rejects focus text — breaks interface parity with /codex:adversarial-review and blocks non-English model/effort entry

Open
#522 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
33.3k
Forks
2.3k
PR merge metrics
No merged PRs in 30d

Description

Describe the bug

/codex:review throws on any positional argument because validateNativeReviewRequest rejects non-empty focus text unconditionally (codex-companion.mjs:271-274): "does not support custom focus text. Retry with /codex:adversarial-review ...".

1. It breaks interface parity. /codex:adversarial-review accepts focus text after the flags; /codex:review rejects it wholesale. Two sibling review commands that should behave as mirrors differ in a way the user only discovers by hitting the error. The suggested escape hatch (adversarial-review) is not a substitute — it changes the review semantics (adversarial framing), so the user is forced to pick between "type a sentence" and "get the review I actually want."

2. It makes non-English model/effort entry unusable. The short aliases (spark, sol, terra, luna) and the latin-only --flag value grammar assume the user types in English/Latin script. A user who writes the model/effort value as a natural phrase in their own language has no accepted input path. They must know the exact flag syntax and the exact latin model id.

To reproduce

A Japanese-speaking user requesting a high-effort review on the sol model, typed the natural way (model → モデル, sol → ソル, effort → エフォート, xhigh → エックスハイ — Japanese phonetically transcribes everything into kana):

$ /codex:review モデル ソル エフォート エックスハイ
Error: `/codex:review` now maps directly to the built-in reviewer and does not support custom focus text.
         Retry with `/codex:adversarial-review ...`

The intent ("use model sol, effort xhigh") is unambiguous to a human, but the parser treats the non-Latin prose as forbidden focus text — and even if it didn't, there is no ソル alias to map back to sol.

Expected behavior

Not mutually exclusive:

  1. Lenient positional parsing: if a positional argument can be interpreted as model/effort intent, accept it as such instead of rejecting the whole invocation.
  2. Recognize model/effort intent regardless of position/script: scan raw arguments for model/effort intent in any language before the strict rejection, so /codex:review モデル ソル resolves to --model sol.
  3. Parity: accept the same argument surface in both review commands, so the interface is uniform.

Environment

Plugin v1.0.6, codex-cli 0.144.4, macOS.

Related

  • #333, #512 — focus-text re-tokenization (inverse problem: flags leaking into focus text; this issue is benign focus text rejected wholesale).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in codex-companion.mjs:271-274 and trace validateNativeReviewRequest, then compare its argument handling with /codex:adversarial-review. Reproduce the Japanese positional invocation from the issue and determine how model/effort intent is currently parsed. Done means the agreed positional or multilingual model/effort inputs no longer fail wholesale and the sibling commands expose the intended matching argument surface.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
cli, internationalization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.