{"adoption": {"forks": 5832, "observed_at": "2026-08-28T04:04:18.654072+00:00", "stars": 1305}, "canonical_url": "https://ross.abutalabs.com/products/terragoat", "card": {"archived": false, "artifact_type": "learning-resource", "description": "TerraGoat is Bridgecrew's \"Vulnerable by Design\" Terraform repository. TerraGoat is a learning and training project that demonstrates how common configuration errors can find their way into production cloud environments.", "domain": ["security", "cloud-computing", "infrastructure-as-code", "tutorials"], "enriched": true, "function": ["security", "infrastructure-as-code", "testing", "developer-tools"], "health_score": 39, "homepage": "https://www.bridgecrew.io/", "language": "HCL", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["bridgecrewio/terragoat"], "name": "bridgecrewio/terragoat", "platform": ["cross-platform", "cli"], "pushed_at": "2025-07-13T12:11:17+00:00", "repo": "bridgecrewio/terragoat", "stars": 1305, "tags": ["vulnerable-by-design", "terraform", "devsecops", "policy-as-code", "misconfiguration", "aws", "azure", "gcp", "checkov", "training", "devops"], "topics": ["terraform", "aws-security", "cloud-security", "goat", "azure-security", "gcp-security", "devsecops"], "urls": [], "use_cases": ["test a policy-as-code scanner against intentionally vulnerable terraform", "train devsecops engineers on common cloud misconfigurations", "demo cloud security scanning tools like checkov", "practice finding infrastructure-as-code vulnerabilities in aws azure and gcp", "set up a vulnerable terraform environment for security workshops", "evaluate inline linters and pre-commit hooks for terraform security"], "what_it_is": "TerraGoat is Bridgecrew's 'Vulnerable by Design' Terraform repository containing intentionally misconfigured cloud infrastructure for AWS, Azure, and GCP. It serves as a training ground for practicing secure infrastructure-as-code development and testing policy-as-code scanners like Checkov.", "when_to_avoid": ["you need production-ready secure Terraform modules", "you cannot risk deploying vulnerable resources into a real cloud account", "you are looking for a security scanning tool rather than vulnerable sample code"], "when_to_choose": ["you need a safe baseline of vulnerable Terraform code to test IaC security scanners", "you are teaching or learning DevSecOps and cloud misconfiguration prevention", "you want to demo or benchmark tools like Checkov, Bridgecrew, or other policy-as-code frameworks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/terragoat", "repo": "bridgecrewio/terragoat", "role": "main", "score": 37}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.654072+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:51:01.306298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8639a027666fa18fb33e28f526de4bfc846730d92aeb386599b5d6f43d49694", "fetched_at": "2026-08-28T04:04:18.654072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bridgecrewio/terragoat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 31, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2350, "days_push": 416, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 37, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}