Approvals

Approvals

Approvals puts a person between an agent and an act (module approvals). When a tool call needs a decision, it waits here until somebody approves or declines it. Agents also ask their questions here and wait for the answer in words.

In the sidebar under Agents → Approvals. Installing this module is what makes agents ask before they act. Without it there is no approval step, and every call simply runs.

What you see

The page has three tabs: Requests, Rules and Lanes.

Requests

The list shows what is Waiting by default. The Show menu switches to Everything, Approved, Declined or Expired.

  • Waiting counts the open requests. Money waiting totals the amounts on them, per currency.
  • Requests from one batch, such as the lines of one bank statement, are grouped under a header with its own Approve all.
  • Each card says, in words, what it would do and what Approve and Deny each do. A card that attaches or detaches things names the project and the things. Its title line says when it was asked.
  • Open details for the tool, its kind of action, when it was asked and when it expires.
  • A card may carry a reason: why the agent asked, or why the rule asked, such as "This run read outside content before asking".
  • If a card says only one person can say yes, the act spends that person's own money. Only they can approve it; you may still decline.
  • When an approved call then fails, the card says so, and an approved request with nothing carried out says Not done.

People who hold approvals:manage also see Approved but never carried out: direct calls made with an API key or over MCP that were approved but never ran. Each can be carried out once, by hand.

Rules

One table of every standing rule: who it applies to (you, one person, one agent or everyone), When (a kind of action, or one tool, with "only when…" values if narrowed), Then (allow, ask or deny), its state ("not honoured", "tool no longer exists", "expired" or "unused for 90 days"), when it was last used, who made it and where, and when it Expires. Nothing is removed by itself.

Apply a rule preset saves several rules for one agent at once, such as Files tasks freely. Manage presets lists the platform's presets and your organisation's own.

Lanes

A lane lets one agent's own schedule post on X without a card each time. A lane covers one agent, one X account and one schedule. It allows text only, never about money, at most 6 posts in 24 hours (Posts a day, 1 to 6) and at least 120 minutes apart (Gap (minutes)). Each lane starts on Ask me first; switch it to On its own to let posts that pass every check go without a card. Who switched it, and when, is kept. The lane holds only in runs the schedule starts by itself, not when a person presses Run now.

How a call is decided

Every tool declares a kind of action: read, write, destructive, external or spend. Without any rule, reads run and everything else asks.

When rules exist, the most specific one decides:

  1. Whose rule. Your own rules first, then the acting agent's, then everyone's.
  2. Which rule. A rule for this tool whose "only when" values match, then a rule for this tool, then the rule for the kind of action.
  3. Ties. deny beats ask, and ask beats allow.
  4. Nothing at all. Reads run, everything else asks.

Expired rules decide nothing.

Sensitive modules ask

Some modules handle money, auth or secrets. When an agent does anything other than read in one of them, a person is asked, whatever the class rule says. An Always allow on the exact tool lets it through for secrets or auth, never for money. A standing deny still refuses.

Outside content makes a run careful

Once a run has read outside content (a mail, a web page, an outside tool's answer), every later act that is not a read asks a person. The card says which tool brought the content in.

Spending never runs without asking

No rule can allow spending. Such a rule is refused when saved, an old one is listed as "not honoured", and Always allow is never offered on a spending request. A preset that tries to allow spending is refused, naming the rule.

What you can do

Approve or decline a request

  1. Open Requests. Waiting requests are shown first.
  2. Read the card, and open details for the exact act.
  3. Press Approve, or Deny with a reason. The reason is given to the agent.
  4. To approve and tell the agent something, open ⋯ and choose Approve with a note.

A request can be decided once. If two people press at the same moment, only the first counts.

Cancel a run

Cancel is more than a no: it undoes what the waiting run already did, where that can be undone, then stops the run and withdraws its cards. You can cancel from the chat card, from Telegram, or by typing "cancel" in the chat. Deny only refuses the one card and lets the agent try something else.

Approve several at once

Tick requests, or tick a batch's header, then press Approve selected, or Approve all in a batch's header. The page says how many went through and why any could not. Questions cannot be ticked.

Answer a question

An agent's question shows Answer and Decline. Your answer goes back to the run, which carries on from there. Only a person signed in as themselves can answer.

Stop being asked about one tool

On a waiting request, press Always allow, or Always allow, only when… and tick the values that must match. With approvals:manage the rule is the agent's; without it, the rule is your own.

Manage rules

On Rules, change Then, set an Expiry, change Only when…, or Remove a rule. New rule (with approvals:manage) makes a rule about A kind of action or One tool, for every agent, one agent by Agent id, or Only for me.

Apply a rule preset to an agent

  1. On Rules, press Apply a rule preset, or use Apply a rule preset on an agent on the Agents page.
  2. Choose the Agent and the Preset. Each rule is ticked, with its reason and what it would replace.
  3. Untick any you do not want and press Apply. It can be undone.

Copy a preset as your organisation's

On Manage presets, press Copy as ours on a platform preset, Edit it, then Publish. Only your organisation sees it. Withdraw takes it back; rules it already made stay.

Make a lane

On Lanes, press New lane, pick the Agent, X account and Schedule, set Posts a day and Gap (minutes), and save. It starts on Ask me first.

Carry out an old approval

Under Approved but never carried out, press Carry out, tick I checked it has not been done by hand since it was approved, and confirm. It runs once, as the person who asked.

Who can do what

PermissionLabelLets you
approvals:readView approval requests and policySee requests and rules, and change or remove your own rules.
approvals:decideApprove or decline requestsApprove, decline, cancel, answer questions and use Always allow.
approvals:manageSet approval policyMake rules for an agent or everyone, change anybody's rule, apply and publish presets, set lanes, and carry out old approvals.

An API key can decline a request but never approve one. Approving is for a person, signed in.

What happens on its own

JobWhenWhat it does
expire-staleEvery 5 minutesMarks requests nobody answered in time as expired, and tells whatever was waiting.

A request stays answerable for a day unless the asker set otherwise. A pipeline gate stays open for a week, and an agent's question up to a month. An expired request cannot be approved late.

Needs

Nothing else switched on.

What agents can do

An agent can see what is waiting, raise a request and ask a question. There is no tool to decide: an agent that could approve its own request would have no approval step. Asking is never itself held for approval.

  • Read-only: approvals.presets, approvals.pending, approvals.get
  • Ask: approvals.request, approvals.question (the run pauses until the person answers)

Over MCP the tools are named approvals__pending and so on.