Fetching from the wire…
Public story · 2026-09-20 · high
The same release lets the decision model fill in tool arguments and adds a confidence threshold for yes/no answers.
Why now: Version 2.46.0 posted September 19, adding cost tracking to a voice API pydantic-ai had already shipped without it.
Pydantic-ai released version 2.46.0 on September 19, adding cost tracking to realtime voice sessions.
Before this release, there wasn't a way to cap what a voice conversation on RealtimeSession cost. Now usage.cost and UsageLimits.cost_limit work inside a voice session. A runaway call hits a spending ceiling instead of running until someone checks the bill.
The same release changes how TypeSafeModel, the library's decision model, handles tool calls. It can now fill in a tool's arguments on its own when it's able to express them. And when a function returns a union of possible output types, TypeSafeModel picks the type first instead of guessing the whole shape at once. A new typesafe_boolean_threshold setting controls how confident it needs to be before returning True on a yes/no decision, per pydantic-ai's 2.46.0 release notes.
RealtimeSession also gains wait_for_playback(). Code can now wait for an assistant's audio response to finish before moving on to whatever comes next.
Each link below shares sources, entities, or timing with this story.
cost on RunUsage and cost_limit on UsageLimits matter for anyone budgeting long-horizon loops where token counts stop mapping cleanly to dollars across model tiers. It also fixes GoogleCloudProvider credential scoping and an Application Default Credentials environment variable...
The September 5 release adds handle_barge_in=True, interrupt(played_bytes=...) and played_audio_bytes to the realtime session, plus RealtimeSession.enqueue() for out-of-band prompts from driving code and respond= on send(). It adds @agent.on_event for registering listeners on...
MCPConfig.tools now accepts Agent, Team and Workflow instances plus Toolkit objects, exposing each as its own named MCP tool. You call chief, not run_agent(agent_id="chief"). Toolkits publish one MCP tool per registered method, narrowed by the toolkit's own enable/include/excl...
Released September 1, content that previously showed completed may now show failed or partial, because those ingests were always incomplete (GitHub). Embedders raise EmbeddingError instead of returning an empty vector, a new ContentStatus.PARTIAL covers files where some chunks...
GitHubCopilotProvider lets agents run against a Copilot subscription's endpoint without a separate API key. The compatibility note: DeferredToolResults.approvals now rejects invalid values instead of accepting them, so code passing malformed approval payloads that previously s...
3,364 stars since its August 17 creation. Every action against a computer, file, MCP server or UI component routes through a single gateway that resolves the target, decides it against policy, writes an audit row, then acts or refuses while naming the rule. Each bot gets its o...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.