Skip to content

[macOS][CLI&UX] nemoclaw <name> silently runs connect and reverts gateway inference #3726

@hulynn

Description

@hulynn

Description

Running nemoclaw <sandbox-name> with no subcommand does NOT print usage; it silently invokes connect. connect has an undocumented side effect: it re-reads the model field from the sandbox's /sandbox/.openclaw/openclaw.json and forces the OpenShell gateway inference route to match.

If the user previously changed inference at the gateway level (e.g. via nemoclaw inference set) but the sandbox-side openclaw.json wasn't updated — which happens when the inference-set sync step fails, see #3725 (NVB#6187474) — every subsequent connect silently rolls the model back. The Switching inference route to ... log line is the only signal, and it looks like normal status output.

Environment

Device:        MacBook (M4)
OS:            macOS 26.1 (Darwin 25.1.0)
Architecture:  arm64
Node.js:       v23.10.0
npm:           11.3.0
Docker:        27.4.0 (Colima)
OpenShell CLI: 0.0.39
NemoClaw:      v0.0.44
OpenClaw:      2026.4.24 (cbcfdf6)

Steps to Reproduce

  1. Set the gateway inference to model A explicitly:

    nemoclaw inference set --model nvidia/nemotron-3-super-120b-a12b --provider nvidia-prod --sandbox slack2
  2. Confirm the gateway route is now model A (Version increments, Validated Endpoints appears).

  3. Without arguments, run:

    nemoclaw slack2
  4. Observe: the CLI did not print help. It connected, AND silently logged "Switching inference route to nvidia-prod/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning for sandbox 'slack2'" / "Version: 8".

  5. Run nemoclaw inference get — the gateway model is now model B (the value baked into the sandbox's openclaw.json), NOT what step 1 set.

Expected Result

Either:

  • nemoclaw <name> with no subcommand prints usage and exits non-zero (typical CLI behavior), OR
  • If running connect is intentional, the connect step must NOT silently revert gateway-level inference settings. At minimum the override must be loud (banner / warning), and there should be a --no-sync-inference flag.

Actual Result

Sample session output:

➜  ~ nemoclaw slack2
  Switching inference route to nvidia-prod/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning for sandbox 'slack2'
Gateway inference configured:
  Route: inference.local
  Provider: nvidia-prod
  Model: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning
  Version: 8

The user's previous inference set to nemotron-3-super-120b-a12b is silently overridden by the stale model baked into the sandbox's openclaw.json. There is no warning, no diff, no prompt.

Related


NVB#6187475

Metadata

Metadata

Assignees

Labels

NV QABugs found by the NVIDIA QA Teamarea: cliCommand line interface, flags, terminal UX, or outputarea: inferenceInference routing, serving, model selection, or outputsplatform: macosAffects macOS, including Apple Silicon
No fields configured for Enhancement.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions