hashicorp/terraform · error
The builtin provider does not support provider upgrades sinc
Error message
The builtin provider does not support provider upgrades since it has not changed the identity schema yet.
What it means
Returned by upgradeDataStoreResourceIdentity at resource_data.go:109. The builtin provider has not changed its resource-identity schema, so it deliberately rejects any UpgradeResourceIdentity request. There is no prior identity version to migrate from, so attempting an identity upgrade is treated as an error rather than a passthrough.
Source
Thrown at internal/builtin/providers/terraform/resource_data.go:109
}
return resp
}
func upgradeDataStoreResourceState(req providers.UpgradeResourceStateRequest) (resp providers.UpgradeResourceStateResponse) {
// We've only added new nullable block attributes, so unmarshaling from json
// will complete the data structure correctly.
val, err := ctyjson.Unmarshal(req.RawStateJSON, dataStoreResourceSchema().Body.ImpliedType())
if err != nil {
resp.Diagnostics = resp.Diagnostics.Append(err)
return resp
}
resp.UpgradedState = val
return resp
}
func upgradeDataStoreResourceIdentity(providers.UpgradeResourceIdentityRequest) (resp providers.UpgradeResourceIdentityResponse) {
resp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf("The builtin provider does not support provider upgrades since it has not changed the identity schema yet."))
return resp
}
func readDataStoreResourceState(req providers.ReadResourceRequest) (resp providers.ReadResourceResponse) {
resp.NewState = req.PriorState
resp.Private = req.Private
return resp
}
func planDataStoreResourceChange(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) {
resp.PlannedState = req.ProposedNewState
if req.ProposedNewState.IsNull() {
// destroy op
return resp
}
planned := req.ProposedNewState.AsValueMap()View on GitHub (pinned to c9def3e214)
Solutions
- No action needed if the error is transient during a Core upgrade; ensure you are on a matching Terraform version where the builtin provider implements the identity schema.
- If persistently hit, remove/replace the terraform_data resource or clear its identity in state with terraform state replacement.
- Report as a bug if it appears on the Terraform version the builtin provider shipped with.
Defensive patterns
Strategy: try-catch
Type guard
// Detect the unsupported-identity-upgrade error by message prefix.
func isUnsupportedIdentityUpgrade(err error) bool {
return err != nil && strings.Contains(err.Error(), "does not support provider upgrades")
} Try / catch
resp := upgradeDataStoreResourceIdentity(req)
for _, d := range resp.Diagnostics {
if isUnsupportedIdentityUpgrade(d) {
// expected on builtin provider; skip rather than abort
continue
}
// handle real diagnostics
} Prevention
- Do not run UpgradeResourceIdentity against the builtin terraform provider.
- Match Terraform Core and builtin provider versions so identity upgrades are never attempted.
When it happens
Trigger: Terraform Core invokes UpgradeResourceIdentityRequest for a terraform_data resource (e.g. after a provider/Core upgrade that introduced identity handling).
Common situations: Upgrading Terraform Core to a version that supports resource identity while state contains terraform_data resources whose identity blob is being migrated; running terraform refresh after such an upgrade.
Related errors
- %q attribute is read-only
- The -upgrade flag conflicts with -lockfile=readonly.
- preparing identity values for %s: %w
- default workspace not supported You can create a new workspa
- approved using the UI or API
AI-assisted analysis of hashicorp/terraform@c9def3e214 (2026-08-07).
Data as JSON: /api/errors/63443c5fe9bb71d1.
Report an issue: GitHub.