hashicorp/terraform · error
current outputs were not ready to be read within the…
Error message
current outputs were not ready to be read within the deadline. Please try again
What it means
Thrown by GetRootOutputValues when the 1-minute context deadline (set at line 548) is exceeded while RetryBackoff keeps retrying StateVersionOutputs.ReadCurrent. The deadline fires because the TFE API keeps returning retryable errors (specifically 'service unavailable') for the entire minute without resolving. The message advises the user to retry, implying a transient server-side output-processing delay.
Solutions
- Wait a minute and re-run the terraform command — outputs typically become ready after server-side processing completes
- Check the HCP Terraform status page for active incidents affecting the outputs API
- For very large states, consider reducing the number/size of root outputs to speed up output materialization
- If self-hosted TFE, check server load and the async output-processing worker health
Defensive patterns
Strategy: retry
Validate before calling
// Before calling GetRootOutputValues, allow enough time for outputs to materialize: // GetRootOutputValues internally uses a 1-minute deadline; if your state is large, // add a pre-call delay after apply completes. time.Sleep(5 * time.Second) // let TFE finish async output processing // then call GetRootOutputValues
Try / catch
// Retry GetRootOutputValues if outputs were not ready within the deadline:
for attempt := 0; attempt < 3; attempt++ {
outputs, err := state.GetRootOutputValues(ctx)
if err == nil {
return outputs, nil
}
if strings.Contains(err.Error(), "not ready to be read within the deadline") {
time.Sleep(10 * time.Second)
continue
}
return nil, err
}
return nil, fmt.Errorf("outputs not ready after retries") Prevention
- Avoid reading outputs immediately after a large apply; add a brief delay in automation
- Monitor the HCP Terraform status page during output-heavy operations
- Reduce the number and size of root outputs to speed up server-side output materialization
When it happens
Trigger: TFE is still processing/asynchronously computing the current state version outputs and returns 'service unavailable' for longer than 60 seconds; HCP Terraform experiencing an outage affecting the outputs endpoint; a very large state whose outputs take longer than the deadline to materialize; TFE version with a known outputs-readiness regression.
Common situations: Immediately after a large apply when outputs are being recomputed; during HCP Terraform platform incidents; immediately after state migration where outputs are being re-indexed; first read of outputs on a workspace that was just upgraded to a state version format.
Related errors
- canceled reading current outputs
- could not read state version outputs
- could not decode output
- could not interpret output
- could not interpret value
AI-assisted analysis of hashicorp/terraform@d32a084675 (2026-08-11).
Data as JSON: /api/errors/1b380bc64e973d3e.
Report an issue: GitHub.
Appendix: source
Thrown at internal/cloud/state.go:568
var so *tfe.StateVersionOutputsList
err := RetryBackoff(ctx, func() error {
var err error
so, err = s.tfeClient.StateVersionOutputs.ReadCurrent(ctx, s.workspace.ID)
if err != nil {
if strings.Contains(err.Error(), "service unavailable") {
return err
}
return NonRetryableError{err}
}
return nil
})
if err != nil {
switch err {
case context.DeadlineExceeded:
return nil, fmt.Errorf("current outputs were not ready to be read within the deadline. Please try again")
case context.Canceled:
return nil, fmt.Errorf("canceled reading current outputs")
}
return nil, fmt.Errorf("could not read state version outputs: %w", err)
}
result := make(map[string]*states.OutputValue)
for _, output := range so.Items {
if output.DetailedType == nil {
// If there is no detailed type information available, this state was probably created
// with a version of terraform < 1.3.0. In this case, we'll eject completely from this
// function and fall back to the old behavior of reading the entire state file, which
// requires a higher level of authorization.
log.Printf("[DEBUG] falling back to reading full state")
if err := s.RefreshState(); err != nil {
return nil, fmt.Errorf("failed to load state: %w", err)View on GitHub (pinned to d32a084675)