# terraform changelog > terraform release notes. - Vendor: terraform - Category: Developer Tools - Official site: http://developer.hashicorp.com/terraform - Tracked by: What's New (https://whatsnew.fyi/product/terraform) - Harvested from: GitHub (hashicorp/terraform) - Entries below: 10 (newest first) 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. ## Releases ### v1.16.0-beta1 - Date: 2026-07-23 - Version: v1.16.0-beta1 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-beta1 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-beta1 - Labels: Pre-release - **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` - **changed** — The `state show` command can now produce machine-readable output when supplied with the `-json` flag - **changed** — The `workspace list` command can now produce machine-readable output when supplied with the `-json` flag - **changed** — Terraform now reports which resources were left behind when `skip_cleanup` is set in tests - **changed** — Action configurations in stacks now have access to a `caller` symbol containing the object value of the calling resource - **changed** — Actions can now use `before_destroy` and `after_destroy` events - **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** — The `terraform graph` command can now output graphs in Mermaid format using the `-format=mermaid` flag - **changed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **changed** — Resource `lifecycle` blocks now support `destroy = false` to prevent a resource from being destroyed - **changed** — The `contains()` function can now test for `null` values - **changed** — The `terraform console` command now accepts an optional `-scope=` flag to evaluate expressions within the scope of a module or module instance - **changed** — The `-invoke` flag can now be combined with `-target` to specify the calling resource instance when multiple resources trigger the same action - **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 - **fixed** — Import blocks now correctly respect provider local names - **fixed** — 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 - **fixed** — Terraform now raises an error if an invalid workspace name becomes selected due to out-of-band changes - **fixed** — Terraform now raises a warning when a file referenced via the `-filter` flag does not exist - **fixed** — Terraform no longer removes locks from the dependency lock file for providers configured as `dev_override` - **fixed** — Terraform now warns when unmanaged providers are in use and may impact provider installation - **fixed** — Actions are now invoked with respect to all resource dependencies - **fixed** — Terraform now returns the correct error when an `import` target exists in state but has no corresponding configuration - **fixed** — The `merge()` function no longer panics when passed `null` objects ##### 1.16.0-beta1 (July 23, 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-beta1]_ ### v1.16.0-alpha20260715 - Date: 2026-07-15 - Version: v1.16.0-alpha20260715 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260715 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260715 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Add support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **changed** — terraform state show accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform - **changed** — Resolve the policy plugin entitlement from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself - **changed** — The terraform graph command now accepts a -format flag, and can output graphs in Mermaid format - **changed** — 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 - **changed** — Support destroy=false in resource lifecycle blocks - **changed** — The contains() function can now test for null - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ##### 1.16.0-alpha20260715 (July 15, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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: Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * The 'terraform graph' command now accepts a -format flag, and can output graphs in Mermaid format ([#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)) * Support destroy=false in resource lifecycle blocks. ([#38784](https://github.com/hashicorp/terraform/issues/38784)) * contains() function can now test for null ([#38792](https://github.com/hashicorp/terraform/issues/38792)) * 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)) * If `-invoke` results in multiple resource calls triggering the action, it can now be combined with `-target` to specify the calling resource instance ([#38845](https://github.com/hashicorp/terraform/issues/38845)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260715]_ ### v1.15.8 - Date: 2026-07-08 - Version: v1.15.8 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.15.8 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.15.8 - **fixed** — Fix terraform init error when installing providers sourced from a service-discovery alias advertised by the configured backend - **changed** — Provider installation logging re-introduces initializing_provider_plugin_message to replace initializing_provider_plugin_from_config_message and initializing_provider_plugin_from_state_message - **changed** — Module installation now occurs after the backend is initialized during provider installation ##### 1.15.8 (July 8, 2026) BUG FIXES: * Fix `terraform init` error when installing providers sourced from a service-discovery alias advertised by the configured backend (such as `localterraform.com`) NOTES: * command/init: Provider installation was changed to enable future enhancements in the area. This effectively reverses the log message changes from v1.15. `initializing_provider_plugin_message` is being re-introduced to replace the short-lived two message types `initializing_provider_plugin_from_config_message` & `initializing_provider_plugin_from_state_message`. The change should not have any significant end-user impact aside from the command output. ([#38838](https://github.com/hashicorp/terraform/issues/38838)) * command/init: Provider installation was changed to enable future enhancements in the area. This partially reverses the init event order changes from v1.15; module installation will now occur after the backend is initialized. The change should not have any significant end-user impact aside from the command output. ([#38838](https://github.com/hashicorp/terraform/issues/38838)) ### v1.16.0-alpha20260708 - Date: 2026-07-08 - Version: v1.16.0-alpha20260708 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260708 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260708 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Add support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **changed** — terraform state show command accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform - **changed** — Resolve the policy plugin entitlement from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself - **changed** — The terraform graph command now accepts a -format flag, and can output graphs in Mermaid format - **changed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **changed** — Support destroy=false in resource lifecycle blocks - **changed** — The contains() function can now test for null - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ##### 1.16.0-alpha20260708 (July 08, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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: Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * The 'terraform graph' command now accepts a -format flag, and can output graphs in Mermaid format ([#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)) * Support destroy=false in resource lifecycle blocks. ([#38784](https://github.com/hashicorp/terraform/issues/38784)) * contains() function can now test for null ([#38792](https://github.com/hashicorp/terraform/issues/38792)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) * return correct error when import target exists in state, but not config ([#38782](https://github.com/hashicorp/terraform/issues/38782)) * merge no longer panics with null objects ([#38792](htt _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260708]_ ### v1.16.0-alpha20260706 - Date: 2026-07-06 - Version: v1.16.0-alpha20260706 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260706 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260706 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Add support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **added** — The terraform state show command accepts a -json flag - **added** — The terraform graph command now accepts a -format flag and can output graphs in Mermaid format - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform - **changed** — Resolve the policy plugin entitlement from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself - **changed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **changed** — The contains() function can now test for null - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band - **fixed** — Terraform will now raise a warning when a file referenced via -filter flag does not exist - **fixed** — Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ##### 1.16.0-alpha20260706 (July 06, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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: Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * The 'terraform graph' command now accepts a -format flag, and can output graphs in Mermaid format ([#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)) * contains() function can now test for null ([#38792](https://github.com/hashicorp/terraform/issues/38792)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) * merge no longer panics with null objects ([#38792](https://github.com/hashicorp/terraform/issues/38792)) NOTES: * init: Errors due to incompatible `-upgrade` and `-lockfile=readonly` flags are now raised earlier in the init process. ([#38561](https://github.com/hashicorp/terraform/issues/38561)) * command/i _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260706]_ ### v1.16.0-alpha20260701 - Date: 2026-07-01 - Version: v1.16.0-alpha20260701 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260701 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260701 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Add support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **changed** — terraform state show accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform - **changed** — Resolve the policy plugin entitlement from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself - **changed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **changed** — contains() function can now test for null - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band - **fixed** — Terraform will now raise a warning when a file referenced via -filter flag does not exist - **fixed** — Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ##### 1.16.0-alpha20260701 (July 01, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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: Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings. ([#38778](https://github.com/hashicorp/terraform/issues/38778)) * contains() function can now test for null ([#38792](https://github.com/hashicorp/terraform/issues/38792)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) * merge no longer panics with null objects ([#38792](https://github.com/hashicorp/terraform/issues/38792)) NOTES: * init: Errors due to incompatible `-upgrade` and `-lockfile=readonly` flags are now raised earlier in the init process. ([#38561](https://github.com/hashicorp/terraform/issues/38561)) * command/init: Provider installation was changed to enable future enhancements in the area. This effectively reverses the log message changes from v1.15. `initializing_provide _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260701]_ ### v1.16.0-alpha20260626 - Date: 2026-06-26 - Version: v1.16.0-alpha20260626 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260626 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260626 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Add support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **added** — terraform state show accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **added** — Actions can now use before_destroy and after_destroy events - **added** — Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform - **changed** — Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself - **fixed** — Child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band - **fixed** — Terraform will now raise a warning when a file referenced via -filter flag does not exist - **fixed** — Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override - **fixed** — Add warnings when unmanaged providers are in use and will impact provider installation processes ##### 1.16.0-alpha20260626 (June 26, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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: Render a summary of Terraform policy evaluation outcomes for plan and apply runs against HCP Terraform ([#38715](https://github.com/hashicorp/terraform/issues/38715)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) * child module outputs with unreferenced deprecated nested attributes no longer return deprecation warnings. ([#38778](https://github.com/hashicorp/terraform/issues/38778)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) NOTES: * init: Errors due to incompatible `-upgrade` and `-lockfile=readonly` flags are now raised earlier in the init process. ([#38561](https://github.com/hashicorp/terraform/issues/38561)) * command/init: Provider installation was changed to enable future enhancements in the area. This effectively reverses the log message changes from v1.15. `initializing_provider_plugin_message` is being re-introduced to replace the short-lived two message types `initializing_provider_plugin_from_config_message` & `initializing_provider_plugin_from_state_message`. The change should not have _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260626]_ ### v1.15.7 - Date: 2026-06-24 - Version: v1.15.7 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.15.7 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.15.7 - **fixed** — Add concurrency safety to configs.Parser and SourceBundleParser - **fixed** — Fix submodule variable validation during init ##### 1.15.7 (June 24, 2026) BUG FIXES: * Add concurrency safety to configs.Parser and SourceBundleParser ([#38745](https://github.com/hashicorp/terraform/issues/38745)) * Fix submodule variable validation during init ([#38770](https://github.com/hashicorp/terraform/issues/38770)) ### v1.16.0-alpha20260624 - Date: 2026-06-24 - Version: v1.16.0-alpha20260624 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260624 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260624 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **changed** — The terraform state show command now accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Policy plugin entitlement is now resolved from the configured cloud/remote backend for init, plan, and apply instead of the plugin reading credentials itself - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix a terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band - **fixed** — Terraform will now raise a warning when a file referenced via -filter flag does not exist - **fixed** — Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override - **fixed** — Add warnings when unmanaged providers are in use and will impact provider installation processes - **fixed** — Actions are now invoked with respect to all resource dependencies ##### 1.16.0-alpha20260624 (June 24, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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)) * policy: Resolve the policy plugin entitlement (host, token, organization) from the configured cloud/remote backend for init, plan, and apply, instead of the plugin reading credentials itself ([#38716](https://github.com/hashicorp/terraform/issues/38716)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) NOTES: * init: Errors due to incompatible `-upgrade` and `-lockfile=readonly` flags are now raised earlier in the init process. ([#38561](https://github.com/hashicorp/terraform/issues/38561)) * command/init: Provider installation was changed to enable future enhancements in the area. This effectively reverses the log message changes from v1.15. `initializing_provider_plugin_message` is being re-introduced to replace the short-lived two message types `initializing_provider_plugin_from_config_message` & `initializing_provider_plugin_from_state_message`. The change should not have any significant end-user impact aside from the command output. ([#38648](https://github.com/hashicorp/terraform/issues/38648)) * command/init: Provider installation was changed to enable future enhancements in the area. This partially reverses the init event order changes from v1.15; module installation will now occur after the backend is initializ _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260624]_ ### v1.16.0-alpha20260617 - Date: 2026-06-17 - Version: v1.16.0-alpha20260617 - Original notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260617 - Permalink: https://whatsnew.fyi/product/terraform/releases/v1.16.0-alpha20260617 - Labels: Pre-release - **added** — Store PlannedPrivate data for providers - **added** — New store block in terraform_data that can handle ephemeral and sensitive values - **added** — Providers can now use nested blocks as computed values - **added** — Support for import blocks inside modules - **added** — Produce builds for Linux s390x (zLinux) - **added** — The workspace list command can now produce machine-readable output when supplied with the -json flag - **added** — Resource action triggers can now use on_failure modes of halt, taint, or continue - **changed** — terraform state show command accepts a -json flag - **changed** — Show info when resources are left behind due to skip_cleanup - **changed** — Action configuration now has a new caller symbol which contains the object value from the calling resource - **changed** — Actions can now use before_destroy and after_destroy events - **changed** — Actions are now invoked with respect to all resource dependencies - **fixed** — Import blocks no longer ignore provider local names - **fixed** — Fix terraform apply panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a lifecycle.precondition or lifecycle.postcondition - **fixed** — Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band - **fixed** — Terraform will now raise a warning when a file referenced via -filter flag does not exist - **fixed** — Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override - **fixed** — Add warnings when unmanaged providers are in use and will impact provider installation processes - **changed** — Errors due to incompatible -upgrade and -lockfile=readonly flags are now raised earlier in the init process ##### 1.16.0-alpha20260617 (June 17, 2026) NEW FEATURES: * Store PlannedPrivate data for providers ([#37986](https://github.com/hashicorp/terraform/issues/37986)) * New store block in terraform_data that can handle ephemeral and sensitive values ([#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: add support for import blocks inside modules ([#38352](https://github.com/hashicorp/terraform/issues/38352)) * We now produce builds for Linux s390x (zLinux) ([#38384](https://github.com/hashicorp/terraform/issues/38384)) * 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)) * Resource action triggers can now use `on_failure` modes of `halt`, `taint`, or `continue` ([#38722](https://github.com/hashicorp/terraform/issues/38722)) ENHANCEMENTS: * feat(cli): terraform state show accepts a -json flag ([#23940](https://github.com/hashicorp/terraform/issues/23940)) * Show info when resources are left behind due to skip_cleanup ([#38449](https://github.com/hashicorp/terraform/issues/38449)) * Action configuration now has a new `caller` symbol which contains the object value from 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)) BUG FIXES: * import blocks no longer ignore provider local names ([#38338](https://github.com/hashicorp/terraform/issues/38338)) * Fix a `terraform apply` panic when the plan contained a no-op change for a deposed object on a resource whose configuration declared a `lifecycle.precondition` or `lifecycle.postcondition` ([#38586](https://github.com/hashicorp/terraform/issues/38586)) * workspace: Terraform will now error if an invalid workspace name becomes selected due to actions performed out-of-band ([#38594](https://github.com/hashicorp/terraform/issues/38594)) * test: Terraform will now raise a warning when a file referenced via `-filter` flag does not exist. ([#38603](https://github.com/hashicorp/terraform/issues/38603)) * init: Stop removing locks from the dependency lock file corresponding to providers configured as a dev_override ([#38634](https://github.com/hashicorp/terraform/issues/38634)) * init: Add warnings when unmanaged providers are in use and will impact provider installation processes. ([#38656](https://github.com/hashicorp/terraform/issues/38656)) * Actions are now invoked with respect to all resource dependencies. ([#38668](https://github.com/hashicorp/terraform/issues/38668)) NOTES: * init: Errors due to incompatible `-upgrade` and `-lockfile=readonly` flags are now raised earlier in the init process. ([#38561](https://github.com/hashicorp/terraform/issues/38561)) * command/init: Provider installation was changed to enable future enhancements in the area. This effectively reverses the log message changes from v1.15. `initializing_provider_plugin_message` is being re-introduced to replace the short-lived two message types `initializing_provider_plugin_from_config_message` & `initializing_provider_plugin_from_state_message`. The change should not have any significant end-user impact aside from the command output. ([#38648](https://github.com/hashicorp/terraform/issues/38648)) * command/init: Provider installation was changed to enable future enhancements in the area. This partially reverses the init event order changes from v1.15; module installation will now occur after the backend is initialized. The change should not have any significant end-user impact aside from the command output. ([#38699](https://github.com/hashicorp/terraform/issues/38699)) UPGRADE NOTES: * Provisioner bastion_host_key is now correctly applied. Existing usage of bastion _[Truncated at 4000 characters — full notes: https://github.com/hashicorp/terraform/releases/tag/v1.16.0-alpha20260617]_