hashicorp/terraform · error
not implemented
Error message
not implemented
What it means
Panics in GRPCProvider.ValidateStateStoreConfig (grpc_provider.go:1451) and its sibling stubs (ConfigureStateStore, ReadStateBytes, WriteStateBytes, LockState, UnlockState, GetStates). These providers.Interface methods for the state-store abstraction are unimplemented stubs that panic 'not implemented'.
Source
Thrown at internal/plugin/grpc_provider.go:1451
break
}
results = append(results, cty.ObjectVal(obj))
}
// The provider result of a list resource is always a list, but
// we will wrap that list in an object with a single attribute "data",
// so that we can differentiate between a list resource instance (list.aws_instance.test[index])
// and the elements of the result of a list resource instance (list.aws_instance.test.data[index])
resp.Result = cty.ObjectVal(map[string]cty.Value{
"data": cty.TupleVal(results),
"config": config,
})
return resp
}
func (p *GRPCProvider) ValidateStateStoreConfig(r providers.ValidateStateStoreConfigRequest) providers.ValidateStateStoreConfigResponse {
panic("not implemented")
}
func (p *GRPCProvider) ConfigureStateStore(r providers.ConfigureStateStoreRequest) providers.ConfigureStateStoreResponse {
panic("not implemented")
}
func (p *GRPCProvider) ReadStateBytes(r providers.ReadStateBytesRequest) providers.ReadStateBytesResponse {
panic("not implemented")
}
func (p *GRPCProvider) WriteStateBytes(r providers.WriteStateBytesRequest) providers.WriteStateBytesResponse {
panic("not implemented")
}
func (p *GRPCProvider) LockState(r providers.LockStateRequest) providers.LockStateResponse {
panic("not implemented")
}
View on GitHub (pinned to c9def3e214)
Solutions
- Avoid the state-store code path until the provider implements these methods.
- Upgrade to a build/provider version that implements the state-store methods.
- Disable the experimental state-store feature flag.
Defensive patterns
Strategy: type-guard
Validate before calling
// feature-detect before calling state-store methods on a GRPCProvider
func stateStoreImplemented(p providers.Interface) bool {
// call into a typed interface guard or a version/capability check;
// avoid invoking the panicking stubs directly.
_, ok := p.(providers.StateStoreCapable)
return ok
} Type guard
// optional capability interface providers can implement to advertise support
type StateStoreCapable interface { StateStoreSupported() bool } Try / catch
defer func() {
if r := recover(); r != nil {
if err, ok := r.(error); ok && err.Error() == "not implemented" {
// fall back to the standard state backend path
} else { panic(r) }
}
}() Prevention
- Do not exercise the state-store code path against providers that only ship the stub.
- Upgrade to a build/provider that implements the methods.
- Gate experimental state-store features behind capability checks.
When it happens
Trigger: Calling any state-store provider method on this GRPCProvider — i.e. exercising the state-store feature path against a provider/plugin that has not implemented it.
Common situations: Using a Terraform build that routes to the state-store interface while the bundled provider plugin is a legacy shim lacking the implementation; enabling experimental state-store features.
Related errors
- missing provider schema
- Failed to negotiate acceptable chunk size. Expected size > 0
- unsupported state store type %q
- error when obtaining provider instance during state store in
- encountered a malformed backend state file with a 'state_sto
AI-assisted analysis of hashicorp/terraform@c9def3e214 (2026-08-07).
Data as JSON: /api/errors/38cbb3ab1e60159d.
Report an issue: GitHub.