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

  1. Avoid the state-store code path until the provider implements these methods.
  2. Upgrade to a build/provider version that implements the state-store methods.
  3. 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

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


AI-assisted analysis of hashicorp/terraform@c9def3e214 (2026-08-07). Data as JSON: /api/errors/38cbb3ab1e60159d. Report an issue: GitHub.