#No response from Discord, stuck on "awaiting gateway readiness"
1 messages · Page 1 of 1 (latest)
Yep, drop it here.
If you’re stuck on discord client initialized; awaiting gateway readiness, that usually means the bot got far enough to start the Discord client, but the Discord gateway never reached READY, so this is more of a startup/connect issue than a normal pairing/routing issue.
Please paste these, with secrets redacted:
openclaw --version
openclaw status --all
openclaw gateway status
openclaw channels status --probe
openclaw pairing list discord
openclaw doctor
Then do one fresh restart and grab the Discord-related log lines:
openclaw gateway restart
openclaw logs --follow
Also share your sanitized channels.discord config block, but do not post your bot token.
Quick things to double-check right now in Discord Dev Portal:
- Message Content Intent = on
- Server Members Intent = on
- Bot invite has at least: View Channels, Send Messages, Read Message History
Docs I’m using:
If the output is huge, openclaw status --all plus the first Discord errors from openclaw logs --follow are the highest signal.
$ podman exec -it openclaw openclaw status --all
OpenClaw status --all
Overview
(shortened version from Claude)
Version: 2026.4.15 | OS: WSL2 Ubuntu | Node: 24.14.0 | Gateway: reachable (37ms)
Channels
│ Discord │ ON │ OK │ token config (sha256:0d3356dd · len 72) · accounts 1/1 │
│ default │ OK │ token:config │
- Discord default: enabled, configured, running, connected, in:3h ago, bot:@Dross, intents:content=limited, works
:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw models status; podman exec -it openclaw openclaw channels status --probe; podman exec -it openclaw openclaw gateway status
🦞 OpenClaw 2026.4.15 (unknown)
I'm not magic—I'm just extremely persistent with retries and coping strategies.
Config : ~/.openclaw/openclaw.json
Default: openrouter/meta-llama/llama-3.3-70b-instruct
Fallbacks (0): -
Image model: -
Image fallbacks (0): -
Aliases (1) : Gemma 3 27B -> meta-llama/llama-3.3-70b-instruct
Configured models (1): meta-llama/llama-3.3-70b-instruct
Auth overview
Auth store: ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env: off
Providers w/ OAuth/tokens (0): -
- openrouter effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openrouter:default=<token> | env=<token> | source=env: OPENROUTER_API_KEY
OAuth/token status
- none
🦞 OpenClaw 2026.4.15 (unknown)
Gateway reachable.
- Discord default: enabled, configured, running, connected, in:3h ago, bot:@Dross, token:config, intents:content=limited, works
Gateway: bind=auto (0.0.0.0), port=18789 (env/config)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Runtime: unknown (systemctl not available; systemd user services are required on Linux.)
RPC probe: ok
Listening: *:18789
This is actually good news. Based on what you pasted, the original awaiting gateway readiness problem does not look like the current blocker anymore.
What your output says now:
- Discord is connected
- probe says works
- bot identity is visible (
bot:@Dross) intents:content=limitedis fine for bots under 100 serverssystemctl not availablein WSL2/Podman is not the Discord problem here
So the next likely issue is routing/pairing/policy, not transport.
Two key questions:
- Are you testing in a DM with the bot, or in a server channel?
- Can you paste your sanitized
channels.discordconfig block?
Please redact the token.
Why I’m asking:
- DMs default to pairing mode
- Guild/server channels default to allowlist + mention gating
So it’s very common for Discord to look healthy, but still stay silent because the bot is waiting on one of those rules.
If you’re testing in DM
Run:
podman exec -it openclaw openclaw pairing list discord
If there’s a pending pairing request, approve it.
If you’re testing in a server
By default you usually need something like this:
{
channels: {
discord: {
groupPolicy: "allowlist",
guilds: {
"YOUR_SERVER_ID": {
requireMention: false,
users: ["YOUR_USER_ID"],
},
},
},
},
}
If that guild entry is missing, the bot can be fully connected and still ignore the server.
Best next step
Send:
- whether you’re testing DM or guild
- your sanitized
channels.discordblock - the result of:
podman exec -it openclaw openclaw pairing list discord
If you want, also do a live log tail, send one test message, and paste the matching Discord lines:
podman exec -it openclaw openclaw logs --follow
The logs will usually say something very direct like pairing pending, mention required, or allowlist blocked.
I did test multiple DMs to the bot ("@Dross hi")
Sanitized Block:
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec openclaw cat /home/node/.openclaw/openclaw.json
| python3 -c "
import json, sys
data = json.load(sys.stdin)
block = data.get('channels', {}).get('discord', {})
Redact any string values containing 'token' as a key
def redact(obj):
if isinstance(obj, dict):
return {k: '<redacted>' if 'token' in k.lower() else redact(v) for k, v in obj.items()}
return obj
print(json.dumps(redact(block), indent=2))
"
{
"enabled": true,
"token": "<redacted>"
}
black@Bishop:~/projects/openclaw-sandbox/openclaw$
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw pairing list discord
🦞 OpenClaw 2026.4.15 (unknown) — Automation with claws: minimal fuss, maximal pinch.
No pending discord pairing requests.
black@Bishop:~/projects/openclaw-sandbox/openclaw$
Nice, this narrows it down a lot.
With this config:
{
"enabled": true,
"token": "<redacted>"
}
Discord DMs should be using the default dmPolicy: "pairing".
So an unknown DM sender should create a pairing request. Since openclaw pairing list discord is empty, your DM is probably not being seen, or the pairing reply is failing before it reaches you.
A few concrete checks:
-
In the DM, just send
hi, not@Dross hi
In a DM, mentioning the bot is unnecessary. -
In Discord, on the shared server with the bot, make sure Server Privacy Settings → Direct Messages is enabled
That step is required in the docs for Discord pairing. -
Please do the highest-signal test now:
podman exec -it openclaw openclaw logs --follow
Then send one fresh DM to the bot and paste the Discord-related log lines.
The lines I care about most are things like:
discord pairing request sender=...discord pairing reply failed for ...
drop dm ...Blocked unauthorized discord sender ...
If you want one extra diagnostic, test outbound DM directly from OpenClaw to yourself:
podman exec -it openclaw openclaw message send --channel discord --target user:YOUR_USER_ID --message "discord outbound test"
If that works, outbound DM is fine and we focus on inbound handling. If that fails, it points more toward Discord DM/privacy setup.
Docs:
Paste the log snippet next, that should tell us exactly which branch this is.
- DM'd at 10:28 and 10:29
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw logs --follow
🦞 OpenClaw 2026.4.15 (unknown)
If you can describe it, I can probably automate it—or at least make it funnier.
Log file: /tmp/openclaw/openclaw-2026-04-19.log
02:24:49+00:00 info No pending discord pairing requests.
-
Direct messages is enabled.
-
See 1. Tried it again, same result.
-
What is the format of the user ID? My username is t1koSuave. Do I need to include the numbers?
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw message send --channel discord --target user:t1koSuave --message "discord outbound test"
🦞 OpenClaw 2026.4.15 (unknown)
Like having a senior engineer on call, except I don't bill hourly or sigh audibly.
│
◇
Error
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw logs --follow
🦞 OpenClaw 2026.4.15 (unknown) — You had me at 'openclaw gateway start.'
Log file: /tmp/openclaw/openclaw-2026-04-19.log
02:24:49+00:00 info No pending discord pairing requests.
02:35:31+00:00 error Error
Yep, you need the numeric Discord user ID, not t1koSuave.
How to get it:
- Discord → User Settings → Advanced → enable Developer Mode
- Right-click your avatar or username
- Click Copy User ID
It’ll look like a long number, usually 17 to 19 digits.
For the test command, the format is:
--target user:123456789012345678
So the full test is:
podman exec -it openclaw openclaw message send --channel discord --target user:YOUR_NUMERIC_USER_ID --message "discord outbound test"
Two useful notes:
openclaw logs --follownot showing anything new here does not necessarily mean much, the DM/pairing traces are often only visible in more detailed logging.- The outbound DM test is the cleanest next check.
If that message arrives, outbound Discord is fine, and we focus on inbound DM/pairing next.
If it fails, paste the exact error, that’ll be very telling.
Discord docs for the ID/dev mode bit:
https://docs.openclaw.ai/channels/discord
Ah, yep, that one is just the target format.
user:t1koSuave is not valid for Discord DMs here. It has to be the numeric user ID.
Use:
podman exec -it openclaw openclaw message send --channel discord --target user:YOUR_NUMERIC_USER_ID --message "discord outbound test"
So, for example, the target must look like:
user:123456789012345678
not:
user:t1koSuave
If you want, you can paste the copied numeric ID here and I’ll sanity-check the command format before you run it.
If you rerun it with the numeric ID and still get the same generic Error, paste that exact output, then we’ve got a real Discord send problem instead of just target parsing.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw message send --channel discord --target user:81415005769052160 --message "discord outbound test"
🦞 OpenClaw 2026.4.15 (unknown) — I've read more man pages than any human should—so you don't have to.
│
◇
✅ Sent via Discord. Message ID: 1495252358316294166
black@Bishop:~/projects/openclaw-sandbox/openclaw$
Outbound DM received
Perfect, that helps a lot.
Since outbound DM works, these parts are fine:
- bot token
- Discord connection
- DM delivery to your account
So now the problem is narrowed to inbound DM authorization or inbound DM handling.
Next two checks
1. Reply directly to that outbound DM
In the exact DM thread where you received discord outbound test, reply with just:
hi
No mention needed.
2. Check the Discord DM allowlist store
OpenClaw keeps approved DM senders here:
podman exec openclaw cat /home/node/.openclaw/credentials/discord-allowFrom.json
And pending pairing requests here:
podman exec openclaw cat /home/node/.openclaw/credentials/discord-pairing.json
Please paste both outputs, or say if one of the files does not exist.
How to interpret it
- If your numeric Discord ID is already in
discord-allowFrom.json, then your DMs are already authorized, and the issue is after auth. - If your ID is not there, and
discord-pairing.jsonis empty or missing, then inbound DMs are not creating pairing requests, which is the weird part we need to chase.
At this point I’m pretty confident the original “gateway readiness” issue is a red herring, and we’re down to a much smaller Discord DM path problem.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec openclaw cat /home/node/.openclaw/credentials/discord-allowFrom.json
cat: /home/node/.openclaw/credentials/discord-allowFrom.json: No such file or directory
That’s useful.
Missing discord-allowFrom.json means you have not been approved yet, which matches the behavior.
But after DMing the bot, I’d expect a pending pairing file to appear.
Please run these two next:
podman exec openclaw ls -la /home/node/.openclaw/credentials
podman exec openclaw cat /home/node/.openclaw/credentials/discord-pairing.json
If discord-pairing.json is also missing, then the bot is not creating pairing requests at all from inbound DMs, which is the real problem.
Also, please do one fresh test in this exact order:
- Reply to the working outbound DM with just
hi - Immediately run the two commands above
If you can, also grep the log for Discord startup/config lines:
podman exec openclaw sh -lc 'rg -n "discord: config|starting provider|logged in to discord|awaiting gateway readiness" /tmp/openclaw/openclaw-2026-04-19.log || true'
What I’m looking for now is:
- does
discord-pairing.jsonever get created - does the credentials dir contain any Discord state at all
- what the startup log says about DM policy/config
We’re very close, this is finally down to one narrow path.
{
"version": 1,
"requests": [
{
"id": "<redacted>",
"code": "<redacted>",
"createdAt": "2026-04-19T02:28:38.150Z",
"lastSeenAt": "2026-04-19T02:40:39.150Z",
"meta": {
"tag": "<redacted>",
"name": "<redacted>",
"accountId": "default"
}
}
]
}
There we go, that’s the breakthrough. 👍
That means:
- inbound DMs are reaching OpenClaw
- a Discord pairing request was created
- the next step is simply to approve the code
Use the real code from that file locally, do not post it here, then run:
podman exec -it openclaw openclaw pairing approve discord YOUR_REAL_CODE --notify
Then test again by replying in the DM with:
hi
After approval, you should also see your ID land in:
podman exec openclaw cat /home/node/.openclaw/credentials/discord-allowFrom.json
One note, the fact that openclaw pairing list discord said “No pending” while discord-pairing.json clearly has one is a bit weird. I’m not worried about it yet, but if approval fails, paste that exact output because that would point to a CLI/list mismatch bug.
Docs: https://docs.openclaw.ai/channels/pairing
If the approve command works, you’re basically past the Discord auth hurdle.
Is the code here the same as the code I redacted?
Yep, exactly.
Use the value from the "code" field in that discord-pairing.json entry, locally, and don’t post it here.
So:
podman exec -it openclaw openclaw pairing approve discord THE_REDACTED_CODE --notify
That should approve your Discord DM access.
Then test by sending the bot a plain:
hi
If you want, paste the approve command’s output next and I’ll sanity-check it.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw pairing approve discord <redacted> --notify
🦞 OpenClaw 2026.4.15 (unknown) — Finally, a use for that always-on Mac Mini under your desk.
Approved discord sender <redacted>.
Failed to notify requester: Error: channels.discord.token: unresolved SecretRef "env:default:DISCORD_BOT_TOKEN". Resolve this command against an active gateway runtime snapshot before reading it.
I messaged Dross in a DM and it looked like there was typing but it never came through.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec openclaw cat /home/node/.openclaw/credentials/discord-allowFrom.json
cat: /home/node/.openclaw/credentials/discord-allowFrom.json: No such file or directory
black@Bishop:~/projects/openclaw-sandbox/openclaw$
Good, this means the approval itself succeeded.
The important line is:
Approved discord sender ...
The Failed to notify requester... unresolved SecretRef "env:default:DISCORD_BOT_TOKEN" part is about the CLI trying to do the extra --notify DM on its own, not about the approval failing. Annoying, but secondary.
Also, the fact that you saw typing is a big clue. It means Discord auth/pairing is basically past the hurdle, and now the bot is getting into the actual run/reply path.
So the remaining problem is likely one of:
- model run failing
- reply delivery failing after the run starts
- runtime error during the turn
Best next checks
1. Test the model directly
Run this from the container:
podman exec -it openclaw openclaw infer model run --model openrouter/meta-llama/llama-3.3-70b-instruct --prompt "Reply with exactly: hello" --json
If that fails, we’ve found the new blocker.
2. Grab the recent log tail right after DMing the bot once
Send the bot one plain hi, wait a few seconds, then run:
podman exec -it openclaw sh -lc 'tail -n 200 /tmp/openclaw/openclaw-2026-04-19.log'
Paste the output, especially any error, warn, discord, openrouter, or model-related lines.
My read right now
- original gateway readiness issue: probably old/noise
- Discord connection: good
- outbound DM: good
- inbound DM pairing: good
- approval: good
- current blocker: message handling after the bot starts thinking
We’re out of Discord setup land now, and into runtime/model debugging.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw openclaw infer model run --model openrouter/meta-llama/llama-3.3-70b-instruct --prompt "Reply with exactly: hello" --json
Error: Model override "openrouter/meta-llama/llama-3.3-70b-instruct" is not allowed for agent "main".
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw sh -lc 'tail -n 200 /tmp/openclaw/openclaw-2026-04-19.log'
{"0":"\u001b[38;5;138mNo pending discord pairing requests.\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:24:49.552Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153","method":"console.log"}},"time":"2026-04-19T02:24:49.553+00:00"}
{"0":"\u001b[38;5;167mError\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:35:31.425Z","logLevelId":5,"logLevelName":"ERROR","path":{"fullFilePath":"file:///app/dist/subsystem-
Yep, that error is just the model allowlist talking, not the root problem.
openclaw infer model run respects the agent’s allowed model catalog, so the explicit --model ... override is being blocked.
Since that model is already your configured default, just run it without --model:
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello" --json
If that works, the base model path is fine.
If it fails, paste the full output, that’s the next useful signal.
If you want, also paste:
podman exec -it openclaw openclaw config get agents.defaults.models
but the no-override test is the fastest next step.
black@Bishop:~/projects/openclaw-sandbox/openclaw$ podman exec -it openclaw sh -lc 'tail -n 200 /tmp/openclaw/openclaw-2026-04-19.log'
{"0":"\u001b[38;5;138mNo pending discord pairing requests.\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:24:49.552Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153","method":"console.log"}},"time":"2026-04-19T02:24:49.553+00:00"}
{"0":"\u001b[38;5;167mError\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:35:31.425Z","logLevelId":5,"logLevelName":"ERROR","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:155:68","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:155","fileColumn":"68","fileLine":"155","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:155","method":"console.error"}},"time":"2026-04-19T02:35:31.426+00:00"}
{"0":"\u001b[38;5;78m✅
Sent via Discord. Message ID: 1495252358316294166\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:39:03.251Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153","method":"console.log"}},"time":"2026-04-19T02:39:03.253+00:00"}
{"0":"\u001b[38;5;78mApproved\u001b[39m \u001b[38;5;138mdiscord\u001b[39m sender \u001b[38;5;209m81415005769052160\u001b[39m.","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:47:38.300Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153","method":"console.log"}},"time":"2026-04-19T02:47:38.302+00:00"}
{"0":"\u001b[38;5;215mFailed to notify requester: Error: channels.discord.token: unresolved SecretRef "env:default:DISCORD_BOT_TOKEN".
Yep, that tail got cut off right where the useful bit starts 😅
At this point I’d stop chasing pairing. We need the actual runtime error now.
Please run these two exactly:
1. Flatten the log to just WARN/ERROR lines
podman exec openclaw cat /tmp/openclaw/openclaw-2026-04-19.log | python3 -c '
import sys, json
for line in sys.stdin:
try:
o = json.loads(line)
except Exception:
continue
lvl = o.get("_meta", {}).get("logLevelName")
if lvl not in ("WARN", "ERROR"):
continue
msg = " | ".join(f"{k}={v}" for k, v in o.items() if k not in ("_meta", "time"))
print(f"{o.get(\"time\", \"\")} {lvl} {msg}")
'
2. Run the model test without the blocked override
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello" --json
Paste both outputs.
Why these two:
- #1 should give us the real error instead of the truncated JSON blob
- #2 tells us whether the model/runtime path itself is broken outside Discord
We’re pretty clearly past Discord auth now. The remaining issue is almost certainly in the run path.
Resolve this command against an active gateway runtime snapshot before reading it.\u001b[39m","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T02:47:38.800Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-
Cgmckbux.js:153","method":"console.log"}},"time":"2026-04-19T02:47:38.800+00:00"}
{"0":"{"subsystem":"diagnostic"}","1":"lane wait exceeded: lane=session:agent:main:discord:direct:81415005769052160 waitedMs=64650 queueAhead=0","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"69ed8038a779","name":"{"subsystem":"diagnostic"}","parentNames":["openclaw"],"date":"2026-04-19T02:49:55.834Z","logLevelId":4,"logLevelName":"WARN","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:324:14","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:324","fileColumn":"14","fileLine":"324","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:324","method":"logToFile"}},"time":"2026-04-19T02:49:55.835+00:00"}
{"0":"[agent:nested] session=agent:main:discord:direct:81415005769052160 run=74468251-fdca-4113-86ca-3e085b090eb8 channel=webchat I am happy to help you with any questions or tasks you may have. What is on your mind today?","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"69ed8038a779","name":"openclaw","date":"2026-04-19T02:50:22.494Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153"}},"time":"2026-04-19T02:50:22.495+00:00"}
{"0":"Error: Model override "openrouter/meta-llama/llama-3.3-70b-instruct" is not allowed for agent "main".","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"unknown","name":"openclaw","date":"2026-04-19T12:01:00.841Z","logLevelId":5,"logLevelName":"ERROR","path":{"fullFilePath":"file:///app/dist/subsystem-
Cgmckbux.js:155:68","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:155","fileColumn":"68","fileLine":"155","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:155","method":"console.error"}},"time":"2026-04-19T12:01:00.843+00:00"}
{"0":"{"subsystem":"diagnostic"}","1":"lane wait exceeded: lane=session:agent:main:discord:direct:81415005769052160 waitedMs=35181 queueAhead=0","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"69ed8038a779","name":"{"subsystem":"diagnostic"}","parentNames":["openclaw"],"date":"2026-04-19T12:02:31.671Z","logLevelId":4,"logLevelName":"WARN","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:324:14","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:324","fileColumn":"14","fileLine":"324","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:324","method":"logToFile"}},"time":"2026-04-19T12:02:31.672+00:00"}
{"0":"[agent:nested] session=agent:main:discord:direct:81415005769052160 run=77189119-4052-4a62-b791-3e84261b3f96 channel=webchat I'm glad you're interested in chatting! Is there something specific on your mind that you'd like to discuss, or are you open to some conversation ideas?","_meta":{"runtime":"node","runtimeVersion":"24.14.0","hostname":"69ed8038a779","name":"openclaw","date":"2026-04-19T12:02:44.360Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///app/dist/subsystem-Cgmckbux.js:153:46","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:153","fileColumn":"46","fileLine":"153","filePath":"dist/subsystem-Cgmckbux.js","filePathWithLine":"dist/subsystem-Cgmckbux.js:153"}},"time":"2026-04-19T12:02:44.360+00:00"}
black@Bishop:~/projects/openclaw-sandbox/openclaw$
Looks like that was the raw tail again, not the parsed log. No worries.
At this point, the most useful missing signal is still the direct model test.
Please run this exact command, with no --model override:
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello"
Then paste the full output.
Why I want this first:
- if it prints
hello, the model/runtime path is basically fine, and the remaining problem is more likely the Discord reply path - if it errors, we’ve found the actual blocker
If you also want the simpler error-only log command, use this:
podman exec openclaw sh -lc "grep -a '\"logLevelName\":\"ERROR\"' /tmp/openclaw/openclaw-2026-04-19.log"
But the infer model run result is the big one right now.
Yep, those lines just confirm what we already know:
- outbound send worked
- pairing approval worked
--notifyfailed because the standalone CLI could not resolve the env SecretRef
That still does not explain why the DM reply never arrives.
So I need one thing next, and only this one thing:
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello"
Please paste only the output of that command.
If it:
- prints
hello, the model path is fine - errors, that error is probably the real blocker
- hangs, tell me it hangs, that’s also useful
We’re very close, but we need this exact test result to stop guessing.
That line is still from the old notify/log output, not the test I need.
Please do not run tail or grep again for the moment.
In a fresh terminal, run only this:
podman exec -it openclaw openclaw infer model run --prompt hello
Then paste everything that command prints.
If it:
- prints a reply, paste it
- errors, paste the error
- shows nothing after ~30 seconds, just say “it hangs”
That one command is the next fork in the road.
Running podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello"
Ignore previous posts, they were a cut up response.
Ah, this is actually the first really useful clue.
Two things stand out:
-
lane wait exceeded ... waitedMs=64650
Your Discord DM session sat stuck in queue for 64 seconds. -
[agent:nested] session=agent:main:discord:direct:... channel=webchat ...
That same Discord DM session appears to have had a run associated with webchat/control UI context.
My best read is that the session got into a weird/stale state, not that Discord auth is still broken.
Try this recovery path
- Close any open Dashboard / Control UI / WebChat tab
- In the Discord DM, send
/resetas a standalone message - After that, send just:
hello
One other note:
Error: Model override "openrouter/meta-llama/llama-3.3-70b-instruct" is not allowed...is from your earlier manual infer test, not the core Discord issue
So right now I would not chase the model-override error further.
I would first try to clear the stuck DM session with /reset.
If /reset itself gets no visible reply, tell me that specifically, because then I’d treat this as a session-routing bug rather than setup.
Okay, this is enough to call it.
The bot is generating a reply, but it’s being associated with channel=webchat on a Discord DM session:
session=agent:main:discord:direct:...channel=webchat- plus repeated
lane wait exceeded
So this is not a Discord auth problem anymore, and it’s probably not a model problem either. It looks like a session/delivery routing bug or stale session state.
What I’d do next, in order
-
Close any open Dashboard / Control UI / WebChat tabs
- also check whether the reply is showing up there instead of Discord
-
Restart the container
podman restart openclaw
- After restart, in the Discord DM send:
then:/resethello
Why
Those logs show the reply is being produced, but the run is drifting into webchat context for a Discord DM session. Restart + /reset is the cleanest attempt to clear stale session routing.
If it still happens after that
I’d treat it as a real bug and ask you to file a GitHub issue with:
- version:
2026.4.15 - the
lane wait exceededlines - the
session=agent:main:discord:direct:... channel=webchat ...lines
Issue tracker: https://github.com/openclaw/openclaw/issues
If you try the restart + /reset, tell me whether the next DM still logs as channel=webchat. That’s the key signal now.
Perfect. Paste whatever it prints when it finishes.
If it does not finish after ~30 seconds, just tell me “it hangs”.
Got it, no worries.
Please just paste the clean output from:
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello"
Or, if it never finishes, just say:
it hangs
Tried /reset and "hello" and it replies. Should I go on to try the propt below?
podman exec -it openclaw openclaw infer model run --prompt "Reply with exactly: hello"
Nice, then no, you can skip that infer prompt now.
If /reset + hello works in the Discord DM, the important part is proven:
- Discord is working
- the model path is working well enough
- the blocker was most likely stale session/routing state, not setup/auth
So I’d treat this as fixed for now. 🎉
If it happens again:
- close any Dashboard/WebChat tab
- send
/reset - if needed, restart the container
If it starts happening repeatedly, then I’d file a bug with those lane wait exceeded + channel=webchat log lines:
https://github.com/openclaw/openclaw/issues
For the next step, if you want Discord server channels to work, follow:
https://docs.openclaw.ai/channels/discord
Glad that helped! 🎉
If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution.
This helps Answer Overflow index the solution for future users.