Pi subagents 0.62.0 makes delegated work safer and more predictable. Child agents can now provide completion evidence in a cleaner shape, and agent configs can keep specific tools out of reach. Scheduled work can stay tied to the session that created it, which helps avoid surprising cross-session runs. This release also tightens async recovery and Windows child launches, especially around forked runs and missing Pi CLI resolution.
Highlights
- Child agents can report completion evidence more cleanly and stay away from tools they should not use.
- Session-only schedules keep personal scheduled work tied to the session that created it.
- Async forked runs now start and resume in the working directory you requested.
- Windows child launches are more reliable, with clearer errors when Pi cannot find a valid CLI.
- External CLI and read-only recovery paths are sturdier when workers disappear or prompts include unusual line separators.
Full changelog
Highlights
- Child agents can report completion evidence more cleanly and stay away from tools they should not use.
- Session-only schedules keep personal scheduled work tied to the session that created it.
- Async forked runs now start and resume in the working directory you requested.
- Windows child launches are more reliable, with clearer errors when Pi cannot find a valid CLI.
- External CLI and read-only recovery paths are sturdier when workers disappear or prompts include unusual line separators.
Added
- Let native children with
outputSchemainclude required acceptance evidence in the samestructured_outputcall withacceptance.report: "on";acceptance.report: "off"keeps fenced acceptance reports. Thanks @mapleluvr for #1770. - Add per-agent
excludeToolsdeny-lists that compose with Pi's ambient or explicit child tool selection. Thanks @expoli for #1776. - Add session-only durable schedules that only run in the session that created them. Thanks @yangfeng20 for #1777.
Fixed
- Keep async forked runs in the requested child
cwdwhen they start or resume. Thanks @stekman08 for #1785. - Accept JSON-encoded acceptance objects from model tool calls, while still failing clearly for malformed strings. Thanks @mapleluvr for #1781.
- Keep steer and follow-up receipt statuses separate from their redacted message previews (#1773).
- Create async lifecycle sidecars before external CLI workers begin worktree changes, so disappeared runners are reported as failed runs. Thanks @fkhawajagh for #1764.
- Preserve explicit read-only intent when escaped line separators surround no-edit wording. Thanks @fkhawajagh for #1765.
- Launch child Pi processes through the resolved CLI JavaScript on Windows, and run JavaScript
PI_SUBAGENT_PI_BINARYoverrides with Node. Thanks @caohuipeng for #1768. - Resolve the installed Pi CLI on Windows wrapper hosts from the forwarded package root, and report a clear error when no verified CLI can be found. Thanks @lux032 for #1780.