I'm trying to setup discord integration with openclaw following https://docs.openclaw.ai/channels/discord#cli-%2F-config but I get this error:
startup [default] deploy-rest:put:error 3140ms path=/applications/1467524753215459338/commands requestMs=543 error=Maximum number of application commands reached (100). (status=400, code=30032, body={"message":"Maximum number of application commands reached (100).","code":30032})
03:25:42 [discord] discord: failed to deploy native commands: Maximum number of application commands reached (100). (status=400, code=30032, body={"message":"Maximum number of application commands reached (100).","code":30032})
Web connection closed (status 408). Retry 1/12 in 2.48s… (status=408 Request Time-out Connection was lost)
[tools] sessions_spawn failed: sessions_spawn does not support "channel". Use "message" or "sessions_send" for channel delivery. raw_params={"task":"Connect to the Discord bot and manage it.","runtime":"subagent","channel":"discord","label":"discord-bot-connection"}
03:29:04 [gateway] security audit: device access upgrade requested reason=scope-upgrade device=4765ec4caa38735b0e26815a6c0b940e31b2645f3c4ff58e6842dfedede6803e ip=unknown-ip auth=token roleFrom=operator roleTo=operator scopesFrom=operator.read scopesTo=operator.admin client=cli conn=f2512a54-a539-4b52-ab8c-9d69706ac00f
03:29:04 gateway connect failed: GatewayClientRequestError: pairing required
#Discord setup
1 messages · Page 1 of 1 (latest)
Let me check the local docs and the actual Discord config behavior so I don’t make up keys.
That first error is Discord’s application command cap, not a bad token.
/applications/<appId>/commands is the global slash-command registry for that bot app, and Discord caps it at 100. So OpenClaw is trying to register native commands, but that app already hit the limit.
Most likely causes:
- stale old commands on that same Discord application
- too many native skill/plugin commands
Try this first:
{
channels: {
discord: {
commands: {
nativeSkills: false,
},
},
},
}
Then restart the gateway.
If it still fails, clear the old Discord native commands once:
{
channels: {
discord: {
commands: {
native: false,
},
},
},
}
Restart, then switch to:
{
channels: {
discord: {
commands: {
native: true,
nativeSkills: false,
},
},
},
}
and restart again.
If you do not care about Discord slash UI, you can also just leave native: false.
Relevant docs:
Also, the other two errors are separate:
sessions_spawn does not support "channel": unrelated to Discord bot registrationpairing required: your client/device asked for a scope upgrade (operator.read->operator.admin) and that approval is still pending
For the pairing issue:
openclaw devices list
openclaw devices approve <requestId>
Docs:
One more thing before deeper debugging: what does openclaw --version show?
the bot says this:The Discord bot session is isolated and can’t be reached directly. Would you like me to open a paired subagent to manage the bot, or should we handle it another way?
Yeah, ignore that one. You do not need a paired subagent for initial Discord setup.
That reply is basically the agent taking the wrong path before Discord is fully working. The real fixes are still the same:
-
Fix the Discord command-cap issue
- Set
channels.discord.commands.nativeSkills: false - Restart gateway
- If it still errors, set
channels.discord.commands.native: falsefor one restart to clear old registered commands, then turnnative: trueback on withnativeSkills: false
- Set
-
Approve the local device scope upgrade
openclaw devices list openclaw devices approve <requestId> -
Then do normal Discord pairing
- DM your bot
- get the pairing code
- approve it with:
openclaw pairing list discord openclaw pairing approve discord <CODE>
So, short answer: handle it another way, not with a subagent.
Docs:
- https://docs.openclaw.ai/channels/discord
- https://docs.openclaw.ai/tools/slash-commands
- https://docs.openclaw.ai/cli/devices
If you want, paste:
openclaw --version- your
commandsblock
- your
channels.discordblock
(redact the token), and I’ll sanity-check the exact config.
the DM and whatsapp arent responding but the openclaw tui is.
I’m going to check the channel troubleshooting docs so I can give you the shortest real debug path, not guesses.
That actually helps a lot.
If the TUI responds, the core agent/gateway/model path is alive. This is now very likely a channel auth/pairing/config problem, not a general OpenClaw failure.
A couple important nuances:
- The Discord
30032error only means slash command registration hit Discord’s 100-command cap.- annoying, yes
- but it should not by itself stop normal DM replies
- The
pairing requiredline you pasted is specifically forclient=cli, so that one is about your CLI/device auth upgrade, not necessarily the Discord DM sender
Shortest debug path
Please run these and paste the output:
openclaw --version
openclaw channels status --probe
openclaw pairing list discord
openclaw pairing list whatsapp
If you see pending pairing entries
Approve them:
openclaw pairing approve discord <CODE>
openclaw pairing approve whatsapp <CODE>
If CLI still says pairing required
That is the separate device-auth issue:
openclaw devices list
openclaw devices approve <requestId>
For the Discord slash-command cap
Keep or add this:
{
channels: {
discord: {
commands: {
nativeSkills: false,
},
},
},
}
If needed, do one cleanup restart with native: false, then re-enable native: true + nativeSkills: false.
One extra WhatsApp gotcha
If you’re using personal-number/self-chat WhatsApp, and pairing list whatsapp is empty, paste your redacted channels.whatsapp block too. Self-chat usually needs your own number in allowFrom.
Docs: