Skip to content

v2026.3.24: Two breaking changes — Express 5 route regression + duplicate plugin infinite loop #54755

@blockmos

Description

@blockmos

Summary

Upgrading to 2026.3.24 caused a ~20 minute outage due to two breaking changes introduced in this release.

Issue 1: Express 5 Route Breaking Change

Affected file: dist-B5zoW1KK.js line 3425 (bundled msteams plugin)

Problem: The bundled msteams plugin registers /api* as a route pattern. This is invalid in Express 5's updated path-to-regexp and causes the gateway to fail to start or crash immediately.

Workaround: Patch line 3425, changing /api* to /api. Since use() already matches prefixes, this restores correct behavior.

Impact: Gateway fails to start after update. Teams webhook stops responding. Complete outage.

Note: This patch is overwritten on every update, requiring manual re-application until fixed upstream.


Issue 2: Duplicate Plugin Infinite Warning Loop

Problem: If a user previously had the msteams plugin installed as an external npm package (older versions), 2026.3.24's new duplicate plugin detection enters an infinite warning loop rather than gracefully handling or ignoring the duplicate.

Environment: Had both:

  • Bundled plugin: 2026.3.22
  • External npm plugin: 2026.3.13

Workaround: Remove the external plugin reference from openclaw.json and delete the external package. The bundled plugin then loads correctly.

Impact: Gateway starts but immediately enters an infinite log loop, consuming resources and making the system unresponsive.


Steps to Reproduce

  1. Have an existing OpenClaw installation with an externally-installed msteams plugin
  2. Run npm install -g [email protected]
  3. Restart gateway
  4. Observe infinite loop (Issue 2) and/or gateway crash on Teams webhook requests (Issue 1)

Environment

  • OS: Ubuntu Linux 6.17.0-19-generic
  • Node: v22.22.1
  • Previous version: 2026.3.23-2
  • Channel: msteams

Suggested Fixes

  1. Issue 1: Update bundled msteams plugin to use /api instead of /api* for Express 5 compatibility
  2. Issue 2: Add graceful duplicate plugin handling — warn once and use bundled version, do not loop

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