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
- Decide in the TFC/TFE UI: 'Override' to proceed or 'Cancel' to abort the run.
- If overrides are common, review whether the task should be advisory rather than mandatory.
- 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
- Tune enforcement level (advisory vs mandatory) to match override appetite.
- Wire alerts on awaiting-override stages so failures aren't left hanging.
- Address the underlying task so overrides become rare.
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
- Task Stage ' ': .
- Task stage ' ' has invalid status
- approved using the UI or API
- discarded using the UI or API
- error deleting workspace
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)