Settings

Budgets, confidence floors, retrieval tuning, where the assistant may appear and how long conversations are kept — with every shipped default and what raising or lowering it actually does.

7 min readUpdated 7 August 2026admin, settings, budget, thresholds, retention

/admin/ai/support/settings. Five tabs, forty-six keys. This page covers the ones whose value you will actually want to change, and what happens when you do; All settings is the complete list, tab by tab, with every default and range.

Needs access.ai.support.settings. Twelve keys are Super-Admin only regardless of role — see The console.

Money

Whether the assistant answers at all. Ships off; turning it on is the moment it starts speaking to customers.
Spend ceiling for one day, in USD. Reaching it stops the assistant answering and it escalates instead. 0 means no limit.
Spend ceiling for the calendar month, in USD. Same behaviour. 0 means no limit.

It does not degrade or queue. Every conversation goes to a person from that moment until the window rolls over. That is the correct behaviour — the alternative is an unbounded bill — and the desk is notified when it happens, so it should not arrive as the addon spontaneously stopping. The suspension lifts by itself: the next customer message on a session paused by the cap picks it back up, once there is allowance again.

The Overview screen shows remaining budget. Set the ceilings where you want them rather than leaving the shipped defaults, which are deliberately low enough to be safe on an install nobody is watching.

Both ceilings count your own questions too. The spend behind them is the sum of every turn on both surfaces — what the assistant spent answering customers, and what the admin console, the Handbook and "ask about a customer" spent answering you. A row that carries a cost counts, whatever status it ended in. An operator working through the console for an afternoon is spending the same allowance their customers' answers come out of, and now sees it on the same meter.

An emptied numeric setting is not "unset" — it parses as 0, and 0 on either budget key means unlimited. The ceiling inputs commit on blur, so deleting the contents of the Daily budget box and clicking away saves the removal of the only spend cap the addon has. Type 0 deliberately if that is what you want; type a number otherwise.

A cap that cannot be measured is refused rather than assumed safe. If either ceiling is set and any model call since the first of the month moved tokens and recorded no cost, the assistant stops answering, the desk is told once, and unpriced_model is written on every turn it skips. That is the install pointing the compatible adapter at a metered endpoint: told $0.00 spent every day while a real bill grows. An install genuinely running its own model at no per-token cost never sees it, because a cap of 0 is no cap and there is nothing to enforce.

There are two ways out, and only one of them is immediate. Setting both caps to 0 lifts the refusal on the next request, and leaves a value in the row saying you decided there is no ceiling. Pricing the endpoint — AI_SUPPORT_OPENAI_INPUT_USD_PER_MTOK and AI_SUPPORT_OPENAI_OUTPUT_USD_PER_MTOK, both of them, both above zero — prices every call from then on, but the turns already recorded at zero this month are still counted, so the gate stays shut until the first of next month rolls that window past them. Write the rate card the day you point the adapter at a metered endpoint, not the day the assistant goes quiet.

The one asymmetry to know about: a conversation paused by a reached ceiling picks itself back up on the customer's next message, and one paused by unpriced_model never does. However you resolve the pricing, the conversations suspended while spend was unmeasurable have to be handed back to the assistant from the desk.

Confidence

Two independent gates. An answer has to clear both.

Retrieval floor. How close a source must be to the question before it counts as an answer at all. Below it, the assistant escalates and records a gap.
How many passages are retrieved and considered for each question.
Groundedness floor. Of the factual sentences in the drafted answer, how many must sit inside a citation before it may be sent.

The groundedness floor is the one people get wrong, so here is the reasoning behind the shipped value.

A support answer is mostly procedural prose — "open the app", "scan the code" — and only some of those sentences sit inside a cited span. On a live install, a well-sourced answer about enabling two-factor authentication came back with four citations and still scored 0.43. At the old 0.6 it was withheld, the customer got a handover instead of a correct answer, and the install was billed for the work.

At 0.4 the gate still does its job: an answer that asserts facts with nothing behind it scores zero and is refused at any floor above zero. Raise it if you want stricter behaviour and accept more handovers.

Which model does what

