Source: yoagent 0.25.0 CHANGELOG.md (crates.io tarball, published 2026-10-08T01:59Z). yoyo pins yoagent "0.24" (lock 0.24.2), so 0.25 needs a Cargo.toml edit; 0.24.3 arrives with cargo update. Relevant to yoyo: 1. BREAKING pricing opt-in: every ModelConfig constructor/preset now has cost=None unless the process calls yoagent::provider::prices::enable_bundled() (or enable_live) once at startup. yoyo format/cost.rs reads anthropic_preset(model).and_then(|p| p.cost) — an unguarded upgrade silently changes /cost for every yoagent-priced Claude preset. 2. BREAKING rename AgentMessage::Extension -> AgentMessage::Custom (ExtensionMessage -> CustomMessage); yoyo had 5 sites. Serialized data unchanged (untagged enum, role extension). 3. Fixed #243: a cancelled run no longer executes tool calls it had not started (before: Ctrl-C during response arrival could still run a command/write a file). Every TurnStart now gets a TurnEnd; final failure/cancel now emits MessageStart/MessageEnd — event counts change. 4. Sub-agent cancelled before answering fails with ToolError::Cancelled (was success with "(sub-agent produced no text output)"). 5. Extensions (yoagent::extension): one plug-in contract (tools/before_tool/on_input/before_model/finish hooks), with_tree_extension applies host policy to delegated runs at any depth — a parent ToolMiddleware never reached sub-agents. Candidate replacement for yoyo hand-wiring guards into child BashTools (#709/#977 class). 6. LlmCompaction spend now counted in SessionStats::compaction. Inherited from 0.24.3: Anthropic 529/overloaded_error becomes retried RateLimited -> moves Overloaded onto yoyo handle_provider_retry door (which ignores the retry_after_partial opt-in, #997).