# Review and respond to AI teammate approval requests (/work/inbox/approvals)



When your AI teammate wants to take an action that needs your sign-off, it pauses instead of guessing — and waits for you to decide.

## What Is an Approval Request? [#what-is-an-approval-request]

An approval request is how an AI teammate asks permission before a sensitive or irreversible action — sending an external email, deleting records, deploying. It shows up in your Inbox's **All** tab (approvals don't have a tab of their own) and as a card in the channel where the teammate is working; both point at the same request, and responding on either updates both.

<LivePreview component="InboxView" scenario="{ filter: &#x22;all&#x22; }" />

Every request has one of four states:

| State         | Meaning                                                                           |
| ------------- | --------------------------------------------------------------------------------- |
| **Pending**   | Waiting for your decision. Your teammate is paused.                               |
| **Approved**  | You approved it. The teammate proceeded.                                          |
| **Denied**    | You denied it. The teammate stopped and was told why.                             |
| **Timed out** | You didn't respond in time. The request expired and the teammate stopped waiting. |

## How to Respond to an Approval Request [#how-to-respond-to-an-approval-request]

<Steps>
  <Step>
    ### Step 1: Open the request [#step-1-open-the-request]

    Open it from Inbox's **All** tab, or from the approval card in the channel where the teammate is working — both lead to the same place.

    <LivePreview component="InboxView" scenario="{ filter: &#x22;all&#x22; }" />
  </Step>

  <Step>
    ### Step 2: Read who's asking and why [#step-2-read-whos-asking-and-why]

    Check **who** is asking and **what action** they want to take (for example, "Send an email to [customer@example.com](mailto:customer@example.com)"), then **why** — what they're working on and how this action fits in.

    <LivePreview component="AssistantChat" />
  </Step>

  <Step>
    ### Step 3: Approve or deny [#step-3-approve-or-deny]

    Each request has two choices: **Approve** — the teammate proceeds with this action — or **Deny** — the teammate stops and is told you declined, so it can ask what to do instead.

    <LivePreview component="AssistantChat" />
  </Step>

  <Step>
    ### Step 4: Know what happens if you don't respond [#step-4-know-what-happens-if-you-dont-respond]

    If you don't respond within the approval window, the request expires. Your teammate logs that it timed out, stops waiting, and won't retry automatically — ask it directly in the channel to pick the work back up.

    <LivePreview component="InboxView" scenario="{ filter: &#x22;all&#x22; }" />
  </Step>
</Steps>

Routine approvals are decided one at a time — there's no blanket "always approve." Standing, longer-lived trust applies in one specific case: requests to use a stored credential. See [Approve actions](/ai-teammates/control#where-approvals-appear) for the full model.

<Cards>
  <Card title="Approve actions" href="/ai-teammates/control#where-approvals-appear" description="The full approval model across channels and credentials." />

  <Card title="Control" href="/ai-teammates/control" description="Decide what your teammates can do on their own." />
</Cards>
