Sheet ⁨06⁩ · ⁨DevTips⁩Surveyed ⁨2026⁩

Blog post image for HashiCorp Pulls the Plug on CDKTF - HashiCorp just deprecated CDKTF as of December 10, 2025. If you built your infrastructure in TypeScript, Python, or Go to avoid HCL, your options are HCL with OpenTofu or a move to Pulumi, and vendor lock-in just bit again.

HashiCorp Pulls the Plug on CDKTF

Published: 03 Mins read05 Mins listen
Markdown for AI(opens in a new tab)

CDKTF is officially deprecated

The deprecation announcement

Well, it finally happened.

HashiCorp (now owned by IBM) officially deprecated the Cloud Development Kit for Terraform (CDKTF) on December 10, 2025. The repository is archived. No more features. No more fixes. If you chose CDKTF to write infrastructure code in TypeScript, Python, or Go instead of HCL, you’re now being told to go back to the very thing you tried to avoid.

Impact on existing users

Your existing stacks keep working, because CDKTF only generates Terraform configuration and Terraform still runs it. What you lose is bindings for new providers, bug fixes, and anyone to report a security issue to after the archive date.

Why HashiCorp killed CDKTF

The business reason

Why did this happen?

According to HashiCorp, CDKTF “did not find product-market fit at scale.” Translation: not enough enterprise customers using it to justify the investment. This is what happens when tools are owned by a single vendor focused on enterprise priorities over community needs.

What that says about priorities

CDKTF was never what enterprises were paying for. The paid tiers around Terraform are, and CDKTF meant maintaining a second toolchain that sold nothing on its own. Under IBM that arithmetic got less forgiving, not more.

Migration options after the deprecation

Your choices

What are your options?

You’ve got two paths forward:

Option 1: Go back to HCL (with OpenTofu)

HashiCorp suggests using cdktf synth --hcl to convert your code to raw HCL. But you don’t have to run that HCL on HashiCorp’s Terraform. OpenTofu is the truly open-source, Linux Foundation-backed alternative that won’t change licenses on you or sunset tools you depend on.

Converting existing code

cdktf synth --hcl emits HCL rather than JSON, so you get files a reviewer can read. Budget time to clean the output up. Generated resource names are long, and every loop and conditional you wrote in TypeScript arrives fully expanded.

OpenTofu as the alternative

OpenTofu is a Linux Foundation fork of Terraform from before the licence change, so the state format, the provider protocol and most of the CLI are the same. In practice the move is a binary swap and a CI change rather than a rewrite.

Option 2: Switch to Pulumi

If you picked CDKTF because you wanted real programming languages with loops, variables, and proper abstractions, Pulumi is your best bet. Unlike CDKTF (which was always a translation layer), Pulumi is native infrastructure-as-software. You keep the power of TypeScript/Python/Go without the deprecation risk.

What Pulumi does differently

CDKTF generated Terraform configuration and handed it to Terraform. Pulumi talks to the providers itself, which mostly shows up in errors: a failure points at the line you wrote instead of at generated output you have to map back.

You keep the language

Loops, functions, real types and your existing unit tests all survive the move. What changes is the state backend, the CLI your pipeline runs, and the fact that you are now paying attention to a different company’s roadmap.

The vendor lock-in lesson

Vendor risk

The bigger lesson here?

CDKTF is the small version of this. The Terraform licence change in 2023 was the large one. Both came out of one company deciding what happens to code other people had already shipped to production. Today it’s CDKTF. Tomorrow it could be another tool you depend on.

Long-term strategy

The test I now apply is whether we could keep deploying if the vendor walked away tomorrow. An open state format counts. A provider protocol someone else has already implemented counts. A fork that exists and has commits in it counts. A tool only one company ships does not.

Plan your migration now

Start now

Your move:

If you’re using CDKTF in production, start planning your migration now. Whether you go with OpenTofu for stability or Pulumi for programming power, don’t wait until support runs out completely.

Migration timeline

Nothing breaks on a specific date, which sounds relaxed right up until a provider you use ships a change and nobody is left to regenerate the bindings. Treat it as a quarter of work spread across sprints, not a sprint.

Risk assessment

Sort your stacks by how often you change them. The ones you touch weekly hurt first, because those are the ones that will want a newer provider. A stack nobody has edited in a year can sit on archived CDKTF for a while, and being honest about that is what makes the rest of the plan fit.

Community discussion

Share your experience

What do you think?

Have you been using CDKTF? What’s your migration plan? I would like to hear whether synth --hcl gave you output you were actually willing to keep, because that is the part I am least sure about.

Lessons learned

The thing I keep coming back to is that CDKTF was not a bad tool. It was a decent tool with no revenue attached to it, and that turns out to be the risk worth pricing when you pick anything from a single vendor.

Was this useful?

You might also enjoy

More posts on similar topics

Organizing Terraform with Modules

Organizing Terraform with Modules

Why organize your Terraform code? Where the complexity comes from If you're using Terraform to build out your infrastructure, you know how quickly things get complicated. Every new environmen

Managing Terraform at Scale with Terragrunt

Managing Terraform at Scale with Terragrunt

The problem with Terraform at scale Duplicated code across environments If you're managing infrastructure with Terraform across several environments or projects, you've probably hit the point

Terraform Workspaces vs. Directory-Based Environments: What Actually Scales

Terraform Workspaces vs. Directory-Based Environments: What Actually Scales

Why this choice matters Hey, want to stop sweating every prod apply? The way you split dev, staging, and prod in Terraform decides how much damage a single mistake can do. Get it right and a

Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer

Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer

If you're working with Kubernetes, you've probably noticed that Pods come and go, and their IP addresses keep changing. That's where Services come in. They give you a stable way to keep your apps acce

Docker Is Eating Your Disk Space (And How PruneMate Fixes It)

Docker Is Eating Your Disk Space (And How PruneMate Fixes It)

The problem: Docker is eating your disk space What it looks like when it happens Your Docker host is running out of space. Again. You've been spinning up containers, testing new services

Policy-as-Code Governance with OPA/Rego

Policy-as-Code Governance with OPA/Rego

Why policy-as-code matters The governance problem Managing infrastructure at scale gets complicated fast. As your infrastructure grows, keeping it consistent and compliant gets harder. M

6 related posts