Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Reviews

Three choices shape a review: who reviews, how their findings are combined, and what happens to those findings. Keep those choices separate when tuning the cost or interruption level.

/cadence:cad-config --review

This configures providers and detects their available models. The default reviewer is a fresh-context Claude subagent and needs no separate API key.

Providers and authorization

External providers run only when they are in the effective reviewer list and your user-global review.reviewers also names them. A repository list can narrow your authorized set, but cannot add a provider you haven’t authorized globally. A provider also needs a configured model and an available credential.

Provider model tiers and trigger effort affect external API reviewers. They don’t choose the Claude subagent’s model or effort; those come from its role settings. Decision review has its own provider settings and a separate Claude-subagent path.

Store model IDs and credential-file paths in configuration, never API keys. Credentials come from the environment first, then the provider env file. review.key_file changes that file’s path only from your user-global configuration.

What a gate does

GateConsequence
offThe trigger runs no review.
advisoryReport findings and continue.
deferredContinue the work; unresolved queued reviews stop landing.
blockingStop on surviving blocker or high findings. An unavailable review cannot silently pass.
adjudicatedEvaluate findings against the cited code and present the surviving findings for your triage.

review.mode controls how reviewers combine; a gate set to adjudicated requires adjudication regardless of the mode.

Risk surfaces

Use /cadence:cad-config --surfaces to revisit which risk surfaces the project contains. The plan-time risk floor can raise the default plan review to blocking and turn on deep verification. The resolver preserves a valid explicitly configured plan gate, including an explicitly configured advisory value. It doesn’t change role models or effort.

Waiving a surface’s routing floor withholds those plan-time effects for that surface. It doesn’t disable review of a matching actual diff. Keep the waiver distinct from changing which surfaces the detector watches.

Settings

review.mode

Default: "adjudicated" · Type: enum · Scope: repository or user-global.

Allowed values: "single", "panel", "adjudicated".

single uses the first available reviewer. panel combines and deduplicates findings. adjudicated runs reviewers independently, then evaluates their findings against the cited code before merging survivors.

review.reviewers

Default: ["claude-subagent"] · Type: list of allowed values · Scope: repository or user-global.

Allowed items: "claude-subagent", "openai", "gemini", "deepseek".

Reviewer backends to request. Lists replace across layers. External providers also need explicit user-global authorization, a model and a credential; the repository alone cannot enable them.

review.key_file

Default: null · Type: string or null · Scope: user-global only.

Override the provider credential env-file path, never the key itself. null uses providers.env under the Cadence XDG config directory, normally ~/.config/cadence/providers.env. Environment credentials take precedence.

review.request_timeout_ms

Default: 540000 · Type: integer · Scope: repository or user-global.

Range: 1–600000.

Timeout in milliseconds for an external review-provider HTTPS request. It does not set a Claude-subagent execution timeout.

review.max_prompt_tokens

Default: 120000 · Type: integer · Scope: repository or user-global.

Range: 1 or greater.

Estimated token ceiling for external review and consult payloads, using characters divided by four. An over-cap request is refused before transmission. It does not limit the Claude subagent.

review.providers.openai.tiers.flagship

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The openai model ID used when a review or consult requests the flagship tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.openai.tiers.balanced

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The openai model ID used when a review or consult requests the balanced tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.openai.tiers.cheap

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The openai model ID used when a review or consult requests the cheap tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.gemini.tiers.flagship

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The gemini model ID used when a review or consult requests the flagship tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.gemini.tiers.balanced

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The gemini model ID used when a review or consult requests the balanced tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.gemini.tiers.cheap

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The gemini model ID used when a review or consult requests the cheap tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.deepseek.tiers.flagship

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The deepseek model ID used when a review or consult requests the flagship tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.deepseek.tiers.balanced

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The deepseek model ID used when a review or consult requests the balanced tier. Configure it through --review. null leaves this provider/tier without a model.

review.providers.deepseek.tiers.cheap

Default: null · Type: string or null · Scope: repository or user-global.

Format: 1–128 letters, digits, ., _, : or -, beginning with a letter or digit; or null.

The deepseek model ID used when a review or consult requests the cheap tier. Configure it through --review. null leaves this provider/tier without a model.

