Download Latest Version v0.84.0 source code.zip (5.1 MB) Google Add to Preferred Sources
Home / v0.82.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-24 9.8 kB
v0.82.0 source code.tar.gz 2026-10-24 4.5 MB
v0.82.0 source code.zip 2026-10-24 5.1 MB
Totals: 3 Items   9.7 MB 0

pi-subagents no longer loses work when Pi crashes or quits. Next time Pi reopens the session, background workflows resume where they stopped without running finished steps again, and background runs that finished while you were away show their results. A foreground run cut off by a crash can be resumed by id, and runs killed by a machine restart no longer show as running. Pi children can also run in their own Rex terminal tabs, on this Mac or on another Mac over SSH.

Highlights

  • Interrupted background workflows resume where they stopped when you reopen their session.
  • Background runs that finished while Pi was closed report their results when you come back.
  • Pi children can run in Rex terminal tabs, locally or on another Mac over SSH.
  • After a restart, runs that died with the machine no longer hold a capacity slot.
  • /subagents-fleet shows each child's task, so children of one run are easy to tell apart.

Need to know

Who What changes
Agents with +name or -name entries in tools (for example tools: +codemode) The launch now fails with an error naming the entry. List every tool the child needs, or drop tools and use excludeTools.
Foreground runs from earlier versions They can no longer be resumed by id. Runs started on 0.82.0 can.

Changelog

Highlights

  • Background workflows cut off by Pi crashing, quitting or reloading resume where they stopped when you reopen their session, without running finished steps again.
  • Background runs that finished while Pi was closed report their results when you reopen their session, and a foreground run cut off by a crash can be resumed by id.
  • Pi children can run in their own Rex terminal tabs, on this Mac or on another Mac over SSH.
  • After a machine restart, runs that died with it no longer show as running or hold a capacity slot.
  • /subagents-fleet shows each child's task next to its agent name, so children of one run are easy to tell apart.

Added

  • Background workflows cut off by Pi exiting, crashing or reloading now resume on their own when you reopen or reload their session within a day, and steps that already finished are not run again. You can also resume one yourself with subagent({ action: "resume", id }), or set autoResume: false to resume them only by hand. A stopped workflow is resumed only once, and its notice says how it resumed. If you start a new Pi in the same folder instead, it tells you which session to reopen. See docs/workflows.md.
  • machine: "local" runs a native Pi child in a new background tab of your own Rex session, with the same controls as a Herdr-placed Pi child: prompts, steering, follow-ups, abort, contact_supervisor and results. The launch fails if the parent Pi is not running inside Rex, and Claude Code, Codex, Cursor and generic external-cli agents are rejected. A finished child's tab stays open until you close it; an aborted or stopped child's tab is closed. See docs/agents.md.
  • A native Pi child can also run in a Rex tab on another Mac over SSH. Name the Mac in your user settings with subagents.machines.<name>.rex.ssh, then pass machine: "<name>". The child opens in that Mac's subagents Rex session, which is created the first time it is needed. These machines do not need Herdr, and project settings cannot name a Rex host. See docs/agents.md.

