Codex, Plugin
Agent Plugins
A plugin marketplace for AI coding agents — 10 plugins, 82 skills.
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 75
r = subprocess.run([sys.executable, *args], capture_output=True, text=True, timeout=600, env=env) - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
plugins/hardening/skills/exposure-scan/scan.sh, line 89
urls="$(curl -fsSL "$api" \ - SECRETS_PATH_DOTENV Low
Mentions a .env file.
plugins/hardening/skills/readiness-review/scripts/db_facts.py, line 17
repo's own local .env), inside this subprocess only. Use a read-only role; - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
plugins/hardening/skills/auth-hardening/SKILL.md, line 25
clientSecret: process.env.GITHUB_SECRET,
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
can delete files.
PERMISSION_DELETE_FILES
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 75
r = subprocess.run([sys.executable, *args], capture_output=True, text=True, timeout=600, env=env)
plugins/hardening/skills/readiness-review/scripts/gh_facts.py, line 68
r = subprocess.run(["gh", *args], capture_output=True, text=True, timeout=120)
plugins/hardening/skills/readiness-review/scripts/gh_facts.py, line 76
r = subprocess.run(["git", "-C", path, *args], capture_output=True, text=True, timeout=120)
Show more
plugins/hardening/skills/readiness-review/scripts/make_review_copy.py, line 124
shutil.rmtree(dest, ignore_errors=True)
plugins/hardening/skills/readiness-review/scripts/rr_common.py, line 100
r = subprocess.run(["git", "-C", str(root), "ls-files", "-z", "--cached", "--others", "--exclude-standard"],
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/hardening/skills/exposure-scan/scan.sh, line 89
urls="$(curl -fsSL "$api" \
plugins/hardening/skills/exposure-scan/scan.sh, line 95
curl -fsSL "$url" -o "$LOCAL_CAT/$(basename "$url")" && n=$((n+1))
plugins/hardening/skills/rate-limit-audit/SKILL.md, line 69
send() { curl -s -o /dev/null -w "%{http_code}\n" -X POST "$URL" \
Show more
plugins/hardening/skills/security-headers/SKILL.md, line 21
echo "== $url"; curl -sSI "$url" | tr -d '\r' | grep -iE '^(c
plugins/hardening/skills/privacy-audit/SKILL.md, line 47
- [ ] API response grep run for over-fetch (`select`/`omit` missing on sensitive fields)
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
plugins/hardening/skills/auth-hardening/SKILL.md, line 25
clientSecret: process.env.GITHUB_SECRET,
plugins/hardening/skills/readiness-review/scripts/db_facts.py, line 17
repo's own local .env), inside this subprocess only. Use a read-only role;
plugins/hardening/skills/readiness-review/scripts/db_facts.py, line 203
"""The variable from the environment (unless file_only), else from a KEY=VALUE .env file."""
Show more
plugins/hardening/skills/readiness-review/scripts/db_facts.py, line 235
ap.add_argument("--env-file", help="the target repo's local .env file to look the variable up in")
plugins/hardening/skills/readiness-review/scripts/db_facts.py, line 246
_emit({"status": "NOT CONFIGURED", "reason": f"{args.env_var} is not set in the environment or the .env file"}, args.json)
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 12
loaded inside db_facts' own process from the repo's local .env and never
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 151
# The repo config may name a variable, but it is looked up ONLY in the repo's own .env file
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 156
env_file = inside(repo, db.get("env_file", ".env"))
plugins/hardening/skills/readiness-review/scripts/gather_facts.py, line 198
"looked up in the environment, then the repo's .env")
plugins/hardening/skills/webhook-reliability/SKILL.md, line 20
const event = stripe.webhooks.constructEvent(rawBody, req.headers.get('stripe-signature')!, process.env.STRIPE_WEBHOOK_SECRET!);
plugins/hardening/skills/webhook-reliability/SKILL.md, line 25
const expected = Buffer.from('sha256=' + createHmac('sha256', process.env.GITHUB_WEBHOOK_SECRET!).update(rawBody).digest('hex'));
plugins/ship-pipeline/skills/stripe-billing/SKILL.md, line 49
const event = stripe.webhooks.constructEvent(rawBody, sig, process.env.STRIPE_WEBHOOK_SECRET!);
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
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 ba54e7df75b2. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: ba54e7df75b2aad2292fc146e596cdb7c73adb8e
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.