#gateway dead after an update in the config

1 messages ยท Page 1 of 1 (latest)

ancient crow
#

asked the agent to modify something with sub agent, it modified a config file, restarted the gateway and is dead since. gateway status output :
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-02-25.log
Command: /home/deck/.nvm/versions/node/v22.22.0/bin/node /home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/entry.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Service config looks out of date or non-standard.
Service config issue: Gateway service uses Node from a version manager; it can break after upgrades. (/home/deck/.nvm/versions/node/v22.22.0/bin/node)
Service config issue: System Node 22+ not found; install it before migrating away from version managers.
Recommendation: run "openclaw doctor" (or "openclaw doctor --repair").
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: stopped (state activating, sub auto-restart, last exit 1, reason 1)
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: cli --url
Config: /home/deck/.openclaw/openclaw.json

Service is loaded but not running (likely exited immediately).
File logs: /tmp/openclaw/openclaw-2026-02-25.log
Logs: journalctl --user -u openclaw-gateway.service -n 200 --no-pager

Other gateway-like services detected (best effort):

  • teams-autonotes.service (user, unit: /home/deck/.config/systemd/user/teams-autonotes.service)
    Cleanup hint: systemctl --user disable --now openclaw-gateway.service
    Cleanup hint: rm ~/.config/systemd/user/openclaw-gateway.service

Recommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).
If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).

quiet mapleBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> โœ… Mark Solution

broken elkBOT
#

That Runtime: stopped โ€ฆ last exit 1 almost always means the Gateway is bailing immediately on startup โ€” and since you said a sub-agent edited ~/.openclaw/openclaw.json, the #1 suspect is config schema/JSON5 validation.

OpenClaw is strict here: unknown keys / wrong types / malformed JSON5 โ†’ Gateway refuses to start. Docs: https://docs.openclaw.ai/gateway/configuration#strict-validation

Can you paste the output of these (theyโ€™re the fastest way to see the real error)?

  1. Version (always first, because behavior changes quickly):
openclaw --version
  1. Doctor (this should directly call out config validation errors):
openclaw doctor

(If it prints secrets anywhere, redact them โ€” but usually doctor output is safe.)

#
  1. The actual crash log lines:
journalctl --user -u openclaw-gateway.service -n 200 --no-pager

and/or:

tail -n 200 /tmp/openclaw/openclaw-2026-02-25.log

If you want a super fast โ€œshow me the real error in my faceโ€ run, do this once (prevents the restart loop), then start it in the foreground:

systemctl --user stop openclaw-gateway.service
openclaw gateway --port 18789 --verbose

What Iโ€™m looking for in the logs/doctor output:

#
  • Config validation failed / unknown key / expected type ...
  • Gateway start blocked: set gateway.mode=local
  • EADDRINUSE (port conflict)
  • ENOENT / โ€œnode not foundโ€ (systemd unit pointing at a Node path that no longer exists due to nvm changes)

Paste those outputs and Iโ€™ll tell you exactly what to edit/revert in the config to get it booting again.

ancient crow
#

