Skip to content

Privacy & security

  • No third-party calls. Plan JSON stays in your Azure DevOps organization. Nothing leaves your tenant.
  • Sensitive values are masked. Anything Terraform marks sensitive (before_sensitive / after_sensitive) renders as (sensitive) — the underlying value never reaches the DOM.
  • DOM-safe rendering. Plan content goes through textContent / createElement, never as an HTML string — so a malicious resource address can't inject script.

Where plan data lives

The task uploads the plan JSON as a build attachment (type terraform-plan-viewer.plan). The tab reads it back via the Build REST API and renders everything client-side in the browser. There is no server, database, or external endpoint involved — the data has the same residency and access controls as your build logs.

Content Security Policy

The tab runs under a strict Content Security Policy. Plan content is inserted via textContent / createElement — never as an HTML string — so even a malicious resource address or attribute value can't execute script inside the tab.