← Package directory
Available on winget

Install OpenTofu

OpenTofu lets you declaratively manage your cloud infrastructure.

Install with winget
winget install --id OpenTofu.Tofu
Upgrade
winget upgrade --id OpenTofu.Tofu
Uninstall
winget uninstall --id OpenTofu.Tofu

About OpenTofu

OpenTofu lets you declaratively manage your cloud infrastructure.

What's new in 1.12.0

OpenTofu 1.12.0 We're proud to announce that OpenTofu 1.12.0 is now officially available! ๐ŸŽ‰ Highlights This release cycle introduces major new capabilities and integrations: Dynamic prevent_destroy OpenTofu v1.12.0 now allows prevent_destroy to be defined dynamically in terms of other values available elsewhere in the same module. For example: variable "prevent_destroy_database" { type = bool default = true } resource "example_database" "example" { # ... lifecycle { prevent_destroy = var.prevent_destroy_database } } Provider Checksum Improvements The default provider installation behavior in OpenTofu is designed to mostly "just work" by getting the needed providers installed and making the necessary changes to the dependency lock file, but in previous versions friction appeared for any teams using many of the non-default installation settings such as the shared provider plugin cache, or local mirrors of upstream providers. For OpenTofu v1.12, OpenTofu Registry now provides a full set of official checksums in all of the checksum formats needed by other installation methods. This means that after running tofu init the dependency lock file will immediately have all of the information required to successfully use a global plugin cache directory and to verify matching packages served from a local mirror, without needing to run tofu providers lock separately. Simultaneous Human-readable and Machine-readable Output Many OpenTofu commands support both human-oriented UI output and machine-readable JSON output, but previously those commands could be run with only one or the other. Th...

Read release notes

Version history

Version Updated Notes
1.12.0 Unknown OpenTofu 1.12.0 We're proud to announce that OpenTofu 1.12.0 is now officially available! ๐ŸŽ‰ Highlights This release cycle introduces major new capabilities and integrations: Dynamic prevent_destroy OpenTofu v1.12.0 now a...
1.11.6 Unknown BUG FIXES: - Running tofu apply -refresh-only with a configuration that contains ephemeral resources does not fail anymore because the refresh produced changes (#3776) - Fixed tofu init crashing when a module version use...
1.11.5 Unknown BUG FIXES: - Add universe_domain option in the gcs backend to support sovereign GCP services (#3758) - The azurerm backend's MSI authentication method will now respect the provided client ID (#3586) - Using a network mir...
1.11.4 Unknown SECURITY ADVISORIES: - Previous releases in the v1.11 series could potentially take an excessive amount of time processing a maliciously-crafted .zip archive during either provider or module installation during tofu init...
1.11.3 Unknown BUG FIXES: - Fix crash when the executed configuration contains an import block that points to unexisting configuration block (#3616) - Fixed tofu test with mock_provider failing during cleanup when lifecycle { ignore_ch...
1.11.2 Unknown UPGRADE NOTES: - The change from #2643, that was announced previously in v1.11.0, has been reverted in this release. OpenTofu will no longer directly recommend using the -exclude= option to work around problems caused by...
1.11.1 Unknown BUG FIXES: - Fixed regression where import validation would incorrectly flag variables used in for_each statements within import blocks (#3564) - Fixed lifecycle enabled serialization in plan file (#3566) - Fixed regress...
1.11.0 Unknown OpenTofu 1.11.0 We're proud to announce that OpenTofu 1.11.0 is now officially available! ๐ŸŽ‰ Highlights This release cycle introduces major new capabilities and integrations: Ephemeral Values and Write Only Attributes Eph...
1.10.8 Unknown SECURITY ADVISORIES: This release contains fixes for some security advisories related to previous releases in this series. - Incorrect handling of excluded subdomain constraint in conjunction with TLS certificates contai...
1.10.7 Unknown SECURITY ADVISORIES: This release contains fixes for some security advisories related to previous releases in this series. - tofu init in OpenTofu v1.10.6 and earlier could potentially use unbounded memory if there is a...
1.10.6 Unknown 1.10.6 UPGRADE NOTES: - Upgrade go from 1.24.4 to 1.24.6 to fix GO-2025-3849 (3127) - Upgrade github.com/openbao/openbao/api/v2 from 2.1.0 to 2.3.0 to fix GO-2025-3783 (3134) - The upgrade is necessary to silence the sec...
1.10.5 Unknown BUG FIXES: - Fixed issue where usage of TF_PLUGIN_CACHE_DIR could result in unexpected lock contention errors (#3090) - NOTE: It is still highly recommended to have valid .terraform.lock.hcl files in projects using TF_PL...
1.10.4 Unknown BUG FIXES: - Fixed crash where sensitive set values used in for_each could cause a panic. (#3070) - Fixed incorrect approach to mocking provider "ReadResource" calls in test. (#3068) - Reduced calls to ListKeys in azure...
1.10.3 Unknown 1.10.3 BUG FIXES: - OpenTofu will no longer crash in a rare case where a dynamically-invalid expression has its error suppressed by try or can and then that expression becomes relevant for deciding whether to report a "c...
1.10.1 Unknown What's Changed - Fix TF_APPEND_USER_AGENT handling in the S3 remote state backend in #2955 - go.mod: Upgrade to Go 1.24.4 by @apparentlymart in #2927 Full Changelog: v1.10.0...v1.10.1
1.10.0 Unknown OpenTofu 1.10.0 We're thrilled to announce the release of OpenTofu 1.10.0, our most comprehensive update yet! This release represents months of dedicated work from our community, introducing some fantastic features that...
1.9.1 Unknown BUG FIXES: - Provider used in import is correctly identified. (#2336) - plantimestamp() now returns unknown value during validation (#2397) - Syntax error in the required_providers block does not panic anymore, but yield...
1.9.0 Unknown We're proud to announce that OpenTofu 1.9.0 is now officially out! ๐ŸŽ‰This release includes a lot of major and minor new features, as well as a ton of community contributions!The highlights are: - for_each in provider conf...
1.8.8 Unknown SECURITY: - Upgraded golang.org/x/crypto to resolve CVE-2024-45337. (#2287) - Upgraded golang.org/x/net to resolve CVE-2024-45338. (#2311) BUG FIXES: - tofu test now removes outputs of destroyed modules between different...
1.8.7 Unknown BUG FIXES: - Error messages related to validation of sensitive input variables will no longer disclose the sensitive value in the UI. (#2219) - Changes to encryption configuration now auto-apply the migration (#2232) - U...