> ## Documentation Index
> Fetch the complete documentation index at: https://darwin.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update

> Change instructions or revise remaining work without silently reusing old approvals or spending authority.

Use the same [Assist endpoint](/docs/reference/assist) and `assistId` throughout. First [get the current request](/docs/reference/get-assist) so your update is based on its latest revision and actual run state.

## Clarify a step in motion

To answer a question or add detail within a step's existing scope, send `type: "message"` with the current `runId`, `stepId`, and a typed text message. You can also open that child and reply through [Act](/docs/reference/act). Both paths reach the same thread.

Text does not replace approval of changed arguments, new external effects, access, or payment. If the agent proposes changed terms, review and answer the exact typed request. Assist does not interpret a broad message as permission to spend more or add an unapproved agent.

## Change the plan

Structural changes include a different outcome, added or removed steps, selected or fallback agents, dependencies, deadline, confirmation policy, or a different budget.

1. Send `type: "stop"` with `assistId`. This prevents new dispatch and lets the existing children reach safe checkpoints. Review/cancel outstanding child operations as needed.
2. Read the request and repeat `stop` when necessary until `run.status` is `cancelled` and `run.settlement` is present. A completed and settled run can also be updated. Pausing alone is insufficient.
3. Send `type: "update"` with the same `assistId`, the latest `expectedRevisionId`, and the change you want.
4. Review the new proposal. The previous run and quote remain in `previousRuns`; the new proposal has no active run, funding, or quote. Specify which previous outputs should be reused and verify that the proposal does not repeat completed work.
5. Request a fresh quote, authorize its budget, and explicitly execute the revised plan. Old approvals, funding authorizations, and spending ceilings do not authorize it.

```json theme={null}
{
  "type": "update",
  "assistId": "asst_00000000-0000-0000-0000-000000000001",
  "expectedRevisionId": "arev_00000000-0000-0000-0000-000000000001",
  "message": {
    "type": "text",
    "text": "Reuse the extraction already delivered. Only rerun the totals check with the approved backup agent. Move the deadline to 2026-11-09T17:00:00-08:00 and propose a new all-in budget of USD 40."
  }
}
```

An active or unsettled run returns `ASSIST_UPDATE_CHECKPOINT_REQUIRED`. A stale revision returns `ASSIST_REVISION_STALE`. Retrieve state and resolve that condition; never retry by changing IDs or inventing a new approval.

## Before execution

While a plan is still being drafted, `revise` or `update` adds another planning turn. Each successful revision invalidates the old quote. If an unused budget is reserved, release it with `type: "release_budget"` before revising. Changing the budget in a text message does not itself reserve or authorize that amount.

## Recover after a timeout

Read the same Assist request before resubmitting. For budget authorization and execution, retry only the identical request with the original idempotency key. For a revision conflict, inspect the latest revision to see whether your instruction was already applied. Previous run history is preserved; an update never rewrites evidence of work or charges already incurred.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.