Approve or reject agent actions
When an autonomous agent reaches a point it should not pass without a human, it pauses and asks for approval. SupaCloud surfaces that one pending decision as an interactive approval you can answer from any control surface — the web terminal, Telegram, or Discord. The agent stays blocked on exactly that decision until you respond (or its timeout policy resolves it for you).
There are three kinds of approval:
| Kind | What it is | Example |
|---|---|---|
| Tool | A dangerous tool call the agent wants to run | A Bash command, a deploy, a migration |
| Question | An open question the agent asks before continuing | “Which environment should I target?” |
| Visual | A before/after screenshot sign-off | UI change captured for human review |
Approve from the web terminal
Section titled “Approve from the web terminal”In the web terminal at /cli, list every paused agent in the active workspace
and decide one by its short id.
# List the interactive approvals waiting across the workspacetool-approvals
# Approve or reject one by its (short) approval id; an optional note# is passed back to the agent as your reason / answerapprove-tool <id> [note]reject-tool <id> [note]The id is resolved by prefix the same way task ids are: a unique prefix decides the gate; an ambiguous or unknown prefix is reported rather than guessed.
You can also list both interactive and workflow approvals together:
approvals # both sources, each under its own headingapprovals --filter=tool # only the interactive tool/question/visual gatesapprovals --filter=workflow # only workflow human-gatesAfter you follow (or run) a task and it pauses, the terminal renders the
gate inline — the kind, the tool name or question, and any before/after image
URLs — then waits for your next input line:
approve,yes,y, orokapproves. Anything after the verb is sent as your note.reject,no,n, ordenyrejects, with an optional reason.- For a question gate, a plain free-text line (no verb) is treated as the answer and approves the gate, carrying your text back to the agent.
Approve from Telegram or Discord
Section titled “Approve from Telegram or Discord”When a task you own pauses, SupaCloud posts an approval card to your linked chat — one message with the kind, the redacted detail, any before/after image previews, and inline Approve / Reject buttons. Tap a button to decide.
-
A paused task pushes the card automatically to the chat linked to the task owner. Tap Approve or Reject; the bot replies with a confirmation.
-
To review what is waiting at any time:
/approvals # both human-gate and interactive approvals/approvals tool # only the interactive tool/question/visual gates/approvals workflow # only workflow human-gates
-
The same card is posted to the linked Discord identity, with Approve / Reject buttons. Visual gates embed the before/after screenshots inline.
-
List pending approvals with:
/approvals
The visual before/after card
Section titled “The visual before/after card”A visual approval is a sign-off on a UI change. The card carries:
- The before/after screenshots as signed, time-limited image links (Telegram previews them, Discord embeds them; in the web terminal they print as URLs).
- The machine judge verdict when one ran —
PASS,FAIL, or not run — human review — followed by the reasons the judge gave, so you can see why the automated check thinks the change passes or fails before you decide.
If the screenshot links cannot be built (the capture-serve secret is unset) the card degrades to text-only: it still lists what was captured and the judge verdict, so you can always make a decision.
What happens when an approval times out
Section titled “What happens when an approval times out”Every approval carries a timeout policy that decides what happens if no human responds:
| Policy | Behaviour | Used for |
|---|---|---|
| Hold | Blocks forever until a human decides — never auto-resolved | Deploys, migrations, and any action forced to wait on a human |
| Deny | Auto-denied after a deadline so the agent continues without the action | Optional questions and lower-risk gates |
The deny deadlines are per kind: a tool waits 5 minutes, a question 30
minutes, and a visual sign-off 1 hour. When a deny gate times out the
agent is unblocked with a denial and continues; a hold gate simply waits.