Terraform
1.15.3 (May 13, 2026)
BUG FIXES:
-
stacks: Fixed a bug that prevented migrating resources under multiple layers of module nesting with implicit provider configuration. (#38528)
-
cloud backend will now forward -generate-config-out flag usage to query create request (#38539)
-
Fix crash during provider installation when there is no config (#38560)
1.15.1 (May 1, 2026)
BUG FIXES:
-
Fixed crash when configuration has an invalid
action_triggernested block indataorephemerallifecycle blocks (#38402) -
validate: Removed validation of attributes inside
backendblocks due to incompatibility with workflows using the-backend-configflag. (#38466) -
Fix non-const variable checks on
init(#38470) -
Avoid warnings in 'terraform output -raw' (#38487)
-
Ignore undeclared variable values from the cloud backend (#38490)
-
Fix panic for types modules with no expanded instances (#38491)
-
Fixed "unknown provider function" errors occurring during init (#38472)
-
init: Fixed a bug that impacted use of provider pre-releases during init (#38496)
1.15.0 (April 29, 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:
1.14.4 (January 28, 2026)
BUG FIXES:
-
backend: Fix nil pointer dereference crash during
terraform initwhen the destination backend returns an error (#38027) -
Fixes an issue where any warning diagnostics generated during terraform query execution failed to render in the cloud backend session (#38040)
-
actions in modules without instances failed the plan graph (#38089)
1.14.2 (December 11, 2025)
ENHANCEMENTS:
- Add component registry source resolution support to Terraform Stacks (#37888)
BUG FIXES:
1.14.1 (December 3, 2025)
BUG FIXES:
-
test: allow ephemeral outputs in root modules (#37813)
-
Combinations of replace_triggered_by and -replace could result in some instances not being replaced (#37833)
-
providers lock: include providers required by terraform test (#37851)
-
Set state information in the proto request for the
GenerateResourceConfigRPC (#37896) -
actions: make after_create & after_update actions run after the resource has applied (#37936)
1.14.0 (November 19, 2025)
NEW FEATURES:
-
List Resources: List resources can be defined in
*.tfquery.hclfiles and allow querying and filterting existing infrastructure. -
A new Terraform command
terraform query: Executes list operations against existing infrastructure and displays the results. The command can optionally generate configuration for importing results into Terraform. -
A new GenerateResourceConfiguration RPC allows providers to create more precise configuration values during import. (#37515)
-
New top-level Actions block: Actions are provider defined and meant to codify use cases outside the normal CRUD model in your Terraform configuration. Providers can define Actions like
aws_lambda_invokeoraws_cloudfront_create_invalidationthat do something imparative outside of Terraforms normal CRUD model. You can configure such a side-effect with an action block and have actions triggered through the lifecycle of a resource or through passing the-invokeCLI flag. (#37553)
ENHANCEMENTS:
-
terraform test: expected diagnostics will be included in test output when running in verbose mode" (#37362)
-
terraform test: ignore prevent_destroy attribute during when cleaning up tests" (#37364)
-
terraform stackscommand support for-helpflag (#37645) -
query: support offline validation of query files via -query flag in the validate command (#37671)
-
Updates to support the AWS European Sovereign Cloud (#37721)
BUG FIXES:
-
Retrieve all workspace variables while doing a
terraform import, include variables inherited from variable sets but not overwritten by the workspace. (#37241) -
Fix OSS backend proxy support by adding a proxy layer for OSS backend operations. Resolves hashicorp/terraform#36897. (#36897)
-
console and test: return explicit diagnostics when referencing resources that were not included in the most recent operation. (#37663)
-
query: generate unique resource identifiers for results of expanded list resources (#37681)
-
The CLI now summarizes the number of actions invoked during
terraform apply, matching the plan output. (#37689) -
Allow filesystem functions to return inconsistent results when evaluated within provider configuration (#37854)
-
query: improve error handling for missing identity schemas (#37863)
UPGRADE NOTES:
-
The parallelism of Terraform operations within container runtimes may be reduced depending on the CPU bandwidth limit setting. (#37436)
-
Building Terraform 1.14 requires macOS Monterey or later (due to being built on Go 1.25 which imposes these requirements) (#37436)
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
