Terrascan
Archived Rego-based scanner for Terraform, CloudFormation, ARM, Kubernetes, Helm, Kustomize and Dockerfiles, formerly maintained by Tenable.
github.com/tenable/terrascan ↗- Stars
- ★ 5,213
- License
- Apache-2.0
- Language
- Go
- Latest release
- v1.19.9 · 18 Sept 2024
- Last push
- 20 Nov 2025
- OpenSSF Scorecard
- Not in the weekly scan
Tenable archived the repository on 20 November 2025 and the last release dates from September 2024.
How it works
Terrascan is a Go CLI. On first run (or with terrascan init) it clones its policies from the master branch of github.com/tenable/terrascan into ~/.terrascan, under pkg/policies/opa/rego.
IaC providers parse Terraform HCL2, CloudFormation, ARM, Kubernetes YAML or JSON, Helm v3, Kustomize and Dockerfiles into a normalized JSON config per resource type, which you can print with --config-only. Policies are Rego files paired with a JSON rule file (name, severity, category, reference_id) and run in an embedded OPA engine against that config.
Results go out through human, JSON, YAML, XML, JUnit XML and SARIF writers. --find-vuln looks up images referenced in the IaC in the registry's own vulnerability scanning (AWS, Azure, GCP, Harbor), --webhook-url posts results to a URL, and terrascan server runs the same scanner as an HTTP API.
What it catches
- Public storage, open security groups and missing encryption in Terraform, CloudFormation and ARM
- Privileged pods and missing security contexts in Kubernetes, Helm and Kustomize
- Dockerfile misconfigurations
- GitHub repository and webhook resources defined with the Terraform GitHub provider
- Known CVEs in referenced images, through the registry's scanner
Run it
brew install terrascan
terrascan scan -i terraform -d .What leaves your machine
terrascan init clones the policy repository from GitHub. --find-vuln calls the registry provider's API, --webhook-url posts results, and -r git/s3/gcs/http downloads the remote IaC.
Limits
- Archived on 20 November 2025. No new policies, parser fixes or dependency updates, and Homebrew has marked its formula deprecated.
- Policies are pulled at run time from the archived repository's master branch, so the rule set is frozen.
- Migrate to Checkov, KICS or trivy config.
Links
Related tools
GitHub stats as of 10 Oct 2026. How ratings work.