openclaw - 💡(How to fix) Fix Windows ESM regression: Telegram channel loader passes raw C:\ paths to strict ESM loader (v2026.4.24) [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#76167Fetched 2026-05-03 04:41:29
View on GitHub
Comments
1
Participants
2
Timeline
6
Reactions
2
Author
Timeline (top)
closed ×1commented ×1cross-referenced ×1mentioned ×1

Split from #75687 (closed prematurely — only Bugs 1–2 were addressed on main). This is Bug 5 from that report.

On Windows, the Telegram channel loader passes raw C:\... file paths to Node 22's strict ESM loader, which rejects them:

Received protocol 'c:'

All agents fail to start. This is a fatal regression in v2026.4.24 — the gateway cannot boot at all on Windows.

Root cause

Node 22's ESM loader requires file:/// URLs for absolute paths on Windows. The Telegram channel plugin appears to use raw filesystem paths (e.g. C:\Users\...\.openclaw\...) where it should use pathToFileURL() or equivalent.

Environment

openclaw: v2026.4.24 (broken)
node: 22.21.1
os: Windows 11 Pro N (10.0.26200)
platform: win32
bots: 8 Telegram accounts

Error Message

Crash / fatal error

Root Cause

Root cause

Code Example

Received protocol 'c:'

---

openclaw: v2026.4.24 (broken)
node: 22.21.1
os: Windows 11 Pro N (10.0.26200)
platform: win32
bots: 8 Telegram accounts
RAW_BUFFERClick to expand / collapse

Bug type

Crash / fatal error

Beta release blocker

No

Summary

Split from #75687 (closed prematurely — only Bugs 1–2 were addressed on main). This is Bug 5 from that report.

On Windows, the Telegram channel loader passes raw C:\... file paths to Node 22's strict ESM loader, which rejects them:

Received protocol 'c:'

All agents fail to start. This is a fatal regression in v2026.4.24 — the gateway cannot boot at all on Windows.

Root cause

Node 22's ESM loader requires file:/// URLs for absolute paths on Windows. The Telegram channel plugin appears to use raw filesystem paths (e.g. C:\Users\...\.openclaw\...) where it should use pathToFileURL() or equivalent.

Environment

openclaw: v2026.4.24 (broken)
node: 22.21.1
os: Windows 11 Pro N (10.0.26200)
platform: win32
bots: 8 Telegram accounts

Steps to reproduce

  1. Windows 11, Node 22
  2. Configure Telegram channel with bot accounts
  3. npm i -g [email protected] && openclaw gateway run
  4. Gateway crashes immediately with Received protocol 'c:'

Expected behavior

File paths should be converted to proper file:/// URLs before being passed to the ESM loader on Windows. Gateway should boot normally.

Actual behavior

Raw C:\ paths cause the ESM loader to interpret C: as a protocol scheme. Gateway crashes on startup. All agents fail to start.

OpenClaw version

v2026.4.24

Operating system

Windows

Related issues

  • Parent: #75687 (closed — only startup fanout and Bonjour crash were fixed)
  • Related: #75707 (broader event loop saturation — still open)

extent analysis

TL;DR

The Telegram channel loader should convert raw Windows file paths to file:/// URLs using pathToFileURL() or equivalent to fix the crash caused by Node 22's strict ESM loader.

Guidance

  • Verify that the issue is indeed caused by the ESM loader rejecting raw file paths by checking the error message for Received protocol 'c:'.
  • Use pathToFileURL() or a similar function to convert file paths to file:/// URLs before passing them to the ESM loader.
  • Test the fix on Windows with Node 22 to ensure the gateway boots normally and all agents start successfully.
  • Review related issues, such as #75687 and #75707, to ensure that the fix does not introduce new problems.

Example

const path = require('path');
const fileUrl = require('file-url');

// Assuming 'filePath' is a raw Windows file path, e.g., 'C:\Users\...\'
const url = new URL(fileUrl(filePath));

Notes

This fix assumes that the issue is solely caused by the ESM loader's rejection of raw file paths. If other factors contribute to the crash, additional debugging may be necessary.

Recommendation

Apply workaround: use pathToFileURL() or equivalent to convert file paths to file:/// URLs, as this directly addresses the identified root cause and should resolve the crash issue.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

File paths should be converted to proper file:/// URLs before being passed to the ESM loader on Windows. Gateway should boot normally.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Windows ESM regression: Telegram channel loader passes raw C:\ paths to strict ESM loader (v2026.4.24) [1 comments, 2 participants]