← Package directory
Available on winget

Install Terragrunt

Terragrunt is a thin wrapper for Terraform that provides extra tools for keeping your Terraform configurations DRY, working with multiple Terraform modules, and managing remote state.

Install with winget
winget install --id Gruntwork.Terragrunt
Upgrade
winget upgrade --id Gruntwork.Terragrunt
Uninstall
winget uninstall --id Gruntwork.Terragrunt

About Terragrunt

Terragrunt is a thin wrapper for Terraform that provides extra tools for keeping your Terraform configurations DRY, working with multiple Terraform modules, and managing remote state.

What's new in 1.1.0

✨ New Features Stack dependencies A stack generates a tree of units from a single terragrunt.stack.hcl file. Wiring one of those units to another used to mean defining dependency blocks in your catalog and threading dependency paths through values. Stack dependencies let you declare those relationships up front instead. Add an autoinclude block inside a unit or stack block, and Terragrunt generates a partial configuration (a terragrunt.autoinclude.hcl file) next to the generated terragrunt.hcl or terragrunt.stack.hcl that's automatically merged into the unit or stack definition. The new unit.<name>.path and stack.<name>.path references resolve to generated paths, so you don't have to hardcode them: # terragrunt.stack.hcl unit "vpc" { source = "github.com/acme/catalog//units/vpc" path = "vpc" } unit "app" { source = "github.com/acme/catalog//units/app" path = "app" autoinclude { dependency "vpc" { config_path = unit.vpc.path } inputs = { vpc_id = dependency.vpc.outputs.vpc_id } } } Anything that's valid in a unit configuration is valid in its autoinclude block, so you can also patch catalog units with configuration they don't ship with, like retry rules: # terragrunt.stack.hcl unit "app" { source = "github.com/acme/catalog//units/app" path = "app" autoinclude { errors { retry "transient_errors" { retryable_errors = [".*Error: transient network issue.*"] max_attempts = 3 sleep_interval_sec = 5 } } } } The same works for nested stacks: an autoinclude block inside a stack block patches the generated terragrunt.stack.hcl, so you can, for example, add an extra unit to one environ...

Read release notes

Version history

Version Updated Notes
1.1.0 Unknown ✨ New Features Stack dependencies A stack generates a tree of units from a single terragrunt.stack.hcl file. Wiring one of those units to another used to mean defining dependency blocks in your catalog and threading depe...
1.0.8 Unknown 🏎️ Performance Improvements Faster read-file tracking with the mark-many-as-read experiment With the mark-many-as-read experiment enabled, Terragrunt records every module file it marks as read during parsing. The bookkee...
1.0.7 Unknown ✨ New Features tfr:// source URLs accept an optional version The version query parameter on tfr:// source URLs is now optional. When omitted, Terragrunt queries the registry's list-versions endpoint and downloads the lat...
1.0.6 Unknown πŸ› Bug Fixes terragrunt no longer hangs when download_dir is a non-hidden subdirectory of the unit Setting download_dir (via the attribute, --download-dir, or TG_DOWNLOAD_DIR) to a subdirectory of the unit's working direc...
1.0.5 Unknown ✨ New Features Full .terraform.lock.hcl files from the provider cache server When the provider cache server is used against the OpenTofu provider registry, Terragrunt now writes .terraform.lock.hcl files containing h1: h...
1.0.4 Unknown 🏎️ Performance Improvements run_cmd and Git repo-root results memoized without the Provider Cache Server Within a single command, repeated run_cmd(...) calls and repeated Git repo-root lookups across units used to share...
1.0.3 Unknown ✨ New Features --no-cas flag for disabling CAS per command The new --no-cas flag disables the CAS for a single invocation, even when the cas experiment is enabled. It is available on run, stack generate, and stack run. t...
1.0.2 Unknown πŸ› Bug Fixes shared_credentials_files and other list/map backend config values were serialized incorrectly Setting shared_credentials_files (or any other list-valued key) in the remote_state.config block produced a broken...
1.0.1 Unknown πŸ§ͺ Experiments Added dag-queue-display β€” DAG tree visualization for the run queue A new dag-queue-display experiment renders the run queue as a dependency tree instead of a flat list, making it easier to understand execut...
1.0.0 Unknown πŸŽ‰ v1.0.0 Release Terragrunt is now v1! This means that Terragrunt will no longer have any breaking changes in minor releases, with all future breaking changes taking place in (infrequent) future major releases. For a lis...
0.99.5 Unknown πŸ› Bug Fixes --working-dir interaction with exit codes fixed A bug in the logic for tracking exit codes for plan -detailed-exitcode when users supply the --working-dir flag has been fixed. Authentication during queue cons...
0.99.4 Unknown 🏎️ Performance Improvements Discovery performance improved The way in which Terragrunt discovers and filters units and stacks for runs has improved significantly. Screenshot 2026-02-17 at 17 43 55 Screenshot 2026-02-17 a...
0.99.3 Unknown πŸ› Bug Fixes Over-warning on strict controls prevented Using --strict-mode resulted in over-warning on completed controls. Those warnings will no longer appear when using strict mode. What's Changed - chore: Backport #550...
0.99.2 Unknown πŸ› Bug Fixes Interrupt signal propagation to OpenTofu/Terraform fixed The mechanism by which Terragrunt sends interrupt signals to OpenTofu/Terraform processes it started has been made more robust. Terragrunt will now sen...
0.99.1 Unknown πŸ› Bug Fixes Pass through null inputs Fixes a bug where null inputs weren't being passed through correctly to OpenTofu/Terraform. What's Changed - fix: Backport null input passing fix by @yhakbar in #5458 Full Changelog:...
0.99.0 Unknown πŸ› οΈ Breaking Changes Undocumented behavior removed We have removed several undocumented features that served as temporary stop-gaps to facilitate experimentation. The following environment variables no longer affect Terra...
0.98.0 Unknown ✨ New Features The --filter flag now implies --all When using the --filter flag, it is now optional to also supply --all. Terragrunt will automatically set the --all flag when you use the --filter flag. πŸ› Bug Fixes Plan...
0.97.2 Unknown 🏎️ Performance Improvements Partial parse used for get_working_dir() To assess where Terragrunt is going to run OpenTofu, it needs partially parsed information from the relevant terragrunt.hcl file of the unit running th...
0.97.1 Unknown ✨ New Features All HCL functions instrumented with OpenTelemetry All Terragrunt HCL functions are now instrumented to emit telemetry when they run, giving more insight into HCL function performance, and usage. HCL parsin...
0.97.0 Unknown βš’οΈ Breaking Changes The --queue-strict-include flag is deprecated Terragrunt no longer automatically includes dependencies of included units. As such the --queue-strict-include flag is no longer useful in the Terragrunt...