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

# Human in the loop

> Keep a person in control of sensitive replies and business changes with approval safeguards.

Human-in-the-loop is the approval safeguard for AI Agents. Every sensitive action can pause and ask a person before anything customer-visible or business-changing happens.

## Decision modes

Each action has a decision mode:

<CardGroup cols={2}>
  <Card title="Ask every time" icon="hand">
    The agent prepares the action, then pauses for your approval. This is the safer default for
    replies and writes.
  </Card>

  <Card title="Always run" icon="bolt">
    The agent executes the action without asking. Use this only after you trust the agent on that
    specific action.
  </Card>
</CardGroup>

**Send reply** starts as **Ask every time**. A new agent therefore proposes a customer reply by default. It does not send immediately unless you change that action to **Always run**.

## What approval looks like

When an action needs approval:

1. The agent run pauses in **awaiting approval**.
2. The Inbox shows the proposed action on the ticket.
3. You approve or reject it.
4. On approval, the agent continues. On rejection, the run stops that action.

Open the agent from [AI Agents](https://armin.cx/app/_/ai/agents-v2), then set the decision mode on each action under **Actions**.

## Start strict, then loosen

Keep approval on:

* customer replies, until tone and policy look right
* refunds, cancellations, and address updates
* discounts or replacement shipments
* other writes to commerce or ERP systems

After you review early runs, switch only the proven actions to **Always run**. Leave rare or high-risk actions on **Ask every time**.

<Tip>
  Manual assignment still respects the agent's decision modes. Assigning an agent to a ticket does
  not force auto-send. If **Send reply** is set to ask every time, the agent proposes a reply for
  approval.
</Tip>

## Best practices

* Treat approval as a training wheel, not a permanent bottleneck.
* Prefer one clear owner for approvals on a queue so proposed replies do not sit unreviewed.
* Use [run history](https://armin.cx/app/_/ai/agents-v2/runs) to see which actions paused and why.
* Combine approvals with narrow actions. A returns agent should not have unrelated catalog or marketing writes.

Next, learn how to [activate an agent](/ai-agents/activate) and [run it on existing tickets](/ai-agents/run-on-existing-tickets).
