Most small apps never meet a regulator. The ones that get hurt are usually hurt by something cheap to have fixed: a chargeback wave from a subscription nobody knew renewed, a privacy complaint about an analytics pixel, a leaked key that ran up a five-figure cloud bill. Each of these leaves a trace in the code, so a scan can catch it before launch.
| Rule | Exposure | Where it comes from |
|---|---|---|
tracker-without-consent | Fines and complaints for tracking before consent | EU ePrivacy rules and GDPR; UK PECR; opt-out rights in several US state privacy laws |
personal-data-no-privacy-notice | Collecting data with no notice | GDPR Articles 13–14; California's CalOPPA; app-store rules |
subscription-no-renewal-terms | Refunds, chargebacks, regulator action over recurring charges | US ROSCA and state automatic-renewal laws (for example California Business and Professions Code §17600 and following); EU and UK pre-contract information rules |
payments-no-terms | No refund policy, liability cap or acceptable-use rule to rely on | Contract law; payment processors' expectations |
affiliate-links-no-disclosure | Deceptive endorsement | FTC Endorsement Guides, 16 CFR Part 255; UK CAP Code; affiliate programme terms |
ai-output-no-disclosure | Undisclosed AI interaction and unlabelled generated content | EU AI Act Article 50 (from 2 August 2026); California's B.O.T. Act |
advice-without-disclaimer | Reliance claims on a tax, legal, medical or financial tool | Negligent misrepresentation; a stated limit of reliance is the usual mitigation |
comparison-no-trademark-notice | Implied affiliation with a named product | Trademark law: nominative fair use is safest with a non-affiliation line |
copyleft-dependency | Licence breach in a closed or conflicting product | GPL, AGPL and SSPL terms |
secret-in-tree | A stolen key spends on your account | Provider terms generally make the account owner liable for usage |
llm-endpoint-no-spend-control | Anyone who reaches the endpoint can spend your model budget | The provider bills the key's owner |
llm-call-no-output-cap | Each call's worst case is the model's full output | Per-token billing |
cloud-no-budget-alarm | No ceiling on a cloud bill, and no warning | Clouds bill usage with no default cap |
no-license | Nobody has rights to use the code; contributors' rights unclear | Copyright default |
Every finding is phrased as an observation with its evidence, a file and line, so you can check it. None is a determination that something is or is not lawful.
On 16 October 2026 we ran node cli.mjs sweep over this repository's 1,274 product directories and 506 research projects. It took about 14 seconds.
Add node cli.mjs scan . --fail-on high to CI so a new high-severity exposure fails the pull request. Post --format md as a PR comment, or upload --format sarif to GitHub code scanning to see findings inline. For a monorepo, sweep gives one row per app. The repository's AGENT.md is a playbook for an AI coding agent: run the scan, triage each finding against the code, fix what is clearly a fix, and bring the judgment calls to a person.
The ones that leave a trace in files: a tracker script without a consent manager, subscription checkout code without renewal and cancellation wording, data-collecting forms without a privacy notice, affiliate links before any disclosure, AI calls without a statement that AI is used, live keys, LLM endpoints with no limit, cloud IaC with no budget, and copyleft licences in a lockfile.
Anything that depends on facts outside the files: what your vendors do with data, whether your privacy notice is accurate, contracts, employment, tax registration, sector rules such as health or finance licensing, and anything in images or a CMS. A clean scan is not a compliance opinion.
Because it is one: the account owner owes the bill. A leaked key, an endpoint anyone can drive on your model key, or an autoscaler with no budget alarm can produce a charge larger than the business earns in a year, and providers do not have to forgive it.