openai/codex · error · ConstraintError
To use model `{model}`, you need to use auto review.
Error message
To use model `{model}`, you need to use auto review. What it means
ConstraintError::AutoReviewRequired (codex-rs/config/src/constraint.rs:19) fires when a requirements layer restricts a model so it may only be used together with auto review (the automatic approvals-reviewer mode). Selecting that model without auto review enabled fails config assembly rather than silently downgrading the safety requirement.
Source
Thrown at codex-rs/config/src/constraint.rs:19
use std::fmt;
use std::sync::Arc;
use crate::config_requirements::RequirementSource;
use thiserror::Error;
#[derive(Debug, Error, PartialEq, Eq)]
pub enum ConstraintError {
#[error(
"invalid value for `{field_name}`: `{candidate}` is not in the allowed set {allowed} (set by {requirement_source})"
)]
InvalidValue {
field_name: &'static str,
candidate: String,
allowed: String,
requirement_source: RequirementSource,
},
#[error("To use model `{model}`, you need to use auto review.")]
AutoReviewRequired { model: String },
#[error("field `{field_name}` cannot be empty")]
EmptyField { field_name: String },
#[error("invalid rules in requirements (set by {requirement_source}): {reason}")]
ExecPolicyParse {
requirement_source: RequirementSource,
reason: String,
},
#[error(
"invalid requirement for MCP server `{server_name}` (set by {requirement_source}): {reason}"
)]
McpServerRequirementParse {
server_name: String,
requirement_source: RequirementSource,
reason: String,View on GitHub (pinned to 339751715c)
Solutions
- Enable auto review for the run (set the approvals reviewer to auto) and retry
- Or switch to a model that is not gated by the auto-review requirement
- Or ask the requirements owner to lift the auto-review constraint for that model
Example fix
# before model = "gpt-5.1-codex-max" # (auto review not configured) # after model = "gpt-5.1-codex-max" approvals_reviewer = "auto"
Defensive patterns
Strategy: try-catch
Validate before calling
// If requirements are introspectable, gate the model pick up front:
if model_requires_auto_review(&requirements, &model)? && !auto_review_enabled {
return Err("enable auto review or pick another model".into());
} Try / catch
match assemble_config(...) {
Err(ConstraintError::AutoReviewRequired { model }) => {
prompt_user(format!("{model} requires auto review; enable it or pick another model"));
}
r => r?,
} Prevention
- When distributing pinned-model configs, include the matching auto review setting
- Treat model and reviewer requirements as coupled settings and change them together
- Show the requirement next to gated models in selection UIs
When it happens
Trigger: Setting model via config.toml, the -m flag, or an API override to a model whose requirement enforces auto review, while the approvals reviewer is not set to auto; the model constraint validator returns AutoReviewRequired during config load or set.
Common situations: Orgs gate high-autonomy models behind automatic code review; users pin such a model in a dotfiles-shared config that does not enable auto review; profiles copied between machines where the reviewer setting differs.
Related errors
- invalid value for `{field_name}`: `{candidate}` is not in th
- field `{field_name}` cannot be empty
- failed to decrypt encrypted task id
- `bypass_hook_trust` override must be a boolean
- remote control URL cannot be a base
AI-assisted analysis of openai/codex@339751715c (2026-08-25).
Data as JSON: /api/errors/db81256098f1e3bf.
Report an issue: GitHub.