CodePanel

LGTM

LGTM means "looks good to me": a reviewer's sign-off that a pull request can merge as it is, written in a comment or with an approving review.

Updated Also: looks good to me

"LGTM with nits" approves the change and leaves a few optional nits for the author to take or leave. Either way it is a person's judgment, and in a comment a coding agent can't do much with it: the word changes no check, doesn't say which commit was read, and doesn't tell the agent whether anything is left to do. CodePanel ignores it too. A comment that says lgtm is not a command, so nothing happens.

What an LGTM looks like from a reviewer agent

CodePanel never approves a pull request on GitHub. A clean round says the same thing in three places, each one readable without parsing prose:

  • The review comment reads 0 open and Verdict: ready, and has "No open findings." where a review with findings has its instructions and rating block.
  • The response from get_review, GET /api/v1/review or codepanel review --json has gate.blocking: false, payload.verdict: "ready", and a payload.nextAction of done with the reason "nothing blocks and no finding is open".
  • The CodePanel commit status turns to success with the description "Every finding is fixed or answered".

Here is a real one from CodePanel's own repository: PR 149, on 16 October 2026, which rewrapped one comment in tools/eval/benchmark.ts. The verdict-memory note and the footer are left out.

## CodePanel review · round 1
0 open
Reviewed the whole PR at `8696904`. Line numbers refer to `8696904`.
Written by: Claude Opus 5.5, from commit trailers in 1 of 1 commits read.
Verdict: ready · machine-readable: `GET /api/v1/review?repo=Code-Panel-AI/codepanel&pr=149`, MCP `get_review` or `codepanel review --json`

> Comment-only rewrap of the keys paragraph in the header of tools/eval/benchmark.ts. No code is touched, and the wording is unchanged and fits the column limit. Nothing here needs fixing.

No open findings.

"Written by" names the model that wrote the commits, read from their trailers. The panel that reviewed them was three reviewers on Claude Haiku 5.5 with Claude Sonnet 5.5 as the orchestrator, and the round cost $0.03. The status went from pending ("Reviewing this commit") to success 20 seconds later. With auto-merge on, GitHub merged it as soon as CI passed too, 34 seconds after the CodePanel status. Nobody approved it, and none was needed: the repository requires checks, not an approving review.

What a clean round does not mean

  • It covers one commit. A push CodePanel reviews waits 60 seconds first, and the new commit has no status until then, so a required check waits rather than inheriting the old pass. A push it does not review is judged on the findings the pull request already has; with none unanswered, the status reads "This commit was not reviewed; nothing earlier is unanswered", or, past the round limit, "Not reviewed: round limit reached; answered state carried from , nothing is unanswered".
  • ready is not "nothing to do". The verdict counts critical and warning findings only. A round with open suggestions still reads ready, the agent's version of "LGTM with nits", and nextAction stays rate until each one is rated.
  • It is not proof the change is correct. It means no finding the panel reported is still open after the orchestrator's check. How often each model misses a known bug is what the benchmark measures.

Acting on it

An agent that reads nextAction done stops: there is nothing to fix, rate or wait for. With CodePanel as a required check and auto-merge on, the pull request merges once that status and the other required checks pass, with no person in between. At the default gate that can happen before done, because open suggestions, rated or not, don't hold the status. A failing status is the opposite signal, naming what still needs an answer; see blocking finding.

Making the status a required check is covered in merge gate, and the prompt that sets up the whole loop for a coding agent is in agent setup.