Gruntwork Release Notes

Last updated: Jan 14, 2026

Gruntwork Products

All Gruntwork Release Notes

  • Jan 14, 2026
    • Parsed from source:
      Jan 14, 2026
    • Detected by Releasebot:
      Jan 14, 2026
    Gruntwork logo

    Terratest by Gruntwork

    v0.55.0

    New release with Go 1.24.0 upgrade, Terragrunt and Terratest improvements, and extensive CI/Kubernetes test fixes. It also removes vulnerable satori/go.uuid, updates nginx chart, and documents deprecations. Full changelog covers v0.54.0 to v0.55.0.

    What's Changed

    • docs: add example for skipping test stages by @james00012 in #1629
    • fix: remove satori/go.uuid dependency (CVE-2021-3538) by @james00012 in #1630
    • Upgrade Go to 1.24.0 and update terragrunt module for CLI redesign by @james00012 in #1633
    • Improve Terragrunt + Terratest documentation and deprecate Tg* functions by @james00012 in #1638
    • Fix various bugs and cleanup deprecated code by @james00012 in #1646
    • Fix GCP test failures by @james00012 in #1647
    • Update bitnami/nginx chart version in helm tests by @james00012 in #1648
    • Fix failing Kubernetes tests by @james00012 in #1650
    • Fix CI test failures by @james00012 in #1651
    • Upgrade Kubernetes client libraries to v0.35.0 by @james00012 in #1653

    Full Changelog: v0.54.0...v0.55.0

    Original source Report a problem
  • Jan 13, 2026
    • Parsed from source:
      Jan 13, 2026
    • Detected by Releasebot:
      Jan 13, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    alpha-2026011301

    Full Changelog: alpha-2026011201...alpha-2026011301

    Original source Report a problem
  • Jan 12, 2026
    • Parsed from source:
      Jan 12, 2026
    • Detected by Releasebot:
      Jan 12, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    alpha-2026011201

    What's Changed

    • build(deps): bump @smithy/config-resolver from 4.1.4 to 4.4.5 in /docs-starlight/src/fixtures/terralith-to-terragrunt/app/best-cat by @dependabot[bot] in #5328
    • Adding ambassadors by @karlcarstensen in #5330
    • Typo by @karlcarstensen in #5331
    • bug: Fixed passing of existing destroy plan files by @denis256 in #5327
    • Full Changelog: v0.97.2...alpha-2026011201
    Original source Report a problem
  • Jan 12, 2026
    • Parsed from source:
      Jan 12, 2026
    • Detected by Releasebot:
      Jan 12, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    alpha-2026011202

    What's Changed

    • build(deps): bump @smithy/config-resolver from 4.1.4 to 4.4.5 in /docs-starlight/src/fixtures/terralith-to-terragrunt/app/best-cat by @dependabot[bot] in #5328
    • Adding ambassadors by @karlcarstensen in #5330
    • Typo by @karlcarstensen in #5331
    • bug: Fixed passing of existing destroy plan files by @denis256 in #5327
    • Full Changelog: v0.97.2...alpha-2026011202
    Original source Report a problem
  • Jan 9, 2026
    • Parsed from source:
      Jan 9, 2026
    • Detected by Releasebot:
      Jan 9, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    v0.97.2

    Terragrunt ships a performance boost with partial parses for get_working_dir, speeding up large HCL configs. It fixes false parsing errors and improves signal propagation to spawned processes. Internal context propagation tweaks may impact library users in this patch release.

    🏎️ 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 the HCL get_working_dir() function. The function was performing a full parse of the terragrunt.hcl file, which can be slow for users with large HCL configurations.
    Given that the parse only requires access to the value of source in the terraform block, a partial parse is now performed by the function, only looking at the contents of the terraform block, improving performance significantly.

    🐛 Bug Fixes

    False positive parsing errors suppressed
    When parsing an include that defined dependencies, the HCL parser used by Terragrunt would emit spurious errors that are internally ignored. Those messages are now suppressed.

    Signal propagation for interrupts fixed
    A bug in how Terragrunt forwarded signals to processes it spawned (like running tofu) resulted in underlying processes receiving SIGKILL signals rather than the original signal (e.g. SIGINT) sent to the Terragrunt process. That has been fixed.

    🧹 Chores

    Avoiding contextcheck suppression
    While not changing much functionally in Terragrunt, this release did involve quite a lot of changes to Terragrunt internals. The majority of these changes related to better propagation of the Golang context object to better obey Golang best practices. These issues were reported by the contextcheck linter in the codebase, but the findings were suppressed due to the scope of work required to address them.

    These changes should make it so that context is propagated correctly more reliably in the codebase, increasing the usefulness of things like OpenTelemetry tracing and reduced resource usage.

    Note that some public function signatures have changed in the Terragrunt codebase, which may be a breaking change to users consuming Terragrunt as a library. Given that we do not offer any stability guarantees for usage of Terragrunt as a library, these changes are still to be included in a patch release.

    What's Changed

    • perf: Using a partial parse for get_working_dir() by @yhakbar in #5318
    • fix: false positive parsing errors by @denis256 in #5258
    • fix: Fixing signal propagation issues by @yhakbar in #5326
    • fix: Locking during run ensure calls by @yhakbar in #5312
    • chore: Avoiding contextcheck suppression by @yhakbar in #5320
    • chore: Fixing flaky tests by @yhakbar in #5316
    • chore: Adding flake utility by @yhakbar in #5311
    • chore: Cleaning up HCL fn spans by @yhakbar in #5315
    • build(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.6.1 in /test/flake by @dependabot[bot] in #5324
    • build(deps): bump golang.org/x/oauth2 from 0.25.0 to 0.27.0 in /test/flake by @dependabot[bot] in #5323
    • build(deps): bump golang.org/x/crypto from 0.7.0 to 0.45.0 in /test/flake by @dependabot[bot] in #5322

    Full Changelog: v0.97.1...v0.97.2

    Original source Report a problem
  • Jan 7, 2026
    • Parsed from source:
      Jan 7, 2026
    • Detected by Releasebot:
      Jan 7, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    v0.97.1

    Terragrunt now instruments all HCL functions with OpenTelemetry, boosting telemetry on function runs and parsing insights. The release tightens trace handling, fixes plan -destroy with --filter-affected, and improves worktree reports and optional relationship discovery for better performance.

    ✨ 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 parsing telemetry improved
    Additional fidelity has been added to traces emitted during parsing to give insight as to why configuration parsing is being performed, and how.

    🐛 Bug Fixes

    plan -destroy called correctly for --filter-affected
    A bug in the logic for --filter-affected resulted in removed units getting planned/applied instead of being destroyed when users supplied --filter-allow-destroy. That bug has been fixed.
    Nested spans in track parents appropriately even when the TRACEPARENT environment variable is used.
    A bug in the logic for propagating TRACEPARENT as the ultimate parent of traces started in Terragrunt prevented child traces from properly tracking parent spans. That bug has been fixed.
    Reports on runs in worktrees now use relative directories to worktree root
    Instead of displaying runs of units in Git worktrees during Git-based filter expression runs with the absolute path of their directories in a temporary directory, they now display with the path to the unit relative to the root of the worktree.
    Unnecessary relationship discovery prevented
    Discovery of relationships between units has been made opt-in in the discovery process. This will result in no changes to usage of commands like run --all, but will significantly improve the performance of commands like list and stack generate.

    What's Changed

    • feat: Adding spans for HCL functions by @yhakbar in #5306
    • feat: Increasing volume and fidelity of config parse telemetry by @yhakbar in #5309
    • fix: Fixing nested spans by @yhakbar in #5305
    • fix: Fixing plan -destroy for --filter-affected by @yhakbar in #5295
    • fix: Fixing worktree reports by @yhakbar in #5308
    • fix: Avoiding unnecessary relationship discovery by @yhakbar in #5313
    • chore: Dropping usage of MapToSlice and StringListInsert by @yhakbar in #5297
    • docs: Adding ambassadors by @karlcarstensen in #5296
    • docs: Ambassador Lorelei by @karlcarstensen in #5302

    Full Changelog: v0.97.0...v0.97.1

    Original source Report a problem
  • Jan 5, 2026
    • Parsed from source:
      Jan 5, 2026
    • Detected by Releasebot:
      Jan 6, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    v0.97.0

    Terragrunt releases breaking changes to queue flags, introduces a unified filter API, and retires several legacy options. The update includes bug fixes, stability improvements, and the completion of the filter-flag experiment, plus changelog notes and docs.

    ⚒️ 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 CLI.
    The flag has been deprecated, and no longer does anything. This flag will not be removed before 2.0.

    Run report no longer reports --queue-exclude-dir as a reason for exclusion

    Run reports no longer report on units excluded from runs as a consequence of the --queue-exclude-dir flag.

    The --units-that-include flag is deprecated

    The --units-that-include flag is now an alias for the reading= attribute filter, just like the --queue-include-units-reading flag.
    Given that the two flags no longer differ in functionality, and that the functionality of the --units-that-include is no longer strictly including units that are included, the flag has been deprecated.

    The double-star strict control is complete

    The globbing behavior of Terragrunt in CLI flags has been updated to match all paths when ending with a trailing ** .

    🧪 Experiments Completed

    The filter-flag experiment is completed

    The filter-flag experiment is completed, and the --filter flag is now generally available.
    You can use filter expressions as a single unified API for controlling the Run Queue, replacing the need to use the following CLI flags:
    Legacy —queue flag
    Equivalent —filter expression
    —-queue-include-dir=path
    —-filter='{./path}'
    —-queue-exclude-dir=path
    —-filter='!{./path}'
    --queue-include-units-reading=root.hcl
    --filter='reading=root.hcl'
    --units-that-include=root.hcl
    --filter='reading=root.hcl'
    --queue-include-external-dependencies
    --filter='{./**}...'
    --queue-excludes-file=excludes.txt
    --filters-file='filters.txt' *
    --graph
    --filter='...{.}'
    Note that the file used for the --queue-excludes-file does not directly translate to the kind of file you can use for a --filters-file. To learn more, see the documentation.
    The table above also explains the aliasing that has been done internally to replace queue flags with their filter equivalents. The aliasing for these queue flags is present purely for backwards compatibility purposes, but they are not going to emit deprecation warnings, and will not be removed before the Terragrunt 1.0 release.
    You are heavily encouraged to adopt the new --filter flag for your infrastructure targeting needs as soon as feasible in your workflows. It will offer a significantly more flexible and powerful experience.
    To learn more see the Filters feature documentation.
    🐛 Bug Fixes

    The get_original_terragrunt_dir() function is now supported in terragrunt.stack.hcl files

    When authoring explicit stacks, using the get_original_terragrunt_dir() HCL function in terragrunt.stack.hcl files will now return the directory where the terragrunt.stack.hcl file lives, even when the configuration is read from another stack/unit using read_terragrunt_config().

    Using Git-based expressions with the --out-dir flag is fixed

    When using Git-based expressions using the --filter flag, the relative path of units relative to their respective Git worktree roots is used for determining where the plan file will be saved, rather than a path in the relevant Git worktree.

    Color for output fetching is suppressed more reliably

    Terragrunt will use tofu output -json / terraform output -json more reliably when users expect a lack of colors (like when colors are suppressed for Terragrunt).

    What's Changed

    fix: Using testing/synctest to make TestWriteUnitLevelSummary more reliable by @yhakbar in #5253

    fix: Fixing report run duplication error by @yhakbar in #5252

    fix: improved log error messages by @denis256 in #5256

    fix: get_original_terragrunt_dir during stack generate by @philipmckenna-symphony in #5176

    fix: saving of plan in git based filtering by @denis256 in #5288

    fix: add no color for dependency fetching by @denis256 in #5285

    fix: added git worktree cleanup on errors by @denis256 in #5254

    docs: Adding ambassador by @karlcarstensen in #5261

    docs: Adding ambassador by @karlcarstensen in #5259

    docs: Adding announcement banner by @karlcarstensen in #5260

    docs: Documenting backport of queue flags into filter flags by @yhakbar in #5263

    docs: Adding ambassador by @karlcarstensen in #5266

    chore: Cleaning up test symlinks resolution by @yhakbar in #5251

    chore: Dropping ListContains and ListEquals and using standard library instead by @yhakbar in #5221

    chore: Adding debug log for assume already applied by @yhakbar in #5198

    chore: Removing latest Terraform OSS workflows by @yhakbar in #5262

    chore: Backporting queue flags into filter flags by @yhakbar in #5241

    chore: on demand no proxy build execution by @denis256 in #5277

    chore: opentelemetry and aws dependencies update by @denis256 in #5279

    New Contributors

    @philipmckenna-symphony made their first contribution in #5176

    Full Changelog: https://github.com/gruntwork-io/terragrunt/compare/v0.96.1..v.0.97.0

    Original source Report a problem
  • Dec 19, 2025
    • Parsed from source:
      Dec 19, 2025
    • Detected by Releasebot:
      Dec 19, 2025
    Gruntwork logo

    Terragrunt by Gruntwork

    v0.97.0-rc2025121901

    Terragrunt ships a filter based Run Queue experience with deprecations of legacy queue flags and updated CLI globbing for trailing **. The new --filter API becomes the unified way to target runs, backed by fixes and ongoing improvements.

    ⚒️ 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 CLI.

    The flag has been deprecated, and no longer does anything. This flag will not be removed before 2.0.

    Run report no longer reports --queue-exclude-dir as a reason for exclusion

    Run reports no longer report on units excluded from runs as a consequence of the --queue-exclude-dir flag.

    The --units-that-include flag is deprecated

    The --units_that-include flag is now an alias for the reading= attribute filter, just like the --queue-include-units-reading flag.

    Given that the two flags no longer differ in functionality, and that the functionality of the --units-that-include is no longer strictly including units that are included, the flag has been deprecated.

    The double-star strict control is complete

    The globbing behavior of Terragrunt in CLI flags has been updated to match all paths when ending with a trailing ** .

    🧪 Experiments Completed

    • The filter-flag experiment is completed

    • The filter-flag experiment is completed, and the --filter flag is now generally available.
      You can use filter expressions as a single unified API for controlling the Run Queue, replacing the need to use the following CLI flags:

      Legacy —queue flag
      Equivalent —filter expression
      —-queue-include-dir=path
      —-filter='{./path}'
      —-queue-exclude-dir=path
      —-filter='!{./path}'
      --queue-include-units-reading=root.hcl
      --filter='reading=root.hcl'
      --units-that-include=root.hcl
      --filter='reading=root.hcl'
      --queue-include-external-dependencies
      --filter='{./**}...'
      --queue-excludes-file=excludes.txt
      --filters-file='filters.txt' *
      --graph
      --filter='...{.}'
      Note that the file used for the --queue-excludes-file does not directly translate to the kind of file you can use for a --filters-file. To learn more, see the documentation.
      The table above also explains the aliasing that has been done internally to replace queue flags with their filter equivalents. The aliasing for these queue flags is present purely for backwards compatibility purposes, but they are not going to emit deprecation warnings, and will not be removed before the Terragrunt 1.0 release.
      You are heavily encouraged to adopt the new --filter flag for your infrastructure targeting needs as soon as feasible in your workflows. It will offer a significantly more flexible and powerful experience.
      To learn more see the Filters feature documentation.

    What's Changed

    • fix: Using testing/synctest to make TestWriteUnitLevelSummary more reliable by @yhakbar in #5253
    • chore: Cleaning up test symlinks resolution by @yhakbar in #5251
    • fix: Fixing report run duplication error by @yhakbar in #5252
    • fix: improved log error messages by @denis256 in #5256
    • chore: Dropping ListContains and ListEquals and using standard library instead by @yhakbar in #5221
    • chore: Adding debug log for assume already applied by @yhakbar in #5198
    • Adding ambassador by @karlcarstensen in #5261
    • Adding ambassador by @karlcarstensen in #5259
    • Adding announcement banner by @karlcarstensen in #5260
    • chore: Removing latest Terraform OSS workflows by @yhakbar in #5262
    • chore: Backporting queue flags into filter flags by @yhakbar in #5241
    • docs: Documenting backport of queue flags into filter flags by @yhakbar in #5263

    Full Changelog: v0.96.1...v0.97.0-rc2025121901

    Original source Report a problem
  • Dec 18, 2025
    • Parsed from source:
      Dec 18, 2025
    • Detected by Releasebot:
      Dec 18, 2025
    • Modified by Releasebot:
      Jan 13, 2026
    Gruntwork logo

    Terragrunt by Gruntwork

    alpha2025121801

    ⚠️ Alpha Release

    Alpha release of the changes in #5252

    Do not use in production.

    Full Changelog: v0.96.1...alpha2025121801

    Original source Report a problem
  • Dec 17, 2025
    • Parsed from source:
      Dec 17, 2025
    • Detected by Releasebot:
      Dec 18, 2025
    • Modified by Releasebot:
      Dec 18, 2025
    Gruntwork logo

    Terragrunt by Gruntwork

    v0.96.1

    Experiments get a boost with robust default-branch detection, OpenTelemetry tracing, and warnings for local state use in Git-based filters. Bug fixes improve path filtering, HTTPS CAS URLs, and root terragrunt.hcl handling, plus a clearer changelog flow.

    Experiments Updated

    • The --filter-affected flag has more robust determination of the default branch in a Git repository.

    • The --filter-affected flag will now use Git plumbing to interrogate the default branch as considered by the remote repository before falling back to interrogating local configurations for determination of a default branch (remember that you must use the filter-flag experiment to try this out).

      • This is checked first:
        $ git rev-parse --abbrev-ref origin/HEAD
        
      • Followed by this:
        $ git ls-remote --symref origin HEAD
        
      • Followed with this:
        $ git config init.defaultBranch
        
      • If none of the above succeed, the default branch is assumed to be main.
    • Git-based filter expressions now warn users when using local state

      • Usage of --filter Git-based expressions in combination with local state will now emit a warning, recommending usage of remote states (remember that you must use the filter-flag experiment to try this out).

        Example:

        $ terragrunt run --all --filter '[HEAD~1...HEAD]' -- plan
        
        09:30:38.017 WARN One or more units discovered using Git-based filter expressions (e.g. [HEAD~1...HEAD]) do not have a remote_state configuration. This may result in unexpected outcomes, such as outputs for dependencies returning empty. It is strongly recommended to use remote state when working with Git-based filter expressions.
        See the warning at the bottom of Git-based expressions documentation for more information.
        
    • OpenTelemetry traces added for filter evaluation

      • Filter evaluation now emits OpenTelemetry spans and metrics, including filter resolution details, evaluation duration, and filtering scope. This helps teams analyze performance and pinpoint bottlenecks in filtering with large Terragrunt repositories.

    🐛 Bug Fixes

    • Path-based filters targeting external paths fixed

      • A bug in the parsing of path-based filter expressions in the --filter flag of the filter-flag experiment prevented parsing of path-based filters for external paths (e.g. --filter ../external-dir). This bug has been fixed.
    • HTTPS Git CAS URLs fixed

      • A bug in the parsing of source URLs with forced usage of the Git protocol (e.g. git::https://github.com/acme/catalog) prevented using the cas experiment with HTTPS Git URLs with forced usage of the Git protocol. This bug has been fixed.
    • Regression of support for root terragrunt.hcl fixed

      • A bug in the processing of --queue-exclude-dir resulted in prefix based matching of non-glob expressions in --queue-exclude-dir values. This broke backwards compatibility for users with a root terragrunt.hcl file instead of a differently named file for the root include (e.g. root.hcl). This bug has been fixed.

      • Note that you are still advised to migrate away from using a root terragrunt.hcl as soon as possible for your team. We will maintain backwards compatibility until at least 2.0, however.

    What's Changed

    • feat: add opentelemetry integration in filter flag by @denis256 in #5247

    • feat: Adding warnings for local state usage with Git-based expressions by @yhakbar in #5245

    • feat: Use more robust default branch detection in Git-based expressions by @yhakbar in #5243

    • fix: Fixing parsing of external filters by @yhakbar in #5238

    • fix: Fixing HTTPS CAS URLs by @yhakbar in #5240

    • fix: Fixing warnings for how to reproduce tofu runs by @yhakbar in #5246

    • fix: Fixing regression with support for include of root terragrunt.hcl by @yhakbar in #5249

    • chore: Verify --queue-include-external isn't necessary when using the --filter flag by @yhakbar in #5216

    • chore: Verify --filter results in minimal parsing by @yhakbar in #5229

    • chore: Dropping util.JoinPath by @yhakbar in #5219

    • docs: Cleaning up some docs by @yhakbar in #5239

    Full Changelog: v0.96.0...v0.96.1

    Original source Report a problem

Related vendors