Skip to content

nightly-e2e: skill-agent-e2e fails — ENOENT on /home/sandbox/.openclaw/skills due to HOME mismatch #3958

Description

@hunglp6d

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

  1. Change OpenShell to set $HOME=/home/sandbox — rejected because OpenShell deliberately sets HOME to the sandbox working directory for agent isolation.
  2. Symlink /home/sandbox/.openclaw → /sandbox/.openclaw — rejected as fragile; would break if either path is mounted independently.

Category

config_error

Reproduction Steps

  1. 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

  • I confirmed this bug is reproducible (required)
  • I searched existing issues and this is not a duplicate (required)

Suggested Labels

nightly-e2e, auto-diagnosed, ci-failure, VRDC


Suggested Labels (apply manually after triage)

nightly-e2e, auto-diagnosed, ci-failure, VRDC

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: e2eEnd-to-end tests, nightly failures, or validation infrastructure

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions