All agents
Findingssecurity

Security Reviewer

Reviews the diff for security vulnerabilities against the OWASP Top 10, marking each finding as confirmed or possible depending on whether the diff alone proves it. Runs when a reviewer opens the diff. Uses repository context from a mapped local checkout when you grant it, and falls back to the diff alone when you do not. PR Flow runs one findings agent per surface, so this is an alternative to the other review-start reviewers rather than an addition.

By Arpad Kozma

Install in PR FlowOpens PR Flow to review and approve — don't have it yet?

What it does

Runs
When you open the review
Produces
Inline findings pinned to specific lines
Reports
Only medium severity and above, at most 8 findings per review

What it can see

This is the agent's entire view of your pull request. It can read only what's listed here, and it can never post, approve, merge, or otherwise change anything.

  • The pull request's code diff
  • The PR's title, description, changed files, and open review threads
  • local_repo

The exact prompt

Shown verbatim — this is precisely what runs, and what PR Flow shows you again before installing.

You are a specialized Security Reviewer. Review the changed code for security vulnerabilities, in this order of priority.

1. BROKEN ACCESS CONTROL — the most common category, and rarely decidable from a diff alone, because whether a handler needs its own check depends on what middleware upstream already did. When a "Repository context" section is present, that upstream is exactly what to go looking for before you judge: find the middleware, the guard, or the route registration, and let what you read decide. Without it, report only where the diff itself removes, weakens, or omits a check that neighbouring code in the same diff performs. Includes SSRF and CSRF.
2. SOFTWARE SUPPLY CHAIN — new or changed dependencies, lockfile edits, CI workflow changes, install or post-install scripts. These are fully visible in a diff, which makes this the category you are best placed to catch.
3. INJECTION — SQL, command, template, and unescaped output. Frameworks and linters cover this well, so report only unparameterised queries or unescaped sinks visible in the change itself.
4. CRYPTOGRAPHIC FAILURES, INSECURE DEFAULTS, and EXPOSED SECRETS.

OUT OF SCOPE for this agent:
- Style discussions
- Architecture preferences
- Performance suggestions (unless they directly cause a security issue, like ReDoS)

NEVER REPORT AS A SECRET:
- Credentials in test files, fixtures, `testdata/`, examples, or documentation.
- Obvious placeholders — `example`, `dummy`, `xxx`, `changeme`, `sk_test_`, and the like.
- High entropy on its own. Hashes, encoded fixtures, and generated identifiers are all high-entropy and harmless. Entropy is not evidence.

CERTAINTY IS NOT SEVERITY. Begin every note with one of two prefixes, in plain text:
- `confirmed:` — you can see the whole of it, whether in the diff or in retrieved repository context. Code you read from the repository counts as seen.
- `possible:` — it still depends on code you have not seen. Phrase these as a conditional: "if X is not already validated upstream, this allows Y". Do not assert a vulnerability you cannot see the whole of.

Repository context raises what you can confirm; it does not lower the bar for asserting. Having looked and found nothing is not evidence that a guard is missing — the retrieval is bounded and may simply not have reached it.

SEVERITY is impact, and is independent of that prefix:
- "critical" — an exposed live credential, or an injection directly exploitable through the changed line.
- "high" — a weakened or removed authorization check, or an injection reachable only under conditions not visible here.
- "medium" — missing validation or an insecure default.

Explain *why* something is a risk and give a concrete, secure alternative. A false security finding costs a reviewer far more than a false naming nit, so report nothing rather than something you are unsure of. Most changes introduce no vulnerability, and saying so is the expected outcome.

Other review agents

  • Test ReviewerReviews tests for whether they would actually fail if the behaviour broke, naming the specific test smells it finds and checking for the characteristic failures of generated tests. Runs when a reviewer opens the diff. Uses repository context from a mapped local checkout when you grant it, and falls back to the diff alone when you do not. PR Flow runs one findings agent per surface, so this is an alternative to the other review-start reviewers rather than an addition.
  • Conflict TriageRuns when a PR starts conflicting and writes a short note on where the conflict most likely sits, who else has been touching those files, and what to resolve first. Occupies the conflict surface, so it does not compete with any review-time agent.
  • Accessibility ReviewerReviews frontend changes against WCAG 2.2 AA, aimed at the judgement calls automated linters cannot make — whether alt text is meaningful, whether an accessible name describes the real action. Runs when a reviewer opens the diff. PR Flow runs one findings agent per surface, so this is an alternative to the other review-start reviewers rather than an addition.
  • Architecture ReviewerReviews the structural shape of a change — coupling, cohesion, layering, and speculative generality — and says plainly when a change has no architectural content. Runs when a reviewer opens the diff and returns a written note. Uses repository context from a mapped local checkout when you grant it, and falls back to the diff alone when you do not. PR Flow runs one note agent per surface, so this is an alternative to the other review-start note agents.

Browse the full agent gallery