Product / Component
- Product: NemoClaw
- Component:
nemoclaw CLI – sandbox messaging channels / policy presets integration
Environment
- OS: Ubuntu 24.04 (x86_64)
- NemoClaw: v0.0.54
- Sandbox type: OpenClaw agent sandbox
my-assistant, status Ready before test
- Docker: running, GPU-enabled (NVIDIA GPU present)
Preconditions
-
NemoClaw installed; Docker running.
-
Existing sandbox my-assistant onboarded and Ready (OpenClaw agent).
-
WhatsApp not already configured for my-assistant:
-
WhatsApp preset file exists at:
~/.nemoclaw/source/nemoclaw-blueprint/policies/presets/whatsapp.yaml
Steps to Reproduce
-
Temporarily remove the WhatsApp preset file:
mv ~/.nemoclaw/source/nemoclaw-blueprint/policies/presets/whatsapp.yaml /tmp/whatsapp.yaml.bak
-
Add the WhatsApp channel to the sandbox:
nemoclaw my-assistant channels add whatsapp
-
When prompted:
Rebuild 'my-assistant' now to apply? [Y/n]:
answer Y and wait for the rebuild to complete.
-
After the command returns, check messagingChannels:
cat ~/.nemoclaw/sandboxes.json | python3 -c \
"import json,sys; d=json.load(sys.stdin); print(d['sandboxes']['my-assistant']['messagingChannels'])"
-
(Optional, for completeness) Inspect the rebuild log around [8/8] Policy presets and the "Restoring policy presets…" section.
-
Restore the preset file after testing:
mv /tmp/whatsapp.yaml.bak \
~/.nemoclaw/source/nemoclaw-blueprint/policies/presets/whatsapp.yaml
Expected Result
When the whatsapp preset file is missing:
nemoclaw my-assistant channels add whatsapp should fail cleanly:
- Exit code: non-zero (e.g.,
1).
- Output should indicate that the WhatsApp preset failed to apply (missing preset file) and that the channel was not fully configured.
- A hint such as "Re-apply manually after restoring the preset and rebuilding" is shown.
- No rebuild should occur, or if a rebuild is attempted, it should be aborted as failed.
- The sandbox registry should not be updated:
messagingChannels for my-assistant should not include "whatsapp".
- Policy presets section should not list
whatsapp as applied.
In other words, registry write and preset application should be atomic: either both succeed or both fail.
Actual Result
With whatsapp.yaml renamed out of the presets directory:
The CLI still prints success text and proceeds:
WhatsApp Web pairs via QR code scanned with your phone — no host-side token.
...
✓ Enabled whatsapp channel.
Complete QR pairing from inside the sandbox after rebuild.
Rebuild 'my-assistant' now to apply? [Y/n]: Y
NemoClaw performs a full sandbox rebuild:
During [8/8] Policy presets and "Restoring policy presets…":
-
Only npm, pypi, huggingface, brew, openclaw-pricing (and later brave) are reapplied:
[resume] Reapplying policy presets: npm, pypi, huggingface, brew, openclaw-pricing
...
Applied preset: npm
Applied preset: pypi
Applied preset: huggingface
Applied preset: brew
Applied preset: openclaw-pricing
...
Applied preset: brave
-
There is no Applied preset: whatsapp line in this run, consistent with the missing preset file.
Despite this, the sandbox registry now shows WhatsApp as configured:
cat ~/.nemoclaw/sandboxes.json | python3 -c \
"import json,sys; d=json.load(sys.stdin); print(d['sandboxes']['my-assistant']['messagingChannels'])"
# Output: ['whatsapp']
The command behaves as if it succeeded:
- User-facing messaging says
✓ Enabled whatsapp channel.
- No error about missing preset is shown.
- Exit code appears to be success (command proceeds to completion with no error message).
Result: my-assistant ends up in an inconsistent state where:
messagingChannels includes "whatsapp",
- but the WhatsApp preset is missing and was never applied during rebuild.
Impact
- Users can end up with a sandbox that claims to have a WhatsApp channel configured in the registry, but the underlying policy preset and wiring are absent.
- This breaks the expectation that
channels add whatsapp is an atomic configuration change.
- Follow-up operations or tooling that trust
messagingChannels may assume WhatsApp is correctly configured when it is not.
Suggested Fix / Notes
Ensure channels add <channel>:
- Validates the presence and loadability of the channel's preset before updating
messagingChannels and starting a rebuild.
- If preset loading fails (file missing or invalid), abort the operation:
- Do not modify
messagingChannels.
- Do not proceed with rebuild.
- Return a non-zero exit code with a clear error message.
- Alternatively, if rebuild must run first, the registry update should be rolled back on preset failure.
Product / Component
nemoclawCLI – sandbox messaging channels / policy presets integrationEnvironment
my-assistant, statusReadybefore testPreconditions
NemoClaw installed; Docker running.
Existing sandbox
my-assistantonboarded and Ready (OpenClaw agent).WhatsApp not already configured for
my-assistant:my-assistant'smessagingChannelsdoes not contain"whatsapp":nemoclaw my-assistant policy-listdoes not list thewhatsapppreset.WhatsApp preset file exists at:
Steps to Reproduce
Temporarily remove the WhatsApp preset file:
mv ~/.nemoclaw/source/nemoclaw-blueprint/policies/presets/whatsapp.yaml /tmp/whatsapp.yaml.bakAdd the WhatsApp channel to the sandbox:
When prompted:
answer
Yand wait for the rebuild to complete.After the command returns, check
messagingChannels:(Optional, for completeness) Inspect the rebuild log around
[8/8] Policy presetsand the "Restoring policy presets…" section.Restore the preset file after testing:
mv /tmp/whatsapp.yaml.bak \ ~/.nemoclaw/source/nemoclaw-blueprint/policies/presets/whatsapp.yamlExpected Result
When the
whatsapppreset file is missing:nemoclaw my-assistant channels add whatsappshould fail cleanly:1).messagingChannelsformy-assistantshould not include"whatsapp".whatsappas applied.In other words, registry write and preset application should be atomic: either both succeed or both fail.
Actual Result
With
whatsapp.yamlrenamed out of the presets directory:The CLI still prints success text and proceeds:
NemoClaw performs a full sandbox rebuild:
Old sandbox image is deleted.
New image is built and
my-assistantsandbox is recreated successfully.Final summary reports:
During
[8/8] Policy presetsand "Restoring policy presets…":Only
npm,pypi,huggingface,brew,openclaw-pricing(and laterbrave) are reapplied:There is no
Applied preset: whatsappline in this run, consistent with the missing preset file.Despite this, the sandbox registry now shows WhatsApp as configured:
The command behaves as if it succeeded:
✓ Enabled whatsapp channel.Result:
my-assistantends up in an inconsistent state where:messagingChannelsincludes"whatsapp",Impact
channels add whatsappis an atomic configuration change.messagingChannelsmay assume WhatsApp is correctly configured when it is not.Suggested Fix / Notes
Ensure
channels add <channel>:messagingChannelsand starting a rebuild.messagingChannels.