MCP, MCP server
deliberation
Use when you want a delegated second opinion or implementation from GPT (Codex), Gemini, Grok (xAI), or OpenRouter (config-driven, 400+ models) - seven expert subagents (Architect, Plan Reviewer, Scope Analyst, Code Reviewer, Security Analyst, Researcher, Debugger) and bundled as
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 ef84a71a66bf, unchanged since the check below.
OBFUSCATION_MINIFIED_PAYLOAD
Why this grade
- OBFUSCATION_MINIFIED_PAYLOAD Medium
Contains a very long line with almost no spaces in a script or style file.
server/dashboard/ui/views/stats.js, line 88
h('div',{class:'table-wrap'},h('table',{class:'grid-table'},h('thead',{},h('tr',{},['config','runs','live','success','errors','p50','p95','measured tokens','usage coverage','reuse'
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
core/config-history.js, line 45
for(const f of files.slice(200)) fs.rmSync(path.join(d,f.n),{force:true});
core/config-history.js, line 76
try {fs.writeFileSync(temp,content,{mode:0o600,flag:'wx'});fs.renameSync(temp,file);} finally {fs.rmSync(temp,{force:true});}
core/config-history.js, line 81
for(const f of files.slice(cap))fs.rmSync(path.join(dir,f.n),{force:true});
Show more
core/journal.js, line 129
fs.rmSync(file, { force: true });
core/sessions.js, line 427
fs.rmSync(file, { force: true });
server/dashboard/index.js, line 287
if (s && s.pid === process.pid) fs.rmSync(statePath, { force: true });
server/dashboard/index.js, line 288
fs.rmSync(openerPath(statePath), { force: true });
server/dashboard/stop.js, line 140
const remove = () => fs.rmSync(statePath, { force: true });
TECHNICAL.md, line 464
shim, and since the CVE-2024-27980 hardening in Node 18.20 / 20.12, `child_process.spawn` with
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
core/provider.js, line 129
* @param {any} err the rejection from fetch()
server/dashboard/index.js, line 113
const req = http.get({ host: "127.0.0.1", port, path: `/?t=${token}`, headers: { Host: `127.0.0.1:${port}` }, timeout: timeoutMs }, (res) => {
server/dashboard/ui/api.js, line 34
res = await fetch(path, { credentials: "
Show more
server/grok/index.js, line 1357
// Startup check: the bridge needs global fetch (Node 18+). The API key is NOT
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
core/sessions.js, line 114
* and syntax-aware key-value secrets (JSON, YAML, .env, Shell) from a string.
core/sessions.js, line 163
// Syntax-aware YAML / Shell / INI / .env key-value scrubbing.
core/providers/grok.js, line 33
return process.env.XAI_API_KEY ? { ok: true } : { ok: false, reason: "XAI_API_KEY unset" };
Show more
core/providers/grok.js, line 44
const apiKey = (req && req.apiKey) || process.env.XAI_API_KEY;
server/gemini/index.js, line 232
const out = { ...env };
server/grok/files-admin.js, line 180
const apiKey = process.env.XAI_API_KEY;
server/grok/index.js, line 173
// Security: dotenv (granular - keeps .env.example/.env.sample/.env.template readable)
server/grok/index.js, line 174
"**/.env", "**/.env.local",
server/grok/index.js, line 175
"**/.env.development", "**/.env.development.local", "**/.env.dev", "**/.env.dev.local",
server/grok/index.js, line 176
"**/.env.production", "**/.env.production.local", "**/.env.prod", "**/.env.prod.local",
server/grok/index.js, line 177
"**/.env.test", "**/.env.test.local",
server/grok/index.js, line 1257
apiKey: process.env.XAI_API_KEY,
server/grok/index.js, line 1364
if (!isNonEmptyString(process.env.XAI_API_KEY)) {
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains a minified payload.
OBFUSCATION_MINIFIED_PAYLOAD
server/dashboard/ui/views/stats.js, line 88
h('div',{class:'table-wrap'},h('table',{class:'grid-table'},h('thead',{},h('tr',{},['config','runs','live','success','errors','p50','p95','measured tokens','usage coverage','reuse'
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 ef84a71a66bf. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. contains a minified payload.
Date and source
Date checked:
github.com
Commit graded: ef84a71a66bfa2b77b866312036c59807fe050a0
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.