version : 2026.2.24
doctor : โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ - 5/5 recent sessions are missing transcripts. โ”‚
โ”‚ Verify sessions in store: openclaw sessions --store โ”‚
โ”‚ "/home/deck/.openclaw/agents/atlas/sessions/sessions.json" โ”‚
โ”‚ Preview cleanup impact: openclaw sessions cleanup --store โ”‚
โ”‚ "/home/deck/.openclaw/agents/atlas/sessions/sessions.json" --dry-run โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡ Other gateway-like services detected โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ - teams-autonotes.service (user, unit: โ”‚
โ”‚ /home/deck/.config/systemd/user/teams-autonotes.service) โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡ Cleanup hints โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ - systemctl --user disable --now openclaw-gateway.service โ”‚
โ”‚ - rm ~/.config/systemd/user/openclaw-gateway.service โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡ Gateway recommendation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ Recommendation: run a single gateway per machine for most setups. โ”‚
โ”‚ One gateway supports multiple agents. โ”‚
โ”‚ If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + โ”‚
โ”‚ config/state (see docs: /gateway#multiple-gateways-same-host). โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡ Gateway runtime โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ System Node 22+ not found. Install via Homebrew/apt/choco and rerun doctor to migrate โ”‚
โ”‚ off Bun/version managers. โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡ Gateway service config โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ - Gateway service uses Node from a version manager; it can break after upgrades. โ”‚
โ”‚ (/home/deck/.nvm/versions/node/v22.22.0/bin/node) โ”‚
โ”‚ - System Node 22+ not found; install it before migrating away from version managers. โ”‚
โ”‚ - Gateway service entrypoint does not match the current install. โ”‚
โ”‚ (/home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/entry.js -> โ”‚
โ”‚ /home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/index.js) โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Update gateway service config to the recommended defaults now?
โ”‚ Yes

Installed systemd service: /home/deck/.config/systemd/user/openclaw-gateway.service
Previous unit backed up to: /home/deck/.config/systemd/user/ope

broken elkBOT
#

That doctor output is actually a really strong clue: your systemd unit is pointing at an old entrypoint:

.../dist/entry.js -> .../dist/index.js

If the sub-agent โ€œrestarted the gatewayโ€, it likely restarted via systemd, hit the stale unit, and the process exited immediately (exit 1). That matches what youโ€™re seeing.

Since you answered โ€œYesโ€ to the doctor repair prompt, do this next (so systemd picks up the rewritten unit):

systemctl --user daemon-reload
systemctl --user restart openclaw-gateway.service
openclaw gateway status

If itโ€™s still not coming up, grab the actual crash reason (this is the missing piece right now):

#
journalctl --user -u openclaw-gateway.service -n 200 --no-pager
tail -n 200 /tmp/openclaw/openclaw-2026-02-25.log

Paste:

  1. the new openclaw gateway status output after the restart, and
  2. the journalctl chunk that includes the error/stack trace.

(Also: the โ€œSystem Node 22+ not foundโ€ part is a recommendation to migrate off nvm later โ€” itโ€™s usually not what hard-kills the gateway. The entrypoint mismatch is the immediate โ€œwonโ€™t startโ€ problem.)

ancient crow
#

Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-02-25.log
Command: /home/deck/.nvm/versions/node/v22.22.0/bin/node /home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Service config looks out of date or non-standard.
Service config issue: Gateway service uses Node from a version manager; it can break after upgrades. (/home/deck/.nvm/versions/node/v22.22.0/bin/node)
Service config issue: System Node 22+ not found; install it before migrating away from version managers.
Recommendation: run "openclaw doctor" (or "openclaw doctor --repair").
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: stopped (state activating, sub auto-restart, last exit 1, reason 1)
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: cli --url
Config: /home/deck/.openclaw/openclaw.json

Service is loaded but not running (likely exited immediately).
File logs: /tmp/openclaw/openclaw-2026-02-25.log
Logs: journalctl --user -u openclaw-gateway.service -n 200 --no-pager

Other gateway-like services detected (best effort):

  • teams-autonotes.service (user, unit: /home/deck/.config/systemd/user/teams-autonotes.service)
    Cleanup hint: systemctl --user disable --now openclaw-gateway.service
    Cleanup hint: rm ~/.config/systemd/user/openclaw-gateway.service

Recommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).
If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).

Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting

the journalctl outputs many many lines

broken elkBOT
#

Cool โ€” service unit is now updated to dist/index.js, so weโ€™re past the โ€œwrong entrypointโ€ failure. Now we need the first real fatal error from the logs (port conflict, config validation, missing file, etc.).

If journalctl is huge, run these and paste the output (just these snippets):

1) systemd status (usually includes the key error lines)

systemctl --user status openclaw-gateway.service --no-pager -n 80

2) journal, but only recent + tail

journalctl --user -u openclaw-gateway.service --since "15 min ago" --no-pager | tail -n 120

3) file log tail

#
tail -n 200 /tmp/openclaw/openclaw-2026-02-25.log

