Never sends your data
No telemetry, no accounts and no hosted service. Reports make no network requests and run under a strict content security policy.
Plans and state can contain secrets. tfviz is built so that only an approved, sanitised model of your infrastructure ever reaches the report.
Raw values never leave the reader. Everything after it works on a sanitised model.
No telemetry, no accounts and no hosted service. Reports make no network requests and run under a strict content security policy.
Passwords, user data, environment variables, tags, policies and secret contents are withheld. A sensitive change is shown only as changed or unchanged.
S3 access is a single read-only request for the object you name. No listing, no writes, no state locks and no secret-value APIs.
| Risk | Control | Evidence |
|---|---|---|
| Secrets in the report | Payload-free sensitive markers, per-type allowlists, and a deny guard for secret-shaped names | Planted canary secrets are searched for in every report, stdout and stderr |
| Secrets revealed through relationships | A sensitive reference suppresses its relationship | Graph tests |
| Script injection from labels | Escaped, embedded JSON and text-only rendering | Hostile-label tests in three browsers, plus fuzzing |
| Network access from reports | Hash-based CSP with connect-src 'none' | Browser tests check zero requests |
| Other sites reading the local explorer | Loopback only, Host check, one-time token, SameSite=Strict cookie, no CORS | Server tests and a cross-origin browser test |
| Identifying details when sharing | --safe-share stand-ins; the mapping is never written | Safe-share leak tests |
| Supply chain | Pinned dependencies, licence allowlists, checksums, SBOMs and build provenance | CI and the release workflow |
Please report security issues privately, as described in SECURITY.md. Never attach a real plan, state file or unredacted report to a public issue.