CAUTION version 1.0.1 · audited 2026-09-17
This skill fetches YouTube video transcripts for a given video ID or URL and returns transcript text plus title and author. To do this it uses Python network requests and a WireGuard VPN that it checks and can automatically start, changing the host's network interface and routing settings. The setup guide also tells the user to install Python packages and write WireGuard keys to /etc/wireguard. The video ID is sent to noembed.com for metadata, and the skill's own card acknowledges that it may alter WireGuard and routing settings. No credential theft, hidden code execution, or payment redirection was found. Because it makes host-level networking changes and uses third-party/unpinned components, it requires careful review before use.
| Declared purpose | Fetch and summarize YouTube video transcripts; use a residential IP proxy/VPN to bypass YouTube's cloud IP blocks. |
| Observed behavior | The main script accepts a YouTube video ID or URL and optional language list. It checks WireGuard interface wg0 with wg show; if that fails, it runs wg-quick up wg0 and adds an ip rule. It then creates an HTTP session bound to 10.100.0.2, fetches a transcript using youtube-transcript-api, fetches title and author from noembed.com, and prints a JSON result. The script does not implement summarization itself; the setup guide requires pip installs and shell commands that generate WireGuard keys. |
| Verdict, rules only | CAUTION · runs subprocesses or eval/exec |
| Verdict, AI | CAUTION |
| Final verdict | CAUTION (never better than either pass) |
| capability | vs purpose | detail |
|---|---|---|
| network | needed | Makes outbound HTTPS requests to YouTube services through youtube-transcript-api and to noembed.com for title/author metadata. The requests session is bound to VPN_SOURCE_IP 10.100.0.2. |
| shell | needed | Runs subprocess commands wg show, wg-quick up, and ip rule add to check or start the WireGuard VPN. User input is not passed to these commands. |
| filesystem_write | needed | The setup guide instructs writing WireGuard private/public keys to /etc/wireguard/privatekey and /etc/wireguard/publickey. The main script itself does not write files. |
| install_packages | needed | The setup guide tells the user to run pip3 install youtube-transcript-api requests. These dependencies are unpinned. |
| severity | finding |
|---|---|
| info | Declared purpose includes bypassing YouTube cloud IP blocks This line states that the skill will use a residential IP proxy to bypass YouTube's cloud IP blocks, so host-level VPN use is part of the stated purpose. SKILL.md:3 description: Fetch and summarize YouTube video transcripts. Use when asked to summarize, transcribe, or extract content from YouTube videos. Handles transcript |
| medium | Executes wg show to inspect VPN state The Python code runs the system wg command with fixed arguments to check WireGuard interface wg0. scripts/fetch_transcript.py:32 ["wg", "show", VPN_INTERFACE], |
| high | Automatically starts the WireGuard VPN If check_vpn() returns false, main() calls bring_up_vpn(), which runs wg-quick up wg0. This changes the host network interface state and may disrupt networking if not properly configured. scripts/fetch_transcript.py:48 subprocess.run(["wg-quick", "up", VPN_INTERFACE], capture_output=True, timeout=10) |
| high | Adds a host routing policy rule The script runs ip rule add from 10.100.0.2 table 51820 to route traffic from the VPN source IP through the WireGuard table, modifying the host routing policy. scripts/fetch_transcript.py:49 ["ip", "rule", "add", "from", VPN_SOURCE_IP, "table", "51820"], |
| medium | Sends YouTube video IDs to noembed.com get_video_title() makes a GET request to noembed.com with the YouTube watch URL, so noembed.com sees the requested video ID. The skill card also discloses this at skill-card.md line 28. scripts/fetch_transcript.py:92 f"https://noembed.com/embed?url=https://www.youtube.com/watch?v={video_id}", |
| medium | Unpinned Python dependencies The setup guide installs youtube-transcript-api and requests without pinning versions. The skill card acknowledges that unpinned dependencies can change behavior across installs. references/SETUP.md:18 pip3 install youtube-transcript-api requests |
| medium | Instructs writing WireGuard private key to /etc/wireguard The setup documentation tells the user to generate and write WireGuard key material to /etc/wireguard/privatekey and /etc/wireguard/publickey. The main script does not write these itself. references/SETUP.md:29 wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey |
| medium | Instructs VPS WireGuard key file creation This repeats the key generation and write instruction for the VPS client configuration. references/SETUP.md:48 wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey |
| low | Alternative SSH tunnel proxy The setup guide suggests an SSH SOCKS proxy as an alternative to WireGuard, which would open a network tunnel through the user's home server. references/SETUP.md:96 - **SSH tunnel**: `ssh -D 1080 user@home-server` + configure SOCKS proxy |
| medium | Publisher discloses host networking changes The skill card explicitly acknowledges that the script may alter host-level WireGuard and routing settings, matching the runtime behavior at scripts/fetch_transcript.py lines 48-49. skill-card.md:24 Risk: The skill may change host-level WireGuard and routing settings when bringing up the configured VPN interface. |
| info | Publisher discloses noembed.com metadata exposure This confirms the noembed.com request is known to the publisher. skill-card.md:28 Risk: Requested video IDs may be visible to noembed.com when the skill fetches title and author metadata. |
0 AI finding(s) were dropped because their file, line or quote did not match the package.
| domain | service rating | where |
|---|---|---|
| clawhub.ai | not in the service index | skill-card.md:9 |
| noembed.com | not in the service index | scripts/fetch_transcript.py:92 |
| www.youtube.com | not in the service index | SKILL.md:19 |
| Binaries invoked | bash, curl, pip3, python, python3, ssh |
| Environment variables read | none |
| Hard-coded wallets | none |
| Pipes a download to a shell | 0 |
| eval / exec / subprocess | 4 |
| base64 blobs | 0 |
| File writes | 2 |
| Persistence | 0 |
| file | lines | sha256 |
|---|---|---|
SKILL.md | 44 | f8843aca94abffec… |
_meta.json | 6 | 0d6b61d377586e21… |
references/SETUP.md | 98 | 38ece2a1d31bfbc1… |
scripts/fetch_transcript.py | 149 | 185ac655f26ba8b6… |
skill-card.md | 57 | 1599084b9a44f7b4… |
For agents
JSON: https://agenteconomy.report/k/youtube-transcript.audit.json · badge: https://agenteconomy.report/k/youtube-transcript.audited.svg ·
skill rating: /k/youtube-transcript · commission an audit of any skill: US$ 29 per version.
The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).