If you want the fastest โ€œno log scrollingโ€ way: stop the restart loop and run in foreground once (it will print the exact reason it exits):

systemctl --user stop openclaw-gateway.service
openclaw gateway --port 18789 --verbose

Paste whatever it prints starting at the first Error: / FATAL / stack trace line (redact tokens/secrets if any).

ancient crow
#

fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.073Z [whatsapp] [default] starting provider (+33673959088)
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.624Z [discord] [forge] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.629Z [discord] [forge] starting provider (@Forge)
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.638Z [discord] [atlas] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.641Z [discord] [atlas] starting provider (@Atlas)
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.650Z [discord] [plume] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.654Z [discord] [plume] starting provider (@Plume)
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.691Z [discord] [sentinel] Discord Message Content Intent is limited; bots under 100 servers can use it without verification.
fรฉvr. 25 18:30:21 steamdeck node[163433]: 2026-02-25T17:30:21.695Z [discord] [sentinel] starting provider (@Sentinel)
fรฉvr. 25 18:30:22 steamdeck node[163433]: 2026-02-25T17:30:22.096Z [discord] channels unresolved: ##redacted###
fรฉvr. 25 18:30:22 steamdeck node[163433]: 2026-02-25T17:30:22.102Z [discord] channels unresolved: ##redacted##
fรฉvr. 25 18:30:22 steamdeck node[163433]: 2026-02-25T17:30:22.107Z [discord] channels unresolved: ##redacted##
fรฉvr. 25 18:30:22 steamdeck node[163433]: 2026-02-25T17:30:22.622Z [discord] channels unresolved: ##redacted##
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T17:30:23.341Z [discord] GuildPresences intent enabled โ€” presence listener registered
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T17:30:23.345Z [discord] logged in to discord as ##redacted##
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T17:30:23.421Z [whatsapp] Listening for personal WhatsApp inbound messages.
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T17:30:23.639Z [discord] GuildPresences intent enabled โ€” presence listener registered
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T17:30:23.643Z [discord] logged in to discord as ##redacted##
fรฉvr. 25 18:30:23 steamdeck node[163433]: 2026-02-25T18:30:23.714+01:00 [openclaw] Uncaught exception: Error: Fatal Gateway error: 4014
fรฉvr. 25 18:30:23 steamdeck node[163433]: at GatewayPlugin.handleReconnectionAttempt (file:///home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:417:7)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at GatewayPlugin.handleClose (file:///home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:466:8)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at WebSocket.<anonymous> (file:///home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:376:9)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at WebSocket.emit (node:events:519:28)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at WebSocket.emitClose (/home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/node_modules/ws/lib/websocket.js:273:10)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at TLSSocket.socketOnClose (/home/deck/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/node_modules/ws/lib/websocket.js:1346:15)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at TLSSocket.emit (node:events:531:35)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at node:net:346:12
fรฉvr. 25 18:30:23 steamdeck node[163433]: at TCP.done (node:_tls_wrap:667:7)
fรฉvr. 25 18:30:23 steamdeck node[163433]: at TCP.callbackTrampoline (node:internal/async_hooks:130:17)
fรฉvr.

broken elkBOT
#

That log has the smoking gun:

Uncaught exception: Error: Fatal Gateway error: 4014
... @buape/carbon ... GatewayPlugin

4014 is a Discord Gateway close code = โ€œDisallowed intentsโ€ (your bot connected, then Discord immediately kicked it because OpenClaw requested one or more Privileged Gateway Intents that arenโ€™t enabled for that Discord application). Because of a known bug, that 4014 currently crashes the whole OpenClaw gateway process, not just Discord.

Fix (recommended): enable the intents in Discord Developer Portal

For each Discord bot/app you run (your logs show multiple: forge, atlas, plume, sentinel):

  1. Go to Discord Developer Portal โ†’ Applications โ†’ (your app) โ†’ Bot
  2. Under Privileged Gateway Intents, enable:
    • Message Content Intent (required)
    • Server Members Intent (recommended; often needed)
    • Presence Intent (optional โ€” but your logs say GuildPresences intent enabled, so OpenClaw is requesting it; easiest is to enable it too)
#
  1. Save, then restart the gateway:
    systemctl --user restart openclaw-gateway.service
    # or: openclaw gateway restart
    

OpenClawโ€™s Discord doc explicitly calls this out: https://docs.openclaw.ai/channels/discord#enable-privileged-intents

Quick recovery (if you canโ€™t change Discord settings right now)

Temporarily disable Discord so the gateway can boot and your other channels keep working:

openclaw config set channels.discord.enabled false --json
systemctl --user restart openclaw-gateway.service

(Then re-enable after youโ€™ve flipped the intents in the portal.)

#

Side note: โ€œchannels unresolvedโ€

Those channels unresolved: ... lines mean some configured Discord channels couldnโ€™t be resolved/seen (usually wrong IDs/names or missing permissions). Not the crash reason, but we can fix that once the gateway stays up.

If you tell me whether those 4 labels are separate Discord applications or โ€œaccountsโ€ under one config, I can suggest the cleanest way to isolate which one is missing intents (but enabling intents on all of them is the fastest).

ancient crow
#

It's kinda fixed? gateway is back up, can talk to subagent but not to main agent through discord, sent two messages through what's app, first "are you ok?" went well and got a response, second one was about him disapearing from discord, the message went through, got the "..." but never received a reply

broken elkBOT
#

Yep, that โ€œfirst message replied, second shows typing (...) then nothingโ€ pattern usually means the Gateway started generating a reply, then the process died / restarted mid-run (or hit a fatal provider error).

Given your earlier log had:

Uncaught exception: Error: Fatal Gateway error: 4014

โ€ฆthatโ€™s Discord missing privileged intents, and (annoyingly) it can crash the whole gateway.

1) First check: are you still hitting 4014 crashes?

