Skip to content

Releases: gruntwork-io/terragrunt

v0.86.0

22 Aug 09:18
bcc8037

Choose a tag to compare

✨ 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

Full Changelog: v0.85.1...v0.86.0

v0.85.1

21 Aug 13:43
be1177a

Choose a tag to compare

✨ 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

Full Changelog: v0.85.0...v0.85.1

v0.85.0

15 Aug 12:18
f8dab19

Choose a tag to compare

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

tg-stack-run-before

They will now get the following:

tg-stack-run-after

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

image

What's Changed

  • feat: runner-pool OpenTelemetry 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 output respect no_dot_terragrunt_stack by @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-dir includes stack paths that have not yet been generated by @wakeful in #4649
  • fix: Fixing bad link to stack output command by @yhakbar in #4652
  • fix: Fixing stack run when there are only units with no_dot_terragrunt_stack set by @yhakbar in #4628
  • fix: Fixing find_in_parent_folders for terragrunt.stack.hcl files 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

13 Aug 13:14
d2d4c58

Choose a tag to compare

alpha-20250813 Pre-release
Pre-release

⚠️ Alpha Release

Please don't use this release in production.

  • Removing legacy --terragrunt- flags #4597

What's Changed

Full Changelog: v0.84.1...alpha-20250813

v0.84.1

04 Aug 13:49
2a5b90d

Choose a tag to compare

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

01 Aug 12:55
01a8a24

Choose a tag to compare

🛠️ Breaking Changes

Removal of legacy-all commands

The following commands have been removed from the Terragrunt CLI:

  • spin-up
  • tear-down
  • plan-all
  • apply-all
  • destroy-all
  • output-all
  • validate-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-prompt option for scaffold by @markoeremija in #4420
  • feat: Supporting no_run in exclude block by @yhakbar in #4574
  • feat: runner-pool destroy tests by @denis256 in #4537
  • fix: sort output for writevalues in stack.go by @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 CleanStacks before running the stacks Generate func. 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 nokogiri from 1.18.8 to 1.18.9 in /docs by @dependabot[bot] in #4553
  • build(deps): bump ruby/setup-ruby from 1.245.0 to 1.253.0 by @dependabot[bot] in #4570
  • chore: Adding auto-provider-cache-dir experiment integration test by @yhakbar in #4554
  • chore: updated dependabot config to not update charmbracelet/x/ansi by @denis256 in #4564
  • chore: Removing legacy-all commands by @yhakbar in #4572
  • chore: Adding gopls cron by @yhakbar in #4594

New Contributors

Full Changelog: v0.83.2...v0.84.0

v0.83.2

14 Jul 19:44
497e2b2

Choose a tag to compare

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

11 Jul 17:09
35eada7

Choose a tag to compare

🐛 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

04 Jul 14:31
0095026

Choose a tag to compare

🧪 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-path flag.
  • 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 TestProviderCache flake by @yhakbar in #4495
  • fix: Adding explicit check to see if user set --tf-path by @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

Full Changelog: v0.82.4...v0.83.0

v0.82.4

02 Jul 13:29
34af1f1

Choose a tag to compare

✨ 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