Common OpenClaw issues, fixed and documented
WhatsApp QR Code Not Scanning
Symptom
The QR code displays in terminal but scanning it with WhatsApp gives 'Not Valid' or the connection drops immediately.
Cause
Baileys session mismatch — your local auth_info_multi folder is out of sync with WhatsApp's servers.
Fix — step by step
- Stop OpenClaw completely (Ctrl+C or kill the process).
- Delete the auth_info_multi folder in your project root.
- Run openclaw start so a fresh QR can generate.
- Scan within 60 seconds before it expires.
- Avoid switching networks or devices mid-scan.
Node.js Version Error on Start
Symptom
OpenClaw refuses to start with an error like: 'engine node: wanted >=18.0.0, got 16.x.x' or a similar version mismatch.
Cause
OpenClaw requires a newer Node.js runtime than the system package manager installed by default.
Fix — step by step
- Run node --version to confirm your current runtime.
- Install nvm from the official install script.
- Run nvm install 20 && nvm use 20.
- Set your shell profile to use the right version automatically.
- Retry openclaw start after reopening the terminal.
API Key Not Working (Claude / OpenAI)
Symptom
Agent starts but all responses fail with '401 Unauthorized' or 'invalid_api_key' errors in the logs.
Cause
The API key is set under the wrong environment variable, contains hidden whitespace, or was revoked by the provider.
Fix — step by step
- Check the .env file for the exact provider variable name.
- Paste the key into a plain text editor to remove hidden whitespace.
- Confirm the key is still active in the provider dashboard.
- Verify the .env file sits in the project root.
- Restart OpenClaw fully because .env changes do not hot-reload.
Agent Crashes on Skill Load
Symptom
OpenClaw starts, logs 'Loading skills...' and then crashes immediately with a module error or syntax failure.
Cause
A skill dependency is broken, a package was installed under the wrong Node.js version, or the skill code is not compatible with the running runtime.
Fix — step by step
- Set LOG_LEVEL=debug and reproduce the crash.
- Identify the last skill name logged before exit.
- Open that skill folder and reinstall its dependencies.
- Remove and reinstall the skill if the crash persists.
- Run openclaw doctor to catch any other dependency mismatches.
VPS Deploy: Port Already In Use
Symptom
After deploying to a VPS, OpenClaw fails with 'EADDRINUSE: address already in use :::3000'.
Cause
A previous OpenClaw process is still running or another service already owns the configured port.
Fix — step by step
- Run lsof -i :3000 to find the process using the port.
- Stop or kill the old process cleanly.
- Change the configured port if another service should keep using 3000.
- Delete stale PM2 processes if you use PM2.
- Restart with the updated port and verify the reverse proxy target.
Memory Not Persisting Between Restarts
Symptom
The agent seems to forget everything after a restart and MEMORY.md updates do not stick.
Cause
The memory path resolves to the wrong directory or the process does not have permission to write to the expected file.
Fix — step by step
- Confirm MEMORY_PATH points to the intended absolute location.
- Check the file permissions in the project directory.
- Fix ownership and write permissions if needed.
- Restart the process under the same deploy user.
- Add a fact, restart, and verify that the fact still exists.
Issue not listed here?
Describe your error and Milan will diagnose it — usually within a few hours.
Get help from Milan