Skip to content

Documentation · Infrastructure runs

Limits for infrastructure runs

How long a plan or an apply may run, the machine it gets, how many runs may be open at once, how fast they may be started, and how large a configuration may be.

How long a plan or an apply may take, the machine it gets, how many runs you may have open, how quickly you may start them, and how large a configuration may be.

A plan may run for 50 minutes, and so may an apply. The two are separate: a run that plans for 45 minutes and is then confirmed gets another 50 minutes to apply.

When a plan or an apply reaches that, we stop it. We ask OpenTofu to stop cleanly and give it a few minutes to wind down, and the run ends cancelled. The run's page in the dashboard says We stopped this run because it ran longer than a single plan or apply can run here. The output the CLI streams does not give the reason.

An organisation can also set a shorter time limit of its own through the Terraform API, with the organisation's run-timeout-seconds setting. A plan or an apply that reaches it is stopped too, but today nothing on the run names that limit as the reason. If a run of yours stops sooner than 50 minutes with no error of its own, check whether that setting is in place.

An apply stopped part-way may already have changed some of your infrastructure. Run a plan before anything else, to see where things stand. A configuration that cannot plan or apply inside the limit is best split across more than one workspace.

Every hosted plan and apply gets 2 vCPUs and 8 GiB of memory. There is no larger size to choose. A run that needs more memory than that is stopped, and its output ends with the workspace exceeded the runner's memory, followed by how much it reached. Splitting the configuration across more than one workspace is what brings it down.

Your plan sets how many runs your organisation may have open at once. It is the same figure that limits your concurrent Runners jobs, shown on the pricing page, but Terraform runs are counted separately from CI jobs, and a lower limit set on the Runners concurrency limit card applies to CI jobs only.

A run counts from the moment it is created until it finishes, is discarded or is cancelled. That includes a run waiting in a workspace's queue, and a run that has planned and is waiting for somebody to confirm the apply. A terraform plan counts too, for as long as it is running.

At the limit a new run is refused before it starts, and the CLI prints the reason: this organization already has 20 runs in progress, which is the most its plan allows. Wait for one to finish, or cancel one, before starting another, with your plan's figure in place of 20. Apply or discard the runs waiting for confirmation, or cancel one, and start again.

From the seventh day of an unpaid invoice the figure drops to one run at a time. Invoices and payments has the whole timetable.

An organisation may create 100 runs at once, then one a second after that. Past it, the CLI prints too many runs created, please retry shortly. The run was not created, and retrying after a few seconds works.

A workspace applies one run at a time. A run started while another is in progress waits in that workspace's queue, and starts when the one ahead of it finishes. A plan-only run, such as the one terraform plan starts, does not wait in the queue.

The configuration the CLI uploads may be up to 10 MiB, compressed. A larger upload is refused with HTTP 422, and the CLI shows only that number. Usually the cause is something in the working directory the run does not need, such as a provider cache or build output. List it in a .terraformignore file to leave it out of the upload.