Skip to main content

AI Discovery Readout

What AI is in this codebase, what can it reach, and who owns it?

Most teams cannot answer that. This produces the answer in one command, on your machine, in about a minute.

cd <your repo>
unveilr scan . --readout

Writes unveilr-readout.html. Open it in a browser. That is the whole thing.

unveilr scan . --readout report.md # Markdown, for tickets and CI summaries
unveilr scan . --readout --redact # hash every path and asset name

What it does not do

Worth being explicit, because this is what makes it safe to run on a real repository:

  • Nothing leaves your machine. No upload, no API call, no telemetry, no account. The scanners are offline and deterministic — run it with the network off and you get the same result.
  • No write access. It reads your working tree and writes one file where you ask it to.
  • No secret values are recorded. Detections store a masked fingerprint, never the matched credential.
  • Deterministic. Same commit, same output. Re-run to check any number.

With --redact, file paths and asset names become stable hashes, so the page can be shared outside the team — or with us — without disclosing code structure. The counts and categories stay intact, so it is still readable.

Reading it

Assets you may not know about is the section worth your attention. Each row is an AI asset that nothing currently governs:

RowWhat it means
Unregistered agentAn agent with no named owner, no approved tool scope and no bound credential. Nothing constrains what it may call.
Standing credentialA long-lived, unscoped key an agent can use. It does not expire, is not bound to one action, and nothing records what it did.
Shadow MCP serverDeclared in code, never centrally approved or routed through a gateway.
Unpinned agent skillAgent-executed code loaded from a mutable reference — it can change under you.
Permission bypassAn agent configured to skip approval prompts.

Governance coverage repeats the picture by category with the action that retires each one. Categories marked inventory only are ones we can find but do not yet gate — labelled that way deliberately rather than counted as covered.

Highest blast radius ranks findings by what they could actually reach.

What to do with it

  1. Check the unknown-unknowns list with your team. The only question that matters: is there anything here you did not already know about? If the answer is no, you have a well-governed estate and you do not need us.
  2. Start with standing credentials. Largest blast radius, easiest to bound — a long-lived key can be replaced by a short-lived credential scoped to one resource.
  3. Then owners. Every agent reaching production should have a named human accountable for it. Most lists resolve to two or three people.

FAQ

Does it need cloud credentials? No. This is source discovery only. Cloud identity discovery is a separate, opt-in, read-only integration — see Shadow AI.

Will it slow anything down? No. It reads files. It is not in the path of anything running.

What if it finds nothing? Then either the estate is genuinely under control, or the scanned scope is too narrow — try the repositories where agents are actually developed. A thin result is a real result; we would rather hear it than inflate it.

Can I run it in CI? Yes — same scanner as the PR check. See CLI reference.