ext_proc: xds.virtual_host_metadata unparseable due to DebugString serialization (Envoy 1.37.0)
#43466 opened on Feb 12, 2026
Description
Title: Virtual host metadata uses DebugString instead of TextFormat (Protobuf 30+ incompatible)
Description:
Envoy 1.37.0 serializes the xds.virtual_host_metadata attribute using DebugString() instead of TextFormat::PrintToString(). With Protobuf 30+, this produces unparseable output prefixed with goo.gle/debugonly or goo.gle/debugstr.
External processor (ext_proc) implementations cannot parse the virtual host metadata because Protobuf 30+ intentionally adds these prefixes to prevent parsing (see https://protobuf.dev/programming-guides/deserialize-debug/).
Expected behavior: Metadata should be serialized using TextFormat::PrintToString() to produce machine-readable protobuf text format that can be parsed by standard protobuf libraries.
Repro steps:
- Deploy Envoy 1.37.0 with an external processor configuration
- Configure virtual host metadata.
- External processor receives
xds.virtual_host_metadataattribute in ProcessingRequest - Attempt to parse the string value as protobuf text format
- Parsing fails with:
proto: syntax error (line 1:1): invalid field name: goo.gle/debugonly
Environment: Envoy 1.37.0
Logs:
Sample metadata received by ext_proc:
goo.gle/debugonly filter_metadata { key: "someKey" value { fields { key: "apiIdentifier" value { string_value: "..." } } fields { key: "extHost" value { string_value: "..." } } } }
Error when parsing:
proto: syntax error (line 1:1): invalid field name: goo.gle/debugonly
Impact:
Breaking change from 1.36 to 1.37 - makes virtual host metadata unparseable by ext_proc implementations using standard protobuf libraries (Go, Python, Java, C++).