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

> Adversarial review uses custom focus text to steer analysis toward specific risks in the Codex plugin unlike normal review which ignores user input for a fixed contract.

- Repository: [OpenAI/codex-plugin-cc](https://github.com/openai/codex-plugin-cc)
- Tags: deep-dive
- Published: 2026-07-31

---

**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`](https://github.com/openai/codex-plugin-cc/blob/main/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`](https://github.com/openai/codex-plugin-cc/blob/main/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`](https://github.com/openai/codex-plugin-cc/blob/main/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`](https://github.com/openai/codex-plugin-cc/blob/main/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:

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

```

To run a steerable adversarial review with custom focus text:

```bash
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`](https://github.com/openai/codex-plugin-cc/blob/main/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`](https://github.com/openai/codex-plugin-cc/blob/main/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`](https://github.com/openai/codex-plugin-cc/blob/main/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.