Releases: gruntwork-io/terragrunt
v0.86.0
✨ Features
- Terraform 1.13: We are now testing Terragrunt against Terraform 1.13 and is confirmed to be working.
- Go 1.25: Build process now leverages Go 1.25 features and improvements
NOTE: Although this release is marked as backward incompatible, it is functionally compatible as nothing has been changed in Terragrunt internals. The minor version release is useful to mark the change in Terraform version that is being tested.
What's Changed
- chore: Added test for source-map in runner-pool by @denis256 in #4707
- chore: Go and Terraform 1.13 updates by @denis256 in #4724
Full Changelog: v0.85.1...v0.86.0
v0.85.1
✨ Features
- Updated go-getter to fix CVE-2025-8959
- Dropped dependencies on aws-sdk-go v1
📖 Docs
- Switched to the new documentation site
What's Changed
- chore: Bumping go-getter and dependencies to fix CVE-2025-8959 by @yhakbar in #4692
- Fix --report-file not created due to cross-device link by @Resonance1584 in #4675
- docs: Updating Terragrunt Homepage by @yhakbar in #4550
- Web 818 by @karlcarstensen in #4682
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #4685
- fix: Removing Google feedback form by @yhakbar in #4678
- fix: Adding social link info by @yhakbar in #4677
- chore: Final pre-migration steps by @yhakbar in #4688
- fix: Adjusting patch by @yhakbar in #4691
- fix: Fixing text for search by @yhakbar in #4693
- Bump versions by @karlcarstensen in #4695
- Lower padding margins by @karlcarstensen in #4696
- Search polish by @karlcarstensen in #4697
- fix: Adding retry to ignore the flakiness of
TestProviderCacheby @yhakbar in #4676 - Cleaning animation by @karlcarstensen in #4698
- chore: Tossing Jekyl docs by @yhakbar in #4699
- chore: Removing Jekyll docs by @yhakbar in #4705
- Swap classnames per feedback by @karlcarstensen in #4710
- fix: Adjusting
awshelperby @yhakbar in #4502 - fix: pass argument to version flag, e.g.
run -- version -jsonby @wakeful in #4720 - chore: rm old page deployment by @wakeful in #4721
- Remove unnecessary class by @karlcarstensen in #4713
- Tighten up Supercharge section by @karlcarstensen in #4712
Full Changelog: v0.85.0...v0.85.1
v0.85.0
🛠️ Breaking Changes
Removal of legacy Terragrunt flags
All deprecated flags that start with --terragrunt- have been removed in favor of their modern counterparts.
This is the next step in the removal of deprecated features in
Terragrunt on the road to Terragrunt 1.0, with more to follow. Read the CLI Redesign migration guide for future breaking changes.
Update of stack run directory context
The stack run command no longer assumes that users will have a .terragrunt-stack directory present in the same directory as the terragrunt.stack.hcl file. This caused issues for users that were leveraging the no_dot_terragrunt_stack attribute, as the run might have skipped over units generated outside the .terragrunt-stack directory and thrown an error if all units were generated without the .terragrunt-stack directory.
For the following terragrunt.stack.hcl file:
unit "foo" {
source = "../units/foo"
path = "foo"
no_dot_terragrunt_stack = true
}
unit "bar" {
source = "../units/bar"
path = "bar"
}Users would experience the following stack run output:
They will now get the following:
✨ Features
The runner-pool experiment has been integrated with OpenTelemetry
The runner-pool experiment has been updated to integrate properly with OpenTelemetry.
🐛 Bug Fixes
stack output now respects no_dot_terragrunt_stack
Previously, when running the stack output command, Terragrunt would incorrectly assume that all units were generated within a .terragrunt-stack directory. This bug has been fixed, and Terragrunt will know to look directly in the stack directory for a given unit when supplied with no_dot_terragrunt_stack.
The runner-pool experiment no longer parses stack files as units during discovery
A bug in the logic for the discovery package resulted in discovery errors due to terragrunt.stack.hcl files being parsed as units. That bug has been fixed.
Fixed filesystem context for find_in_parent_folders() when used in terragrunt.stack.hcl
The use of find_in_parent_folders() now functions correctly when run in the context of a terragrunt.stack.hcl file. Previously, it relied on the current working directory of the Terragrunt CLI, which incorrectly assumed that users would always be generating terragrunt.stack.hcl files from the current working directory.
The discovery package now emits less false positive warnings during parsing
The discovery package used by the find and list commands, and the runner-pool experiment has been updated to emit less unimportant warnings when parsing configurations. These warnings were for early phase parsing that are known to be safe to ignore.
The discovery package no longer attempts to parse stack configurations as units
A bug in the implementation of the discovery package resulted in attempts from Terragrunt to parse terragrunt.stack.hcl files as units. That has been remediated.
📖 Docs
Edit Link Added
The terragrunt-v1.gruntwork.io docs now include an "Edit page" button that conveniently allows the community to contribute fixes to documentation from within their browsers, using the GitHub UI.
What's Changed
- feat:
runner-poolOpenTelemetry integration by @denis256 in #4616 - fix: Discovery false positive parsing errors by @denis256 in #4605
- fix: Adding edit link back by @yhakbar in #4629
- fix: Make
stack outputrespectno_dot_terragrunt_stackby @yhakbar in #4606 - fix: Fix broken screenshot in logging page by @josh-padnick in #4630
- fix: Improve error handling for missing includes and dependencies by @yhakbar in #4637
- fix: ensure
--queue-include-dirincludes stack paths that have not yet been generated by @wakeful in #4649 - fix: Fixing bad link to
stack outputcommand by @yhakbar in #4652 - fix: Fixing
stack runwhen there are only units withno_dot_terragrunt_stackset by @yhakbar in #4628 - fix: Fixing
find_in_parent_foldersforterragrunt.stack.hclfiles by @yhakbar in #4669 - fix: Addressing provider cache test flake by @yhakbar in #4639
- fix: Fixing discovery parsing stacks as units by @yhakbar in #4615
- docs: Updating migration guide for
--terragrunt-flag removal by @yhakbar in #4671 - chore: Addressing review feedback by @yhakbar in #4672
- chore: Getting rid of strict lint workflow by @yhakbar in #4651
- chore: Remove legacy terragrunt flags by @yhakbar in #4650
- chore: Sequencing workflows so that faster workflows run before slower ones by @yhakbar in #4670
- chore: Adding error message bug report by @yhakbar in #4638
Full Changelog: v0.84.1...v0.85.0
alpha-20250813
⚠️ Alpha Release
Please don't use this release in production.
- Removing legacy
--terragrunt-flags #4597
What's Changed
- fix: Fixing discovery parsing stacks as units by @yhakbar in #4615
- feat: runner-pool opntelemetry integration by @denis256 in #4616
- fix: Adding edit link back by @yhakbar in #4629
- fix: Make
stack outputrespectno_dot_terragrunt_stackby @yhakbar in #4606 - feat: Discovey false positive parsing errors by @denis256 in #4605
- Fix broken screenshot in logging page by @josh-padnick in #4630
- chore: Adding error message bug report by @yhakbar in #4638
Full Changelog: v0.84.1...alpha-20250813
v0.84.1
What's Changed
- build(deps): Bump cloud.google.com/go/storage to v1.56.0 by @denis256 in #4603
- build(deps): Bump github.com/aws/aws-sdk-go-v2 to v1.36.6 by @denis256 in #4603
- build(deps): Bump github.com/gruntwork-io/boilerplate to v0.8.1 by @denis256 in #4603
- build(deps): Bump google.golang.org/api to v0.244.0 by @denis256 in #4603
- build(deps): Bump google.golang.org/grpc to v1.74.2 by @denis256 in #4603
- chore: Upgrade to Tofu 1.10.5 in CICD tests by @denis256 in #4604
Full Changelog: v0.84.0...v0.84.1
v0.84.0
🛠️ Breaking Changes
Removal of legacy-all commands
The following commands have been removed from the Terragrunt CLI:
spin-uptear-downplan-allapply-alldestroy-alloutput-allvalidate-all
If you have been using any of these commands, see the migration guide under Removal of longstanding deprecated commands here.
This is the first step in the removal of deprecated features in Terragrunt on the road to Terragrunt 1.0, with more to follow. You are also advised to read the CLI Redesign migration documentation for future breaking changes.
See #3535 for more details.
✨ New Features
Catalog/Scaffold now support --no-dependency-prompt
The catalog/scaffold commands now support a new --no-dependency-prompt flag that disables the Boilerplate dependency prompt (equivalent of --disable-dependency-prompt in Boilerplate).
This allows Boilerplate templates with dependencies to be used non-interactively, even when called by Catalog and Scaffold.
exclude block now supports no_run
The exclude block now supports the no_run attribute, which lets users prevent direct runs of a unit when the run matches the configuration of an exclude block.
e.g. When users define an exclude block like the following:
# foo/terragrunt.hcl
exclude {
if = true
actions = ["plan"]
}Terragrunt will only exclude the unit foo from the run queue if the user supplies a command like run --all plan. If a user uses the run plan command directly in the foo directory, it’s assumed that they are doing so intentionally, and don’t want the run to exit early.
Users can now specify no_run to explicitly tell Terragrunt that it should never be run, even if a user attempts to perform the run in the unit directory directly.
# foo/terragrunt.hcl
exclude {
if = true
no_run = true
actions = ["plan"]
}💪🏽 Enhancements
Stacks are now fully regenerated when the --source-update flag is set
The .terragrunt-stack directory is now fully regenerated when the --source-update flag is set, similar to how the .terragrunt-cache directory is regenerated when the flag is set.
This addresses some edge-cases where changes to local sources for units and stacks didn’t result in updates to generated stack configurations.
🐛 Bug Fixes
Stack Outputs Are Now Sorted
To ensure consistency in the order in which outputs are displayed when using the stack output command, outputs are now sorted before they are displayed.
Lockfiles With Strong Constraints Normalized
When manually generating lockfiles from the Provider Cache Server for modules with strong constraints like the following:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "= 5.100.0"
}
}
} Generated lockfiles now properly strip the = when generating the lockfile, as = constraints aren’t supported in .terraform.lock.hcl files.
What's Changed
- feat: add
--no-dependency-promptoption for scaffold by @markoeremija in #4420 - feat: Supporting
no_runinexcludeblock by @yhakbar in #4574 - feat: runner-pool destroy tests by @denis256 in #4537
- fix: sort output for
writevaluesinstack.goby @pseudomorph in #4552 - fix: Fixing links at the bottom of Jekyl stacks docs by @yhakbar in #4549
- fix: Fixing lint finding by @yhakbar in #4561
- fix: Stripping equals sign from constraint by @yhakbar in #4563
- fix: Fixing icon patch by @yhakbar in #4576
- docs: Updating stacks documentation by @yhakbar in #4544
- docs: minor stylistic change for better clarity by @Kairixir in #4557
- refactor: call
CleanStacksbefore running thestacks Generatefunc. by @wakeful in #4446 - build(deps): bump the js-dependencies group across 1 directory with 4 updates by @dependabot[bot] in #4545
- build(deps-dev): bump
nokogirifrom 1.18.8 to 1.18.9 in/docsby @dependabot[bot] in #4553 - build(deps): bump
ruby/setup-rubyfrom 1.245.0 to 1.253.0 by @dependabot[bot] in #4570 - chore: Adding
auto-provider-cache-direxperiment integration test by @yhakbar in #4554 - chore: updated dependabot config to not update
charmbracelet/x/ansiby @denis256 in #4564 - chore: Removing
legacy-allcommands by @yhakbar in #4572 - chore: Adding
goplscron by @yhakbar in #4594
New Contributors
- @Kairixir made their first contribution in #4557
- @pseudomorph made their first contribution in #4552
- @markoeremija made their first contribution in #4420
Full Changelog: v0.83.2...v0.84.0
v0.83.2
What's Changed
- chore: Improved construction logic for runner pool queues by @denis256 in #4506
- chore: Updated cloud-nuke config to remove dynamodb integration tests tables by @denis256 in #4531
- chore: Updated tofu engine used in tests to 0.0.20 by @denis256 in #4532
- build(deps): bump the js-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #4536
Full Changelog: v0.83.1...v0.83.2
v0.83.1
🐛 Bug Fixes
Provider Cache Server Now Leverages Module Constraints
The Provider Cache Server does some manual .terraform.lock.hcl file manipulation, as it's fetching providers on behalf of OpenTofu/Terraform users. Previously, this resulted in incorrect constraints being added to .terraform.lock.hcl files.
The internal logic has been updated to include constraints instead of hard-coding a specific values, if that's what's done in the module Terragrunt uses as its source (e.g. ~> 2.0 instead of = 2.0.0.0).
What's Changed
- fix: Adjusted lockfile handling when modules define constraints by @yhakbar in #4514
- docs: Fixed getting started docs by @shahar1 in #4516
- chore: Configured dependabot to ignore buggy version of charmbracelet/glamour by @wakeful in #4524
- chore: Updated cicd to use tofu 1.10.2 by @denis256 in #4507
- chore: Added dependency grouping and type labels to Dependabot config by @wakeful in #4518
- chore: Removed npm dependencies, using only bun for docs generation by @wakeful in #4527
- build(deps): Bump the js-dependencies group across 1 directory with 9 updates by @dependabot[bot] in #4520
- build(deps): Updated github.com/huandu/go-clone to v1.7.3 by @wakeful in #4511
- build(deps): Updated google.golang.org/api to v0.240.0 by @wakeful in #4511
- build(deps): Updated github.com/aws/aws-sdk-go-v2/service/s3 to v1.83.0 by @wakeful in #4511
- build(deps): Updated github.com/hashicorp/hcl/v2 to 2.24.0 by @denis256 in #4528
- build(deps): Updated golang.org/x/mo to 0.26.0 by @denis256 in #4528
- build(deps): Updated golang.org/x/sync to 0.16.0 by @denis256 in #4528
- build(deps): Updated golang.org/x/sys to 0.34.0 by @denis256 in #4528
- build(deps): Updated golang.org/x/term to 0.33.0 by @denis256 in #4528
- build(deps): Updated golang.org/x/text to 0.27.0 by @denis256 in #4528
- build(deps): Updated google.golang.org/api to 0.241.0 by @denis256 in #4528
New Contributors
Full Changelog: v0.83.0...v0.83.1
v0.83.0
🧪 Experiments Added
Introduction of the runner-pool experiment
The new runner-pool experiment to improve the performance of the Terragrunt concurrency model.
This experiment will be generally available once RFC #3629 is complete, improving the performance of Terragrunt runs across stacks.
🛠️ Breaking Changes
Usage of Module replaced with Unit in logs
Various logging in Terragrunt used the term "Module" for units, as the terminology around "Unit" wasn't established when they were added. Logging is more consistently referring to these as "Units" to avoid confusion.
Although users should not rely on consistency in log messages from Terragrunt to drive behavior, we are calling this out as a potentially breaking change for some users.
🐛 Bug Fixes
- Fixed flaky tests related to the provider cache.
- Added explicit check for user-defined
--tf-pathflag. - Updated Dockerfile to support Starlight documentation generation.
- Fixed incorrect lock file constraints generated by the Terragrunt Provider Cache.
- Fixed discovery of Terragrunt files in
runner-pool, ensuring correct file resolution during execution.
What's Changed
- feat: Runner pool implementation by @denis256 in #4434
- fix: Fixing
TestProviderCacheflake by @yhakbar in #4495 - fix: Adding explicit check to see if user set
--tf-pathby @yhakbar in #4493 - fix: Adjusting Dockerfile for Starlight docs by @yhakbar in #4496
- fix: Fix lock file constraints generated by Terragrunt Provider Cache by @ajax-ryzhyi-r in #4380
- fix: Fixed discovery of Terragrunt files in runner-pool by @denis256 in #4491
- docs: Updated documentation for fail-fast flag by @denis256 in #4503
- docs: Updated docs to reference default terragrunt.values.hcl by @denis256 in #4490
New Contributors
- @ajax-ryzhyi-r made their first contribution in #4380
Full Changelog: v0.82.4...v0.83.0
v0.82.4
✨ New Features
Support for OpenTofu 1.10 Native S3 Locking
The remote_state S3 backend now integrates natively with the OpenTofu 1.10 feature of state locking via S3 without the usage of DynamoDB using the new use_lockfile attribute.
# Configure OpenTofu/Terraform state to be stored in S3 with native S3 locking instead of DynamoDB.
# This uses S3 object conditional writes for state locking, which requires OpenTofu >= 1.10.
remote_state {
backend = "s3"
config = {
bucket = "my-tofu-state"
key = "${path_relative_to_include()}/tofu.tfstate"
region = "us-east-1"
encrypt = true
use_lockfile = true
}
}In previous releases, if users wanted to integrate with this OpenTofu feature, they would have to use the generate attribute, which opts users out of more advanced features of Terragrunt remote state management like automatic provisioning of state resources.
By using the native attribute in config, users can retain the benefits of automatic backend bootstrapping in addition to native integration with the new OpenTofu feature.
You can learn more about backend configurations in the HCL docs.
What's Changed
- feat: Adding support for native state locking by @yhakbar in #4485
- fix: resolve failing CAS & DAG tests by @wakeful in #4480
- fix: Use a constant for min version of tofu for auto provider cache dir by @yhakbar in #4479
- chore: update external dependencies by @wakeful in #4486
Full Changelog: v0.82.3...v0.82.4