How the CLI and the console fit together¶
The CLI and the hosted console are one product. A cloud scan is a local scan plus an upload. The scanner runs where your credentials and your hosts already are; the console stores what you send it, verifies what it can, and evaluates it over time.
The data flow¶
Text version of the diagram
Your environment untrust hosted console
───────────────────────────────────────────── ──────────────────────────────
Workstation / CI runner
untrust scan ── report.json ──┐
untrust buildscan ── receipt ──────┤ HTTPS, API key or
untrust iacscan ── receipt ──────┼─ CI OIDC token ───▶ Ingest: authenticate the sender,
untrust registry ── report ───────┤ check the document, recompute
untrust detect ── events ───────┘ gates, store with provenance
│
Confidential hosts ▼
untrust collector ── signed bundle ── HTTPS, outbound ─▶ Verify signature and hardware
(enrolled key) only evidence against vendor roots
│
Your key broker ▼
untrust release verify ─ evidence ──────────────────────▶ Release decision (deny by
◀─ decision + receipt ──────────── default), ledger entry
│
▼
Findings, policies, compliance,
detections, alerts, evidence packs
Nothing flows the other way into your accounts. The console never holds credentials that can change your cloud resources, and it does not run scans from its own servers. A registered cloud connection gives it a read-only identity that it uses only to test access when you ask.
What runs where¶
| Step | Where it runs | Credentials used |
|---|---|---|
Posture scan (untrust scan) |
Your workstation or CI | Your own cloud credentials, never sent anywhere |
| Build and IaC gates | Your CI runner | None |
| Registry scan | Your CI runner | Your registry pull credentials; optionally the CI identity to fetch the trust policy |
Detection pass (untrust detect) |
Your workstation or CI | Your own read access to audit logs |
| Collector | Your confidential host | A signing key created on the host |
| Upload of reports and receipts | Your workstation or CI | An organization API key, or the pipeline's short-lived OIDC token |
| Verification, roll-up, alerts | The hosted service | Its own |
| Offline verification | Anywhere | The signer public key you obtained |
What leaves your environment¶
Only what you upload, and only when you upload it. The scanner itself makes no network
calls to untrust: untrust scan, buildscan, iacscan, registry scan and detect
write local files. The one exception is registry scan --policy-url, which downloads your
registry trust policy from the console and sends nothing back.
| Upload | Contains | Does not contain |
|---|---|---|
| Scan report | The target identifiers you scanned (bucket, key, instance, project, VM names and ids), each check's verdict, summary and recorded evidence, coverage, and the optional inventory (instance, network rules, who can reach the bucket or key, recent audit events) | Your cloud credentials. Omit the inventory with --no-inventory. |
| Build receipt | The SHA-256 of the analyzed artifact, commit and run labels, scanner and rule-pack versions, coverage and findings (file paths and rule matches) | The artifact itself. Findings name files, not secret values. |
| IaC receipt | Selected non-sensitive values from the plan, resource addresses, the input's digest, findings | The full plan |
| Detection events | The matched audit-log events and the rule coverage for the window | Logs that matched no rule |
| Collector bundle | Hardware attestation evidence (reports, quotes, certificates, measurements), host-check results, and, if enabled, boot-input and root-login facts (no command content) | Workload data. The collector's private key never leaves the host. |
Confidential Space token (opt-in, report-upload --cs-attestation-token) |
Sent next to the report so the service can verify it | The service stores only its verdict and a fingerprint, never the token |
Every upload is tied to the identity that sent it, an API key or a pinned CI binding, and to your organization.
Choosing a path¶
- Just evaluating? Run
untrust scan --demo, then a live scan, and read the report locally. No account needed. - One deployment, occasional checks: scan locally and upload with Scan now or
untrust report-upload. - Continuous assurance: gate builds and plans in CI and send the receipts with the
pipeline identity; run
untrust detecton a schedule; enroll collectors on hosts you run. - Auditors and relying parties: request evidence packs and decisions, and check them
with
untrust pack verifyanduntrust ledger verifywithout access to the console.