---
title: "CDKTF Deprecated: What This Means for Your Infrastructure Code"
lang: "en"
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/post/cdktf-deprecation-hashicorp-terraform
---

![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.
](/_astro/hero.BBIsBB2t_2gv04i.webp)

[Home](/)›[Devtips](/devtips)›[All Categories](/devtips/categories)›[Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)

Devtips

[Next in Cloud & Infrastructure AutomationOrganizing Terraform with Modules](/devtips/post/organizing-terraform-modules)

[Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)

# HashiCorp Pulls the Plug on CDKTF

[Mohammad Abu Mattar](/authors/mohammad-abu-mattar)Published: 15 Dec 202503 Mins read05 Mins listen

[Markdown for AI(opens in a new tab)](/post/cdktf-deprecation-hashicorp-terraform/index.md "Open the plain-Markdown version of this page, for pasting into an AI tool")

TL;DR

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.

Series

[Mastering Terraform](/series/mastering-terraform)2/4

[PreviousOrganizing Terraform with Modules](/devtips/post/organizing-terraform-modules)[NextManaging Terraform at Scale with Terragrunt](/devtips/post/terraform-terragrunt-wrappers)

All posts in this series (4)

DevTips4

1.  [Organizing Terraform with Modules](/devtips/post/organizing-terraform-modules)
2.  [HashiCorp Pulls the Plug on CDKTFYou are here](/devtips/post/cdktf-deprecation-hashicorp-terraform)
3.  [Managing Terraform at Scale with Terragrunt](/devtips/post/terraform-terragrunt-wrappers)
4.  [Terraform Workspaces vs. Directory-Based Environments: What Actually Scales](/devtips/post/terraform-workspaces-vs-directory-environments)

### HashiCorp Pulls the Plug on CDKTF

Contents

