Bug Report
Description
Problem Statement
The skill-agent-e2e job in nightly run 26197765497 failed on all 3 agent-verification attempts with:
[tools] read failed: ENOENT: no such file or directory, access '/home/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md'
The skill was injected at /sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md and the mirroring logic in add-sandbox-skill.sh (line 128) uses ${HOME:-/home/sandbox} to determine the mirror destination. Inside the OpenShell SSH session, $HOME is set to /sandbox (the sandbox working directory), so the mirror writes to the same location as the original — never creating the copy at /home/sandbox/.openclaw/skills/.
The OpenClaw agent's managed-skills tool resolves the skills directory via os.homedir() / getpwnam, which returns /home/sandbox (the sandbox user's passwd-based home), causing ENOENT.
Proposed Design
Update the remote script in test/e2e/e2e-cloud-experimental/features/skill/add-sandbox-skill.sh to query the passwd-reported home directory via getent passwd "$(id -un)" and mirror the skill file there when it differs from $HOME.
See fix PR: #3956
Alternatives Considered
- Change OpenShell to set
$HOME=/home/sandbox — rejected because OpenShell deliberately sets HOME to the sandbox working directory for agent isolation.
- Symlink
/home/sandbox/.openclaw → /sandbox/.openclaw — rejected as fragile; would break if either path is mounted independently.
Category
config_error
Reproduction Steps
- Re-run
skill-agent-e2e on commit f19061e via gh workflow run nightly-e2e.yaml --repo NVIDIA/NemoClaw --ref f19061ec9b79d019afdb274786ff0211182dc8df -f jobs=skill-agent-e2e.
Environment
- OS: Ubuntu 24.04.4 LTS (GitHub-hosted runner
ubuntu-latest)
- Node.js: v22.22.3
- Docker: Docker Engine on GitHub Actions
- NemoClaw:
f19061ec9b79d019afdb274786ff0211182dc8df (main)
- Other: Workflow run 26197765497
Debug Output
[tools] read failed: ENOENT: no such file or directory, access '/home/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md' raw_params={"path":"/home/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md"}
verify-sandbox-skill-via-agent: FAIL: token SKILL_SMOKE_VERIFY_K9X2 not found in agent output (ssh/agent exit 124). Hints: session file locked → stale .jsonl.lock (this script clears it for the chosen session id) or kill stuck openclaw in sandbox; [tools] ENOENT on skills → re-run add-sandbox-skill.sh. Session was: skill-verify-1779323648-16679-27725-10768
Logs
Agent output showed the skill was written to /sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md (both QUERY_PATH and HOME_QUERY_PATH resolved to the same /sandbox/ prefix), confirming $HOME=/sandbox inside the SSH session. The agent then failed to find it at /home/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md. All 3 attempts timed out at 180s.
Checklist
Suggested Labels
nightly-e2e, auto-diagnosed, ci-failure, VRDC
Suggested Labels (apply manually after triage)
nightly-e2e, auto-diagnosed, ci-failure, VRDC
Bug Report
Description
Problem Statement
The
skill-agent-e2ejob in nightly run 26197765497 failed on all 3 agent-verification attempts with:The skill was injected at
/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.mdand the mirroring logic inadd-sandbox-skill.sh(line 128) uses${HOME:-/home/sandbox}to determine the mirror destination. Inside the OpenShell SSH session,$HOMEis set to/sandbox(the sandbox working directory), so the mirror writes to the same location as the original — never creating the copy at/home/sandbox/.openclaw/skills/.The OpenClaw agent's managed-skills tool resolves the skills directory via
os.homedir()/getpwnam, which returns/home/sandbox(thesandboxuser's passwd-based home), causing ENOENT.Proposed Design
Update the remote script in
test/e2e/e2e-cloud-experimental/features/skill/add-sandbox-skill.shto query the passwd-reported home directory viagetent passwd "$(id -un)"and mirror the skill file there when it differs from$HOME.See fix PR: #3956
Alternatives Considered
$HOME=/home/sandbox— rejected because OpenShell deliberately sets HOME to the sandbox working directory for agent isolation./home/sandbox/.openclaw → /sandbox/.openclaw— rejected as fragile; would break if either path is mounted independently.Category
config_errorReproduction Steps
skill-agent-e2eon commitf19061eviagh workflow run nightly-e2e.yaml --repo NVIDIA/NemoClaw --ref f19061ec9b79d019afdb274786ff0211182dc8df -f jobs=skill-agent-e2e.Environment
ubuntu-latest)f19061ec9b79d019afdb274786ff0211182dc8df(main)Debug Output
Logs
Agent output showed the skill was written to
/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md(bothQUERY_PATHandHOME_QUERY_PATHresolved to the same/sandbox/prefix), confirming$HOME=/sandboxinside the SSH session. The agent then failed to find it at/home/sandbox/.openclaw/skills/skill-smoke-fixture/SKILL.md. All 3 attempts timed out at 180s.Checklist
Suggested Labels
nightly-e2e,auto-diagnosed,ci-failure,VRDCSuggested Labels (apply manually after triage)
nightly-e2e,auto-diagnosed,ci-failure,VRDC