Added
- Added live status streaming for
subagent_waitwhile it waits on subagent runs. Thanks to @walter-erquinigo for #832. - Added opt-in
inlineToolDisplay: "summary"for a stable one-row inline subagent result while FleetView remains the live progress surface. Thanks to @ryanbbrown for #805. - Added project-scoped durable schedules with one-shot and fixed-interval triggers,
workflowScriptor agent targets, overlap/catch-up policy, text management actions, externalschedule.run-due, and durable history/event/run receipts. Thanks to @nicobailon for #815. - Added an observational
pi-subagents/external-runsprovider API for visible terminal work, without taking process ownership. Thanks to @nicobailon for #795. - Added durable non-blocking
subagent_wait({ id, nonBlocking: true })subscriptions that return immediately, preserve exact run identity, remain visible in status, and wake the originating interactive session on terminal, attention, reconciliation-failure, or timeout outcomes. - Added narrow public entrypoints for extension consumers to access async stop requests, intercom session targeting, launch tool-plan resolution, and fork-task helpers without deep imports. Thanks to @shaneconner for #794.
- FleetView nested trees now retain and display each leaf's effective model and thinking effort, including completed siblings while the owner remains active. Thanks to @fgpaz for #776.
- Restored same-repo watched
workflowScriptlive chat progress cards, withchatProgresscontrols and Git-worktree-aware same-repo detection. - Enabled TypeScript
noUncheckedIndexedAccessfor production source after narrowing indexed reads at their runtime invariant boundaries. - Added managed per-child worktree isolation to scripted workflows through
worktree: trueonruns.run/runs.allitems or as a workflow-level default, with child overrides and handoff paths preserved in child artifacts. - Added opt-in native Pi-child tool permissions with global and per-agent
allow/ask/denyrules, watchdog-owned exact-call decisions, and bounded redacted audit records. Unconfigured tools pass through, while bash policy remains withpi-guard. - Added a source-only, strict TypeScript typecheck command and CI gate.
- Added trusted inline
workflowScriptorchestration with stable-key child launches through the ordinary executor, timed worker isolation, captured console and emitted milestones, artifact references, status lookup, and a concise call trace. - Added opt-in async one-shot
external-cliagent profiles with stdin prompt delivery, argv-only spawning, lifecycle/status artifacts, stdout/stderr logs, timeout, and stop support. - Added default-on durable project missions with management actions, launch attachment, lifecycle/artifact links, explicit opt-out, a user-local cross-project pointer index, and typed delivery receipts for pull requests, CI, deployments, and releases.
- Made ordinary top-level subagent launches run asynchronously by default;
async: false, agent defaults, and clarify UI retain foreground escape hatches. - Added a small fixed authority policy for worktree discard, destructive cleanup, spawn-budget grants, schedule creation, stop, and steer actions.
- Added automatic Herdr status metadata for active async runs, including reload recovery, needs-attention blocking, and a forward-compatible
herdr:busysibling event for semantic working state. Thanks to @magoz for #730. - Added optional Herdr 0.7.5+ drill-in inspector panes for async runs, with durable pane bindings, lifecycle/transcript/mission dashboards, FleetView opening, and steer/stop controls through the existing file control channel.
- Added Herdr project panes so an orchestrator can open a project-rooted Pi session for substantial cross-codebase work.
- Added optional
thinkingandfallbackModelsfields to/subagentsprofile agent overrides, so a saved profile can pin reasoning effort and fallbacks (not just the model) — important for reasoning-sensitive models where the thinking level is load-bearing. Thanks to @dt-benedict for #741.
Changed
- Collapsed the inactive FleetView roster to one active-work summary line while preserving keyboard expansion and inspector state restoration. Thanks to @xz-dev for #826.
- Clarified when direct single-child calls are appropriate versus coordinated
workflowScriptorchestration, including stable keys and durable child outputs. - Documented the headless pi-guard compatibility path for child-specific explicit allow/deny policy. Thanks to @chama-chomo for #742.
- Replaced session-scoped one-shot schedule actions with the
schedule.*API and project-local schedule records. Calendar recurrence and the schedule inspector remain deferred to the next slice. - Replaced the separate version-numbered extension delegation contracts with one structured owned-leaf delegation API, while keeping the unversioned prompt-template bridge as a temporary legacy fallback.
- Removed the public top-level
tasks[],chain[], static parallel controls, and/chain,/parallel, and/run-chaincommands;workflowScriptis now the sole public multi-agent orchestration surface.append-stepnow accepts a control-onlystepobject. - Scripted workflows now start asynchronously by default as first-class status/fleet runs, stream trace and emitted progress, support stop by workflow id, preserve async child parentage, and present single + workflow as the public authoring surface.
runs.ref()now returns concise[run <key>; id=<short-id>]references; callers that need artifact, session, or handoff paths should read the child resultartifactPathsor the corresponding status artifacts.- Scheduled subagent runs are now enabled by default; set
{ "scheduledRuns": { "enabled": false } }to opt out.
Fixed
- Kept durable schedule timers and completion ownership isolated per project, recorded elapsed overlaps without queueing an immediate rerun, rejected symlink-backed schedule paths, and made the deferred mission contract explicit. Thanks to @nicobailon for #815.
- Preserve actionable multi-line subagent tool errors in collapsed result rendering. Thanks to @xz-dev for #824.
- Sanitize Fleet transcript content and warnings before terminal display while preserving normal Unicode and formatting. Thanks to @xz-dev for #823.
- Unified subagent status presentation across compact, expanded, and Fleet views, including terminal interruption precedence and terminal-safe selection markers. Thanks to @xz-dev for #822.
- Display model and thinking metadata consistently in expanded multi-result and async Fleet views. Thanks to @xz-dev for #825.
- Keep the under-editor async status widget visible by default while FleetView is enabled, including after active runs restore following reload. Thanks to @nicobailon for #804.
- Restore active under-editor subagent status after management calls, so
statusandlistdo not hide running disk-backed work. Thanks to @nicobailon for #816. - Allow direct single-child
worktree: truelaunches to use managed isolation without requiringworkflowScript. Thanks to @nicobailon for #808. - Isolated each mock Pi test queue so late child processes cannot consume or lose responses after the next test resets the harness. Thanks to @nicobailon for #810.
- Show a workflow lane manifest with mode and stable lane keys in the launch card instead of only
subagent workflow script. Thanks to @nicobailon for #813. - Reject scalar or commandless verified acceptance before spawning a child; verified policies now require object form with at least one runtime command. Thanks to @ryanbbrown for #807.
- Let every
runs.allchild settle and return ordered per-child outcomes instead of aborting siblings when one child fails;runs.runremains fail-fast. Thanks to @ryanbbrown for #807. - Wake the originating parent session after a hidden successful background completion while preserving explicit
triggerTurn: falsedelivery. Thanks to @ryanbbrown for #805. - Preserve successful async completion when project-local artifact or mission files are removed before final bookkeeping by recreating artifact directories and recording missing-mission warnings.
- Keep active Fleet inspector runs ahead of terminal history, which now sorts by recency instead of failure state so old failures do not look attached to current workflow work. Thanks to @nicobailon for #802.
- Normalize undefined fields in workflow child results before scripts can return them, preserving artifact-only child output.
- Show current-session async runs in the Fleet inspector even when this Pi process did not start them.
- Replace the duplicate advisor agent with an alias on the oracle agent.
- Suppress stale foreground needs-attention transcript notices after the target run completes.
- Retry zero-activity
SIGKILLexits during child startup. - Make grouped-result intercom delivery opt-in while preserving local foreground output by default.
- Resume the parent session after compaction while async subagent work remains active.
- Avoid invoking
npm root -gon Windows when the standard%APPDATA%\\npm\\node_modulesglobal root is available, preserving custom terminal tab titles during agent and skill discovery. Thanks to @Suchwert for #767. - Preserved nested foreground failure events when resolved launch metadata is unavailable.
- Launch standalone Pi child processes directly instead of prepending the resolved Pi CLI script path. Thanks to @ZacharyQin for #764.
- Kept foreground
workflowScriptlive-card runs from flooding chat with routine successful child-result intercom messages while preserving failure surfacing and final artifact references. - Project oversized redundant Pi
turn_endandagent_endchild events to bounded lifecycle records instead of failing image-heavy runs withprotocol_output_limit, while preservingagent_end.willRetrydrain behavior. Thanks to @barto-sh for #743. - Count clear
git add,git commit, andgit pushbash calls as implementation mutation attempts so workers that finalize pre-applied changes do not fail the completion guard. - Render structured-output-only children as useful JSON output instead of misleading
(no output)summaries and empty output artifacts. - Preserved unrelated
subagentssettings (e.g.disableBuiltins,modelScope,watchdog) when applying a/subagentsprofile, instead of replacing the wholesubagentsobject; a profile still owns the completeagentOverridesmapping. Also validate profilethinking,fallbackModels, anddisableBuiltinsfields. Thanks to @dt-benedict for #741. - Journaled managed worktree ownership before child execution so abrupt exits retain a manifest-backed cleanup path.
- Made automatic mission persistence best-effort without weakening explicit mission requests, bounded terminal mission retention and stale global pointers, exposed auto missions without modifying structured JSON output, added authority-consistent manifest-backed preserved-worktree discard, and clarified the Herdr inspector/schema surface.
- Recovered valid structured acceptance reports from unterminated explicit
acceptance-reportfences while retaining hard failures for malformed or invalid reports. - Preserved dirty or divergent managed worktrees when no successful handoff patch was captured, instead of force-removing uncaptured work and its temporary branch.
- Routed foreground chain scratch files to user-scoped temp storage when
artifactDiris"session"or"temp", preventing.pi-subagents/clutter in the working directory. Thanks to @magoz for #729. - Retry transient Windows
EPERM/EBUSY/EACCESlocks when atomically replacing the async runner startup-control handshake file, so a transient antivirus/indexer lock no longer makes the parent believe the runner never reached the ready state. Thanks to @franktheglock for #731. - Kept successful background subagent completions quiet so inactive Pi tabs are not marked unread, while failed and paused completions still notify the originating session. Thanks to @killianMei for #728.
- Avoid crashing the extension at load on Windows when shared temp async result/run directories are persistently blocked by
EPERM/EACCES, falling back to pid-scoped sibling paths without deleting saved run state. Thanks to @franktheglock for #734.