Swarmchasing Report a swarm

Rules

The indicator rules every analysis on this site and in the CLI runs, grouped by kind: rules version 2026-10-14.5. A record scoring 3 or more is suggestive, 6 or more significant. Each rule can test a URL in this page: it is decoded, never opened.

How a score adds up

Each rule counts once per record. Rules that read the same artifact share an independence group, which counts once, at the largest weight among its rules that fired; other rules add their weight. Context hits (relays, cache-busters, self-identification, headers, outcomes) together count at most 2, so context alone stays below suggestive: people use those services too (FM-4.11). A rule marked significant alone is enough for that tier by itself.

Rules marked links records join the records they match into one cluster, because only one operator would share that value. How each kind is read is in the methodology and the Field Manual (rule anatomy, tactics); how the rules score on the labelled set is on the evaluation page.

Filter rules

agent marker 26 rules

marker.uq_tags

+3model artifact
urlquery cache-busting / tracking tags seen in agent fleets

urlquery cache-busting / tracking tags seen in agent fleets

Weight
+3
Matches
param name
Group
run_tag counts once per record (FM-4.11)
Manual
FM-4.5
^(uqscan|uqtag|uq_tag|uq)$
Test a URL

Labelled set: 109 agent hits, no benign hits · precision 100% (hits per rule)

marker.test_tag

+3links recordsmodel artifact
Test tags agents add to URLs (with a run number)

Test tags agents add to URLs (with a run number)

Weight
+3
Matches
url
Group
run_tag counts once per record (FM-4.11)
Manual
FM-4.5
(^|[^a-z])(?P<m>(chatgpttest|agenttest)\d*)
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.probe_tag

+3model artifact
Fixed agent probe tag (tok=expt, archive_test=)

Fixed agent probe tag (tok=expt, archive_test=)

Weight
+3
Matches
url
Group
run_tag counts once per record (FM-4.11)
Manual
FM-4.5
tok=expt|archive_test=
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.oai_tag

+3model artifact
`zz=oai<digits>` request tag (Transluce, US/Canada government report)

`zz=oai<digits>` request tag (Transluce, US/Canada government report)

Weight
+3
Matches
url
Group
run_tag counts once per record (FM-4.11)
Manual
FM-4.5
[?&]zz=oai\d{6,}
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

marker.callback_seq

+3
Sequenced callback labels (headers0, body0-0, part1of3)

Sequenced callback labels (headers0, body0-0, part1of3)

Weight
+3
Matches
param value
Manual
FM-4.4
^(headers\d+|body\d+-\d+|chunk\d+|part\d+of\d+)$
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

marker.title_write

+2
Program writes its result into the page title

Program writes its result into the page title

Weight
+2
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
document\.title\s*=
Test a URL

Labelled set: 2 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

marker.md_url_wrapper

+1model artifact
URL wrapped in Markdown code, emphasis or autolink markup

URL wrapped in Markdown code, emphasis or autolink markup

