terragrunt 1.0.4 - #281472
Merged
Merged
Conversation
botantony
approved these changes
May 7, 2026
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.Details
release notes
dependencyblock insideautoincludemust declare exactly one label. Zero labels (dependency {}) and multiple labels (dependency "a" "b" {}) are now rejected at parse time with a diagnostic that points at the offending block.autoincludefiles duringstack generate,find, andlistare surfaced with the underlying HCL diagnostic instead of being swallowed or remapped to a generic discovery error.Reported in #5980.
cas— Local paths supported as stack component sourcesCAS-backed stack generation now accepts a local filesystem path as the
sourceof a consumerstackorunitblock, in addition to a remote Git URL. Terragrunt copies the referenced directory into a temporary directory, computes a content-addressed root hash over the copy, and applies the sameupdate_source_with_casrewriting as the remote flow. The original directory is left untouched.This makes a catalog usable against a local checkout under the same
update_source_with_cas = trueattributes that already work for Git URLs, which is helpful when iterating on a catalog before tagging a release.See the CAS documentation and Explicit Stacks: Local catalog sources for details.
catalog-redesign— Units and stacks, scaffolded values, and key-binding cleanupThe redesigned
terragrunt catalogTUI gains two new component kinds, a guided scaffolding flow for placing them, and a small key-binding cleanup.Units and stacks join modules and templates
Catalog discovery now classifies units (directories containing a
terragrunt.hcl) and stacks (directories containing aterragrunt.stack.hcl) as first-class component kinds, alongside OpenTofu/Terraform modules and boilerplate templates. The list view picks them up automatically and they appear under their own tabs; presstabandshift+tabto cycle.When more than one classification could apply to the same directory (for example, a stack directory that also contains a unit), Terragrunt resolves it to a single kind under a fixed precedence: template, stack, unit, module.
Copy and scaffolded values
Selecting a unit or stack from the catalog now offers a copy action that materializes the component into your working directory. Terragrunt walks the copied component for
values.<name>references and, if it finds any, writes a siblingterragrunt.values.hclstub. Names referenced outside atry(...)are listed as required with a"TODO"placeholder; names referenced through atry(...)are listed as optional, pre-populated with the literal default from the fallback. An existingterragrunt.values.hclis left alone.After the TUI exits, Terragrunt prints a short callout pointing at the directory it wrote to and any follow-up command you need to run, instead of leaving you to find the new directory yourself.
Catalog key bindings
The
ctrl+jbinding on the catalog list has been removed in favor ofenteralone for choosing a focused entry, and dropped from the navigation set used while filtering. The mini help footer is updated to match.stack-dependencies- Separate filenames for unit vs stack autoincludesGenerated autoinclude files now use distinct filenames depending on the component kind, so tooling (LSP,
read_terragrunt_config(), indexers) can identify a file's purpose from its name alone:terragrunt.autoinclude.hcl.stack { ... }) are now written asterragrunt.autoinclude.stack.hcl. The.stack.hclsuffix mirrorsterragrunt.stack.hcl, matching the convention used elsewhere for stack files.This change implements the naming convention proposed in the Stack Dependencies RFC so configurations for units and stacks always live in files whose names clearly indicate their purpose.
To learn more, see the experiment documentation.
stack-dependencies— Nested stack paths and discovery integrationThe
stack-dependenciesexperiment gains two improvements: nested stack path references at arbitrary depth, and integration with thefindandlistdiscovery commands.Nested stack path references
stack.<name>.<nested_stack>.pathnow resolves at arbitrary nesting depth. Previously, only units within a stack were reachable viastack.<name>.<unit_name>.path; nested stacks are now first-class references too.Discovery commands surface stack dependencies
The
terragrunt findandterragrunt listdiscovery commands now reflect stack dependencies generated by theautoincludeblock. The DAG output correctly orders units by their autoinclude dependencies and shows dependency relationships in JSON, tree, and long formats.Multi-level dependency trees (for example,
A → B,CwhereB → D,E) are ordered correctly in DAG mode: leaf units appear first, parents appear after all their dependencies.To learn more, see the experiment documentation.
Cache and plugin directories follow platform conventions
Terragrunt's global cache directory now resolves to the platform's user cache location instead of a hard-coded
~/.cache/terragrunt. On Linux this honorsXDG_CACHE_HOME(still~/.cache/terragruntby default), on macOS it resolves to~/Library/Caches/terragrunt, and on Windows it resolves under%LocalAppData%. The CAS content store, the auto provider cache, and the IaC engine plugin directory all move with it.Existing caches at the previous locations are not migrated. They become orphaned and continue to consume disk space until removed.
Consider deleting the old paths to reclaim that space if you are on macOS or Windows, or have configured a custom
XDG_CACHE_HOME:What's Changed
--auth-provider-cmdcall by @yhakbar in fix: Removing extra--auth-provider-cmdcall gruntwork-io/terragrunt#6045FromSlashon return ofgit rev-parse --show-toplevelby @yhakbar in fix: UseFromSlashon return ofgit rev-parse --show-toplevelgruntwork-io/terragrunt#5987ctrl-\+jin the catalog key bindings by @yhakbar in fix: Dropping references toctrl-\+jin the catalog key bindings gruntwork-io/terragrunt#6007get_repo_root()better by @yhakbar in perf: Memoizingget_repo_root()better gruntwork-io/terragrunt#5989Pull Requestssection to the changelog by @yhakbar in docs: Adding aPull Requestssection to the changelog gruntwork-io/terragrunt#5982v1.0.4by @yhakbar in docs: Calling out update for existing cache locations inv1.0.4gruntwork-io/terragrunt#6005v1.0.4by @yhakbar in docs: Cleaning up changelog forv1.0.4gruntwork-io/terragrunt#6050fast-copystrict control by @yhakbar in chore: Addfast-copystrict control gruntwork-io/terragrunt#5966lllcoverage toworktreesby @yhakbar in chore: Expandinglllcoverage toworktreesgruntwork-io/terragrunt#5861lllcoverage toos-execby @yhakbar in chore: Expandinglllcoverage toos-execgruntwork-io/terragrunt#5862lllcoverage torunner-credsby @yhakbar in chore: Expandinglllcoverage torunner-credsgruntwork-io/terragrunt#5865lllcoverage totflintby @yhakbar in chore: Expandinglllcoverage totflintgruntwork-io/terragrunt#5866lllcoverage toqueueby @yhakbar in chore: Expandinglllcoverage toqueuegruntwork-io/terragrunt#5867vexecinto engine by @yhakbar in chore: Integratevexecinto engine gruntwork-io/terragrunt#5957vexecintoCommandby @yhakbar in chore: IntegratingvexecintoCommandgruntwork-io/terragrunt#6004New Contributors
Full Changelog: gruntwork-io/terragrunt@v1.0.3...v1.0.4
View the full release notes at https://github.com/gruntwork-io/terragrunt/releases/tag/v1.0.4.