-
-
Notifications
You must be signed in to change notification settings - Fork 69.5k
v2026.3.24: Two breaking changes — Express 5 route regression + duplicate plugin infinite loop #54755
Description
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
- Have an existing OpenClaw installation with an externally-installed msteams plugin
- Run
npm install -g [email protected] - Restart gateway
- 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
- Issue 1: Update bundled msteams plugin to use
/apiinstead of/api*for Express 5 compatibility - Issue 2: Add graceful duplicate plugin handling — warn once and use bundled version, do not loop