{"record":{"id":"eb9a21faa0131463","repo":"hashicorp/terraform","slug":"unsupported-ephemeral-resource-type-q","errorCode":null,"errorMessage":"unsupported ephemeral resource type %q","messagePattern":"unsupported ephemeral resource type %q","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/builtin/providers/terraform/provider.go","lineNumber":226,"sourceCode":"\tcase \"terraform_data\":\n\t\treturn moveDataStoreResourceState(req)\n\tdefault:\n\t\tvar resp providers.MoveResourceStateResponse\n\n\t\tresp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf(\"Error: unsupported resource %s\", req.TargetTypeName))\n\n\t\treturn resp\n\t}\n}\n\n// ValidateResourceConfig is used to to validate the resource configuration values.\nfunc (p *Provider) ValidateResourceConfig(req providers.ValidateResourceConfigRequest) providers.ValidateResourceConfigResponse {\n\treturn validateDataStoreResourceConfig(req)\n}\n\nfunc (p *Provider) ValidateEphemeralResourceConfig(req providers.ValidateEphemeralResourceConfigRequest) providers.ValidateEphemeralResourceConfigResponse {\n\tvar resp providers.ValidateEphemeralResourceConfigResponse\n\tresp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf(\"unsupported ephemeral resource type %q\", req.TypeName))\n\treturn resp\n}\n\n// OpenEphemeralResource implements providers.Interface.\nfunc (p *Provider) OpenEphemeralResource(req providers.OpenEphemeralResourceRequest) providers.OpenEphemeralResourceResponse {\n\tvar resp providers.OpenEphemeralResourceResponse\n\tresp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf(\"unsupported ephemeral resource type %q\", req.TypeName))\n\treturn resp\n}\n\n// RenewEphemeralResource implements providers.Interface.\nfunc (p *Provider) RenewEphemeralResource(req providers.RenewEphemeralResourceRequest) providers.RenewEphemeralResourceResponse {\n\tvar resp providers.RenewEphemeralResourceResponse\n\tresp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf(\"unsupported ephemeral resource type %q\", req.TypeName))\n\treturn resp\n}\n\n// CloseEphemeralResource implements providers.Interface.","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/builtin/providers/terraform/provider.go#L208-L244","documentation":"The built-in terraform provider declares no ephemeral resource types: EphemeralResourceTypes is an empty map in GetProviderSchema. ValidateEphemeralResourceConfig therefore rejects every call unconditionally. The provider cannot validate any ephemeral resource.","triggerScenarios":"Any providers.ValidateEphemeralResourceConfigRequest reaching the built-in terraform provider; Core dispatching ephemeral-resource validation to the built-in terraform address.","commonSituations":"A Core code path that skips the schema gate for ephemeral resources; a stale schema cache that lost the empty EphemeralResourceTypes map.","solutions":["Ensure Core checks GetProviderSchema.EphemeralResourceTypes is non-empty for the type before dispatching","Route ephemeral requests to a provider that declares the type","If you intend the built-in provider to serve an ephemeral resource, register it in GetProviderSchema first"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// The built-in terraform provider serves no ephemeral resources.\nschema := p.GetProviderSchema()\nif _, ok := schema.EphemeralResourceTypes[req.TypeName]; !ok {\n    // do not call ValidateEphemeralResourceConfig on this provider\n}","typeGuard":"// The built-in terraform provider serves no ephemeral resource types.\nfunc isBuiltinTerraformEphemeralResource(_ string) bool {\n    return false\n}","tryCatchPattern":null,"preventionTips":["Gate ValidateEphemeralResourceConfig on GetProviderSchema.EphemeralResourceTypes","Treat an empty EphemeralResourceTypes map as authoritative: no ephemeral resources here","Keep the schema cache fresh after provider upgrades"],"tags":["terraform","go","provider","ephemeral","invariant"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}