# AI chat assistant

> A natural-language agent inside Reply's new interface and Slack that executes account actions on request, confirms destructive and bulk changes, answers product questions from the help center, searches the web, and hands off to a human.

**Reply's AI chat assistant turns plain-English requests into real actions in your account — creating contacts, starting or pausing sequences, replying from the inbox, changing settings. It runs in Reply's new interface and in Slack, confirms destructive and bulk actions before running them, logs every change to the Activity Log, and can escalate to support.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

> **Rolling out.** The AI chat assistant is available in Reply's new interface and is being
> enabled progressively. If the chat entry point is not on your screen yet, it has not been
> turned on for your workspace.

## At a glance

| | |
| --- | --- |
| **What it does** | Executes account work from plain-English instructions — contacts, sequences, inbox, accounts, tasks, and settings — and answers product questions from the Reply help center or the public web |
| **Required objects** | A Reply account in the new interface; for Slack, a connected Slack workspace and a per-user account link |
| **Surfaces** | Web UI (new interface) · Slack (DM and channel @mention) |
| **Key limit** | A daily message allowance per plan, reset at midnight in your local timezone; one message counts as one unit no matter how many actions it triggers |
| **Stops on** | The confirmation gate — destructive and bulk actions pause the turn until you confirm or cancel; the composer is blocked while a confirmation is pending |
| **Does not** | Run in the legacy interface or the mobile app; reveal or regenerate API keys; create or delete contact and account stages; edit per-step integration field mappings; message you proactively in Slack |
| **Plans** | Daily message allowance varies by plan; AI SDR actions require the AI SDR entitlement |

## Summary

The AI chat assistant is a natural-language agent embedded in Reply. You describe what you
want in plain English; it maps the request to a Reply capability, runs it against your
account with your own permissions and data scope, and reports back in human-readable terms
— sequence and list names, never internal record numbers. It works the same way in the web
panel and in Slack, and both surfaces share one message allowance.

Two things separate it from a chatbot. It performs real work, so anything destructive or
bulk passes a confirmation gate first and every change it makes lands in the workspace
Activity Log. And it does not guess: product questions are answered from the bundled Reply
help center with the source article cited, general questions go to web search with a
sources footer, and when it cannot resolve something it either points you to the exact
place in the app or hands the conversation to a human.

## Problems it solves

- Knowing what you want but not where it lives — describe the outcome instead of navigating to the right screen
- Routine multi-click work (pausing a sequence, adding a contact, reassigning a mailbox, tightening a safety limit) collapsed into one sentence
- Product how-to questions answered in place, from help-center articles, with a link to the source
- Bulk changes done fast without doing them by accident — narration and a confirm/cancel step before anything destructive runs
- Work that has to happen where the team already is — the same assistant answers in Slack
- Dead ends: an unsupported request returns a plain-English reason and a navigation path, not a silent failure

## What Reply can do

- Take instructions in plain English and resolve names, not identifiers — say "pause Cold Outreach Q2" and it looks up the sequence by name, asking you to disambiguate when names collide
- Create and update contacts, change their status, inbox category, or owner, blacklist them, and filter or search your database — see [Filter contacts](/how-to/filter-contacts)
- Search sequences, read sequence statistics, compare performance across sequences, start or pause a sequence, add a step, add contacts, and assign email accounts, LinkedIn accounts, or schedules — see [Edit a running sequence](/how-to/edit-a-running-sequence)
- Read the inbox and send a reply to a conversation
- List email and LinkedIn accounts and reconnect ones that dropped
- List schedules, list your tasks, and create or complete a task
- Read and change settings across the workspace — sequence settings, email-account safety, signature and opt-out settings, warm-up state, LinkedIn safety limits, notifications, calls, meetings, blacklist domains, schedules, custom fields, enrichment, and integration sync control — see [Configure account settings](/how-to/configure-account-settings)
- List, inspect, enable, disable, and delete [triggers](/specifications/triggers), and create or update them within a curated set of actions, conditions, and events; anything outside that set is refused with the allowed values named rather than guessed, and a newly created trigger starts switched off unless you ask otherwise
- Operate [AI SDR](/capabilities/ai-sdr) objects for workspaces with that entitlement — knowledge bases, playbooks, and offers; switching a sequence between approval and automatic reply mode; and working the pending-approvals queue (approve, edit and approve, regenerate from feedback, reject, or clear the queue)
- Answer product how-to questions from the bundled Reply help center, citing the source article as an inline link, and return step-by-step instructions rather than a definition plus a link
- Search the public web for questions outside your account — benchmarks, public company information, news about a contact or company — and append a deduplicated Sources footer
- Ask a clarifying question when a request is ambiguous instead of acting on a guess
- Tell you when a change to a knowledge base, playbook, or offer will affect sequences that are already running
- Hand the conversation to Reply support with a written summary when it cannot resolve the issue itself
- Run in Slack with the same capabilities as the web panel — direct message the app, or @mention it in a channel it has been invited to

## What Reply cannot do

- Run in the legacy interface — there is no chat panel and no entry point there — or in the mobile app
- Reveal or regenerate an API key
- Create or delete contact stages or account stages — the taxonomy is a fixed set of eight, so stages can only be renamed, recolored, or re-described
- Report whether the [Chrome extension](/capabilities/chrome-extension) is connected for a given user — that state is not stored per user
- Change a workspace name or locale, or toggle individual beta features — neither concept exists in the product
- Edit per-step integration field mappings, filters, actions, or advanced sync settings — those stay on the Integrations page; the assistant only reports whether each part is configured
- Handle credentials when connecting an integration — it returns the connect link and you finish the authorization yourself
- Charge you off-session: connecting warm-up returns a payment-required result rather than completing a purchase
- Invent an answer when no help article matches — it says so plainly and points you to the right place in the app instead of falling back to web search for product behavior
- Expose implementation details, internal names, source code, or ticket numbers, even if a help article happens to mention them
- Message you first in Slack — the assistant only responds to messages you send it, and there are no slash commands
- Connect more than one Slack workspace to a Reply account, or act for a Slack user who has not linked their own Reply account

## Required inputs

A plain-English request. Everything else comes from your session: the assistant runs with
your permissions and data scope, and it knows which page you are on, so it can pre-fill
context. For Slack, a user with the manage-integrations permission connects the workspace
once under Settings → Integrations, then each Slack user links their own Reply account by
sending the app a `connect account` message and confirming the one-time link it replies
with.

## Produced outputs

Real changes in the account — contacts created and updated, sequences started or paused,
inbox replies sent, settings written — plus a chat transcript, an entry in the workspace
Activity Log for every mutating action, and, where relevant, cited help-center links or a
web-search Sources footer. Handoffs produce a support ticket by email or an in-app support
chat pre-filled with the summary.

## Use Reply when

- You know the outcome you want and would rather describe it than navigate to it
- Someone needs to act on outreach from Slack without opening the app — see [Run multichannel outreach](/workflows/run-multichannel-outreach) for the work being managed
- You want product questions answered in place, grounded in the help center
- You want a written audit trail of who changed what, automatically — see [Workspaces and roles](/specifications/workspaces-and-roles)

## Do not use Reply when

