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
Orphan reaper — no more zombie servers: every opencode server the plugin spawns is
registry-tracked (pid+port, identity-checked stops). A new reapStaleServers() sweep runs at
MCP-server boot and in doctor (orphan-reaper check): it removes dead entries and kills —
only after a ps-level identity match — servers orphaned by crashed/closed Claude sessions
that are idle AND older than 2h (OPENCODE_REAP_STALE_MIN minutes, 0 disables). Busy sessions
and long tasks are never touched; wrong identity is refused, never killed.
Fixed
Long-horizon safety — no more implicit kills: the delegate agent and delegation skill
instructed "two consecutive timeouts → abort, treat as failed", which executed long-running
tasks after ~20 minutes of chained waits. Timeouts are now supervision events only: keep
re-issuing wait/waitAll indefinitely; abort fires exclusively on an explicit user request
or a terminal non-retryable error. waitAll reports which sessions outlived its deadline with
the same guidance; README documents the long-horizon contract and crash reattach flow.
Changed
Visibility without token burn: progress frames (the _meta.progressToken path Claude Code
uses automatically) now stream every ~8s (was 15s) with the full one-line feed — reasoning ·
current tool call · assistant tail. These frames render UI-side ONLY and never enter the model
context, so watching a delegated subagent costs zero tokens/quota; the call keeps blocking up
to 600s instead of slicing. The no-progressToken fallback auto-slice stays as before but its
payload is slimmed (tail/reasoning 160 chars, 3 tool lines) to keep even that path cheap.
Automatic live feed from wait (classic-subagent feel): calls that pin neither timeoutSec nor a progressToken now auto-slice every 60s (OPENCODE_WAIT_SLICE_SEC
override) instead of blocking mutely for up to 600s. Every slice returns a rich activity
snapshot — assistant tail, reasoning tail, recent tool-call lines, todos — plus a nextStep
to call again: the delegated agent's progress becomes visible by itself, no manual logs.
Explicit timeoutSec / progressToken callers keep the old long-blocking behavior.