Skip to content

2026.4.25: chokidar v5 default-import + plugin-loader regression breaks gateway (rollback to 2026.4.24 fixes) #73176

Description

@w3i-William

Summary

OpenClaw 2026.4.25 fails to boot the embedded agent and most plugins due to a chokidar v5 default-import incompatibility in the bundled dist/*.js files. This causes Teams (and presumably Discord/Slack/etc.) to silently drop replies to inbound DMs, heartbeat lanes fail every cron tick, and only 3 of the normal 8+ plugins load.

Rolling back to 2026.4.24 fully restores the system.

Environment

  • OpenClaw: 2026.4.25 (installed via npm install -g openclaw)
  • Node: v22.22.1
  • macOS: Darwin 25.4.0 (arm64)
  • Install path: /opt/homebrew/lib/node_modules/openclaw/

Symptoms

After upgrading to 2026.4.25:

  1. Plugin set shrinks from 8 to 3. Gateway boot log shows:

    [gateway] ready (3 plugins: acpx, memory-core, msteams; 4.6s)
    

    Where 2026.4.24 loaded:

    [gateway] ready (8 plugins: acpx, bonjour, browser, device-pair, memory-core, msteams, phone-control, talk-voice; 2.0s)
    
  2. Heartbeat / agent lane fails on every tick with:

    [agent/embedded] embedded run agent end: ... isError=true
      error=LLM request rejected: messages: at least one message is required
      rawError=400 {"type":"error","error":{"type":"invalid_request_error","message":"messages: at least one message is required"}}
    
  3. Inbound Teams DMs are received but never get a reply. The msteams provider logs the inbound message reaching the agent lane, but the agent fails before producing a response (same "messages: at least one message is required" error).

  4. Persistent stderr noise:

    [memory] qmd memory unavailable; falling back to builtin: Cannot find package 'chokidar' imported from /Users/.../plugin-runtime-deps/openclaw-2026.4.25-.../dist/qmd-manager-FuXCtSYP.js
    Did you mean to import "chokidar/index.js"?
    [gateway] qmd memory startup initialization failed for agent "main": Cannot find package 'chokidar' imported from .../dist/manager-C6O7HXGc.js
    

Root cause

package.json declares:

"chokidar": "^5.0.0"

But the bundled dist files use a default import:

// dist/qmd-manager-FuXCtSYP.js (and 4 other dist files)
import chokidar from "chokidar";
// ...
this.watcher = chokidar.watch(Array.from(watchPaths), { ... });

[email protected] is "type": "module" and its exports field exposes only:

"exports": {
  ".": { "default": "./index.js" },
  "./handler.js": { "default": "./handler.js" }
}

The named watch export and FSWatcher are exposed, but the default export changed in v5 — import chokidar from "chokidar" no longer yields an object with a .watch() method via the dist/ ESM bundle's resolution path. Result: chokidar resolves but is not the expected shape, and Node emits Cannot find package 'chokidar' / Did you mean to import "chokidar/index.js"? warnings before the import fails.

This breaks 5 dist files:

dist/server-plugin-bootstrap-CqofqB0r.js
dist/refresh-CFfbjczz.js
dist/server.impl-C1dgKTkE.js
dist/manager-C6O7HXGc.js
dist/qmd-manager-FuXCtSYP.js

The qmd-manager failure cascades into the embedded agent's context assembly, which then sends an empty messages array to the LLM provider — explaining the "messages: at least one message is required" 400 from Anthropic on every heartbeat and every inbound Teams message.

Reproduction

  1. Have a healthy 2026.4.24 install with 8 plugins loading.
  2. npm install -g [email protected]
  3. openclaw gateway restart
  4. Observe [gateway] ready (3 plugins: ...) and stderr qmd memory unavailable.
  5. Send a DM through any messaging plugin (msteams in our case) — bot receives it, agent never replies.

Workarounds attempted (not sufficient)

  • Pinning [email protected] in plugin-runtime-deps package.json — gateway's bundled-deps stager re-installs [email protected] per the OpenClaw package.json spec on next boot, reverting the pin.
  • Patching all 5 dist files with import * as chokidar from "chokidar" — reduced chokidar resolution errors but did not restore the missing 5 plugins or fix the "messages empty" downstream agent-context failure. Patches are also clobbered on next npm install -g openclaw.

Working fix

Rollback to 2026.4.24:

npm install -g [email protected]
openclaw gateway restart
  • Plugin set restored to 8.
  • Embedded agent / heartbeat lane recovered.
  • Teams DMs reply normally again.

Suggested upstream fix

Either:

  1. Pin chokidar to ^3.6.0 in package.json (chokidar@3 still has the default export shape the bundle expects), or
  2. Update the bundle to use named imports (import { watch, FSWatcher } from "chokidar") compatible with chokidar@5+.

Option 2 is the more durable fix.

Severity

High. Any user upgrading to 2026.4.25 loses messaging-channel functionality silently (DMs are received but get no reply), most plugins fail to load, and heartbeat-driven cron work breaks. Rollback is straightforward but the failure mode is not obvious from the surface symptom (Teams "doesn't work").

Sidenote

The failure mode also masks API key exposure risk: while debugging, it's tempting to inspect ~/.openclaw/agents/<agent>/agent/auth-profiles.json which contains provider API keys in cleartext. Worth considering adding a redaction layer or pointer to a secrets manager when the agent's auth path is read for diagnostic purposes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions