Skip to content

openclaw update exits code 1 on disabled-plugin ClawHub 429 even though core update succeeded; should treat disabled plugins as no-op for sync #73880

@islandpreneur007

Description

@islandpreneur007

Upstream bug report DRAFT — pending Trent blind-pass

Target: github.com/openclaw/openclaw/issues
Status: DRAFT v0 — not filed.


Title

openclaw update exits code 1 on disabled-plugin ClawHub 429 even though core update succeeded; should treat disabled plugins as no-op for sync

Environment

  • OpenClaw 2026.4.252026.4.26 (be8c246) update
  • Install: pnpm-detected install, real path under .npm-global/lib/node_modules/openclaw
  • Affected plugin: apify (in config but enabled: false)

Summary

openclaw update --channel stable --yes --no-restart --json succeeded on the core package update (4.25 → 4.26) but exited code 1 because the post-update plugin sync hit a ClawHub 429 (rate limit) for the apify plugin. The apify plugin is enabled: false in our config — it should never have been queued for sync.

Per docs.openclaw.ai/cli/update: "Post-update plugin sync failures fail the update result and stop restart follow-up work... fix the plugin install or update error, then rerun openclaw update." Following this guidance would require us to fix the rate-limited update for a plugin we don't even use, OR to remove the plugin entry entirely from config.

Reproduction

  1. Have apify (or any other ClawHub-distributed plugin) in plugins.entries with enabled: false and a config block present
  2. Run openclaw update --channel stable --yes --no-restart --json
  3. If ClawHub returns 429 for the apify update query, the entire update exits code 1

The ClawHub URL queried for the disabled plugin: /api/v1/packages/%40apify%2Fapify-openclaw-plugin/download

Source locations (4.26)

  • dist/update-kKaOeGGE.js:432-440 — ClawHub install/update path
  • dist/update-kKaOeGGE.js:451-456 — update errors pushed into outcomes
  • dist/update-cli-CgKMD06I.js:1274-1287 — JSON plugin update result status includes npm outcomes
  • dist/update-cli-CgKMD06I.js:1313-1325 — non-JSON result status
  • dist/update-cli-CgKMD06I.js:1797-1810 — post-update-plugins sets overall update error + exits code 1

Expected behavior

Plugin sync should:

  • Skip disabled plugins — they're not loaded, not running, sync isn't required for runtime correctness
  • OR: classify plugin-sync failures for disabled plugins as warnings (not fatal), allowing the update to succeed code 0 with a warning surfaced

Workaround we used

Treated the code 1 as non-blocking since:

  • Core 4.26 install completed
  • Apify is disabled (no runtime impact)
  • Doctor passed (with same baseline-of-known-warnings)

Continued with the controlled restart path (--no-restart had been passed, so we did the restart manually). 4.26 is now LIVE and healthy. But this required a judgment call against documented guidance.

Why this matters

The current behavior creates pressure to either (a) keep retrying updates against ClawHub until rate-limit clears or (b) remove disabled-plugin entries entirely. Both are friction. Disabled-but-configured is a legitimate state (we may want to enable apify later without re-adding the config block).

Suggested fix

A disabled plugin present in plugins.entries should be skipped or downgraded to warning during the plugin-sync step. Plugin sync is for plugins that will actually be loaded; it shouldn't gate the entire update on a plugin we're not running.

In the plugin-sync code path (dist/update-cli-CgKMD06I.js:1797-1810), check plugins.entries.<name>.enabled before attempting any ClawHub query. If enabled: false, log skip + move on.

No config option was found in 4.26 to suppress sync for disabled plugins — operators have to either (a) keep retrying until rate-limit clears, or (b) remove the plugin entry entirely from config (loses the keep-disabled-but-configured state).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions