Saturday 2026-09-12 was the busiest day my honeypot has had: 19,995 requests, against a prior week of 124 to 1,114 a day. The weekly summary email reported 13,967 "Galah AI responses", which reads like an expensive day for an LLM-backed honeypot. It was not. That metric counts cache hits and ceiling denials; the live model made 384 calls all day, for about 0.50 USD.

19,363 of those requests came from one cohort: 15 source addresses, the same seven user-agent strings, the same 231-path wordlist of credential and configuration files, the same fixed probe path. It had visited on five earlier days since 2026-08-23, never above 460 requests. Whether one operator or several customers of one scanning service sit behind it, I cannot tell, so I call it "the scanner".

Two of its three routes into my site were Cloudflare's own address space: the shared egress that Cloudflare's WARP client and Gateway use, and the single IPv6 address Cloudflare stamps on every Worker that fetches one Cloudflare zone from another. Behind that one address, a header Cloudflare sets on Worker subrequests named 870 distinct workers.dev accounts in a day. Neither lane can be blocked without blocking legitimate WARP users or every Worker on the platform.

The third route gave the game away. Five hosting-provider machines at Hetzner, DigitalOcean and Contabo sent 3,713 requests, every one carrying a Referer of the form https://<script>.<account>.workers.dev/proxy?modify&proxyUrl=https://rehagen.net/<path>. That is the example link printed by the landing page of Cloudflare's create-cloudflare starter template, which ships an unauthenticated proxy route. My apex domain answers every path with a 301. Add two documented behaviours, one in the Workers runtime and one in Go's HTTP client, and the redirect walks out of the proxy and lands on my origin from the scanner's real client, carrying the Worker URL it was just bounced from. More than 3,600 distinct Worker hostnames showed up that way across that day and the next.

I reconstructed that mechanism from documentation and source; I did not reproduce it. For anyone behind Cloudflare the practical points are short: log the cf-worker header at your origin, tag Worker subrequests at the edge with cf.worker.upstream_zone instead of blocking them, and read Cloudflare's country field as where traffic exited Cloudflare, not where an operator sits.

The campaign is not mine alone. GreyNoise documented forged AI-crawler identities aimed at .env, .aws/credentials and .git/config in late August, and Known Agents lists 35 targeted credential paths under an AI-bot spoofing campaign it flags as active (checked 2026-09-13 and 2026-09-15). Two things did not appear in that reporting: the starter-template proxy pool, and requests for wrangler.toml and .dev.vars, which hold a Workers developer's own account IDs and local secrets.