Run:

grep -n "Fatal Gateway error: 4014" /tmp/openclaw/openclaw-2026-02-25.log | tail -n 20
  • If you see new recent entries: one of your Discord bot apps (you had multiple: forge/atlas/plume/sentinel) still doesnโ€™t have all required Privileged Gateway Intents enabled in the Discord Dev Portal.
  • Enable at least Message Content Intent (+ Iโ€™d also enable Server Members and Presence since OpenClaw is requesting presence in your logs), then restart gateway.
#

Docs: https://docs.openclaw.ai/channels/discord#enable-privileged-intents

2) โ€œCanโ€™t talk to main agent through Discordโ€

Two common causes:

A) Youโ€™re in a server/channel and didnโ€™t @mention it.
By default, guild channels often require mention (requireMention: true). Try explicitly mentioning the bot in the message once.

B) Guild/channel allowlist mismatch (โ€œchannels unresolvedโ€ earlier).
If the config references channels the bot canโ€™t resolve/see, it may be ignoring messages there.

The fastest visibility command (no secrets) is:

openclaw channels status --probe
#

Paste that outputโ€”specifically the Discord section(s). Itโ€™ll tell us if Discord is actually โ€œreadyโ€ and which accounts are connected.

3) If you want an immediate workaround while fixing Discord

Temporarily disable Discord so it canโ€™t take the gateway down while you test WhatsApp reliability:

openclaw config set channels.discord.enabled false --json
openclaw gateway restart

If WhatsApp becomes 100% reliable after that, itโ€™s almost certainly Discord taking the process out.

If you paste:

  • the grep ... 4014 result, and
  • openclaw channels status --probe

โ€ฆI can tell you exactly which side (intents vs mention gating vs allowlist) youโ€™re hitting next.

ancient crow
#
  1. still have the 4014, but all privileges have been given.
  2. i'm DMing the agent (I was before the whole thing)

๐Ÿฆž OpenClaw 2026.2.24 (df9a474) โ€” Your .env is showing; don't worry, I'll pretend I didn't see it.