[CDKTF is officially deprecated](#cdktf-is-officially-deprecated)[The deprecation announcement](#the-deprecation-announcement)[Impact on existing users](#impact-on-existing-users)[Why HashiCorp killed CDKTF](#why-hashicorp-killed-cdktf)[The business reason](#the-business-reason)[What that says about priorities](#what-that-says-about-priorities)[Migration options after the deprecation](#migration-options-after-the-deprecation)[Your choices](#your-choices)[Option 1: Go back to HCL (with OpenTofu)](#option-1-go-back-to-hcl-with-opentofu)[Converting existing code](#converting-existing-code)[OpenTofu as the alternative](#opentofu-as-the-alternative)[Option 2: Switch to Pulumi](#option-2-switch-to-pulumi)[What Pulumi does differently](#what-pulumi-does-differently)[You keep the language](#you-keep-the-language)[The vendor lock-in lesson](#the-vendor-lock-in-lesson)[Vendor risk](#vendor-risk)[Long-term strategy](#long-term-strategy)[Plan your migration now](#plan-your-migration-now)[Start now](#start-now)[Migration timeline](#migration-timeline)[Risk assessment](#risk-assessment)[Community discussion](#community-discussion)[Share your experience](#share-your-experience)[Lessons learned](#lessons-learned)

## [CDKTF is officially deprecated](#cdktf-is-officially-deprecated)

### [The deprecation announcement](#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](#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](#why-hashicorp-killed-cdktf)

### [The business reason](#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](#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](#migration-options-after-the-deprecation)

### [Your choices](#your-choices)

**What are your options?**

You’ve got two paths forward:

### [Option 1: Go back to HCL (with OpenTofu)](#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](https://opentofu.org/) 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](#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-as-the-alternative)

[OpenTofu](https://opentofu.org/) 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](#option-2-switch-to-pulumi)

If you picked CDKTF because you wanted real programming languages with loops, variables, and proper abstractions, [Pulumi](https://pulumi.com/) 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](#what-pulumi-does-differently)

CDKTF generated Terraform configuration and handed it to Terraform. [Pulumi](https://pulumi.com/) 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](#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](#the-vendor-lock-in-lesson)

### [Vendor risk](#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](#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](#plan-your-migration-now)

### [Start 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](#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](#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](#community-discussion)

### [Share your experience](#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](#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?

## Tags

[#Terraform](/devtips/tags/terraform)[#CDKTF](/devtips/tags/cdktf)[#HashiCorp](/devtips/tags/hashicorp)[#Infrastructure as Code](/devtips/tags/infrastructure-as-code)[#DevOps](/devtips/tags/devops)[#Pulumi](/devtips/tags/pulumi)[#OpenTofu](/devtips/tags/opentofu)[#IaC](/devtips/tags/iac)[#Cloud Infrastructure](/devtips/tags/cloud-infrastructure)

## Share

[Facebook](https://facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform "Share on Facebook")[Twitter](https://twitter.com/intent/tweet/?text=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF&url=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform "Share on Twitter")[LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform&title=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF&summary=HashiCorp%20just%20deprecated%20CDKTF%20as%20of%20December%2010%2C%202025.%20If%20you%20built%20your%20infrastructure%20in%20TypeScript%2C%20Python%2C%20or%20Go%20to%20avoid%20HCL%2C%20your%20options%20are%20HCL%20with%20OpenTofu%20or%20a%20move%20to%20Pulumi%2C%20and%20vendor%20lock-in%20just%20bit%20again.%0A&source=https://mkabumattar.com "Share on LinkedIn")[WhatsApp](https://wa.me/?text=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF%20https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform "Share on WhatsApp")[Telegram](https://t.me/share/url?url=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform&text=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF "Share on Telegram")[Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform&title=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF "Share on Reddit")[Hacker News](http://news.ycombinator.com/submitlink?u=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform&t=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF "Share on Hacker News")[Pinterest](https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform&media=&description=HashiCorp%20just%20deprecated%20CDKTF%20as%20of%20December%2010%2C%202025.%20If%20you%20built%20your%20infrastructure%20in%20TypeScript%2C%20Python%2C%20or%20Go%20to%20avoid%20HCL%2C%20your%20options%20are%20HCL%20with%20OpenTofu%20or%20a%20move%20to%20Pulumi%2C%20and%20vendor%20lock-in%20just%20bit%20again.%0A "Share on Pinterest")[Email](<mailto:?subject=HashiCorp%20Pulls%20the%20Plug%20on%20CDKTF&body=Check out this article: https%3A%2F%2Fmkabumattar.com%2Fdevtips%2Fpost%2Fcdktf-deprecation-hashicorp-terraform>)

## Comments

## You might also enjoy

More posts on similar topics

[![Organizing Terraform with Modules](/_astro/hero.5dVJEd3X_Z16rLJ8.webp)](/devtips/post/organizing-terraform-modules)

## [Organizing Terraform with Modules](/devtips/post/organizing-terraform-modules)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)

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

[#Terraform](/devtips/tags/terraform)[#Infrastructure as Code](/devtips/tags/infrastructure-as-code)[#Modules](/devtips/tags/modules)+4 tags

[read more](/devtips/post/organizing-terraform-modules)

[![Managing Terraform at Scale with Terragrunt](/_astro/hero.DUZZoi07_ZRPUOh.webp)](/devtips/post/terraform-terragrunt-wrappers)

## [Managing Terraform at Scale with Terragrunt](/devtips/post/terraform-terragrunt-wrappers)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)

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](/devtips/tags/terraform)[#Terragrunt](/devtips/tags/terragrunt)[#Infrastructure as Code](/devtips/tags/infrastructure-as-code)+4 tags

[read more](/devtips/post/terraform-terragrunt-wrappers)

[![Terraform Workspaces vs. Directory-Based Environments: What Actually Scales](/_astro/hero.utyGomxG_Z2cpb8C.webp)](/devtips/post/terraform-workspaces-vs-directory-environments)

## [Terraform Workspaces vs. Directory-Based Environments: What Actually Scales](/devtips/post/terraform-workspaces-vs-directory-environments)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)

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

[#Terraform](/devtips/tags/terraform)[#Workspaces](/devtips/tags/workspaces)[#Environments](/devtips/tags/environments)+3 tags

[read more](/devtips/post/terraform-workspaces-vs-directory-environments)

[![Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer](/_astro/hero.DBNjupL__148EQW.webp)](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

## [Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [DevOps & Kubernetes](/devtips/categories/devops--kubernetes)

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

[#Kubernetes](/devtips/tags/kubernetes)[#K8s Services](/devtips/tags/k8s-services)[#ClusterIP](/devtips/tags/clusterip)+5 tags

[read more](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

[![Docker Is Eating Your Disk Space (And How PruneMate Fixes It)](/_astro/hero.BD8-gtdG_26qrXW.webp)](/devtips/post/docker-disk-space-prunemate)

## [Docker Is Eating Your Disk Space (And How PruneMate Fixes It)](/devtips/post/docker-disk-space-prunemate)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Containers & Docker](/devtips/categories/containers--docker)

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

[#Docker](/devtips/tags/docker)[#Containers](/devtips/tags/containers)[#Home Lab](/devtips/tags/home-lab)+5 tags

[read more](/devtips/post/docker-disk-space-prunemate)

[![Policy-as-Code Governance with OPA/Rego](/_astro/hero.CwAJ64Mi_1WeH9p.webp)](/devtips/post/policy-as-code-opa-rego)

## [Policy-as-Code Governance with OPA/Rego](/devtips/post/policy-as-code-opa-rego)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [DevOps & DevSecOps](/devtips/categories/devops--devsecops)

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

[#Policy as Code](/devtips/tags/policy-as-code)[#OPA/Rego](/devtips/tags/oparego)[#Compliance](/devtips/tags/compliance)+4 tags

[read more](/devtips/post/policy-as-code-opa-rego)

6 related posts
