Caveat verdict
skills-coach
A skill optimization tool that analyzes and improves OpenClaw skills using Training-Free GRPO; file_read is used legitimately for reading skill files and the workflow is transparent.
⚠ Flagged for review — coarse, uncorroborated signal, not a confirmed exploit. Review the config yourself before installing.
Automated static analysis — not a human review. Caveat flags capabilities, not confirmed intent, and can produce false positives. Disagree with this verdict? Use Dispute below.
Permission integrity
file_read
Findings (10)
Possible hardcoded credential
archive/docs/IMPLEMENTATION_REPORT.md · code · API_KEY="your-api-key
Recursive delete from root or home — destructive command
subskills/exec-agent/SKILL.md · code · rm -rf /
Pipe to sh — executes piped content as shell commands
subskills/exec-agent/env_checker.py · prose · downgraded · |sh
Pipe-to-shell pattern (curl | sh) — supply chain attack vector
subskills/exec-agent/env_checker.py · prose · downgraded · curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh
subprocess execution — runs system commands from Python
archive/backups/training_free_grpo_simple.py · prose · downgraded · subprocess.run(
subprocess with shell=True — command injection vector
subskills/exec-agent/env_checker.py · prose · downgraded · subprocess.run(
install_cmd,
shell=True
Python os.environ.get — reads environment variable
api_checker.py · prose · downgraded · os.environ.get(
Python shutil file operation — copies/moves/deletes files
orchestrator.py · prose · downgraded · shutil.rmtree(
pip3 install — installs Python packages at runtime
subskills/failure-analyzer/failure_analyzer.py · prose · downgraded · pip3 install
Python urllib.request — network access
subskills/sample-agent/test_file_manager.py · prose · downgraded · urllib.request
Why the tier is capped
Execution sink present in raw bytes (Hard Floor: class A/B/D). Final tier capped at Caution — cannot be lifted by any downgrade, example-payload opt-in, or allowlist.
Permissions & capabilities
No declared permissions — minimal attack surface.
file_read Is this flag fair?
Thanks — recorded.