github nicobailon/pi-subagents v0.32.0

4 hours ago

[0.32.0] - 2026-07-01

Added

  • 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.

Don't miss a new pi-subagents release

NewReleases is sending notifications on new releases.