Read and request reviews on a pull request changedcode-review-pull-requests
Nearest release: v2.1.305, published under an hour after upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 20 Oct 2026 19:19 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 20 Oct 2026 19:37 UTC.
Upstream edited
Recorded here
Lines+14added
Lines−6removed
From line
51
where the diff opens
First seen
15 Oct 2026
this site's first read of the page
Recorded edits5to this page, all time
The whole hunk
from line 51, old and new numbered
/
from line 51
5151
5252### Read the result from a script
5353
54To gate a merge or post a summary from your own CI, parse the last line of the Details text with `gh` and jq. That line is a machine-readable comment.
54To gate a merge or post a summary from your own CI, parse the last line of the Details text with `gh` and jq. That line is an HTML comment that holds the severity counts as JSON:
5555
56```text theme={null}
57<!-- bughunter-severity: {"nit":1,"normal":2,"pre_existing":0} -->
58```
59
60The lines above it can include file names from the pull request. If you parse the text your own way, take the counts from the last line only, as the command in these steps does.
61
5662**1. Find the check run ID**
5763
5864From your shell, list the commit's check runs and take the `id` of the `Claude Code Review` run. Replace `OWNER` and `REPO` with your repository owner and name, and `<commit-sha>` with the pull request's head commit:
from line 69
6369
6470**2. Read the severity counts**
6571
66Read the counts from that check run, replacing `CHECK_RUN_ID` with the ID:
72Read the counts from the check run's `output.text` field, which holds the Details text. Replace `CHECK_RUN_ID` with the ID:
6773
6874```bash theme={null}
69gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \
70 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'
75gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq '
76 (.output.text | split("\n") | last
77 | scan("^<!-- bughunter-severity: (.*) -->$")[0] | fromjson)?
78 // error("no severity line")'
7179```
7280
7381This prints a JSON object with a count per severity and its keys in alphabetical order, for example `{"nit": 1, "normal": 2, "pre_existing": 0}`. The counts include findings from earlier reviews of the pull request whose threads are still open.
from line 84
7684
7785Have your script handle these cases:
7886
79* **`normal` is above zero**: fail the job if you want to gate the merge. The `normal` key holds the count of Important findings, so Claude found at least one bug worth fixing before merge.
80* **The line is missing**: treat it as no verdict rather than as zero findings. A check run for a review that failed, timed out, was canceled, or was superseded by a newer one has no such line, and some completed reviews have none either.
87* **`normal` is above zero**: fail the job if you want to gate the merge. The `normal` key holds the count of Important findings, so Claude found at least one bug worth fixing before merge. To print only that count, add `| .normal` before the closing single quote.
88* **The line is missing**: the command prints an error that contains `no severity line` instead of counts, and exits with a non-zero status. Treat that as no verdict rather than as zero findings. A check run for a review that failed, timed out, was canceled, or was superseded by a newer one has no such line, and some completed reviews have none either.
8189
8290## Request a review
8391
No line in this hunk matches that.