Changed

  • Each background child's row in /subagents-fleet now shows its task after the agent name, for example worker · Fix two Cycode Python SAST findings…, so you can tell children of one run apart without opening each one. The selected child's header still shows the run id. Thanks to @MattDavisRV for [#3020].

Fixed

  • A background run that was still working when Pi exited or crashed never reported its result, even after you reopened its session. Its result now shows once in the reopened session: right away if the run already finished, or as soon as it finishes.
  • A foreground single run cut off by a Pi crash can now be resumed by id. It used to be recorded only when it ended, so nothing pointed to its transcript. It is now recorded when it starts, shows as interrupted when Pi exited · resume <id> when its session reopens, and subagent({ action: "resume", id, message }) continues it from its transcript. Foreground runs remembered by earlier versions are not carried over and can no longer be resumed by id.
  • After Pi crashed or was killed while an async workflow ran, relaunching the same workflow ran every child again. The workflow is now marked stopCause: "owner-exited" when its session reopens, or when options.reuseFrom names it from another session, and a relaunch reuses the children that already finished, the same as after /reload. Its failed result says the Pi process exited. See docs/workflows.md.
  • A workflow relaunched more than once could start a second copy of a child that was still running, or run a finished child again. A relaunch only looked at the run it reused, and that run had no record of children still waiting for a concurrency slot when it stopped. A relaunch now looks at every earlier run in its relaunch chain and takes each child from the newest run that recorded it. Thanks to @wireknight for the report on [#3021].
  • After a machine restart, a background run or workflow that died with the machine could show as running, and hold its capacity slot, for up to a day, because its old process id could now belong to another process. On Linux and macOS, Pi now saves a boot id next to each process id and treats a process id from an earlier boot as dead. Runs started through a launcher are unchanged.
  • A background child awaited by an async: false workflow now gets an immediate contact_supervisor tool error when it asks a question, because its blocked parent cannot answer. The error tells it to report partial results or use an async workflow. Before, the question could wait until the run deadline and reach the parent after the child had timed out. Async workflows and children that are not awaited still get normal supervisor replies. Thanks to @XLi-hub for [#3028] and @isjiajia01 for the report in [#3018].
  • Agents called bg_wait in a loop when it returned early because a run that was still working needed attention, such as a long bash command or a quiet stretch. The result now says the run is still running and that stopOnAttention: false waits through this, and the option's description says it still stops for supervisor requests. Thanks to @jettoblack for [#3019].
  • A quoted name in an agent's tools, excludeTools, mutationTools, extensions or subagentOnlyExtensions list, such as tools: "read", "bash" or a - "read" list item, is no longer read with its quote marks. A quoted tool name made the child fail to start, and a quoted extension path pointed at a file that doesn't exist. Thanks to @HerbertGao for [#3017].
  • An agent whose tools list has a Pi +name or -name entry, such as tools: +codemode, now fails before launch with an error that names the agent and the entry. Before, the entry was kept as a literal tool name, so the child required a tool named +codemode that no child has, and adding read for skills, MCP tools or structured_output produced a list that Pi rejects. A Herdr- or Rex-placed child whose agent definition on that machine has such an entry fails the same way before its first prompt. tools is a complete list: name every tool the child needs, or omit tools and use excludeTools to drop one. See docs/agents.md. Thanks to @Nyarlathoteppppp for [#3029].
  • A host-required child extension (registerRequiredChildExtensions) is now recognized when Pi loads it through another spelling of its path, such as a symlink, a different letter case, or a path with a Unicode space, so its load, provider-registration and startup failures still stop the launch. A required extension that Pi did not load at all now stops the launch instead of letting the child start without it. Thanks to @pandalaohe for [#3012].
  • A child agent's MEMORY.md that is a named pipe (FIFO) no longer stalls its launch while the prompt is built; it is skipped like any other file that is not a regular file. Thanks to @XLi-hub for [#3027].
  • Skill discovery no longer fails with ENOTDIR when a settings.json packages entry names a single extension file. Thanks to @tara-marchand for [#3011].
  • Herdr-placed native Pi children no longer fail before their first prompt. The child's pane bridge looked for its active tools where Pi does not provide them, found none, and rejected every launch.
  • A corrupt saved run status or mission file no longer prints the same warning on every status refresh or retry. The warning prints once, and again only when the file or its outcome changes. The run is still skipped or retried as before, and the file is left as it is. Thanks to @ozand for [#3037] and the report in [#3036].
  • Updated undici from 8.10.2 to 8.12.3, outside the range of GHSA-xjj6-f33q-929c, so projects that install pi-subagents no longer fail npm audit because of it. Thanks to @setanta00 for [#3022].
Source: README.md, updated 2026-10-24