- Symbol Libraries are now available as an experimental feature to define re-usable functions and types in hcl-lang based libraries
- Basic linting support introduced with the -lint flag on supported commands
- Windows on ARM64 is now an officially-supported platform for OpenTofu
- New function convert allows converting a given value to a specified type constraint
- New functions with the prefix assume allow authors to give OpenTofu additional hints about what's expected as the final result of an unknown value
- The gcp_kms encryption key provider now supports an optional additional_authenticated_data as part of encryption and decryption operations
- The aws_kms encryption key provider now supports an encryption_context field allowing key-value string pairs to be passed to AWS KMS
- The openbao encryption key provider now accepts a new associated_data argument allowing a base64-encoded value to be passed to OpenBao
- The base64gzip function now generates results that are equivalent to but not equal to results from previous releases due to a new optimized DEFLATE compression implementation
- OpenTofu on macOS now requires macOS 13 Ventura or later
- SSH client implementation file format and wire format parsers are now more robust and may reject certain invalid input that was previously accepted
- OpenTofu now uses Unicode 17 algorithms and tables for all string processing based on Unicode specifications
- The cidrsubnets function now supports prefix extensions greater than 32 bits when the base CIDR block uses an IPv6 address
- When installing provider and module packages from OCI Distribution registries OpenTofu now tracks separate transient credentials for each repository
- The winrm connection type for provisioners is no longer supported
- OpenTofu v1.13 is the final release series that will include official builds for 32-bit CPU architectures
From OpenTofu
The v1.13.x release series is supported until August 1 2027.
1.13.0 (Unreleased)
UPGRADE NOTES:
-
The "winrm" connection type for provisioners is no longer supported. (#4012)
This connection type was deprecated in OpenTofu v1.12, and now removed in v1.13. Some of the upstream libraries OpenTofu was using to implement these features are no longer maintained, so it's not viable for us to offer this anymore.
Modern Windows versions now support OpenSSH, and so we suggest that anyone currently relying on WinRM plan to migrate to using SSH instead.
-
The
base64gzipfunction now generates results that are equivalent to but not equal to the results from previous releases, as a result of a new optimized DEFLATE compression implementation.If you use this function as part of an argument to a managed resource then OpenTofu is likely to propose to update or replace the instances of that resource, depending on how the provider responds to the differing base64 data. The new compressed form should nonetheless still decompress to the same sequence of bytes.
-
OpenTofu on macOS now requires macOS 13 Ventura or later. Earlier versions are no longer supported.
-
OpenTofu v1.13 is the final release series that will include official builds for 32-bit CPU architectures (
*_386and*_armplatforms).If you are currently relying on our official releases of OpenTofu on one of these platforms then we suggest that you begin planning to migrate to running OpenTofu on a 64-bit CPU architecture (
*_amd64or*_arm64platforms) before the v1.13 series reaches end-of-life.Third parties may continue to offer their own OpenTofu builds targeting platforms that we don't officially support. This only affects the official packages published directly by the OpenTofu project in this repository's release artifacts.
-
There are various minor changes to the robustness of file format and wire format parsers in the SSH client implementation used for remote provisioners.
This may cause certain invalid input that was previously accepted to now be rejected, in an attempt to better match the expectations of other implementations of these protocols and formats.
EXPERIMENTS:
-
Symbol Libraries are now available as an experimental feature (#4052)
This new feature adds the capaibility to define re-usable functions and types in hcl-lang based libraries. As this introduces a drastically different way of building modules and sharing functionality, we are looking for early feedback on the design of the language and how it integrates into OpenTofu workflows. If you are interested in this functionality, you can enable to experiment by adding the appropriate experiment to the experiments list in the language block. As it is experimental, it is subject to change before it is marked as stable and should not be relied upon in production.
-
Basic linting support introduced (#4310)
The linting support can be enabled by using the
-lintflag on the supported commands. By doing so, OpenTofu will run the selected linting rules against the configuration given to OpenTofu and will show warning diagnostics if any issue is found. The functionality is marked as experimental because this is just a first iteration and we want to see how users interact with it and how useful they find it.
ENHANCEMENTS:
- Windows on ARM64 is now an officially-supported platform for OpenTofu itself, though this new platform may not be supported by all available provider plugins. (#4450)
- New function
convertallows converting a given value to a specified type constraint. (#4449) - Various new functions named with the prefix
assume...allow authors to give OpenTofu additional hints about what's expected as the final result of an unknown value, potentially allowing more information to be known during the planning phase. (#4449) - OpenTofu now uses Unicode 17 algorithms and tables for all string processing that is based on Unicode specifications. (#4478)
- The
gcp_kmsencryption key provider now supports an optionaladditional_authenticated_dataas part of the encryption and decryption operations. (#4287) - The
aws_kmsencryption key provider now supports anencryption_contextfield, allowing key-value string pairs to be passed to AWS KMS with everyGenerateDataKeyandDecryptcall. (#4298) - The
cidrsubnetsfunction now supports prefix extensions greater than 32 bits when the base CIDR block uses an IPv6 address. (#4042) - The
openbaoencryption key provider now accepts a newassociated_dataargument, allowing a base64-encoded value to be passed to OpenBao on every data key generation and decryption call. (#4365) - When installing provider and module packages from OCI Distribution registries, OpenTofu now tracks separate transient credentials for each repository to support registry implementations that issue repository-scoped tokens. (#3316)
- The
providers lockcommand now supports the argument-oci-mirror. The functionality mimics that of the fieldrepository_templateofoci_mirror-block inprovider_installationwith the exception of using a URI template instead of a HCL one. tofu planno longer prints the explanatory paragraph that followed the "No changes. Your infrastructure matches the configuration." message, since it only restated that message in more words. (#4340)- The
local-execprovisioner now automatically sets theTRACEPARENTenvironment variable in child processes when OpenTelemetry tracing is active, following the W3C Trace Context specification. (#4014) - When OpenTelemetry trace collection is active, OpenTofu now copies any log lines generated by the OpenTelemetry libraries into its own debug log stream that you can activate using the
TF_LOGenvironment variable. (#4285) errored.tfstateis now produced if OpenTofu encounters a Go runtime panic. This file will be a partial state and is intended for aiding in recovery from a hard crash. (#4064)- On Windows systems, OpenTofu uses a heuristic to detect when it seems to be running in a legacy terminal emulator that uses a named pipe instead of a true pseudoterminal, such as with Cygwin and MSYS. This heuristic is now updated to be more reliable on recent versions of Windows that report slightly different names for those pipes. (#4459)
tofu initin our official releases when running on a 32-bit CPU architecture now warns about our plan to stop publishing official builds for these platforms starting in OpenTofu v1.14. (#4018)- Saved plan files now include the provider schemas needed to render the plan, so
tofu showon a plan file no longer needs to launch the providers where possible. (#4490) tofu testnow supports instances in test resource overrides, including wildcards. (#4067)
BUG FIXES:
- The built-in function
containsnow acceptsnullas its second argument, to test whether a collection contains any null values. (#4043) - The built-in function
mergeno longer fails when its only argument is a null value of an object type. (#4043) - The built-in function
cidrhostno longer returns a "panic" error when called with an out-of-range host number represented in more than 64 bits. (#4056) - The built-in function
templatestringno longer returns a "panic" error when itsvarsargument is a wholly sensitive collection; the result is marked sensitive instead. (#4430) tofu workspace newnow includes a hint to usetofu workspace selectwhen the given workspace name already exists, instead of just reporting that it already exists. (#4428)tofu apply -jsonnow emits periodicapply_progressheartbeat messages for the full duration of a resource operation, instead of stopping after the first one. (#4107)- provisioner output is no longer suppressed when
-show-sensitiveis passed. (#3927) - In the
azurermbackend's OpenID Connect authorization method, whenaudienceis provided as a query parameter in the URL, it will be passed through instead of being overwritten by a default value. (#4037) - Using
-backend=falseduringtofu initnow skips reading the local encrypted state (#4077) - Fixed span error status not being set on module fetch failure path during
tofu init, so observability tools now correctly identify failed spans. (#4169) - When using OpenTelemetry tracing, the TRACESTATE log message no longer incorrectly prints the TRACEPARENT value. (#4168)
- Fix rendering of plans where a nested block's replacement is unknown. (#4256)
removedblocks with an invalidfromaddress and a destroy provisioner now report a configuration error instead of crashing. (#4321)tofu plan -outno longer fails when the plan includes a resource withlifecycle { destroy = false }that needs replacement, which previously errored withinvalid change action ForgetThenCreate. (#4324)connection.script_pathis escaped correctly not allowing anymore additional commands to be executed on the remote host together with the script path indicated by the argument. (#4330)tofu plan: Fixed Incorrect warnings produced fortofu plan -replace=ADDR. (#4368)tofu plan: Performance improved for large depends_on chains. (#4465)- SSH connections through an HTTP proxy now report a connection error instead of crashing when the proxy fails to answer the CONNECT request. (#4358)