The findings block
The reviewer ends its pull-request comment with one fenced code block. The info string is exactlyjson review-findings. The JSON stays on one line.
AI-Implement parses the block by these rules:
- A broken or unclosed block makes the verdict
incomplete. AI-Implement does not fall back to the comment prose. - With more than one block in one comment, the last block counts.
- Every finding in the block gates the merge, including a
minorone.
Who can post the block
AI-Implement reads the block only from a trusted comment author. Two kinds of author are trusted:github-actions[bot]— a workflow that posts with itsGITHUB_TOKEN.- One of these logins:
ai-implement,ai-implement[bot],claude,claude[bot],claude-code[bot].
When AI-Implement reads the block
The post-push review reads the newest eligible comment while the run waits for the review check. A review posted after the run ends still counts. A finding from a trusted author queues a review-fix run.The review check
AI-Implement waits for a check run whose name matches. It recognizes these names by default:reviewcode-review-pluginclaude-reviewclaude code reviewclaude-code-review- any name that contains both
claudeandreview
reviewCheckNames in .ai-implement/config.yml to replace the defaults with exact matches — see reviewCheckNames.
AI-Implement waits up to five minutes for the check to finish. What it does depends on the check state:
Review process
Each project sets a Review process. It selects who reviews a pull request and how AI-Implement reads the verdict. The Review process has these values:- AI-Implement — the default. AI-Implement’s own reviewers review the pull request.
- Claude Code Review — Claude Code Review reviews the pull request. AI-Implement fixes Claude’s findings.
- Claude Code Review, repository auto-fix — Claude Code Review reviews the pull request. The repository’s own auto-fix workflow fixes Claude’s findings, and AI-Implement does not. See Repository auto-fix.
Claude Code Review verdict
Under both Claude Code Review processes, AI-Implement reads the verdict from the strongest source it finds. It trustsclaude[bot] and claude.
AI-Implement matches a review check by its name and the app that posts it. A same-named check from another app does not count.
It reads these sources in order:
- A
json review-findingsblock from a trusted author. See The findings block. - The hosted Claude Code Review check. This check is named
Claude Code Reviewand comes from theclaudeapp. AI-Implement reads its severity line. A normal finding requests changes. No normal finding approves the pull request. - The repository’s own Claude workflow. This review check comes from
github-actions, with a name from the project’s review check names. AI-Implement also reads Claude’s inline comments on the pull-request head. A failed check is not a verdict.
- 🔴 — blocking.
- 🟡 — minor.
- 🟣 — ignored.
- No marker — minor.
Repository auto-fix
Use Claude Code Review, repository auto-fix when the repository runs its own workflow that fixes Claude’s review comments. Under Claude Code Review, AI-Implement and that workflow can both push fixes to one pull request, and each push starts another review. This process reads Claude’s verdict the same way as Claude Code Review. It changes who fixes. When Claude’s review of the newest commit is done, AI-Implement does this:
When AI-Implement waits for the auto-fix, it posts:
- Claude’s review check on that commit finished with
success. A skipped review check is not a review. - The other checks on that commit passed.
- Claude reported no 🔴 finding on that commit.
Switch a project to Claude Code Review
Switch a project to Claude Code Review when you want Claude to review its pull requests instead of AI-Implement’s built-in reviewers. Test the change on one pull request before you rely on it.1
Switch the project to the Restate lifecycle
A review that posts findings after the run hands them to the Restate fix coordinator. A Restate workflow then owns the fix run with a deadline, so the fix survives an orchestrator restart. Claude Code Review was built and tested on this path.Open the project drawer in the project settings. Set Review-fix & Planning Lifecycle to Restate (pilot), then save.The save is refused unless all of these hold:
- The execution mode is GitHub Actions.
- The Restate endpoint is healthy and registered.
- The project’s workflow file is current.
- No run started by an older orchestrator version is still in flight.
reviewFixLifecycle.2
Check the prerequisites
Confirm these before you switch:
- The project settings show a Review process select. If they do not, update AI-Implement.
- The runner image is built from
testingon or after 2026-10-11. An earlier image does not post the approval message for a review that passes after the run ends. - The repository runs a Claude review workflow that:
- runs on the pull request as a GitHub Actions job, so its check run comes from
github-actions - posts inline comments as
claude[bot], which needs the Claude GitHub App - uses a check name AI-Implement recognizes — a default review check name, or one you set in
reviewCheckNames
- runs on the pull request as a GitHub Actions job, so its check run comes from
- Alternatively, the repository posts the hosted Claude Code Review check. See Claude Code Review verdict.
3
Set the Review process to Claude Code Review
Open the project drawer in the project settings. Set Review process to Claude Code Review, then save.Under Claude Code Review, an empty internal-reviewer selection does not stop the run.
4
Add Trusted Review Authors (optional)
Add extra comment authors in Trusted Review Authors. Add an author here when a workflow posts its verdict as a login other than
claude[bot] or claude.5
Test on one pull request
Add the pickup label to one small issue. AI-Implement opens a pull request and runs the review.Watch the pull request for the review result. AI-Implement posts one of these comments.The review passed in time:Let the pull request merge.A 🔴 comment blocked the review:AI-Implement pushes a fix, then reviews again. Wait for the next result.Claude took longer than the run’s wait:AI-Implement then rechecks the pull request once a minute for up to 30 minutes. When the review passes on the same commit with no open blocking finding, it posts:Wait for this message, then let the pull request merge.
6
Switch back, if needed
To return to AI-Implement’s own reviewers, set Review process to AI-Implement in the project settings, then save.This does not change the lifecycle. The project stays on the lifecycle you selected.
Which findings gate the merge
Merge gating depends on where a finding comes from:
AI-Implement splits the two kinds in the pull-request comment. Gating findings go under “Unresolved external review findings:”. Advisory findings go under “Advisory external review findings (do not block merge):”.
Build your own reviewer
A reviewer has two obligations:- Post the comment from a workflow step, not from the model’s own comment tool.
- Fail the check when there is no valid verdict. Never post a partial or synthetic block.
1
Produce the verdict JSON
Build the
{"schema":"review-findings/v1","verdict":...,"findings":[...]} object as one line of valid JSON. An empty result is still a findings: [] block, not a missing one.2
Render the comment
Write the human-readable body, then append the fenced block with the info string
json review-findings.3
Post the comment
Post it with
gh pr comment from the workflow step.BuildDownAI/AI-Implement. It ships a reusable composite action at .github/actions/claude-review that does this for Claude.
The action takes these inputs:
github_tokenandpr_number— required.- One of
claude_code_oauth_token,anthropic_api_key,use_bedrock, oruse_vertex. prompt_extra— optional.
Turn off the wait
SetreviewProviders: [] in .ai-implement/config.yml to skip the wait — see reviewProviders.