0006 — scout never phones home¶
Status: Accepted · Date: 2026-09-19
Context¶
scout's front page says 0 bytes uploaded and nothing here is uploaded. Today that is simply a description of the code: there is no client-side callback anywhere in the binary, because nobody has written one.
A proposal was put forward to add one. Opt-out, anonymous, no personal data: operating system, architecture, whether the run was in CI, how long it took, the final score, and which phase failed. The reasoning is sound and conventional — a developer tool with no usage data is a tool whose maintainers are guessing, and an investor asking about adoption deserves a number rather than an anecdote.
Three things make it the wrong trade for this particular tool.
The tool is pointed at production. An operator runs scout check
against a server holding their customers' data, with a credential that
works. The endpoint is often internal and its hostname is itself
sensitive. Even a payload that carries none of that has to be audited to
establish that it carries none of that, and the audit is a cost paid by
every security team that evaluates scout, forever.
The guidance now runs the other way. In May 2026 the NSA's Artificial Intelligence Security Center published Model Context Protocol (MCP): Security Design Considerations for AI-Driven Automation. Among its recommendations: for sensitive data, prefer local MCP server instances with no vendor access or telemetry. scout is not an MCP server, but it is the tool an operator points at one, and the reasoning transfers exactly. An enterprise reading that document and then finding a callback in the diagnostic has been handed a reason to stop reading.
The nearest competitor has just made the opposite choice. The most widely adopted MCP security scanner now requires an account and an API token before it will scan anything. That is a gift, and it is only a gift while scout needs neither.
Decision¶
scout contains no client-side telemetry, and will not. No callback, no ping, no opt-out beacon, no crash reporter.
0 bytes uploaded is promoted from a description of the current code to a product guarantee, recorded in the stability-guarantees section of the README. Adding a callback is therefore a breaking change under this project's own rules, not a feature.
The guarantee is bounded and the bound is stated rather than implied: scout makes requests to the server under test, to the authorization server that server names, and to an OTLP collector or a report directory the operator configures explicitly. Those are the run. Nothing else leaves the machine, and nothing at all goes to anywhere scout's authors control.
scoutmcp.io is a website and carries ordinary website analytics. A
website is not the tool.
Consequences¶
The numbers have to come from somewhere else, and they do — from deliberate publication rather than silent collection, which is a better source and not merely an acceptable one:
| Signal | Why it is stronger than telemetry |
|---|---|
| Published attestations in a transparency log | Every entry is an operator choosing to publish. Attributable, countable, and auditable by a third party directly rather than on our word |
| GitHub Action usage count | Computed and published by GitHub, not by us |
| Badge impressions | The operator opted in by embedding it |
| Package and release download counts | Already collected by four distribution channels |
| Citations of the rubric | The only signal that measures whether scout is becoming a standard rather than a popular tool |
What is genuinely lost is the diagnostic feedback loop: we cannot see which phase developers fail on most, or which checks confuse them. That has to be bought with research instead — the census, issue triage, an opt-in survey, and the coverage of the guidance catalogue. Slower, less precise, and it does not require asking every user to trust us with a callback they did not want.
What would make this wrong¶
If the ecosystem's norms shift so far that a local-first posture stops
being a differentiator and becomes an obstacle — if operators start
expecting a diagnostic to report to a fleet service and treat one that
does not as unmanageable — then the answer is still not a callback in the
binary. It is a separate, explicitly configured exporter the operator
points at their own collector, which --otlp-endpoint already is.
The line that must not move: scout never sends anything to an endpoint scout's authors control.