#docker-error
Sorted by views, then solution_desc, solution, and root_cause length (desc).
2533 issues
OpenClaw's OpenRouter provider is not sending the Authorization: Bearer <token> header, causing all requests to fail with 401 authentication errors. Environment • OpenClaw version: 2026.3.13 (61d171a) • OS: Linux (Debian-based) • Node version: v22.22.1 Configuration // ~/.openclaw/openclaw.json "models": { "providers": { "openrouter": { "baseUrl": "https://openrouter.ai/api/v1", "api": "openai-completions", "models": [...] } } }, "auth": { "profiles": { "openrouter:default": { "provider": "openrouter", "mode": "api_key" } } }
After updating OpenClaw from version 2026.3.24 to 2026.3.31, all requests to Ollama Cloud models fail with HTTP 401 "unauthorized". The same API key works perfectly when tested directly via curl against the Ollama API.
Jesus.... you can't do a release with breaking anything eh? After [#35077 #35077](https://github.com/openclaw/openclaw/issues/35077) we're at it again...... <img width="1029" height="651" alt="Image" src="https://github.com/user-attachments/assets/e007d5b7-17fd-435f-b490-56d645be90c2" /> I explicitly asked also in soul.md and agents.md for a feedback after this but it continues to shoot a billion of tool calls without even telling me what the heck is doing. Then at random times, it just sto doing stuff randomly and it acts like it finished. Like, tell me the heck you did. It doesn't complete tasks 50% of the times, it shoots ton of tool calls without giving feedback and more than anything the goddamn UI doesn't update again and again. I have to switch between menu and chat to get a refreshed update with recent tool calls and all. I'm starting to lose hope and switch to something else like hermes agent or picoclaw or whatever else. This is starting to be annoying. Thanks god I'm on free SOTA models. I would have already thrown in the trash hunderd of bucks for child play. EDIT: NOW ASKING TO PRECISELY EDIT THE GITHUB PROJECT I DOWNLOADED THIS STUPID THING EDITED IS OWN OPENCLAW JSON CONFIG AND INCURRED IN COST AND USAGE. JESUS...... ALSO BROKE HIS OWN CONFIG....... NICE, WHAT A JEWEL THIS PROJECT IS.....
OpenClaw aborts requests after about 1 minute with Request timed out before a response was generated even though agents.defaults.timeoutSeconds is set to 18 minutes. <img width="1050" height="537" alt="Image" src="https://github.com/user-attachments/assets/963947c8-09cf-4902-88f4-76ea46eb40e4" />
On Windows, Feishu channel crashes on startup with ESM module loader error: absolute paths (g:\...) not supported, requires file:// URLs
When upgrading from 2026.3.24 to 2026.3.28, Gateway refuses to start with: ``` channels.feishu: invalid config: must NOT have additional properties channels.feishu.accounts.jeeves: invalid config: must NOT have additional properties channels.feishu.accounts.ivy: invalid config: must NOT have additional properties channels.feishu.accounts.crichton: invalid config: must NOT have additional properties channels.feishu.accounts.marple: invalid config: must NOT have additional properties ``` The external plugin `@larksuite/openclaw-lark` (2026.3.26) registers channel id `feishu` with a full config schema that includes keys like `replyMode`, `footer`, `botName`, `blockStreaming`, `markdown`, `dedup`, `threadSession`, and `uat`. However, the bundled `@openclaw/feishu` plugin also registers channel id `feishu` with a `channelConfigs` schema (new in 2026.3.28) that does **not** include these keys and sets `additionalProperties: false`. The bundled plugin is explicitly disabled (`plugins.entries.feishu.enabled: false`), but its schema still takes priority during config validation.
When `gateway.auth.token` is migrated from plaintext config to a SecretRef, the Browser Relay server still works, but the Chrome/Brave extension setup flow becomes incomplete. The relay auth path can resolve `gateway.auth.token` from SecretRefs, but the browser extension still expects a literal plaintext token in its own local storage (`chrome.storage.local.gatewayToken`). After hardening gateway auth to use a SecretRef, the extension prompts for a token and cannot discover it through first-party setup.
When Openclaw uses bc for calculation, the TUI output will omit duplicate number, but get normal when reopen the TUI
The QQBot channel extension has a bug where the CLI --target parameter is not properly mapped to the internal to field required by the QQBot channel implementation, causing message sending to fail. OpenClaw version: 2026.3.11 (29dc654) OS: macOS 15.7.3 (arm64) Node.js: v25.8.0 QQBot extension: @sliverp/qqbot@latest (unpinned version) Additional Context:
The WhatsApp health monitor's `stale-socket` restart cycle reliably re-establishes the **personal/inbound listener** but silently fails to reconnect the **Web listener** (used for all proactive outbound sends). This causes all outbound WhatsApp messaging — cron deliveries, `message` tool sends, announce-mode delivery — to fail with: ``` No active WhatsApp Web listener (account: default). Start the gateway, then link WhatsApp with: openclaw channels login --channel whatsapp --account default. ``` Meanwhile, inbound DMs continue to work normally (personal listener is fine), masking the failure.
After upgrading to OpenClaw `2026.3.28`, I started seeing repeated local connection attempts from `openclaw-gateway` (`node`) to `127.0.0.1:11434`, even though I was not intentionally using Ollama and did not have an explicit Ollama provider configured in `openclaw.json`. This behavior was visible both in logs and in a local network-monitoring app, which flagged the `node` process for abnormally frequent requests and temporarily blocked/suspended some of its connections. Disabling the bundled `ollama` provider stopped the behavior.
`existing-session` browser attach hangs on this machine even though Chrome remote debugging stays live and the OpenClaw gateway stays reachable. In the same environment, a local Playwright worker works normally, which isolates the failure to the OpenClaw existing-session path rather than general browser automation.
CDP endpoint returns `curl: (52) Empty reply from server` even when port 9222 appears as LISTENING, because a broken `netsh portproxy` self-loop rule (`127.0.0.1:9222 -> 127.0.0.1:9222`) causes `svchost/iphlpsvc` to own the port instead of Chrome — with no `chrome.exe` process running at all.
**What I'm doing:** Processing streaming chat responses that include tool calls from OpenAI-compatible APIs. **Expected behavior:** When one tool call in a batch is malformed (missing required 'function' key), the valid tool calls should still be processed. The malformed one should be skipped or logged, but valid tool calls should not be lost. **Actual behavior:** A bare `except KeyError: pass` in `_convert_delta_to_message_chunk` causes the entire list comprehension to fail, silently dropping ALL tool calls when ANY single tool call is malformed. **Root Cause:** In `libs/partners/openai/langchain_openai/chat_models/base.py`, lines 417-429: ```python if raw_tool_calls := _dict.get("tool_calls"): try: tool_call_chunks = [ tool_call_chunk( name=rtc["function"].get("name"), args=rtc["function"].get("arguments"), id=rtc.get("id"), index=rtc["index"], ) for rtc in raw_tool_calls ] except KeyError: pass # BUG: This silently drops ALL tool calls ``` The `except KeyError: pass` wraps the entire list comprehension. When any single tool call lacks the 'function' or 'index' keys, the entire batch is discarded without warning. **Impact:** - Silent data loss in streaming responses - Difficult to debug since no error is raised - Affects all OpenAI-compatible integrations **Suggested Fix:** Handle errors per-tool-call rather than for the entire batch: ```python tool_call_chunks = [] for rtc in raw_tool_calls: try: tool_call_chunks.append( tool_call_chunk( name=rtc["function"].get("name"), args=rtc["function"].get("arguments"), id=rtc.get("id"), index=rtc["index"], ) ) except KeyError: # Log warning or skip silently per-tool-call continue ``` **I am willing to submit a PR to fix this issue.** Please assign this issue to me. I have already identified the root cause and can implement the fix as suggested above.
`openclaw doctor --fix` does not fully migrate legacy cron metadata when a job still has top-level `notify: true` and `cron.webhook` is unset. Observed behavior: - Doctor reports legacy cron storage and warns about `notify: true` fallback. - Running `openclaw doctor --fix` prints `Cron store normalized at ~/.openclaw/cron/jobs.json.` - But the same legacy warning persists on subsequent doctor runs until the user manually edits `jobs.json` and removes `notify`. This creates a confusing loop where doctor claims normalization succeeded, but legacy state remains.