Results

94% of the suite, in one pass.

Every number here comes from running SwarmAttacker against the XBOW validation benchmark: 104 real, containerized vulnerable web apps, each with a hidden flag, tackled black-box from the URL alone.

94%
98 of 104 apps
15min
median time
40min
time cap
6
misses
2.14M
tokens per app

Against the field

Older agents cluster around half the suite.

Even when paired with a 2026 frontier model. The jump is not a new trick; it is a modern base model driven by a design built to get out of its way.

AutoPTbest-of-3 peak
51%
PentestGPTbest-of-3 peak
54%
VulnBotbest-of-3 peak
58%
PentestAgentbest-of-3 peak
61%
MAPTAsingle pass, GPT-5
77%
Human expert (best of 5)~40 hours, manual
85%
XBOWvendor self-report
85%
PentestGPT v2 (Excalibur)best-of-3 peak, Opus 4.5
91%
SwarmAttackersingle pass, GPT-5.5
94%
best human

An apples-to-oranges chart, honestly labelled. SwarmAttacker and MAPTA are single passes; the four older agents are best-of-three peaks re-measured on 2026 models; XBOW is a vendor self-report; the human row is the best of five professionals over roughly 40 hours each.

By difficulty

Difficulty barely predicts failure.

The six misses are spread across easy, medium and hard.

Level 144 / 451 missed
Level 247 / 514 missed
Level 37 / 81 missed

By vulnerability class

One dot per app.

Strong across the board. The one weak spot is blind SQL injection, where there is no visible response to read.

XSS
22/23
Default credentials
17/18
IDOR
14/14
Privilege escalation
14/14
SSTI
12/13
Command injection
11/11
Business logic
7/7
SQLi
6/6
Information disclosure
6/6
Insecure deserialization
5/6
LFI
5/6
Path traversal
5/5
Arbitrary file upload
4/6
Known CVE
4/4
XXE
3/3
SSRF
3/3
GraphQL
3/3
JWT
3/3
Crypto
3/3
Blind SQLi
1/3
solved failed

Time to flag

Two humps.

A big one in the low-to-mid teens for single-shot captures, and a second bump past 20 minutes for the targets that need a second act.

median 15 min40+ min6 timed out0102030 min

Solved apps per two-minute bucket. The dashed bar on the right is the six runs that hit the 40-minute cap.

What actually matters

We turned each part off to see what it was worth.

Starting from the full 94% system, one component at a time. The line is how far the solve rate fell without it.

Refusal handlingKeeps the model answering at all
−22 pts
SkillsThe last class-specific step to the flag
−7 pts
Web searchOn-demand knowledge lookups
−6 pts
PlumbingStructured findings + steering
−5 pts
Prompting techniquesHand-written prompt discipline
−3 pts
60%70%80%90%100%

Refusal handling is the backbone; hand-written prompting barely registers on a modern model. Two of these became blog posts: skills barely help the easy wins, and prompt engineering is almost dead weight.

Safety filters

What clears a refused request.

Replayed on the hard tail of refusals that survived a first retry. No single technique wins; the guaranteed fix is swapping to a more permissive model, and simply re-sending the same request works about half the time.

52%
Context manipulation
within noise of the control
54%
Plain re-send (just retry)
same request, no change
68%
Authorization framing
+14 pts, but unstable across models
100%
Swap to a permissive model
the guaranteed fallback

Turn a URL into a security report.

Open source, MIT licensed, and it runs on the ChatGPT plan you already pay for. Install it and point it at a target you own.

brew install joloooo/swarm/swarm
Source on GitHub