releases.shpreview
HashiCorp/Terraform

Terraform

$npx -y @buildinternet/releases show terraform
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases12Avg4/moVersionsv1.14.4 → v1.15.0-rc2
Apr 15, 2026

1.15.0-rc2 (April 15, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

  • convert function, which allows for precise inline type conversions (#38160)

  • Terraform now supports variables and locals in module source and version attributes (#38217)

ENHANCEMENTS:

  • config: output blocks 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 init with 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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

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 the init command output. (#38227)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Apr 9, 2026

1.15.0-rc1 (April 09, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

  • convert function, which allows for precise inline type conversions (#38160)

  • Terraform now supports variables and locals in module source and version attributes (#38217)

ENHANCEMENTS:

  • config: output blocks 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 init with 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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

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 the init command output. (#38227)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Apr 1, 2026

1.15.0-beta2 (April 01, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

  • convert function, which allows for precise inline type conversions (#38160)

  • Terraform now supports variables and locals in module source and version attributes (#38217)

ENHANCEMENTS:

  • config: output blocks 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 init with 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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

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 the init command output. (#38227)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Mar 25, 2026

1.14.8 (March 25, 2026)

BUG FIXES:

  • Prevent crash in the display of relevant attributes after provider upgrades (#38264)
Mar 18, 2026

1.15.0-beta1 (March 18, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

  • convert function, which allows for precise inline type conversions (#38160)

  • Terraform now supports variables and locals in module source and version attributes (#38217)

ENHANCEMENTS:

  • config: output blocks 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 init with 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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

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 the init command output. (#38227)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Mar 11, 2026

1.14.7 (March 11, 2026)

NOTES:

  • Bump Go version to 1.25.8 to suppress security scanner false positives (#38249)
Mar 4, 2026

1.15.0-alpha20260304 (March 04, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

  • convert function, which allows for precise inline type conversions (#38160)

  • Terraform now supports variables and locals in module source and version attributes (#38217)

ENHANCEMENTS:

  • 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 init with 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)

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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

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 the init command output. (#38227)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

EXPERIMENTS:

Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.

  • The experimental "deferred actions" feature, enabled by passing the -allow-deferral option to terraform plan, permits count and for_each arguments in module, resource, and data blocks to have unknown values and allows providers to react more flexibly to unknown values.
  • terraform test cleanup: The experimental test cleanup command. In experimental builds of Terraform, a manifest file and state files for each failed cleanup operation during test operations are saved within the .terraform local directory. The test cleanup command will attempt to clean up the local state files left behind automatically, without requiring manual intervention.
  • terraform test: backend blocks and skip_cleanup attributes:
    • Test authors can now specify backend blocks within run blocks in Terraform Test files. Run blocks with backend blocks will load state from the specified backend instead of starting from empty state on every execution. This allows test authors to keep long-running test infrastructure alive between test operations, saving time during regular test operations.
    • Test authors can now specify skip_cleanup attributes within test files and within run blocks. The skip_cleanup attribute tells terraform test not to clean up state files produced by run blocks with this attribute set to true. The state files for affected run blocks will be written to disk within the .terraform directory, where they can then be cleaned up manually using the also experimental terraform test cleanup command.

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Feb 25, 2026

1.14.6 (February 25, 2026)

BUG FIXES:

  • terraform test: return error when provider config is invalid (#38084)
Feb 18, 2026

1.15.0-alpha20260218 (February 18, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 backend block. This ensures the backend type exists, that all required attributes are present, and that the backend's own validation logic passes. (#38021)

ENHANCEMENTS:

  • 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 init with 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)

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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when 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)

  • 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)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

EXPERIMENTS:

Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.

  • The experimental "deferred actions" feature, enabled by passing the -allow-deferral option to terraform plan, permits count and for_each arguments in module, resource, and data blocks to have unknown values and allows providers to react more flexibly to unknown values.
  • terraform test cleanup: The experimental test cleanup command. In experimental builds of Terraform, a manifest file and state files for each failed cleanup operation during test operations are saved within the .terraform local directory. The test cleanup command will attempt to clean up the local state files left behind automatically, without requiring manual intervention.
  • terraform test: backend blocks and skip_cleanup attributes:
    • Test authors can now specify backend blocks within run blocks in Terraform Test files. Run blocks with backend blocks will load state from the specified backend instead of starting from empty state on every execution. This allows test authors to keep long-running test infrastructure alive between test operations, saving time during regular test operations.
    • Test authors can now specify skip_cleanup attributes within test files and within run blocks. The skip_cleanup attribute tells terraform test not to clean up state files produced by run blocks with this attribute set to true. The state files for affected run blocks will be written to disk within the .terraform directory, where they can then be cleaned up manually using the also experimental terraform test cleanup command.

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Feb 11, 2026

1.14.5 (February 11, 2026)

BUG FIXES:

  • Fixed an issue where terraform stacks validate was failing to resolve relative paths for modules (#38025)
Feb 4, 2026

1.15.0-alpha20260204 (February 04, 2026)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

  • You can set a deprecated attribute 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 (#37967)

ENHANCEMENTS:

  • 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 init with 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)

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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command 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_by now 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 init when the destination backend returns an error (#38027)

  • stacks: send progress events if the plan fails for better UI integration (#38039)

  • cloud: terraform cloud and registry discovery network requests are now more resilient, making temporary network or service related errors less common (#38064)

  • stacks: component instances should report no-op plan/apply. This solves a UI inconsistency with convergence destroy plans (#38049)

UPGRADE NOTES:

  • backend/s3: The AWS_USE_FIPS_ENDPOINT and AWS_USE_DUALSTACK_ENDPOINT environment variables now only respect true or false values, aligning with the AWS SDK for Go. This replaces the previous behavior which treated any non-empty value as true. (#37601)

EXPERIMENTS:

Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.

  • The experimental "deferred actions" feature, enabled by passing the -allow-deferral option to terraform plan, permits count and for_each arguments in module, resource, and data blocks to have unknown values and allows providers to react more flexibly to unknown values.
  • terraform test cleanup: The experimental test cleanup command. In experimental builds of Terraform, a manifest file and state files for each failed cleanup operation during test operations are saved within the .terraform local directory. The test cleanup command will attempt to clean up the local state files left behind automatically, without requiring manual intervention.
  • terraform test: backend blocks and skip_cleanup attributes:
    • Test authors can now specify backend blocks within run blocks in Terraform Test files. Run blocks with backend blocks will load state from the specified backend instead of starting from empty state on every execution. This allows test authors to keep long-running test infrastructure alive between test operations, saving time during regular test operations.
    • Test authors can now specify skip_cleanup attributes within test files and within run blocks. The skip_cleanup attribute tells terraform test not to clean up state files produced by run blocks with this attribute set to true. The state files for affected run blocks will be written to disk within the .terraform directory, where they can then be cleaned up manually using the also experimental terraform test cleanup command.

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

Jan 28, 2026

1.14.4 (January 28, 2026)

BUG FIXES:

  • backend: Fix nil pointer dereference crash during terraform init when 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)

Dec 17, 2025

1.14.3 (December 17, 2025)

BUG FIXES:

  • stacks: change absolute paths in path.module/path.root to be relative, as documented (#37982)
Dec 11, 2025

1.14.2 (December 11, 2025)

ENHANCEMENTS:

  • Add component registry source resolution support to Terraform Stacks (#37888)

BUG FIXES:

  • stacks: surface runtime issues with local values to user during plan (#37980)

  • resource instance apply failures should not cause the resource instance state to be empty. (#37981)

Dec 3, 2025

1.15.0-alpha20251203 (December 03, 2025)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

ENHANCEMENTS:

  • 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 init with developer overrides and install dependencies that are not declared in the override file. (#37884)

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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

  • cli: Fixed terraform init -json to properly format all backend configuration messages as JSON instead of plain text (#37911)

  • state show: The state show command will now explicitly fail and return code 1 when it fails to render the named resources state (#37933)

EXPERIMENTS:

Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.

  • The experimental "deferred actions" feature, enabled by passing the -allow-deferral option to terraform plan, permits count and for_each arguments in module, resource, and data blocks to have unknown values and allows providers to react more flexibly to unknown values.
  • terraform test cleanup: The experimental test cleanup command. In experimental builds of Terraform, a manifest file and state files for each failed cleanup operation during test operations are saved within the .terraform local directory. The test cleanup command will attempt to clean up the local state files left behind automatically, without requiring manual intervention.
  • terraform test: backend blocks and skip_cleanup attributes:
    • Test authors can now specify backend blocks within run blocks in Terraform Test files. Run blocks with backend blocks will load state from the specified backend instead of starting from empty state on every execution. This allows test authors to keep long-running test infrastructure alive between test operations, saving time during regular test operations.
    • Test authors can now specify skip_cleanup attributes within test files and within run blocks. The skip_cleanup attribute tells terraform test not to clean up state files produced by run blocks with this attribute set to true. The state files for affected run blocks will be written to disk within the .terraform directory, where they can then be cleaned up manually using the also experimental terraform test cleanup command.

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

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 GenerateResourceConfig RPC (#37896)

  • actions: make after_create & after_update actions run after the resource has applied (#37936)

Nov 19, 2025

1.15.0-alpha20251119 (November 19, 2025)

NEW FEATURES:

  • We now produce builds for Windows ARM64 (#32719)

ENHANCEMENTS:

  • ssh-based provisioner (file + remote-exec): Re-enable support for PowerShell (#37794)

  • init: skip dependencies declared in development override. This allows you to use terraform init with developer overrides and install dependencies that are not declared in the override file. (#37884)

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 -json when plan contains ephemeral resources with preconditions or postconditions (#37834)

EXPERIMENTS:

Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.

  • The experimental "deferred actions" feature, enabled by passing the -allow-deferral option to terraform plan, permits count and for_each arguments in module, resource, and data blocks to have unknown values and allows providers to react more flexibly to unknown values.
  • terraform test cleanup: The experimental test cleanup command. In experimental builds of Terraform, a manifest file and state files for each failed cleanup operation during test operations are saved within the .terraform local directory. The test cleanup command will attempt to clean up the local state files left behind automatically, without requiring manual intervention.
  • terraform test: backend blocks and skip_cleanup attributes:
    • Test authors can now specify backend blocks within run blocks in Terraform Test files. Run blocks with backend blocks will load state from the specified backend instead of starting from empty state on every execution. This allows test authors to keep long-running test infrastructure alive between test operations, saving time during regular test operations.
    • Test authors can now specify skip_cleanup attributes within test files and within run blocks. The skip_cleanup attribute tells terraform test not to clean up state files produced by run blocks with this attribute set to true. The state files for affected run blocks will be written to disk within the .terraform directory, where they can then be cleaned up manually using the also experimental terraform test cleanup command.

Previous Releases

For information on prior major and minor releases, refer to their changelogs:

1.14.0 (November 19, 2025)

NEW FEATURES:

  • List Resources: List resources can be defined in *.tfquery.hcl files 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_invoke or aws_cloudfront_create_invalidation that 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 -invoke CLI 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 stacks command support for -help flag (#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:

Nov 5, 2025

1.14.0-rc2 (November 05, 2025)

NEW FEATURES:

  • List Resources: List resources can be defined in *.tfquery.hcl files 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_invoke or aws_cloudfront_create_invalidation that 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 -invoke CLI 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 stacks command support for -help flag (#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:

1.13.5 (November 5, 2025)

BUG FIXES:

  • impure functions could cause templatefile to incorrectly fail consistency checks (#37807)

  • Allow filesystem functions to return inconsistent results when evaluated within provider configuration (#37854)

Previous123Next
Latest
v1.15.0-rc2
Tracking Since
Jun 19, 2024
Last fetched Apr 19, 2026