nikivdev/code · error

Queued commit {} has review issues. Fix them, or re-run with

Error message

Queued commit {} has review issues. Fix them, or re-run with --allow-issues.

What it means

Approve-time gate in `run_commit_queue` (src/commit.rs:9276): a queued commit whose stored review recorded issues cannot be approved unless explicitly overridden with `--allow-issues` or `--force`. It protects the pipeline from approving code with known review problems.

Source

Thrown at src/commit.rs:9276

                        );
                        entry
                    } else {
                        return Err(err);
                    }
                }
            };
            let _ = refresh_queue_entry_commit(&repo_root, &mut entry);

            let issues_present = entry.review_issues_found
                || entry
                    .review
                    .as_deref()
                    .map(|s| !s.trim().is_empty())
                    .unwrap_or(false);
            let unreviewed = entry.version >= 2 && !entry.review_completed;

            if issues_present && !allow_issues && !force {
                bail!(
                    "Queued commit {} has review issues. Fix them, or re-run with --allow-issues.",
                    short_sha(&entry.commit_sha)
                );
            }
            if unreviewed && !effective_allow_unreviewed && !force {
                bail!(
                    "Queued commit {} does not have a clean review (missing). Re-run review, or re-run with --allow-unreviewed.",
                    short_sha(&entry.commit_sha)
                );
            }
            if entry.review_timed_out && !force {
                eprintln!(
                    "note: review timed out for {}; approving anyway (re-run `f commit-queue review {}` if you want a full review)",
                    short_sha(&entry.commit_sha),
                    short_sha(&entry.commit_sha)
                );
            }

View on GitHub (pinned to a747e741ae)

Solutions

  1. Read the entry's review issues (`f commit-queue list` or review output), fix the flagged problems, re-run review, then approve.
  2. If the issues are acceptable, re-run with `--allow-issues`.
  3. Use `--force` to bypass both issue and unreviewed gates when overriding deliberately.

Example fix

// before
f commit-queue approve 9abc123
// after (issues acknowledged)
f commit-queue approve 9abc123 --allow-issues
Defensive patterns

Strategy: validation

Validate before calling

let entry = find_entry(hash)?;
let has_issues = entry.review_issues.as_deref().map(|s| !s.trim().is_empty()).unwrap_or(false);
if has_issues && !allow_issues && !force {
    bail!("entry {} has review issues; fix or pass --allow-issues", entry.commit_sha);
}

Type guard

fn review_is_clean(entry: &CommitQueueEntry) -> bool {
    entry.review_issues.as_deref().map(|s| s.trim().is_empty()).unwrap_or(true)
}

Try / catch

match approve_queued(hash) {
    Err(e) if e.to_string().contains("has review issues") => {
        eprintln!("{e}; inspect review notes, fix, or re-run with --allow-issues");
    }
    other => other?,
}

Prevention

When it happens

Trigger: `f commit-queue approve <hash>` where the entry's review issues field is non-empty (issues_present) and neither --allow-issues nor --force was passed.

Common situations: Reviewer left blocking comments; automated review flagged lint/security issues; user forgot a prior review recorded issues; CI scripts approving without the override flag.

Related errors


AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01). Data as JSON: /api/errors/c1f6bed008d40b49. Report an issue: GitHub.