• Agents
  • Docs
  • Pricing
  • Blog
Log in
Get started

Security for apps built with AI. Paste a URL, get a report, fix what matters.

Product

  • How it works
  • What we find
  • Pricing
  • Agents
  • MCP Server
  • CLI
  • GitHub Action

Resources

  • Blog
  • Docs
  • FAQ
  • Glossary

Security

  • Supabase Security
  • Next.js Security
  • Lovable Security
  • Cursor Security
  • Bolt Security

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Imprint
© 2026 Flowpatrol. All rights reserved.
GitHub Action

Security checks
on every PR.

Add one workflow file. Every pull request gets scanned. Critical findings block the merge. Your team ships with confidence.

View on MarketplaceRead the docs
.github/workflows/security.yml
- uses: flowpatrol/scan-action@v1
  with:
    target-url: https://staging.myapp.com
    api-key: ${{ secrets.FLOWPATROL_API_KEY }}

Four lines. That's all it takes.

How it works

Push. Scan. Ship.
Every time.

1

PR opens

Developer pushes code. Your preview deploy goes live on Vercel, Netlify, or Railway.

Triggers on push
2

Action scans

Flowpatrol tests the live preview URL for real vulnerabilities. Auth flows, access control, exposed data.

Full DAST scan
3

Results appear

Findings posted as a PR comment with severity, evidence, and fixes. SARIF uploaded to Code Scanning.

Inline feedback
PR Comment

Findings right
where you review code.

Flowpatrol Security Scanbot
1
Critical
2
High
1
Medium
0
Low
Critical
IDOR on /api/users/:id — any authenticated user can read other profiles
Endpoint: GET /api/users/42
CWE: CWE-639: Authorization Bypass Through User-Controlled Key
Evidence: Requested /api/users/42 while authenticated as user 7. Got 200 with full profile data.
Fix: Add ownership check: verify req.user.id === params.id before returning user data.
View full report on Flowpatrol

Every finding includes the endpoint, evidence, CWE code, and a concrete fix.

Features

Built for real
CI workflows.

Severity gating

Set fail-on: high and PRs with high or critical findings get blocked. Your team decides the threshold.

SARIF output

Findings show up in GitHub's Security tab alongside CodeQL and Dependabot. One place for everything.

Smart comments

Updates the existing PR comment on each push instead of posting a new one. No noise, always current.

Scan modes

quick scans headers only. standard runs the full test. deep goes aggressive with chained attacks.

Credit-aware

Checks your balance before scanning. Clear error message if credits are low. No surprise failures.

Configurable timeout

Default 15 minutes. Bump it up for deep scans on larger apps. The action waits and streams progress.

Configuration

Full config.
Every option documented.

.github/workflows/security.yml
name: Security Scan
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - name: Flowpatrol Security Scan
        uses: flowpatrol/scan-action@v1
        with:
          # Required
          target-url: ${{ env.PREVIEW_URL }}
          api-key: ${{ secrets.FLOWPATROL_API_KEY }}

          # Scan mode: quick | standard | deep
          mode: standard

          # Block the PR if findings meet this severity
          # Options: critical | high | medium | low | none
          fail-on: high

          # Post findings as a PR comment (default: true)
          comment: true

          # Upload SARIF to GitHub Code Scanning (default: true)
          sarif: true

          # Max scan duration in minutes (default: 15)
          timeout: 15

Most teams only need target-url and api-key. Everything else has sensible defaults.

Outputs

Use the results
in downstream steps.

OutputTypeDescription
scan-idstringUnique scan identifier for the Flowpatrol dashboard
statusstringScan result: passed, failed, or error
critical-countnumberNumber of critical findings
high-countnumberNumber of high findings
medium-countnumberNumber of medium findings
low-countnumberNumber of low findings
report-urlstringDirect link to the full report on Flowpatrol

Example: Post to Slack when a scan fails

workflow.yml
- name: Flowpatrol Scan
  id: scan
  uses: flowpatrol/scan-action@v1
  with:
    target-url: ${{ env.PREVIEW_URL }}
    api-key: ${{ secrets.FLOWPATROL_API_KEY }}

- name: Post to Slack on failure
  if: steps.scan.outputs.status == 'failed'
  run: |
    curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
      -d '{"text": "Security scan failed: ${{ steps.scan.outputs.critical-count }} critical, ${{ steps.scan.outputs.high-count }} high. ${{ steps.scan.outputs.report-url }}"}'

Add security to your CI
in under a minute.

One workflow file. Every PR scanned. Your team ships faster because they ship with confidence.

.github/workflows/security.yml
- uses: flowpatrol/scan-action@v1
  with:
    target-url: https://staging.myapp.com
    api-key: ${{ secrets.FLOWPATROL_API_KEY }}
View on MarketplaceRead the docs