Pricing explained · read 2026-10-14
HCP Terraform pricing, formerly Terraform Cloud
HashiCorp renamed Terraform Cloud to HCP Terraform in April 2024, and its rate card is built on one unit: how many resources your state files hold, hour by hour. Not seats, not runs, not minutes. Here is each plan’s rate from HashiCorp's own pages, what counts as a resource, and the places those pages disagree with each other.
The plans
Four plans, one billing unit
| Plan | Per resource, per month | Concurrent runs | What to know |
|---|---|---|---|
| Free | Free, up to 500 resources | 1 remote, 1 on agents | Limited to 500 managed resources. In the docs; not on the pricing page's plan cards. |
| Essentials | From $0.10 | 3 remote, 1 on agents | Published as "starting at". Rated hourly. |
| Standard | From $0.47 | 10 remote, 10 on agents | Published as "starting at"; the docs say to contact sales. More concurrency can be bought. |
| Premium | From $0.99 | 200 remote, 300 on agents | Published as "starting at"; the docs say to contact sales. More concurrency can be bought. |
Rates from HashiCorp’s pricing page; Free, concurrency and the sales note from their plan documentation. Both read on 2026-10-14. Every plan lists unlimited team members.
What you are billed for
What counts as a resource under management
In HashiCorp’s words:
A managed resource is a resource in an HCP Terraform-managed state file where mode = "managed". HCP Terraform counts a resource as part of this count starting from the first terraform plan or terraform apply operation on the resource.
Not counted:
- Resources defined as a null_resource
- Resources defined as a terraform_data resource
- Data sources (resources where mode = "data")
HashiCorp charges for each managed resource on a per-hour basis, from the time a managed resource is provisioned until it is destroyed. Each partial hour is billed as a full hour. The peak number of managed resources in a given hour determines the cost for that hour.
That last sentence is the one that surprises people. A pipeline that creates a hundred short-lived resources and destroys them ten minutes later is billed for a hundred resource-hours, and an estate that spikes once an hour is billed at the spike, all hour. The arithmetic below is therefore a floor: it assumes every resource exists all month and the count never moves.
Worked example
A steady estate, a month, at the published starting rates
The last column is not a comparison of like with like, because the two products bill different things. It is what the same money buys here, in run-minutes at $0.0040, so you can hold it against your own run history rather than our guess at it.
| Resources | Free | Essentials | Standard | Premium | Essentials’ month, as our run-minutes |
|---|---|---|---|---|---|
| 500 | $0 | $50 | $235 | $495 | 12,500 minutes |
| 2,000 | Over the cap | $200 | $940 | $1,980 | 50,000 minutes |
| 10,000 | Over the cap | $1,000 | $4,700 | $9,900 | 250,000 minutes |
Standard and Premium use the “starting at” rates HashiCorp publishes; their documentation routes both plans to sales. Method and the hourly rating are in HashiCorp’s own cost-estimation page.
The free plan
What happened to the old free tier
HashiCorp’s legacy free plan was priced by user, not by resource. On 2025-12-17 HashiCorp announced that it would reach end of life on 2026-03-31, and that the change to the resource-based Free plan is not reversible. The current Free plan caps an organisation at 500 managed resources and one concurrent run. Older articles describing a free tier counted in users are describing the plan that ended.
How we bill instead
By the minute a run takes, on the same meter as CI
We implement the Terraform Cloud API, so your cloud block points at us with a hostname change, and we bill a run by the minute it takes: $0.0040 per run-minute, from the same allowance your GitHub Actions jobs draw on. There is no monthly fee, and 3,000 run-minutes are included every month. Nothing is charged per resource or per seat, so the size of an estate never moves the bill; only running it does. Your configuration is executed by OpenTofu, not Terraform, and there are HCP Terraform features we do not have; both are set out on the HCP Terraform alternative page, and our rates are on the pricing page, read from the rows that bill them.
Questions
What people ask about HCP Terraform pricing
How much does Terraform Cloud cost?
Terraform Cloud is now called HCP Terraform, and it is billed per managed resource rather than per user or per run. HashiCorp's pricing page lists Essentials from $0.10 per resource per month, Standard from $0.47 and Premium from $0.99, read on 2026-10-14. Their plan documentation routes Standard and Premium to sales, so treat those two as starting points rather than prices.
Is Terraform Cloud free?
There is a Free plan, limited to 500 managed resources, with one concurrent run. The older, user-based free plan reached end of life on 2026-03-31, according to HashiCorp's own announcement.
What counts as a resource under management?
Anything in a state file HCP Terraform manages where mode = "managed", counted from the first plan or apply that touches it. Data sources, null_resource and terraform_data are not counted. Each hour is billed at that hour's peak count, and a partial hour is billed as a full one.
Does HCP Terraform charge per user?
Not on any current plan. HashiCorp's plan table lists unlimited team members on Free, Essentials, Standard and Premium. The per-user model belonged to the legacy free plan, which is why the belief persists.
How many runs can happen at once?
Per HashiCorp's plan table: one concurrent remote run on Free, three on Essentials, ten on Standard and 200 on Premium. Standard and Premium can buy more.
Is runners.io cheaper than HCP Terraform?
It depends on the shape of your estate, and we would rather say so than pick the example that flatters us. We charge $0.0040 per run-minute and nothing per resource, so a large estate you rarely change costs little here, while a small one you plan against all day may be cheaper on HCP Terraform's Free or Essentials plan. The table above converts their monthly figure into our minutes so you can check against your own run history.