# Pause AI / Unassign

Silence the AI on this conversation and clear its agent binding, with no page, no note and no message — a quiet, workflow-internal hold meant to be lifted by a later Assign To (AI) step.

## Getting here

**Automate → Workflows**, open a workflow, click **+** on the canvas, then pick **Pause AI / Unassign** under **Add Steps**.

## Before you start

- An **owner**, **admin** or **agent** can add this step and save the workflow. Publishing it is an **owner** or **admin** action.
- Building and running workflows depends on your plan; see [pricing](/pricing).
- Nothing outside Inchat has to be connected, and there is nothing to configure — this step takes no fields.

## Set up

1. Open the workflow and click **+** where the pause belongs — typically right before handing the conversation to another workflow.
2. Pick **Pause AI / Unassign**. There is nothing to configure.
3. Save the step, then publish the workflow.

## How it works

- It clears the conversation's AI agent binding and marks the AI as paused by a workflow — unless the thread is already human-owned or already paused for a customer-requested reason, in which case the step does nothing at all and still reports success, rather than overwriting that hold.
- That pause is checked on the customer's next inbound message, the widget's message route, an **AI Reply** step in this run or one it hands off to, a queued AI follow-up, and the MCP `send_message` tool — so it is not limited to this one workflow.
- It writes no timeline note and records no decision anywhere the AI's own decisions are logged.
- It leaves the conversation's assignee exactly as it was — "Unassign" in the name refers to clearing the AI agent, not a human assignee.
- The thread header shows **AI paused by workflow** while this hold is active, so it is not invisible to an operator looking at the conversation — it is just silent at the moment the step itself runs.

## When it fails

- The conversation moved out from under the step while it was running (for example, a person took it over at the same moment): the step stops and the run does not continue past it.
- Any other failure is a generic write error (`could not pause the AI on this conversation`), logged with no separate reason shown to the customer beyond the workflow's own **Activity** log.

## Limits

- It does not clear a human assignee — a conversation already assigned to a teammate keeps that assignee after this step runs.
- On a thread already human-owned, or already paused because the customer asked for a person, this step changes nothing at all — it neither overwrites that hold nor fails; the run is simply recorded as having succeeded with no write behind it. It cannot be used to silence a thread a person already has.
- Nothing on a schedule clears the pause — not a timer, not the workflow finishing. Three things do, all treated as an explicit "give it back to AI" action: a later **Assign To (AI)** step on the same conversation, an operator clicking **Resume AI** in the Inbox, or an operator picking a specific AI agent in the conversation's own settings (a separate action from Resume AI, with the same effect on this hold). A flow that pauses the AI and relies only on a later workflow step to hand it back leaves the AI off that thread until one of the three happens.
- It sends the customer nothing and writes no timeline note of its own — but it is not invisible: the thread header's **AI paused by workflow** badge shows it, and if the customer writes in while paused and no other step answers them, the team is still paged the same way an unhandled inbound message pages the team.

## Best practices

- Use this step as an internal hand-off, not as the way to tell a person something needs attention — it is silent by design. Reach for **Escalate** when a human should be paged.
- Pair this step with **Trigger Another Workflow** right after it, and end that other workflow's relevant path with **Assign To (AI)** so the pause is always lifted.

## Use cases

- A workflow pauses the AI, hands the conversation to a separate onboarding workflow with **Trigger Another Workflow**, and that workflow reassigns the AI once its own steps finish.
- A path that is about to send a sequence of scripted messages pauses the AI first, so nothing it does in between gets answered by the bot.

## FAQ and troubleshooting

### Does this unassign the conversation from a teammate?

No — it clears the AI agent binding only. A human assignee already on the conversation stays exactly where they were.

### How do I turn the AI back on for this conversation?

Click **Resume AI** on the thread in the Inbox, pick a specific AI agent in the conversation's own settings, or run an **Assign To (AI)** step — those three clear this hold. Time passing or the customer replying does not.

### Does anyone get told the AI has been paused?

The step itself writes no note and pages nobody, unlike Escalate. But it is not invisible: the thread header shows **AI paused by workflow**, and if the customer writes in while paused and nobody answers, the team is paged the normal way an unhandled inbound message pages the team.

## Related

- [Escalate](https://inchat.inseller.my/help/workflows/escalate)
- [Assign To (AI)](https://inchat.inseller.my/help/workflows/assign-to-ai-agent)
- [Trigger Another Workflow](https://inchat.inseller.my/help/workflows/trigger-another-workflow)
- [Assign To (human)](https://inchat.inseller.my/help/workflows/assign-to-human)

---

Source files: `src/lib/workflows/ai-builder/spec.ts`, `src/lib/workflows/canvas-model.ts`, `src/components/workflows/WorkflowStepConfigDrawer.tsx`, `src/lib/workflows/engine-record-actions.ts`, `src/lib/workflows/engine.ts`, `src/lib/orchestrator/thread-gate.ts`, `src/lib/orchestrator/handle-inbound.ts`, `src/lib/workflows/execution-guard.ts`, `supabase/migrations/20260925120000_hand_back_to_ai_clears_workflow_pause.sql`, `src/app/(app)/inbox/[id]/conversation-actions.ts`, `src/components/inbox/ThreadOwnerToggle.tsx`, `src/lib/i18n/messages/en.ts`, `src/lib/inbox/thread-owner-label.ts`, `src/lib/workflows/engine.test.ts`
