Skip to content

[Ubuntu 24.10][Onboard] sandbox name written to onboard-session.json before creation — nemoclaw list shows phantom entry after SIGINT #2753

@hulynn

Description

@hulynn

Description

Description

When nemoclaw onboard is interrupted (SIGINT / Ctrl+C) after Step 3 (provider_selection) but before Step 6 (sandbox creation), the sandbox name is already recorded in onboard-session.json. After interruption, nemoclaw list reads this stale session entry and displays the sandbox as if it exists, even though no sandbox was ever created in the OpenShell gateway.
Environment
Device:        Ubuntu 24.10 server (10.176.176.140)
OS:            Ubuntu 24.10 (Linux 6.11.0-18-generic x86_64)
Architecture:  x86_64
Node.js:       v22.22.2
npm:           10.9.7
Docker:        28.4.0
OpenShell CLI: 0.0.36
NemoClaw:      v0.0.31
OpenClaw:      v2026.4.24
Steps to Reproduce
1. Start onboard for a new sandbox in the background:

NEMOCLAW_NON_INTERACTIVE=1 \
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 \
NVIDIA_API_KEY=nvapi-... \
nemoclaw onboard --name interrupt-test --non-interactive &
ONBOARD_PID=$!

2. Wait ~12 seconds (past Step 3 provider_selection, before Step 6 sandbox image build):

sleep 12 && kill -SIGINT $ONBOARD_PID && wait $ONBOARD_PID

3. Run:

nemoclaw list
Expected Result
nemoclaw list does NOT contain "interrupt-test" — the sandbox was never created, so it should not appear in the inventory.
Actual Result
nemoclaw list shows "interrupt-test" via onboard session recovery:

  Sandboxes:
    interrupt-test

The entry persists until the user manually destroys it or clears the session.
Root Cause
1. src/lib/onboard.ts:7532 — startRecordedStep("provider_selection", { sandboxName }) writes
   sandboxName to onboard-session.json during Step 3, before the sandbox is created in Step 6.

2. src/lib/inventory-commands.ts:74-98 — nemoclaw list calls loadLastSession(). If sandboxes.json
   has no entry but the session has a sandboxName, it displays the name via the recovery path
   "Recovered sandbox inventory from the last onboard session."

3. There is no SIGINT cleanup handler that removes sandboxName from onboard-session.json or
   verifies the sandbox actually exists in the gateway before showing it.

Suggested fix: either write sandboxName to session only after sandbox creation is confirmed,
or validate the session-recovered sandbox against the live gateway before displaying it.
Logs
Verified manually on 10.176.176.140 (NemoClaw v0.0.31) and reproduced in CI job.

Bug Details

Field Value
Priority Unprioritized
Action Dev - Open - To fix
Disposition Open issue
Module Machine Learning - NemoClaw
Keyword NemoClaw, NEMOCLAW_GH_SYNC_APPROVAL, NemoClaw_Onboard, NemoClaw_Sandbox

[NVB#6130391]

Metadata

Metadata

Assignees

Labels

NV QABugs found by the NVIDIA QA Teamarea: cliCommand line interface, flags, terminal UX, or outputplatform: ubuntuAffects Ubuntu Linux environments

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions