v2.28.0
Fosowl/agenticSeekv2.28.0Aug 12, 2026by dsfaccini
AI Summary
This release introduces major features for realtime speech-to-speech support, adds the Crusoe provider, and patches a high-severity security vulnerability in the development web chat UI.
Key Highlights
- Add realtime speech-to-speech support with Agent.realtime()
- Add Crusoe provider
- Add browser WebRTC + server sideband support for realtime speech-to-speech
- Fixes high-severity web chat UI security vulnerability (CORS/Content-Type)
New Features
- Add realtime speech-to-speech support with Agent.realtime()
- Add Crusoe provider
- Add browser WebRTC + server sideband support for realtime speech-to-speech
Full Release Notes
### 🛡️ Security Fixes a high-severity vulnerability in the development web chat UI (`Agent.to_web()`, `clai web`): the chat endpoint didn't check the request's content type, so a plain cross-origin request from a website open in the developer's browser could reach the endpoint without a CORS preflight and trigger the served agent to run and execute its tools with the local process's privileges and credentials. The endpoint now requires `Content-Type: application/json` and rejects other requests before the body is parsed and before the agent runs. See [GHSA-h4xc-3qfq-jf93](https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-h4xc-3qfq-jf93). Patched in `2.28.0` (v2) and `1.107.4` (v1). ## What's Changed ### 🚀 Features * Add realtime speech-to-speech support with `Agent.realtime()` by @DouweM in https://github.com/pydantic/pydantic-ai/pull/6324 * Add Crusoe provider by @acheamponge in https://github.com/pydantic/pydantic-ai/pull/6457 * Add browser WebRTC + server sideband support for realtime speech-to-speech by @DouweM in https://github.com/pydantic/pydantic-ai/pull/6676 ### 🐛 Bug Fixes * fix(bedrock): attach a leading `CachePoint` to the preceding user message instead of raising by @Diwak4r in https://github.com/pydantic/pydantic-ai/pull/7071 * Test cancellation of concurrent `PeekableAsyncStream` pulls by @mikemikimike in https://github.com/pydantic/pydantic-ai/pull/7023 * Settle in-flight state and report `state_restored` honestly on realtime reconnect by @DouweM in https://github.com/pydantic/pydantic-ai/pull/7379 * Only accept JSON request bodies on the web UI chat endpoint by @DouweM in https://github.com/pydantic/pydantic-ai/pull/7382 * Await callback results uniformly via a shared `await_maybe` helper by @DouweM in https://github.com/pydantic/pydantic-ai/pull/7265 * Fix `safe_download` Host header dropping non-default port by @pydanty[bot] in https://github.com/pydantic/pydantic-ai/pull/7348 * Serialize AG-UI dict tool-call deltas with Pydantic Core by @bferanmi806-sketch in https://github.com/pydantic/pydantic-ai/pull/7221 ### 📦 Dependencies * Add the `cerebras` optional dependency group by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/7387 ## New Contributors * @Diwak4r made their first contribution in https://github.com/pydantic/pydantic-ai/pull/7071 * @mikemikimike made their first contribution in https://github.com/pydantic/pydantic-ai/pull/7023 * @acheamponge made their first contribution in https://github.com/pydantic/pydantic-ai/pull/6457 * @bferanmi806-sketch made their first contribution in https://github.com/pydantic/pydantic-ai/pull/7221 **Full Changelog**: https://github.com/pydantic/pydantic-ai/compare/v2.27.1...v2.28.0