Security engine
Twenty detectors. Four stages. No single one can act.
The engine depends on neither Discord nor the database, which is what makes testing a rule structurally incapable of touching your server rather than merely careful about it.
The detectors
Every one has a ceiling it cannot exceed.
Each detector contributes evidence up to a limit, and no further, however much it found. Where those limits sit is visible and tunable in your dashboard. It is not published here, for reasons that should be obvious.
Content
What the message actually says, once any disguise has been undone.
Behaviour
What this account has been doing lately. Editing a message is never counted as flooding.
Identity
Who is speaking. Never able to reach a verdict on its own.
External
Optional, off until you turn it on, and never consulted when you are only testing.
Safety of the platform itself
The engine has to survive what you configure.
A security tool that can be brought down by its own rules is a liability. These are the defences that point inward.
Your rules cannot hang your server
Patterns are checked for dangerous constructions before they can be saved, then run isolated and time bounded. One that would otherwise run away is stopped, and Wardnox can tell you which one it was rather than leaving you to bisect your own ruleset.
Domains are matched properly
A familiar name buried inside an unfamiliar domain is not that domain. Wardnox resolves what a domain genuinely is rather than comparing the end of a string, which is the single most common way naive filters get walked past.
A rule that misfires pulls itself
Wardnox watches how often each of your rules fires relative to what it is seeing. One that starts behaving like a mistake stops enforcing and your moderators are notified. It keeps logging, because silently disabling a rule somebody wrote is its own kind of surprise.
Following a link cannot be turned inward
When link resolution is enabled, every protection applies to every hop rather than only the first, and Wardnox refuses to be aimed at anything on your own infrastructure. It never reads, parses or executes what it finds. It only wants to know where the link ended up.
One failure is not an outage
Each stage settles independently. Something timing out or throwing removes that one opinion and nothing else. The message is still assessed, and the bot never falls over because Discord said no.
Your servers cannot see each other
Every stored row belongs to exactly one server, and every read is filtered by that on the row being read rather than somewhere upstream. The boundary is covered by tests that run against a real database, not by convention.
Optional, and doubly gated
Nothing leaves by default.
Threat intelligence and AI review are both off, and each needs an environment variable and a server setting before a single byte goes anywhere. When they are on, what leaves is the minimum needed to ask the question, and never user IDs, usernames, channel IDs or guild IDs.
The reputation lookups are read only and never submit anything for scanning, because submitting would publish a link from a private Discord server to a public analysis service. Several independent limits hold the AI stage down, and they are enforced outside it: a provider should not be trusted to police its own influence.

See it assess your own traffic.
Monitor mode first, always. Join the whitelist and we will be in touch when your server can be added.
