nextlevelbuilder / nextlevelbuilder/goclaw
Sandbox does not mount skills-store, so agents cannot read skill files
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 3.6k
- Forks
- 1.1k
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 24
Description
Sandbox does not mount skills-store, so agents cannot read skill files
Problem
The agent receives each skill <location> in the system prompt and is told to use read_file to open the corresponding SKILL.md.
However, in sandbox mode the container only mounts the workspace and does not mount the skills-store. This means that even if the Loader discovers the skill, the agent still cannot actually read the skill file inside the sandbox.
Verified behavior
The following has been confirmed:
BuildSummary(...)emits<location>values pointing to hostskills-store/.../SKILL.mdpaths- sandbox startup mounts only the workspace into the container
- calling
read_fileon that absolute path inside the sandbox fails FsBridge.resolvePath(...)falls back when the absolute path is outside the sandbox workdir- the agent never gets the real skill content
Root cause
The sandbox-visible filesystem does not match the skill paths returned by the Loader:
- Loader returns host absolute paths under
skills-store - sandbox mounts only the workspace
- the container does not contain the corresponding
skills-storetree
So the prompt tells the agent to read a skill file that is not reachable inside the sandbox.
Relevant code
internal/agent/systemprompt.go: instructs the agent to openSKILL.mdviaread_fileusing<location>internal/skills/loader.go:BuildSummaryemits<location>internal/sandbox/docker.go: sandbox only mounts the workspaceinternal/sandbox/fsbridge.go: absolute paths outside the workdir are rejected/fallen backinternal/tools/sandbox_hints.go: shows sandbox file-not-found hintsinternal/tools/use_skill.go:use_skilldoes not load content itself; it still depends onread_file
Impact
- skills are effectively unusable in sandbox mode
- the agent knows the skill name and location but cannot read the content
- prompt behavior and runtime filesystem do not match
- to users this appears as “the skill exists but the agent does not follow it”
Recommendation
At least one of the following must be true:
- sandbox mounts the
skills-store, and<location>is mapped to a real readable path inside the container - Loader returns container-accessible paths in sandbox mode instead of host paths
A more robust fix is to unify host/container path mapping for skill files so agents never see host absolute paths that are unreachable inside the container.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the skill path from internal/skills/loader.go and internal/agent/systemprompt.go into sandbox startup in internal/sandbox/docker.go. Read internal/sandbox/fsbridge.go and internal/tools/use_skill.go to understand how paths and skill loading interact. Done means a sandboxed agent can read the referenced SKILL.md through a container-accessible path, with the prompt and runtime filesystem aligned.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go
- Domain
- infrastructure, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100