20 coordinated disclosures β€” and the hound’s still sniffing

Your code has bugs.
We brought a bloodhound.

Sortie is an autonomous security researcher that reads your code the way an attacker does β€” chasing auth bypasses, race conditions, and logic flaws that Semgrep can’t even spell.

no code leaves your infra Β· bring your own LLM Β· agent-agnostic

sortie β€” live tail
➜ ~/app npx runsortie watch --repo ./api
β—† harness online Β· model claude-fable-5 Β· 4 agents dispatched
scanning auth/ Β· billing/ Β· webhooks/ Β· 1,204 files
⚠ HIGH webhooks/stripe.ts:88 β€” signature check runs after the DB write
⚠ CRIT auth/session.ts:212 β€” tenant id trusted from client JWT claim
2 findings confirmed Β· reproductions attached Β· pinging #security β–‹
Wall of bugs

Receipts, not promises.

Real findings, real vendors, coordinated disclosure. Names you know, bugs their scanners missed, patched after we came knocking.

πŸ”‘Medium

Mozilla

Taskcluster OAuth2 codes were replayable β€” the handler checked the wrong expiry column

bounty Β· disclosed
🎯Medium

GitLab

Authorization bypass in an AI feature (details under coordinated disclosure)

bounty Β· resolved
πŸ”“Critical

Home Assistant

Pre-auth backup upload wrote files to disk as root

cve Β· fixed
πŸ”ŒHigh

Elastic

Improper access control across the tenant boundary

reported Β· triaging
πŸ—οΈHigh

n8n

Cross-tenant credential takeover via workflow sharing

cve Β· fixed
+15

more disclosures

since May 2026

want yours on here? β†’

20 coordinated disclosures across the sv-agent research team since May 2026. Found by the harness, reviewed and filed by a human β€” every one shown here is cleared for disclosure.

How it works

Four moves. Zero babysitting.

Point it at a repo and walk away. Sortie runs the loop a human researcher runs β€” just without the coffee breaks.

  1. πŸ“¦
    01

    Install

    One command drops Sortie into your repo or CI. No agents to babysit, no code shipped off-box.

  2. πŸ‘€
    02

    Watch

    Sortie tails your diffs and crawls the whole tree on a schedule β€” auth, billing, webhooks, the scary parts first.

  3. 🧠
    03

    Reason

    It models what each path is meant to do, finds where that promise breaks β€” then makes a second, independent model try to refute the bug before you ever see it.

  4. πŸ””
    04

    Alert

    Only findings that survive the challenge β€” with a written repro and severity β€” land in Slack, a PR comment, or your tracker.

zsh β€” ~/app
➜ ~/app npx runsortie init
βœ” detected agent Claude Code
βœ” using $ANTHROPIC_API_KEY (your key, your bill)
βœ” wrote .sortie/config.yml
? What should the bloodhound sniff?
❯ auth & sessions
multi-tenant isolation
payment & webhook flows
β—† sortie armed. runsortie watch to fly. β–‹
Why it's different

Scanners find patterns.
Sortie finds logic.

A regex has never understood what your code is trying to do. That gap is exactly where the interesting bugs live.

πŸ”¦

Your average SAST scanner

  • βœ•Matches known patterns and tainted sinks
  • βœ•Drowns you in low-signal noise
  • βœ•Blind to intent and business logic
  • βœ•One vendor's model, take it or leave it
  • βœ•Ships your code to their cloud
πŸͺ‚

Sortie

  • βœ“Reasons about what the code is meant to do
  • βœ“Confirmed findings with written repros
  • βœ“Catches auth bypasses & race conditions
  • βœ“Bring your own LLM β€” swap anytime
  • βœ“Runs on your infra, code stays home
🧠

Logic, not patterns

SAST finds the bugs that look like bugs. Sortie finds the ones that look like working code β€” until an attacker holds them the wrong way.

πŸ”‘

Bring your own LLM

Anthropic, OpenAI, Google, or a model you host yourself. Your keys, your bill, your data boundary. No lock-in, no markup.

πŸ”Œ

Agent-agnostic

Already run Claude Code, Codex, or Cursor? Sortie rides on top of the harness you've got instead of forcing a new one.

πŸ—οΈ

Runs on your infra

Deploy it in your CI, your cloud, your laptop. Nothing phones home. The only thing that leaves is a bug report you asked for.

Rides on the harness you already run

Claude CodeCodexCursorGemini CLIBedrock (bare model)AzureClaude CodeCodexCursorGemini CLIBedrock (bare model)Azure

GitHub Copilot & Kiro landing next Β· never rides your subscription token

Install

From zero to first
finding in one command.

No dashboard to configure, no source to upload, no sales call to unlock the trial. Copy, paste, watch it work.

  • πŸ”‘Uses your own LLM keys β€” nothing to provision
  • πŸ—οΈRuns local, in CI, or in your cloud
  • πŸ”ŒAuto-detects your existing coding agent
$npx runsortie initcopy ⌘C
sortie β€” install
➜ ~/app npm i -g runsortie
added 1 package in 2.1s
➜ ~/app runsortie init
πŸͺ‚ welcome, pilot.
βœ” detected Cursor + Claude Code
βœ” keys found Β· never leave this box
βœ” baseline crawl scheduled Β· nightly 02:00
➜ ~/app runsortie watch
β—† bloodhound off the leash β–‹
Pricing

Free pilot. Real bugs. Then we talk.

We don’t sell you a scanner and hope. We run a free pilot against your codebase, and only start a pricing conversation if we surface something worth paying for.

πŸͺ‚ request a pilot

If we find something real,
you’ll know it was worth it.

45 days. One repo. Your infra. A written report of exactly what a motivated attacker would find first β€” before they do.

  1. 01

    We deploy a sortie

    Point us at one repo. Sortie flies against it for 45 days on your infra, with your keys.

  2. 02

    We find something real

    Or we don't β€” and you've spent nothing. If the watch doesn't surface a finding you agree matters, there's nothing to buy.

  3. 03

    Then we talk pricing

    License the harness per deployment β€” not per seat, per scan, or per finding. Only once there's proof it works.

FAQ

Questions a smart skeptic asks.

The honest answers. If yours isn’t here, the pilot will answer it faster than we can.

It's the skills, detectors, threat model, and review gates your coding agent runs through. Sortie doesn't ship its own AI β€” it drives the agent you already license (Claude Code, Codex, Cursor, Gemini, or a bare model on Bedrock), pointing that reasoning at your repo on a schedule and keeping the notes in-repo as reviewable markdown.

No. Sortie runs on your infrastructure, against your repos, using your own LLM keys. There's no Sortie server in the data path β€” code and inference both stay in your cloud. Every engine runs read-only and sandboxed. The only thing that leaves is a bug report you asked for.

Bring your own. Anthropic, OpenAI, Google, or a model behind AWS Bedrock or Azure with your own IAM role. Sortie is model-agnostic and never rides a subscription token β€” it uses the keys and seats you already pay for, and you can swap engines anytime.

No. Scanners match patterns β€” known sinks, tainted sources, regexes for secrets. Sortie reasons about intent, then makes a second, independent model try to refute every finding before it reaches you. That adversarial challenge is why what lands is an authorization or logic bug that actually breaches you β€” not a wall of noise.

Found by the harness, reviewed and filed by a human. Sortie surfaces and reproduces the finding; a person confirms it, scopes it, and decides what ships. You stay in the loop β€” you just skip the part where a bug sits undiscovered for six months.