review.triggers.plan.gate

Default: "advisory" · Type: enum · Scope: repository or user-global.

Allowed values: "off", "advisory", "deferred", "blocking", "adjudicated".

Consequence of reviewing a written plan. Gate values are explained above.

review.triggers.plan.tier

Default: "cheap" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

External-provider model tier for reviewing a written plan. The Claude subagent uses its own role model.

review.triggers.plan.effort

Default: "low" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested external-provider reasoning effort for reviewing a written plan. The Claude subagent uses its agent file’s effort.

review.triggers.diff.gate

Default: "off" · Type: enum · Scope: repository or user-global.

Allowed values: "off", "advisory", "deferred", "blocking", "adjudicated".

Consequence of reviewing a per-task diff. Gate values are explained above.

review.triggers.diff.tier

Default: "cheap" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

External-provider model tier for reviewing a per-task diff. The Claude subagent uses its own role model.

review.triggers.diff.effort

Default: "minimal" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested external-provider reasoning effort for reviewing a per-task diff. The Claude subagent uses its agent file’s effort.

review.triggers.risk_surface.gate

Default: "blocking" · Type: enum · Scope: repository or user-global.

Allowed values: "off", "advisory", "deferred", "blocking", "adjudicated".

Consequence of reviewing a detected risk-surface match. Gate values are explained above.

review.triggers.risk_surface.tier

Default: "cheap" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

External-provider model tier for reviewing a detected risk-surface match. The Claude subagent uses its own role model.

review.triggers.risk_surface.effort

Default: "low" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested external-provider reasoning effort for reviewing a detected risk-surface match. The Claude subagent uses its agent file’s effort.

review.triggers.risk_surface.surfaces

Default: null · Type: list of allowed values · Scope: repository or user-global.

Allowed items: "auth", "migrations", "billing", "concurrency", "destructive", "secrets", "api_contract", "untrusted_input". null is also accepted as the unanswered state.

Risk categories the detector watches. null means unanswered and keeps all eight; an explicit list selects the categories. Use --surfaces to revisit the answer.

review.triggers.risk_surface.waive_routing_floor

Default: null · Type: list of allowed values · Scope: repository or user-global.

Allowed items: "auth", "migrations", "billing", "concurrency", "destructive", "secrets", "api_contract", "untrusted_input". null is also accepted as the unanswered state.

Surfaces that may not raise the plan-time review/deep-verification floor. null waives none. A waiver does not disable review on an actual diff or change any role’s model or effort.

review.triggers.phase_diff.gate

Default: "off" · Type: enum · Scope: repository or user-global.

Allowed values: "off", "advisory", "deferred", "blocking", "adjudicated".

Consequence of reviewing the merged phase diff after parallel execution. Gate values are explained above.

review.triggers.phase_diff.tier

Default: "cheap" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

External-provider model tier for reviewing the merged phase diff after parallel execution. The Claude subagent uses its own role model.

review.triggers.phase_diff.effort

Default: "low" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested external-provider reasoning effort for reviewing the merged phase diff after parallel execution. The Claude subagent uses its agent file’s effort.

review.consult.enabled

Default: false · Type: boolean · Scope: repository or user-global.

Allow an offer of a second-model consult at a dead end. Each consult still needs your acceptance of the named provider and model.

review.consult.tier

Default: "flagship" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

Provider model tier for a consult.

review.consult.effort

Default: "high" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested provider reasoning effort for a consult.

review.consult.attempt_threshold

Default: 3 · Type: integer · Scope: repository or user-global.

Range: 1 or greater.

Failed fix attempts or red-test iterations on one bug before /cad-debug offers a consult. It is not an automatic permission to call a provider.

review.decision_review.tier

Default: "flagship" · Type: enum · Scope: repository or user-global.

Allowed values: "flagship", "balanced", "cheap".

Provider model tier for /cad-decision-review. It affects external reviewers only; that command’s Claude-subagent path uses the session model.

review.decision_review.effort

Default: "high" · Type: enum · Scope: repository or user-global.

Allowed values: "minimal", "low", "medium", "high", "xhigh".

Requested provider reasoning effort for /cad-decision-review. It does not override the Claude reviewer agent file’s effort.