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

# Approvals

> Agents ask before they send, create, change, or delete anything in your apps, and you answer from the chat, Slack, Teams, or WhatsApp.

Before an agent sends, creates, changes, or deletes something in one of your [connected apps](https://docs.qxlabs.com/connected-apps/overview.md), it can stop and ask you first. This page covers what each permission setting means, the choices on an approval request, and how asking works in chat, on other channels, and in scheduled tasks.

## Always allow, Needs approval, or Blocked

Every action an agent can take in an app has one of three settings.

| Setting | What happens | Default for |
| - | - | - |
| **Always allow** | The agent runs it without asking | Reading, like searching or fetching emails |
| **Needs approval** | The agent asks you first | Writing, like sending, creating, updating, or deleting |
| **Blocked** | The agent never runs it, even if you approve or turn on Auto | Nothing, only if you choose it |

These are only defaults. You can change any of them for a whole app or a single action, and give one agent its own settings, see [Scopes and permissions](https://docs.qxlabs.com/agents/scopes-and-permissions.md#set-permissions-for-a-connected-app). QX's built-in apps, like DataForSEO, run without asking.

## Approve or deny an action

When an action needs approval, the agent pauses and a request appears above the message box. It names the action and shows the agent's reason for running it. Click **Inputs** to see exactly what it will send.

![An approval request above the message box, asking to run Fetch emails with Allow once, Allow for this chat, Always allow, and Deny buttons](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/approval-card-light.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=7cd95da83ce6e922fda99cbe903059c6)

Gmail here is set to ask before reading emails

Pick one of the options:

| Option | What it does |
| - | - |
| **Allow once** | Runs the action this one time. Next time, the agent asks again. |
| **Allow for this chat** | Runs it, and the agent stops asking for this action for the rest of the chat |
| **Always allow** | Runs it, and the agent never asks for this action again, in any chat. You see this option only for apps you connected yourself. |
| **Deny** | Skips the action, and the agent carries on without it |
| **Switch this chat to auto** | Runs everything waiting and stops asking for the rest of the chat, see [Auto](#auto) |

Approving runs exactly the action shown, with the inputs shown. To undo **Always allow**, change the action back in its app's [permissions](https://docs.qxlabs.com/agents/scopes-and-permissions.md#set-permissions-for-a-connected-app).

## When several actions wait

An agent sometimes asks for more than one action at once. Each one gets its own buttons, so you can allow one and deny another.

![An approval request with two actions, Fetch emails from Gmail and List messages from Outlook, each with its own buttons](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/approval-card-multiple-light.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=78971d38b33a334463d8a0350c4a0693)

The agent continues only after you've answered every one. Then the allowed actions run, the denied ones are skipped, and the agent picks up from there. **Allow for this chat** and **Always allow** also answer any other waiting request for the same action, and **Switch this chat to auto** answers all of them.

## If you send a message instead

You don't have to answer a request. If you send a new message while actions are waiting, none of them run, not even the ones you already allowed. Their tool calls show **Not run**, and the agent works from your new message, so ask again if you still want the action done.

Typing "yes" doesn't count as approval, the agent asks again with a new request. In a shared Slack thread or Teams group chat, a new message from anyone in the conversation closes the request.

## Auto

Turn on **Auto** in the message box and the agent stops asking in that chat. Actions that need approval run straight away, and **Blocked** actions still never run. Auto stays on for that chat until you click it again, and **Switch this chat to auto** on a request does the same.

![The message box with Auto turned on, next to the attach and send buttons](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/auto-pill-light.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=5353a979fdf5714ce0e31e4a83d13d02)

To skip approvals for a single message instead, add `!auto` to it, see [Commands](https://docs.qxlabs.com/agents/chat.md#commands).

## When the agent asks

Whether an agent can ask depends on where it runs.

| Where the agent runs | What happens to an action that needs approval |
| - | - |
| A chat on the web, Slack, Teams, or WhatsApp | The agent asks you |
| A chat with **Auto** on, or a message with `!auto` | It runs without asking |
| Email | It runs without asking, email works like Auto |
| Scheduled tasks, and **Run an Agent** in flows and grids | Nobody is there to answer, so the action is skipped, see [below](#scheduled-tasks-flows-and-grids) |

**Blocked** actions never run, wherever the agent runs.

## Approvals on other channels

On [Slack, Teams, and WhatsApp](https://docs.qxlabs.com/agents/communication-channels.md), requests arrive as buttons right in the conversation.

| Channel | How you answer |
| - | - |
| Slack | The request appears in the thread with **Allow once**, **Allow for this chat**, **Always allow**, and **Deny**. In a channel everyone can see it, but only the person who asked can click. |
| Microsoft Teams | The request appears as a card with the same buttons. In a group chat or channel, only the person who asked gets them. |
| WhatsApp | Three buttons, **Allow once**, **Allow for this chat**, and **Deny**. To always allow an action, change it on [**Connected Apps**](https://app.qxlabs.com/credentials). |
| Email | There's no approval step, the agent runs the action straight away |

![An approval request for Fetch emails in a Slack thread, with Allow once, Allow for this chat, Always allow, and Deny buttons](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/slack-approval.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=d0c03497047fdd051a8a3326f9d94c5c)

On Slack and Teams, once a request is answered it shrinks to one line saying what was decided and by whom.

![The same Slack request after it was answered, now reading Fetch emails, Allowed once by Test User](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/slack-approval-decided.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=3dade0d6e1fd6d99819eb90ddb8a5035)

![An approval request card for Fetch emails in Microsoft Teams](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/teams-approval.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=9f4c8cbbf2321ac6d10e28713a38e650)

![An approval request on WhatsApp with Allow once, Allow for this chat, and Deny buttons](https://mintcdn.com/qx-labs/p2bMdM90Z8LdmLFA/images/agents/approvals/whatsapp-approval.png?fit=max\&auto=format\&n=p2bMdM90Z8LdmLFA\&q=85\&s=a23385dce43d3ee6cbe965720e37721b)

> [!NOTE]
>
> In a shared Slack thread or Teams group chat, **Allow for this chat** applies to everyone talking to the agent in that conversation.

## Scheduled tasks, flows, and grids

[Scheduled tasks](https://docs.qxlabs.com/agents/scheduled-tasks.md), and agents that run inside a flow or grid through **Run an Agent**, work with nobody there to answer. When one reaches an action that needs approval, it skips that action, carries on with the rest, and tells you in its result what it skipped.

To let an action run unattended, set it to **Always allow**:

* For one of your own agents, set it in that agent's **Connected apps** section, see [Scopes and permissions](https://docs.qxlabs.com/agents/scopes-and-permissions.md#set-permissions-for-one-agent). Only that agent stops asking.
* For **QX**, set it in the app's **Permissions** on Connected Apps. QX then stops asking for that action in every chat too.

When you ask an agent to schedule a task, it tells you which actions the task would skip.


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