Releases: gruntwork-io/terragrunt
v0.89.1
v0.89.0
Several experimental features have been made generally available.
🛠️ Breaking Changes
Runner-pool
Terragrunt now supports the Runner Pool concurrency model, replacing the traditional group-based concurrency model with a dynamic scheduler by default.
Instead of waiting for groups of units that block downstream units to complete their runs, the Runner Pool executes each unit as soon as its dependencies (or dependents for destroys) are resolved. This improves efficiency, reduces bottlenecks, and limits the impact of individual failures on the run of the entire queue.
✨New Features
- Dynamically schedules Units as soon as dependencies (or dependents) are satisfied
- Improves throughput for large stacks
- Provides better fault-isolation for failed units
Report
The experimental Report feature is now stable and enabled by default.
Every Terragrunt run will now emit a short summary at the end of the run that looks like the following by default:
$ terragrunt run --all plan
# Omitted for brevity...
❯❯ Run Summary 3 units 62ms
────────────────────────────
Succeeded 3
This summary will give a high-level overview of the run results for units in a given Terragrunt run.
You can optionally request a CSV or JSON report of runs as well, giving you detailed insights as to the performance of each run using the --report flag:
terragrunt run --all plan --report-schema-file report.schema.csvName,Started,Ended,Result,Reason,Cause
first-exclude,2025-06-05T16:28:41-04:00,2025-06-05T16:28:41-04:00,excluded,exclude block,
second-exclude,2025-06-05T16:28:41-04:00,2025-06-05T16:28:41-04:00,excluded,exclude block,
first-failure,2025-06-05T16:28:41-04:00,2025-06-05T16:28:42-04:00,failed,run error,
first-success,2025-06-05T16:28:41-04:00,2025-06-05T16:28:41-04:00,succeeded,,
second-failure,2025-06-05T16:28:41-04:00,2025-06-05T16:28:42-04:00,failed,run error,
second-success,2025-06-05T16:28:41-04:00,2025-06-05T16:28:41-04:00,succeeded,,
second-early-exit,2025-06-05T16:28:42-04:00,2025-06-05T16:28:42-04:00,early exit,run error,
first-early-exit,2025-06-05T16:28:42-04:00,2025-06-05T16:28:42-04:00,early exit,run error,
terragrunt run --all plan --report-schema-file report.schema.json[
{
"Name": "first-exclude",
"Started": "2025-06-05T16:28:41-04:00",
"Ended": "2025-06-05T16:28:41-04:00",
"Result": "excluded",
"Reason": "exclude block"
},
{
"Name": "first-success",
"Started": "2025-06-05T16:28:41-04:00",
"Ended": "2025-06-05T16:28:41-04:00",
"Result": "succeeded"
}
]
✨New Features
- Generates detailed run reports (CSV and JSON formats supported)
- Displays run summaries directly in the CLI output
- Allows disabling summaries if desired
To learn more about the Run Report feature, read the dedicated guide on Run Reports here.
🔧 Migration Guide
No action is required
To disable summary output explicitly, use --disable-report-summary:
terragrunt run --all plan --disable-report-summaryAuto OpenTofu Provider Cache Directory
Terragrunt now automatically configures OpenTofu’s native provider caching mechanism by default when running with OpenTofu > = 1.10.
Note that if you are using Terraform, you will not be able to take advantage of this new feature.
This feature is only possible in OpenTofu due to the hard work and coordination with the OpenTofu team to ensure that concurrent access to the provider cache directory is safe for all OpenTofu users, regardless of whether they use Terragrunt.
✨New Features
- Automatically sets the
TF_PLUGIN_CACHE_DIRenvironment variable - Uses OpenTofu’s native provider cache instead of Terragrunt’s internal cache server
- Provides improved concurrency safety in multi-runner and CI environments
🔧 Migration Guide
No action is required if you’re running OpenTofu > = 1.10 — provider caching will be configured automatically.
To disable this behavior, use the --no-auto-provider-cache-dir flag:
terragrunt run --all apply --no-auto-provider-cache-dir❤️ Special Thanks
This feature merely automatically activates a feature that was introduced in OpenTofu 1.10 by the hard work of @cam72cam on the OpenTofu team.
The OpenTofu project takes community feedback seriously (including the maintainers of this project), and introduced the ability to concurrently access a shared provider cache directory as a feature in OpenTofu to make all users of OpenTofu better off. Maintainers of Terragrunt will continue to collaborate with the OpenTofu team to ensure that using Terragrunt with OpenTofu is the easiest way to guarantee the best experience managing IaC at scale.
What's Changed
- chore: Marked as completed runner-pool, reports and provider cache by @denis256 in #4900
- fix: Properly sets discovery context so that
plan -destroyandapply -destroywork right by @yhakbar in #4887 - docs: Implement view plans button by @karlcarstensen in #4890
- docs: Visual updates to form by @karlcarstensen in #4902
- docs: Fix docs flag name by @rubensf in #4908
Full Changelog: v0.88.1...v0.89.0
v0.88.1
What's Changed
- feat: Use better parsing for
--auth-provider-cmdby @yhakbar in #4881 - fix: Fixing race condition for
TestTerragruntExcludesFileby @yhakbar in #4809 - fix: Fixing report flags by @yhakbar in #4899
- fix: Fixing
.tfvs.tofuextension parity by @yhakbar in #4794 - chore: Add data.tf to iam directory in refactoring guide by @vit100-trader in #4888
- chore: Refactoring GitHub client into dedicated package by @yhakbar in #4879
- build(deps): bump the js-dependencies group across 1 directory with 7 updates by @dependabot[bot] in #4878
- docs: Update 01-quick-start.mdx by @vit100 in #4883
- docs: CI for Terralith to Terragrunt Guide by @yhakbar in #4811
- docs: Update OG images by @karlcarstensen in #4889
New Contributors
- @vit100 made their first contribution in #4883
- @vit100-trader made their first contribution in #4888
Full Changelog: v0.88.0...v0.88.1
v0.88.0
🛠️ Breaking Changes
Default Command Forwarding Removed
Terragrunt no longer forwards unknown top‑level commands to OpenTofu by default.
Invoking an unknown command now fails with guidance to use the explicit run form.
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 guidance on adapting to future breaking changes.
For a full list of deprecated features that will be removed prior to the release of Terragrunt 1.0, see the removal schedule.
❌ Old Behavior (Deprecated)
terragrunt workspace ls
terragrunt graph✅ New Behavior
terragrunt run -- workspace ls
terragrunt run -- graph🔧 Migration Guide
Keep using shortcuts for common commands:
terragrunt plan
terragrunt applyReplace usage of any OpenTofu/Terraform command that isn’t a supported shortcut with explicit usage of the run command:
terragrunt workspace ls => terragrunt run -- workspace ls
terragrunt graph => terragrunt run -- graphWhen mixing Terragrunt and OpenTofu flags, separate them with --:
terragrunt run -- apply -auto-approve
terragrunt run -- output -json
terragrunt run --all -- plan -var foo=barCommand-specific flags must be used after their commands
As part of the changes to remove the deprecated behavior of forwarding unknown commands to OpenTofu by default, users can no longer treat flags as global flags unless they are in-fact global flags.
For example, the following will still work:
terragrunt --log-level debug plan
terragrunt --no-color planBut the following will no longer be supported:
terragrunt --provider-cache run --all planInstead, you must supply flags after the commands they are used by:
terragrunt run --all --provider-cache planFlag Scope Changes (backend + feature flags)
Backend migration and feature-related flags are now command-scoped and should appear after the relevant subcommand.
These flags are accepted on run, backend, scaffold, find, and list
Affected flags:
backend-bootstrapbackend-require-bootstrapdisable-bucket-updatefeature key=value
❌ Old Behavior (Deprecated)
Command-specific flags could be set anywhere in the arguments for a command:
terragrunt --backend-bootstrap backend delete --all
terragrunt --feature stage=true plan✅ New Behavior
Place flags after the respective command they control:
terragrunt backend bootstrap --backend-bootstrap
terragrunt plan --feature stage=true
terragrunt find --feature stage=true🔧 Migration Guide
Move these flags to follow the subcommand they apply to
terragrunt --feature stage=true plan => terragrunt plan --feature stage=trueWhat's Changed
- chore: Removal of command forwarding by default by @denis256 in #4871
- docs: Fixed contact form toggle bug by @karlcarstensen in #4885
- docs: Terragrunt Scale Initial Checkout Page by @karlcarstensen in #4866
Full Changelog: v0.87.7...v0.88.0
v0.87.7
🐛 Bug Fixes
Partial cache population fix
Resolved an issue that prevented the HCL partial cache from being fully populated
What's Changed
Full Changelog: v0.87.6...v0.87.7
v0.87.6
🐛 Bug Fixes
Fixed S3 update prompt message
A typo in the prompt for backend bootstrap adjustment resulted in the word "res" being used instead of "out".
Remote state S3 bucket is res of date. Would you like Terragrunt to update it? (y/n)
The typo has been corrected like so:
Remote state S3 bucket is out of date. Would you like Terragrunt to update it? (y/n)
Added synchronization controls for queue and discovery
The queue and discovery packages used in find and list commands and the runner-pool experiment were updated to include additional synchronization controls to address rare race conditions.
What's Changed
- fix: Fixing S3 prompt message by @yhakbar in #4880
- fix: Adding synchronization controls to protect queue and discovery by @yhakbar in #4873
- docs: Adds CTA for Terragrunt Scale on sidebar by @karlcarstensen in #4860
- docs: out-dir flags docs by @denis256 in #4870
- docs: Convert buttons to components by @josh-padnick in #4850
- docs: runner pool docs update by @denis256 in #4875
- chore: Bun lock changes by @karlcarstensen in #4876
Full Changelog: v0.87.5...v0.87.6
v0.87.5
🧪 runner-pool experiment
- Runner Pool Performance: Optimized execution flow for faster and more efficient unit scheduling
- Benchmarks: Introduced initial benchmark tests to measure runner-pool performance under different scenarios
What's Changed
- chore: Performance improvements runner-pool by @denis256 in #4855
- docs: Updated runner-pool experiment status by @denis256 in #4852
- docs: Adding meta tags by @karlcarstensen in #4849
- docs: Update subhead by @karlcarstensen in #4854
- docs: Adding social images by @karlcarstensen in #4856
- docs: Documentation cleanup by @karlcarstensen in #4859
- chore: Offboarding AJ by @yhakbar in #4865
Full Changelog: v0.87.4...v0.87.5
v0.87.4
🐛 Bug Fixes
- Ensured awshelper prioritizes region from config over environment variables
- Fixed constraint normalization in provider cache
What's Changed
- fix: Fixed setting region in remote state config by @pseudomorph / @denis256 in #4848
- fix: Fixed constraint normalization by @yhakbar in #4804
- chore: runner-pool HCL formatting tests fixes by @denis256 in #4844
- docs: polish to the vimeo component by @karlcarstensen in #4841
- docs: Abc imports to force deploy by @karlcarstensen in #4845
- docs: Fix wrong links in documentation (#4846) by @CouscousPie in #4847
New Contributors
- @pseudomorph made their first contribution in #4848
- @CouscousPie made their first contribution in #4847
Full Changelog: v0.87.3...v0.87.4
v0.87.3
🐛 Bug Fixes
Fixed handling of null stack values
Improved handling of null values in stacks
What's Changed
- bug: Handling of null stack values by @denis256 in #4836
- docs: Adding vimeo component and video by @karlcarstensen in #4831
Full Changelog: v0.87.2...v0.87.3
v0.87.2
✨ New Features
Runner pool experiment performance improvements
- Enhanced runner pool performance for faster file detection.
Updated dependencies
Upgraded multiple dependencies to the latest stable versions:
- Updated cloud.google.com/go/storage to v1.56.1
- Updated aws-sdk-go-v2 to v1.39.0
- Updated go-getter to v1.8.0
- Updated go-cty to v1.17.0
- Updated testify to v1.11.1
- Updated golang.org/x/mod to v0.28.0
- Updated golang.org/x/oauth2 to v0.31.0
- Updated golang.org/x/sync to v0.17.0
- Updated golang.org/x/sys to v0.36.0
- Updated golang.org/x/term vv0.35.0
- Updated golang.org/x/text to v0.29.0
- Updated google.golang.org/api to v0.249.0
- Updated google.golang.org/grpc to v1.75.1
- Updated google.golang.org/protobuf to v1.36.9
What's Changed
- perf: Improving Runner Pool Perf a bit by @yhakbar in #4824
- chore: runner-pool tests fixes by @denis256 in #4823
- chore(deps): Dependencies update by @denis256 in #4827
- docs: Adjustments to partytown scripts by @karlcarstensen in #4822
- docs: Small updates to TS site by @karlcarstensen in #4819
- docs: Correct flag and environment variable names for AWS OIDC authen… by @carchi1a in #4785
- fix: Adding docs back for
-detailed-exitcode, etc. by @yhakbar in #4803
Full Changelog: v0.87.1...v0.87.2

