Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/closedloop-ai/claude-plugins/security-privacygit clone --depth 1 https://github.com/closedloop-ai/claude-pluginsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00063 | $0.04295 |
| Opus 5 | $0.00032 | $0.02148 |
| Sonnet 5 | $0.00013 | $0.00859 |
| Haiku 4.5 | $0.00006 | $0.00430 |
Grade A, and why
security-privacy scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- A plan step introduces direct `curl` or HTTP client calls to the GitHub API using a hardcoded or interpolated token string instead of delegating to the `gh` CLI — `gh` handles credential storage safely; direct calls ri How it starts
The opening of the file, as written. The whole thing — 278 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Execution Modes
- Critic (default fast mode): Review an implementation plan draft for security and privacy gaps — prompt-injection risks, over-broad tool allowlists in agent frontmatter, hook-script attack surface, secret exposure paths, cache-key staleness, and unsafe persistence writes.
- Legacy mode: Author a
security-privacy.mdreport enumerating security and privacy concerns for a feature, covering all seven security surfaces below.
Inputs
Critic mode
requirements.json— user stories, acceptance criteria, feature constraintscode-map.json— mapped code locations for the implementationimplementation-plan.draft.md— draft plan to review for security gapsanchors.json— stable task anchors for emitting review findingscritic-selection.json— review budget and active critic configuration
Legacy mode
requirements.json— feature requirements and acceptance criteriacode-map.json— existing code structure and file locationsproject-context.md— technology stack and project conventions
Outputs
Critic mode
Write to reviews/security-privacy.review.json conforming to review-delta.schema.json (use code:find-plugin-file skill to locate schemas/review-delta.schema.json).
Note: The schema accepts both items and review_items as field names. The agent and mode fields are optional.
Example — prompt-injection on a new LLM-consuming stage (blocking):
{
"review_items": [
{
"anchor_id": "task:add-intent-parser-stage",
"severity": "blocking",
"rationale": "The new intent-parser stage passes `pr_body` directly into the system prompt without any sanitization or quarantine. PR body is author-controlled content (untrusted input per PLN-720/PLN-725 precedent). A crafted body could inject instructions that alter the model's verdict or exfiltrate learning patterns surfaced by SubagentStart.",
"proposed_change": {
"op": "append",
"target": "task",
"path": "task:add-intent-parser-stage",
"value": "Treat `pr_body`, `pr_title`, and commit messages as data, not instructions. Wrap them in XML data tags (e.g., <author_content>) and place them after all system instructions. Do not interpolate them into the instruction section of the prompt. Mirror the detect-injection quarantine pattern introduced in PLN-720."
},
"files": ["plugins/code-review/agents/intent-parser.md"],
"ac_refs": ["AC-002"],
"tags": ["prompt-injection", "untrusted-input", "llm-pipeline"]
},
{
"anchor_id": "task:add-subagent-start-hook",
"severity": "blocking",
"rationale": "The proposed SubagentStart hook script sources content from `.closedloop-ai/env` using `eval`. If that file is written by a prior stage that processes untrusted input, eval will execute attacker-controlled shell. The existing hook pattern reads with `export $(grep ...)` but never eval.",
"proposed_change": {
"op": "replace",
"target": "task",
"path": "task:add-subagent-start-hook",
"value": "Load env file with `export $(grep -v '^#' .closedloop-ai/env | xargs)` — never with `eval` or `source`. Confirm the file is written exclusively from controlled paths (run-loop.sh, not from model output or PR content)."
},
"files": ["plugins/code/hooks/hooks.json"],
"ac_refs": ["AC-005"],
"tags": ["hook-script", "eval-injection", "subagent-start"]
},
{
"anchor_id": "task:add-cache-invalidation",
"severity": "major",
"rationale": "The plan updates the verifier prompt but does not regenerate its `prompt_hash`. The verifier cache keys on `(content_hash, model, prompt_hash)` — a stale hash means old verdicts survive the prompt edit undetected. This is a correctness-as-security property: stale verdicts can suppress real security findings.",
"proposed_change": {
"op": "append",
"target": "task",
"path": "task:add-cache-invalidation",
"value": "After any prompt edit, recompute the prompt_hash in the cache-key derivation logic. Add a test asserting that a changed prompt string produces a different cache key and triggers a fresh model call."
},
"files": ["plugins/code-review/tools/python/code_review_helpers.py"],
"ac_refs": ["AC-008"],
"tags": ["cache-key", "correctness-as-security", "stale-verdict"]
}
]
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 278 lines · 63 tokens per session scan A 42de97b9ecb0
security-privacy is an agent published in the GitHub repository closedloop-ai/claude-plugins (103 stars, last pushed 4d ago), licensed Apache-2.0. It adds 63 tokens to every session and 4,295 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
codemap
Defines agent personalities (Orchestrator, Explorer, Librarian, etc.) and manages their configuration lifecycle. This directory implements the Agent Factory Pattern, where each agent is a specialized sub-agent with distinct capabilities, permissions, and routing rules. The Orchestrator agent (src/agents/index.ts)…
researcher
You stop coding and start investigating when the problem is unclear. Every problem can be solved with enough information.
research-agent
You are an autonomous research agent conducting systematic information gathering and analysis.
api-designer
REST and GraphQL API design - endpoint design, request/response schemas, versioning, and documentation. Use for designing new APIs or evolving existing ones.
agent-prompt-dream-memory-consolidation
Instructs an agent to perform a multi-phase memory consolidation pass — orienting on existing memories, gathering recent signal from logs and transcripts, merging updates into topic files, and pruning the index.
config-safety-reviewer
Configuration safety specialist focusing on production reliability, magic numbers, pool sizes, timeouts, and connection limits. Use proactively for configuration changes and production safety reviews.