v1.4.1
anomalyco/opentuiv1.4.1Jul 29, 2026by github-actions[bot]
AI Summary
A maintenance release focused on bug fixes and compatibility improvements, specifically addressing issues with the new MCP specification and enhancing prompt guard functionality.
Key Highlights
- Full MCP Tasks support including task retrieval, updates, and cancellation.
- Prompt guards now preserve structured tool-use content and evaluate consecutive text blocks.
- OAuth token-exchange configurations now fail closed (explicit selection required).
- Model catalogs now hot reload consistently when changed.
- Connection-handshake timeout added to prevent hung HTTP/2 connections.
Breaking Changes
- Top-level standalone `llm` and `mcp` listeners may no longer share a port.
- Model references using named custom providers now use provider's configured name for catalog lookup.
- OAuth token-exchange configurations must explicitly select `jwt.rawToken.unredacted()`.
New Features
- MCP Tasks support.
- MCP upstream response validation.
- Prompt guard improvements (consecutive text blocks, tool output scanning).
- Configuration storage and logging can use separate databases.
- Environment expansion before configuration parsing.
Full Release Notes
🎉 Welcome to the 1.4.1 release of the agentgateway project! ## Artifacts **Docker images** are available: * `cr.agentgateway.dev/agentgateway:v1.4.1` * `cr.agentgateway.dev/controller:v1.4.1` **Helm charts** are available: * `cr.agentgateway.dev/charts/agentgateway:v1.4.1` * `cr.agentgateway.dev/charts/agentgateway-crds:v1.4.1` * `cr.agentgateway.dev/charts/agentgateway-standalone:v1.4.1` **Binaries** for `agentgateway` and the `agctl` CLI are available below. ## Quick Start Follow the [Kubernetes](https://agentgateway.dev/docs/kubernetes/latest/quickstart/) or [Standalone](https://agentgateway.dev/docs/standalone/latest/quickstart/) quick start guide to get started! # Agentgateway v1.4.1 This release fixes a few bugs around LLM and MCP, increasing compatibility with the new 07-28-2026 specification. ## Upgrade notes - Top-level standalone `llm` and `mcp` listeners may no longer share a port. To expose both on one port, attach them to the same configured gateway. - When a model references a named custom provider, that provider’s configured name is now used for custom model-catalog lookup. Catalog entries keyed under the generic `custom` provider name may need to be updated. - OAuth token-exchange configurations that relied on an implicit fallback to validated JWT claims must explicitly select `jwt.rawToken.unredacted()` as the subject-token source. ## MCP improvements - Added MCP Tasks support, including task retrieval, updates, cancellation, multiplexed task IDs, capability advertisement, RBAC enforcement, and task context in CEL and telemetry. - MCP upstream responses are now validated against the expected response type. - Asynchronous MCP errors are included in access logs. - Fail-open fan-out requests now return an error when every upstream fails instead of producing an empty success. - OpenAPI-derived MCP tools use the operation summary as their human-readable title. - Synthetic internal session identifiers are no longer logged as MCP session IDs. ## LLM and model handling - Model catalogs now hot reload consistently when changed through either configuration files or the UI/configuration store. - Fixed Amazon Bedrock requests containing tool-call history but no current tool definitions. Agentgateway now supplies the tool configuration Bedrock requires to continue these conversations. - Fixed GitHub Copilot embedding responses that omit required OpenAI-compatible `object` and `model` fields. - Prompt-cache writes are no longer charged as both cache writes and ordinary input. Catalogs without a cache-write price fall back to the standard input rate. ## Prompt guards - Prompt guards now preserve structured Anthropic tool-use and tool-result content when masking text, preventing malformed requests and upstream 400 responses. - Consecutive text blocks are evaluated together, allowing patterns spanning block boundaries to be detected. - Non-text blocks and metadata such as Anthropic cache controls are preserved during masking. - Zero-width regular-expression matches no longer insert masking placeholders throughout the input. - Webhook prompt guards can access the full `llmRequest` CEL variable and add CEL-computed headers through standalone configuration, Kubernetes CRDs, and xDS. ## Authentication and security - OAuth token exchange now fails closed when its configured subject-token source is missing or empty. Validated JWT claims are no longer used as an implicit fallback; configurations that intentionally use the validated token can select it explicitly with CEL. - Cross-namespace JWKS backend references now honor the configured Gateway API `ReferenceGrant` policy. ## Configuration and operations - Configuration storage and request logging can use separate databases when their settings differ, while identical configurations continue to share resources. - Environment expansion now happens before configuration parsing, allowing variables in fields needed during startup. - External authorization and processing services can return large response bodies without an artificial size limit. ## Networking - Added a full connection-handshake timeout so requests do not accumulate behind hung HTTP/2 connections. ## What's Changed * krt: fix Equals signatures by @stevenctl in https://github.com/agentgateway/agentgateway/pull/2704 * openapi: set title based on summary by @stevenctl in https://github.com/agentgateway/agentgateway/pull/2697 * refactor(controller): use apiequality.Semantic.DeepEqual for K8s API comparisons by @dongjiang1989 in https://github.com/agentgateway/agentgateway/pull/2687 * better cpu profile defaults by @ilrudie in https://github.com/agentgateway/agentgateway/pull/2682 * standalone: reject shared port for llm and mcp by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2698 * fix: rewatch replaced model catalog files by @iploooox in https://github.com/agentgateway/agentgateway/pull/2702 * add Goose to Client Setup by @mkorbi in https://github.com/agentgateway/agentgateway/pull/2722 * Adding Configuration for GatewayClass and Controller Name by @jaiveerk in https://github.com/agentgateway/agentgateway/pull/2694 * Bump wiremock-rs by @markuskobler in https://github.com/agentgateway/agentgateway/pull/2726 * database: make connection pool size configurable by @sj-louw in https://github.com/agentgateway/agentgateway/pull/2705 * ext*: do not limit serve response size by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2728 * database: split or share based on whether config is the same by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2730 * client: avoid waiting on hung h2 connections by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2729 * connect: scope internal bind lookup based on IP by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2731 * llm: price prompt cache writes once by @danehans in https://github.com/agentgateway/agentgateway/pull/2727 * waypoint: accept traffic when serving as a weighted waypoint by @ymesika in https://github.com/agentgateway/agentgateway/pull/2716 * mcp: move off rmcp fork by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2708 * webhook guardrail: expose llmRequest CEL var by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2733 * fix(copilot): add OpenAI metadata to embedding responses by @iandvt in https://github.com/agentgateway/agentgateway/pull/2684 * feat: expose webhook prompt guard headers through Kubernetes CRD and xDS API (fixes #2718) by @ibariens in https://github.com/agentgateway/agentgateway/pull/2723 * Bump to rmcp v3 beta5 by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2738 * fix(config): run shellexpend before parsing the config by @yanir75 in https://github.com/agentgateway/agentgateway/pull/2736 * jwks: add ref grant support by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2706 * Add initial extensible standalone configuration importer by @danehans in https://github.com/agentgateway/agentgateway/pull/2605 * mcp tasks support by @stevenctl in https://github.com/agentgateway/agentgateway/pull/2745 * mcp: avoid logging synthetic session id by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2743 * llm: remove guardrail deadcode by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2746 * promptGuard: scan anthropic tool output by @stevenctl in https://github.com/agentgateway/agentgateway/pull/2732 * fix(bedrock): set toolConfig when messages carry tool history by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2747 * llm: when using custom provider ref, override provider name by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2754 * catalog: always hot reload by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2753 * auth: fail closed when OAuth subject token source is missing by @markuskobler in https://github.com/agentgateway/agentgateway/pull/2740 * mcp: validate response body shape and log async errors by @howardjohn in https://github.com/agentgateway/agentgateway/pull/2744 * promptGuard: apply guard to merged consecutive text blocks by @stevenctl in https://github.com/agentgateway/agentgateway/pull/2755 ## New Contributors * @ilrudie made their first contribution in https://github.com/agentgateway/agentgateway/pull/2682 * @mkorbi made their first contribution in https://github.com/agentgateway/agentgateway/pull/2722 * @jaiveerk made their first contribution in https://github.com/agentgateway/agentgateway/pull/2694 * @sj-louw made their first contribution in https://github.com/agentgateway/agentgateway/pull/2705 * @iandvt made their first contribution in https://github.com/agentgateway/agentgateway/pull/2684 * @ibariens made their first contribution in https://github.com/agentgateway/agentgateway/pull/2723 **Full Changelog**: https://github.com/agentgateway/agentgateway/compare/v1.4.0...v1.4.1