nikivdev/code · error
Claude review failed
Error message
Claude review failed
What it means
Thrown when the Claude CLI subprocess used for review exits with a non-success status. Any captured stderr is printed to the user first, then the library bails with this generic message; Claude's own diagnostics appear just above it in output.
Source
Thrown at src/commit.rs:5734
return Ok(ReviewResult {
issues_found: false,
issues: Vec::new(),
summary: Some(format!(
"Claude review timed out after {}s",
timeout.as_secs()
)),
future_tasks: Vec::new(),
timed_out: true,
quality: None,
});
}
if !status.success() {
if !stderr_output.trim().is_empty() {
println!("{}", stderr_output.trim_end());
}
println!("\nnotify: Claude review failed");
bail!("Claude review failed");
}
let result = output_lines.join("\n");
let mut review_json = parse_review_json(&result);
let future_tasks = review_json
.as_ref()
.map(|parsed| normalize_future_tasks(&parsed.future_tasks))
.unwrap_or_default();
let summary = review_json.as_ref().and_then(|r| r.summary.clone());
let quality = review_json.as_mut().and_then(|r| r.quality.take());
let (issues_found, issues) = if let Some(ref parsed) = review_json {
if let Some(summary) = parsed.summary.as_ref() {
debug!(summary = summary.as_str(), "claude review summary");
}
(parsed.issues_found, parsed.issues.clone())
} else if result.trim().is_empty() {
(false, Vec::new())View on GitHub (pinned to a747e741ae)
Solutions
- Read the stderr lines printed immediately before this error for Claude's actual reason.
- Re-authenticate Claude CLI (`claude` / `claude login`).
- Update the Claude CLI binary and verify the configured model name is valid.
- Test `claude` manually with a trivial prompt to isolate CLI vs. integration issues.
- Retry; transient Anthropic API errors often clear.
Defensive patterns
Strategy: try-catch
Validate before calling
// preflight: claude CLI present and authenticated
let probe = Command::new("claude").arg("--version").output()?;
if !probe.status.success() {
anyhow::bail!("claude CLI missing or not authenticated");
} Try / catch
match run_claude_review(&diff).await {
Ok(r) => r,
Err(e) if e.to_string() == "Claude review failed" => {
// stderr was already printed; offer fallback
eprintln!("Claude failed; falling back to local heuristics");
fallback_review()
}
Err(e) => return Err(e),
} Prevention
- Keep the Claude CLI installed, updated, and logged in; smoke-test before commit flows
- Pin/validate the configured ClaudeModel name against CLI-supported models
- Capture and surface stderr — the real cause is printed above this error
- Add timeouts and retry for transient Anthropic API failures
When it happens
Trigger: Invoking the claude binary for a review where the process returns a non-zero exit code — auth failure, CLI error, invalid arguments, model/API outage.
Common situations: Claude CLI not logged in or API key expired; claude binary missing/outdated; invalid model name (ClaudeModel); network outage to Anthropic API; prompt too long.
Related errors
- kimi review failed: {}
- Lin.app is not running
- Agent exited with status: {}
- gen exited with status: {}
- {} exited with {}
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/97da069cef80fc8e.
Report an issue: GitHub.