What's Changed
⚠️ Compatibility Notes
- Note text that looks like an application frame in user and tool content instead of escaping it by @DouweM in #11813
- Add
OutputTokenLimitExceeded, and fall back to the next model inModelFallbackwhen a response is cut off atmax_tokensby @DouweM in #12407 - Ask for approvals and answers inside the run with
RequestInput, putAskUseron the deferred pipeline, and mark deferred calls withkindandanswered_byby @DouweM in #12757 - Add
DelegationTasks.discover()and stop one damaged saved task from blockingDelegationTasks.opened()by @mpfaffenberger in #10140 - Require workspace backends to leave detached processes running, and check it in
WorkspaceBackendSuiteby @mpfaffenberger in #13070 - Run
PromptInjectionDefendersemantic classification as durable operations so it works on Temporal by @mpfaffenberger in #12424 - Give sub-agent task-control events the
Eventsuffix and past-participle names, withagent_nameandparent_task_idfields, keeping the old names as deprecated aliases by @mpfaffenberger in #13074 - Spell out abbreviated identifiers in
pydantic_ai_harness, renamingnum_resultstomax_resultsandmax_duration_secstomax_duration_secondsby @mpfaffenberger in #13075 - Rename harness
CapabilityEventfields to*_count,*_name,duration_msandprevious_item, keeping the old names as deprecated aliases by @mpfaffenberger in #13068 - Rename harness
CapabilityEventoutliers to<Subject><PastParticiple>Eventand addSTEP_PERSISTENCE_EVENTSby @mpfaffenberger in #13065 - Add the
RefineOutputharness capability by @mpfaffenberger in #13120
🚀 Features
- Load and save UI adapter conversations through a
ConversationStorewithconversation_storeby @DouweM in #12326 - Use the AI Gateway's streamed cost for
GoogleModelandBedrockConverseModelstreams by @ddanielcruzz in #13168 - Support running
SubAgentsdelegations to durable delegates as Temporal and DBOS child workflows by @mpfaffenberger in #12516 - Add the
RefineOutputharness capability by @mpfaffenberger in #13120 - Add a per-command
cwdtoWorkspace.runby @mpfaffenberger in #12642 - Require workspace backends to leave detached processes running, and check it in
WorkspaceBackendSuiteby @mpfaffenberger in #13070 - Add
DelegationTasks.discover()and stop one damaged saved task from blockingDelegationTasks.opened()by @mpfaffenberger in #10140 - Bound the wait for the detached process to start in the
WorkspaceBackendSuitereattach rule by @mpfaffenberger in #13081 - Ask for approvals and answers inside the run with
RequestInput, putAskUseron the deferred pipeline, and mark deferred calls withkindandanswered_byby @DouweM in #12757 - Add
OutputTokenLimitExceeded, and fall back to the next model inModelFallbackwhen a response is cut off atmax_tokensby @DouweM in #12407 - Allow a
CancellationTokenfired from a workflow signal to cancel a Temporal durable run by @DouweM in #7210 - Note text that looks like an application frame in user and tool content instead of escaping it by @DouweM in #11813
- Add a
GoogleDecisionsModelbackend for the Gemini Decisions API by @dsfaccini in #13181
🐛 Bug Fixes
- Resolve
vendor/modelids through one case-insensitive family map onOpenAICompatibleProvider,LiteLLMProviderandTogetherProviderby @DouweM in #12743 - Map unified
thinkingtoreasoning_effortfor Z.AI GLM and DeepSeek V3.2 on Bedrock by @EdAbati in #11491 - Honor
Permissionsremembered approvals inside durable execution by @mpfaffenberger in #12410 - Make
AnthropicModel.count_tokenssend the request's betas and raise its all-deferred toolsUserErrorby @dsfaccini in #13098 - Drop the account-age claim from
AnthropicStaleThinkingBlockWarning, since Claude Fable 5.2 and Mythos 5.2 bind thinking blocks on every account by @dsfaccini in #13155 - Run
PromptInjectionDefendersemantic classification as durable operations so it works on Temporal by @mpfaffenberger in #12424 - Carry
ModelResponse.canonical_systemthrough the Vercel AI and AG-UI event streams by @DouweM in #13134 - Lower a
max_tokensabove a Claude model's maximum output to it instead of sending it by @DouweM in #12427 - Report when
TieredCompactioncan't reachtarget_tokensbecause its tiers keep more than the target by @DouweM in #12650 - Summarize the tail messages
SummarizingCompaction(keep_user_messages=True)copies displace instead of dropping them by @DouweM in #12652 - Complete a Gemini Live turn that ends silently after a tool result by @DouweM in #13126
📦 Dependencies
- Raise the
genai-pricesfloor to 0.2.3 so Anthropic fast mode responses are priced at fast mode rates by @dsfaccini in #13104
New Contributors
Full Changelog: v2.67.0...v2.68.0