| Name | Modified | Size | Downloads / 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-fleetshows 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-fleetshows 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 setautoResume: falseto 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_supervisorand results. The launch fails if the parent Pi is not running inside Rex, and Claude Code, Codex, Cursor and genericexternal-cliagents 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 passmachine: "<name>". The child opens in that Mac'ssubagentsRex 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-fleetnow shows its task after the agent name, for exampleworker · 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, andsubagent({ 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 whenoptions.reuseFromnames 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
launcherare unchanged. - A background child awaited by an
async: falseworkflow now gets an immediatecontact_supervisortool 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_waitin a loop when it returned early because a run that was still working needed attention, such as a longbashcommand or a quiet stretch. The result now says the run is still running and thatstopOnAttention: falsewaits 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,extensionsorsubagentOnlyExtensionslist, such astools: "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
toolslist has a Pi+nameor-nameentry, such astools: +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+codemodethat no child has, and addingreadfor skills, MCP tools orstructured_outputproduced 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.toolsis a complete list: name every tool the child needs, or omittoolsand useexcludeToolsto 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.mdthat 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
ENOTDIRwhen asettings.jsonpackagesentry 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
undicifrom 8.10.2 to 8.12.3, outside the range of GHSA-xjj6-f33q-929c, so projects that install pi-subagents no longer failnpm auditbecause of it. Thanks to @setanta00 for [#3022].