openclaw - 💡(How to fix) Fix [Bug]: openclaw onboard --mode local --no-install-daemon fails with shouldNormalizeGoogleProviderConfig is not a function, while node dist/index.js onboard ... succeeds [1 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#61676Fetched 2026-04-08 02:56:06
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
labeled ×2

openclaw onboard --mode local --no-install-daemon fails before entering onboarding with loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function, while node dist/index.js onboard --mode local --no-install-daemon enters the wizard successfully under the same installation.

Error Message

Observed failing command: openclaw onboard --mode local --no-install-daemon

Observed successful command in the same installation: node /app/dist/index.js onboard --mode local --no-install-daemon

Observed wrapper path: /usr/local/bin/openclaw

readlink -f /usr/local/bin/openclaw /app/openclaw.mjs

Observed error: Failed to read config at /home/node/.openclaw/openclaw.json TypeError: loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function

Observed direct module checks showing the Google facade function exists and is callable: • /app/dist/extensions/google/api.js exported shouldNormalizeGoogleProviderConfig as a function. • /app/dist/api-TjglDpod.js exported the corresponding alias as a function. • Importing /app/dist/google-mAj2Qjmq.js directly and calling the exported alias returned successfully.

Observed stack points to startup/plugin presence scanning before onboarding: • /app/dist/status-kAlAYH0e.js • /app/dist/plugin-sdk/command-auth.js • /app/dist/config-presence-B5Q-0hmq.js • /app/dist/plugin-auto-enable-CHlwMoie.js • /app/extensions/irc/src/runtime-api.ts...

Root Cause

The failure was observed first with a reused pre-existing OpenClaw configuration carried forward from an older instance into 2026.4.4, including multiple provider entries (for example OpenAI, Anthropic, Google, and local model providers) as well as additional plugin, channel, and skill configuration. This is included only to describe the tested environment; it does not isolate the root cause.

Fix Action

Fix / Workaround

Affected users/systems/channels: Users running the standard openclaw onboard CLI path in the reported Docker environment with the observed ~/.openclaw state. Severity: Blocks workflow. Frequency: Reproduced in the reported environment when running openclaw onboard --mode local --no-install-daemon; direct node /app/dist/index.js onboard --mode local --no-install-daemon did not reproduce the failure. Consequence: Failed onboarding through the standard openclaw onboard command; users must use the direct dist entry as a workaround.

Observed workaround: node /app/dist/index.js onboard --mode local --no-install-daemon

Code Example

Observed failing command:
openclaw onboard --mode local --no-install-daemon

Observed successful command in the same installation:
node /app/dist/index.js onboard --mode local --no-install-daemon

Observed wrapper path:
/usr/local/bin/openclaw

readlink -f /usr/local/bin/openclaw
/app/openclaw.mjs

Observed error:
Failed to read config at /home/node/.openclaw/openclaw.json TypeError: loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function

Observed direct module checks showing the Google facade function exists and is callable:
/app/dist/extensions/google/api.js exported shouldNormalizeGoogleProviderConfig as a function.
 /app/dist/api-TjglDpod.js exported the corresponding alias as a function.
 Importing /app/dist/google-mAj2Qjmq.js directly and calling the exported alias returned successfully.

Observed stack points to startup/plugin presence scanning before onboarding:
/app/dist/status-kAlAYH0e.js
/app/dist/plugin-sdk/command-auth.js
/app/dist/config-presence-B5Q-0hmq.js
/app/dist/plugin-auto-enable-CHlwMoie.js
/app/extensions/irc/src/runtime-api.ts...
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

openclaw onboard --mode local --no-install-daemon fails before entering onboarding with loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function, while node dist/index.js onboard --mode local --no-install-daemon enters the wizard successfully under the same installation.

Steps to reproduce

  1. Run OpenClaw 2026.4.4 in the Docker image used below with an existing ~/.openclaw/openclaw.json.
  2. Run openclaw onboard --mode local --no-install-daemon (Optional).
  3. Observe startup failure with Failed to read config ... shouldNormalizeGoogleProviderConfig is not a function.
  4. Run node /app/dist/index.js onboard --mode local --no-install-daemon in the same container.
  5. Observe that onboarding enters the wizard and shows the initial security prompt.

Capture of the non-working one using openclaw onboard:

<img width="1137" height="774" alt="Image" src="https://github.com/user-attachments/assets/21dfb0a5-7492-4fd2-8892-d79786758518" />

Expected behavior

openclaw onboard --mode local --no-install-daemon should enter the onboarding wizard, matching the observed behavior of node /app/dist/index.js onboard --mode local --no-install-daemon in the same installation.

Capture of the working one using node /app/dist/index.js:

<img width="767" height="707" alt="Image" src="https://github.com/user-attachments/assets/27ff18bf-1dd2-4fa9-a367-5ac0828edc8f" />

Actual behavior

openclaw onboard --mode local --no-install-daemon fails before the wizard with:

Failed to read config at /home/node/.openclaw/openclaw.json TypeError: loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function

Observed stack includes:

at shouldNormalizeGoogleProviderConfig (/app/dist/google-mAj2Qjmq.js:21:115) at normalizeProviderSpecificConfig (/app/dist/io-C0UR5aTY.js:14484:29) at applyModelDefaults (/app/dist/io-C0UR5aTY.js:14622:34) at materializeRuntimeConfig (/app/dist/io-C0UR5aTY.js:14878:10) at validateConfigObject (/app/dist/io-C0UR5aTY.js:15261:13) at validateConfigObjectWithPluginsBase (/app/dist/io-C0UR5aTY.js:15278:37) at validateConfigObjectWithPlugins (/app/dist/io-C0UR5aTY.js:15265:10) at Object.loadConfig (/app/dist/io-C0UR5aTY.js:16905:25) at loadConfig (/app/dist/io-C0UR5aTY.js:17389:35) at primeConfiguredContextWindows (/app/dist/context-CwAy6mzS.js:117:35) ... at /app/dist/status-kAlAYH0e.js:19:24 ... at /app/extensions/irc/src/runtime-api.ts:36:20 ... at /app/dist/config-presence-B5Q-0hmq.js:146:19 at listBundledChannelPlugins (/app/dist/config-presence-B5Q-0hmq.js:164:10) at listPotentialConfiguredChannelIds (/app/dist/config-presence-B5Q-0hmq.js:206:26) at collectCandidateChannelIds (/app/dist/plugin-auto-enable-CHlwMoie.js:304:39) at resolveConfiguredPlugins (/app/dist/plugin-auto-enable-CHlwMoie.js:386:27)

In the same installation, direct execution of:

node /app/dist/index.js onboard --mode local --no-install-daemon entered the onboarding wizard and displayed the initial security prompt instead of failing.

OpenClaw version

2026.4.4

Operating system

Linux 6.12.76-linuxkit (arm64)

Install method

docker

Model

NOT_ENOUGH_INFO

Provider / routing chain

NOT_ENOUGH_INFO

Additional provider/model setup details

The failure was observed first with a reused pre-existing OpenClaw configuration carried forward from an older instance into 2026.4.4, including multiple provider entries (for example OpenAI, Anthropic, Google, and local model providers) as well as additional plugin, channel, and skill configuration. This is included only to describe the tested environment; it does not isolate the root cause.

Logs, screenshots, and evidence

Observed failing command:
openclaw onboard --mode local --no-install-daemon

Observed successful command in the same installation:
node /app/dist/index.js onboard --mode local --no-install-daemon

Observed wrapper path:
/usr/local/bin/openclaw

readlink -f /usr/local/bin/openclaw
/app/openclaw.mjs

Observed error:
Failed to read config at /home/node/.openclaw/openclaw.json TypeError: loadFacadeModule(...).shouldNormalizeGoogleProviderConfig is not a function

Observed direct module checks showing the Google facade function exists and is callable:
• /app/dist/extensions/google/api.js exported shouldNormalizeGoogleProviderConfig as a function.
• /app/dist/api-TjglDpod.js exported the corresponding alias as a function.
• Importing /app/dist/google-mAj2Qjmq.js directly and calling the exported alias returned successfully.

Observed stack points to startup/plugin presence scanning before onboarding:
• /app/dist/status-kAlAYH0e.js
• /app/dist/plugin-sdk/command-auth.js
• /app/dist/config-presence-B5Q-0hmq.js
• /app/dist/plugin-auto-enable-CHlwMoie.js
• /app/extensions/irc/src/runtime-api.ts...

Impact and severity

Affected users/systems/channels: Users running the standard openclaw onboard CLI path in the reported Docker environment with the observed ~/.openclaw state. Severity: Blocks workflow. Frequency: Reproduced in the reported environment when running openclaw onboard --mode local --no-install-daemon; direct node /app/dist/index.js onboard --mode local --no-install-daemon did not reproduce the failure. Consequence: Failed onboarding through the standard openclaw onboard command; users must use the direct dist entry as a workaround.

Additional information

Observed workaround: node /app/dist/index.js onboard --mode local --no-install-daemon

extent analysis

TL;DR

The most likely fix is to update the openclaw command to use the same execution path as the working node /app/dist/index.js command.

Guidance

  • Investigate the difference in execution paths between openclaw onboard --mode local --no-install-daemon and node /app/dist/index.js onboard --mode local --no-install-daemon to identify the root cause of the failure.
  • Verify that the shouldNormalizeGoogleProviderConfig function is properly exported and imported in the openclaw command execution path.
  • Check the openclaw.mjs wrapper script to ensure it is correctly invoking the index.js entry point.
  • Consider updating the openclaw command to use the same execution path as the working node /app/dist/index.js command, potentially by modifying the openclaw.mjs wrapper script.

Example

No code example is provided as the issue is related to the execution path and wrapper scripts, which are specific to the openclaw command and its environment.

Notes

The issue appears to be related to the difference in execution paths between the openclaw command and the direct node /app/dist/index.js execution. The openclaw command is using a wrapper script openclaw.mjs which may be causing the issue. Further investigation is needed to identify the root cause and provide a definitive fix.

Recommendation

Apply the workaround by using the direct node /app/dist/index.js execution path until the root cause is identified and fixed. This will allow users to continue with the onboarding process while the issue is being investigated and resolved.

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

openclaw onboard --mode local --no-install-daemon should enter the onboarding wizard, matching the observed behavior of node /app/dist/index.js onboard --mode local --no-install-daemon in the same installation.

Capture of the working one using node /app/dist/index.js:

<img width="767" height="707" alt="Image" src="https://github.com/user-attachments/assets/27ff18bf-1dd2-4fa9-a367-5ac0828edc8f" />

Still need to ship something?

×6

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

Back to top recommendations

TRENDING