What's Changed
⚠️ Compatibility Notes
- Run
BrowserUseon the host model by default and make browser-use telemetry opt-in by @mpfaffenberger in #9506
🚀 Features
- Let
Skillslayer project and personal libraries, name each skill's directory, and render a skill for a host command by @DouweM in #9802 - Add
base_urlargument toZaiProviderby @aisk in #10099 - Adds
PGTaskDurabilitybased on pgtask by @adtyavrdhn in #10174 - Adds Render Workflows Integration for Durable Execution engines by @ojusave in #9439
- Remove
WarnNearLimitsfrom the harnessCodercapability by @adtyavrdhn in #9969 - Add
SmolSandbox: a workspace that runs harness capabilities in a local smolvm microVM by @mpfaffenberger in #10148 - Support Gemini 4 Argon (
gemini-4-argon) onGoogleModelwith long decode past the per-request output cap, and raise the Google providers' default timeout to 20 minutes by @dsfaccini in #10202 - Support Python 3.15 by @adtyavrdhn in #10064
🐛 Bug Fixes
- Keep a
send_audio()chunk whose send fails out of the realtimeSpeechPart.audiorecorded while it was sending by @DouweM in #10058 - Explain the Bedrock data retention opt-in when Claude Fable 5 / 5.1 reject the default mode by @DouweM in #10050
- Apply
authto requests throughMCPToolset(http_client=...)and stop closing the user-supplied client by @DouweM in #10051 - Allow list-form
tool_choiceto name output tools, and accept static lists that include one by @adtyavrdhn in #8565 - Raise
ModelAPIErrorwhen a 200 response from OpenAI Responses, Anthropic, Groq or OpenAI images has atext/plainbody by @DouweM in #10065 - Stop sending explicit prompt caching fields to the
openai-codexbackend by @aisk in #10103 - Use
openai-decisionspricing before matching the shared OpenAI base URL by @dsfaccini in #10122 - Unwrap decorated partials when inferring evaluation task names by @pydanty in #10121
- Stop harness context estimates double-counting changed instructions and tool-returned files by @mpfaffenberger in #9929
- Support adjustable reasoning on
mistral-large-4andmistral-large-4-0by @pydanty in #9967 - Map every
UsageLimitsfield to an explicit ACP stop reason by @mpfaffenberger in #9497 - Record native tool events in
gh-awsessions by @dsfaccini in #10000 - Retry stale thinking blocks with
drop_blockwhen Bedrock rejects them by @mpfaffenberger in #9486 - Fix
import pydantic_ai.modelson Pyodide by skipping the eagerhttpcore2import on Emscripten by @adtyavrdhn in #10134 - Replay xAI server-side tool results as tool turns paired with their calls by @kevinwmerritt in #10043
- Keep one summary, receipt and system prompt copy across repeated
SummarizingCompactionruns by @aweis89 in #9716 - Run gathered
CodeModecalls concurrently underparallel_ordered_eventsby @mpfaffenberger in #10137 - Keep the
Memorysnapshot with the latest user prompt instead of after tool results by @mpfaffenberger in #10192 - Stop
AnthropicModelpicking native structured output that Bedrock rejects onAsyncAnthropicBedrockby @dsfaccini in #10207 - Propagate Exa 402 payment-required errors instead of retrying them by @pydanty in #9816
- Raise
WorkspaceUnavailableErrorwhen a Sprite is deleted during a command, whatever its exit code by @mpfaffenberger in #10193
📦 Dependencies
- Bump
genai-pricesto 0.1.10 and keep tests passing onrich15,dbos3 ande2b2.55 by @dsfaccini in #10077
New Contributors
- @kevinwmerritt made their first contribution in #10043
- @ojusave made their first contribution in #9439
- @sharosoo made their first contribution in #9965
- @ninglinLiu made their first contribution in #10171
Full Changelog: v2.55.0...v2.56.0