Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

io.github.yuvalsuede/claudia

mcp:yuvalsuede/claudia

Task management for AI agents with hierarchical tasks, dependencies, sprints, and coordination.

Verdict
Suspicious

Risky behavior the analysis could not rule out.

Analyzed Oct 26, 2026, 13:46 UTC at 8898fa8

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

3
findings
high
highest severity
2
threat classes
64
files scanned
924/924
checks satisfied
0
package advisories

Why this verdict

plugin . Suspicious
  • suspicious: finding plugin:.:.mcp.json:3:SUPPLY
  • suspicious: finding plugin:.:src/cli/web-server.ts:382:EXFIL
  • suspicious: finding plugin:.:src/cli/web-server.ts:528:EXFIL
skill skill No issues found
  • benign: 43 checks satisfied, no findings for skill:skill

Security findings 3

Supply chain

highContextual risklow confidence

The shipped .mcp.json launches the MCP server through `bunx claudia-cli mcp` without a version pin, so it fetches whatever claudia-cli version is current on npm at runtime, unlike server.json which pins 0.1.3.

"command": "bunx"
conceal:remotevector:metadata
Counter-argument considered

The shipped launch config really runs `bunx claudia-cli mcp` with no version pin, so it executes whatever is current on npm; no carve-out or mitigation applies, though severity is low.

Data exfiltration

highContextual risklow confidence

The local dashboard server copies the unescaped `project` query parameter into HTML href attributes, which allows reflected XSS on localhost; injected script could then read the unauthenticated /api/tasks and /api/projects endpoints, or POST to /api/clear-completed.

<a href="/?view=tasks${selectedProjectId ? '&project=' + selectedProjectId : ''}"
vector:code
Counter-argument considered

The project query param flows unescaped into the HTML href attributes, giving reflected XSS. Injected same-origin script could reach the unauthenticated API endpoints. No mitigation is shown, so the finding is not refuted.

Data exfiltration

highContextual risklow confidence

The dashboard's Bun.serve call sets no hostname and no auth, Origin or CSRF check, so /api/tasks and /api/projects serve task data and POST /api/clear-completed archives tasks for any client that can reach the port; this is an undeclared exposure with low confidence that it is reachable beyond localhost.

const server = Bun.serve({
vector:code
Counter-argument considered

Bun.serve is called with only a port, so there is no hostname restriction and no auth, Origin or CSRF check. The task and project APIs and the state-changing POST are served to any client that can reach the port. Nothing in the code mitigates this.

Refuted findings 2

Candidates the review stage examined and rejected, kept for transparency.

Tool poisoning

criticalRefutedlow confidence

The task_claim tool description uses imperative language ('CRITICAL', 'You MUST call this before working on any task') to condition the agent's behavior across all work, though it only concerns the artifact's own task-tracking workflow and is plausibly honest.

You MUST call this before working on any task.
Why it was refuted

The imperative wording only describes the artifact's own task-claim workflow, which the in-file comment openly documents. It does not steer the agent toward any unrelated or harmful action, so it is not tool poisoning.

Persistence

highRefutedlow confidence

Documentation tells the user to add the project's own MCP server entry to ~/.claude/claude_desktop_config.json (an agent control-plane config); this is standard setup for registering the declared MCP server, not hidden or harmful, but it is an undeclared host-config write.

Add to `~/.claude/claude_desktop_config.json`:
Why it was refuted

This is user-facing setup documentation for registering the project's own declared MCP server, which is its core capability. The entry is plain and visible, and the claimed contradiction with 'Failed operations do not partially modify state' is a detector misfire, since that claim concerns task operations. No agent instruction performs the write.

Coverage gaps 3

Parts of the artifact the static analysis could not fully examine.

no_tools_extracted MCP server target with no statically extractable tools/prompts/resources
.claude-plugin/plugin.json
unanalyzed_image image text not analyzed
assets/claudia-demo.gif
vision_skipped animated GIF with 10 frames (models see one); 1058 bytes after the image end
assets/claudia-demo.gif