Skip to content

Sandbox resolves skill SKILL.md to global path instead of sandbox-local copy #50590

Description

@thunter009

Summary

When running in sandbox mode (agents.defaults.sandbox.mode: "non-main"), OpenClaw resolves skill paths to ~/.openclaw/skills/<name>/SKILL.md (the global location) instead of the sandbox-local copy. The sandbox boundary blocks reading the global path, causing the skill to fail.

Steps to Reproduce

  1. Install a skill (e.g. smaug) at ~/.openclaw/skills/smaug/SKILL.md
  2. Set agents.defaults.sandbox.mode: "non-main" in openclaw.json
  3. Invoke the skill via cron or non-main session
  4. Observe: sandbox blocks read of ~/.openclaw/skills/smaug/SKILL.md
  5. Agent falls back to guessing smaug as a bare command (not found)

Expected Behavior

Skills should resolve paths relative to the sandbox root, or the sandbox should allowlist ~/.openclaw/skills/ for read access.

Actual Behavior

Error: sandbox blocked read of /Users/jasper/.openclaw/skills/smaug/SKILL.md

The agent then tries to run smaug as a shell command, which also fails.

Attempted Workarounds

  • permissions.json in the skill directory — no effect
  • sessionTarget configuration — no effect
  • Copying SKILL.md into the sandbox — agent still reads from global path

Environment

  • OpenClaw: latest (as of March 2026)
  • macOS 15 (Tahoe), M3 Mac Mini
  • Sandbox mode: non-main

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions