Why upgrade: in 0.1.0, delegating cost you the turn — crew_send
blocked until the crew member finished. Now it doesn't have to.
Background delegation
crew_send(pane, message, run_in_background: true)
→ started crew job crew-1
… the model keeps working; you watch the pane …
→ job crew-1 finished → job_output(crew-1)
The job is owned by the calling agent, so job_list and job_output
follow the harness's own session fence and the completion notice wakes an
idle model. job_kill stops the watch, interrupts the crew member, and
leaves the pane seated — a cancelled delegation is not a reason to
close a terminal someone is watching. Needs ctx.jobs and a job
controller; it says exactly that when either is missing, and
enableRunInBackground: false removes the parameter.
A send returns the answer, not the whole screen
The screen is diffed against a mark taken just before typing, so the model
reads what arrived instead of finding it again inside a banner it has
already seen.
The dialog correction — read this one
In a directory it has not been trusted in, Claude Code and Codex open on
their own trust prompt, not a composer. A task sent into a dialog is
typed into the dialog, and its digits can pick an option: a "count from
1 to 12" prompt once chose 2. No, quit.
So crew_seat now tells the caller to read the first screen, and
crew_send with an empty message presses Enter to answer a dialog without
typing into it. Auto-answering a product's trust prompt is not a plugin's
decision to make.
Verification
tests/real-cli.spec.mjs seats the real claude and codex behind
CREW_REAL_CLI=1, each in a throwaway workspace so answering a trust
prompt never marks a real project trusted. Verified against claude
2.1.232 and codex 0.147.0, foreground and background. 33 tests run
by default.
New: dsh.works/dsh-crew.
Full notes: CHANGELOG