Grades are a hygiene check, not a security guarantee.

Claude Code, Plugin

Claude Ollama Skills

Skills and agents that delegate small tasks to local Ollama models: commit messages, PR descriptions with gated draft-PR creation, shell and code drafts, and log/text/git-history digests.

Compatibility: Not stated.

Grade D

Two or more Medium findings, or a High finding. Only try it in a sandbox.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

Rescanned at commit 27cdd1d9c69f, unchanged since the check below.

INSTALL_REMOTE_SCRIPT SECRETS_PATH_CREDENTIAL

Why this grade

  • INSTALL_REMOTE_SCRIPT Medium

    Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).

    .github/workflows/e2e.yml, line 18 run: curl -fsSL https://ollama.com/install.sh | sh

  • SECRETS_PATH_CREDENTIAL Medium

    Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).

    scripts/ollama_ask.py, line 1433 # NOT here - each can read a secret file (`~/.ssh/id_rsa`, `.env`,

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

    Note

    requests shell access. The manifest names this permission.

    PERMISSION_SHELL_DECLARED

    benchmarks/fixtures.py, line 72

    subprocess.run(

    benchmarks/measure_ab.py, line 65

    proc = subprocess.run(argv, cwd=cwd, capture_output=True,

    benchmarks/measure_ab.py, line 103

    return subprocess.run(["git"] + list(args), cwd=repo, capture_output=True,

    Show more

    benchmarks/measure_ab.py, line 147

    subprocess.run(["git", "-c", "user.name=AB Bench",

    benchmarks/measure_ab.py, line 264

    health = subprocess.run(

    scripts/ollama_ask.py, line 544

    exactly -- passing no `env` kwarg to subprocess.run at all. Introduced

    scripts/ollama_ask.py, line 553

    return subprocess.run(

    scripts/ollama_ask.py, line 1579

    result = subprocess.run(

  • Install and update

    Serious

    install fetches a script from the network.

    INSTALL_REMOTE_SCRIPT

    .github/workflows/e2e.yml, line 18

    run: curl -fsSL https://ollama.com/install.sh | sh

  • Network

    Concern

    can reach a host that is not written as a fixed address.

    NETWORK_NO_FIXED_HOST

    scripts/ollama_ask.py, line 296

    with urllib.request.urlopen(host + path, timeout=10) as resp:

    scripts/ollama_ask.py, line 328

    with urllib.request.urlopen(request, timeout=stall_seconds) as resp:

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV

    scripts/ollama_ask.py, line 1414

    ".ssh", ".aws", ".env", "printenv", "Get-ChildItem Env:",

    scripts/ollama_ask.py, line 1433

    # NOT here - each can read a secret file (`~/.ssh/id_rsa`, `.env`,

    docs/skill-tests.md, line 23

    | Baseline (no skill) | Adds `--dry-run` first (good), but final plan still runs **full-repo** `git clean -fdx`, which also deletes ignored files like `.env`. No scope narrowing to

    Show more

    skills/ollama-docker/DENYLIST.md, line 21

    `~/.aws`, `.env`, cloud metadata endpoints.

    skills/ollama-shell/DENYLIST.md, line 7

    - `git clean -fdx` / `-fd` (silently deletes untracked files - configs, .env, notes)

    skills/ollama-shell/DENYLIST.md, line 12

    - Reading or sending secrets: credential files (`.ssh`, `.aws`, tokens, browser profiles), `.env` files, or dumping env vars (`printenv`, `Get-ChildItem Env:`)

    skills/ollama-shell/DENYLIST.md, line 18

    - Docker host-escape the user did not ask for: `--privileged`, `--pid=host`, `--network=host`, `--cap-add=ALL`, `--security-opt seccomp=unconfined`, bind-mounting host root (`-v /:

  • 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 27cdd1d9c69f. requests shell access. The manifest names this permission. install fetches a script from the network. can reach a host that is not written as a fixed address. reads a credential or environment file.

Date and source

Date checked:

View source

github.com

Commit graded: 27cdd1d9c69f050e9336819d4c9c9c6902a1fd1b

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.

Read how this letter is chosen