On this page
GuardrailsUpdated 12 Aug 2026
How the guardrails work
Fifteen postflight checks, the groundedness verifier, Dry Run, and what Activity shows.
The guardrail engine is why Formo Support can sit on a live store without inventing order numbers. It runs on every assistant turn before the visitor sees a reply.
Preflight (before the model)#
- Length cap (2,000 characters per message)
- Unicode normalisation and zero-width stripping
- Prompt-injection screen: flag and reframe, never a hard block
- Conversation length cap (30 messages)
Postflight (15 checks)#
Any block routes to the human path. Check 15 is a warning only.
- The assistant explicitly requested a human.
- Response empty or under 20 characters.
- Model confidence below your threshold.
- Groundedness below your threshold (verifier).
- Verifier returned unsupported claims.
- Order numbers in the reply that are not in tool evidence.
- Tracking numbers not present in tool evidence.
- A specific date asserted when no tool was called.
- Refund offered above max refund £.
- Discount offered above max discount %.
- Banned phrase used.
- Link to a domain outside the allow-list.
- Assistant scaffolding leaked (“as an AI”, “system prompt”).
- Unfilled placeholder text (
[insert…],{{…}}). - Reply exceeds max reply words (warning).
Groundedness verifier#
A second, cheaper call on the same provider (your fast model) scores the draft against this turn’s tool evidence. If no tools ran, it checks policy claims against your written policy text instead.
Dry Run#
Generation still happens. The visitor sees copy.dryRunNotice. Activity stores the draft, tool JSON, and which checks fired. This is how you watch it for a week before trusting Live.
Activity is the proof#
Open Dashboard → Activity. Each conversation shows outcome (Answered / Escalated / Blocked / Dry run). The detail drawer lists:
- full transcript
- every tool name and result
- failures and warnings by check number
- token counts and estimated GBP cost
If a reply was blocked, you can see exactly which rule fired.