# 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.

- Canonical: https://discordguides.blog/blog/discord-automod-not-working
- Published: 2026-09-18
- Author: The Manual desk
- Facts checked: 2026-08-30
- Sources:
  - Discord developer docs — Auto Moderation (https://docs.discord.com/developers/resources/auto-moderation) — checked 2026-08-30
  - Discord Support — AutoMod FAQ (https://support.discord.com/hc/en-us/articles/4421269296535) — checked 2026-08-30
- Publication: The Manual, an independent site not affiliated with Discord Inc.

---
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](/blog/set-up-discord-automod), 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](/blog/protect-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:

1. **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.
2. **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](/blog/discord-bot-not-responding).
3. **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.
4. **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

1. **From a second account with no roles**, in a channel with no exemption, post the exact string
   the rule should catch.
2. Confirm it is blocked, and confirm the alert lands in your log channel.
3. 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.