HaloGuard 2.0: An Open-Weights Constitutional Output Guard for Multilingual Response Safety
Abstract
HaloGuard 2.0 is a lightweight streaming output guard that assigns per-token safety probabilities in a single forward pass, using counterfactual training to avoid prompt shortcuts and achieving high macro F1 with far fewer parameters than full-response alternatives.
An input guard decides whether a request reaches the model, but never sees what the model says. Harm that emerges during generation, because a jailbreak passed the input layer or a benign request drifted into operational detail, is visible only on the output side and only as tokens arrive. We present HaloGuard 2.0, an open-weight streaming output guard that assigns a safe/unsafe probability to every response token in a single forward pass, so a deployment can stop the stream once harm is confirmed. The guard reuses the constitution of HaloGuard 1.0, our input guard, to organise a 478,532-response training corpus, and supervises each token from the point where the response becomes harmful. We find that a guard trained on conventionally shaped data learns a shortcut specific to streaming: it judges the prompt instead of the response, and handles only 13.9% of matched safe/unsafe response pairs correctly. We correct this with a second phase on 106,043 counterfactual responses built around the base guard's own failure modes, and release the equal-weight average of the base and corrective models. On six English response-safety benchmarks, HaloGuard 2.0-0.8B reaches a macro F1 of 83.6 (83.3 on held-out halves of the decision-rule search), up from 72.8, with 38% fewer false positives. It matches the strongest full-response guards with 5-10x fewer parameters and is 2.6 points above the strongest streaming guard, Qwen3Guard-Stream-4B. A multilingual variant, HaloGuard 2.0-Poly-0.8B, trained on PolyGuardMix, reaches 83.1 F1 on the response labels of PolyGuardPrompts across 17 languages, 5.0 points above the strongest baseline. On one H100 the guard costs 0.37 ms per token per stream when moderating 64 concurrent responses. Both guards are hardened continuously through the weekly red-teaming protocol of HaloGuard 1.0, extended here to the output layer.
Community
Authors here. HaloGuard 2.0 is a streaming output guard: like Qwen3Guard-Stream, it gives a safe/unsafe probability at every token of a model's reply, so you can stop the stream when it turns harmful. On the paper's benchmarks it comes out ahead of every Qwen3Guard-Stream size.
All three models are 0.8B and Apache 2.0: https://huggingface.co/collections/astroware/haloguard-20
HaloGuard2-Stream-0.8B, English: 83.6 avg F1 on six response-safety benchmarks, 2.6 above Qwen3Guard-Stream-4B.
HaloGuard2-MultiStream-0.8B, 17 languages: 83.1 F1 on PolyGuardPrompts, 5.0 above the strongest baseline.
HaloGuard2-Gen-0.8B, input guard: prompts up to 8,192 tokens, 90.9 avg F1 across seven prompt-safety benchmarks.
Questions and failure cases welcome.
Get this paper in your agent:
hf papers read 2611.02134 Don't have the latest CLI?
curl -LsSf https://hf.co/cli/install.sh | bash Models citing this paper 0
No model linking this paper
Datasets citing this paper 0
No dataset linking this paper
Spaces citing this paper 0
No Space linking this paper
Collections including this paper 0
No Collection including this paper