Skip to main content
HowOpenClaw

OpenClaw Troubleshooting: Gateway Errors & Bot Fixes

Fix common OpenClaw errors: gateway won't start, bot not responding, pairing fails, cron not firing. Exact commands and step-by-step fixes.

Start here before anything else

Run this command first — it shows exactly what went wrong:

openclaw logs --tail 100

Look for lines starting with ERROR. The message almost always tells you the problem. If you can't make sense of it, copy it and search below.

Reference this page whenever something stops working. Start with logs.


Always start here

openclaw logs --tail 100

Most issues are visible in the logs. Look for ERROR lines. The error message usually tells you exactly what's wrong.


Gateway issues

Gateway won't start

openclaw gateway status

Common causes:

ErrorFix
EADDRINUSE: address already in useAnother process is on port 18789. Run lsof -i :18789 to find it. Change the port in config or kill the conflicting process.
Cannot find moduleNode.js version too old. Run node --version — need 22.14+ (Node 24 recommended). Update via nvm install 24.
Invalid JSON in configYour openclaw.json has a syntax error. Run `cat ~/.openclaw/openclaw.json
API key invalidYour AI provider key is wrong or expired. Check it at your provider's dashboard.

Gateway keeps crashing

openclaw logs --filter error --tail 200

If it's crashing on startup with a channel error, try disabling all channels temporarily and re-enabling them one at a time to find the bad config.

Channel isolation (v2026.4.12)

Channel startup failures are now isolated — one broken channel no longer blocks later channels from starting. Check logs for the specific channel that failed; the rest will continue to operate normally.

Port conflict

openclaw config set gateway.port 18790
openclaw gateway

Gateway restart issues (Windows & macOS)

Windows and macOS now handle gateway restarts more reliably:

  • Windows: Task Scheduler settings are preserved on reinstall, fast failures are reported accurately, and the Startup-entry launcher is used as fallback if scheduled task wasn't registered
  • macOS: LaunchAgent is re-bootstrapped if launchctl kickstart unloads it, installed-but-unloaded LaunchAgents are recovered during start and restart, and supervised-exit delay prevents crash-loop unloads

If restart still fails:

openclaw gateway status
openclaw gateway restart

Channel issues

Telegram not responding

  1. Check openclaw gateway status — is telegram: connected?
  2. Verify the bot token in config is correct (no extra spaces)
  3. Check if BotFather revoked the token — generate a new one if needed
  4. Make sure you sent /start to the bot before messaging
  5. Voice notes should transcribe automatically — if you see <media:audio> placeholders, check logs for transcription errors

Improved Telegram handling (v2026.4.12)

As of v2026.4.12, photo dimension validation has been improved. If an image doesn't meet Telegram's requirements, it automatically falls back to sending as a document. Voice note transcription in direct messages is now restored. Telegram command reply threading is preserved for QA verification.

Telegram improvements (v2026.4.14)

Forum topic names are now surfaced in agent context and persisted across restarts. AAC voice notes are remapped to .m4a so they transcribe correctly on strict endpoints. Read-only status commands bypass busy topic turns so /status responds immediately without waiting for an in-flight reply.

Telegram improvements (v2026.4.15)

Binary document uploads (.mobi, .epub) no longer leak binary bytes into prompt context or inflate token counts. Native Telegram commands keep auto-registering when commands.native and commands.nativeSkills are auto. The command-sync cache is now process-local — gateway restarts re-register the slash menu instead of relying on stale on-disk state.

Telegram group image fix (v2026.4.23)

Telegram group chats now parse remote markdown image syntax (![alt](url)) into outbound media payloads on the final reply path. If the model or a tool emitted markdown image syntax instead of a MEDIA: token, group deliveries previously fell back to plain-text image URLs. Images now render natively in groups. (Fixes #66191)

WhatsApp disconnected

WhatsApp sessions expire if unused for too long.

openclaw channels login --channel whatsapp

Re-scan the QR code. The session will reconnect.

If you see Error: session store corrupted:

rm -rf ~/.openclaw/sessions/whatsapp
openclaw channels login --channel whatsapp

Improved WhatsApp stability (v2026.4.12)

Watchdog timeouts are reset after reconnect, so quiet chats should no longer fall into reconnect loops. Per-account connection ownership is now centralized, so reconnects and login recovery stay attached to the live socket. Message reactions now route properly through the gateway-owned action path in both DMs and groups. Fallback now properly uses the first mediaUrls entry when mediaUrl is empty, restoring silently dropped media attachments.

WhatsApp reconnection fix (v2026.4.15)

The pending per-auth credentials save queue is now drained before sockets are reopened, preventing a reconnect-time race that could cause auth bootstrap to falsely restore from backup. Large outbound media send reliability has also been improved.

WhatsApp onboarding fix (v2026.4.23)

First-run WhatsApp setup is kept off the Baileys runtime dependency path, so packaged QuickStart installs can reach the WhatsApp setup screen before runtime deps are staged. If your packaged install was stuck on the WhatsApp step during onboarding, upgrading resolves it. (Fixes #70932)

Slack "not_in_channel" error

Your bot isn't in the channel you're trying to post to. In Slack:

/invite @YourBotName

Also check the bot's OAuth scopes — it needs chat:write at minimum.

Live DM replies now route correctly to the concrete inbound DM channel, so assistant replies should no longer disappear when pairing.

Slack interaction security (v2026.4.14)

As of v2026.4.14, the global allowFrom owner allowlist is enforced on Slack block-action and modal interactive events. If you have interactive components (buttons, modals) in your Slack integration, make sure your allowFrom list includes all users who should be able to trigger them.

Slack slash command menus (v2026.4.15)

Option menus for slash commands such as /verbose now work correctly when Slack renders native buttons. Each button is given a unique action ID while still routing through the shared openclaw_cmdarg* listener — previously, option selections could be rejected or misrouted when multiple buttons shared the same action ID.

Slack thread alias fix (v2026.4.21)

As of v2026.4.21, thread aliases are preserved in runtime outbound sends. Generic runtime sends now correctly stay in the intended Slack thread when the caller supplies threadTs. If your custom replies or automations were landing in the wrong thread, upgrading to v2026.4.21 resolves this. (#62947)

Slack group DM classification (v2026.4.23)

Multi-person group DMs (MPIMs) are now classified as group chat context. Verbose tool and plan progress messages are suppressed on non-DM Slack surfaces, so internal "Working…" traces no longer leak into group rooms while 1:1 DMs keep tool-call progress. If you were seeing unexpected tool progress output in Slack group DMs, upgrading to v2026.4.23 resolves it. (Fixes #70912)

Slack in proxy-only deployments

Socket Mode WebSocket connections now honor your ambient HTTP(S) proxy settings and NO_PROXY exclusions. If your deployment uses a proxy server for all outbound traffic, OpenClaw will route Socket Mode connections through the proxy automatically — no manual configuration needed.

iMessage not responding

iMessage requires macOS accessibility permissions. If they were revoked:

openclaw channels setup imessage

Re-grant permissions when prompted.

Improved iMessage startup (v2026.4.12)

Startup failures now retry transient watch.subscribe errors before tearing down the monitor. Startup error logging is sanitized so brief local transport stalls don't bounce the channel or leak raw imsg RPC payloads into logs.

Discord timeouts

If your Discord worker times out before a reply starts, OpenClaw now sends a visible timeout reply to the user — including in auto-created threads. Previously, timeouts resulted in silent failures with no feedback.

Better Discord media handling (v2026.4.12)

Media cap is now 100MB (previously 25MB), so larger video and audio files upload correctly. Generated images are tracked with real file paths. Text-plus-video deliveries intelligently split so both arrive properly. Numeric Discord server and channel IDs in config are auto-coerced to strings.

Discord tool-call text fix (v2026.4.15)

Standalone Gemma-style <function>...</function> tool-call payloads are now stripped from visible assistant text in Discord. This prevents raw tool-call XML from appearing in your channel when using Gemma-format models. Prose text and trailing replies are preserved — only actual standalone tool-call payloads are removed.

Discord slash command policy (v2026.4.23)

Native slash-command channel policy no longer bypasses configured owner or member restrictions. If a permissive channel policy was unintentionally opening owner-only or member-only slash commands to a broader audience, the stricter access rule now wins. Channel-policy fallback still applies when no stricter rule exists. (#70711)

Teams media and threading

  • Channel reply threading is now preserved in proactive fallback scenarios
  • Inline DM images are downloaded via Graph API correctly

Matrix mentions

Improved Matrix room mentions (v2026.4.12)

Room mention gating stays strict while accepting visible @displayName Matrix URI labels, so requireMention works for non-OpenClaw Matrix clients again.

Browser accessibility refs

New in v2026.4.21

Invalid ax<N> accessibility refs in browser act paths are now rejected immediately on receipt instead of waiting for the full browser action timeout to expire. If your agent or a skill passes a malformed accessibility ref, you'll see a fast, descriptive error in the logs rather than a long silence followed by a timeout. (#69924)

If you encounter browser action timeouts in logs, check that any ax<N> refs being passed to browser tools are well-formed. The immediate rejection makes these failures much faster to diagnose.

Docker fresh install fails

If openclaw onboard loops or fails in a fresh Docker container, update to v2026.3.24 or later. Earlier versions had a startup race condition where setup-time writes tried to reach the CLI before the gateway was up. This is now fixed — setup routes through the gateway process directly.


Audio and Transcription Issues

Audio transcription failures

As of v2026.4.12, audio transcription has been improved:

  • OpenAI, Groq, and Mistral transcription works reliably without weakening request validation
  • DNS pinning is disabled only for OpenAI-compatible multipart requests, while hostname validation is still maintained
  • Other request paths continue to validate hostnames as before

If you see transcription errors with specific providers, ensure your network configuration allows outbound connections to those services' APIs.

Voice note transcription on Telegram

Voice notes should transcribe automatically when sent to your Telegram bot. If you see <media:audio> placeholders instead of transcribed text:

  1. Check openclaw logs --filter telegram for transcription errors
  2. Verify your audio transcription provider is configured
  3. Ensure the audio file isn't corrupted

Automation issues

Automations not firing

openclaw cron list
openclaw cron status [automation-id]

Check:

  1. Is the schedule valid cron syntax? Test at crontab.guru
  2. Is the Gateway running at the scheduled time? (Laptop sleeping breaks this — see Module 6: Autonomous Tasks)
  3. Is the timezone correct? Add "timezone": "America/New_York" to the automation config if not specified

Interrupted recurring jobs are replayed on the first gateway restart (not the second), and failure notifications are sent through the job's primary delivery channel using the same session context as successful delivery when no explicit failureDestination is configured.

Test an automation manually

openclaw cron run [automation-id]

This runs it immediately regardless of schedule.

Automation runs but sends nothing

If suppressEmpty is set, the agent may be deciding there's nothing worth sending. Test the prompt manually in WebChat to see what the agent produces:

openclaw dashboard

AI response issues

Slow responses

  • Check your AI provider's status page for outages
  • Try a smaller model: "model": "claude-haiku-4-5-20251001" for faster responses
  • Check your internet connection

Agent ignoring SOUL.md instructions

  • SOUL.md over 200 lines? The agent may be ignoring sections. Trim it.
  • Instructions too vague? "Be concise" is ignored. "Default to 2-3 sentences" works.
  • Restart the Gateway after editing SOUL.md: stop and re-run openclaw gateway

Tool not working

openclaw tools list

Check that the tool is enabled and available to the current agent. If web_search isn't in the list, it's not in your config or not available to this agent's profile.

New built-in tools include video_generate and music_generate for media creation. Check that you've configured the appropriate providers if you want to use these.

Provider-specific issues

OpenAI: Missing reasoning effort now defaults to high on OpenAI Responses, WebSocket, and compatible completions transports — explicit per-run reasoning levels are still honored.

Ollama:

  • Models using the native api: "ollama" path can now optionally display thinking output when /think is set to a non-off level
  • Model discovery caching is improved: /api/show context-window and capability metadata are cached during model discovery, so repeated picker refreshes stop refetching unchanged models while still retrying after empty responses and invalidating on digest changes
  • (v2026.4.14) The configured embedded-run timeout is now forwarded into the global stream timeout, so slow local Ollama runs no longer hit the default cutoff instead of your configured timeoutSeconds
  • (v2026.4.14) stream_options.include_usage is now sent for streaming completions, so Ollama reports real token usage instead of bogus counts that triggered premature compaction
  • (v2026.4.14) Vision capability detection reads from /api/show response, so valid Ollama vision models are no longer rejected by image/PDF tools
  • (v2026.4.15) The ollama/ provider prefix is now automatically stripped from model IDs in chat requests, so configured refs like ollama/qwen3:14b-q8_0 no longer 404 against the Ollama API

Codex CLI: System prompts are now passed through Codex's model_instructions_file config override so fresh Codex CLI sessions receive the same prompt guidance as Claude CLI sessions.

Codex OAuth: Upstream authorize URL scopes are no longer rewritten, so new Codex sign-ins no longer fail with invalid_scope before returning an authorization code.

New in v2026.4.15

The Codex plugin is now auto-enabled when codex is selected as an embedded agent harness runtime (including forced default, per-agent, and OPENCLAW_AGENT_RUNTIME paths). Previously, you had to manually enable the Codex plugin in your config even when selecting Codex as your runtime.

Image generation issues (v2026.4.23)

OpenAI gpt-image-2 without an API key (v2026.4.23)

OpenAI image generation and reference-image editing now route through Codex OAuth when an openai-codex profile is active. This means openai/gpt-image-2 works without an OPENAI_API_KEY for users already authenticated with Codex. Previously, image generation probed OPENAI_API_KEY first and would fail if only Codex OAuth was configured. (Fixes #70703)

OpenAI reference-image edits (v2026.4.23)

Reference-image edits are now sent as guarded multipart uploads instead of JSON data URLs, restoring complex multi-reference gpt-image-2 edits that were failing. If your image-edit runs were silently losing reference images, upgrading resolves it. (Fixes #70642) Thanks @dashhuang.

OpenRouter image generation (v2026.4.23)

OpenRouter image generation and reference-image editing now work through image_generate with OPENROUTER_API_KEY. (Fixes #55066) Additionally, OpenRouter multimodal image-understanding prompts now send user text before image parts, restoring non-empty vision responses. (Fixes #70410) Thanks @notamicrodose.

Private-network SSRF opt-in for image providers (v2026.4.23)

Google Gemini image generation and OpenAI-compatible image generation endpoints now honor the private-network SSRF opt-in. Trusted proxy setups that resolve Google API hosts to private addresses can use image_generate with Gemini, and trusted LocalAI/LAN image_generate routes work without disabling SSRF checks globally. (Fixes #67216, #62879) Thanks @seitzbg.

Image model configuration precedence (v2026.4.23)

Explicit image-model configuration is now honored before native-vision skips. OpenClaw respects agents.defaults.imageModel, tools.media.image.models, and provider image defaults (such as MiniMax VL) when the active chat model is text-only. If media understanding was skipping your configured image model because the chat model advertised vision, this is fixed. (Fixes #47614, #63722, #69171)

Anthropic Vertex ADC model discovery (v2026.4.23)

ADC-backed Anthropic Vertex model discovery is restored after the lightweight provider-discovery path. Synthetic auth is exposed on bootstrap discovery, and copied env snapshots are honored when probing the default GCP ADC path. If Vertex-backed Claude models stopped appearing in discovery, upgrading resolves it. (Fixes #65715) Thanks @feiskyer.

New local model options (v2026.4.12)

OpenClaw now includes bundled LM Studio provider with onboarding, runtime model discovery, stream preload support, and memory-search embeddings for local/self-hosted OpenAI-compatible models. A bundled Codex provider is also available with plugin-owned app-server harness so codex/gpt-* models use Codex-managed auth and native threads.

Agent execution reporting accuracy

/exec command reports now accurately reflect real runtime behavior. Host-aware fallback policies are reported correctly:

  • Gateway host: full/off (full execution or off)
  • Node deployment: full/off
  • Sandbox environment: deny/off (deny execution or off)

If host=auto, the policy adapts to your deployment type. Previously, stale stricter defaults were shown in reports even when the actual behavior was more permissive. Check your logs or /exec output to see the current policy for your setup.

OpenAI-compatible endpoint debugging

Configured OpenAI-compatible endpoints are now classified in embedded-agent debug logs, making local and proxy routing issues easier to diagnose. Check your logs to see how your custom endpoints are being classified.

Model Auth status

New in v2026.4.15

The Control UI Overview now includes a Model Auth status card showing OAuth token health and provider rate-limit pressure at a glance. The card surfaces attention callouts when OAuth tokens are expiring or have already expired. If you see a warning on this card, re-authenticate the affected provider using openclaw configure or the Control UI setup flow. See Key Concepts for more detail on what the Model Auth status card monitors.


Config issues

Finding your config

cat ~/.openclaw/openclaw.json

Validating your config

openclaw config validate

This checks JSON syntax and required fields. As of v2026.4.12, asyncCompletion is now properly recognized in the generated zod schema, so documented async completion config no longer fails with an unrecognized-key error.

Resetting to defaults

openclaw config reset

This resets openclaw.json to defaults but doesn't touch SOUL.md, USER.md, or workspace files.

Legacy config aliases

Legacy public config aliases like talk.voiceId, talk.apiKey, and channel/group/room allow toggles have been removed in favor of canonical public paths and enabled. However, existing configs with legacy aliases still load at startup.

For guidance on updating your config:

openclaw doctor --fix

This will apply migrations and show you exactly what changed. Test your setup after running this command.

Doctor improvements (v2026.4.12)

openclaw doctor now warns when on-disk agent directories still exist under ~/.openclaw/agents/<id>/agent but the matching agents.list[] entries are missing from config. This helps catch stale agent state. The --fix flag no longer rewrites legacy Discord preview-streaming config into the nested modern shape, so downgrades can recover without hand-editing.

Doctor dependency repair (v2026.4.21)

As of v2026.4.21, openclaw doctor --fix can now repair bundled plugin runtime dependencies from doctor paths. This means packaged installs can recover missing channel or provider dependencies without triggering broad core dependency installs. If a channel or provider plugin was silently failing to load after a packaged install, run openclaw doctor --fix to restore the missing dependencies.

Auth profile persistence

Explicit auth-profile upserts are now persisted directly without stale external credential state. Profile changes are saved without requiring external CLI sync for local writes.


Update issues

Update fails with Node version error

As of v2026.3.24, openclaw update preflights the target release's Node.js requirements. If your Node runtime is too old, you'll see a clear upgrade message. Update Node first:

nvm install 24

Then retry the update:

openclaw update

Update with mixed package managers

If you have a mixed Homebrew-plus-nvm setup, openclaw update now prefers the npm binary that owns the installed global OpenClaw prefix. This ensures mixed setups update the right install.

Improved plugin refresh (v2026.4.12)

openclaw update now respawns tracked plugin refresh from the updated entrypoint after package self-updates, so update stops failing on stale hashed dist/install.runtime-*.js chunk imports.

npm install deprecation warning fix (v2026.4.21)

As of v2026.4.21, the node-domexception alias is mirrored into the root package.json overrides. npm installs no longer surface the deprecated google-auth-library → gaxios → node-fetch → fetch-blob → node-domexception dependency chain pulled through Pi/Google runtime dependencies. If you were seeing this deprecation warning on npm install, upgrading to v2026.4.21 resolves it. Thanks @vincentkoc.


Memory & Dreaming issues

Dreaming not consolidating memories

Check that dreaming is enabled:

{
  "memory": {
    "dreaming": {
      "enabled": true
    }
  }
}

Check the Dreams UI in your Control Panel or run:

openclaw /dreaming

Improved dreaming stability (v2026.4.12)

Dreaming now properly consumes managed heartbeat events exactly once, stages light-sleep confidence from all recorded short-term signals instead of recall-only counts, and stops dreaming from re-ingesting its own narrative transcripts. Transient narrative cleanup is more robust with retry logic for timed-out deletes and stale session artifact scrubbing. Dream diary timestamps now use host local timezone when dreaming.timezone is unset and include timezone abbreviation in DREAMS.md.

Memory too large or too old

Tune recall decay with:

{
  "memory": {
    "dreaming": {
      "recencyHalfLifeDays": 30,
      "maxAgeDays": 365
    }
  }
}

Adjust recencyHalfLifeDays to control how quickly recent events fade, and maxAgeDays to set the maximum retention window.

Backfill issues

If backfilling historical diary entries, ensure source-day labels are preserved:

openclaw diary commit [path]    # Commit historical entries to memory
openclaw diary reset [path]     # Reset stale or incorrect entries

The backfill process now normalizes diary headings and tightens claim splitting automatically.

Better memory file handling (v2026.4.12)

memory directory watching now works reliably on macOS + Node 25, ignoring non-markdown churn so nested note changes still sync. Unicode letters, digits, and combining marks in wiki slugs are now preserved with safe byte-length caps. Channel sessions are now allowed in the shipped default QMD scope. The legacy lowercase root memory file is no longer registered as a separate default collection. Nested daily notes under memory/**/YYYY-MM-DD.md now feed short-term recall properly.

Active Memory not pulling in context

If Active Memory is enabled but not surfacing relevant memories, try adjusting the mode:

{
  "memory": {
    "activeMemory": {
      "enabled": true,
      "mode": "search",
      "maxResults": 5
    }
  }
}

Active Memory (v2026.4.12)

New optional Active Memory plugin gives your agent a dedicated memory sub-agent right before the main reply, pulling in relevant preferences without manual "remember this" prompts. Includes configurable message/recent/full context modes, live /verbose inspection, and advanced prompt/thinking overrides for tuning. Memory recall now defaults to search mode with better search-path telemetry for more predictable out-of-the-box behavior.

Active Memory context path (v2026.4.14)

As of v2026.4.14, recalled memories are placed on the hidden untrusted prompt-prefix path rather than injected into the system prompt. This is a security and reliability improvement — it means Active Memory context is properly isolated and labeled in gateway debug logs, so you can see exactly what the model received.

QMD collection recreation (v2026.4.23)

Stale managed QMD collections are now recreated on startup repair when the collection name already exists. This means root memory narrows back to MEMORY.md instead of getting stuck on broad workspace markdown indexing after a collection-name collision. If your memory recall was returning unrelated files from across your workspace instead of focused MEMORY.md context, upgrading resolves it.


Network issues

Sandbox connectivity with HTTP proxy

The network fetch guard now correctly handles trusted environment proxy mode. If you're using a trusted proxy for outbound connections, DNS pinning is automatically disabled so the proxy can resolve outbound hostnames. This ensures proxy-only sandbox deployments can reach external hosts without manual workarounds.


Plugin and Skill issues

Plugins not loading

Plugin loading narrowed (v2026.4.12)

Plugin loading has been tightened to manifest-declared needs. CLI, provider, and channel activation are now narrowed to what plugins explicitly declare, preserving explicit scope and trust boundaries. This means plugins no longer load unrelated runtime code on startup — only what's needed.

Check that plugins are enabled:

openclaw plugins list

If a plugin isn't showing up, verify it's listed in your config and check logs for activation errors:

openclaw logs --filter plugin

Skills not showing up

Skills require both the npm package and optional auth setup:

openclaw skills list
openclaw skills info [skill-name]

The info command shows whether dependencies are met and where to get required API keys.

Memory-wiki not recognized

Memory-wiki CLI fix (v2026.4.12)

openclaw wiki now properly honors memory-wiki when plugins.allow is set, and passes the active app config into the metadata registrar so plugin-owned wiki commands resolve the live plugin config instead of falling back to defaults.

Ensure the memory-wiki plugin is enabled:

{
  "plugins": {
    "allow": ["memory-wiki"]
  }
}

Mobile deployment issues

Android manual connect with TLS

Blank port input is now allowed only for TLS manual gateway endpoints. Standard HTTPS Tailscale hosts will default to port 443 without silently changing cleartext manual connects to port 80.

Android pairing

Clear stale setup-code auth on new QR scans. The system now:

  • Bootstraps operator and node sessions from fresh pairing
  • Prefers stored device tokens after bootstrap handoff
  • Pauses pairing auto-retry while the app is backgrounded

This makes scan-once Android pairing more reliable.

macOS Talk Mode

After granting microphone permission on first enable, Talk Mode continues to start instead of requiring a second toggle. The permission grant workflow is now more intuitive on macOS.

New Talk Mode speech provider (v2026.4.12)

Experimental local MLX speech provider for Talk Mode on macOS with explicit provider selection, local utterance playback, interruption handling, and system-voice fallback.


Video and Media Generation

Google Veo video generation failures

As of v2026.4.12, Google Veo video generation no longer sends the unsupported numberOfVideos request field, allowing Gemini Developer API Veo runs to complete successfully.


QA and Testing Issues

Packaged CLI startup issues

As of v2026.4.12, packaged CLI startup and completion cache generation no longer read repo-only QA scenario markdown. The bundled QA scenario pack is shipped in npm releases, and openclaw completion --write-state keeps working even if QA setup is broken.


MiniMax OAuth Issues

MiniMax portal authentication fails

As of v2026.4.12, openclaw configure now writes api: "anthropic-messages" and authHeader: true into the minimax-portal config patch during setup. This ensures re-authenticated portal setups keep Bearer auth routing working correctly.


Security issues

Gateway credential security (v2026.4.12)

The shipped example gateway credential in .env.example is now blanked, and startup fails when a copied placeholder token or password is still configured. This prevents operators from accidentally launching with a publicly known secret.

Check that your .env file uses real credentials:

cat ~/.openclaw/.env.example

If you copied the example file, ensure all placeholder values are replaced with real credentials before starting the gateway.

Auth/Commands owner enforcement

Security fix in v2026.4.21

As of v2026.4.21, owner-enforced commands require explicit owner identity — either an owner-candidate match or the internal operator.admin role — when enforceOwnerForCommands is true.

What changed: Previously, a wildcard allowFrom setting or an empty commands.ownerAllowFrom list could act as a permissive fallback, allowing non-owner senders to reach owner-only commands. This fallback has been removed. (#69774) Thanks @drobison00.

Who is affected: If you have enforceOwnerForCommands: true set and have not explicitly configured commands.ownerAllowFrom, review your setup. Non-owner users who previously reached owner-only commands through a permissive allowFrom wildcard will now be correctly rejected.

What to do: Explicitly list your intended owner identities in commands.ownerAllowFrom:

{
  "commands": {
    "enforceOwnerForCommands": true,
    "ownerAllowFrom": ["telegram:123456789", "slack:U0123ABCDEF"]
  }
}

If you intentionally want multiple users to reach certain commands, use role-based allowFrom on those specific commands rather than relying on the owner enforcement path.


Getting help

If you can't fix it:

  1. Official docs: docs.openclaw.ai/help/troubleshooting
  2. Discord: The OpenClaw Discord has a #help channel with the community
  3. GitHub issues: github.com/openclaw/openclaw/issues

When asking for help, include the output of openclaw logs --tail 50 and openclaw gateway status.

FAQ

What should I check first when OpenClaw stops working?
Always start with the logs: run `openclaw logs --tail 100` and look for ERROR lines. The error message usually identifies the exact problem. From there, check gateway status with `openclaw gateway status`. See the full troubleshooting guide for common issues.
Why is my Telegram bot not responding?
Check that the gateway shows `telegram: connected` in `openclaw gateway status`. Verify the bot token in config has no extra spaces. Make sure you sent `/start` to the bot before messaging it. Also confirm BotFather hasn't revoked the token.
How do I fix a WhatsApp disconnection in OpenClaw?
Run `openclaw channels login --channel whatsapp` and re-scan the QR code. If the session store is corrupted, delete it first with `rm -rf ~/.openclaw/sessions/whatsapp` then run the login command again.
Why are my automations not firing?
Run `openclaw cron list` to check they exist, then verify the cron schedule syntax is valid (test at crontab.guru). Make sure the Gateway was running at the scheduled time — a sleeping laptop will miss scheduled jobs. Also check the timezone setting in your automation config.