Claude Code, Plugin
Reel Notes
Watch and summarise any video with Claude — sumtube + media-downloader
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_SHELL_UNDECLARED
Why this grade
- PERMISSION_SHELL_UNDECLARED Medium
Runs shell commands that the manifest or description does not mention.
plugins/media-downloader/scripts/download.py, line 149
result = subprocess.run(
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
requests shell access. No manifest field names shell or command execution. can delete files.
PERMISSION_SHELL_UNDECLARED PERMISSION_DELETE_FILES
plugins/media-downloader/scripts/download.py, line 149
result = subprocess.run(
plugins/media-downloader/scripts/download.py, line 233
result = subprocess.run(
plugins/sumtube/scripts/summariser.py, line 701
probe_result = subprocess.run(
Show more
plugins/sumtube/scripts/summariser.py, line 727
ffmpeg_result = subprocess.run(
plugins/sumtube/scripts/summariser.py, line 913
shutil.rmtree(tmpdir, ignore_errors=True)
plugins/sumtube/scripts/summarize.py, line 128
result = subprocess.run(
plugins/sumtube/scripts/summarize.py, line 184
result = subprocess.run(
plugins/sumtube/scripts/summarize.py, line 387
shutil.rmtree(offer_visual_tmpdir, ignore_errors=True)
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
plugins/sumtube/scripts/summarize.py, line 227
with urllib.request.urlopen(oembed_url, timeout=10) as response:
plugins/sumtube/scripts/summarize.py, line 309
with urllib.request.urlopen(req, timeout=3):
plugins/sumtube/scripts/transcript.py, line 205
fetched = transcript.fetch()
Show more
plugins/sumtube/scripts/transcript.py, line 215
fetched = transcript.fetch()
plugins/sumtube/scripts/transcript.py, line 224
fetched = ytt_api.fetch(video_id, languages=languages)
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
plugins/sumtube/hooks/scripts/check-setup.sh, line 8
# Keys come from the environment or ~/.config/sumtube/.env. For the file, grep -q
plugins/sumtube/hooks/scripts/check-setup.sh, line 11
KEY_FILE="$HOME/.config/sumtube/.env"
plugins/sumtube/hooks/scripts/check-setup.sh, line 13
echo "sumtube: SUMTUBE_API_KEY not set. Export it, or put SUMTUBE_API_KEY=... in ~/.config/sumtube/.env (chmod 600). ANTHROPIC_API_KEY is not read."
Show more
plugins/sumtube/scripts/key_loader.py, line 5
~/.config/sumtube/.env. A .env file inside the plugin folder is NOT read.
plugins/sumtube/scripts/key_loader.py, line 18
ENV_PATH = "~/.config/sumtube/.env"
plugins/sumtube/scripts/key_loader.py, line 22
"""Load ~/.config/sumtube/.env if it exists. Return the path loaded, or None.
plugins/sumtube/scripts/setup.py, line 22
# Keys come from the environment or ~/.config/sumtube/.env only. A .env file
plugins/sumtube/scripts/setup.py, line 39
~/.config/sumtube/.env. ANTHROPIC_API_KEY is not accepted.
plugins/sumtube/scripts/setup.py, line 60
if not os.environ.get("SUMTUBE_API_KEY"):
plugins/sumtube/scripts/setup.py, line 73
if not os.environ.get("GROQ_API_KEY"):
plugins/sumtube/scripts/summarize.py, line 296
groq_api_key = os.environ.get("GROQ_API_KEY", "")
plugins/sumtube/scripts/summarize.py, line 446
if os.environ.get("GROQ_API_KEY"):
plugins/sumtube/scripts/summarize.py, line 517
if os.environ.get("GROQ_API_KEY"):
plugins/sumtube/scripts/summarize.py, line 571
if os.environ.get("GROQ_API_KEY"):
plugins/sumtube/scripts/summarize.py, line 843
api_key = args.api_key or os.environ.get("SUMTUBE_API_KEY")
plugins/sumtube/scripts/transcript.py, line 531
if not os.environ.get("GROQ_API_KEY"):
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
a file was over the read cap and was not fully read.
OBFUSCATION_FILE_OVER_READ_CAP
tests/e2e/fixtures/zoo.webm, line 1
Eߣ�B��B��B�B�B��webmB��B��S�g ��M�t�M��S��I�fS���M��S��T�kS���M��S��T�gS���M��S��
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit a9be3e32bfe1. requests shell access. No manifest field names shell or command execution. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. a file was over the read cap and was not fully read.
Date and source
Date checked:
github.com
Commit graded: a9be3e32bfe1a6dfd3f60a586a017de3e39afb45
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.