---
version: "v1.0.1"
---

### 🧪 Experiments Added

---

#### `dag-queue-display` — DAG tree visualization for the run queue

A new `dag-queue-display` experiment renders the run queue as a dependency tree instead of a flat list, making it easier to understand execution order and dependency relationships at a glance.

```bash
$ terragrunt run --all --experiment dag-queue-display -- plan
19:06:59.108 INFO   The following units will be run, starting with dependencies and then their dependents:
.
├── monitoring
╰── vpc
    ╰── database
        ╰── backend-app
            ╰── frontend-app
```

To learn more, see the [experiment documentation](/reference/experiments/active#dag-queue-display).

#### `slow-task-reporting` — Progress reporting for long-running operations

A new `slow-task-reporting` experiment displays animated progress spinners for operations that take longer than 1 second, such as source downloads, Git worktree creation, and catalog repository cloning. In non-interactive environments (CI/CD, piped output), spinners are replaced with periodic INFO log lines every 30 seconds to prevent CI systems from killing jobs due to output inactivity.

```bash
$ terragrunt run --all --experiment slow-task-reporting -- plan
INFO Downloading source from git::https://github.com/example/module.git...
INFO Downloaded source from git::https://github.com/example/module.git (3.2s)
```

To learn more, see the [experiment documentation](/reference/experiments/active#slow-task-reporting).

#### `stack-dependencies` — Dependency wiring between units in stacks

A new `stack-dependencies` experiment enables the `autoinclude` block in `terragrunt.stack.hcl` files, allowing units and stacks to define dependency relationships and arbitrary configuration overrides during stack generation. This implements [RFC #5663](https://github.com/gruntwork-io/terragrunt/issues/5663).

```hcl
unit "vpc" {
  source = "../catalog/units/vpc"
  path   = "vpc"
}

unit "app" {
  source = "../catalog/units/app"
  path   = "app"

  autoinclude {
    dependency "vpc" {
      config_path = unit.vpc.path
    }

    inputs = {
      vpc_id = dependency.vpc.outputs.vpc_id
    }
  }
}
```

```bash
terragrunt run --all --experiment stack-dependencies -- plan
```

To learn more, see the [experiment documentation](/reference/experiments/active#stack-dependencies).

### 💡 Tip Added

---

#### Windows symlink warning for provider cache users

Terragrunt now warns Windows users when symlink creation fails and provider caching is enabled. OpenTofu and Terraform may silently fall back to copying provider plugins instead of symlinking, which can increase disk usage and slow down operations. For OpenTofu >= 1.12.0, the tip includes guidance on using `TF_LOG=warn` to detect the fallback.

Thank you to the OpenTofu team for introducing this warning to ensure that Windows users are aware of the fallback behavior.

### 🐛 Bug Fixes

---

#### `hcl validate` no longer fails on `dependency.outputs` references

`terragrunt hcl validate` previously failed with "Unsupported attribute" when a configuration referenced `dependency.<name>.outputs.<key>` without `mock_outputs`. 

During validation, output resolution is skipped, but the `outputs` attribute was never added to the dependency evaluation context, causing any output reference to error. The fix provides a dynamic placeholder for dependency outputs (and inputs) during validation so that attribute access evaluates to unknown rather than failing. Additionally, the dependency resolution pipeline is now more resilient during validation. Dependencies with unresolvable `config_path` values or nonexistent targets no longer cause the entire `dependency` namespace to disappear from the evaluation context.

#### Destroy queue now displays units in correct order

Previously, the run queue display showed units in apply order even for destroy commands. The queue now correctly shows dependents before their dependencies when running destroy, matching the actual execution order.

#### Dependent discovery fixed in worktrees

Dependents are now correctly discovered when units are discovered in worktrees. Previously, dependent discovery could fail to find related units when operating within a git worktree.

#### Filter exclusions now respected in worktree sub-discoveries

Negated filters (e.g., `!./catalog/**` from `.terragrunt-filters` or `--filter`) are now propagated to worktree sub-discoveries used by git-based filtering (`--filter-affected`, `--filter '[ref...ref]'`).

Previously, excluded source catalog units in worktrees were still discovered and parsed, causing errors when they referenced `values.*` or `dependency.*` variables without the stack generation context.

#### `read_terragrunt_config()` behavior in implicit stacks fixed

A regression introduced in v0.99.4 caused `read_terragrunt_config()` to fail to parse `dependency` blocks in external configurations during stack execution. This is fixed by resetting parsing context fields that prevented proper evaluation of dependencies in configurations read by `read_terragrunt_config()`.

#### `get_original_terragrunt_dir()` now resolves correctly during dependency parsing

A regression introduced in `v1.0.0-rc3` caused `get_original_terragrunt_dir()` to return the dependent directory instead of the dependency's directory when parsing dependency configurations from a unit. 

This broke configurations where a dependency's `read_terragrunt_config()` chain relied on `get_original_terragrunt_dir()` to locate sibling files. The fix introduces a dedicated `WithDependencyConfigPath` method that correctly resets the original config path when parsing a dependency as an independent unit.

#### Chained dependency with exposed include conversion fixed

Chaining dependencies with exposed includes no longer produces a spurious "Could not convert include to the execution ctx to evaluate additional locals" error during partial parsing.

#### Provider cache fixed on Windows for remote URLs

The provider cache failed on Windows with `CreateFile https://...: The filename, directory name, or volume label syntax is incorrect` because remote download URLs were passed to `os.Stat`, and the colon in `https:` is invalid Windows path syntax. The fix skips the filesystem existence check when the download URL is a remote URL (`://`), going directly to the download path.

#### Additional transient network errors now retried automatically

Added retry patterns for provider resolution and registry connection failures commonly seen in CI environments, including TLS handshake timeouts, TCP connection resets, context deadline exceeded errors, and failed discovery document requests. These cover both Terraform and OpenTofu provider workflows.

### ⚙️ Process Updates

---

#### Tip builds now available from `main`

Every successful CI run on the `main` branch now automatically produces tip build binaries with signed checksums for all supported platforms (Windows and macOS binaries are not codesigned in tip builds). These builds are accessible via the builds API at `https://builds.terragrunt.com` — see the [releases process documentation](/process/releases#tip-builds) for API endpoints and usage examples. Maintainers can also trigger on-demand test builds from any branch using the `test-build.yml` workflow.

#### Concurrency limits now respect `GOMAXPROCS`

All internal concurrency limits now use `runtime.GOMAXPROCS(0)` instead of `runtime.NumCPU()`. This means Terragrunt correctly honors the `GOMAXPROCS` environment variable and container CPU quotas (e.g., cgroups), resulting in better behavior in resource-constrained environments like Kubernetes pods and CI runners with CPU limits.

#### AWS SDK updated to v1.41.5

The `aws-sdk-go-v2` dependency has been updated to v1.41.5.

#### Terragrunt Scale documentation added

A new [Terragrunt Scale](/terragrunt-scale/overview) section has been added to the docs, covering [Pipelines](/terragrunt-scale/pipelines), [Drift Detection](/terragrunt-scale/drift-detection), and [Patcher](/terragrunt-scale/patcher) with brief overviews and links to the full [Gruntwork documentation](https://docs.gruntwork.io).
