Undo a task
const url = 'http://127.0.0.1:7700/api/tasks/t3k9x2a1b2/undo';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://127.0.0.1:7700/api/tasks/t3k9x2a1b2/undo \ --header 'Authorization: Bearer <token>'Stops the task if it is still going, denies its pending approvals (answered by undo) and takes
its layer out of the workspace’s view. The layer’s files are then deleted from disk, as soon as no
running task still reads them. Other tasks keep their changes. A task in any state can be undone.
Undoing a task that is already undone returns it unchanged.
Undo removes file changes on the box. It cannot recall something a task already sent out through a tool or an allowed host.
Personal (preview). Undoing a task that was kept first takes its changes out of the owner’s real
folder, as POST /tasks/{id}/unkeep does. That is the owner’s, so anyone else gets 403. If the owner
edited a kept file since, nothing changes and the answer is 409.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The task id.
Example
t3k9x2a1b2Responses
Section titled “Responses”The task, now undone.
object
A short name for people.
What the worker should do. For the fake worker, one command per line.
A folder in BOX_HOME/workspaces. The task works on its own copy of it.
droid is Droid with Claude. fake runs scripted steps with no model, for tests.
Tool names the task may call through its broker, such as wallet.pay.
Hosts the task’s network may reach: example.com (any port), example.com:8080 (one port) or *.example.com (subdomains). Never localhost, a loopback or link-local address, or a whole top-level domain.
Droid worker: the Claude model. haiku (cheap checks), sonnet (most work, the default), opus (hard tasks), or a full model id that starts with claude-. The task records the id it ran on.
Spending above this, in US cents, pauses the task for an OK. Default Settings defaultBudgetCents, 100 unless changed.
Who started it, for the log and the portal: api, schedule, asi1, jira:BOX-12. From a paired device it is always phone:<device name>.
The agent seat doing the work, such as Credit analyst. Shown in the audit.
How Droid works on it. Ignored by the fake worker.
object
Droid writes a plan first
low gets no network beyond the model and asks before any spending. medium keeps its hosts and a budget of at most $1. high keeps what the task asked for. The box enforces this too.
Personal: the first real folder the task works on a copy of.
Personal: every real folder the task works on.
queued created, not started. running the worker is working. waiting paused until an
approval is answered. done finished; its changes are part of the workspace. failed stopped with
an error; its changes are not applied. undone removed; its changes are gone and other tasks keep
theirs.
The Linux user the task runs as, box-<id>.
Finished tasks whose changes this task saw when it started, newest first.
Tool spending plus model cost, in US cents. Not rounded.
The latest step
Why it failed, as a sentence a person can read, such as Your Anthropic key was not accepted. Change it in Settings, Accounts & Keys.
Business: the id of the person who asked for the task. Set by the box, never by the caller.
The app whose box started the task, whatever source it gave. Set by the box, never by the caller.
Personal, for a task on real folders: done and waiting for the owner, kept, stopped by a conflict, or undone.
Example
{ "workspace": "home", "worker": "droid", "tools": [], "hosts": [], "source": "api", "droid": { "autonomy": "low" }, "id": "t3k9x2a1b2", "state": "queued", "user": "box-t3k9x2a1b2", "review": "pending"}No task with this id.
object
What went wrong
Example generated
{ "error": "example"}The owner’s route, called by someone who is not the box’s own screen or a device paired as the owner.
object
What went wrong
Example
{ "error": "only this computer's own screen or the owner's paired device can do this"}The task was kept and the owner edited a kept file since. Nothing changed.
object
What went wrong
Example
{ "error": "You changed intro.md since you kept \"Fix the intro\", so GurtOS left your folder as it is."}