T09 · Insecure Skill Coding Practices
- Location
scripts/skill_manager.py:189- Finding
Protected Skill Deletion Through Symlink Resolution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a legitimate skill-management purpose, but its uninstall function can delete installed skills without a direct confirmation step and has a verified symlink flaw that could remove the wrong or protected skill.
Install only if you are comfortable with a local tool that can modify and delete OpenClaw skill directories. Before using uninstall, verify the target directory yourself and avoid running cleanup automatically; the symlink and confirmation issues should be fixed before trusting it for routine skill removal.
scripts/skill_manager.py:189Protected Skill Deletion Through Symlink Resolution
scripts/skill_manager.py:251Archive Path Traversal in Archived Skill Lookup
The skill documents file-reading and file-writing behavior through its Python script usage and data locations, but it does not declare any explicit tool scope such as permissions or allowed-tools. In an agent environment, missing capability scoping can lead to overbroad file-system access being implicitly granted, increasing the chance of unintended reads, writes, or destructive lifecycle actions such as uninstall operations.
The 'Use when' section includes vague conditions such as 'User wants to see what skills are installed', 'User wants to uninstall or cleanup unused skills', and generic phrases like 'skill management' and 'dynamic skill'. These triggers are broad enough to overlap with common requests and do not clearly define activation boundaries or exclusions.
This code performs irreversible deletion with shutil.rmtree() and archives metadata only optionally, but the function itself does not require explicit user confirmation before proceeding. Although there is a warning in the CLI usage path for missing arguments, a successful uninstall path only prints after deletion, so the safety-critical action lacks a direct pre-action confirmation or equivalent user disclosure at the point of execution.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Args:
skill_name: Name of the skill to uninstall (must be safe directory name)
archive: Whether to archive metadata before removal
force: Skip confirmation (use with caution)
Returns:
True if successful, False if skill not found or validation failed
The file presents significant instructional content and command annotations in Chinese, while other parts are in English, with no indication that the user can choose their preferred language. This can violate a language/locale policy when a specific language is imposed without opt-in or justification.
No suspicious patterns detected.