# LGTM

URL: https://codepanel.ai/glossary/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.

"LGTM with nits" approves the change and leaves a few optional [nits](/glossary/nit) 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.

```text
## 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](/models/anthropic/claude-haiku-5-5) with [Claude Sonnet 5.5](/models/anthropic/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 <sha7>, 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](/benchmarks) 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](/glossary/blocking-finding).

Making the status a required check is covered in [merge gate](/docs/merge-gate), and the prompt that sets up the whole loop for a coding agent is in [agent setup](/docs/agent-setup).
