You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added subagents.defaultModel so subagents can have a global default model separate from the parent session model. Thanks to Artem Timofeev (@atimofeev) for #339.
Added /subagent-cost and totalChildUsage run details so parent sessions can inspect aggregate subagent child usage and cost. Thanks to Aaron Ky-Riesenbach (@aaronkyriesenbach) for #343.
Added configurable companion package recommendations for pi-intercom and pi-prompt-template-model, surfaced in session-start transcript messages, subagent({ action: "list" }), and /subagents-doctor, with /subagents-companions hide/show/status controls.
Added detached async runner stdout and stderr log files. Thanks to Daniel Mateos Carballares (@danim47c) for #358.
Added totalCost rollups to foreground single, parallel, and chain run details, including nested foreground subagent costs and compact progress display. Thanks to Clark Everson (@gr3enarr0w) for #345.
Added globalConcurrencyLimit to cap simultaneously running subagent tasks across parallel groups in a single run. Thanks to Clark Everson (@gr3enarr0w) for #349.
Added stable v1 async lifecycle artifact metadata in status.json, events.jsonl, and result JSON so observability and workflow gates can correlate subagent runs without scraping terminal output. Thanks to Clark Everson (@gr3enarr0w) for #350.
Added PI_SUBAGENT_PI_BINARY to let wrappers launch child agents through an explicit Pi binary instead of resolving pi from PATH. Thanks to David Barroso (@dbarrosop) for #341.
Added worktreeBaseDir and PI_SUBAGENTS_WORKTREE_DIR so worktree isolation can use a stable trusted base directory. Thanks to Matt Robenolt (@mattrobenolt) for #185.
Added singleRunOutputBaseDir so single-agent relative outputs can be routed to a configured artifact directory. Thanks to Oleksii Nikiforov (@NikiforovAll) for #173.
Added maxSubagentSpawnsPerSession and PI_SUBAGENT_MAX_SPAWNS_PER_SESSION to cap total subagent launches in one session. Thanks to @eightHundreds for #239.
Enforce timeoutMs and maxRuntimeMs on async and background subagent runs. The per-launch deadline drives an AbortController that cancels acceptance verification, imported async roots, and fallback retries; direct children get SIGTERM with SIGKILL escalation on a bounded timer; nested descendants get timeout requests distinct from manual interrupt. timedOut, deadlineAt, and error propagate across status, results, and nested summaries. Thanks to @pkese for #361.
Fixed
Keep generated subagent markdown outputs, progress files, and run artifacts under the project-local .pi-subagents/ directory by default. Thanks to Carolina (@carolitascl) for #326.
Detach foreground subagent runs immediately when a child starts a blocking contact_supervisor or intercom.ask call, avoiding parent/child intercom deadlocks. Thanks to huarkiou (@huarkiou) for #335.
Made child boundary prompt editing instructions tool-agnostic so Codex-style adapters are not told to call unavailable edit/write tools. Thanks to Artem Timofeev (@atimofeev) for #338.
Recursively interrupt active async parallel children and nested async descendants when pausing a background run. Thanks to Vicary (@vicary) for #355.
Avoid runtime peer imports from detached async runners while still forwarding the Pi package root when available. Thanks to @aurbina83 for #352 and @huangkun3251 for #342.
Fall back to PATH node for async runners when the current Node executable path is stale or deleted. Thanks to Richard Hao (@0xRichardH) for #347.
Retry fallback models when a zero-exit subagent attempt produces no output, including background async runs, preserve structured-output-only completions, and pre-warm forked session files for parallel children. Thanks to Clark Everson (@gr3enarr0w) for #344.
Preserve explicit empty companion suggestion surfaces and keep global companion suggestions disabled when writing package dismissal state.
Include bounded async runner stderr tails when stale-run reconciliation marks a startup crash failed. Thanks to Salem Sayed (@salemsayed) for #340.
Persist forked child session files when Pi returns a branch path before writing it to disk. Thanks to @trisforrestcam for #174.
Pass explicit thinking: off through to child model arguments as a :off suffix. Thanks to Thomas Dietert (@tdietert) for #147.
Sanitize Anthropic signed thinking / redacted_thinking blocks out of forked child sessions and force child thinking off so fork-context subagents survive signed-thinking transcripts after branching or compaction. Thanks to Thomas Dietert (@tdietert) for #147.
Restore queued and running detached async jobs into the widget after restarting Pi. Thanks to Vicary (@vicary) for #362.
Fix session-start freeze where restoring active async jobs did O(runs × nested-route-dirs) directory scans over stale terminal runs; listAsyncRuns now builds a single nested-route index and filters by state before lookup.