Completed Experiments
These experiments have been completed and their features are now available by default. The experiment flags are no longer needed.
auto-provider-cache-dir
Enable native OpenTofu provider caching by setting TF_PLUGIN_CACHE_DIR instead of using Terragrunt’s internal provider cache server.
auto-provider-cache-dir - What it does
This experiment automatically configures OpenTofu to use its built-in provider caching mechanism by setting the TF_PLUGIN_CACHE_DIR environment variable. This approach leverages OpenTofu’s native provider caching capabilities, which are more robust for concurrent operations in OpenTofu 1.10+.
This experiment flag is no longer needed, as the auto-provider-cache-dir feature is now enabled by default when using OpenTofu >= 1.10.
Requirements:
- OpenTofu version >= 1.10 is required
- Only works when using OpenTofu (not Terraform)
Disabling the feature:
You can disable the auto-provider-cache-dir feature using the --no-auto-provider-cache-dir flag:
terragrunt run --all apply --no-auto-provider-cache-dirauto-provider-cache-dir - How to provide feedback
Now that the auto-provider-cache-dir experiment is complete, please provide feedback in the form of standard GitHub issues.
auto-provider-cache-dir - Criteria for stabilization
To transition the auto-provider-cache-dir feature to stable, the following have been completed:
- Comprehensive testing to confirm the safety of concurrent runs using the same provider cache directory.
- Performance comparison with the existing provider cache server approach.
- Documentation and examples of best practices for usage.
- Community feedback on real-world usage and any edge cases discovered.
cli-redesign
Support for the new Terragrunt CLI design.
cli-redesign - What it does
Enabled features from the CLI Redesign RFC.
This experiment flag is no longer needed, as the CLI Redesign is now the default.
cli-redesign - How to provide feedback
Now that the CLI Redesign experiment is complete, please provide feedback in the form of standard GitHub issues.
cli-redesign - Criteria for stabilization
To transition cli-redesign features to a stable the following have been completed:
- Add support for
runcommand.- Add support for basic usage of the
runcommand (e.g.,terragrunt run plan,terragrunt run -- plan -no-color). - Add support for the
--allflag. - Add support for the
--graphflag.
- Add support for basic usage of the
- Add support for
execcommand. - Rename legacy
--terragrunt-prefixed flags so that they no longer need the prefix. - Add the
hclcommand, replacing commands likehclfmt,hclvalidateandvalidate-inputs. - Add OpenTofu commands as explicit shortcuts in the CLI instead of forwarding all unknown commands to OpenTofu/Terraform.
- Add support for the
backendcommand. - Add support for the
rendercommand. - Add support for the
infocommand. - Add support for the
dagcommand. - Add support for the
findcommand.- Add support for
findwithout flags. - Add support for
findwith colorful output. - Add support for
findwith--format=jsonflag. - Add support for
findwith stdout redirection detection. - Add support for
findwith--hiddenflag. - Add support for
findwith--sort=alphaflag. - Add support for
findwith--sort=dagflag. - Add support for
findwith theexcludeblock used to exclude units from the search. - Add integration with
symlinksexperiment to support finding units/stacks via symlinks. - Add handling of broken configurations or configurations requiring authentication.
- Add integration test for
findwith--sort=dagflag on all the fixtures in thetest/fixturesdirectory.
- Add support for
- Add support for the
listcommand.- Add support for
listwithout flags. - Add support for
listwith colorful output. - Add support for
listwith--format=treeflag. - Add support for
listwith--format=longflag. - Add support for
listwith stdout redirection detection. - Add support for
listwith--hiddenflag. - Add support for
listwith--sort=alphaflag. - Add support for
listwith--sort=dagflag. - Add support for
listwith--group-by=fsflag. - Add support for
listwith--group-by=dagflag. - Add support for
listwith theexcludeblock used to exclude units from the search. - Add integration with
symlinksexperiment to support listing units/stacks via symlinks. - Add handling of broken configurations or configurations requiring authentication.
- Add integration test for
listwith--sort=dagflag on all the fixtures in thetest/fixturesdirectory.
- Add support for
filter-flag
Support for sophisticated unit and stack filtering using the --filter flag.
filter-flag - What it does
The --filter flag provides a sophisticated querying syntax for targeting units and stacks in Terragrunt commands. This unified approach replaces the need for multiple queue control flags and offers powerful filtering capabilities.
This experiment flag is no longer needed, as the --filter flag is now available by default in the find, list, and run commands.
Supported Filtering Types:
- Name-based filtering: Target units/stacks by their directory name (exact match or glob patterns)
- Path-based filtering: Target units/stacks by their file system path (relative, absolute, or glob patterns)
- Attribute-based filtering: Target units by configuration attributes:
type=unitortype=stack- Filter by component typeexternal=trueorexternal=false- Filter by whether the unit/stack is an external dependency (outside the current working directory)name=pattern- Filter by name using glob patterns
- Negation filters: Exclude units using the
!prefix - Filter intersection: Combine filters using the
|operator for results pruning - Multiple filters: Specify multiple
--filterflags to union results - Git-based filtering: Target units/stacks changed between Git references using the
[ref...ref]syntax - Dependency/dependent traversal: Expand results to dependencies and dependents using the
...syntax
The legacy queue control flags (--queue-exclude-dir, --queue-excludes-file, --queue-exclude-external, --queue-include-dir, --queue-include-external, --queue-include-units-including, --queue-strict-include) remain supported alongside --filter.
filter-flag - How to provide feedback
Now that the filter-flag experiment is complete, please provide feedback in the form of standard GitHub issues.
filter-flag - Criteria for stabilization
To transition the filter-flag feature to a stable release, the following were completed:
- Add support for name-based filtering
- Add support for path-based filtering (relative, absolute, glob)
- Add support for attribute-based filtering (type, external, name)
- Add support for negation filters (!)
- Add support for filter intersection (|)
- Add support for multiple filters (union/OR semantics)
- Integrate with the
findcommand - Integrate with the
listcommand - Integrate with the
runcommand - Add support for git-based filtering ([ref…ref] syntax)
- Add support for dependency/dependent traversal (… syntax)
- Add support for
--filters-fileflag - Add support for
--filter-allow-destroyflag - Add support for
--filter-affectedshorthand - Comprehensive integration testing across all commands
report
Support for Terragrunt Run Reports and Summaries.
report - What it does
Allows generation of run reports and summary displays. This experiment flag is no longer needed, as the report feature is now stable and available by default.
report - How to provide feedback
Now that the report experiment is complete, please provide feedback in the form of standard GitHub issues.
report - Criteria for stabilization
To transition the report feature to stable, the following have been completed:
- Add support for generating reports (in CSV format by default).
- Add support for displaying summaries of runs.
- Add ability to disable summary display.
- Add support for generating reports in JSON format.
- Add comprehensive integration tests for the
reportexperiment. - Finalize the design of run summaries and reports.
runner-pool
Proposes replacing Terragrunt’s group-based execution with a dynamic runner pool that schedules Units as soon as dependencies are resolved. This improves efficiency, reduces bottlenecks, and limits the impact of individual failures.
runner-pool - What it does
Allow usage of experimental runner pool implementation for units execution.
runner-pool - How to provide feedback
Provide your feedback on the Runner Pool.
runner-pool - Criteria for stabilization
To transition the runner-pool feature to a stable release, the following must be addressed:
- Use new discovery and queue packages to discover units.
- Add support for including/excluding external units in the discovery process.
- Add runner pool implementation to execute discovered units.
- Add integration tests to track that the runner pool works in the same way as the current implementation.
- Add performance tests to track that the runner pool implementation is faster than the current implementation.
- Add support for fail fast behavior in the runner pool.
- Improve the UI to queue to apply.
- Add OpenTelemetry support to the runner pool.
stacks
Support for Terragrunt stacks.
stacks - What it does
Enable stack command to manage Terragrunt stacks.
stacks - Criteria for stabilization
To transition the stacks feature to a stable release, the following must be addressed:
- Add support for
stack run *command - Add support for
stack outputcommands to extend stack-level operations. - Integration testing for recursive stack handling across typical workflows, ensuring smooth transitions during
plan,apply, anddestroyoperations. - Confirm compatibility with parallelism flags (e.g.,
--parallel), especially for stacks with dependencies. - Ensure that error handling and failure recovery strategies work as intended across large and nested stacks.