Claude Code, Plugin
Claude Code Dashboard
Local web dashboard for Claude Code — monitor rate limits, manage agents/skills/hooks/MCP servers, browse session history, track daily activity and usage rankings
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 bb8a99e9bdd3.
SECRETS_PATH_CREDENTIAL
Why this grade
- SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
src/lib/claude-oauth.ts, line 3
// Reads credentials from ~/.claude/.credentials.json (cross-platform)
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
server.mjs, line 151
fs.rmSync(entryPath, { recursive: true, force: true });
server.mjs, line 184
fs.unlinkSync(pidFilePath);
server.mjs, line 187
try { fs.unlinkSync(pidFilePath); } catch { /* ignore */ }
Show more
server.mjs, line 292
fs.unlinkSync(pidFilePath);
e2e/demo-frames.spec.ts, line 10
fs.rmSync(FRAMES_DIR, { recursive: true, force: true });
scripts/postbuild.mjs, line 95
fs.rmSync(destPath, { recursive: true, force: true });
src/lib/bisect.ts, line 67
await fs.unlink(SESSION_PATH);
src/lib/deleter.ts, line 85
await fs.rm(entryPath, { recursive: true, force: true });
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. can reach api.anthropic.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
server.mjs, line 70
const req = http.get(
commands/open.md, line 48
curl -fsSL --connect-timeout 2 --max-time 5 h
commands/update.md, line 21
curl -fsSL --connect-timeout 2 --max-time 5 h
Show more
src/app/page.tsx, line 64
const res = await fetch('/api/inventory');
src/app/page.tsx, line 80
const res = await fetch('/api/token');
src/app/page.tsx, line 139
const res = await fetch('/api/dependencies');
src/app/page.tsx, line 158
const res = await fetch(`/api/items/${encodeURIComponent(item.id)}`, {
src/components/BisectWizard.tsx, line 39
const res = await fetch('/api/bisect');
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL
src/app/api/_helpers.ts, line 11
const token = process.env.DASHBOARD_TOKEN;
src/app/api/mcp/[name]/tools/[tool]/route.ts, line 29
const token = process.env.DASHBOARD_TOKEN;
src/lib/claude-oauth.ts, line 3
// Reads credentials from ~/.claude/.credentials.json (cross-platform)
Show more
src/lib/server-state.ts, line 38
if (process.env.DASHBOARD_TOKEN) _token = process.env.DASHBOARD_TOKEN;
src/lib/claude-oauth.ts, line 44
const credPath = path.join(homedir(), '.claude', '.credentials.json');
README.md, line 155
src/lib/claude-oauth → rate-limit fetch via .credentials.json token
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 bb8a99e9bdd3. can delete files. can reach a host that is not written as a fixed address. can reach api.anthropic.com. The description does not name that host. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: bb8a99e9bdd322bf40d55533d96a81fdb0afc6e7
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.