hashicorp/terraform · warning

Task Stage ' ' awaiting override.

Error message

Task Stage '%s' awaiting override.

What it means

waitTaskStage returns this when stage.Status is TaskStageAwaitingOverride: a mandatory task stage failed and TFC is pausing the run, waiting for a user to either override the failure or cancel. The remote backend surfaces it as a polling-stopping error.

Solutions

  1. Decide in the TFC/TFE UI: 'Override' to proceed or 'Cancel' to abort the run.
  2. If overrides are common, review whether the task should be advisory rather than mandatory.
  3. Address the underlying task failure so the next run passes without an override.
Defensive patterns

Strategy: validation

Validate before calling

// Detect awaiting-override and prompt the user instead of failing silently
if stage.Status == tfe.TaskStageAwaitingOverride {
    return fmt.Errorf("stage %s awaits override decision in TFC", stage.ID)
}

Type guard

func needsOverride(s tfe.TaskStageStatus) bool {
    return s == tfe.TaskStageAwaitingOverride
}

Prevention

When it happens

Trigger: A mandatory run task failed; TFC sets the stage to awaiting-override rather than a hard terminal status, expecting a human decision in the UI/CLI.

Common situations: Preventive policy check failed on a mandatory task; cost-estimation or quality gate blocking apply; team needs to decide between overriding (proceed) or canceling the run.

Related errors


AI-assisted analysis of hashicorp/terraform@d32a084675 (2026-08-11). Data as JSON: /api/errors/a0f89edab2be1da2. Report an issue: GitHub.

Appendix: source

Thrown at internal/backend/remote/backend_taskStages.go:47

		}
		stage, err := b.client.TaskStages.Read(ctx.StopContext, stageID, &options)
		if err != nil {
			return false, generalError("Failed to retrieve task stage", err)
		}

		switch stage.Status {
		case tfe.TaskStagePending:
			// Waiting for it to start
			return true, nil
		case tfe.TaskStageRunning:
			// not a terminal status so we continue to poll
			return true, nil
		case tfe.TaskStagePassed:
			return false, nil
		case tfe.TaskStageCanceled, tfe.TaskStageErrored, tfe.TaskStageFailed:
			return false, fmt.Errorf("Task Stage '%s': %s.", stage.ID, stage.Status)
		case tfe.TaskStageAwaitingOverride:
			return false, fmt.Errorf("Task Stage '%s' awaiting override.", stage.ID)
		case tfe.TaskStageUnreachable:
			return false, nil
		default:
			return false, fmt.Errorf("Task stage '%s' has invalid status: %s", stage.ID, stage.Status)
		}
	})
}

View on GitHub (pinned to d32a084675)