Picking up a box another conversation left

How a conversation continues a box another one left: find it with sandbox_list, read its goal, steps[] and agent with sandbox_status, and ask the person first when the other conversation may still be at it.

A box outlives the conversation that started it. To continue one:

  1. sandbox_list (or GET /v1/boxes): find the box by its name or goal. Boxes whose agent.state is left or idle are the ones nobody is working on. idle goes by time alone: the conversation may still be open, but it has not touched the box for an hour. Each box's recentNotes (its last 3 step notes) says what it was doing, and with which test account when the notes say so, without a sandbox_status per box.
  2. sandbox_status { "id": "<id>" } (or { "id": "<id>", "fields": ["goal", "agent", "steps"] } for just those): read goal (what the box is for), steps[] (what was already done in it) and agent. If agent.state is working or away without thisConversation, the conversation that was using the box is still open and may come back to it: ask the person in your own conversation, the way your client asks, before you take it over. agent.untracked: true means the box was last used without a conversation id (an API-key script, REST), so its state is only a guess from idle time; if you started it from such a script yourself, it is yours.
  3. Continue with the same tools and the same id; the box counts as yours from your first call that acts on it (sandbox_exec, sandbox_build, sandbox_sync, sandbox_get, sandbox_pull, sandbox_shot, sandbox_wire and the like); sandbox_status, sandbox_list, sandbox_say and sandbox_review do not claim it. steps[] has the commands and their notes, not their output or the files: to see where the work stands, run git status, git log and docker ps in /work with sandbox_exec (this thaws a frozen box, in a couple of seconds). If the earlier conversation edited code on the person's machine and sent it with sandbox_sync, those edits are in their local checkout as well: look at git status there too. What was written only in the box is only in /work. /work is still there, with everything the earlier conversation left in it, unless the box has stopped (terminated or interrupted); then start a new box with the same goal, and what was not committed and pushed, pulled or published is gone.
  4. End with sandbox_review or sandbox_stop (Finishing a box).

A box nobody uses is stopped for good 24 hours after its last use, or after its idleTimeoutMin (Box states), so pick it up before then.

The account has no members: only its login opens the app. A teammate without the app finds the boxes waiting for someone through their own agent, with sandbox_list (agent.state left or idle), and tells it to pick one up by name or id.

In the app, a box whose AI stopped (its conversation closed, or the box went unused for 1 hour) and that has no card waiting for the person shows two buttons:

  • Continue copies a prompt for the person to paste into any AI conversation, word for word: Pick up ParallelSandbox sandbox {id} ({name}): first run sandbox_status to see its goal and the steps done so far, then finish what is left. When it is done, hand it to me for review with sandbox_review; if I don't need to look at it, shut it down with sandbox_stop.
  • Shut down stops the box, like sandbox_stop.

Every tool and topic is listed in the tool reference.