Skip to content

v2026.4.5 regression: worker processes load all plugins, causing CPU saturation #62051

Description

@bryangauvin

Bug Report: v2026.4.5 Plugin Loading Regression

Summary

Upgrading from v2026.4.2 to v2026.4.5 causes every worker child process (openclaw, openclaw-cron, openclaw-approvals) to independently register all plugins (BlockRun, partner tools, etc.), creating massive CPU overhead. On a Mac Mini with 8-10 cores, the gateway spawns 87+ child processes each consuming 20-50% CPU, saturating all cores and rendering the system unusable.

Environment

  • Platform: macOS arm64, Mac Mini
  • Node: v22.22.1
  • OpenClaw: v2026.4.5 (3e72c03) — regressed from v2026.4.2 (d74a122)
  • Config: 12 agents, 19 enabled cron jobs, Discord + iMessage channels

Steps to Reproduce

  1. Install [email protected] globally
  2. Start gateway via launchd with existing v2026.4.2 config
  3. Wait 2-3 minutes for plugins to initialize

Expected Behavior

Plugin registration happens once in the gateway process. Worker processes inherit the registered providers without re-initializing.

Actual Behavior

Every child worker process independently loads and registers all plugins:

[plugins] BlockRun provider registered (55+ models via x402)
[plugins] Registered 1 partner tool(s): blockrun_x_users_lookup
[plugins] Not in gateway mode — proxy will start when gateway runs

This message repeats for each of 87+ spawned worker processes. Observable effects:

  • 103 total openclaw processes (vs ~8 on v2026.4.2)
  • 888% total CPU across all processes (vs ~2% on v2026.4.2)
  • Load average 17.77 on 8-10 core machine
  • Paperclip API response time >2 minutes (vs 10ms on v2026.4.2)
  • fseventsd also spikes to 27% CPU from filesystem watchers across all processes
  • Log shows infinite loop of "BlockRun provider registered" / "Not in gateway mode" messages

Additional Observations

  • The dingtalk extension also fails repeatedly on v2026.4.5 with: Cannot find module '/opt/homebrew/lib/node_modules/openclaw/dist/plugin-sdk/root-alias.cjs/telegram-core' — the plugin-sdk module paths appear to have changed.
  • Config keys added in v2026.4.5 (plugins.entries.memory-core.config.dreaming, agents.defaults.memorySearch) cause v2026.4.2 to reject config on downgrade: "must NOT have additional properties"

Workaround

Downgrade to v2026.4.2:

npm install -g [email protected]
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway

Suggested Fix

Plugin registration should be gated to the gateway process only. Worker/child processes should either:

  1. Skip plugin initialization entirely (inherit from parent)
  2. Check process.env.OPENCLAW_SERVICE_KIND === 'gateway' before registering providers
  3. Use a shared plugin registry instead of per-process initialization

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