v1.4.0-alpha.1
Pre-release
Pre-release
🎉 Welcome to the 1.4.0-alpha.1 release of the agentgateway project!
Agentgateway is a gateway that handles traditional application traffic and AI-native protocols in one data plane. v1.4.0-alpha.1 is the first pre-release in the v1.4 release series, expected to release later this month.
This release comes with a number of changes, but focused on MCP, with support for the upcoming 2026-07-28 protocol version and Enterprise-Managed Authorization (using Cross App Access/XAA).
Artifacts
Docker images are available:
cr.agentgateway.dev/agentgateway:v1.4.0-alpha.1cr.agentgateway.dev/controller:v1.4.0-alpha.1
Helm charts are available:
cr.agentgateway.dev/charts/agentgateway:v1.4.0-alpha.1cr.agentgateway.dev/charts/agentgateway-crds:v1.4.0-alpha.1cr.agentgateway.dev/charts/agentgateway-standalone:v1.4.0-alpha.1
Binaries for agentgateway and the agctl CLI are available below.
Quick Start
Follow the Kubernetes or Standalone quick start guide to get started!
What's Changed
- costs: add prometheus counter metric by @howardjohn in #2243
- ext authz: cache HTTP as well as gRPC by @howardjohn in #2283
- ui: fix pricing catalog by @howardjohn in #2241
- dtrace: log body for streaming llm too by @howardjohn in #2287
- cel: expose CONNECT request headers as source.connectHeaders by @shashankram in #2285
- feat(telemetry): add opt-in CEL filter for OTel spans by @inercia in #2295
- fix(foundry): add support for anthropic endpoints on foundry by @Darkflame72 in #2190
- Centralize LLM provider format capabilities by @danehans in #2288
- ext authz: add custom body for http payloads by @howardjohn in #2284
- ui: fix virtual API key copy button by @yalindogusahin in #2294
- tracing: expose filter in Kubernetes by @howardjohn in #2300
- dtrace: add copy details button by @howardjohn in #2289
- controller: fix MCP Guardrails not referencing AGBE by @howardjohn in #2307
- build(deps): bump golang.org/x/image from 0.28.0 to 0.38.0 in the go_modules group across 1 directory by @dependabot[bot] in #2303
- admin: allow directly routing to internal admin interface by @howardjohn in #2299
- llm: fix detect and audio endpoints by @howardjohn in #2301
- Add standalone agentgateway Helm chart by @kevin-shelaga in #2255
- agctl: trim 100mb off the binary by @howardjohn in #2290
- proxy: terminate outer TLS before serving CONNECT tunnels by @shashankram in #2308
- api key: allow sha256 encoded keys by @howardjohn in #2240
- Custom CEL functions by @howardjohn in #2230
- test cost configmaps by @nfuden in #2306
- agctl: move trace and config command logic under proxy subcommand by @GuruduGanesh in #2197
- fix(llm): apply pathPrefix for passthrough routes on custom-host backends by @onematchfox in #2151
- Support A2A v1.0 agent card format in URL rewriting by @timonschmidt in #2251
- security: fix timing attacks in auth and add admin IP allowlist by @rafael31p in #2191
- proxy: avoid noisy TLS logs by @howardjohn in #2311
- auth: add RFC 8693 token exchange backend auth by @gilad9366 in #2189
- Release standalone Helm chart by @kevin-shelaga in #2320
- feat(ui): detect Claude subscription misuse and show warning by @rajv2er in #2321
- Allow conformance GatewayClass overrides by @danehans in #2329
- guardrails: avoid unnecessary regex guard allocations by @stevenctl in #2328
- Drop and test large stack sizes by @howardjohn in #2336
- binds: add internal bind mode and wildcard fallback by @shashankram in #2326
- pprof: use frame-pointers by @howardjohn in #2332
- build(deps): bump the cargo-weekly group with 11 updates by @dependabot[bot] in #2352
- cel: make duration(duration) and identity function by @howardjohn in #2354
- llm: remove unnecessary async/.await from process_streaming by @markuskobler in #2356
- [feat] GWAPI FrontendTLS: Support multiple CAs for the client cert validation in agentgateway by @krinkinmu in #2173
- dtrace: include frontend policy selection by @howardjohn in #2355
- mcp: accept get stream when only a subset of servers have 405 by @howardjohn in #2342
- buffer: copy buffer limit around more by @howardjohn in #2353
- mcp: add modern MCP release foundation by @filintod in #2345
- Move incoming_connect_tunnel_reenters_internal_bind test to ephemeral port by @howardjohn in #2362
- fix extproc attributes and grpc initial metadata by @jenshu in #2364
- bump to rust 1.96.1 by @nfuden in #2390
- feat(buffer): Allow streaming on bodies larger than the limit by @yanir75 in #2358
- controller: support ext_proc metadataContext/requestAttributes/responseAttributes by @fengxsong in #2369
- chore: Bump
kube-api-linterversion and fixgoseclinter by @dongjiang1989 in #2366 - fix: honor TLS for tracing HTTPS endpoints by @jstar0 in #2372
- llm: register transformation CEL expression by @howardjohn in #2393
- policy: support targeting frontend policies to a Gateway port by @shashankram in #2363
- guardrails: default timeouts for callouts by @nfuden in #2388
- Initial support for MCP 2026-07-28 by @howardjohn in #2365
- standalone: use simple schema macro more by @howardjohn in #2392
- otlp logs: decouple fields and filter from stdout by @howardjohn in #2313
- gateway: support internal bind mode via annotation by @shashankram in #2380
- controller: move to TCPRoute v1 by @howardjohn in #2389
- deployer: populate InternalPorts in GatewayIRFrom fallback by @shashankram in #2396
- standalone: add dependency tracking for config by @howardjohn in #2327
- tools: bump dependencies by @howardjohn in #2394
- docs: Update tool names in Authorization example by @aakashsbhatia2 in #2344
- refactor: replace sort.Slice with slices.Sort for natural ordering by @dongjiang1989 in #2367
- Use k8s:enum more by @howardjohn in #2405
- config: better error messages by @howardjohn in #2406
- add azureauth types to k8s side by @jgreeer in #2337
- Return request-phase MCP guardrail rejections as 200, matching the response phase by @christensenjairus in #2331
- llm: refactor standalone model router by @howardjohn in #2330
- chore(lint): upgrade golangci-lint and its plugins; run clippy before formatting by @markuskobler in #2381
- openapi: support application/octet-stream request bodies in MCP tool generation by @dhruvbehl in #2400
- Feat: Add Descope as an MCP authentication provider by @joshwertheim in #2376
- fix: add default timeout for oauthTokenExchange token endpoint by @jgreeer in #2410
- Bedrock: sanitize tool names exceeding 64-char Converse limit by @devmittal02 in #2384
- auth.location: remove double nested
expressionby @howardjohn in #2411 - dtrace: show final status and error by @howardjohn in #2412
- Expand OAuth token exchange backend auth by @markuskobler in #2338
- Bump istio version to fix broken startup due to TCPRoute 1.6.0 by @keithmattix in #2432
- build(deps): bump the cargo-weekly group with 5 updates by @dependabot[bot] in #2438
- feat(metrics): add agentgateway_controller_build_info metric and fix SetRegistry lifecycle bug by @dongjiang1989 in #2399
- feat: add support for AWS session tags & RoleSessionName by @Lyqed in #2435
- build(deps): bump cmov from 0.5.3 to 0.5.4 by @dependabot[bot] in #2439
- Code of conduct: clarify anti-issue agent stance by @howardjohn in #2441
- standalone: support LLM and MCP on the same port by @howardjohn in #2409
- controller: drop deadcode from opencensus by @howardjohn in #2440
- Refactor LLM translation paths by @howardjohn in #2415
- auth: OAuth Identity Assertion Authorization Grant Support (ID-JAG / "Cross App Access" / XAA) by @markuskobler in #2436
New Contributors
- @Darkflame72 made their first contribution in #2190
- @yalindogusahin made their first contribution in #2294
- @GuruduGanesh made their first contribution in #2197
- @timonschmidt made their first contribution in #2251
- @rafael31p made their first contribution in #2191
- @rajv2er made their first contribution in #2321
- @krinkinmu made their first contribution in #2173
- @dongjiang1989 made their first contribution in #2366
- @jstar0 made their first contribution in #2372
- @aakashsbhatia2 made their first contribution in #2344
- @christensenjairus made their first contribution in #2331
- @dhruvbehl made their first contribution in #2400
- @joshwertheim made their first contribution in #2376
- @devmittal02 made their first contribution in #2384
- @Lyqed made their first contribution in #2435
Full Changelog: v1.3.1...v1.4.0-alpha.1