Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

Claude Api

Claude Api, a skill listed in the PlugVet directory.

Compatibility: Claude Code.

Grade C

One Medium finding. Read the findings before installing.

Graded by PlugVetRubric v2

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

Rescanned at commit dbd4588f9e10, unchanged since the check below.

SECRETS_PATH_CREDENTIAL

Why this grade

  • SECRETS_PATH_CREDENTIAL Medium

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

    shared/evals/report/build-report-lite.mjs, line 28 // `summary.json -> ~/.ssh/id_rsa`; the user later runs this builder (outside

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

    Note

    requests shell access. The manifest names this permission.

    PERMISSION_SHELL_DECLARED

    shared/token-counting.md, line 51

    before = subprocess.check_output(["git", "show", "HEAD:CLAUDE.md"], text=True)

  • Install and update

    Pass

    No install-time script found, and dependencies are pinned or absent.

  • Network

    Concern

    can reach api.anthropic.com. The description does not name that host. can reach a host that is not written as a fixed address.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    curl/examples.md, line 16

    curl https://api.anthropic.com/v1/messages \

    curl/examples.md, line 37

    response=$(curl -s https://api.anthropic.com/v1/messages \

    curl/examples.md, line 63

    curl https://api.anthropic.com/v1/messages \

    Show more

    curl/examples.md, line 102

    curl https://api.anthropic.com/v1/messages \

    curl/examples.md, line 127

    curl https://api.anthropic.com/v1/messages \

    curl/examples.md, line 165

    curl https://api.anthropic.com/v1/messages \

    curl/examples.md, line 192

    curl https://api.anthropic.com/v1/messages \

    curl/examples.md, line 217

    response=$(curl -s https://api.anthropic.com/v1/messages \

    shared/anthropic-cli.md, line 24

    curl -fsSL "https://github.com/anthropics/ant

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV

    shared/anthropic-cli.md, line 65

    # .env format - sets ANTHROPIC_AUTH_TOKEN (and ANTHROPIC_BASE_URL if the profile has one).

    shared/managed-agents-environments.md, line 179

    authorization_token: process.env.GITHUB_TOKEN, // repo clone token (!= MCP auth)

    shared/evals/report/build-report-lite.mjs, line 28

    // `summary.json -> ~/.ssh/id_rsa`; the user later runs this builder (outside

    Show more

    shared/managed-agents-self-hosted-sandboxes.md, line 70

    const environmentKey = process.env.ANTHROPIC_ENVIRONMENT_KEY!;

    shared/managed-agents-tools.md, line 90

    { "type": "user.tool_confirmation", "tool_use_id": "sevt_def456", "result": "deny", "deny_message": "Read .env.example instead" }

    shared/evals/report/runner-scaffold.mjs, line 112

    // ~/.ssh/id_rsa` planted after the startup preflight must not be read into

    shared/preserved-thinking-migration/drop_block_probe.py, line 410

    key = os.environ.get("ANTHROPIC_API_KEY")

    shared/preserved-thinking-migration/drop_block_probe.py, line 411

    token = os.environ.get("ANTHROPIC_AUTH_TOKEN")

    typescript/managed-agents/README.md, line 127

    authorization_token: process.env.GITHUB_TOKEN,

    shared/managed-agents-onboarding-from-url.md, line 248

    - **Never ask for a secret in the chat, and never write one to a file.** No `.env`, whatever the page does.

    shared/preserved-thinking-migration/prefix_diff.py, line 1392

    r"(os\.environ|process\.env|getenv\(|uuid|Math\.random\(|random\.choice|request_id|session_id|user_id|cwd\(\)|getcwd\(\)|hostname)",

  • 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

    shared/model-migration.md, line 1

    # Model Migration Guide

  • Licence

    Pass

    A licence file is present (skills/claude-api/LICENSE.txt).

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit dbd4588f9e10. requests shell access. The manifest names this permission. can reach api.anthropic.com. The description does not name that host. 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:

View source

github.com

Commit graded: dbd4588f9e1033efb41dad4bef2f7947c8993d44

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