Weight
+1
Matches
url
Group
markdown counts once per record (FM-4.11)
Manual
FM-4.5
(^|[=/(])(`|\*\*|<)https?://|^https?://[^\s()<>`]*(`|\*\*|\))$
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

marker.placeholder

+2model artifact
Unfilled template placeholder (YOUR_API_KEY, <your-token>, INSERT_ID_HERE, REPLACE_ME)

Unfilled template placeholder (YOUR_API_KEY, <your-token>, INSERT_ID_HERE, REPLACE_ME)

Weight
+2
Matches
url
Manual
FM-4.5
(?-i:\bYOUR_[A-Z0-9_]*(KEY|TOKEN|SECRET|ID|USERNAME|PASSWORD|DOMAIN|URL)\b|\bINSERT_[A-Z0-9_]+_HERE\b|\bREPLACE_ME\b|<(TARGET|HOST|DOMAIN|URL|IP|ID|TOKEN|API_KEY|USERNAME|PASSWORD)>)|<your[-_ ][a-z0-9_ -]{2,30}>|\[your[-_ ][a-z0-9_ -]{2,30}\]
Test a URL

Labelled set: 14 agent hits, no benign hits · precision 100% (hits per rule)

marker.template_unrendered

+1model artifact
Unrendered template variable ({{target}}, ${HOST})

Unrendered template variable ({{target}}, ${HOST})

Weight
+1
Matches
url
Manual
FM-4.5
\{\{\s*[a-z_][\w.]*\s*\}\}|\$\{\s*[a-z_][\w.]*\s*\}
Test a URL

Labelled set: 1 agent hit, 2 benign hits; too few to estimate precision (hits per rule)

marker.example_host_value

+1model artifact
Redirect or callback parameter left pointing at example.com (template default or redirect probe)

Redirect or callback parameter left pointing at example.com (template default or redirect probe)

Weight
+1
Matches
url
Manual
FM-4.5
[?&](redirect(_ur[il])?|redirect_to|return(_?to|_?url)?|next|continue|callback(_?url)?|dest(ination)?|goto|target)=((https?:)?//)?([a-z0-9-]+\.)*example\.(com|org|net)([/:?#&]|$)
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

marker.tool_call_markup

+4model artifact
Function-call wrapper markup or tool-call fields from a model's output

Function-call wrapper markup or tool-call fields from a model's output

Weight
+4
Matches
url
Group
tool_call counts once per record (FM-4.11)
Manual
FM-4.5
</?(tool_call|tool_use|function_calls|invoke|parameter)\b|<function=|<\|(im_start|im_end|tool_call|python_tag)\|>|"(tool_calls|function_call|tool_use)"\s*:
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.tool_call_json

+3model artifact
Tool-call JSON arguments inside a request ({"url": ..., "arguments": ...)

Tool-call JSON arguments inside a request ({"url": ..., "arguments": ...)

Weight
+3
Matches
url
Group
tool_call counts once per record (FM-4.11)
Manual
FM-4.5
\{\s*"(url|uri|href|link|command|cmd|tool|tool_name|function)"\s*:|"arguments"\s*:|\\"(url|query|q|arguments|command)\\"\s*:
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.json_quote_residue

+2model artifact
JSON or string quoting left around a URL or a URL parameter

JSON or string quoting left around a URL or a URL parameter

Weight
+2
Matches
url
Group
tool_call counts once per record (FM-4.11)
Manual
FM-4.5
^https?://[^\s"]+"\s*[,}\]]+\s*$|[?&][\w.-]+=["']https?://
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.mcp_call

+3model artifact
MCP JSON-RPC tool request ({"jsonrpc": "2.0", "method": "tools/call"}) inside a request

MCP JSON-RPC tool request ({"jsonrpc": "2.0", "method": "tools/call"}) inside a request

Weight
+3
Matches
url
Group
tool_call counts once per record (FM-4.11)
Manual
FM-4.5
"jsonrpc"\s*:\s*"2\.0"[^#]{0,300}?"method"\s*:\s*"(tools/(call|list)|resources/read|prompts/get)"|"method"\s*:\s*"(tools/(call|list)|resources/read|prompts/get)"[^#]{0,300}?"jsonrpc"\s*:\s*"2\.0"
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

marker.mcp_tool_name

+2model artifact
MCP tool name in agent-host form (mcp__server__tool) inside a request

MCP tool name in agent-host form (mcp__server__tool) inside a request

Weight
+2
Matches
url
Group
tool_call counts once per record (FM-4.11)
Manual
FM-4.5
\bmcp__[a-z0-9_-]+?__[a-z0-9_-]+
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

marker.agent_discovery

+1model artifact
Agent-discovery path (A2A agent card, bare /mcp or /sse endpoint)

Agent-discovery path (A2A agent card, bare /mcp or /sse endpoint)

Weight
+1
Matches
url
Manual
FM-4.5
/\.well-known/agent(-card)?\.json\b|^https?://[^/?#]+/(mcp|sse)/?([?#]|$)
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.escaped_newline

+1model artifact
Escaped newline (\n) from a model's string output left in the URL

Escaped newline (\n) from a model's string output left in the URL

Weight
+1
Matches
url
Manual
FM-4.5
\\n(\\n|[^a-z0-9_]|$)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

marker.truncated_output

+1model artifact
URL cut off mid escape or ending in an ellipsis (truncated model output)

URL cut off mid escape or ending in an ellipsis (truncated model output)

Weight
+1
Matches
url
Manual
FM-4.5
%[0-9a-f]$|\x{2026}$
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.chat_opener

+2model artifact
Chat reply opener ("Sure, here is", "Certainly!", "As an AI") before a URL in a parameter

Chat reply opener ("Sure, here is", "Certainly!", "As an AI") before a URL in a parameter

Weight
+2
Matches
url
Manual
FM-4.5
(^|[/=])["'`]?(sure[,!.]?[\s+]+here|certainly[!,.]|of[\s+]+course[!,.]|i['\x{2019}]ll[\s+]|i[\s+]+will[\s+]|here(['\x{2019}]s|[\s+]+(is|are))[\s+]+the[\s+]|as[\s+]+an[\s+]+ai\b)[^&#]{0,200}?(https?://|:[\s+]*$|:[\s+]*[\[{<`"'])
Test a URL

Labelled set: 4 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.doubled_scheme

+2model artifact
Doubled scheme (https://https://) in a request a model built

Doubled scheme (https://https://) in a request a model built

Weight
+2
Matches
url
Manual
FM-4.5
https?:/+https?(:/*|//)
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.garbled_scheme

+1model artifact
Garbled or defanged scheme (https//, hxxps://) in a request URL

Garbled or defanged scheme (https//, hxxps://) in a request URL

Weight
+1
Matches
url
Manual
FM-4.5
[?&][\w.-]+=https?//[a-z0-9]|(^|/|[?&](url|uri|u|target|link|src|source|page|href)=)hxxps?(://|\[:\]//)
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.impossible_date

+2model artifact
Impossible calendar date (2026-02-30, 2026-13-01) in a date parameter

Impossible calendar date (2026-02-30, 2026-13-01) in a date parameter

Weight
+2
Matches
url
Manual
FM-4.5
[?&][\w.\[\]-]*(date|day|from|to|since|until|start|end|dt|after|before|when|time)[\w.\[\]-]*=(\d{4}-(02-3[01]|(04|06|09|11)-31|(1[3-9]|[2-9]\d)-\d{2}|\d{2}-(3[2-9]|[4-9]\d))|(02[/-]3[01]|3[01][/-]02|(0?4|0?6|0?9|11)[/-]31|31[/-](0?4|0?6|0?9|11)|\d{1,2}[/-](3[2-9]|[4-9]\d)|(3[2-9]|[4-9]\d)[/-]\d{1,2})[/-]\d{4})([T\s+&#]|$)
Test a URL

Labelled set: 3 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.placeholder_identity

+1model artifact
Placeholder identity (john.doe@, user@example.com, test123, 123 Main St, 555-01xx)

Placeholder identity (john.doe@, user@example.com, test123, 123 Main St, 555-01xx)

Weight
+1
Matches
param value
Manual
FM-4.5
^(john|jane)[._-]?doe@|^(user|test|foo|someone|name|email|me|you|your[._-]?name|username)@(example|test|domain|your-?domain|company|foo|bar|email)\.(com|org|net)$|(^|[@./])your-?(domain|website|site|company)\.(com|org|net)\b|^test123$|^123\s+main\s+st(reet)?\b|(^|[^\d])555[-.\s]?01\d\d($|[^\d])
Test a URL

Labelled set: 2 agent hits, 3 benign hits · precision 40% (hits per rule)

marker.repeated_token

+1model artifact
A word or phrase repeated five or more times in a row (a model generation loop)

A word or phrase repeated five or more times in a row (a model generation loop)

Weight
+1
Matches
param value
Manual
FM-4.5
(\S+\s+){4}\S
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

marker.oai_prefix

+3model artifact
OAI_/CHATGPT_ run tag (OpenAI-UNCTAD, US/Canada government reports)

OAI_/CHATGPT_ run tag (OpenAI-UNCTAD, US/Canada government reports)

Weight
+3
Matches
url
Group
run_tag counts once per record (FM-4.11)
Manual
FM-4.5
(?-i:\bOAI_[A-Z][A-Z0-9_]+|\bCHATGPT_[0-9][0-9A-Z_]+)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

anti bot 5 rules

antibot.baxia

+3
Alibaba Baxia anti-bot tokens

Alibaba Baxia anti-bot tokens

Weight
+3
Matches
param name
Manual
FM-4.4
^(bx-ua|bx_et|bx-umidtoken|umidtoken|x5sec)$
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

antibot.captcha_solver

+3
CAPTCHA-solving service solve endpoint

CAPTCHA-solving service solve endpoint

Weight
+3
Matches
url
Manual
FM-4.4
2captcha\.com/(in|res)\.php|api\.(capsolver|anti-captcha)\.com/(createTask|getTaskResult)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

antibot.ocr_captcha

+3
General-purpose OCR API pointed at a CAPTCHA image

General-purpose OCR API pointed at a CAPTCHA image

Weight
+3
Matches
url
Manual
FM-4.4
ocr\.space.*captcha|captcha.*ocr\.space
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

antibot.unblocker_params

+1
Scrape-API unblocking option (premium or stealth proxy, ultra_premium)

Scrape-API unblocking option (premium or stealth proxy, ultra_premium)

Weight
+1
Matches
url
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
(app\.scrapingbee\.com|api\.scraperapi\.com|api\.zenrows\.com)/[^#]*[?&](premium_proxy|stealth_proxy|premium|ultra_premium)=(true|1)\b
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

antibot.incapsula

+3
Imperva Incapsula anti-bot resource requested directly

Imperva Incapsula anti-bot resource requested directly

Weight
+3
Matches
url
Manual
FM-4.4
_Incapsula_Resource
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

cache buster 1 rule

cache.buster

+1
Cache-busting parameter

Cache-busting parameter

Weight
+1
Matches
param name
Manual
FM-4.4
^(_|cb|cachebust|cache_bust|nocache|bust|_t|ts|rnd|rand|uniq\d*)$
Test a URL

Labelled set: 41 agent hits, 5 benign hits · precision 89% (hits per rule)

carrier 12 rules

carrier.httpbin

+2
Request echo service, used to turn GETs into POSTs or inspect headers

Request echo service, used to turn GETs into POSTs or inspect headers

Weight
+2
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
httpbin\.org|httpbun\.(com|org)
Test a URL

Labelled set: 10 agent hits, 8 benign hits · precision 56% (hits per rule)

carrier.livecodes

+2
In-browser code playground used to run fetch programs

In-browser code playground used to run fetch programs

Weight
+2
Matches
host
Manual
FM-4.4
livecodes.io
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

carrier.codesandbox

+1
CodeSandbox

CodeSandbox

Weight
+1
Matches
url
Manual
FM-4.4
codesandbox\.io|csb\.app
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

carrier.browserless

+2
Browserless hosted headless-browser endpoint (remote browser)

Browserless hosted headless-browser endpoint (remote browser)

Weight
+2
Matches
url
Manual
FM-4.4
production-(sfo|lon|ams)\.browserless\.io|chrome\.browserless\.io
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

carrier.remote_browser_cdp

+2
Hosted-browser DevTools connect endpoint (Steel, Browser Use, Browserbase, Hyperbrowser, Lightpanda)

Hosted-browser DevTools connect endpoint (Steel, Browser Use, Browserbase, Hyperbrowser, Lightpanda)

Weight
+2
Matches
url
Manual
FM-4.4
(^|[^a-z0-9.-])(connect\.(steel\.dev|browser-use\.com|browserbase\.com|hyperbrowser\.ai)\b|([a-z0-9-]+\.)?cloud\.lightpanda\.io/ws\b)
Test a URL

Labelled set: 2 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

carrier.agent_sandbox

+2links records
Code-sandbox preview or function host (E2B, Daytona, Modal)

Code-sandbox preview or function host (E2B, Daytona, Modal)

Weight
+2
Matches
url
Manual
FM-4.4
(^|[^a-z0-9.-])(\d{2,5}-[a-z0-9]{12,40}\.e2b\.app|\d{2,5}-[a-z0-9-]{6,64}\.proxy\.daytona\.work|[a-z0-9-]+--[a-z0-9-]+\.modal\.run)\b
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

carrier.embed_playground

+2
Embed Web Playground used to run fetch/POST programs

Embed Web Playground used to run fetch/POST programs

Weight
+2
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
milankarman\.github\.io/Embed-Web-Playground
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

carrier.data_url_script

+3
data: URL carrying an HTML program that makes requests

data: URL carrying an HTML program that makes requests

Weight
+3
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
^data:text/html.*(<script|fetch\(|XMLHttpRequest)
Test a URL

Labelled set: 6 agent hits, no benign hits · precision 100% (hits per rule)

carrier.inline_fetch_program

+3
Inline program fetching other URLs from inside a remote browser

Inline program fetching other URLs from inside a remote browser

Weight
+3
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
fetch\(\s*['"`](https?:)?//|new XMLHttpRequest|navigator\.sendBeacon|new\s+Image\(\)\.src\s*=
Test a URL

Labelled set: 9 agent hits, no benign hits · precision 100% (hits per rule)

carrier.form_post_program

+3
Self-submitting POST form delivered as a program

Self-submitting POST form delivered as a program

Weight
+3
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
<form\b[^>]*\bmethod\s*=\s*['"]?post|forms\[\d+\]\.submit\(|\.submit\(\)
Test a URL

Labelled set: 5 agent hits, no benign hits · precision 100% (hits per rule)

carrier.html_program

+2
HTML page with script carried inside the request

HTML page with script carried inside the request

Weight
+2
Matches
url
Group
program counts once per record (FM-4.11)
Manual
FM-4.4
<script\b
Test a URL

Labelled set: 15 agent hits, 4 benign hits · precision 79% (hits per rule)

exfil 11 rules

exfil.webhook_site

+3links records
webhook.site inbox (callback / exfil channel)

webhook.site inbox (callback / exfil channel)

Weight
+3
Matches
url
Manual
FM-4.4
webhook\.site/(token/)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
Test a URL

Labelled set: 8 agent hits, no benign hits · precision 100% (hits per rule)

exfil.requestbin

+3links records
Request-catcher / OAST inbox (a per-user subdomain on the service)

Request-catcher / OAST inbox (a per-user subdomain on the service)

Weight
+3
Matches
url
Group
oast counts once per record (FM-4.11)
Manual
FM-4.4
[a-z0-9]+\.(m\.pipedream\.net|requestcatcher\.com|requestbin\.net|beeceptor\.com|interact\.sh|oast\.(fun|me|pro|live|site|online))
Test a URL

Labelled set: 3 agent hits, no benign hits; too few to estimate precision (hits per rule)

exfil.collaborator

+3links records
Burp Collaborator payload subdomain (per-session OAST inbox)

Burp Collaborator payload subdomain (per-session OAST inbox)

Weight
+3
Matches
url
Group
oast counts once per record (FM-4.11)
Manual
FM-4.4
[a-z0-9]{20,}\.(oastify\.com|burpcollaborator\.net)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exfil.dnslog

+3links records
DNS/HTTP logging service inbox (per-user OAST subdomain)

DNS/HTTP logging service inbox (per-user OAST subdomain)

Weight
+3
Matches
url
Group
oast counts once per record (FM-4.11)
Manual
FM-4.4
[a-z0-9]*[0-9][a-z0-9]*\.(dnslog\.cn|ceye\.io|dnshook\.site|requestrepo\.com)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exfil.oast_service

+3
OAST service named without an inbox subdomain

OAST service named without an inbox subdomain

Weight
+3
Matches
url
Group
oast counts once per record (FM-4.11)
Manual
FM-4.4
(^|[^a-z0-9.-])(interact\.sh|oast\.(fun|me|pro|live|site|online)|oastify\.com|burpcollaborator\.net|dnslog\.cn|ceye\.io|dnshook\.site|requestrepo\.com)\b
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exfil.ntfy

+3links records
ntfy topic used as a beacon channel (do not read or post to topics)

ntfy topic used as a beacon channel (do not read or post to topics)

Weight
+3
Matches
url
Manual
FM-4.4
(^|[^a-z0-9.-])ntfy\.sh/[A-Za-z0-9_-]{4,}
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

exfil.tunnel

+2links records
Public tunnel host (trycloudflare, ngrok, serveo, localhost.run, localtunnel)

Public tunnel host (trycloudflare, ngrok, serveo, localhost.run, localtunnel)

Weight
+2
Matches
url
Manual
FM-4.4
(^|[^a-z0-9.-])[a-z0-9-]*[0-9-][a-z0-9-]*\.(trycloudflare\.com|ngrok-free\.(app|dev)|ngrok\.(io|app)|serveo\.net|lhr\.life|loca\.lt|localtunnel\.me)\b
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

exfil.paste

+2
Paste / file drop used as an output channel

Paste / file drop used as an output channel

Weight
+2
Matches
url
Manual
FM-4.4
catbox\.moe|litterbox\.catbox|bytebin\.lucko\.me|paste\.rs|dpaste|transfer\.sh|0x0\.st|pastebin\.k4be\.pl
Test a URL

Labelled set: 2 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

exfil.cookie

+3
Cookie values sent onward

Cookie values sent onward

Weight
+3
Matches
url
Manual
FM-4.4
document\.cookie|[?&]ck=[^&]{20,}
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exfil.disposable_mail

+2
Disposable inbox (account/API key acquisition)

Disposable inbox (account/API key acquisition)

Weight
+2
Matches
url
Manual
FM-4.4
mail\.tm|mail\.gw|guerrillamail|10minutemail|temp-mail|tempmail|mailinator|maildrop\.cc|1secmail
Test a URL

Labelled set: 2 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

exfil.httpbin_data

+3significant alone
Fetched data sent back inside an echo-service URL (httpbin get?d=...)

Fetched data sent back inside an echo-service URL (httpbin get?d=...)

Weight
+3
Matches
url
Manual
FM-4.4
(httpbin\.org|httpbun\.(com|org))/(get|anything|status/\d{3}|base64/[^?#]*)[^#]*[?&](d|e|data|out|resp|result|pr)=[^&#]{40,}
Test a URL

Labelled set: 3 agent hits, no benign hits; too few to estimate precision (hits per rule)

exploit 16 rules

exploit.sqli_union

+5significant alone
SQL injection: UNION SELECT

SQL injection: UNION SELECT

Weight
+5
Matches
url
Group
sqli counts once per record (FM-4.11)
Manual
FM-4.4
\bunion(\s|\+|/\*.*?\*/)+(all(\s|\+|/\*.*?\*/)+)?select\b(\s|\+|/\*.*?\*/)*(null\b|-?\d|\*|@@|\(|['"`]|[a-z_][\w.]*(\(|(\s|\+)*,|(\s|\+)+from\b))
Test a URL

Labelled set: 5 agent hits, no benign hits · precision 100% (hits per rule)

exploit.sqli_boolean

+4significant alone
SQL injection: boolean / time-based probe

SQL injection: boolean / time-based probe

Weight
+4
Matches
param value
Group
sqli counts once per record (FM-4.11)
Manual
FM-4.4
'\s*(or|and)\s+'?\d+'?\s*=\s*'?\d|^\s*-?\d+\)?\s+(or|and)\s+\d+\s*=\s*\d+|'\s*--|\bsleep\(\d+\)|waitfor\s+delay|benchmark\(
Test a URL

Labelled set: 65 agent hits, no benign hits · precision 100% (hits per rule)

exploit.traversal

+5significant alone
Path traversal / sensitive file probe

Path traversal / sensitive file probe

Weight
+5
Matches
url
Group
traversal counts once per record (FM-4.11)
Manual
FM-4.4
(\.\./|\.\.%2f|%2e%2e/){2,}|/etc/passwd|win\.ini|boot\.ini
Test a URL

Labelled set: 6 agent hits, no benign hits · precision 100% (hits per rule)

exploit.traversal_single

+4
Single path-traversal step (often encoded as ..%2F)

Single path-traversal step (often encoded as ..%2F)

Weight
+4
Matches
url
Group
traversal counts once per record (FM-4.11)
Manual
FM-4.4
/\.\./
Test a URL

Labelled set: 7 agent hits, no benign hits · precision 100% (hits per rule)

exploit.sqli_quote

+3
Lone quote in a parameter value (SQL injection probe)

Lone quote in a parameter value (SQL injection probe)

Weight
+3
Matches
param value
Group
sqli counts once per record (FM-4.11)
Manual
FM-4.4
^[^'"\s]{0,20}['"]\)?$
Test a URL

Labelled set: 21 agent hits, no benign hits · precision 100% (hits per rule)

exploit.xss

+4significant alone
Cross-site scripting probe

Cross-site scripting probe

Weight
+4
Matches
param value
Manual
FM-4.4
<script|javascript:|onerror\s*=|onload\s*=|<svg[^>]*on\w+=
Test a URL

Labelled set: 17 agent hits, no benign hits · precision 100% (hits per rule)

exploit.ssti

+4significant alone
Template injection probe ({{7*7}})

Template injection probe ({{7*7}})

Weight
+4
Matches
param value
Manual
FM-4.4
\{\{\s*\d+\s*\*\s*\d+\s*\}\}|\$\{\s*\d+\s*\*\s*\d+\s*\}|<%=\s*\d+\s*\*
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.cmdi

+4significant alone
Command injection probe

Command injection probe

Weight
+4
Matches
param value
Manual
FM-4.4
[;|`]\s*(id|whoami|uname|cat\s+/etc)\b|\$\((id|whoami)\)
Test a URL

Labelled set: 2 agent hits, no benign hits; too few to estimate precision (hits per rule)

exploit.boundary_ids

+1
Out-of-range ID values (often precede injection probes)

Out-of-range ID values (often precede injection probes)

Weight
+1
Matches
param value
Manual
FM-4.4
^-\d+$|^9{6,}$|^0{4,}$|^(2147483648|4294967296|9223372036854775808)$
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

exploit.cmd_param

+4significant alone
Command-execution parameter carrying a shell command (?cmd=wget, ?exec=whoami)

Command-execution parameter carrying a shell command (?cmd=wget, ?exec=whoami)

Weight
+4
Matches
url
Manual
FM-4.4
[?&](cmd|exec|command|execute)=(wget|curl|whoami|uname|id(&|$)|cat[\s+]/|ls[\s+]-)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.open_redirect_probe

+3
Redirect/callback parameter pointed at an attacker domain (open redirect probe)

Redirect/callback parameter pointed at an attacker domain (open redirect probe)

Weight
+3
Matches
url
Manual
FM-4.4
[?&](redirect(_ur[il])?|redirect_to|return(_?to|_?url)?|next|continue|callback(_?url)?|dest(ination)?|goto|target|url|u)=((https?:)?//)?(evil|attacker|malicious|evil-?corp|badguy)\.(com|net|org|example)([/:?#&]|$)
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.null_byte

+3
Null-byte injection (%00) in a request URL

Null-byte injection (%00) in a request URL

Weight
+3
Matches
url
Group
traversal counts once per record (FM-4.11)
Manual
FM-4.4
\x00|%00
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.userinfo_confusion

+3
Userinfo host confusion (IP before @, host name after) in a request URL

Userinfo host confusion (IP before @, host name after) in a request URL

Weight
+3
Matches
url
Manual
FM-4.4
^https?://(\d{1,3}\.){3}\d{1,3}@[a-z]
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.php_eval

+3
PHP eval(base64_decode(...)) code-execution payload in a request URL

PHP eval(base64_decode(...)) code-execution payload in a request URL

Weight
+3
Matches
url
Manual
FM-4.4
eval\(\s*base64_decode\(
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

exploit.double_encoded_path

+4significant alone
Double-encoded path segment (F%2561cts -> F%61cts), an input-filter evasion

Double-encoded path segment (F%2561cts -> F%61cts), an input-filter evasion

Weight
+4
Matches
url
Manual
FM-4.4
/[a-z0-9_.~-]*%(2[5-9a-f]|[3-6][0-9a-f]|7[0-9a])
Test a URL

Labelled set: 3 agent hits, no benign hits; too few to estimate precision (hits per rule)

exploit.double_encoded_meta

+4significant alone
Double-encoded injection metacharacter in a parameter value (%253C -> %3C)

Double-encoded injection metacharacter in a parameter value (%253C -> %3C)

Weight
+4
Matches
param value
Manual
FM-4.4
%(3[ce]|27|22)
Test a URL

Labelled set: 5 agent hits, no benign hits · precision 100% (hits per rule)

header 12 rules

header.via_hysandbox

+4significant alonemodel artifact
Via header from a hysandbox Apache Traffic Server proxy

Via header from a hysandbox Apache Traffic Server proxy

Weight
+4
Matches
header
Group
proxy_headers counts once per record (FM-4.11)
Manual
FM-4.5
^via:.*hysandbox
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

header.via_ats

+1model artifact
Request passed through Apache Traffic Server

Request passed through Apache Traffic Server

Weight
+1
Matches
header
Group
proxy_headers counts once per record (FM-4.11)
Manual
FM-4.5
^via:.*(ApacheTrafficServer|\(ats\)|-ats\))
Test a URL

Labelled set: 2 agent hits, 2 benign hits; too few to estimate precision (hits per rule)

header.gzip_only_requests

+1model artifact
Accept-Encoding normalised to bare gzip (ATS normalize_ae), unusual for python-requests

Accept-Encoding normalised to bare gzip (ATS normalize_ae), unusual for python-requests

Weight
+1
Matches
header
Group
proxy_headers counts once per record (FM-4.11)
Manual
FM-4.5
^accept-encoding:\s*gzip\s*$
Test a URL

Labelled set: 1 agent hit, 2 benign hits; too few to estimate precision (hits per rule)

header.scripted_ua

+1model artifact
Scripted HTTP client user agent

Scripted HTTP client user agent

Weight
+1
Matches
user agent
Manual
FM-4.5
python-requests|python-httpx|aiohttp|node-fetch|undici|Go-http-client|curl/|axios/
Test a URL

Labelled set: 14 agent hits, 5 benign hits · precision 74% (hits per rule)

header.headless_ua

+1model artifact
Headless browser user agent

Headless browser user agent

Weight
+1
Matches
user agent
Manual
FM-4.5
HeadlessChrome|PhantomJS|Playwright
Test a URL

Labelled set: 5 agent hits, 1 benign hit · precision 83% (hits per rule)

header.mcp_fetch_ua

+1model artifact
Model Context Protocol fetch server user agent

Model Context Protocol fetch server user agent

Weight
+1
Matches
user agent
Manual
FM-4.5
ModelContextProtocol/1\.0 \((Autonomous|User-Specified)
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

header.cf_browser_rendering

+1model artifact
Cloudflare Browser Rendering automatic request header

Cloudflare Browser Rendering automatic request header

Weight
+1
Matches
header
Manual
FM-4.5
^cf-(biso-devtools|brapi-request-id|brapi-devtools):
Test a URL

Labelled set: 2 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

header.ua_platform_mismatch

+1model artifact
User agent and Sec-CH-UA-Platform name different systems (borrowed user agent)

User agent and Sec-CH-UA-Platform name different systems (borrowed user agent)

Weight
+1
Matches
header
Manual
FM-4.5
^sec-ch-ua-platform:
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

header.pentest_ua

+1model artifact
Web testing tool default user agent (sqlmap, nuclei, ffuf, gobuster)

Web testing tool default user agent (sqlmap, nuclei, ffuf, gobuster)

Weight
+1
Matches
user agent
Manual
FM-4.5
\bsqlmap/\d|Nuclei - Open-source project|Fuzz Faster U Fool|\bgobuster/\d
Test a URL

Labelled set: 1 agent hit, 5 benign hits · precision 17% (hits per rule)

header.agent_ua

+1model artifact
Known agent product in the user agent (FM-7.11 declared identity)

Known agent product in the user agent (FM-7.11 declared identity)

Weight
+1
Matches
user agent
Manual
FM-4.5
ChatGPT-User|OAI-SearchBot|OAI-AdsBot|GPTBot|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Google-Agent|Google-CloudVertexBot|Google-GeminiNotebook|Google-Read-Aloud|Google-Pinpoint|MistralAI-User|MistralAI-Index|DuckAssistBot|Bytespider|Amazonbot|Amzn-User|Amzn-SearchBot|KimiBot|Kimi-User|Kimi-SearchBot|meta-externalagent|meta-externalfetcher|meta-webindexer|meta-externalads|ExaSearchBot|FirecrawlAgent|CloudflareBrowserRenderingCrawler
Test a URL

Labelled set: 4 agent hits, 3 benign hits · precision 57% (hits per rule)

header.markdown_accept

+1model artifact
Accept header asking for Markdown first (coding-agent content negotiation)

Accept header asking for Markdown first (coding-agent content negotiation)

Weight
+1
Matches
header
Manual
FM-4.5
^accept:\s*text/markdown\b
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

header.coding_agent_ua

+1model artifact
Coding-agent harness fetch user agent (Gemini CLI, Qwen Code, Aider, Crush)

Coding-agent harness fetch user agent (Gemini CLI, Qwen Code, Aider, Crush)

Weight
+1
Matches
user agent
Manual
FM-4.5
Google-Gemini-CLI/\d|\bQwenCode/\S+ \(|\bAider/\d\S* \+https://aider\.chat|^crush/\d+\.\d+$
Test a URL

Labelled set: 6 agent hits, 4 benign hits · precision 60% (hits per rule)

infra 1 rule

infra.hysandbox_host

+3model artifact
Tencent hysandbox hostnames

Tencent hysandbox hostnames

Weight
+3
Matches
url
Manual
FM-4.5
hysandbox\.tencent-cloud\.com
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

outcome 2 rules

outcome.neterror

+1
Remote browser ended on an error/blank page

Remote browser ended on an error/blank page

Weight
+1
Matches
final url
Manual
FM-4.4
^about:(neterror|privatebrowsing|blank#blocked)
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

outcome.challenge

+1
Ended on a bot challenge

Ended on a bot challenge

Weight
+1
Matches
final url
Manual
FM-4.4
challenges\.cloudflare\.com|/cdn-cgi/challenge|captcha|/_incapsula_|perimeterx
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay 13 rules

relay.jina

+2
Jina Reader: fetches a page server-side and returns Markdown

Jina Reader: fetches a page server-side and returns Markdown

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
r.jina.ai
Test a URL

Labelled set: 70 agent hits, 13 benign hits · precision 84% (hits per rule)

relay.repo_digest

+1
Repository-to-text digest service (Gitingest, uithub, GitMCP)

Repository-to-text digest service (Gitingest, uithub, GitMCP)

Weight
+1
Matches
url
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
^https?://([a-z0-9-]+\.)?(gitingest\.com|uithub\.com|gitmcp\.io)([/:?#]|$)
Test a URL

Labelled set: 1 agent hit, 2 benign hits; too few to estimate precision (hits per rule)

relay.markdown_new

+2
URL-to-Markdown converter

URL-to-Markdown converter

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
markdown.new
Test a URL

Labelled set: 3 agent hits, 1 benign hit; too few to estimate precision (hits per rule)

relay.hrefli

+1
Referrer-stripping redirector

Referrer-stripping redirector

Weight
+1
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
href.li
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.translate_goog

+2
Google Translate proxy host rewriting

Google Translate proxy host rewriting

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
translate.goog
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.allorigins

+2
CORS proxy

CORS proxy

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
allorigins.win
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.corsproxy

+2
Public CORS proxies

Public CORS proxies

Weight
+2
Matches
url
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
corsproxy\.io|cors-anywhere|thingproxy|codetabs\.com/v1/proxy
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.pure_md

+2
pure.md: fetches a page server-side and returns Markdown

pure.md: fetches a page server-side and returns Markdown

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
pure.md
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.defuddle_md

+2
defuddle.md: fetches a page server-side and returns Markdown

defuddle.md: fetches a page server-side and returns Markdown

Weight
+2
Matches
host
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
defuddle.md
Test a URL

Labelled set: 1 agent hit, 1 benign hit; too few to estimate precision (hits per rule)

relay.archive_raw

+2
Raw-capture or on-demand-save web-archive URL wrapping a target (indirection)

Raw-capture or on-demand-save web-archive URL wrapping a target (indirection)

Weight
+2
Matches
url
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
(arquivo\.pt/wayback|web\.archive\.org/web)/\d{8,14}id_/|arquivo\.pt/savepagenow|web\.archive\.org/save/
Test a URL

Labelled set: 1 agent hit, no benign hits; too few to estimate precision (hits per rule)

relay.scrape_api

+2
Scraping API fetching a target server-side (ScrapingBee, ScraperAPI, ZenRows, Firecrawl)

Scraping API fetching a target server-side (ScrapingBee, ScraperAPI, ZenRows, Firecrawl)

Weight
+2
Matches
url
Group
relay counts once per record (FM-4.11)
Manual
FM-4.4
(^|[^a-z0-9.-])(app\.scrapingbee\.com|api\.scraperapi\.com|api\.zenrows\.com|api\.firecrawl\.dev)\b
Test a URL

Labelled set: 2 agent hits, 2 benign hits; too few to estimate precision (hits per rule)

self id 4 rules

selfid.vendor_name

+1model artifact
Model/vendor name in a request parameter (e.g. ?agent=claude, org=OpenAI Research). Unreliable for attribution.

Model/vendor name in a request parameter (e.g. ?agent=claude, org=OpenAI Research). Unreliable for attribution.

Weight
+1
Matches
param value
Group
vendor_self_id counts once per record (FM-4.11)
Manual
FM-4.5
\b(claude|chatgpt|openai|gpt-?[45o]|gemini|anthropic|hunyuan|qwen|deepseek|glm|kimi)\b|openai[\s-]?research(er)?|(?-i:^(claude|gpt|gemini|qwen|deepseek|kimi|agent|research)\d{8}[a-z0-9]{0,24}$)
Test a URL

Labelled set: 5 agent hits, 8 benign hits · precision 38% (hits per rule)

selfid.signature_agent

+1model artifact
Web Bot Auth signature headers (Signature-Agent / Signature-Input)

Web Bot Auth signature headers (Signature-Agent / Signature-Input)

Weight
+1
Matches
header
Manual
FM-4.5
^signature-agent:|^signature-input:.*\bkeyid=
Test a URL

Labelled set: 2 agent hits, 3 benign hits · precision 40% (hits per rule)

selfid.agent_commerce

+1model artifact
Agentic-commerce headers (agent-browser-auth or agent-payer-auth signature, pay-per-crawl price, x402 payment)

Agentic-commerce headers (agent-browser-auth or agent-payer-auth signature, pay-per-crawl price, x402 payment)

Weight
+1
Matches
header
Manual
FM-4.5
^signature-input:.*tag="agent-(browser|payer)-auth"|^crawler-(max|exact)-price:|^(payment-signature|x-payment):
Test a URL

Labelled set: 1 agent hit, 2 benign hits; too few to estimate precision (hits per rule)

marker.assistant_citation

+1model artifact
Assistant citation tag on the URL (utm_source=chatgpt.com)

Assistant citation tag on the URL (utm_source=chatgpt.com)

Weight
+1
Matches
url
Group
vendor_self_id counts once per record (FM-4.11)
Manual
FM-4.5
[?&]utm_source=chatgpt\.com(&|#|$)
Test a URL

Labelled set: 2 agent hits, 6 benign hits · precision 25% (hits per rule)

Edit & test

Edit the rules and test them here. Edits are kept in this browser only and apply to the workbench and the unwrap tool on this site; they never leave the page. The analysis engine loads when you open the editor.

Open the rules editor