openclaw - 💡(How to fix) Fix [Bug]: Plugin skills (~/.openclaw/plugin-skills/) unreadable in sandbox — read fails "Path escapes sandbox root"; core-skill sync (#46257) does not cover plugin skills [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

In sandbox mode, plugin-provided skills are surfaced to the agent with host filesystem paths under ~/.openclaw/plugin-skills/, but the sandbox read tool is bound to the workspace root (/workspace), so loading their SKILL.md fails:

[tools] read failed: Path escapes sandbox root (~/.openclaw/workspace; container root /workspace): /home/<user>/.openclaw/plugin-skills/wiki-maintainer/SKILL.md. Use a path under /workspace/ instead. raw_params={"path":"~/.openclaw/plugin-skills/wiki-maintainer/SKILL.md","limit":200}

This is the same class of mismatch fixed for core skills in #46257 (where syncSkillsToWorkspace remaps skills into the sandbox workspace so <available_skills> points at sandbox-readable /workspace/skills/... paths). That sync does not cover plugin skills living under ~/.openclaw/plugin-skills/, so their host paths leak to the sandboxed agent and every read of their SKILL.md is rejected.

Root Cause

In sandbox mode, plugin-provided skills are surfaced to the agent with host filesystem paths under ~/.openclaw/plugin-skills/, but the sandbox read tool is bound to the workspace root (/workspace), so loading their SKILL.md fails:

[tools] read failed: Path escapes sandbox root (~/.openclaw/workspace; container root /workspace): /home/<user>/.openclaw/plugin-skills/wiki-maintainer/SKILL.md. Use a path under /workspace/ instead. raw_params={"path":"~/.openclaw/plugin-skills/wiki-maintainer/SKILL.md","limit":200}

This is the same class of mismatch fixed for core skills in #46257 (where syncSkillsToWorkspace remaps skills into the sandbox workspace so <available_skills> points at sandbox-readable /workspace/skills/... paths). That sync does not cover plugin skills living under ~/.openclaw/plugin-skills/, so their host paths leak to the sandboxed agent and every read of their SKILL.md is rejected.

Fix Action

Fixed

Code Example

[tools] read failed: Path escapes sandbox root (~/.openclaw/workspace; container root /workspace): /home/<user>/.openclaw/plugin-skills/wiki-maintainer/SKILL.md. Use a path under /workspace/ instead. raw_params={"path":"~/.openclaw/plugin-skills/wiki-maintainer/SKILL.md","limit":200}

---

$ ls -la ~/.openclaw/plugin-skills/
browser-automation        -> /usr/lib/node_modules/openclaw/dist/extensions/browser/skills/browser-automation
obsidian-vault-maintainer -> /usr/lib/node_modules/openclaw/dist/extensions/memory-wiki/skills/obsidian-vault-maintainer
wiki-maintainer           -> /usr/lib/node_modules/openclaw/dist/extensions/memory-wiki/skills/wiki-maintainer
RAW_BUFFERClick to expand / collapse

Summary

In sandbox mode, plugin-provided skills are surfaced to the agent with host filesystem paths under ~/.openclaw/plugin-skills/, but the sandbox read tool is bound to the workspace root (/workspace), so loading their SKILL.md fails:

[tools] read failed: Path escapes sandbox root (~/.openclaw/workspace; container root /workspace): /home/<user>/.openclaw/plugin-skills/wiki-maintainer/SKILL.md. Use a path under /workspace/ instead. raw_params={"path":"~/.openclaw/plugin-skills/wiki-maintainer/SKILL.md","limit":200}

This is the same class of mismatch fixed for core skills in #46257 (where syncSkillsToWorkspace remaps skills into the sandbox workspace so <available_skills> points at sandbox-readable /workspace/skills/... paths). That sync does not cover plugin skills living under ~/.openclaw/plugin-skills/, so their host paths leak to the sandboxed agent and every read of their SKILL.md is rejected.

Evidence

~/.openclaw/plugin-skills/ entries are symlinks into the installed package's bundled plugin skills — i.e. outside the agent workspace:

$ ls -la ~/.openclaw/plugin-skills/
browser-automation        -> /usr/lib/node_modules/openclaw/dist/extensions/browser/skills/browser-automation
obsidian-vault-maintainer -> /usr/lib/node_modules/openclaw/dist/extensions/memory-wiki/skills/obsidian-vault-maintainer
wiki-maintainer           -> /usr/lib/node_modules/openclaw/dist/extensions/memory-wiki/skills/wiki-maintainer

The synced location, by contrast, is the workspace skills dir which is mapped into the container (~/.openclaw/workspace/skills//workspace/skills/) and reads fine. Plugin skills are never placed there.

Why this is now a hard failure

2026.5.20 removed the exec cat SKILL.md && printf … && <skill-wrapper> compatibility path, making the sandbox-bound read tool the only way to load a skill's SKILL.md. With no host-side fallback remaining, plugin skills are effectively unloadable for sandboxed agents. In practice this breaks the memory-wiki plugin's wiki-maintainer / obsidian-vault-maintainer skills whenever the agent runs sandboxed.

Environment

  • OpenClaw 2026.5.22
  • Linux (Ubuntu VM under OrbStack), agent runs in Docker sandbox, sandbox.mode: all, container root /workspace
  • Affected plugin: memory-wiki (skills wiki-maintainer, obsidian-vault-maintainer); browser-automation is exposed the same way

Expected

Plugin skills should be made sandbox-readable the same way core skills are after #46257 — either remapped/synced into the sandbox workspace, or <available_skills> should hand sandboxed sessions container-readable /workspace/skills/... paths instead of host-only ~/.openclaw/plugin-skills/... paths.

Actual

<available_skills> gives sandboxed agents the host path under ~/.openclaw/plugin-skills/, and read rejects it with Path escapes sandbox root, so the skill cannot be loaded.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Plugin skills (~/.openclaw/plugin-skills/) unreadable in sandbox — read fails "Path escapes sandbox root"; core-skill sync (#46257) does not cover plugin skills [1 pull requests]