- You are on the legacy interface or a mobile device — use the app UI or the [REST API](https://docs.reply.io/api-reference/introduction)
- You need a scripted, repeatable, unattended job — build it on the API or [MCP](/start/agent-index) instead of a chat turn
- The change is a free-form structural edit the assistant deliberately refuses, such as per-step integration mappings — do it on the page that owns it

## What you still need to build

- Nothing on the chat surface itself — but automation that must run on a schedule belongs on the API or MCP, not in a conversation
- Your own review discipline for bulk work: the confirmation gate shows what is about to run, and reading it is the control
- Slack governance — who may connect the workspace, and which channels the app is invited to

```yaml
capability: ai-assistant
supported: true
interfaces:
  product_ui: partial
  api: not-verified
  mcp: partial
  cli: not-verified
required_objects:
  - workspace
side_effects:
  - executes_account_actions
  - creates_and_updates_contacts
  - starts_and_pauses_sequences
  - sends_inbox_replies
  - writes_settings
  - writes_activity_log_entries
  - escalates_to_support
human_approval_recommended: true
```

## Where it runs

| Surface | Status |
| --- | --- |
| Web — new interface | Supported |
| Web — legacy interface | Not supported; no chat panel and no entry button |
| Slack — DM with the app | Supported |
| Slack — @mention in a channel the app was invited to | Supported |
| Mobile app | Not supported |

In the web panel the chat sits either in the **Center** (default) or on the **Left**, set in
its settings. The panel has expand, settings, and close controls, and a top bar showing your
daily message allowance and the countdown to reset. Agent replies render as formatted
markdown: external links open in a new tab, a link to a contact opens the contact sidebar in
place without navigating away, and the starter prompt buttons disappear after your first
message. When the allowance is exhausted, the composer is replaced with a view showing the
reset countdown and how to continue.

In Slack, replies render as Slack blocks. The app posts a "Working on it…" placeholder
immediately and updates it in place with the result. Context in a channel is keyed to the
thread; in a direct message it is a rolling 24-hour window, after which a new session starts.
Every action is scoped to the Reply user that Slack account is linked to. Disconnecting the
Slack workspace removes all per-user links, and deactivating a Slack user removes theirs.

## Confirmation before destructive and bulk actions

Actions that delete, pause, unsubscribe, or change things in bulk pass a confirmation gate.
The assistant first narrates what it is about to do in one sentence ("I'm about to pause the
Cold Outreach Q2 sequence"), then presents the pending action with a confirm and a cancel
choice, including up to four of the action's parameters so you can see what would run. The
turn stops there. While a confirmation is outstanding the composer is blocked — sending a
new message returns an error instead of queueing behind it — and confirming twice cannot run
the action twice.

The gate is on by default. A per-user **Allow destructive actions** preference turns it off,
in which case those actions run immediately; the hint under the setting reads "When off, the
chat will ask before deletes, pauses, and bulk updates". The behavior is identical in Slack,
where the confirmation appears as buttons in the thread and the same preference applies.

> **Advisory, not a gate.** Updating a knowledge base, playbook, or offer that an active
> sequence already uses tells you the change will affect those sequences. That is an
> informational notice, not a confirm-or-cancel step — the change goes through.

Writes are also range-checked at the tool layer, so a settings change made through chat is
held to the same product limits as the UI — the ranges are in the Limits table below.

## Daily message quota

The assistant runs against a daily message allowance that varies by plan. **One user message
counts as one unit**, regardless of how many actions, help-center lookups, or web searches the
assistant performs while answering it. Web search consumes no additional quota and has no
separate daily cap.

The allowance resets at **midnight in your local timezone**. The countdown you see is
anchored to a server timestamp, so changing your timezone after hitting the limit does not
shift the current countdown or hide the timer — the new timezone applies from the next
reset. The counter in the top bar updates live after each message, with no page refresh.

Web and Slack draw on the same counter: a message sent from Slack is reflected in the web
panel's top bar. When the allowance runs out, the composer is replaced with a dedicated
out-of-limit view carrying the reset countdown and the options for continuing. Reply Credits
can be spent on messages beyond the daily limit; that mechanic is still being finalized.

## Settings and preferences

| Setting | Values | Default |
| --- | --- | --- |
| Chat position | Left / Center | Center |
| Allow destructive actions | ON / OFF | OFF |
| Sound notifications | ON / OFF | OFF |

Preferences are personal — stored per user, not per team. The settings modal also carries a
Slack section that shows your own link status: connected as a named Slack user with an
unlink action, an invitation to link your account, or a pointer to Settings → Integrations
when the workspace itself is not connected yet.

## Auditing what the assistant did

Every mutating action the assistant performs is written to the workspace Activity Log under
Settings → Activity Log, attributed to the Reply user who asked for it, and tagged with the
surface it came from — `Agentic Chat (Web)` or `Agentic Chat (Slack)`. Each entry records
what was done, the entity it was done to, and a timestamp.

Read-only work — searches, lookups, statistics — is deliberately not logged, so the log
stays a record of change rather than of conversation. Handoffs to support are not in the
Activity Log either; they are captured in AI chat analytics for administrators.

## Knowledge base and web search

Product questions are answered from a bundled copy of the English Reply help center — 592
articles in the first version. Search is keyword-based and returns up to 8 matching
articles; the assistant then opens the best match before answering and cites its source URL
as an inline link. The marketing website, blog, and legal pages are not indexed. Content is
refreshed by shipping an updated bundle, not continuously, so a very recent help-center edit
may not be reflected yet.

Routing is deliberate. Questions about how Reply works go to the help center first.
Questions about your own data — counts, statuses, record contents — go to the account tools
instead. General and external questions go to web search, which may include details from
your contacts (a name, a company) in the query when you ask something like "find news about
this contact". Every web-grounded answer ends with a **Sources** footer: a deduplicated
bulleted list of links that open in a new tab, and that footer is stripped from context on
later turns so citations do not accumulate.

If nothing matches in the help center, the assistant says so and points to the place in the
app that handles it. It does not silently fall back to web search for product behavior, and
it does not invent an answer. If a web search times out (roughly 30 seconds) it retries once
on a transient failure, then tells you in plain text that search is unavailable.

## Handing off to a human

The assistant offers to bring in a person on the Reply support team when any one of four
things is true: you ask for a human in any phrasing; the same issue has run about three
messages with no real progress; your tone signals frustration; or you need an account or
support action neither the assistant nor the app can perform but a person can — extending a
trial, granting test reply credits, sending the SOC 2 certificate. Missing product features
are not a handoff trigger; those are logged for the product team through the
unsupported-request path. If the thing exists in the app, you get pointed there instead.

In the web app the assistant asks which channel you prefer — the in-app support chat, where
a support agent replies inside Reply, or email, which reaches support@reply.io with you in
CC and reply-to set to your address. It waits for your answer and never picks for you; if
you tell it to decide, it uses email and says so. In Slack only email is available, so it
does not ask.

On handoff it sends one consolidated summary: what you were trying to do, what has already
been tried so support does not repeat it, and why it is being escalated. The chat path
pre-fills the in-app support conversation with that summary before a human joins. The
assistant hands off at most once per issue, and if delivery fails it tells you directly and
suggests emailing support@reply.io yourself rather than dropping the request. Human handoff
is gated separately and is rolling out.

## Limits

| Limit | Value |
| --- | --- |
| Message quota | A daily allowance that varies by plan; 1 user message = 1 unit regardless of how many actions it triggers |
| Quota reset | Midnight in the user's local timezone, on a server-anchored countdown |
| Quota scope | Shared between the web panel and Slack |
| Help-center search results | Up to 8 articles per search; keyword matching, not semantic |
| Help-center content | English only, 592 articles in the first version; refreshed by release, not continuously |
| Web search | ~30 second timeout, one automatic retry on a transient failure; no region or language setting (it searches in the language of your question) |
| Pending confirmations | One at a time — the composer is blocked until you confirm or cancel |
| Emails per day (sequence setting writes) | 1–10000 |
| Delay between emails (sequence and email-account setting writes) | 20 seconds minimum, under 24 hours maximum |
| New daily contacts (sequence setting writes) | 1–1000 |
| LinkedIn action limits | 0–100 per action category |
| Email-account daily send cap | Rejected above your plan's per-mailbox ceiling, with the allowed maximum named — never silently clamped |
| Slack workspaces | One per Reply account; connecting another replaces the existing connection |
| Slack session context | Thread-keyed in channels; 24-hour rolling window in DMs, then a new session |
| Human handoff | At most once per issue |

## FAQ

### Does the assistant do things, or only explain them?

It does them. Requests map to real actions in your account, executed with your permissions
— creating and updating contacts, starting and pausing sequences, replying from the inbox,
changing settings. Explanation is the fallback when a request is out of scope, and even then
it returns the navigation path rather than a refusal.

### What stops it from deleting something by mistake?

The confirmation gate. Destructive and bulk actions are narrated first, then held with a
confirm/cancel choice showing the action's parameters, and the turn does not proceed until
you decide. The gate is on by default; the **Allow destructive actions** preference turns it
off if you want actions to run immediately. Every change is also recorded in the Activity
Log, so a mistake is traceable.

### Why does my message count as one when it did several things?

Quota is counted per user message, not per action. A single request that searches the help
center, runs three lookups, and updates a sequence still consumes one unit. Web searches
inside a turn are free for the same reason.

### Can I use it from Slack?

Yes. A user with the manage-integrations permission connects the Slack workspace under
Settings → Integrations, then each person links their own Reply account by direct-messaging
the app `connect account` and confirming the one-time link. After that, DM the app or
@mention it in a channel it has been invited to. Capabilities match the web panel;
confirmations appear as Slack buttons; the message allowance is shared with web.

### Where do I see what it changed?

Settings → Activity Log. Every mutating action appears there, attributed to you and tagged
`Agentic Chat (Web)` or `Agentic Chat (Slack)`, with the entity and a timestamp. Read-only
lookups are not logged.

## Related

- [AI writing assistant](/capabilities/ai-writing-assistant) — the message-drafting side of Reply's AI, distinct from this command interface
- [AI SDR](/capabilities/ai-sdr) — the autonomous agent whose offers, playbooks, and approvals this assistant can operate
- [CRM and integrations](/capabilities/integrations) — the Slack connection lives alongside the other integrations
- [Triggers](/specifications/triggers) — the automation objects the assistant can create within a curated set
- [Sequence stopping](/behavior/sequence-stopping) — what actually happens when you ask it to pause a sequence
- [Workspaces and roles](/specifications/workspaces-and-roles) — the permissions the assistant inherits
- [Permissions](/reference/permissions) — who can do what
- [Agent index](/start/agent-index) — machine-readable entry points for building on Reply

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — the same operations the assistant performs, callable directly
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) — the same action layer exposed to your own AI agents, with scoped keys
