Fixes
Why Discord AutoMod is not working
Nine causes in likelihood order. The first is an exemption you set yourself, and the second is a wildcard that does not mean what it looks like.
- Time
- 6 min
- Topic
- Fixes
- Published
- 18 September 2026
Check the rule’s exempt roles and exempt channels before anything else. A rule that ignores your test message is usually a rule you exempted your own staff role from, and testing from a moderator account will never reveal it. Test from a second account with no roles, in a channel that is not on the exemption list.
The rest of the causes follow, in the order they are usually the answer.
Before you start: Discord requires the MANAGE_GUILD permission — Manage Server — “to access
all Auto Moderation resources.” Without it you cannot see or edit rules at all.
First: which AutoMod do you mean?
Two different things share the name, and half of all reports about one are really about the other.
Discord’s AutoMod is built into the platform. It runs at Server Settings, then AutoMod, is configured by you rather than by any bot, and inspects a message before it is delivered. It keeps working when every bot in your server is offline.
A bot’s auto-moderation is a bot reading messages after they are posted and acting on them. It has its own dashboard, its own rules, and it stops entirely when the bot does.
If your rules live on a bot’s website, the sections below about wildcards and rule limits do not apply to you — skip to If it is a bot’s auto-moderation.
Are you exempt from your own rule?
Every AutoMod rule carries an exempt-role list and an exempt-channel list. Discord allows a “Maximum of 20” exempt roles and a “Maximum of 50” exempt channels per rule.
Exempting the moderator role is normal and correct — moderators quote rule-breaking content when discussing it — but it makes an administrator the worst possible person to test with.
The check: open the rule, read both exemption lists, then post the test message from an account holding none of those roles, in a channel on neither list.
Is the wildcard doing something other than what it looks like?
This is the second commonest cause and the one that produces both silent failures and spectacular false positives.
Discord’s syntax, quoted from its documentation: “Use the wildcard symbol (*) at the beginning or
end of a keyword to define how it should be matched.”
| You write | It matches |
|---|---|
cat | The whole word only, surrounded by whitespace |
cat* | Words beginning with it — catalogue, catapult |
*cat | Words ending with it — bobcat, muscat |
*cat* | Anywhere in the message — including education |
The bare form is a whole-word match. So a rule containing scam does not catch scammer, and
a reader who expected substring matching concludes the filter is broken. Add scam* if that is
what you meant.
The reverse mistake is worse. *ass* matches class, passage, assignment and embassy, and
you will hear about it within the hour.
Is the rule actually enabled?
A rule can be saved and left off. Open Server Settings, then AutoMod, and confirm the rule shows as enabled rather than merely existing.
Two related traps:
- A rule created by a bot on your behalf appears in the same list. If you disable it in Discord and the bot later re-enables it from its own config, the two will fight.
- A rule edited but not saved. Discord’s AutoMod editor does not always make an unsaved state obvious.
Is the action set to something you can see?
A rule with only “Send an alert message” configured does exactly that and lets the message through. Nothing is blocked, so from a member’s point of view the filter is not working.
For a rule you want to enforce, set Block message. Add the alert channel as well, not instead — the alert channel is what makes AutoMod maintainable, because it is the only way to learn which rule is too aggressive before your members tell you.
Timeouts are a third, separate action. A rule can block without timing out, and usually should until you have watched it for a week.
Have you hit Discord’s rule limits?
Discord caps AutoMod rules per server by type, and the cap on custom keyword rules is low enough to reach:
| Rule type | Maximum per server |
|---|---|
| Keyword (custom) | 6 |
| Spam | 1 |
| Keyword preset | 1 |
| Mention spam | 1 |
| Member profile | 1 |
Six custom keyword rules is the one people hit. When you cannot add another, consolidate: one rule holds many keywords, so several rules with the same action and the same exemptions should be one rule.
Are you testing something AutoMod does not read?
AutoMod acts on two events, and Discord names them precisely: MESSAGE_SEND, “when a member sends
or edits a message in the guild”, and MEMBER_UPDATE, “when a member edits their profile.”
That leaves real gaps, and each of them is a regular “AutoMod is broken” report:
- Filenames and image contents. A blocked word in an attached image passes.
- Messages from bots and webhooks. A relayed message is not a member message.
- Channel names, thread titles and topics.
- Voice channel activity of any kind.
Member profile rules are their own separate rule type, so a keyword rule built for messages does not automatically screen nicknames. Create the member-profile rule explicitly if that is what you need.
Is a raid the actual problem?
AutoMod filters content. It does not watch the door.
A hundred accounts joining in two minutes trips nothing in AutoMod, because until they post, no message event has occurred — and if they post one line each, no per-message rule sees a pattern. That needs join-rate detection, which is a different mechanism entirely; see how to protect a server against raids.
Mention spam is the partial exception. It is worth enabling with a limit around five unique mentions, because raid messages routinely carry twenty or more.
If it is a bot’s auto-moderation
Different mechanism, different failure modes, four causes:
- The feature is switched off. Bots that ship many systems usually ship them off. Check the bot’s master toggle for its moderation module, and check that the individual rule is enabled.
- The bot cannot see the channel. No View Channel means no message events, so nothing is filtered and nothing is reported. This is the same cause behind most cases of a bot not responding.
- The bot cannot act. Deleting a message needs Manage Messages; timing out needs Moderate Members; assigning a punishment role needs Manage Roles and a position above that role.
- The message content intent. A bot that cannot read message content cannot filter it. This affects prefix commands the same way and is a bot-side approval question, not something you can configure.
Vetox is a useful reference point for how the two layers are meant to fit together, because it runs both. Its own Auto-Mod carries eight rule types and four action types, with per-channel and per-role exclusions, and a subset of those rules is pushed into Discord’s native AutoMod so Discord blocks the message before it is posted rather than the bot deleting it afterwards. The rest are matched by the bot. Everything except the escalation counter is available on the free tier — Automated Actions, which counts violations across rules inside a rolling window and applies an escalating punishment, is capped at 1 rule free and 50 on any paid plan.
The practical consequence for debugging: if a rule your bot pushed into Discord’s AutoMod stops matching, check it in Discord’s AutoMod page, not only in the bot’s dashboard. The two are looking at the same rule from opposite ends.
Test it properly in two minutes
- From a second account with no roles, in a channel with no exemption, post the exact string the rule should catch.
- Confirm it is blocked, and confirm the alert lands in your log channel.
- Post something that nearly matches — one letter different, or the word inside a longer word — and confirm it is not blocked.
Step 3 is the one people skip, and it is the one that catches a wildcard doing more than you intended.
Sources and verification
Checked