OpenClaw troubleshooting can feel overwhelming when you are staring at a cryptic error message at 11pm and your AI employee has gone silent. I have been running OpenClaw in production for months now, and I have hit nearly every error this platform can throw at you. The good news? Most problems fall into a handful of categories, and the fixes are straightforward once you know what to look for.
This guide covers every common OpenClaw error I have encountered, what causes it, and exactly how to fix it. Bookmark this one. You will need it.
Before You Debug Anything: The 60-Second Health Check
Before diving into specific errors, run this diagnostic ladder in order. It tells you exactly where the problem is in under a minute.
openclaw status
openclaw gateway status
openclaw doctor
openclaw channels status --probe
openclaw logs --follow
Here’s what healthy output looks like:
openclaw gateway statusshowsRuntime: runningandRPC probe: okopenclaw doctorreports no blocking config or service issuesopenclaw channels status --probeshows your channels asconnectedorreadyopenclaw logs --followshows steady activity with no repeating fatal errors
If any of these fail, the sections below will tell you exactly what went wrong and how to fix it.
Error 1: “Unauthorized: Gateway Token Missing” (The Most Common Error)
This is the error that brings most new OpenClaw users to Google. You see something like disconnected (1008) or unauthorized: gateway token missing and suddenly nothing works.
What Causes It
The gateway token authenticates your connection to the OpenClaw gateway. When it is missing or wrong, nothing can communicate with the gateway. This happens because of:
- Environment variable not set or not loaded by the service
- Wrong profile being used (your CLI is talking to a different config than your running gateway)
- Missing or mismatched token in the config file
- macOS LaunchAgent plist not passing the environment variable through
How to Fix It
Step 1: Find your current token
openclaw config get gateway.auth.token
Step 2: If no token exists, generate one
openclaw doctor --generate-gateway-token
Step 3: If the token exists but the dashboard rejects it, copy it manually
Open your config file (usually ~/.openclaw/openclaw.json) and find the gateway.auth.token value. Paste it into the dashboard authentication field. Remove any extra quotes.
Step 4: If using a LaunchAgent (macOS), make sure the plist passes the token
This is the sneaky one. Your terminal session has the environment variable, but the LaunchAgent that runs the gateway service does not inherit your shell environment. You need to either:
- Set the token directly in the config file (recommended)
- Or add the environment variable to the LaunchAgent plist
Step 5: Verify and restart
openclaw doctor
openclaw gateway restart
Pro Tip
If you recently upgraded OpenClaw, note that the config key changed from gateway.token to gateway.auth.token in recent versions. The old key will not work. Run openclaw doctor --fix to catch and correct this automatically.
Error 2: “EADDRINUSE” / “Another Gateway Instance Is Already Listening”
You try to start the gateway and get: GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:18789")
What Causes It
Another process is already using the port that OpenClaw wants to bind to. This is usually:
- A previous gateway instance that did not shut down cleanly
- Another OpenClaw profile running on the same port
- A completely different application using port 18789
How to Fix It
Step 1: Check what is using the port
lsof -i :18789
This shows the process holding the port. If it is an old OpenClaw gateway, kill it:
kill <PID>
Step 2: If you are running multiple gateways, use different ports
openclaw --profile main gateway --port 18789
openclaw --profile rescue gateway --port 19001
Step 3: Reinstall the service if the port keeps getting stuck
openclaw gateway install --force
openclaw gateway restart
Important Note About Multiple Gateways
If you are running more than one gateway on the same machine (for example, a main bot and a rescue bot), each one needs its own:
- Config file (
OPENCLAW_CONFIG_PATH) - State directory (
OPENCLAW_STATE_DIR) - Port (leave at least 20 ports between them so derived browser/canvas ports do not collide)
- Workspace directory
The easiest way to manage this is with profiles:
openclaw --profile main setup
openclaw --profile rescue setup
Profiles automatically scope the config path, state directory, and service names. This prevents the lock file conflicts and config races that cause mysterious failures.
Error 3: “Gateway Start Blocked: Set gateway.mode=local”
The gateway refuses to start and tells you to set gateway.mode=local.
What Causes It
OpenClaw needs to know whether you are running a local gateway or connecting to a remote one. If this is not configured, it blocks startup as a safety measure.
How to Fix It
openclaw config set gateway.mode local
openclaw gateway restart
If you are running OpenClaw via Podman using a dedicated openclaw user, the config lives at ~openclaw/.openclaw/openclaw.json. Edit it there.
If you went through the onboarding wizard (openclaw onboard), this should be set automatically. If it is not, run openclaw configure to walk through setup again.
Error 4: “Refusing to Bind Gateway Without Auth”
You see: refusing to bind gateway on <address> without auth
What Causes It
You have configured the gateway to bind on a non-loopback address (LAN, Tailnet, or custom) but have not set up authentication. OpenClaw refuses to expose itself on the network without a password or token. This is a security guardrail, not a bug.
How to Fix It
Option A: If you only need local access, bind to loopback
openclaw config set gateway.bind loopback
openclaw gateway restart
Option B: If you need network access, set an auth token
openclaw config set gateway.auth.token <your-secure-token>
openclaw config set gateway.bind lan
openclaw gateway restart
Never expose your gateway to the public internet without authentication. Bind to localhost or use Tailscale for remote access.
Error 5: Unrecognized Config Keys Preventing Startup
The gateway will not start and the logs show errors about unrecognized configuration keys.
What Causes It
This usually happens after an upgrade when config schema changes, or when you manually edit openclaw.json and introduce a typo or an outdated key.
How to Fix It
Step 1: Run the doctor
openclaw doctor --fix
The doctor command validates your config against the expected schema and identifies deviations. The --fix flag attempts automatic repairs.
Step 2: If doctor cannot fix it, check the config manually
openclaw config get
Look for keys that do not belong. Common culprits: – gateway.token (old) should be gateway.auth.token (new) – Typos in provider names or channel configurations – Keys from an older version that no longer exist
Step 3: Reset and reconfigure if needed
openclaw configure
This walks you through the setup wizard again without losing your credentials.
Error 6: Browser Control Not Working / “No Tab Connected”
You try to use the browser tool and get: Chrome extension relay is running, but no tab is connected
What Causes It
OpenClaw’s browser control has two modes: the built-in openclaw browser profile and the Chrome extension relay. If you are using the Chrome extension relay (profile="chrome"), it requires at least one tab to be attached via the OpenClaw Browser Relay toolbar button.
How to Fix It
For the Chrome extension relay: 1. Open Chrome and navigate to the tab you want OpenClaw to control 2. Click the OpenClaw Browser Relay toolbar icon (the badge should turn ON) 3. Try your browser command again
For the built-in openclaw profile:
openclaw browser status
openclaw browser start --browser-profile openclaw
If it fails to start:
openclaw doctor
Check that browser.executablePath points to a valid Chrome/Chromium installation.
Common issue on headless servers: The built-in profile needs a display server or Xvfb. On Linux servers without a desktop environment, install Xvfb:
sudo apt install xvfb
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
Error 7: No Replies (Channel Connected But Silent)
Your channel shows as connected, but OpenClaw is not responding to messages.
What Causes It
This is almost always a routing or policy issue, not a connection issue. Common causes:
- Mention gating in groups: Discord groups require an @mention by default
- Pairing not approved: The sender has not been approved for DM conversations
- Allowlist filtering: The sender, channel, or group is not on the allowlist
How to Fix It
Step 1: Check the logs for the specific reason
openclaw logs --follow
Send a test message and watch the logs. Common signatures:
drop guild message (mention required)means you need to @mention the bot in Discord groupspairing requestmeans the sender needs approval. Run:openclaw pairing list discord openclaw pairing approve <requestId>blockedorallowlistmeans the sender/channel is filtered by policy
Step 2: Verify channel configuration
openclaw channels status --probe
openclaw config get channels
Step 3: For Discord specifically, make sure: – The bot has the MESSAGE_CONTENT intent enabled in the Discord Developer Portal – The bot has permissions to read and send messages in the channel – requireMention is set to true for guild channels (or false if you want it to respond without mentions)
Error 8: Cron Jobs and Heartbeats Not Firing
You set up cron jobs or heartbeats, but they never run.
What Causes It
- Cron scheduler is disabled
- Quiet hours blocking heartbeats
- Main session is busy (requests in flight)
- Invalid delivery target
How to Fix It
Step 1: Check cron status
openclaw cron status
openclaw cron list
If disabled: openclaw config set cron.enabled true
Step 2: Check recent runs for errors
openclaw cron runs --id <jobId> --limit 20
Step 3: For heartbeats, check if quiet hours are blocking them
Look in logs for heartbeat skipped with reason=quiet-hours. If so, adjust your active hours in the config.
Step 4: Verify delivery target exists
If logs show unknown accountId, the account or channel target for delivery does not exist. Update the cron job with a valid target.
Error 9: Node Paired But Tools Fail
Your phone or other node shows as paired, but camera, screen, or exec tools fail.
What Causes It
- Node app is in the background (must be in foreground for some operations)
- OS permissions not granted (camera, microphone, location, screen recording)
- Exec approval pending or command not on allowlist
How to Fix It
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
Common signatures: – NODE_BACKGROUND_UNAVAILABLE means bring the OpenClaw app to the foreground on the device – *_PERMISSION_REQUIRED means grant the missing OS permission in device settings – SYSTEM_RUN_DENIED: approval required means approve the pending exec request – SYSTEM_RUN_DENIED: allowlist miss means add the command to the exec allowlist
Error 10: Post-Upgrade Breakage
Everything was working fine, then you upgraded OpenClaw and things broke.
What Causes It
Most post-upgrade breakage comes from config drift or stricter defaults being enforced in the new version.
How to Fix It
Step 1: Run the full diagnostic
openclaw status --all
openclaw doctor --fix
Step 2: Check for auth key changes
Recent versions moved from gateway.token to gateway.auth.token. The old key silently fails. Doctor should catch this, but verify:
openclaw config get gateway.auth
Step 3: Check for pairing/device identity changes
Upgrades can reset device identity state. If your dashboard stops connecting or nodes need re-pairing:
openclaw devices list
openclaw pairing list <channel>
Step 4: Nuclear option (reinstall service metadata)
openclaw gateway install --force
openclaw gateway restart
This reinstalls the service configuration from your current profile/state directory without touching your data or credentials.
Quick Reference: Error to Fix Cheat Sheet
| Error Message | Likely Cause | Quick Fix |
|---|---|---|
unauthorized: gateway token missing |
Token not set or wrong profile | openclaw doctor --fix then openclaw gateway restart |
EADDRINUSE / another gateway instance |
Port conflict | lsof -i :18789 then kill the process |
Gateway start blocked: set gateway.mode=local |
Gateway mode not configured | openclaw config set gateway.mode local |
refusing to bind without auth |
Non-loopback bind without token | Set auth token or switch to loopback bind |
no tab connected |
Browser relay not attached | Click OpenClaw Browser Relay icon in Chrome |
drop guild message (mention required) |
Discord mention gating | @mention the bot or set requireMention: false |
pairing request |
Sender not approved | openclaw pairing approve <id> |
cron: scheduler disabled |
Cron not enabled | openclaw config set cron.enabled true |
| Config key errors | Old/invalid config keys | openclaw doctor --fix |
| Post-upgrade breakage | Config drift / stricter defaults | openclaw doctor --fix then openclaw gateway install --force |
Prevention: Keep Your OpenClaw Healthy
A few habits that prevent most of these errors:
- Run
openclaw doctorafter every upgrade. It catches config drift before it becomes a problem. - Keep OpenClaw updated.
npm update -g openclawensures you have the latest fixes. - Use profiles for multiple gateways. Never share config or state directories between instances.
- Check logs before asking for help.
openclaw logs --followtells you exactly what went wrong 90% of the time. - Bookmark the official docs. The troubleshooting pages at docs.openclaw.ai are comprehensive and regularly updated.
- Join the community. The OpenClaw Discord has an active #help channel where issues get resolved quickly.
Your Turn To Share
What OpenClaw error gave you the hardest time? Did I miss one that stumped you? Drop it in the comments. I am building a living reference here, and the real-world errors you are hitting help everyone in the community.