/codex:review vs /codex:adversarial-review: Key Differences in OpenAI's Codex Plugin

The /codex:review command performs a standard code review for implementation defects and style issues, while /codex:adversarial-review actively challenges design decisions and accepts optional focus arguments to target specific concerns.

In the openai/codex-plugin-cc repository, both commands are review-only slash commands that run through the shared plugin runtime, but they serve fundamentally different purposes in the code review workflow. Understanding the difference between /codex:review and /codex:adversarial-review helps you select the appropriate level of scrutiny for your changes, from straightforward bug checking to adversarial design challenges.

Core Purpose and Framing Philosophy

Standard Review Command

The /codex:review command provides a neutral, straightforward code review focused on implementation defects, style issues, and bugs. According to the command definition in plugins/codex/commands/review.md, this command does not accept extra free-form focus arguments, maintaining a consistent scope across all runs.

Adversarial Review Command

In contrast, /codex:adversarial-review explicitly frames the review as a challenge to your current approach. As defined in plugins/codex/commands/adversarial-review.md, this command encourages the model to surface design-level concerns, question trade-offs, and scrutinize underlying assumptions rather than simply checking for correctness.

Command Syntax and Flag Support

Both commands share identical base flags and execution modes, but differ in their handling of trailing arguments:

  • Shared flags: Both support --wait, --background, --base <ref>, and --scope auto|working-tree|branch
  • Focus text: Only /codex:adversarial-review accepts optional free-form focus arguments after the flags

The Focus Argument (Adversarial-Review Only)

The key syntactic difference lies in the optional focus parameter. When running an adversarial review, you can append specific concerns to narrow the review scope:

/codex adversarial-review --scope branch --base main performance security

In this example, the trailing words performance and security become the focus argument, directing the review to scrutinize those specific aspects. This functionality is absent in the standard review command.

Shared Runtime and Execution Flow

Despite their different philosophies, both commands invoke the same runtime script with different subcommands. According to the source in plugins/codex/scripts/codex-companion.mjs, the execution splits based on the command type:

  • Standard review: node …/codex-companion.mjs review "$ARGUMENTS"
  • Adversarial review: node …/codex-companion.mjs adversarial-review "$ARGUMENTS"

Both commands follow the identical "size-estimate → ask user" flow. If no --wait or --background flag is supplied, the plugin estimates the diff size and recommends either "Wait for results" (for tiny diffs) or "Run in background" (for larger work), marking the recommended option accordingly.

Implementation Details and Prompt Templates

The distinct behaviors stem from different prompt templates in the repository:

Both commands maintain the same constraints: they are review-only operations that provide verbatim output without patching or fixing code.

Practical Usage Examples

Basic foreground execution for standard review:

/codex review --wait

Adversarial review against a specific branch:

/codex adversarial-review --wait --base main

Background execution with working-tree scope:

/codex adversarial-review --scope working-tree

Adversarial review with specific focus areas:

/codex adversarial-review --base develop performance security

Summary

  • Primary distinction: /codex:review checks for bugs and style issues, while /codex:adversarial-review challenges design decisions and assumptions
  • Syntax difference: Only the adversarial variant accepts optional focus text to target specific concerns
  • Shared infrastructure: Both commands use codex-companion.mjs and support identical flags (--wait, --background, --base, --scope)
  • Execution flow: Both follow the same size-estimation and recommendation logic for foreground vs background execution
  • Prompt sourcing: Different prompt templates in plugins/codex/prompts/ define the distinct review tones

Frequently Asked Questions

Can I use focus arguments with /codex:review?

No, the standard review command defined in plugins/codex/commands/review.md does not accept extra free-form focus arguments. This functionality is exclusive to /codex:adversarial-review, which optionally accepts trailing text to direct the review toward specific concerns like "performance" or "security".

Do both commands support background execution?

Yes, both commands support the --background flag and the --wait flag. When neither flag is provided, both commands trigger the same size-estimation logic that recommends either waiting for results or running in a background task based on the diff size.

Which prompt template does the adversarial review use?

The adversarial review uses the template defined in plugins/codex/prompts/adversarial-review.md, which frames the review as an active challenge to the current implementation approach. The standard review uses plugins/codex/prompts/stop-review-gate.md instead.

Can I run an adversarial review against a specific git branch?

Yes, both commands support the --base <ref> flag. For example, /codex adversarial-review --base main runs the adversarial review comparing your current state against the main branch, applying the same scope selection logic as the standard review command.

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 →