# terraform v1.16.0-rc1 - Product: terraform (https://whatsnew.fyi/product/terraform) - Vendor: terraform - Date: 2026-08-12 - Version: v1.16.0-rc1 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-rc1 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-rc1 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Terraform now stores planned private data for providers, allowing provider-specific state to be preserved across plan and apply - **added** — The new `store` block in `terraform_data` can hold ephemeral and sensitive values across plan and apply - **added** — Providers can now use nested blocks as computed values - **added** — import blocks inside modules are now supported - **added** — Terraform is now available as a pre-built binary for Linux s390x (zLinux) - **added** — Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` - **added** — The `state show` command can now produce machine-readable output when supplied with the `-json` flag - **added** — The `workspace list` command can now produce machine-readable output when supplied with the `-json` flag - **added** — Action configurations now have access to a `caller` symbol containing the object value of the calling resource - **added** — Actions can now use `before_destroy` and `after_destroy` events - **added** — The `terraform graph` command can now output graphs in Mermaid format using the `-format=mermaid` flag - **added** — Resource `lifecycle` blocks now support `destroy = false` to prevent a resource from being destroyed - **added** — The `contains()` function can now test for `null` values - **added** — The `terraform console` command now accepts an optional `-scope=` flag to evaluate expressions within the scope of a module or a specific module instance - **changed** — Terraform now displays a summary of policy evaluation outcomes for `plan` and `apply` runs against HCP Terraform - **changed** — Terraform now resolves policy plugin credentials from the configured cloud or remote backend during `init`, `plan`, and `apply` - **changed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **changed** — The `terraform stacks` command now automatically infers the target hostname from the local credentials file when neither `TF_STACKS_HOSTNAME` nor `TF_CLOUD_HOSTNAME` is set - **changed** — Terraform now reports which resources were left behind when `skip_cleanup` is set in tests - **fixed** — import blocks now correctly respect provider local names ##### 1.16.0-rc1 (August 12, 2026) NEW FEATURES: * Terraform now stores planned private data for providers, allowing provider-specific state to be preserved across plan and apply. ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * `terraform_data`: The new `store` block can hold ephemeral and sensitive values across plan and apply. ([#38298](https://github.com/hashicorp/terraform/issues/38298)) * Providers can now use nested blocks as computed values ([#38305](https://github.com/hashicorp/terraform/issues/38305)) * import: `import` blocks inside modules are now supported. ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * Terraform is now available as a pre-built binary for Linux s390x (zLinux). ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue`. ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * state show: The `state show` command can now produce machine-readable output when supplied with the `-json` flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * workspace: The `workspace list` command can now produce machine-readable output when supplied with the `-json` flag ([#38397](https://github.com/hashicorp/terraform/issues/38397)) * test: Terraform now reports which resources were left behind when `skip_cleanup` is set. ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * stacks: Action configurations now have access to a `caller` symbol containing the object value of the calling resource. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) * Actions can now use `before_destroy` and `after_destroy` events. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) * cloud: Terraform now displays a summary of policy evaluation outcomes for `plan` and `apply` runs against HCP Terraform. ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Terraform now resolves policy plugin credentials from the configured cloud or remote backend during `init`, `plan`, and `apply`, rather than requiring the plugin to read credentials itself. ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * graph: The `terraform graph` command can now output graphs in Mermaid format using the `-format=mermaid` flag. ([#38719](https://github.com/hashicorp/terraform/issues/38719)) * Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings. ([#38778](https://github.com/hashicorp/terraform/issues/38778)) * Resource `lifecycle` blocks now support `destroy = false` to prevent a resource from being destroyed. ([#38784](https://github.com/hashicorp/terraform/issues/38784)) * The `contains()` function can now test for `null` values. ([#38792](https://github.com/hashicorp/terraform/issues/38792)) * console: The `terraform console` command now accepts an optional `-scope=` flag, which can be used to evaluate expressions within the scope of a module or a specific module instance. ([#31861](https://github.com/hashicorp/terraform/issues/31861)) * `-invoke` can now be combined with `-target` to specify the calling resource instance when multiple resources trigger the same action. ([#38845](https://github.com/hashicorp/terraform/issues/38845)) * The `terraform stacks` command now automatically infers the target hostname from the local credentials file (`credentials.tfrc.json`) when neither `TF_STACKS_HOSTNAME` nor `TF_CLOUD_HOSTNAME` is set ([#38896](https://github.com/hashicorp/terraform/issues/38896)) BUG FIXES: * `import` blocks now correctly respect provider local names. ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * `terraform apply` no longer panics when the plan contains a no-op change for a deposed resource that has `lifecycle.precondition` or `lifecycle.postcondition` blocks. ([#38586](https://github.com/hashicorp/ _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-rc1]_