The tier that writes answers.
The tier that reorders retrieved passages by relevance.
The tier that classifies the incoming question.
Reasoning effort on the answering model.
Maximum tokens in an answer. Thinking tokens count against this, which is why the floor is 4000 rather than something smaller.

What ships in these three is a tier, not a supplier's model id. Which model serves a tier is a routing decision made on the gateway, so an install that named a specific model would be asserting something it cannot know and pinning a choice that goes stale the moment routing changes — and it would print a supplier's name on the screen an operator opens most, which is the disclosure the tier vocabulary exists to prevent. Bring your own key and name a specific model and you still get exactly that model; the mapping only catches the tier names.

Reranking and classification are high-volume and structurally simple. Pointing a large tier at them is the easiest way to multiply your bill for no measurable gain — the shipped split is the cheap tier for both, which is also what the gateway would have routed them to anyway.

Two cost levers with no control on this screen

Serve a published article verbatim when it already answers the question, with no model call at all.
Reuse an answer across customers who asked the same generic question.

Both are real, both are read on every turn, and neither renders anywhere in the admin app — no field on this screen, no switch on any other. They are settable only through the addon's own settings API, PUT /api/admin/ai/support/settings with a body such as {"settings":{"aiSupportDirectAnswerEnabled":"true"}}, or by writing the row directly. There is nothing to click, so do not go looking for it.

Writes any AI Support key, including the two above. Refuses a key outside the addon's allowlist, and any protected key from a caller who is not a Super Admin.

Direct answers are the big one and the reason coverage is worth chasing: an answer served from your own article costs nothing and arrives in about half a second. That is what makes the missing control worth naming rather than filing under polish.

It is wired, tested, and off deliberately. During verification, two consecutive repeats of a shareable question produced no reply at all. A customer receiving nothing is far worse than a customer receiving an expensive answer, so it stays off until a repeat is confirmed to deliver on your install. If you enable it through the API, ask the same generic question twice and check both got an answer before leaving it on.

Reach

Answer before the ticket exists — offer the article that solves the problem as the customer types their subject line.
Answer in the customer's own language, grounded in your English articles.
Let the assistant read the platform's own documentation packs, not only your articles.

Deflection is the only figure in the product that counts tickets which genuinely never happened. The file-anyway button is never hidden, so nobody is trapped.

Multilingual is off by default because it changes who your support desk serves — turn it on when you are ready for the tickets it will bring in. The policy gate holds in every language, so a Spanish question about your fees still refuses unless a Spanish-or-English article of yours answers it.

The documentation packs shipped with your install freeze on the day you install them, so the live fusion is what stops an install that never upgrades answering from documentation that stopped improving. It fails silently and falls back to your local chunks, so switching it off degrades coverage rather than breaking anything.

Conversation lifecycle

Close a conversation automatically after this many days of silence. 0 disables it.
How long assistant conversations and their retrieved context are kept before they are cleared and then deleted.

Closing is a one-way door for the customer — replying to a closed ticket is refused, so they would have to open a new one — which is why automatic closing ships off rather than at some sensible-looking number.

Retention runs in two passes, and the reason is money. On your schedule the sweep blanks every column that carries words — the drafted and sent text, the citations, the tool calls, and the questions and answers on your administrators' own assistant conversations. Only then, and only for a customer's turns, is the row itself removed, and only once it is older than both your cutoff and the first of the current month: the monthly cap sums the cost on those rows, so deleting a priced turn from inside the current month would hand its spend back to the ceiling. On the default ninety days the two passes coincide and you will never see the difference; on a short retention the row survives, emptied, until the month it was billed in has passed.

The admin assistant's side is the same bargain stated once: the costed turn row stays for good so it can never refund allowance, its conversation is deleted on your cutoff, and nothing readable outlives the schedule you set.

What leaves this install

Share the questions customers asked, so the gap analysis can be compared against other installs.

Off by default. It shares the questions, never the conversations, the customer or anything identifying — but it is your customers' words and the decision to send them anywhere is yours to make deliberately.

Regardless of this switch, every field that could carry a password, an API key, a wallet address or a KYC document is stripped before anything reaches a model.