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

  1. Wait a minute and re-run the terraform command — outputs typically become ready after server-side processing completes
  2. Check the HCP Terraform status page for active incidents affecting the outputs API
  3. For very large states, consider reducing the number/size of root outputs to speed up output materialization
  4. 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

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


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)