Quick answer
Install the Nori GitHub app, then @mention the agent in a pull request comment or review comment. Nori starts a cloud machine with the PR branch checked out. The agent reads the diff and the discussion, answers the question or makes the change, runs the tests, pushes a commit to the same branch and replies on the PR. Every later mention on that pull request continues the same conversation, so the agent remembers what was already decided.
How it works
Review comments are small, specific and tied to a line of code. That makes them good agent tasks. The slow part for a person is switching branches, rebuilding and finding the context again. A machine that already has the branch checked out skips that.
- A reviewer or the author writes a comment on the pull request that mentions the agent, for example
@nori please handle the empty list case here. - GitHub delivers the comment to Nori. Nori checks that the person is a member of your organization who is allowed to start sessions.
- Nori starts an isolated cloud machine with the repository cloned, the PR branch checked out and the team's skillset installed.
- The agent reads the diff, the comment, the file and line it was left on, and the earlier discussion on the pull request.
- If the comment is a question, the agent answers on the PR. If it is a change request, the agent edits the code, runs the relevant tests and pushes a commit to the PR branch.
- The agent replies under the comment with what it did and the commit it pushed, so the reviewer can resolve the thread.
- The next mention on the same pull request goes to the same conversation. The agent keeps the history of what was asked, what it changed and why.
It works on pull requests the agent opened and on pull requests a person opened. The author does not have to be the one who asks.
One conversation per pull request
A pull request is a single piece of work, so Nori treats it as a single conversation. Three things follow from that.
- Decisions are remembered. If a reviewer said on Monday to keep the public function signature unchanged, the agent still knows that on Wednesday when someone else asks for a refactor.
- People can join from anywhere. If the pull request started from a Slack thread, the PR comments and the thread are the same conversation. A reviewer can comment on GitHub while the requester answers a question in Slack. The session is also open in the web app for anyone who wants to read the transcript.
- Parallel pull requests do not collide. Each PR has its own machine and its own checkout. Ten open pull requests can each receive review fixes at the same time.
The agent also carries team context that is not on the pull request: the organization's AGENTS.md or CLAUDE.md, its skills, and shared memories such as which test target covers which package.
Worked example: three review comments on one PR
A pull request adds retry logic to a payments webhook handler. The reviewer leaves three comments over an afternoon. The names and numbers below are illustrative.
PR #764 Add retries to the payments webhook handler
sam-reviewer commented on handlers/payments.py line 88
@nori this retries on every exception. A 400 from the provider will never
succeed. Only retry on timeouts and 5xx.
nori replied
Done in 3f2a9c1. retry_on is now (TimeoutError, ProviderServerError).
Added tests/handlers/test_payments.py::test_no_retry_on_client_error.
41 handler tests pass.
sam-reviewer commented on handlers/payments.py line 102
@nori why sleep 2 ** attempt with no cap?
nori replied
No good reason. With max_attempts = 8 the last wait would be 128 seconds,
which is longer than the provider's 60 second delivery timeout. I can cap
the wait at 30 seconds and add jitter. Want that in this PR?
sam-reviewer replied
Yes, and keep max_attempts configurable.
nori replied
Done in 8c41d07. Wait is min(30, 2 ** attempt) plus up to 1 second of
jitter. max_attempts reads PAYMENTS_WEBHOOK_MAX_ATTEMPTS, default 5.
Updated docs/webhooks.md.
sam-reviewer commented
@nori CI is red on lint.
nori replied
Fixed in b7e0e55: unused import left over from the first change.
All checks are green.
What to notice:
- The first comment was a change request. The agent changed the code, added a test and named the commit.
- The second was a question. The agent answered with the reasoning and proposed a change instead of pushing one unasked.
- The follow-up relied on the earlier exchange. The agent did not need the retry rules restated.
- The third was a CI failure. The agent read the failing check, fixed the cause and confirmed the result.
- Every commit landed on the PR branch, where the reviewer can read each diff before approving.
What to ask for in a comment
| Comment | What the agent does |
|---|---|
@nori rename this to parse_region and update the callers | Makes the change across the repository, runs tests, pushes one commit |
@nori why does this query need DISTINCT? | Explains, with the rows that would otherwise repeat; pushes nothing |
@nori add a test for the timezone edge case | Writes the test, runs it, reports whether it passed before any fix |
@nori CI is failing | Reads the failing job's log, fixes the cause, pushes and confirms |
@nori rebase on main and resolve conflicts | Rebases the branch, resolves conflicts, reruns tests, pushes |
@nori address the open review comments | Works through each unresolved thread and replies under each one |
Comments without a mention are left alone. People can discuss the pull request among themselves, and the agent only acts when it is addressed.
Permissions and review
- GitHub app scope. The Nori GitHub app is installed on the repositories you select. The agent cannot see or push to anything else.
- Branch protection still applies. The agent pushes to the PR branch. Required reviews, required checks and merge rules are enforced by GitHub as usual.
- Members only. Mentions from people outside your Nori organization do not start sessions. This matters on public repositories.
- Attribution. People can link their GitHub account so the work the agent does at their request is tied to them in the session history.
- Your model account. Sessions use the Claude or ChatGPT subscription, API keys or LLM gateway you connected. Nori never charges for tokens, so a long review does not add to the Nori bill.
The same GitHub connection serves the other ways in. A Slack mention can open the pull request in the first place (AI coding agent for Slack), a ticket can (Linear tickets to pull requests), and so can a schedule or a webhook (scheduled coding agents). In every case, review comments on the resulting PR go back to the agent that wrote it.
Which agent answers
By default the reply comes from Jiro, Nori's ready-to-work engineering teammate. You can also route PR comments to Claude Code, Codex, Gemini CLI or any ACP agent, or to a custom agent your team defined with its own skillset and model. A common setup is one custom agent for application code and another, with stricter instructions, for infrastructure repositories.
Enterprises that need review traffic to stay inside their own network can deploy the full Nori stack, control plane included, into their AWS VPC or Azure VNet with their identity provider.
Frequently asked questions
How do I get an AI agent to respond to pull request comments?
Install the Nori GitHub app on your repositories and mention the agent in a PR comment or review comment. Nori starts a cloud machine on the PR branch. The agent reads the diff and discussion, then replies or pushes a fix to the same branch.
Does the agent push to my branch or open a new pull request?
It pushes commits to the branch of the pull request it was mentioned on, so the fix appears in the same review. Each reply names the commit. Branch protection and required reviews still decide what can merge.
Does it work on pull requests written by people?
Yes. The agent can be mentioned on any pull request in a repository where the Nori GitHub app is installed. It does not need to have opened the PR, and the person who asks does not need to be the author.
Will the agent reply to every comment on the PR?
No. It acts only on comments that mention it. Reviewers can discuss the change among themselves without triggering a session. You can ask it to address all open review comments in one mention when you want a full pass.
Can the agent fix a failing CI check?
Yes. Mention it with a note that CI is failing. It reads the log of the failing job, reproduces the failure on its machine where possible, pushes a fix and confirms the new status in its reply.
Is it safe on public repositories?
Mentions start sessions only when they come from members of your Nori organization. A comment from an outside contributor that mentions the agent is ignored. The agent's access is limited to the repositories where you installed the GitHub app.