terragrunt deep-merge experiment adds deep_merge HCL function
Introduced 2026-05-25 · score 0.98
HOW TO USE IT
When composing inputs from multiple JSON, YAML, or HCL-derived maps, enable the `deep-merge` experiment and call `deep_merge` with positional map/object arguments; later values override overlapping keys, nested maps merge recursively, lists append, and `null` arguments are ignored.
locals {
config_json_files = sort(fileset(get_terragrunt_dir(), "*.json"))
config = deep_merge([
for file in local.config_json_files :
jsondecode(file("${get_terragrunt_dir()}/${file}"))
]...)
}
inputs = local.configterragrunt run --all --experiment deep-merge -- planWHY THIS HELPS
Compose Terragrunt inputs from multiple decoded JSON, YAML, or HCL-derived maps.
REQUIREMENTS AND LIMITATIONS
- Version: 1.0.6
- Availability: Experimental; requires enabling the `deep-merge` experiment.
- deep_merge(map1, map2, ...) (required): Positional map/object arguments to combine; later arguments override overlapping keys, nested maps merge recursively, lists append, and null arguments are ignored.
- --experiment deep-merge (required): Enables the experiment required to call `deep_merge`; the docs' CLI example enables it for `terragrunt run`.
- Prerequisite: Enable the `deep-merge` experiment; calling `deep_merge` without it returns an error.
- Calling `deep_merge` without enabling the `deep-merge` experiment returns an error.
FIRST-PARTY EVIDENCE
- https://github.com/gruntwork-io/terragrunt/releases/tag/v1.0.6
- https://docs.terragrunt.com/reference/hcl/functions/
- https://docs.terragrunt.com/reference/experiments/active/
Check the installed version and the source before using it. Entry JSON