Claude Code, Plugin
jfrog
Use the JFrog Platform from Claude Code: Artifactory repos and artifacts, security findings and exposures, Catalog package safety and downloads, workflows across the SDLC, and platform administration.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High finding. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit eb4ac5b14e2d.
Pattern found, check before installing
The checks matched a pattern that needs a closer look. It does not mean the code is harmful. Read the quoted lines below.
- NETWORK_HOST_FROM_INPUT High
host from input plus a credential path in operative code
INSTALL_REMOTE_SCRIPT NETWORK_HOST_FROM_INPUT SECRETS_PATH_CREDENTIAL
Why this grade
- INSTALL_REMOTE_SCRIPT High
Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).
skills/jfrog/references/jfrog-cli-install-upgrade.md, line 20
curl -fL https://install-cli.jfrog.io | sh - NETWORK_HOST_FROM_INPUT High
A file takes a URL or endpoint as input and has no fixed host list.
skills/jfrog-init/scripts/jfrog-add-claude-marketplace.mjs, line 153
// curl checks HOME before the platform default. - SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
modules/package-resolution/scripts/eager-setup-receipt.mjs, line 3
// `jf setup` mutates USER-GLOBAL package-manager config (`~/.npmrc`,
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.
If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.
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
Pass
No shell or command call was found in the code. This check does not read permissions an entry declares. A permission line to run shell commands and write or edit files was found in this repository, and it may apply to this entry.
Install and update
Serious
install fetches a script from the network. The docs document an installer that pipes a download into a shell.
INSTALL_REMOTE_SCRIPT INSTALL_DOCUMENTED_INSTALLER
skills/jfrog/references/jfrog-cli-install-upgrade.md, line 20
curl -fL https://install-cli.jfrog.io | sh
skills/jfrog/references/jfrog-cli-install-upgrade.md, line 38
curl -fL https://install-cli.jfrog.io | sh
skills/jfrog-init/references/node-install-prompt.md, line 49
curl -fsSL "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_TAG}/install.sh" | bash && \
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
skills/jfrog-init/scripts/jfrog-add-claude-marketplace.mjs, line 153
// curl checks HOME before the platform default.
skills/jfrog-init/scripts/lib/jf.mjs, line 313
let res = await fetch(url, {
skills/jfrog-init/scripts/lib/jf.mjs, line 341
res = await fetch(url, { headers, signal: AbortSignal.timeout(AUTHED_FETCH_TIMEOUT_MS), redirect: "manual" });
Show more
skills/jfrog-init/scripts/lib/jf.mjs, line 364
const res = await fetch(endpoint, {
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL
skills/jfrog-mcp-management/scripts/jfrog-agent-guard-env-probe.mjs, line 26
`JFROG_ACCESS_TOKEN: ${presentOrEmpty(process.env.JFROG_ACCESS_TOKEN)}`,
skills/jfrog-mcp-management/scripts/jfrog-agent-guard-env-probe.mjs, line 28
`JF_ACCESS_TOKEN: ${presentOrEmpty(process.env.JF_ACCESS_TOKEN)}`,
modules/package-resolution/scripts/eager-setup-receipt.mjs, line 3
// `jf setup` mutates USER-GLOBAL package-manager config (`~/.npmrc`,
Show more
modules/package-resolution/scripts/setup-conflict.mjs, line 219
out.push(path.join(h, ".npmrc"));
modules/package-resolution/scripts/setup-conflict.mjs, line 224
* Read npm user config registries (NPM_CONFIG_USERCONFIG or $HOME/.npmrc).
modules/package-resolution/scripts/setup-conflict.mjs, line 311
const PNPM_CONFIG_FILE_NAMES = ["auth.ini", "rc", "config.yaml", ".npmrc"];
modules/package-resolution/scripts/setup-conflict.mjs, line 334
* config.yaml / .npmrc under the pnpm config dir). Registries come from
modules/package-resolution/scripts/setup-conflict.mjs, line 750
* Covered today: npm (`NPM_CONFIG_USERCONFIG` / `$HOME/.npmrc`), pnpm
modules/package-resolution/scripts/setup-conflict.mjs, line 753
* `NPM_CONFIG_USERCONFIG`, so a foreign `.npmrc` must block pnpm too),
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 eb4ac5b14e2d. install fetches a script from the network. accepts a host from input, with no fixed list in this file. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: eb4ac5b14e2dbc9c75a621e7864a73471ee9ee45
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.