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

0.17PaxmodGuard0.07Qwen3Guard-0.6B0.13Qwen3Guard-4B0.13Qwen3Guard-8B0.19ShieldGemma-9B0.08Granite Guardian 3.3 8B0.06Llama Guard 3 8B0.02GLiGuard

Children's game chat, Game B

Unseen real chat. AUPRC. Higher is better

0.12PaxmodGuard0.15Qwen3Guard-0.6B0.38Qwen3Guard-4B0.28Qwen3Guard-8B0.16ShieldGemma-9B0.15Granite Guardian 3.3 8B0.03Llama Guard 3 8B0.04GLiGuard

Over-blocking

Safe prompts that only sound harmful, wrongly blocked at default settings (OR-Bench-Hard). Lower is better

17%PaxmodGuard49%Qwen3Guard-0.6B38%Qwen3Guard-8B89%Granite Guardian 3.3 8B82%gpt-oss-safeguard-20B

Model size

Parameters, billions. Small enough to run on a CPU

0.3BPaxmodGuard0.6BQwen3Guard-0.6B4BQwen3Guard-4B8BQwen3Guard-8B9BShieldGemma-9B8BGranite Guardian 3.3 8B8BLlama Guard 3 8B0.3BGLiGuard

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.

Or try one

Signals (grey) are early warning signs such as asking a child's age or whether they are alone. They are scored every time but only count when an app turns them on.

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-harmSuicidal thoughts, plans or self-injury, including disguised spellings. For an AI's replies: encouraging it.
    Sexual · Sexual + minorSexual content or roleplay, and any sexual content involving someone under 18.
    Grooming · Suspected groomingWhole conversations: an older person building a relationship with a minor, or the pattern of tactics when ages are hidden.
    Grooming tacticsEach 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 questionsThe writer shows they are a minor (an age, a school year, parents' rules), or someone is asking for an age.
    Another app · Meeting · Photos · SextortionMoving 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 reportsA child saying they are being hurt at home, or reporting someone who targeted them.
    Bullying · Threats · Hate · SwearingAbuse meant to really hurt. Everyday trash talk and game banter are not bullying.
    Personal info · Scams · SpamContact or location details, phishing and fake giveaways, link spam.
    Companion behaviourJailbreaks, prompt injection, an AI claiming to be human or a professional, fostering dependency, manipulation, or going along with real harm.
    Weapons, drugs, crime, extremismRequests 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

    1 · WHAT IT READSA yo ur good at this gameB thxA how old r uB 13A cool im 19A ur parents home rn?B no at workA dont tell ur mom we talk okA add me on snapa message, a message with earlierones, or a whole chat2 · TAG WHO SAID WHAT[CONVERSATION][CHAT:A] yo ur good at this ga…[CHAT:B] thx[CHAT:A] how old r u[CHAT:B] 13[CHAT:A] cool im 19[CHAT:A] ur parents home rn?[CHAT:B] no at work[CHAT:A] dont tell ur mom we t…[CHAT:A] add me on snap[USER] and [AI] for companions,[TARGET] marks the one message to judge3 · ENCODER (mmBERT, 307M)local attention, 128 tokensglobal, every 3rd layer22 layers · up to 1,024 tokens · 256k-tokenmultilingual vocabulary4 · 48 SCORESUnder 18 100Checks if alone 100Asks for secrecy 98Another app 98grooming 95Hate 0real scores for this example;mean-pool, linear, sigmoid5 · WHAT YOUR APP DOES WITH ITSelf-harmsend the crisis replyJailbreak, sexual + minorblock or regenerateGrooming, abuse at homesend to a personEverything elseyour rules, per labelOne forward pass scores every label at once, which is why it fits on a CPU. The same model reads companion chat, game chat,a single message, a message with the ones before it, or a whole conversation; only the tags change.

    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 chatAUPRCROC-AUC
    Game A: PaxmodGuard Cloud0.280.87
    Game A: PaxmodGuard (open)0.170.85
    Game A: best other model0.190.80
    Game B: PaxmodGuard Cloud0.220.98
    Game B: PaxmodGuard (open)0.120.87
    Game B: best other model0.380.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