<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j" -->

---
title: OpenTofu 1.12.0: what&#x27;s new and what Terraform never shipped
description: OpenTofu 1.12.0 introduces several notable features including dynamic `prevent_destroy` lifecycle settings driven by input variables, a new `destroy = false`...
canonical: https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: OpenTofu 1.12.0: what&#x27;s new and what Terraform never shipped | daily.dev
og:description: OpenTofu 1.12.0 introduces several notable features including dynamic `prevent_destroy` lifecycle settings driven by input variables, a new `destroy = false`...
og:url: https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j
og:image: https://api.daily.dev/og/posts/5Xfnrk40J.png
og:image:alt: OpenTofu 1.12.0: what&#x27;s new and what Terraform never shipped
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenTofu 1.12.0: what's new and what Terraform never shipped

**[Collections](https://daily.dev/sources/collections)** · 2 min read · 4 upvotes · 1 comments

## Summary

OpenTofu 1.12.0 introduces several notable features including dynamic `prevent_destroy` lifecycle settings driven by input variables, a new `destroy = false` option to remove resources from state without deleting them, parallelized provider downloads for faster `tofu init`, and a `-json-into=FILENAME` flag for structured JSON output alongside normal terminal output. WinRM provisioner support and 32-bit builds are deprecated with removal planned for 1.13. With over 50% of Spacelift platform runs now using OpenTofu, the CNCF-backed Terraform fork is moving beyond parity and shipping features the original never delivered.

## Content

OpenTofu 1.12.0 is out, and it's a meaningful release — not just for the quality-of-life fixes, but because it ships at least one thing the Terraform community has been asking for over a decade.

## Dynamic `prevent_destroy`

The headline feature: `prevent_destroy` can now be driven by an input variable. Previously, this lifecycle setting was static, which meant teams reusing modules across dev, staging, and production had to either duplicate modules or accept that destroy protection was all-or-nothing. Now you can tie it directly to a variable:

```hcl
lifecycle {
  prevent_destroy = var.environment == "production"
}
```

That's it. One module, environment-specific protection, no duplication. It's a small change syntactically, but it closes a gap that's been open for years.

## Removing resources from state without destroying them

A new `destroy = false` lifecycle option lets you drop a resource from state without triggering any destructive API calls. This is useful during stack refactors when you want OpenTofu to stop managing something without actually deleting it. Previously, this required manual `state rm` commands and careful coordination. Now it's declarative.

## Faster `tofu init`

Provider downloads during `tofu init` are now parallelized. For projects with many providers, this should noticeably cut initialization time. The lock file handling also got smarter: both `zh:` and `h1:` hashes are now populated for all platforms on the first init, which eliminates the cross-platform checksum mismatches that have tripped up teams running mixed Linux/macOS/Windows workflows.

## Structured JSON output to a file

A new `-json-into=FILENAME` flag writes machine-readable JSON output to a file (or named pipe) while keeping normal human-readable output in the terminal. This makes it easier to integrate OpenTofu into platforms and pipelines that need structured data without losing the interactive output you'd want during a manual run.

## Deprecations

WinRM provisioner support and 32-bit architecture builds are both deprecated in 1.12, with removal planned for 1.13. If you're still relying on either, now's the time to plan the migration.

## Context

OpenTofu is a CNCF-backed fork of Terraform that emerged after HashiCorp's license change. Spacelift reports that over 50% of its platform runs now use OpenTofu — a sign that adoption has moved well past the early-adopter phase. Releases like 1.12 suggest the project isn't just maintaining parity with Terraform; it's starting to move ahead on features the original never shipped.

---

Tags: [#devops](https://daily.dev/tags/devops), [#terraform](https://daily.dev/tags/terraform), [#iac](https://daily.dev/tags/iac), [#opentofu](https://daily.dev/tags/opentofu)

[View this post on daily.dev](https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"OpenTofu 1.12.0: what's new and what Terraform never shipped","url":"https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j"},"datePublished":"2026-05-28T08:04:07.948Z","dateModified":"2026-06-03T19:18:10.072Z","description":"OpenTofu 1.12.0 introduces several notable features including dynamic `prevent_destroy` lifecycle settings driven by input variables, a new `destroy = false`...","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/opentofu-1-12-0-what-s-new-and-what-terraform-never-shipped-5xfnrk40j","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"devops,terraform,iac,opentofu","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"OpenTofu 1.12.0: what's new and what Terraform never shipped"}]}
```