โ”‚
โ—‡
Gateway reachable.

  • Telegram default: enabled, not configured, stopped, mode:polling, token:none, error:not configured
  • WhatsApp default: enabled, configured, linked, running, connected, dm:allowlist, allow:+##redacted##
  • Discord atlas (Atlas): enabled, configured, running, bot:@Atlas, token:config, intents:content=limited, works, audit ok
  • Discord forge (Forge): enabled, configured, running, bot:@Forge, token:config, intents:content=limited, works, audit ok
  • Discord plume (Plume): enabled, configured, running, bot:@Plume, token:config, intents:content=limited, works, audit ok
  • Discord sentinel (Sentinel): enabled, configured, running, bot:@Sentinel, token:config, intents:content=limited, works, audit ok
broken elkBOT
#

Good: your Gateway + channels are up again. The remaining problem is almost certainly still this line:

Fatal Gateway error: 4014

On Discord, 4014 = disallowed intents. And because of a known bug, that can crash the whole Gateway process, which matches your โ€œshows typing โ€ฆ then no replyโ€ symptom.

Two important nuances:

  1. โ€œintents:content=limited, worksโ€ in channels status --probe is not an error by itself โ€” itโ€™s just Discord saying โ€œMessage Content Intent is privileged, but under 100 servers you can use it without verificationโ€.

  2. 4014 can still happen even if you toggled intents if:

  • you toggled intents on the wrong Discord application (token doesnโ€™t match the app you edited), or
  • one of your bots is in 100+ servers and therefore Message Content Intent wonโ€™t be allowed until the app is verified, or
  • one of the 4 bots still has Server Members / Presence disabled while OpenClaw requests them.

Step 1 โ€” confirm whether 4014 is happening now (vs old log noise)

Run:

#
grep -n "Fatal Gateway error: 4014" /tmp/openclaw/openclaw-2026-02-25.log | tail -n 5

If the timestamps/line locations are recent, itโ€™s still actively killing the process.

Step 2 โ€” identify which Discord account is triggering it

This will show the surrounding [discord] [atlas|forge|plume|sentinel] context:

grep -n -C 30 "Fatal Gateway error: 4014" /tmp/openclaw/openclaw-2026-02-25.log | tail -n 120

Paste that snippet (redacting tokens is fine). We want to see which account label is right before the crash.

Step 3 โ€” while you DM, watch for the actual send failure

In one terminal:

#
openclaw logs --follow

Then DM the bot โ€œpingโ€. If itโ€™s not 4014, youโ€™ll usually see something like:

  • DiscordAPIError: 50007 Cannot send messages to this user (DM privacy setting / server DM setting)
  • pairing required / allowlist block
  • or a crash/restart sequence.

If you paste the first error line that appears right after your DM, we can pin it down quickly.

Docs for the intent toggles (for reference): https://docs.openclaw.ai/channels/discord#enable-privileged-intents

ancient crow
#
  1. nevermind, nothing since 20 minutes

I'm thinking (seen the bots name in the probe we did earlier that the main agent, removed itself from the list and instead added the 4 subagents, could that be the thing? (on my server all subs are online, main (Nox) is offline

broken elkBOT
#

Yeah โ€” what youโ€™re describing (โ€œNox is offline in the server member list, but Atlas/Forge/Plume/Sentinel are onlineโ€) almost certainly means:

OpenClaw is no longer logging in with Noxโ€™s Discord bot token.
Itโ€™s logging in with those 4 other Discord accounts instead (and your channels status --probe confirms those are the ones configured + connected).

Key point: in OpenClaw, โ€œmain agentโ€ โ‰  โ€œDiscord bot userโ€.
The agent is an internal runtime thing; the Discord bot is just whichever channels.discord.*token* (or channels.discord.accounts.*.token) you configured.

So if you DM Nox (offline), nothing will ever come back because that bot isnโ€™t connected to the gateway anymore.

Quick confirmation

  1. In Discord: DM one of the online bots (Atlas/Forge/Plume/Sentinel). If it replies, routing is fine โ€” you were just DMing the wrong bot.

If you want โ€œNoxโ€ back online (recommended)

You need to put Noxโ€™s token back into your config as either:

  • the single main token (channels.discord.token), or
  • an account under multi-account (channels.discord.accounts.nox.token or ...accounts.default.token), then restart.