grpc/grpc-go · error
parseGRPCServiceConfig not implemented
Error message
parseGRPCServiceConfig not implemented
What it means
Returned by the package-level parseGRPCServiceConfig variable in the ext_authz filter, which is a TODO stub (pending gRFC A102) that always errors. The ext_authz filter calls it whenever a config carries a grpc_service, so enabling the filter with a gRPC authorization server always produces this error today.
Source
Thrown at internal/xds/httpfilter/ext_authz/ext_authz.go:49
"google.golang.org/grpc/internal/xds/xdsclient/xdsresource"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
v3extauthzpb "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_authz/v3"
v3typepb "github.com/envoyproxy/go-control-plane/envoy/type/v3"
)
func init() {
if envconfig.XDSClientExtAuthzEnabled {
httpfilter.Register(builder{})
}
}
var (
// TODO: Remove this once gRFC A102 is implemented.
parseGRPCServiceConfig = func(*v3corepb.GrpcService) (xdsresource.GRPCServiceConfig, error) {
return xdsresource.GRPCServiceConfig{}, fmt.Errorf("parseGRPCServiceConfig not implemented")
}
)
type builder struct{}
func (builder) TypeURLs() []string {
return []string{
"type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz",
"type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute",
}
}
func parseFilterEnabled(fp *v3corepb.RuntimeFractionalPercent) (fraction, error) {
if fp == nil {
return fraction{numerator: 100, denominator: 100}, nil
}
fracPercent := fp.GetDefaultValue()
if fracPercent == nil {View on GitHub (pinned to 03255a9237)
Solutions
- Until A102 is implemented, configure the ext_authz filter with an http_service instead of a grpc_service where possible.
- Disable the ext_authz filter (unset the env flag / do not register it) if gRPC authorization is required.
- Track the gRFC A102 implementation and upgrade grpc-go once parseGRPCServiceConfig is populated.
Defensive patterns
Strategy: validation
Validate before calling
// Avoid wiring ext_authz with a grpc_service until A102 ships.
func extAuthzSafe(cfg *v3extauthzpb.ExtAuthz) error {
if cfg.GetGrpcService() != nil {
return errors.New("ext_authz grpc_service not supported until gRFC A102")
}
return nil
} Prevention
- Use http_service instead of grpc_service for ext_authz until A102 lands.
- Do not enable the ext_authz filter (unset the env flag) if you require gRPC authorization.
- Track A102 and upgrade grpc-go once parseGRPCServiceConfig is implemented.
When it happens
Trigger: XDSClientExtAuthzEnabled is set (filter registered) and the xDS server sends an ExtAuthz config whose grpc_service is populated; ParseFilterConfig calls parseGRPCServiceConfig and gets this not-implemented error.
Common situations: Turning on the external authorization HTTP filter with a gRPC-based authorization service before A102 lands; an Envoy/Traffic Director config that specifies a grpc_service for ext_authz.
Related errors
- extauthz: error parsing config %v: unknown type %T, want *an
- extauthz: missing default_value in filter_enabled
- extauthz: failed to unmarshal config: %v
- extauthz: empty grpc_service provided in config %v
- extauthz: failed to parse grpc_service: %v
AI-assisted analysis of grpc/grpc-go@03255a9237 (2026-08-07).
Data as JSON: /api/errors/88e5bb64849ce7e6.
Report an issue: GitHub.