Skip to content

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

Data flow from your environment to the untrust consoleYour workstation or CI uploads reports, receipts and events over HTTPS to Ingest. Collectors on confidential hosts send signed bundles, outbound only, to Verify. Your key broker sends evidence to the release decision and gets a decision and receipt back. All three feed the results layer: findings, policies, compliance, detections, alerts, evidence packs and the ledger.YOUR ENVIRONMENTUNTRUST HOSTED CONSOLEWorkstation / CIscan · buildscan · iacscanregistry scan · detectIngestauthenticate the senderrecompute gates · storereports · receipts · eventsHTTPS · API key or CI OIDCConfidential hostuntrust collectorenrolled signing keyVerifysignature and hardwareevidence vs vendor rootssigned bundleHTTPS · outbound onlyYour key brokeruntrust release verifyRelease decisiondeny by defaultledger entryevidencedecision + receiptRESULTSFindings · policies · compliancedetections · alertsevidence packs · ledger
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 detect on a schedule; enroll collectors on hosts you run.
  • Auditors and relying parties: request evidence packs and decisions, and check them with untrust pack verify and untrust ledger verify without access to the console.