v1.15.0-rc4
Release candidate 1.15.0 adds Windows ARM64 builds, deprecated attribute support for variables and outputs, S3 AWS login authentication, backend validation in the validate command, a new convert function for inline type conversions, and support for variables and locals in module source and version attributes. Includes numerous enhancements and bug fixes.
1.15.0-rc4 (April 28, 2026)
NEW FEATURES:
-
We now produce builds for Windows ARM64 (#32719)
-
You can set a
deprecatedattribute on variable and output blocks to indicate that they are deprecated. This will produce warnings when passing in a value for a deprecated variable or when referencing a deprecated output. (#38001) -
backend/s3: Support authentication via
aws login(#37976) -
validate: The validate command now checks the
backendblock. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021) -
convertfunction, which allows for precise inline type conversions (#38160) -
Terraform now supports variables and locals in module source and version attributes (#38217)
ENHANCEMENTS:
-
config:
outputblocks now can have an explicit type constraints (#36411) -
ssh-based provisioner (file + remote-exec): Re-enable support for PowerShell (#37794)
-
terraform init log timestamps include millisecond precision (#37818)
-
init: skip dependencies declared in development override. This allows you to use
terraform initwith developer overrides and install dependencies that are not declared in the override file. (#37884) -
Terraform Test: Allow functions within mock blocks (#34672)
-
improve detection of deprecated resource attributes / blocks (#38077)
-
Deprecation messages providers set on resources / blocks / attributes are now part of the deprecation warning (#38135)
-
Include which attribute paths are marked as sensitive in list_start JSON logs (#38197)
-
Add input variable validation for Stacks (#38240)
-
When comparing a container value to null, only top level marks are now considered for the result. (#38270)
-
As part of supporting variables in module sources, most commands now accept variable values (#38276)
BUG FIXES:
-
testing: File-level error diagnostics are now included in JUnit XML skipped test elements, ensuring CI/CD pipelines can detect validation failures (#37801)
-
A refresh-only plan could result in a non-zero exit code with no changes (#37406)
-
cli: Fixed crash in
terraform show -jsonwhen plan contains ephemeral resources with preconditions or postconditions (#37834) -
cli: Fixed
terraform init -jsonto properly format all backend configuration messages as JSON instead of plain text (#37911) -
state show: Thestate showcommand will now explicitly fail and return code 1 when it fails to render the named resources state (#37933) -
apply: Terraform will raise an explicit error if a plan file intended for one workspace is applied against another workspace (#37954)
-
lifecycle:
replace_triggered_bynow reports an error when given an invalid attribute reference that does not exist in the target resource (#36740) -
backend: Fix nil pointer dereference crash during
terraform initwhen the destination backend returns an error (#38027) -
stacks: send progress events if the plan fails for better UI integration (#38039)
-
stacks: component instances should report no-op plan/apply. This solves a UI inconsistency with convergence destroy plans (#38049)
-
backend/http: Return conflicting lock info from HTTP backend instead of the lock that failed to be taken (#38144)
-
states: fixed a bug that caused Terraform to be unable to identify when two states had different output values. This may have caused issues in specific circumstances like backend migrations. (#38181)
-
cloud: terraform cloud and registry discovery network requests are now more resilient, making temporary network or service related errors less common (#38064)
-
Enable formatting of
.tfquery.hclfiles byterraform fmt(#38398) -
Fix
validatenot returning JSON for some early diagnostics (#38400) -
Fix Terraform Stacks plugin installation error (#38406)
NOTES:
- command/init: Provider installation was refactored to enable future enhancements in the area. This results in different order of operations during init and 2 new log messages replacing one (
initializing_provider_plugin_message). The change should not have any end-user impact aside from theinitcommand output. (#38227)
UPGRADE NOTES:
- backend/s3: The
AWS_USE_FIPS_ENDPOINTandAWS_USE_DUALSTACK_ENDPOINTenvironment variables now only respecttrueorfalsevalues, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value astrue. (#37601)
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
Source: original entry ↗
More from Terraform
Follow Terraform to get its new changes in your feed and email digest.
Terraform 1.17.0-rc1 release
Release candidate 1.17.0 introduces Terraform Policy as generally available (removing experimental flags), adds support for variables and locals in provider requirements, includes a new -minimal-refresh planning option for efficiency, and fixes critical bugs in function evaluation and ephemeral resource handling.
Terraform v1.16.5
This patch release fixes a crash when processing tainted instance state without a valid status and resolves an issue where resource identity could be nil during delete operations.
Terraform v1.17.0-beta2
This beta release introduces variables and locals support in provider requirements, a new minimal-refresh planning option to improve performance, and makes Terraform Policy generally available without requiring experimental flags. It also includes enhancements to logging, ephemeral resource handling, and policy queries, along with bug fixes for math functions and dependency ordering.