Agents
The assistant's name, tone, model, autonomy and AI disclosure. Why only one agent ever answers, what the fallback persona costs you, and how to write a persona that does not invent policy.
/admin/ai/support/agents. This is who the assistant is: the name a customer
sees, how it writes, which model it runs on, the rung of autonomy it is on, and
the line that tells the customer they are not talking to a person.
On MashDiv AI you can mostly skip this screen. MashDiv AI ships tuned for this platform: it already knows what a KYC level is, that a deposit and a withdrawal are different queues, and that "my order isn't filling" is a trading question rather than a wallet one. The default agent is written for it, and most installs never edit anything here beyond the assistant's name and the disclosure line.
The rest of this page — model choice, effort, tone engineering — is the self-managed path: you brought your own key, so the tuning is yours to do.
Only one agent answers
The list can hold several rows, but the oldest active agent is the only one that ever answers. Creating a second one does not create a second voice or a second queue — it creates a row that does nothing. The banner at the top of the screen says so, because a page that presents itself as a collection and behaves as a single slot has to.
This surprises people, so it is worth being blunt about: if you want to change the persona, edit the existing agent. Do not add a new one and expect it to take over.
Create the default, then edit it
Create default agent writes a complete working persona in one click — name,
persona, disclosure line, COPILOT, and both model fields left on inherit so
there is one place to change the model rather than one per agent. The route
refuses if any agent already exists, precisely so it cannot be used to create the
second row above.
An agent is technically optional, and the engine falls back field by field rather than all at once. With no agent your customers are answered by a nameless "Assistant", with no avatar, no tone instructions, and the platform's generic disclosure wording in place of yours. The disclosure itself still renders — a legal requirement is not switchable off by leaving an optional table empty — but everything that would have made the reply sound like your company is gone.
The platform-wide aiSupportAutonomy setting also starts deciding who presses
send, which is the one time that value is read at all.
The default-agent button exists so that nobody ships in that state because writing a persona from a blank textarea felt like work.
What the form writes
Four groups, and they are the whole editable record:
| Group | Fields |
|---|---|
| Identity | Name, avatar, persona |
| Disclosure | The disclosure line shown to customers |
| Model | Model, effort, max tokens |
| Availability | Timezone, active |
The avatar, the persona and the disclosure line live in the form and the view dialog rather than in the table row: a persona is paragraphs, and an avatar is a thumbnail that says nothing the name does not.
Mode is on the row and in the view dialog but is not a field on either form — see Autonomy below.
What to put in the persona
The persona controls voice, not facts. Facts come from Knowledge, and the grounding gate will refuse an answer the sources do not support no matter what the persona says.
What earns its place here:
- Who you are. "You are the support assistant for Acme Exchange." The assistant answers as your brand, and it is white-labelled — it never names the software vendor.
- How much to say. Support answers are read on a phone by somebody who is already annoyed. Short beats complete.
- When to hand over. Name the topics your team wants a human on regardless of confidence — chargebacks, account closures, anything legal.
- The tone you actually use. If your team says "Hi there" rather than "Dear valued customer", say so, or the assistant will not match the rest of the thread.
What does not belong here:
- Fees, limits, review times, supported countries or refund terms. Put those in an article. A number in the persona is a number with no citation behind it, and the grounding gate will not let the assistant say it anyway.
The shipped persona is written as instructions about conduct rather than personality adjectives, and that is worth copying. "Be friendly" changes nothing a model does; "say you do not know and hand over" changes what it does on exactly the questions that cost you money.
Model
The model picker reads its options from the connected provider, so it is empty until Provider is green. The first option is always inherit from Settings, and it is the one almost everyone wants — it is also the only option that is valid before a provider is connected.
The shipped choice is a mid-tier model for answering, with a small fast model doing the internal work — reranking retrieved passages and classifying the question. Those two are high-volume and structurally simple, so paying a large model to do them is the single easiest way to multiply your bill for no gain. The internal models are set on Settings, not here.
Effort has the same inherit option and the same reasoning. Max tokens is floored on save, because thinking tokens count against it: a ceiling low enough to be consumed entirely by thinking returns an empty answer.
Autonomy
The Mode column is the rung this agent is on — COPILOT, AUTO_TICKET or
AUTO_ALL — and it is the value the engine actually obeys. The Super-Admin
setting of the same name is only a fallback for an install with no agent at all,
so this column, not the Settings screen, is the honest answer to "is it sending?"
Every agent is created in COPILOT whatever was posted to the create route, and
the column is never empty.
It is deliberately not a field on the create or edit form. Raising it is gated on evidence — reviewed drafts, how often your team sent them unedited, the mean edit distance, and whether the onboarding questions are answered — so a dropdown here would be a control that refuses most of the time and reads as broken rather than as a safeguard. Lowering it is never gated.
Autonomy is the whole story: what each rung means, the four thresholds, and the one move that stops autonomous sending.
Disclosure
The disclosure line is part of the agent record rather than a global setting, because it has to read in the assistant's own voice and language.
It can be reworded but not emptied. Clearing the box stores nothing and the assistant falls back to the shipped wording, so an empty field is a valid, compliant state rather than a missing answer — there is no configuration in which a customer is told nothing.
Keep it. It is short, customers do not resent it, and its absence is what turns a good answer into a complaint about being tricked.