Concept

Approvals

Which actions your agent can't take without you, how an approval card reaches you, and how the agent waits and retries after you decide.

Last updated Open in ClaudeOpen in ChatGPT
On this page

Your agent works under the rules Willo's chat follows. Most work runs at once: editing site files, creating a table, adding a column, deploying an edge function. Actions that can't be undone, or that reach other people, stop and wait for a person. Over MCP that wait is an approval card on the dashboard.

What stops for approval

The same actions that stop in Willo's chat, including:

  • Writing, updating or deleting rows in the database, and running any SQL your agent wrote.
  • Destructive schema changes: dropping or retyping a column, dropping or rewriting an access rule, triggers.
  • Granting or revoking what the site's visitors and members can read or change.
  • Deleting a site file, an edge function or a member account.
  • Changing package.json or a lockfile.
  • Publishing the draft, and publishing, unpublishing or deleting a CMS item.
  • Setting or removing a redirect, and creating or changing a storage bucket.

Each tool's reference page says whether it needs approval always, sometimes, or never.

How it works

The retry has to match exactly. A different argument is a different action and raises a new card. The agent has one hour after you approve to retry; after that the approval lapses, so nothing runs against a draft that has moved on since.

When the approved run takes a while

Some approved actions take longer than an agent's client waits, for example SQL that first has to create the draft backend. If the run is still going after 45 seconds, the retry returns status running. The work continues on Willo's side. The agent then calls willo_get_approval with the request id until the result is ready. It must not call the tool again, because that would ask for a second run.

Card statuses

willo_get_approval reports one of these:

StatusMeaning
pendingWaiting for a person.
approvedApproved. Call the same tool with the same arguments to run it.
runningApproved and still running on Willo's side. Check again shortly.
consumedIt ran. The result is included; check it, because a run can also fail or end in a state Willo can't confirm.
deniedA person said no, with their note if they left one.
lapsedNobody answered within seven days, or nobody retried within an hour of approval. Call the tool again for a new card.
cancelledThe card was withdrawn before anyone decided.
supersededA newer card replaced it.

A token sees only the cards it raised. One token can have five cards waiting at once; past that, new calls are refused until someone answers.

Who can approve

The person who created the token can approve its cards, and so can an owner or admin of the business. A viewer can't approve anything.

No "Always allow" for agents

In Willo's chat, many cards offer Always allow, which stops that tool asking again. Agent cards never offer it, and an Always allow you granted in chat does not apply to an agent's calls. Each call an agent makes is its own decision.

Inside a task

willo_task hands Willo's chat a whole job. Anything that turn would stop on becomes a normal card on the dashboard, and the task's result lists the cards and their links.

Related: Draft and live, Error codes.

Questions

Can my agent approve its own cards?

No. A card is decided by a person on the Willo dashboard. The agent only learns the outcome when it retries or calls willo_get_approval.

What happens if nobody answers a card?

The card stays open for seven days, then lapses. The agent can call the tool again to raise a new one.