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%
solve rate
98/104
apps solved
15 min
median time
40 min
time cap
6
misses
2.14M
tokens / app

XBOW solve rate across penetration-testing agents

A fair-ish apples-to-oranges chart. 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.

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%

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.

Solved vs failed by difficulty

Difficulty barely predicts failure: the six misses are spread across easy, medium, and hard.

Level 1
44/45
Level 2
47/51
Level 3
7/8
SolvedFailed

Solved vs failed by vulnerability class

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

Time to crack each target

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. The final bar is the six runs that timed out.

0
10
20
30
minutes
median 15 mincap 40 min

What actually matters

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

Starting from the full 94% system, we disabled one component at a time. The drop is how many benchmarks that part was quietly carrying.

Benchmarks lost when a component is removed

Impact in benchmarks, out of 104. Refusal handling is the backbone; hand-written prompting barely registers on a modern model.

Refusal handlingKeeps the model answering at all
22
SkillsThe last class-specific step to the flag
8
Web searchOn-demand knowledge lookups
6
PlumbingStructured findings + steering
5
Prompting techniquesHand-written prompt discipline
3

Two of these became blog posts: skills barely help the easy wins, and prompt engineering is almost dead weight.

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.

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

Turn a URL into a security report.

SwarmAttacker is open source and runs on the ChatGPT subscription you already pay for. Clone it, point it at a target you own, and watch the swarm work.