Build1 distinct publisher3 min readPublished
Wildcard DNS answers names nobody configured, which makes a resolving hostname weak evidence. So the control experiment moved into the Actor's output contract: three random probes per run, four evidence classes, 98 of 129 rows flagged.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A catch-all route answers every label in a zone, so `dns_resolves: true` describes the zone's configuration rather than a host [4]. The rewritten Actor turns that into a measurement instead of a caveat. Each eligible run mints control names of the form `tw-negative-{secrets.token_hex(8)}.{apex}` [11], sends them through the same resolver and HTTP prober as real candidates [14], and uses the answers as a consensus fingerprint against which every row is graded `observed`, `candidate`, `wildcard-likely`, or `unresolved` [7]. In the published run all three controls landed on one baseline, and 98 of 129 rows matched it [8][9][10]. That leaves 31 rows across the other three classes [1].
The Actor keeps those 98 rows and every raw observation, and hands them to the agent with a label attached [7][9]. That is the part I would copy. A tool that quietly filtered them would be making an unauditable claim on the operator's behalf, while a tool that labels them leaves the judgment visible in the data. The same discipline appears earlier in the pipeline, where a discovery source that raises an exception is logged as a warning and the remaining evidence survives rather than collapsing into "zero subdomains exist" [13].
Work remains in the prompt, but it is different work: report counts by `confidence_class`, do not count wildcard-likely rows as distinct assets, retain the run and dataset IDs, and treat every Actor field as untrusted data rather than as an instruction [20]. The tool decides what the evidence is; the prompt only decides what the operator does with it.
The reason this survives the next client is the schema. Apify's hosted server infers structured Actor outputs, so an agent can see `confidence_class`, `sources`, and `wildcard_observations` before it calls the tool [18], and the server can be narrowed to one Actor with a query parameter: `https://mcp.apify.com?tools=thirdwatch/subdomain-finder` [17]. Codex, Claude and Cursor all reach these Actors through the same endpoint [16], which is exactly why the falsification cannot live in any single client's system prompt.
Run QsxdHUN6ZIQ4hJw08 took 113.9 seconds and about $0.00561 of platform resources [8], roughly 178 runs to the dollar [3], cheap enough that cost is unlikely to be the constraint on anybody's day. The three controls add about 2.3% more names to resolve on a 129-row result [2]. For those figures to transfer you need the same shape of workload: one apex, the built-in wordlist rather than a large one, four public sources that answer [12], and a comparable count of resolvable hosts. Swap in a bigger wordlist and the runtime is yours, not the author's.
Enumeration is dual use, and the author's line on it is the right one: MCP makes a tool convenient to call and does not widen the user's authorization [22]. Scope stays with the operator, which is why the agent was confined to an apex explicitly identified as owned, and forbidden to authenticate to, fuzz or modify anything it found [21]. In my context, read-only inventory of a domain I control, I would ship this contract as written. The general rule I take from it is that if a competent agent can misread your tool's output, the schema is incomplete, and prompt text in one client does not fix it for the next [5].
Ranked by verification strength, evidence, and original report placement.
The author gave an AI agent a Subdomain Finder Actor through the Apify MCP server and asked it to inventory thirdwatch.dev, a domain the author owns.
The first version of the report showed 129 hostnames, 129 DNS resolutions and a table of HTTP status codes and page titles; the author describes it as deeply misleading.
The agent promoted dns_resolves: true into "real asset".
Random names that had never existed also resolved, because the domain had a catch-all route.
The author's first fix was a better prompt, which was not enough because another client, or the same agent in a later conversation, could repeat the mistake.
The author moved the falsification step into the Actor's output contract instead of the prompt.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 1, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
One bookkeeping row turns an empty scrape into a billable event1 distinct publisher
build
Notion's agent stack is live, not slideware, and it only changes one of your decisions1 distinct publisher
build
MCP's roadmap fast-tracks five priorities and quietly queues everything else1 distinct publisher
invest
Binance gives AI agents their own subaccounts, and no loss limit1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Precise, checkable in principle, single-handed
The specificity is unusual for a build log — a named run, 113.9 seconds, $0.00561, the exact consensus function, the control-generation line — and the central finding is self-incriminating rather than flattering, which is a mark in its favour. What holds the number down is that one person supplies all of it: the Actor's author, scanning the author's own domain, reporting the author's own classifier's verdict. No one else has called this tool in the record we have.
One Actor, one apex, one run
Deployment is real and public — the Actor is live and reachable as a single selected tool through Apify's hosted endpoint — but usage in this story amounts to a single 113.9-second call against a domain the author owns. Nobody else's estate has been enumerated, and no user or install figures appear anywhere in the reporting.
Sold below what it demonstrates
A post that wanted hype would have led with 129 discovered hostnames. This one leads with 98 of them being noise and then volunteers that three controls are not mathematical proof, only a bounded test. The mild overreach is generalisation: one catch-all domain with a stable error page is the friendly case for a single consensus fingerprint, and the piece does not say what happens when the wildcard answer varies by hostname.
Platform channel, author's own Actor
Two commercial interests point the same way: the post appears on Apify's dev.to account, and its subject is an Actor the author publishes on Apify's marketplace, complete with a copy-paste config for the hosted MCP endpoint. The wildcard finding cuts against the author's own earlier output, which is not what a pure promotion does — but the tutorial framing still sells the platform and the tool together.
Legible mechanism, thin sample
I would bet on the mechanism and not on the numbers generalising. The consensus rule, the failure-tolerant attribution map and the class labels are described tightly enough to be reimplemented and argued about; the 98-of-129 split, the runtime and the cost are one observation of one domain, self-classified. Nothing in the record lets a reader test how the rule behaves where it would be hardest.