Trust Assessment
openclaw-trakt received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 28 findings: 10 critical, 10 high, 5 medium, and 3 low severity. Key findings include Arbitrary command execution, Dangerous call: subprocess.run(), Suspicious import: requests.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings28
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:60 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:90 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:92 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:94 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:151 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:173 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:175 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:177 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:195 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/fr3nch13/openclaw-trakt/scripts/setup.py:222 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'authenticate'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:151 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'authenticate'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:195 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'test_integration'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:222 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'create_trakt_app'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:90 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'check_dependencies'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:60 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'create_trakt_app'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:92 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'authenticate'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:173 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'create_trakt_app'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:94 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'authenticate'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:175 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'authenticate'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:177 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/fr3nch13/openclaw-trakt/scripts/setup.py:52 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/fr3nch13/openclaw-trakt/scripts/trakt_client.py:9 | |
| MEDIUM | Unpinned Python dependency version Requirement 'requests>=2.31.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/fr3nch13/openclaw-trakt/requirements.txt:1 | |
| MEDIUM | Plaintext Storage of API Credentials The skill stores sensitive Trakt.tv API credentials (client_id, client_secret, access_token, refresh_token) in a plaintext JSON file located at `~/.openclaw/trakt_config.json`. While this is a common pattern for local configuration, it poses a security risk as any local attacker or compromised process with read access to the user's home directory can easily exfiltrate these credentials. The script does not enforce strict file permissions (e.g., 600) to protect this file. Implement encryption for the configuration file or ensure that the file is created with strict permissions (e.g., `chmod 600`) to restrict access to the owner only. Consider using a secure credential store or environment variables for sensitive data where appropriate. | LLM | scripts/setup.py:140 | |
| MEDIUM | Plaintext Storage of API Credentials The skill stores sensitive Trakt.tv API credentials (client_id, client_secret, access_token, refresh_token) in a plaintext JSON file located at `~/.openclaw/trakt_config.json`. While this is a common pattern for local configuration, it poses a security risk as any local attacker or compromised process with read access to the user's home directory can easily exfiltrate these credentials. The script does not enforce strict file permissions (e.g., 600) to protect this file. Implement encryption for the configuration file or ensure that the file is created with strict permissions (e.g., `chmod 600`) to restrict access to the owner only. Consider using a secure credential store or environment variables for sensitive data where appropriate. | LLM | scripts/trakt_client.py:69 | |
| LOW | Use of shell=True in subprocess.run for URL opening The `subprocess.run` function is used with `shell=True` when opening URLs on Windows (`sys.platform == 'win32'`). While the URLs are currently hardcoded or derived from trusted internal script output, using `shell=True` can introduce command injection vulnerabilities if the command string or its arguments were ever to become untrusted. It's generally safer to avoid `shell=True` unless absolutely necessary, especially when dealing with external inputs or system commands. Avoid using `shell=True` with `subprocess.run` where possible. For opening URLs, consider using the `webbrowser` module, which provides a safer, cross-platform way to open web pages without directly invoking shell commands. | LLM | scripts/setup.py:90 | |
| LOW | Use of shell=True in subprocess.run for URL opening The `subprocess.run` function is used with `shell=True` when opening URLs on Windows (`sys.platform == 'win32'`). While the URLs are currently hardcoded or derived from trusted internal script output, using `shell=True` can introduce command injection vulnerabilities if the command string or its arguments were ever to become untrusted. It's generally safer to avoid `shell=True` unless absolutely necessary, especially when dealing with external inputs or system commands. Avoid using `shell=True` with `subprocess.run` where possible. For opening URLs, consider using the `webbrowser` module, which provides a safer, cross-platform way to open web pages without directly invoking shell commands. | LLM | scripts/setup.py:179 | |
| LOW | Unpinned Python Dependency The `requirements.txt` file specifies the `requests` dependency with a minimum version (`requests>=2.31.0`) rather than an exact pinned version (`requests==2.31.0`). This can lead to supply chain risks where future, potentially incompatible or vulnerable, versions of the `requests` library could be installed automatically, leading to unexpected behavior or security issues. While `requests` is a widely used and generally trusted library, pinning dependencies to exact versions is a best practice for reproducibility and security. Pin all dependencies to exact versions in `requirements.txt` (e.g., `requests==2.31.0`). This ensures that the exact same versions of libraries are installed every time, improving reproducibility and reducing the risk of unexpected issues from upstream changes. | LLM | requirements.txt:1 |
Scan History
Embed Code
[](https://skillshield.io/report/1e9367e8fa15bca4)
Powered by SkillShield