How Adversarial Review Differs from Normal Review in the Codex Plugin: Focus and Steering Explained

Adversarial review accepts custom focus text to steer analysis toward specific risks and design challenges, while normal review follows a fixed, non-configurable contract that ignores user-provided focus text.

The openai/codex-plugin-cc repository provides two distinct code review commands that serve different purposes in the development workflow. While both commands analyze code quality, they diverge fundamentally in their handling of focus text and the degree of steering permitted during the review process.

Core Differences in Focus and Steering

Purpose and Review Philosophy

Normal review (/codex:review) performs a strict defect scan that identifies implementation bugs without challenging underlying design decisions. Adversarial review (/codex:adversarial-review) operates as a challenge-oriented analysis that questions implementation choices, architectural trade-offs, and underlying assumptions.

Focus Text Handling

The primary distinction lies in how each command processes additional user input. According to plugins/codex/commands/review.md at line 39, the normal review command "does not support custom focus text" and explicitly ignores any extra text provided after flags. Conversely, plugins/codex/commands/adversarial-review.md at line 45 states that unlike the normal variant, it "can still take extra focus text after the flags," allowing users to direct attention toward specific risk areas or implementation concerns.

Steering Capabilities

Normal review is non-steerable by design. The README.md at line 89 notes that the built-in reviewer follows a fixed contract that cannot be altered by user input. Adversarial review, however, preserves the user-provided focus text without stripping or rewriting it (lines 38-41 in adversarial-review.md), making it fully steerable toward particular concerns or controversial design decisions.

Technical Implementation and Command Routing

Both commands invoke the same companion script but route to different job kinds based on the sub-command name. In plugins/codex/scripts/codex-companion.mjs (lines 534-562), the script checks the command name and selects the appropriate execution path. The review sub-command triggers a standard defect analysis with fixed parameters, while the adversarial-review sub-command preserves focus text and applies a challenge-oriented framing.

Both commands support identical flags (--wait, --background, --base <ref>, --scope auto|working-tree|branch) and neither supports --scope staged or --scope unstaged.

Practical Usage Examples

To run a non-steerable defect scan:

node scripts/codex-companion.mjs review --base main --scope working-tree

To run a steerable adversarial review with custom focus text:

node scripts/codex-companion.mjs adversarial-review --base main \
    "challenge whether this caching strategy is safe under heavy load"

Both commands accept --wait for foreground execution or --background for asynchronous processing.

Summary

  • Normal review (/codex:review) follows a fixed contract that ignores custom focus text and provides non-steerable defect detection.
  • Adversarial review (/codex:adversarial-review) accepts free-form focus text to steer analysis toward specific risks and challenges design decisions.
  • Both commands share the same underlying infrastructure in codex-companion.mjs but diverge at lines 534-562 where job kind selection occurs.
  • Use normal review for straightforward implementation checks; use adversarial review when questioning trade-offs or requiring directed analysis.

Frequently Asked Questions

Can I use custom focus text with the normal /codex:review command?

No. According to plugins/codex/commands/review.md at line 39, the normal review command explicitly does not support custom focus text, and any additional text provided after flags is ignored.

Why does adversarial review preserve focus text while normal review ignores it?

The adversarial variant is designed to challenge implementation decisions and trade-offs, which requires user context about specific concerns. As documented in plugins/codex/commands/adversarial-review.md at lines 38-41, it retains focus text to maintain the adversarial framing without diluting the user's specific steering instructions.

Which command should I use to question my caching strategy design?

Use /codex:adversarial-review with custom focus text. The README.md at line 89 recommends the adversarial variant when you need steering capabilities or want to challenge design decisions rather than just detect implementation defects.

Do both commands support reviewing staged changes?

No. Neither /codex:review nor /codex:adversarial-review supports the --scope staged or --scope unstaged flags. Both commands limit scope selection to auto, working-tree, or branch values.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →