Discord API · error code

Discord error 4014: Disallowed intent(s)

ConfigurationGateway close codes (4000-4014)

Last verified against Discord Developer Docs - Opcodes and status codes

What Discord returns
You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not enabled or are not approved for.

What error 4014 means

Your Identify payload requested a privileged intent that your application is not allowed to use, and Discord refused the connection. There are three privileged intents: GUILD_MEMBERS (Server Members, 1 << 1), GUILD_PRESENCES (Presence, 1 << 8) and MESSAGE_CONTENT (Message Content, 1 << 15). Unlike the rest, these must be explicitly switched on per application in the Developer Portal: open your application, go to the Bot page, scroll to Privileged Gateway Intents, and toggle the ones you need. Requesting any of them in code while the toggle is off produces 4014 every time. The code is not reconnectable; reconnect loops only rack up failed identifies.

The rule has a second tier. Apps with fewer than 10,000 users can enable privileged intents freely with the toggles. Once an app exceeds 10,000 unique users across its servers, it must go through verification and be approved for each privileged intent with a use-case justification; the toggle alone is no longer enough, and an unapproved intent also yields 4014. (Older guides talk about a 100-server threshold; the current docs phrase it in users, so check the Developer Portal for what applies to your app.)

The Message Content intent is the one that bites most. Without it, message events still arrive, but content, embeds, attachments and components are empty unless the bot is mentioned, the message is a DM, or the bot authored it. Many bots therefore look "online but silent" rather than crashing; the ones that crash are those that request the intent without enabling it.

While an approval is pending, do not leave the intent in the Identify payload: every failed connect consumes a session start from your daily session_start_limit budget (1,000 identifies per day for most bots), and a supervisor that restarts the process on failure will burn through it and lock the bot out entirely. Ship without the privileged intent, or gate the feature that needs it, until the toggle or the approval is in place. If the toggle looks enabled and 4014 persists, you are almost always looking at the wrong application: compare the application ID on the portal page against GET /oauth2/applications/@me for the token you deploy.

What it looks like

// WebSocket close frame
code: 4014
reason: "Disallowed intent(s)."

// discord.js
Error [DisallowedIntents]: Privileged intent provided is not enabled or whitelisted.

// discord.py
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal...

Why it happens

  • Message Content, Server Members or Presence requested in code but not toggled on in Developer Portal > Bot > Privileged Gateway Intents
  • Template or tutorial code requesting all intents (Intents.all(), GatewayIntentBits everything) on an app with toggles off
  • App above the verification threshold that enabled the toggle but has not been approved for that intent
  • Token belongs to a different application than the one where you enabled the toggles
  • Intent removed by Discord after a review or policy change

How to fix Discord error 4014

  1. 1Decide which privileged intents the bot genuinely needs; remove the rest from the intents list
  2. 2Developer Portal > your application > Bot > Privileged Gateway Intents: enable Message Content Intent, Server Members Intent and/or Presence Intent, then Save Changes
  3. 3Restart the bot; intents are sent at Identify, so a running process will not pick up the change
  4. 4If the app is past the verification threshold, submit the privileged intent request with a clear use case and wait for approval before re-adding the intent
  5. 5Confirm the Developer Portal app matches the token in use (compare application IDs)

How to stop it recurring

Request the minimum intents. Use slash commands and interactions instead of reading message content where you can; they deliver user input without the Message Content intent. Document which privileged intents your bot needs and why, keep the Developer Portal toggles in your deployment checklist, and plan the verification and intent approval process as you approach the threshold. The full walkthrough is in Discord bot not responding.

The three privileged-intent rows, the review threshold and the identify budget are collected on the Discord limits page.

Official reference: Discord Developer Docs - Opcodes and status codes. See all Discord error codes or the Discord limits and quotas.

Related codes

Error 4014 - quick answers

What does Discord error 4014 mean?

Your Identify payload requested a privileged intent that your application is not allowed to use, and Discord refused the connection. There are three privileged intents: GUILD_MEMBERS (Server Members, 1 << 1), GUILD_PRESENCES (Presence, 1 << 8) and MESSAGE_CONTENT (Message Content, 1 << 15).

How do I fix Discord error 4014?

1. Decide which privileged intents the bot genuinely needs; remove the rest from the intents list 2. Developer Portal > your application > Bot > Privileged Gateway Intents: enable Message Content Intent, Server Members Intent and/or Presence Intent, then Save Changes 3. Restart the bot; intents are sent at Identify, so a running process will not pick up the change 4. If the app is past the verification threshold, submit the privileged intent request with a clear use case…

Stop debugging Discord by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.