Paxmod Research · open model
PaxmodGuard: a 0.3B guardrail that out-ranks guard models 30x its size on kids' chat
On real chat from children's games, PaxmodGuard ranks harmful messages better than every guard model we tested, up to 30 times its size (ROC-AUC 0.85 and 0.87, against at most 0.80 and 0.79), and wrongly blocks the fewest safe messages: 17%, against 38% to 89%. Open weights, on an ordinary CPU.
October 2026 · Paxmod Research
Today we are releasing PaxmodGuard, a small, multilingual open-source guardrail for AI companions, characters and kids' chat, under Apache-2.0. It sits on both sides of the conversation: it checks what a person sends before your AI or other players see it, and what your AI says back before it reaches the person. It reads a single message, a message with the ones before it, or a whole conversation, scores 48 labels at once, and runs on an ordinary CPU.
Most guardrails are built to judge prompts sent to an assistant. Put them on a companion app or a kids' game and they flag roleplay, jokes and trash talk, while missing what matters there: a child giving their age, a request to move to another app, an adult asking whether the parents are home. PaxmodGuard is built for that chat, from what Paxmod has learned moderating more than a million messages a day.
Children's game chat, Game A
Unseen real chat. AUPRC: how well scores rank harmful above harmless. Higher is better
Children's game chat, Game B
Unseen real chat. AUPRC. Higher is better
Over-blocking
Safe prompts that only sound harmful, wrongly blocked at default settings (OR-Bench-Hard). Lower is better
Model size
Parameters, billions. Small enough to run on a CPU
All models were run by us on the same inputs. Game A and Game B are about 52,685 messages of real chat from two children's online games, stored after our training data was frozen, so no model saw them; messages were labelled to our written policy, which favours a model trained on that policy. AUPRC measures how well a model's scores rank harmful messages above harmless ones, whatever threshold you choose. OR-Bench-Hard is independent.
Try it
Score any message, or a whole conversation, with PaxmodGuard. Every label is shown with its score and the threshold it has to cross.
PaxmodGuard
Our best model, behind a Paxmod key
Score a message
Key features
Built for kids' chat
On real chat from two children's games that no model had seen, PaxmodGuard ranks harmful messages above harmless ones better than any other model we tested: ROC-AUC 0.85 and 0.87, against at most 0.80 and 0.79 for models up to 30 times its size. General guard models built for assistant prompts transfer poorly to this chat; a classifier of the same size and design scored 0.02 AUPRC on Game A, against 0.17.
Built not to over-block
False alarms are the main reason teams switch moderation off. On safe prompts that only sound harmful, PaxmodGuard wrongly blocks 17% at its default settings; the general guard models we tested block between 38% and 89%. Roleplay, game deaths, breeding a horse and everyday insults are not harm.
Grooming, one tactic at a time
Grooming is rarely one message. It is a pattern: checking whether a child is alone, asking them to keep a secret, setting them against their parents, moving them to another app. PaxmodGuard labels each of those moves on its own, so they can be seen early, before anything sexual is said, and it labels the conversation as suspected grooming when they add up.
It reads the conversation
The same model takes four kinds of input. Each turn is tagged with who wrote it, so nothing about the model changes between them.
[USER] / [AI]
Companion chat
What a person sends your companion, and what it says back. Catches self-harm, minors, jailbreaks, and a companion that claims to be human or fosters dependency.
[CHAT:A]
People to people
Game and community chat between real players, where trash talk is normal and an age, a secret or another app is the warning sign.
[TARGET]
With earlier messages
Judges one message using the ones before it, so “yes”, “do it” and roleplay that turns sexual are read for what they are.
[CONVERSATION]
A whole conversation
Reads a stretch of chat, both sides, and labels what happens across it, including patterns no single message shows.
Small enough for a CPU
307 million parameters and milliseconds per message on two ordinary CPU threads (7 ms for a short message). Every label is scored in one pass instead of an answer being generated word by word, so the guardrail fits inside a chat turn on the server you already have.
Labels for companions and kids
| Self-harm | Suicidal thoughts, plans or self-injury, including disguised spellings. For an AI's replies: encouraging it. |
| Sexual · Sexual + minor | Sexual content or roleplay, and any sexual content involving someone under 18. |
| Grooming · Suspected grooming | Whole conversations: an older person building a relationship with a minor, or the pattern of tactics when ages are hidden. |
| Grooming tactics | Each warning sign on its own: checking whether a child is alone or watched, asking for secrecy, driving a wedge between a child and their family, and “you're so mature for your age”. |
| Under 18 · Age questions | The writer shows they are a minor (an age, a school year, parents' rules), or someone is asking for an age. |
| Another app · Meeting · Photos · Sextortion | Moving a child to another app, arranging to meet, asking for pictures, and threats to share images unless they pay or comply. |
| Abuse at home · Predator reports | A child saying they are being hurt at home, or reporting someone who targeted them. |
| Bullying · Threats · Hate · Swearing | Abuse meant to really hurt. Everyday trash talk and game banter are not bullying. |
| Personal info · Scams · Spam | Contact or location details, phishing and fake giveaways, link spam. |
| Companion behaviour | Jailbreaks, prompt injection, an AI claiming to be human or a professional, fostering dependency, manipulation, or going along with real harm. |
| Weapons, drugs, crime, extremism | Requests for or instructions in serious real-world harm. |
Multilingual
PaxmodGuard is built on mmBERT, a multilingual encoder, and trained on chat in many languages, including copies disguised the way people dodge filters.
How it works
PaxmodGuard Cloud
The open model is trained on public and synthetic data. Paxmod's cloud version uses the same architecture, trained additionally on proprietary data from real kids' games and companion apps. It is the model behind a Paxmod key, and it is where PaxmodGuard is strongest:
| Unseen children's game chat | AUPRC | ROC-AUC |
|---|---|---|
| Game A: PaxmodGuard Cloud | 0.28 | 0.87 |
| Game A: PaxmodGuard (open) | 0.17 | 0.85 |
| Game A: best other model | 0.19 | 0.80 |
| Game B: PaxmodGuard Cloud | 0.22 | 0.98 |
| Game B: PaxmodGuard (open) | 0.12 | 0.87 |
| Game B: best other model | 0.38 | 0.79 |
"Best other model" is the best score among Qwen3Guard (0.6B, 4B, 8B), ShieldGemma, Granite Guardian, Llama Guard 3 and GLiGuard on each measure. Harm is about 1% of real chat, so AUPRC is low for every model; random scoring would get about 0.01.
Develop with PaxmodGuard
Install from npm or PyPI. The model downloads once and every check runs locally; no message leaves your server. Drop it in as a guardrail in the framework you already use: Vercel AI SDK middleware, an OpenAI Agents SDK guardrail, a Mastra processor or LangChain middleware, or run it as a self-hosted HTTP service for any other language.
npm i @paxmod/guard · pip install paxmod-guard
import { createGuard } from "@paxmod/guard";
const guard = await createGuard(); // downloads the model once, then runs on your CPU
// a person, to your companion: before your LLM sees it
const input = await guard.checkInput(userMessage);
if (input.crisisReply) return input.crisisReply;
// a player, read with the messages before it
await guard.checkChat(message, { context: earlierTurns });
// a whole DM, both sides
await guard.checkConversation(turns);Data
PaxmodGuard is trained on publicly available and synthetic data, labelled against our written safety policy.
Training, evaluation method and full results are in the technical report (PDF).
Limits
- On broad public benchmarks, larger general guard models rank better: average AUPRC 0.81 across eight public sets, against 0.91 for Qwen3Guard-0.6B and 0.92 for Qwen3Guard-8B. Those sets count as unsafe much that our policy allows; the opt-in strict mode follows their broader definition (0.82).
- Real kids' chat is hard. No model we tested, this one included, reaches 90% precision at a useful catch rate on it. Use the scores to rank and route messages to people, not as a sole decision.
- Grooming builds over days and many messages. A single message carries only the tactic signals; check whole conversations to see the pattern.
- Most training data is English and Spanish. Other languages are covered but less tested.
- It checks a message after it is written, so on its own it cannot undo a first harmful message that was already shown.
- Rare harms such as extremism and dangerous challenges have few training examples.
- It is a guardrail, not a moderator. Serious cases need a person.
What's next
Grooming detection across sessions, more languages, and a streaming mode that checks a reply as it is generated. Paxmod's cloud tier adds the cloud model, conversation-level risk across days, a review console and compliance reports for the companion chatbot laws.
- Free and open: weights under Apache-2.0
- Runs on your servers; nothing leaves
- A Paxmod key adds PaxmodGuard Cloud and the console