Terraform and Vault under IBM: what the bill depends on, and when OpenTofu or OpenBao makes sense
HCP Terraform charges per managed resource and Vault charges per client, so your bill follows your estate, not your headcount. Here's how to measure both before renewal, and when the open-source forks are worth the move.
part 8 of 8 · Cloud calls you'll have to makethe ideaThe bill follows resources and clients, so count them before IBM does.
after reading, you can- Count HCP Terraform managed resources and Vault clients yourself, using the same rules IBM counts them by.
- Spot the two quiet multipliers: cluster objects in Terraform state and repeated Vault namespaces.
- Decide when OpenTofu or OpenBao saves money, and test the move safely on copies first.
Terraform and Vault are IBM products now, and IBM sends the invoices. Before your next renewal, count two things yourself: the resources Terraform manages for you and the clients that log in to Vault. Those two numbers drive most of the usage-based bill, and they also tell you whether moving to OpenTofu or OpenBao would actually save anything.
Terraform and Vault in plain words
Terraform is what engineers use to build cloud infrastructure from code, so a network or a database can be rebuilt exactly the same way next time. Vault is a locked store for passwords, keys and certificates, and apps and people ask it for a secret when they need one. HashiCorp made both, and IBM bought HashiCorp. You can still use the free command-line tools for your own work without paying. The money sits in the paid versions, and those charge for how much you use them. For Terraform and Vault, headcount doesn't come into it.
Think of an electricity meter rather than a gym membership. HCP Terraform charges for every resource it keeps track of, every hour, and Vault charges for everything that logs in to it. If your cloud grows, or more apps and AI agents start asking Vault for secrets, the meter turns faster even though nobody new joined the team.
- Teams paying for HCP Terraform
- Terraform Enterprise customers
- Vault Enterprise or HCP Vault users
- Finance owners of cloud tooling
- Anyone weighing OpenTofu or OpenBao
Why it matters to you
Usage pricing feels cheap per unit and then surprises people. Ten cents sounds like nothing until someone multiplies it by every security group rule, DNS record and Kubernetes object in state. On the Vault side, the unit is a client, and a single app talking to two namespaces counts twice. Nobody in the team gets a bigger bill on purpose. The estate just grows, and the invoice follows it.
The self-managed editions have no public price at all, so the only number you can control there is the count you bring to the negotiation. If you walk in without your own resource and client counts, you're negotiating against IBM's numbers.
-
01 Your estate grows
More cloud accounts, clusters and apps mean more resources in Terraform state and more things logging in to Vault.
-
02 Terraform counts managed resources
HCP Terraform looks at the peak number of managed resources in each hour and bills that hour. A part-hour still counts as a whole one.
-
03 Vault counts clients
Anything that logs in to Vault to do a job counts as a client for the billing period. Apps and people count, and lately AI agents do too.
-
04 Tier sets the unit price
Essentials, Standard or Premium for Terraform, Essentials or Standard for HCP Vault. Features like policy checks and replication push you up a tier.
-
05 Renewal locks it in
In our view, Flex contracts and enterprise quotes get sized on these counts, so whatever you measured, or didn't, becomes next year's budget.
For engineers: a managed resourcedefinitionSomething Terraform built and now tracks in state, like a VM or a DNS record. HCP Terraform bills you for each one, every hour it exists. is anything in an HCP Terraform state file with mode = "managed". Data sources, locals, variables, null_resource and terraform_data don't count. It starts counting the first time a plan or apply touches the resource.
What changed after IBM bought HashiCorp
Less than the forum threads suggest, but enough to check your contract. The licence that worries people predates IBM. The pricing model for HCP Terraform, per managed resource, predates IBM too. What IBM changed is who bills you, how support works and how long each release is looked after.
Licence, ownership and pricing milestones
- May 2023Terraform Cloud announces per-resource billing
Billing across its tiers moves to managed resources. Add a thousand resources and you'll see it on the invoice.
- Aug 10, 2023HashiCorp adopts the Business Source License
New Terraform and Vault releases leave MPL 2.0. Internal use stays free; competing hosted offerings don't.
- Sep 20, 2023OpenTofu forms under the Linux Foundation
A fork of the last open-licence Terraform code, kept on MPL 2.0.
- Feb 27, 2025IBM completes the HashiCorp purchase
$35 a share in cash, an enterprise value of about $6.4 billion. Business operations followed later, in September.
- Apr 23, 2025OpenTofu joins the CNCF as a Sandbox project
- Jun 30, 2025HCP Vault Secrets end of sale
End of life came at the earlier of the Flex contract expiry or July 1, 2026. Anyone still on it had to move.
- Sep 1, 2025HashiCorp business operations move to IBM
Invoices move to IBM, and support starts moving to IBM's platform. Some products get IBM names, so expect new wording on renewals.
- Mar 31, 2026Legacy HCP Terraform Free plan ends
Those organizations moved to the Free tier, which stops at 500 managed resources. Anything bigger needs a paid tier.
- Apr 2026IBM Support Cycle-2 replaces LTS
- Oct 2026Current releases
The latest are Terraform 1.17.1, OpenTofu 1.13.2, Vault 2.2.1 and OpenBao 2.7.2. Check what your pipelines actually run before comparing features.
What's different for buyers now
Business operations moved to IBM, and Terraform Enterprise support now runs through the IBM Support platform. Expect IBM paper, IBM portals and IBM product names on renewals.
The pricing pages now say IBM HCP Terraform, IBM Terraform Enterprise, IBM Vault Dedicated and IBM Vault Radar. Your tooling and URLs may still say HashiCorp for a while.
The old free plan is gone. Free organizations get 500 managed resources and as many users as they like. Go past 500 and you need a paid tier.
IBM stopped selling it and told users to move to HCP Vault Dedicated or the free Vault Community edition. If you still had it, that move is done or overdue.
On Vault Enterprise you get two years of base support per major release, a year extended, then three years with no new fixes. Fixes don't get backported across minors either. Ask IBM what Terraform Enterprise gets.
Vault 2.x added a second licensing framework that can meter PKI certificates, OIDC and SPIFFE tokens, KMS, Transit and Transform operations and static roles, depending on your contract.
Vault Enterprise's Agentic IAM has been out of beta since 2.1. Each agent becomes a client on its first successful API call, and when it acts for a person, Vault records both as separate clients.
HashiCorp told customers moved off legacy products that they'd get the newer products at the same price they pay today. That's a promise about the move itself. It says nothing about what your next renewal will look like if your counts have grown.
Where the Terraform money goes
| Plan | Starting price per resource | Concurrent runs | Policy checks | Fits |
|---|---|---|---|---|
| Free | $0, capped at 500 resources | 1 | No (the docs conflict on a small policy set) | Small teams and trials |
| Essentials | $0.10 a month ($0.00013 an hour) | 3 | No | Teams adopting infrastructure as code |
| Standard | $0.47 a month ($0.00064 an hour) | 10 | Yes: Sentinel, OPA, Terraform policy | Companies standardizing on one workflow |
| Premium | $0.99 a month ($0.00135 an hour) | 200 | Yes | Large self-service platforms |
| Terraform Enterprise | Custom quote, premium support included | Set by contract | Yes | Self-hosted, regulated or air-gapped estates |
The number that moves is the resource count. A Kubernetes namespace, a role binding and a config map are three resources, and if you manage cluster objects through Terraform they can outnumber the cloud resources. At the published Standard starting rate, 10,000 managed resources works out to about $4,700 a month at list. That's our arithmetic from the public price, before any Flex discount, and it's the reason to count before you talk to sales.
Policy is a common reason to need a higher tier. Standard is where policy enforcement with Sentinel, OPA or the new native Terraform policy shows up in HashiCorp's plan table, and Terraform policy needs version 1.17 or later. If nobody writes policies, you may be paying Standard prices for Essentials use.
# Billable resources in one workspace $ terraform show -json | jq '[.. | objects | select(.mode? == "managed") | select(.type != "null_resource" and .type != "terraform_data")] | length' 1843 # example output: run it per workspace and add the results up
HCP Terraform also shows a managed resource count on the organization's usage page, so check your own number against IBM's before renewal. Terraform Enterprise is the other branch. There's no public price, the last LTS release (v1.2) is looked after until November 2027, and newer releases follow Support Cycle-2definitionHow long IBM looks after releases from April 2026 onward. For Vault Enterprise that's two years of base support, one extended, then three more with no new fixes. Plan upgrades around it.. If you still run a Replicated install, its support ended on April 1, 2026, so that upgrade is overdue whatever you decide about licensing.
Where the Vault money goes
| What connects | How it's counted | Why the count grows |
|---|---|---|
| A person or app with an identity | One client per entity | Each new app, pipeline or service account adds one |
| The same client in two namespaces | Two clients | Each extra namespace a shared app logs in to adds another client |
| Tokens without an identity | Merged by namespace and policy set (since Vault 1.9) | Each new policy combination adds a client |
| A secret synced to a cloud secrets manager | One client per synced secret, while sync is on | Secrets sync is Enterprise-only and grows with every secret |
| ACME certificate requests | One client per certificate domain | Each new domain or service that gets certificates through ACME adds one |
| An AI agent (Agentic IAM) | One client from its first successful API call (Enterprise) | Agent and person count separately in delegated flows |
On HCP Vault Dedicated the bill has two parts: an hourly cluster price and a flat hourly charge per client. IBM's indicative table lists $72.92 a month per client on Essentials and Standard, and production cluster hours from about $1.58 (Small Essentials) to $9.41 (Large Standard). At 500 clients the client line alone is about $36,500 a month at list, again our arithmetic. Client counts reset monthly, and you can't bring a count down before the billing period ends.
Self-managed Vault Enterprise has no public price, and since 2.0 the contract can meter usage as well as clients. Check which model your contract uses, because the utilization report only applies the metrics in your contract. Vault Enterprise also sends usage reports to HashiCorp, now IBM, automatically by default, so IBM will see your numbers whether or not you look at them.
OpenTofu and OpenBao: when switching makes sense
Both forks are free and run under the Linux Foundation on the MPL 2.0 licence. OpenTofu forked Terraform. OpenBaodefinitionVault's open-source twin, kept by the Linux Foundation's OpenSSF on MPL 2.0. Namespaces come free, where Vault charges Enterprise prices for them. forked Vault from code written before the licence change, between 1.14.8, the last open-licence release, and 1.14.9. Switching saves licence fees only where you pay for HashiCorp's commercial products. If you use the free Terraform CLI with an S3 backend, the BSL doesn't charge you anything, and the case for OpenTofu rests on features and governance rather than money.
- You get the runner, the policy engine, the private registry and support from one vendor, on one contract
- Sentinel policies and run tasks keep working as they are, with nothing to rebuild
- Vault replication, HSM and namespaces under one Enterprise contract
- Costs follow resource and client counts. IBM sets the unit price, so you negotiate on the count
- Support Cycle-2 sets how long a version gets fixes. Upgrades run on IBM's calendar
- No licence fee at all. The code is MPL 2.0 and the Linux Foundation looks after it
- OpenBao has namespaces with no Enterprise licence. They've been in since 2.3.1
- You still pay for a runner and policy tooling, or build your own
- Support comes from your own engineers or a third-party company, so someone has to own upgrades
| Point | Terraform | OpenTofu |
|---|---|---|
| Latest release | 1.17.1 | 1.13.2 |
| Licence | BSL 1.1, IBM as licensor; each version turns MPL 2.0 after four years | MPL 2.0 |
| Governance | IBM | Linux Foundation; CNCF Sandbox |
| State encryption at rest | Not built in (relies on the backend) | Built in since 1.7, for state and plan files |
| Provider for_each and -exclude | No | Yes, since 1.9 |
| Managed runner | HCP Terraform or Terraform Enterprise | Third-party runners such as Spacelift, Scalr or Harness, or your own pipeline |
| State compatibility | n/a | Stated for state written by Terraform up to 1.5.x |
Two things here won't be in the announcements.
- OpenTofu's FAQ only promises to read state written by Terraform up to 1.5.x. If you've kept upgrading to 1.17, test every workspace instead of assuming it'll just work.
- OpenBao's migration guide was tested only on Vault Community 1.14.1 with Raft storage and manual unseal. It makes no promise about storage compatibility and Enterprise wasn't tested, so plan a new cluster and a data move for a Vault Enterprise estate.
It's not a fringe move any more. In a post on the OpenTofu blog, Fidelity Investments described an estate of more than 50,000 state files across over 2,000 applications and said OpenTofu is now its default for new deployments, with the rest moving over time. On the Vault side, companies such as ControlPlane and Adfinis now sell commercial support for OpenBao, which matters if your auditors want a support contract behind every production system.
What to do now
What to do before your renewal, by who you are
- Find out when HCP Terraform, Terraform Enterprise, HCP Vault and Vault Enterprise each renew. Those dates are your deadline
- Ask the platform team for your own resource and client counts before IBM sends a quote
- Ask whether you're on per-client or usage-based Vault licensing, in writing
- Decide whether a fork pilot is worth a few weeks of engineering time this year
- Count managed resources per workspace. Flag the ones full of Kubernetes objects, because those can grow fast
- Write down which tier-gated features people actually use. HashiCorp's plan table lists policy checks only on Standard and Premium
- Run tofu init and tofu plan against copies of two or three representative workspaces
- Check whether any Terraform Enterprise install still uses Replicated
- Pull Vault's client count report and break it down by namespace and auth method
- Merge duplicate auth methods into one identity per app. Otherwise the same app counts twice
- List Enterprise-only features in production: replication, HSM, namespaces, Secrets Sync
- Ask which teams plan to give AI agents Vault access next year. Each agent counts as a client from its first successful API call
- Line up IBM's counts against your own and ask how each was measured
- Ask how Support Cycle-2 applies to the versions you run and when sustained support starts
- Get the Flex price per unit in writing, and what happens above the committed amount
# Clients per namespace this year $ vault operator usage -start-time=2026-01-01 # One row per namespace: entities, non-entity tokens, secret syncs and ACME clients, then the active client total that client-based contracts bill on
Keep the cost from creeping back
Most of the savings come from deciding where things live. Kubernetes objects change all day and usually sit better in a GitOps tool than in Terraform state. Vault namespaces are handy for isolation, but each one counts the same client again. We'd give them to real tenants, like a subsidiary, and say no when a team just wants its own space.
Before: everything in Terraform state, every team in its own namespace
Cloud resources and cluster objects share one state, so HCP Terraform bills both. Each team got a Vault namespace, so shared apps log in to several and count several times.
After: Terraform for cloud, GitOps for cluster objects, namespaces per tenant
Terraform keeps the slow-moving cloud resources. Cluster objects go to a GitOps controller and drop out of the billed count. Vault namespaces match real tenants, and each app logs in as one identity.
Guard rails we'd put in place
- 01Report counts monthly
Put the managed resource count and the Vault client count on the same dashboard as cloud spend. When one jumps, someone asks why that week, not at renewal.
- 02Move churny objects out of state
Keep Kubernetes objects, feature flags and per-environment config in the tool that changes them most. Terraform should hold what's slow to change and costly to get wrong.
- 03One identity per workload
Map each app's auth methods to a single Vault entity with aliases, so a service that uses Kubernetes auth and AppRole doesn't count twice.
- 04Namespaces by tenant
Create a Vault namespace when you need real isolation, such as a subsidiary or a regulated business unit, and not because a team wanted its own space.
- 05Run the fork test once a year
Keep a branch where two or three workspaces run on OpenTofu and a test Vault runs on OpenBao. When renewal comes, the switching cost is a measured number, which is the strongest thing you can bring to a negotiation.
If it goes wrong
If a bill jumps or a migration breaks
Two things can go wrong: an invoice far above budget, or a fork migration that leaves state or secrets in a bad place. The order of work is the same for both.
- 01Stop the damageFirst day
- Stop all tofu apply and terraform apply runs on a workspace that's halfway through a migration
- Pause new Vault namespaces, secret syncs and agent onboarding until counts are understood
- Keep the last good state backups read-only
- 02Find the causeFirst week
- Put this month's resource count per workspace next to last month's and look for the workspace that jumped
- Split the Vault client count by namespace, auth method and client type to see where it grew
- For a failed migration, diff the state file against the backup and read the plan output
- 03Roll back or fixFirst week
- Restore the state backup and run terraform init and terraform plan. That's the rollback OpenTofu's own guide gives
- Move churny resources out of state with removed blocks once the owning tool manages them
- Merge duplicate identities in Vault so each workload counts once
- 04Talk to IBMBefore the next invoice
- Show IBM how you counted and ask how they did. Where the numbers differ, ask which workspace or namespace is behind it
- Ask for the overage terms on your Flex contract and whether a true-up can be spread
- 05LearnNext quarter
- Add the counts to monthly reporting so the next jump shows up in weeks
- Write down what broke in the migration test and fix it before trying again
How this can play out
How this can play out
- the setup
- A 30-person software company used the old HCP Terraform free plan. When it ended, the organization moved to the Free tier with its 500-resource cap, and its state holds well over that.
- what happens
- They either pay for a tier or move the runner. Nobody knows which is cheaper because nobody has counted managed resources per workspace.
- what to do
- Count first. If most of the count is Kubernetes objects, move those to GitOps and see if the rest fits a small Essentials bill. If they don't use any HCP features, OpenTofu with a backend they already own is a short test.
- the setup
- A mid-size company runs HCP Terraform Standard. Each cluster's namespaces, role bindings and config maps live in Terraform state, next to the cloud resources.
- what happens
- Every new cluster adds thousands of managed resources. The Terraform bill grows faster than the cloud bill, and finance asks why the tooling line doubled.
- what to do
- Hand cluster objects to a GitOps controller and remove them from state with removed blocks. Keep Terraform for the clusters themselves, networks and IAM. Check whether they use Standard's policy checks, or could drop to Essentials.
- the setup
- A large company runs Vault Enterprise with performance replication, an HSM and a namespace per business unit. It plans to give AI agents their own Vault access next year.
- what happens
- Shared apps already count once per namespace. Agents will add clients from their first API call. OpenBao looks attractive, but its guide was tested only on Vault Community 1.14.1.
- what to do
- Clean up identities and namespaces before quoting. Get the client or usage model in writing. Pilot OpenBao on a new, separate tenant instead of migrating the replicated estate.
- the setup
- A financial services team keeps Terraform state in object storage. Its auditors want secrets in state encrypted by the tool itself, not only by the bucket.
- what happens
- Terraform doesn't encrypt state itself. OpenTofu has done it since 1.7, for state and plan files, with any backend.
- what to do
- Test OpenTofu on a copy of one workspace: back up, tofu init, a clean tofu plan, then turn on encryption. Keep the key in a KMS and document the rollback before touching production.
Cohash counts managed resources and Vault clients for you, sorts out which paid features you really use, and runs the OpenTofu or OpenBao test on copies of your own workspaces, so the renewal decision rests on numbers. See our Terraform and Vault pages, hire engineers who do this work, or start with an assessment.
What to take from this
- 01
HCP Terraform bills managed resources per hour and Vault bills clients, so count both yourself before any renewal.
- 02
Kubernetes objects in Terraform state and Vault namespaces are the two quiet multipliers. Move or merge them first.
- 03
The free Terraform CLI and Vault Community still cost nothing for internal use, so the forks save money only where you pay IBM.
- 04
OpenTofu promises state compatibility up to Terraform 1.5.x and OpenBao tested only Vault Community 1.14.1. Test on copies first.
- 05
Keep a small fork test running all year, so switching cost is a number you can bring to the negotiation.
01How much does HCP Terraform cost?
Less than you'd think per resource, more than you'd think in total. The starting rates are $0.10 a month per managed resource on Essentials, $0.47 on Standard and $0.99 on Premium, and the Free plan stops at 500. Count your resources per workspace and multiply by the rate before you choose.
02Is Terraform still free to use?
The Terraform CLI is free for your own internal use under the Business Source License, including production. What the licence forbids is offering Terraform to others as a hosted or embedded product that competes with IBM's paid versions. HCP Terraform above the Free plan and Terraform Enterprise are paid.
03How is HashiCorp Vault priced?
Mostly by clients, meaning anything that authenticates to Vault, from apps and people to synced secrets, ACME certificate domains and AI agents. HCP Vault Dedicated adds an hourly cluster charge, and IBM's indicative table lists $72.92 a month per client. Self-managed Vault Enterprise is quote-only, and since Vault 2.0 some contracts also meter usage such as certificates and KMS operations.
04Did IBM raise Terraform and Vault prices?
We found no dated IBM announcement of new unit prices. What changed is that IBM now bills and supports the products, some products were renamed, the legacy free HCP Terraform plan and HCP Vault Secrets ended, and Support Cycle-2 replaced LTS. Your bill can still rise if your resource or client counts grew.
05Is OpenTofu a safe replacement for Terraform?
For many teams, yes, but test it. It's governed by the Linux Foundation, sits in the CNCF Sandbox, and Fidelity has made it the default for new deployments. Its FAQ promises state compatibility for state written by Terraform up to 1.5.x, so back up state, run tofu plan, and don't apply if it shows changes you didn't expect.
06Can we move from Vault Enterprise to OpenBao?
Not as a simple swap. OpenBao's migration guide was tested only on Vault Community 1.14.1 with Raft storage and manual unseal, and it makes no promise about storage compatibility or Enterprise. Treat it as a new cluster plus a secrets move, and pilot it on a new tenant first.
07Does OpenTofu work with HCP Terraform?
Not that we could find. Neither HashiCorp nor IBM says HCP Terraform runs OpenTofu. Teams moving over can pick a runner that does, such as Spacelift, Scalr or Harness, or run OpenTofu from their own CI pipeline.
Three questions, about a minute
Pick an answer and we'll tell you if it's right, and why it is or isn't. The score stays in this browser.
-
Q1Your HCP Terraform bill doubled while the cloud bill grew ten percent. Where do you look first?
show the answer
C. Workspaces holding Kubernetes objects in state HCP Terraform bills managed resources, not users. Cluster objects like namespaces and role bindings pile up fast in state, so they can grow far quicker than the cloud resources around them.
-
Q2A shared payments app logs in to three Vault namespaces. How does Vault count it?
show the answer
A. As three clients, one per namespace Vault gives the same client a different entity in each namespace, so it counts once per namespace. Namespaces should follow real tenants, or they multiply the client count.
-
Q3Your team uses the free Terraform CLI with state in S3, and IBM gets nothing from you. What does OpenTofu save?
show the answer
B. No licence fee, since internal CLI use is already free The BSL lets you use the CLI internally for free. OpenTofu can still be worth it for state encryption, provider for_each or governance, but it won't cut a bill you aren't paying.