Description
After onboarding a sandbox with WeChat channel enabled via non-interactive env vars (WECHAT_ACCOUNT_ID, WECHAT_BASE_URL, etc.), the sandbox openclaw.json is missing both the plugin install registry entry (plugins.installs["openclaw-weixin"]) and the channel block (channels["openclaw-weixin"]). The plugin entries section has enabled=True for openclaw-weixin, but the install registry and channel configuration that seed-wechat-accounts.py is supposed to restore after openclaw plugins install are absent.
This means the WeChat bridge cannot function inside the sandbox — the gateway has no channel configuration to connect to, even though the wechat policy preset was applied and nemoclaw status shows wechat in the policy list.
Environment
Device: DGX Spark (NVIDIA GB10, unified memory 124609 MB)
OS: Ubuntu 24.04.4 LTS (aarch64)
Architecture: aarch64
Node.js: v24.15.0
npm: 11.12.1
Docker: Docker CE
OpenShell CLI: 0.0.44
NemoClaw: v0.0.50
OpenClaw: v2026.5.18
Steps to Reproduce
- Export WeChat config:
export NEMOCLAW_SANDBOX_NAME=wechat-reg-test
export NEMOCLAW_NON_INTERACTIVE=1
export NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1
export NEMOCLAW_POLICY_TIER=open
export NVIDIA_API_KEY=nvapi-...
export WECHAT_ACCOUNT_ID=build_reg_test
export WECHAT_BASE_URL=https://ilinkai.wechat.com
export WECHAT_USER_ID=self_uid_42
export WECHAT_ALLOWED_IDS=friend_uid_1
- Run:
nemoclaw onboard (exit code 0, sandbox created)
- Inside sandbox, check plugin install registry:
python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); inst=d.get('plugins',{}).get('installs',{}).get('openclaw-weixin',{}); print('source:', inst.get('source','MISSING')); print('spec:', inst.get('spec','MISSING'))"
- Check plugin enabled flag:
python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); e=d.get('plugins',{}).get('entries',{}).get('openclaw-weixin',{}); print('enabled:', e.get('enabled','MISSING'))"
- Check channel block:
python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); ch=d.get('channels',{}); print('weixin_present:', 'openclaw-weixin' in ch)"
Expected Result
- Step 3:
source: npm, spec: @tencent-weixin/openclaw-weixin@2.4.2 (install registry restored by late seed)
- Step 4:
enabled: True
- Step 5:
weixin_present: True (channel block present)
Actual Result
- Step 3:
source: MISSING, spec: MISSING — plugins.installs["openclaw-weixin"] does not exist
- Step 4:
enabled: True — plugin entry exists but install registry is gone
- Step 5:
weixin_present: False — channels["openclaw-weixin"] block is absent
nemoclaw status shows wechat in policy list, but the actual channel configuration inside sandbox openclaw.json is missing.
Logs
$ nemoclaw wechat-reg-test status | head -12
Sandbox: wechat-reg-test
Model: nvidia/nemotron-3-super-120b-a12b
Provider: nvidia-prod
Inference: healthy
Policies: npm, pypi, huggingface, brew, slack, discord, telegram, wechat, whatsapp, jira, outlook
$ nemoclaw wechat-reg-test exec -- python3 -c "..."
source: MISSING
spec: MISSING
enabled: True
weixin_present: False
NVB#6222825
Description
After onboarding a sandbox with WeChat channel enabled via non-interactive env vars (
WECHAT_ACCOUNT_ID,WECHAT_BASE_URL, etc.), the sandboxopenclaw.jsonis missing both the plugin install registry entry (plugins.installs["openclaw-weixin"]) and the channel block (channels["openclaw-weixin"]). The plugin entries section hasenabled=Trueforopenclaw-weixin, but the install registry and channel configuration thatseed-wechat-accounts.pyis supposed to restore afteropenclaw plugins installare absent.This means the WeChat bridge cannot function inside the sandbox — the gateway has no channel configuration to connect to, even though the wechat policy preset was applied and
nemoclaw statusshows wechat in the policy list.Environment
Steps to Reproduce
nemoclaw onboard(exit code 0, sandbox created)python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); inst=d.get('plugins',{}).get('installs',{}).get('openclaw-weixin',{}); print('source:', inst.get('source','MISSING')); print('spec:', inst.get('spec','MISSING'))"python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); e=d.get('plugins',{}).get('entries',{}).get('openclaw-weixin',{}); print('enabled:', e.get('enabled','MISSING'))"python3 -c "import json; d=json.load(open('/sandbox/.openclaw/openclaw.json')); ch=d.get('channels',{}); print('weixin_present:', 'openclaw-weixin' in ch)"Expected Result
source: npm,spec: @tencent-weixin/openclaw-weixin@2.4.2(install registry restored by late seed)enabled: Trueweixin_present: True(channel block present)Actual Result
source: MISSING,spec: MISSING—plugins.installs["openclaw-weixin"]does not existenabled: True— plugin entry exists but install registry is goneweixin_present: False—channels["openclaw-weixin"]block is absentnemoclaw statusshows wechat in policy list, but the actual channel configuration inside sandboxopenclaw.jsonis missing.Logs
NVB#6222825