For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
Release notes
Review the release notes for agentgateway.
Review the release notes for agentgateway.
Note
For more details, check out the release blog, or review the GitHub release notes in the agentgateway repository.
🔥 Breaking changes
Gateway API v1.6 and TCPRoute v1
Agentgateway now builds against Gateway API v1.6, and the controller uses the v1 version of TCPRoute instead of v1alpha2. Re-apply the Gateway API CRDs that match this release before you upgrade, and update any automation that references TCPRoute by its v1alpha2 version.
MCP request-phase guardrail rejections return HTTP 200
When an MCP guardrail rejects a request during the request phase, agentgateway now returns the rejection as an HTTP 200 with a JSON-RPC error body, matching the existing response-phase behavior. Update any clients or tests that expected a non-200 status for request-phase rejections.
🌟 New features
MCP protocol 2026-07-28 support
Agentgateway adds support for the upcoming MCP 2026-07-28 protocol version.
- Stateful and stateless servers: Agentgateway supports both stateful and stateless MCP servers, including closing the SEP-2575 server-stateless conformance gap and skipping the synthetic
initializehandshake for modern requests. - Trace context propagation: Distributed trace context propagates through the MCP
_metafield (SEP-414). - MCP Apps: Basic support for MCP Apps, including multiplexing fixes for app-originated tool calls.
- Capability and multiplexing improvements: Preserved multi-resource tool result (MRTR) capabilities for modern clients, multi-target subscriptions and listen, and opaque resource URI multiplexing.
Because the MCP 2026-07-28 support is new in this release, most of it is not yet covered by a dedicated guide. For the fields available today, see the API reference.
Cross App Access (XAA) for MCP
Agentgateway supports MCP Enterprise-Managed Authorization through the OAuth Identity Assertion Authorization Grant (ID-JAG), also known as Cross App Access (XAA). An enterprise identity provider can broker access between a client application and the MCP server without the end user completing a separate OAuth flow for each downstream app. For more information, see Cross App Access (ID-JAG).
OAuth token exchange backend authentication
Agentgateway can exchange an incoming token for a backend credential by using RFC 8693 OAuth 2.0 token exchange and the RFC 7523 JWT bearer grant. This release adds controller support, custom token types and OAuth 2.1 exchange defaults, the ability to inject multiple secret-sourced headers, and an override for the resolved secret key. For more information, see OAuth token exchange.
Microsoft Entra ID as an MCP authentication provider
Agentgateway includes a native Entra MCP authentication provider that bridges the OAuth behaviors that Microsoft Entra ID (Azure AD) implements differently from the MCP authorization specification, such as serving RFC 8414 metadata from Entra’s OIDC discovery document, stripping the RFC 8707 resource parameter, and short-circuiting Dynamic Client Registration with your pre-registered application ID. For more information, see Set up Microsoft Entra ID.
Model-centric LLM configuration with AgentgatewayModel
A new experimental AgentgatewayModel API provides a model-centric way to serve LLMs in Kubernetes. Each resource declares one client-facing model and attaches directly to a Gateway listener, so you no longer assemble a listener, an HTTPRoute that matches on the request body, an AgentgatewayBackend for each provider, and an AgentgatewayPolicy for the AI behavior.
- Listener opt-in: A listener serves LLM traffic when it allows the
AgentgatewayModelroute kind inallowedRoutes.kinds. The same listener can also allowHTTPRoute, so LLM endpoints and ordinary HTTP routes coexist on one port. - Aggregated model table: Models that attach to the same listener are aggregated into one table that serves request model extraction, the standard LLM API paths,
/v1/modelsdiscovery, per-model provider routing, and OpenAI-compatible responses for unknown models. - Concrete and virtual models: A concrete model names the provider that serves it. A virtual model routes across other models with weighted, failover, or conditional strategies.
- Per-model policies: Concrete models accept an inline
policiesblock for credentials, authorization, transformations, guardrails, health, TLS, tunnel, and header changes.
The API is disabled by default. To enable it, set the agentgatewayModels.enabled=true Helm value on the control plane. For more information, see About models, Serve a model, and Virtual models.
Virtual keys from ConfigMaps and hashed keys
Virtual keys can now be sourced from a ConfigMap in addition to a Secret, and API keys can be stored as SHA-256 hashes so that raw key material never needs to live in the cluster. For more information, see Virtual keys.
CEL enhancements
- Custom CEL functions: Register custom CEL functions for use in policies.
- CEL filters for telemetry: An opt-in CEL filter selects which requests emit OpenTelemetry spans, exposed in Kubernetes, and CEL filters decouple OTLP log fields and filtering from stdout logging.
- New CEL context and functions: Access inbound
CONNECTrequest headers throughsource.connectHeaders, and use a CEL replace mode for header transformations.
For the full CEL surface, see the CEL reference.
Fault injection: request delay
A new delay traffic policy injects latency before a request is forwarded to the backend, for fault-injection and chaos testing. The delay.duration field accepts a duration string or a CEL expression that returns a duration (or a number interpreted as milliseconds), so you can inject latency conditionally, for example on a percentage of requests. Injected delay counts against the request timeout. For more information, see Fault injection.
AWS assume-role session tags and session name
AWS assumeRole backend authentication supports STS session tags and a configurable RoleSessionName. Both the session name (sessionNameExpression) and per-tag values (tags[].expression) can be set from CEL expressions that are evaluated per request, so you can propagate identity attributes such as jwt.sub into the assumed AWS session. For the available fields, see the API reference.
Guardrail enhancements
- Backend connection policy for callouts: A
BackendConnectionPolicycontrols the TCP, TLS, HTTP, and tunnel settings agentgateway uses when it calls out to a guardrail service, and is available on the OpenAI moderation, Bedrock guardrails, and Google Model Armor policies. - Default callout timeouts: Guardrail callouts now apply a default timeout.
- Improved logs and UI: Guardrail decisions surface more clearly in logs and the UI.
failureModefor external processing: External processing (extProc) supports afailureModefor fail-open or fail-closed behavior.
For more information, see the LLM guardrails and MCP guardrails docs.
External processing enhancements
The controller supports metadataContext, requestAttributes, and responseAttributes for external processing, and extProc exposes a failureMode. For more information, see External processing.
LLM gateway enhancements
- Bedrock: Added Responses-to-Bedrock image translation, sanitized tool names that exceed the 64-character Converse limit, and propagated cache-write tokens to the access log.
- Gemini: Fixed embeddings handling and
generateContentmodel and usage extraction in detect mode. - Vertex AI: Gemini requests use the native
generateContentandstreamGenerateContentendpoints, andrawPredictrequests are rewritten for any publisher, not only Anthropic. - Azure AI Foundry: Support for Anthropic endpoints on Foundry.
- Detect mode and audio: Fixed the detect-mode and audio endpoint paths.
For the list of supported providers, see the LLM providers docs.
A2A v1.0 agent cards
Agentgateway supports the A2A v1.0 agent card format when it rewrites agent card URLs. For more information, see the A2A docs.
Frontend TLS with multiple CAs
Frontend TLS client certificate validation can trust multiple CAs, so you can rotate or federate client CAs without downtime. For the available fields, see the API reference.
Deployment and operations
- DaemonSet workloads: Deploy the data plane as a
DaemonSet. - Sidecars in control plane pods: A Helm
extraContainersvalue runs sidecar containers in control plane pods. - Metrics scraping: Scrape proxy metrics with a
PodMonitor, and a newagentgateway_controller_build_infometric reports controller build details. - XDS resource versioning: XDS resources are now versioned.
- Security hardening: Fixed timing attacks in authentication and added an admin IP allowlist.