Description
Summary
start-services.sh line 22 resolves the sandbox name as:SANDBOX_NAME="${NEMOCLAW_SANDBOX:-${SANDBOX_NAME:-default}}"
This means NEMOCLAW_SANDBOX always wins over an explicit SANDBOX_NAME passed by the caller. When nemoclaw start (or a user) sets SANDBOX_NAME=my-sandbox but the shell also has NEMOCLAW_SANDBOX=something-else exported (e.g. from a previous session or .env file), the PID directory becomes /tmp/nemoclaw-services-something-else/ instead of /tmp/nemoclaw-services-my-sandbox/. Subsequent status or stop calls that pass the correct SANDBOX_NAME will not find the PID files.
Steps to reproduce
export NEMOCLAW_SANDBOX=old-sandboxSANDBOX_NAME=my-sandbox bash scripts/start-services.sh — PID files go to .../old-sandbox/.SANDBOX_NAME=my-sandbox bash scripts/start-services.sh --status — looks in .../old-sandbox/ too, but the mismatch is invisible to the user.- If
NEMOCLAW_SANDBOX is later unset, status/stop will look in .../my-sandbox/ and find nothing.
Root cause
The ${NEMOCLAW_SANDBOX:-${SANDBOX_NAME:-default}} expansion gives NEMOCLAW_SANDBOX higher priority than the explicitly passed SANDBOX_NAME.
Expected behavior
An explicit SANDBOX_NAME (set by nemoclaw start / stop / status) should take priority. NEMOCLAW_SANDBOX should only be a fallback when SANDBOX_NAME is not set.
Suggested fix
Flip the priority:
- SANDBOX_NAME="${SANDBOX_NAME:-${NEMOCLAW_SANDBOX:-default}}"
Environment
| Item |
Version / detail |
| Device |
macos |
| Node.js |
(e.g. v20.x / v22.x — fill as on device) |
| OpenShell CLI |
0.0.19 (or your version) |
| NemoClaw |
v0.0.3 |
| OpenClaw |
2026.3.11 (if relevant) |
Bug Details
| Field |
Value |
| Priority |
Unprioritized |
| Action |
Dev - Open - To fix |
| Disposition |
Open issue |
| Module |
Machine Learning - NemoClaw |
| Keyword |
NemoClaw, NEMOCLAW_GH_SYNC_APPROVAL |
[NVB# 6041568]
[NVB#6041568]
Description
Summary
start-services.shline 22 resolves the sandbox name as:SANDBOX_NAME="${NEMOCLAW_SANDBOX:-${SANDBOX_NAME:-default}}"This means
NEMOCLAW_SANDBOXalways wins over an explicitSANDBOX_NAMEpassed by the caller. Whennemoclaw start(or a user) setsSANDBOX_NAME=my-sandboxbut the shell also hasNEMOCLAW_SANDBOX=something-elseexported (e.g. from a previous session or.envfile), the PID directory becomes/tmp/nemoclaw-services-something-else/instead of/tmp/nemoclaw-services-my-sandbox/. Subsequentstatusorstopcalls that pass the correctSANDBOX_NAMEwill not find the PID files.Steps to reproduce
export NEMOCLAW_SANDBOX=old-sandboxSANDBOX_NAME=my-sandbox bash scripts/start-services.sh— PID files go to.../old-sandbox/.SANDBOX_NAME=my-sandbox bash scripts/start-services.sh --status— looks in.../old-sandbox/too, but the mismatch is invisible to the user.NEMOCLAW_SANDBOXis later unset, status/stop will look in.../my-sandbox/and find nothing.Root cause
The
${NEMOCLAW_SANDBOX:-${SANDBOX_NAME:-default}}expansion givesNEMOCLAW_SANDBOXhigher priority than the explicitly passedSANDBOX_NAME.Expected behavior
An explicit
SANDBOX_NAME(set bynemoclaw start/stop/status) should take priority.NEMOCLAW_SANDBOXshould only be a fallback whenSANDBOX_NAMEis not set.Suggested fix
Flip the priority:
Environment
Bug Details
[NVB# 6041568]
[NVB#6041568]