Skip to content

All Rules

llms.txt lists every page for an agent

The Terraform lexicon provides 45 rules: 1 lint rule and 44 post-synth checks.

IDSeverityCategoryDescription
TF101errorcorrectnessterraformApply’s planFile must reference a preceding terraformPlan step.

Post-synth checks validate the serialized output after the build pipeline completes.

IDDescription
TF001Root module declares no remote backend
TF002A provider the root implies has no required_providers entry, or an incomplete one
TF003Root module’s terraform block has no required_version
TF004Registry-sourced module block has no version
TF005Git/hg module source is unpinned, or pinned to a mutable ref
TF006Sensitive variable declares a default value
TF007Secret-shaped literal in a variable default or a locals value
TF008Provider block configures a hardcoded credential
TF009Credential-named variable is not marked sensitive
TF010Variable declares no type constraint
TF011Variable declares no description
TF012Output declares no description
TF013lifecycle ignore_changes is set to all
TF014Child module configures a provider block
TF015Child module declares a backend or cloud block
TF016Attribute value is a quoted interpolation of a single expression
TF017Module block uses depends_on
TF018Output value is a whole resource or data source
TF019Meta-argument explicitly set to its default of false
TF020Declaration is never referenced in its module scope
TF021count builds instance identities from count.index where for_each is safer
TF022Credential-named resource attribute holds a plaintext literal
TF024Live root declares a backend or cloud block, which choudoufu refuses
TF025Live root references a non-default terraform.workspace, which choudoufu refuses
TF026Live root declares delete: “never” but its policy leaves undeclared_tagged at “delete”
TF027Live root’s policy block sets undeclared_untagged = “delete”, which deletes resources chant does not own
TF028A live root is watched by a TerraformWatchOp built without live: true
TF029Live root names its estate both in chant.config and in its own HCL
TF030Security group rule allows unrestricted ingress on a sensitive port
TF031IAM policy allows a wildcard Action or Resource
TF032ECS container definition passes a credential as a plaintext environment value
TF033RDS DB instance or cluster storage is not encrypted
TF034SNS topic has no server-side encryption
TF035SQS queue turns server-side encryption off
TF036EBS volume does not ask for encryption
TF037ECR repository allows mutable image tags
TF038OCI module source has no tag or digest, or a mutable tag
TF039Registry module version is a range, not an exact version
TF040Root has no committed .terraform.lock.hcl
TF041Terragrunt dependency lets mock_outputs stand in for apply
TF042Terragrunt dependency sets skip_outputs together with mock_outputs
TF043Terragrunt terraform.source names no version (git ref, tfr version or oci tag)
TF044Terragrunt config keeps state in a local backend
TF045No Terragrunt config sets terragrunt_version_constraint

chant