{"record":{"id":"bab7673a646087fa","repo":"hashicorp/terraform","slug":"error-in-marshaling-deferred-resource-changes-s","errorCode":null,"errorMessage":"error in marshaling deferred resource changes: %s","messagePattern":"error in marshaling deferred resource changes: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/command/jsonplan/plan.go","lineNumber":312,"sourceCode":"\t\t}\n\t}\n\n\tif err := output.marshalRelevantAttrs(p); err != nil {\n\t\treturn nil, fmt.Errorf(\"error marshaling relevant attributes for external changes: %s\", err)\n\t}\n\n\t// output.ResourceChanges\n\tif p.Changes != nil {\n\t\toutput.ResourceChanges, err = MarshalResourceChanges(p.Changes.Resources, schemas)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error in marshaling resource changes: %s\", err)\n\t\t}\n\t}\n\n\tif p.DeferredResources != nil {\n\t\toutput.DeferredChanges, err = MarshalDeferredResourceChanges(p.DeferredResources, schemas)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error in marshaling deferred resource changes: %s\", err)\n\t\t}\n\t}\n\n\tif p.DeferredActionInvocations != nil {\n\t\toutput.DeferredActionInvocations, err = MarshalDeferredActionInvocations(p.DeferredActionInvocations, schemas)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error in marshaling deferred action invocations: %s\", err)\n\t\t}\n\t}\n\n\t// output.OutputChanges\n\tif output.OutputChanges, err = MarshalOutputChanges(p.Changes); err != nil {\n\t\treturn nil, fmt.Errorf(\"error in marshaling output changes: %s\", err)\n\t}\n\n\t// output.Checks\n\tif p.Checks != nil && p.Checks.ConfigResults.Len() > 0 {\n\t\toutput.Checks = jsonchecks.MarshalCheckStates(p.Checks)","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/command/jsonplan/plan.go#L294-L330","documentation":"Top-level propagation error from Marshal: MarshalDeferredResourceChanges failed on p.DeferredResources. Deferred changes are decoded/rendered like normal resource changes, so failures are schema/decode related, specific to the deferred set.","triggerScenarios":"A deferred resource change references a provider schema missing at render time, or its values fail decode/marshal. Deferred changes are a newer plan feature, so version skew is a common cause.","commonSituations":"Rendering a plan with deferred actions on a Terraform that does not fully support them; provider schema changed after deferral.","solutions":["Read the wrapped error for the failing deferred resource.","Upgrade Terraform to a version matching the plan's deferral feature set.","Regenerate the plan with current providers.","Ensure providers for deferred resource types are initialized."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err := MarshalDeferredResourceChanges(p.DeferredResources, schemas); err != nil {\n    // inspect wrapped cause; deferred changes use the same schemas as normal ones\n    return err\n}","preventionTips":["Use a Terraform version that supports deferred actions when rendering such plans.","Keep providers for deferred resource types initialized."],"tags":["go","terraform","plan","deferred","resource-changes","error-wrapping","jsonplan"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}