agent-platform release v4.16.0
Changed
- Anthropic prompt caching is on for every Anthropic
ModelConfig the platform renders; the kagent line moves to v0.11.0-gs.15 (giantswarm/giantswarm#37788). The kagent Go ADK sent every Anthropic request without cache_control, so each model call of an agent loop re-processed its whole prefix — system prompt, tool schemas, the growing history — at full input price, with a time to first token that followed the uncached prefix (gazelle, 2026-09-14: 0.7-1.5 s at 6 k input tokens, 9.7-13.5 s at 33-40 k; one twelve-call status question re-sent 340 k input tokens for $0.73). kagent 0.11.0-gs.15 carries kagent-dev/kagent#2788: spec.anthropic.promptCaching / cacheTTL on the ModelConfig CRD, three cache_control breakpoints in the Go ADK (the last tool definition, the last system block, the last content block of the latest turn), cache_read_input_tokens in the usage. The meta chart sets kagent.providers.anthropic.config.promptCaching: true and cacheTTL: "5m", which the kagent chart renders into the default ModelConfig next to the LLM cut-over’s baseUrl; the connectivity chart’s kagent.modelConfigs[] Anthropic entries inherit both from that block (an entry’s own promptCaching / cacheTTL win, false included; a Bedrock entry takes its own keys under spec.bedrock; any other provider refuses the keys naming the entry, and a cacheTTL outside 5m / 1h fails the render — the API server would prune or refuse them after the render said nothing). components.kagent / components.kagent-crds move to >=0.11.0-gs.15 <0.11.1-0: the floor, because an older CRD prunes the two fields at admission and the models stay uncached in silence. make verify-prompt-caching asserts the forwarding to both releases, the inheritance, the precedence, the Bedrock block, the chart-alone default and the guards; tests/verify-kagent-crds.py validates the cached shape against the gs.15 CRD; the BOM and tests/verify-components.py follow the pin. Lab proof (agentlab on 4.15.5 with the LLM listener on, the kagent controller and Go ADK built from the cherry-pick, promptCaching: true on the default ModelConfig, claude-sonnet-4-6, a five-call tool turn on a ~4.3 k-token prefix): stock gs.14 wrote and read nothing (five calls, $0.085); on the patch the first call wrote 4 302 tokens and every later call read 97-99 % of its prompt from the cache (the turn $0.037), and the next turn’s first call read 3 961 tokens the previous turn had written ($0.019 for that turn); agentgateway’s LLM listener passes cache_control through unchanged. Every installation rolls kagent once (the controller, then the platform Harness recompiles every admitted AgentTemplate) and its Anthropic ModelConfigs gain the two fields, which recompiles their templates again; from then on the first call of a turn writes the cache (1.25×) and every call after reads it (0.1×) — UPGRADE.md, including the opt-out.