Claude Code, Skill
agentbnb
agentbnb, a skill listed in the PlugVet directory.
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit dd84f62c4e80, unchanged since the check below.
NETWORK_HOST_FROM_INPUT
Why this grade
- NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
adapters/langchain/test_e2e.py, line 27
resp = httpx.get(f"{registry_url}/cards", params={"q": "joke", "limit": 5})
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
src/skills/openclaw-bridge.test.ts, line 161
.mockReturnValue(mockSpawnResult({ result: 'done' }) as ReturnType<typeof child_process.spawnSync>);
src/skills/openclaw-bridge.test.ts, line 193
return mockSpawnResult({ output: 'ok' }) as ReturnType<typeof child_process.spawnSync>;
src/skills/openclaw-bridge.test.ts, line 203
mockSpawnResult({}, { error: new Error('Command not found: openclaw') }) as ReturnType<typeof child_process.spawnSync>,
Show more
src/skills/openclaw-bridge.test.ts, line 223
} as unknown as ReturnType<typeof child_process.spawnSync>);
src/skills/openclaw-bridge.test.ts, line 235
mockSpawnResult({ payloads: [{ text: '{"ok": true}', mediaUrl: null }], meta: { durationMs: 100 } }) as ReturnType<typeof child_process.spawnSync>,
src/skills/openclaw-bridge.test.ts, line 248
mockSpawnResult({ simple: 'result' }, { useStdout: true }) as ReturnType<typeof child_process.spawnSync>,
src/skills/openclaw-bridge.test.ts, line 268
} as unknown as ReturnType<typeof child_process.spawnSync>);
src/skills/openclaw-bridge.test.ts, line 453
mockSpawnResult(openclawResponse) as ReturnType<typeof child_process.spawnSync>,
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
adapters/langchain/test_e2e.py, line 27
resp = httpx.get(f"{registry_url}/cards", params={"q": "joke", "limit": 5})
adapters/langchain/test_e2e.py, line 53
resp = httpx.post(
adapters/openai/generate.ts, line 126
const resp = await fetch(url);
Show more
examples/local-agent-demo/demo.sh, line 96
if curl -s http://localhost:7700/health | python3 -c "import sys,json; d=json.load(sys.stdin); assert d['status']=='ok'" 2>/dev/null; then
examples/local-agent-demo/demo.sh, line 115
RESULT=$(curl -s -X POST http://localhost:7700/rpc \
examples/local-agent-demo/demo.sh, line 135
RESULT=$(curl -s -X POST http://localhost:7700/rpc \
examples/local-agent-demo/demo.sh, line 155
RESULT=$(curl -s -X POST http://localhost:7700/rpc \
examples/tts-agent/tts-run.mjs, line 25
const response = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`, {
genesis-template/templates/skills/genesis-feedback/SKILL.md, line 132
curl -s "{{hubUrl}}/api/providers/<your_owner>/reliability" | jq '.'
genesis-template/templates/skills/genesis-pulse/SKILL.md, line 104
curl -s "{{hubUrl}}/api/providers/<your_owner>/reliability" | jq '.'
genesis-template/templates/skills/genesis-trader/SKILL.md, line 89
curl -s "{{hubUrl}}/api/registry/search?\
genesis-template/templates/skills/genesis-trader/SKILL.md, line 121
curl -s "{{hubUrl}}/api/providers/<owner>/reliability" | jq '.'
hub/src/pages/HubAgentDashboardPage.tsx, line 101
const res = await fetch(`/api/hub-agents/${encodeURIComponent(agentId)}`, { method: 'DELETE' });
packages/genesis-template/skills/genesis-evolution/SKILL.md, line 51
curl -s -X POST https://hub.agentbnb.dev/api/evolution/publish \
packages/genesis-template/skills/genesis-evolution/SKILL.md, line 64
curl -s "https://hub.agentbnb.dev/api/evolution/latest" | jq '.template_version, .core_memory_snapshot'
src/cli/doctor.ts, line 556
const res = await fetch(`http://localhost:${port}/health`, { signal: controller.signal });
src/identity/guarantor.ts, line 286
const tokenRes = await fetch('https://github.com/login/oauth/access_token', {
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
examples/tts-agent/tts-run.mjs, line 18
const apiKey = process.env.ELEVENLABS_API_KEY;
packages/managed-agents-adapter/src/config.ts, line 28
keystorePath: process.env['KEYSTORE_PATH'] ?? '/data',
.dockerignore, line 6
**/.env
Show more
.dockerignore, line 7
**/.env.local
.gitignore, line 4
*.sqlite
.gitignore, line 5
.env
docs/maintenance/2026-03-30.md, line 33
- No tracked secrets were found; `.gitignore` covers `node_modules/`, `dist/`, `.env*`, SQLite files, logs, coverage, and private docs.
hermes-plugin/examples/coding-agent.RENTAL.md, line 51
tokens, or `.env` contents. If a renter pastes one, redact it in your
src/cli/onboarding.test.ts, line 72
const indexAccessPattern = /process\.env\[/;
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
the file cap was reached before every file was read.
OBFUSCATION_FILE_CAP_REACHED
packages/skill-inspector/src/risk-heuristics.ts, line 1
import type {
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 dd84f62c4e80. requests shell access. The manifest names this permission. accepts a host from input, with no fixed list in this file. reads a credential or environment file. the file cap was reached before every file was read.
Date and source
Date checked:
github.com
Commit graded: dd84f62c4e805937d6e9fae8e8af8fa4dbc285a4
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.