Migrating to Envoy v1.38.0
Version v1.38.0 introduces 5 breaking changes. This guide details how to update your code.
Released: 4/23/2026
⚠️ Check Your Code
If you use any of these symbols, you need to read this guide:
tcp_proxymax_early_data_bytesupstream_connect_modeon_demand filterenvoy.reloadable_features.on_demand_cluster_no_recreate_streamBoringSSL/FIPS--define=boringssl=fips--config=boringssl-fipsenforce_rsa_key_usageext_procprocessing_effect_libextensions/filters/http/ext_procextensions/filters/common/processing_effectroute()clusterInfo()virtualHost()OptRef<const T>*SharedPtr()x-forwarded-client-cert (XFCC)envoy.filters.http.sse_to_metadataenvoy.content_parsers.jsonenvoy.filters.http.file_serverext_authzshadow_modestatus_on_errorOAuth2TLS_CLIENT_AUTHOauthExpiresoauth2_encrypt_tokensdisable_token_encryptionRBAC header matcher%DOWNSTREAM_PEER_ISSUER_FINGERPRINT_256%%DOWNSTREAM_PEER_ISSUER_SERIAL%OpenSSLHTTP/3 (QUIC)SPAN_IDQUERY_PARAMSUPSTREAM_LOCAL_CLOSE_REASONDOWNSTREAM_LOCAL_CLOSE_REASONUPSTREAM_DETECTED_CLOSE_TYPEDOWNSTREAM_DETECTED_CLOSE_TYPE%UPSTREAM_HOSTS_ATTEMPTED%%FILE_CONTENT(...)%SECRET(name)%*_WITHOUT_PORTMASK_PREFIX_LENx-envoy-degradedRedis ClusterLOCAL_ZONE_AFFINITYLOCAL_ZONE_AFFINITY_REPLICAS_AND_PRIMARYupstream_rq_active_overflowODCDSADSSRDSdrop_overloadEDS metadata comparisonORCA weight manageris_negative_hitshits_addendRemoteAddressMatchx-ratelimit-*timeout: 0sBreaking Changes
●Issue #1
The tcp_proxy configuration now requires explicit setting of `max_early_data_bytes` when `upstream_connect_mode` is not `IMMEDIATE`; missing configurations cause startup validation failure.
●Issue #2
The on-demand filter no longer performs internal redirects after a successful CDS fetch, meaning earlier filters are not invoked twice. This behavior can be reverted using the runtime feature `envoy.reloadable_features.on_demand_cluster_no_recreate_stream`.
●Issue #3
The `--define=boringssl=fips` Bazel flag for building BoringSSL/FIPS has been removed; users must now use `--config=boringssl-fips`.
●Issue #4
The `enforce_rsa_key_usage` option now defaults to `true` for TLS contexts (both upstream and implicitly for general TLS configuration). This option will be removed in the next release.
●Issue #5
The location of the external processing filter library (`processing_effect_lib`) has moved from `extensions/filters/http/ext_proc` to `extensions/filters/common/processing_effect`.
Migration Steps
- 1If using `upstream_connect_mode` other than `IMMEDIATE` in `tcp_proxy`, ensure `max_early_data_bytes` is explicitly configured.
- 2If relying on the on-demand filter to invoke earlier filters twice after CDS fetch, enable the runtime feature `envoy.reloadable_features.on_demand_cluster_no_recreate_stream`.
- 3Replace the Bazel flag `--define=boringssl=fips` with `--config=boringssl-fips` when building FIPS-enabled binaries.
- 4Review configurations using `enforce_rsa_key_usage` as it now defaults to `true` on upstream TLS contexts; explicitly set it to `false` if required, knowing it will be removed next release.
- 5Update dynamic module code referencing `processing_effect_lib` path from `extensions/filters/http/ext_proc` to `extensions/filters/common/processing_effect`.
- 6If using OAuth2 token encryption, use the runtime guard `disable_token_encryption` to opt-out instead of the removed `oauth2_encrypt_tokens` guard.
- 7Update any code relying on concatenation-based bypasses in RBAC header matchers, as individual value validation is now enforced.
- 8Ensure query parameter mutations using `query_parameter_mutations` are correctly URL-encoded if they contain special characters.
- 9When building with OpenSSL, note that HTTP/3 (QUIC) will be disabled.
Release Summary
This release introduces extensive new capabilities for dynamic module extensibility, significant enhancements to the MCP and A2A protocols, and security hardening across TLS and authorization components. Several configuration defaults have been tightened, notably around RSA key usage enforcement.
Need More Details?
View the full release notes and all changes for Envoy v1.38.0.
View Full Changelog