TFLint v0.64.0 Release Notes: What's New and How to Upgrade
TFLint v0.64.0 adds an ignorable rule setting, better recursive-mode diagnostics, JUnit range reporting, and fixes plugin attestation bundle fetching.
DevOps
TFLint v0.65.0 ships a Go 1.26.10 security bump, deterministic file iteration, unique JUnit testcase names, and drops the auto install script.
TFLint v0.65.0 is out, following v0.64.0. It is primarily a maintenance release: a security-relevant Go runtime bump, a couple of small behavioral changes, one formatter enhancement, and a long tail of dependency updates. There are no new rules or new CLI flags called out in the release notes. Full details: v0.65.0 release notes.
TFLint binaries are now built with Go 1.26.10 (#2672), listed under "Security Fixes" in the release notes. No CVE identifier or additional detail is provided beyond the version bump — if you track TFLint for compliance/SBOM purposes, this is the entry to record for this release.
The JUnit formatter now generates unique testcase names for errors (#2592). If you consume tflint --format junit output in a CI dashboard (GitLab, Jenkins, Azure DevOps, etc.), duplicate testcase names that previously collapsed or confused test reporters should now render as distinct entries:
tflint --format junit > tflint-results.xmlTFLint now iterates primary Terraform files in a deterministic order (#2633). This mainly affects the ordering of diagnostics in output and should make tflint runs more reproducible across environments (useful when diffing lint output between CI runs or comparing local vs. CI results).
The language server (tflint --langserver) now logs request parameters only at trace level instead of a more verbose default (#2642). If you rely on request-parameter logging for debugging editor integrations, raise the log level explicitly:
TFLINT_LOG=trace tflint --langserverThe release history for this cycle includes two related chores: postponing the deletion date for the installation script (#2606) and then removing the auto installation script (#2607). If your CI pipelines use the legacy curl-based install script, switch to a pinned binary download or a package manager instead:
VERSION="v0.65.0"
curl -sSLo tflint.zip \
"https://github.com/terraform-linters/tflint/releases/download/${VERSION}/tflint_linux_amd64.zip"
unzip tflint.zip
sudo mv tflint /usr/local/bin/The rest of the changelog is dependency maintenance: the Docker base image moved through several golang:*-alpine3.23 tags, github.com/klauspost/compress, github.com/zclconf/go-cty, google.golang.org/grpc, github.com/sigstore/sigstore-go, github.com/sourcegraph/jsonrpc2, go.opentelemetry.io/otel/sdk, and various GitHub Actions (actions/checkout, actions/setup-go, actions/attest, docker/login-action, docker/setup-buildx-action, docker/metadata-action, docker/build-push-action) were bumped. README badges/charts that were broken were also removed (#2605). None of these require action from TFLint users.
No breaking changes are documented for this release, so the upgrade is low-risk. Pin the version in your CI/tooling config where applicable, for example in a .tflint.hcl plugin block or your Dockerfile:
plugin "terraform" {
enabled = true
preset = "recommended"
}Update the binary directly instead of relying on the removed install script:
# Homebrew
brew upgrade tflint
# Docker
docker pull ghcr.io/terraform-linters/tflint:v0.65.0
# Manual binary
curl -sSLo tflint.zip \
https://github.com/terraform-linters/tflint/releases/download/v0.65.0/tflint_linux_amd64.zip \
&& unzip tflint.zip && sudo mv tflint /usr/local/bin/If TFLint is invoked alongside Terraform in a module, re-run plugin initialization afterward:
tflint --init
terraform init -upgradeConfirm the installed version and run a quick lint pass to make sure nothing in your ruleset regressed:
tflint --version
# TFLint version 0.65.0
tflint --recursiveIf you use the JUnit formatter in CI, re-run it once and check that testcase names in the generated XML are no longer duplicated:
tflint --format junit --recursive > tflint-results.xmlTFLint v0.65.0 is a low-risk upgrade: a Go 1.26.10 security bump, deterministic file ordering, a JUnit formatter fix, reduced langserver log verbosity, and the removal of the legacy auto-install script. Teams relying on the old curl install script should switch to a pinned binary, Homebrew, or the Docker image. Everything else in this release is dependency hygiene with no action required beyond a routine upgrade.
TFLint v0.64.0 adds an ignorable rule setting, better recursive-mode diagnostics, JUnit range reporting, and fixes plugin attestation bundle fetching.
Terragrunt v1.2.1 patches a Go CVE, speeds up discovery and shared config parsing, and dedupes run_cmd calls. Upgrade notes inside.
DevOpsLearn how to integrate Terraform with GitHub Actions for automated infrastructure deployments. Complete guide with workflows, best practices, and.
Consul v2.1.0 replaces iptables with nftables for transparent proxy, tightens Enterprise API/ACL checks, and patches several CVEs. Upgrade notes inside.