Skip to content

Releases: gruntwork-io/terragrunt

v0.89.1

07 Oct 16:50
88c460b

Choose a tag to compare

What's Changed

  • fix: Fixed bug where discovery warned that outputs were mocked. by @yhakbar in #4923

Full Changelog: v0.89.0...v0.89.1

v0.89.0

06 Oct 15:05
4346258

Choose a tag to compare

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

image

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.csv
Name,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-summary

Auto 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.

Screenshot 2025-06-25 at 12 38 05 PM

✨New Features

  • Automatically sets the TF_PLUGIN_CACHE_DIR environment 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

Full Changelog: v0.88.1...v0.89.0

v0.88.1

29 Sep 18:46
bdb271f

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.88.0...v0.88.1

v0.88.0

26 Sep 14:09
dbc24b1

Choose a tag to compare

🛠️ 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 apply

Replace 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 -- graph

When mixing Terragrunt and OpenTofu flags, separate them with --:

terragrunt run -- apply -auto-approve
terragrunt run -- output -json
terragrunt run --all -- plan -var foo=bar

Command-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 plan

But the following will no longer be supported:

terragrunt --provider-cache run --all plan

Instead, you must supply flags after the commands they are used by:

terragrunt run --all --provider-cache plan

Flag 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-bootstrap
  • backend-require-bootstrap
  • disable-bucket-update
  • feature 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=true

What's Changed

Full Changelog: v0.87.7...v0.88.0

v0.87.7

25 Sep 20:51
522518f

Choose a tag to compare

🐛 Bug Fixes

Partial cache population fix

Resolved an issue that prevented the HCL partial cache from being fully populated

What's Changed

  • chore: Fix for HclCache population in PartialParseConfigFile by @denis256 in #4877

Full Changelog: v0.87.6...v0.87.7

v0.87.6

24 Sep 21:03
4d373a4

Choose a tag to compare

🐛 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

Full Changelog: v0.87.5...v0.87.6

v0.87.5

22 Sep 18:58
9a6c907

Choose a tag to compare

🧪 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
runner-pool

What's Changed

Full Changelog: v0.87.4...v0.87.5

v0.87.4

16 Sep 20:55
35f6895

Choose a tag to compare

🐛 Bug Fixes

  • Ensured awshelper prioritizes region from config over environment variables
  • Fixed constraint normalization in provider cache

What's Changed

New Contributors

Full Changelog: v0.87.3...v0.87.4

v0.87.3

15 Sep 15:03
616ce22

Choose a tag to compare

🐛 Bug Fixes

Fixed handling of null stack values

Improved handling of null values in stacks

What's Changed

Full Changelog: v0.87.2...v0.87.3

v0.87.2

12 Sep 18:56
e2e63bd

Choose a tag to compare

✨ 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

Full Changelog: v0.87.1...v0.87.2