A dev's best friend.
PullPuppy reviews your GitHub pull requests the way a careful colleague would. It reads the code around the change, posts its findings as inline comments, and gives every pull request a verdict.
For organisations on GitHub.com. Reviews run on your own OpenAI API key.
It reads more than the diff
Every review runs in a full checkout of your repository at the pull request's latest commit, inside a sandbox with no network. Before it reports a problem it goes and checks: the callers, the types, the tests, the configuration, and your own AGENTS.md and CLAUDE.md.
A coverage check then confirms that every changed hunk was read and that callers of changed exports were searched. If they were not, the review is sent back for another pass before anything is posted.
It looks for what breaks: correctness first, then security, data and migrations, API contracts, performance and tests. What your linters and CI already catch, it leaves to them.
One problem, one thread
- Findings keep their identity across pushes. A problem still there on the next commit stays in the same thread instead of turning into a new comment.
- Fixed means resolved. When you fix something, it resolves its own thread and lists the fix, with the evidence, in its next review.
- People have the last word. A thread someone on your team resolved stays resolved.
- Unsure is said out loud. A serious problem it cannot confirm is posted as needing verification: you see it, and it does not block the merge.
- Later pushes are reviewed incrementally.
@pullpuppy full reviewlooks at the whole pull request again.
You decide how much it can do
Rules set the mode for each repository and base branch. Most teams start with comments only and move up once they trust the findings.
- OffNothing is reviewed.
- CommentInline findings, no verdict. The place to start.
- Request changesRequests changes for blocking findings, and approves once none are open.
- GateAdds a required check, pullpuppy, so the verdict can hold back a merge.
An approval from PullPuppy is a real GitHub approval and counts toward a branch's required approvals. A rule can turn approving off.
The verdict is not up to the model
The model returns findings. PullPuppy decides whether to approve, from those findings and your rule. Nothing written in a pull request, whether in its description, its comments or its code, can tell it to approve.
A review that failed or timed out never approves. Neither does one that had to leave files out because the change was too large; it lists the files it skipped instead.
Talk to it in the pull request
Start a comment with @pullpuppy. Only people with write access to the repository can give commands.
@pullpuppy review- Review the latest commit now.
@pullpuppy full review- Review the whole pull request again.
@pullpuppy resolve- Clear every open finding and resolve its thread.
@pullpuppy approve- Resolve everything, then approve, where the rule allows approving.
@pullpuppy skip [reason]- In gate mode, pass the check for this commit and record why.
@pullpuppy pause- Stop automatic reviews on this pull request; resume restarts them.
@pullpuppy help- List the commands and the rule that applies.
Getting started
- Sign in with GitHub. There is no password to create.
- Install the App and choose repositories. We suggest Only select repositories. Installing on its own reviews nothing: each chosen repository gets a rule in comment mode, which you can change or remove.
- Add your OpenAI API key.
- Push to an open pull request, or comment
@pullpuppy reviewon one.
What it does not do
- It never changes code: no commits, no branches, no edited files.
- It does not install your dependencies or run your tests. That stays with your CI.
- It reviews pull requests on GitHub.com only, not GitHub Enterprise Server, GitLab or Bitbucket, and not pull requests from forks.
A zero total now reaches
charge()charge()throws for amounts below the card minimum (payments/gateway.ts:88), so every free order now fails at checkout.if (total > 0) {