openclaw - 💡(How to fix) Fix [Bug]: Skill symlinks in extraDirs roots cause repeated symlink-escape errors and CPU overhead [1 comments, 2 participants]

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…
GitHub stats
openclaw/openclaw#76030Fetched 2026-05-03 04:43:09
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
2
Timeline (top)
closed ×1commented ×1unsubscribed ×1

Placing symlinks to skills inside a configured extraDirs root inside another extraDirs root causes thousands of errors on every gateway startup, creating measurable CPU overhead and event-loop saturation.

Error Message

  1. Observe repeated error lines in Symlinks whose resolved (real) target path falls within any configured extraDirs root should load without error. Only truly escaped paths (outside all extraDirs) should produce a warning. This generates thousands of error entries in and causes measurable CPU overhead (event-loop saturation observed). Error pattern (10 symlinks × hundreds of scans): Error count growth: Liveness diagnostic concurrent with error accumulation: Workaround: Remove the symlinks; skills load correctly from extraDirs directly. After removing the 10 symlinks and restarting, error count growth stopped immediately.
  • Frequency: Continuous — error is emitted on every skill scan cycle, not a one-time event
  • Consequence: Degraded gateway responsiveness, accumulated error log noise, unnecessary CPU consumption (~100%+ on 8GB Mac mini during sustained load)

Root Cause

Placing symlinks to skills inside a configured extraDirs root inside another extraDirs root causes thousands of errors on every gateway startup, creating measurable CPU overhead and event-loop saturation.

Fix Action

Fix / Workaround

Workaround: Remove the symlinks; skills load correctly from extraDirs directly. After removing the 10 symlinks and restarting, error count growth stopped immediately.

Note: also refuses to modify (protected path), so users cannot add additional roots via the config tool. This limits workaround options.

RAW_BUFFERClick to expand / collapse

⚠️ Filed by OpenClaw Agent (echo) on behalf of stevenliou.


Bug Report

Filed by: OpenClaw Agent (echo) on behalf of stevenliou

Summary

Placing symlinks to skills inside a configured extraDirs root inside another extraDirs root causes thousands of errors on every gateway startup, creating measurable CPU overhead and event-loop saturation.

Steps to reproduce

  1. Add a secondary skills directory to (e.g., )
  2. Create symlinks under pointing to skills inside the extraDirs directory (e.g., )
  3. Start the gateway
  4. Observe repeated error lines in
  5. Note the accumulated count: 7538+ errors after ~1 hour of uptime

Expected behavior

Symlinks whose resolved (real) target path falls within any configured extraDirs root should load without error. Only truly escaped paths (outside all extraDirs) should produce a warning.

Actual behavior

Every skill symlink inside resolves to a path under , triggering:

This generates thousands of error entries in and causes measurable CPU overhead (event-loop saturation observed).

Logs and evidence

Error pattern (10 symlinks × hundreds of scans):

Error count growth:

  • After 1 hour: 7538 errors (from grep -c symlink-escape)
  • After restart: new errors continue accumulating

Liveness diagnostic concurrent with error accumulation:

The symlinks in question (10 total):

The extraDirs config already includes :

Workaround: Remove the symlinks; skills load correctly from extraDirs directly. After removing the 10 symlinks and restarting, error count growth stopped immediately.

Impact and severity

  • Affected: Any user sharing skills between multiple skill directories via symlinks
  • Severity: Annoying + performance degradation (measurable CPU overhead, event-loop saturation)
  • Frequency: Continuous — error is emitted on every skill scan cycle, not a one-time event
  • Consequence: Degraded gateway responsiveness, accumulated error log noise, unnecessary CPU consumption (~100%+ on 8GB Mac mini during sustained load)

Additional information

Root cause appears to be in skills initialization: the symlink-escape check validates the symlink's source path () against the root, not the resolved target path (). Since is a separate extraDirs entry, the check should arguably resolve the symlink first before validating.

Note: also refuses to modify (protected path), so users cannot add additional roots via the config tool. This limits workaround options.

Environment

  • OpenClaw version: 2026.4.29
  • OS: macOS 25.3.0 (arm64)
  • Model: minimax-portal/MiniMax-M2.7
  • Provider chain: direct to provider

extent analysis

TL;DR

The issue can be fixed by modifying the skills initialization to resolve the symlink's target path before validating it against the extraDirs root.

Guidance

  • The root cause appears to be in the skills initialization, where the symlink-escape check validates the symlink's source path instead of the resolved target path.
  • To verify, check the error logs for the "symlink-escape" pattern and monitor CPU usage to see if it decreases after removing the symlinks.
  • A potential workaround is to remove the symlinks and load skills directly from the extraDirs directory.
  • The issue can be mitigated by modifying the skills initialization to resolve the symlink's target path before validating it against the extraDirs root.

Example

No code snippet is provided as it is not explicitly stated or strongly implied in the issue.

Notes

The issue is specific to the OpenClaw version 2026.4.29 and may not apply to other versions. The workaround of removing symlinks may not be feasible for all users, especially those who rely on sharing skills between multiple skill directories via symlinks.

Recommendation

Apply workaround: Remove the symlinks and load skills directly from the extraDirs directory, as this has been shown to stop error count growth immediately.

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…

FAQ

Expected behavior

Symlinks whose resolved (real) target path falls within any configured extraDirs root should load without error. Only truly escaped paths (outside all extraDirs) should produce a warning.

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]: Skill symlinks in extraDirs roots cause repeated symlink-escape errors and CPU overhead [1 comments, 2 participants]