hashicorp/terraform · warning
can't display a cloud plan that is currently
Error message
can't display a cloud plan that is currently %s
What it means
Thrown by Cloud.ShowPlanForRun in the default branch of the switch over r.Plan.Status. Only PlanFinished and PlanErrored are displayable (errored plans may still have partial output). Any other status — pending, queued, running, canceled, canceled-by-user — means the plan is not in a viewable final state and cannot be rendered.
Solutions
- Wait for the run's plan to reach 'finished' (or 'errored') status in HCP Terraform, then re-run `terraform show`.
- If the plan was canceled, start a new run and show that one instead.
- Check the run status in the HCP Terraform UI to confirm it has reached a terminal plan state.
Defensive patterns
Strategy: retry
Validate before calling
// Poll run plan status until terminal before showing.
for r.Plan.Status != tfe.PlanFinished && r.Plan.Status != tfe.PlanErrored {
// wait and re-read r
} Type guard
func planDisplayable(s tfe.PlanStatus) bool {
return s == tfe.PlanFinished || s == tfe.PlanErrored
} Prevention
- Wait until the run's plan reaches 'finished' before `terraform show`.
- Re-show against a fresh run if the original was canceled.
- Check plan status in the HCP Terraform UI first.
When it happens
Trigger: The referenced run's plan is still in progress (status pending/running/queued) or was canceled before producing output. `terraform show` on a cloud plan reference whose plan hasn't reached a terminal state.
Common situations: Showing a plan reference for a run that is still executing; showing a plan that was canceled; race between plan creation and `terraform show` before the plan finishes streaming.
Related errors
- couldn't read information for cloud run
- couldn't read information for cloud run
- couldn't read plan data for cloud run
- couldn't read plan data for cloud run
- couldn't read unredacted JSON plan data for cloud run
AI-assisted analysis of hashicorp/terraform@d32a084675 (2026-08-11).
Data as JSON: /api/errors/d8b4fdf0db8a70f5.
Report an issue: GitHub.
Appendix: source
Thrown at internal/cloud/backend_show.go:58
if r.IsDestroy {
mode = plans.DestroyMode
} else if r.RefreshOnly {
mode = plans.RefreshOnlyMode
}
// Check that the plan actually finished
switch r.Plan.Status {
case tfe.PlanErrored:
// Errored plans might still be displayable, but we want to mention it to the renderer.
opts = append(opts, plans.Errored)
case tfe.PlanFinished:
// Good to go, but alert the renderer if it has no changes.
if !r.Plan.HasChanges {
opts = append(opts, plans.NoChanges)
}
default:
// Bail, we can't use this.
err = fmt.Errorf("can't display a cloud plan that is currently %s", r.Plan.Status)
return nil, err
}
// Fetch the json plan!
if redacted {
jsonBytes, err = readRedactedPlan(ctx, b.client.BaseURL(), b.Token, r.Plan.ID)
} else {
jsonBytes, err = b.client.Plans.ReadJSONOutput(ctx, r.Plan.ID)
}
if err == tfe.ErrResourceNotFound {
if redacted {
return nil, fmt.Errorf("couldn't read plan data for cloud run %s; make sure you've run `terraform login` and that you have permission to view the run", runID)
} else {
return nil, fmt.Errorf("couldn't read unredacted JSON plan data for cloud run %s; make sure you've run `terraform login` and that you have admin permissions on the workspace", runID)
}
} else if err != nil {
return nil, fmt.Errorf("couldn't read plan data for cloud run %s: %w", runID, err)
}View on GitHub (pinned to d32a084675)