hashicorp/terraform · error
error in marshaling deferred action invocations
Error message
error in marshaling deferred action invocations: %s
What it means
Top-level propagation error from Marshal: MarshalDeferredActionInvocations failed on p.DeferredActionInvocations. This delegates to the same per-action marshaling logic as non-deferred invocations (errors 602–607).
Solutions
- Read the wrapped error — it is typically one of 602–607 applied to a deferred invocation.
- Re-init providers and regenerate the plan.
- Align Terraform and provider versions.
- Remove deferred action blocks whose providers no longer support them.
Defensive patterns
Strategy: try-catch
Try / catch
if _, err := MarshalDeferredActionInvocations(p.DeferredActionInvocations, schemas); err != nil {
return err // wrapped error is one of 602–607 for the deferred action
} Prevention
- Initialize all action-type providers before rendering.
- Keep ephemeral values out of deferred action config (see 606).
When it happens
Trigger: A deferred action invocation triggers any of the per-action failures: missing schema, decode failure, unsupported trigger type, ephemeral or unsupported marks.
Common situations: Deferred actions referencing action types/providers not initialized; version skew between plan and renderer.
Related errors
- error in marshaling deferred resource changes
- error marshaling action invocations
- failed to decode action
- action has config values with unsupported marks
- action has ephemeral config values, which are not supported…
AI-assisted analysis of hashicorp/terraform@d32a084675 (2026-08-11).
Data as JSON: /api/errors/72565528fee45747.
Report an issue: GitHub.
Appendix: source
Thrown at internal/command/jsonplan/plan.go:319
// output.ResourceChanges
if p.Changes != nil {
output.ResourceChanges, err = MarshalResourceChanges(p.Changes.Resources, schemas)
if err != nil {
return nil, fmt.Errorf("error in marshaling resource changes: %s", err)
}
}
if p.DeferredResources != nil {
output.DeferredChanges, err = MarshalDeferredResourceChanges(p.DeferredResources, schemas)
if err != nil {
return nil, fmt.Errorf("error in marshaling deferred resource changes: %s", err)
}
}
if p.DeferredActionInvocations != nil {
output.DeferredActionInvocations, err = MarshalDeferredActionInvocations(p.DeferredActionInvocations, schemas)
if err != nil {
return nil, fmt.Errorf("error in marshaling deferred action invocations: %s", err)
}
}
// output.OutputChanges
if output.OutputChanges, err = MarshalOutputChanges(p.Changes); err != nil {
return nil, fmt.Errorf("error in marshaling output changes: %s", err)
}
// output.Checks
if p.Checks != nil && p.Checks.ConfigResults.Len() > 0 {
output.Checks = jsonchecks.MarshalCheckStates(p.Checks)
}
// output.PriorState
if sf != nil && !sf.State.Empty() {
output.PriorState, err = jsonstate.Marshal(sf, schemas)
if err != nil {
return nil, fmt.Errorf("error marshaling prior state: %s", err)View on GitHub (pinned to d32a084675)