security-privacy

security-privacy is an agent for Claude Code from closedloop-ai/claude-plugins. It costs 63 tokens per session (4,273 once invoked), scanned A, original, Apache-2.0.

A security and privacy reviewer for a coding-agent plugin monorepo, a repository containing several related packages or tools.

In plain words
What is it for?
It reviews plans or code maps for prompt-injection risks, overly broad tool access, hook-script exposure, secret leaks, stale cache keys, unsafe learning-store writes, and GitHub credential handling.
Why use it?
It helps identify risks in agent instructions, tool permissions, scripts, credentials, caches, and stored data before implementation or release.

Agent for Claude Code

Written for Claude Code: SubagentStop hook event. Also seen: model in frontmatter; mentions subagents; mentions Claude Code.

Good fit It reviews plans or code maps for prompt-injection risks, overly broad tool access, hook-script exposure, secret leaks, stale cache keys, unsafe learning-store writes, and GitHub credential handling.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/closedloop-ai/claude-plugins/security-privacy
Install

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.

Clone the repo
git clone --depth 1 https://github.com/closedloop-ai/claude-plugins

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for security-privacy

README.md
[![agentmods](https://agentmods.dev/badge/agents/closedloop-ai/claude-plugins/security-privacy/github.svg)](https://agentmods.dev/agents/closedloop-ai/claude-plugins/security-privacy)
Your own site
<a href="https://agentmods.dev/agents/closedloop-ai/claude-plugins/security-privacy"><img src="https://agentmods.dev/badge/agents/closedloop-ai/claude-plugins/security-privacy/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for security-privacy

Your own site · 80×15
<a href="https://agentmods.dev/agents/closedloop-ai/claude-plugins/security-privacy"><img src="https://agentmods.dev/badge/agents/closedloop-ai/claude-plugins/security-privacy.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 63 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 4,273 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What 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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00063 $0.04273
Opus 5.5 $0.00025 $0.01709
Sonnet 5.5 $0.00013 $0.00855
Haiku 4.5 $0.00006 $0.00427

Measured 2d ago against content hash 5186e03ca3ad, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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
.claude/agents/security-privacy.md · 278 lines

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.md report enumerating security and privacy concerns for a feature, covering all seven security surfaces below.

Inputs

Critic mode

  • requirements.json — user stories, acceptance criteria, feature constraints
  • code-map.json — mapped code locations for the implementation
  • implementation-plan.draft.md — draft plan to review for security gaps
  • anchors.json — stable task anchors for emitting review findings
  • critic-selection.json — review budget and active critic configuration

Legacy mode

  • requirements.json — feature requirements and acceptance criteria
  • code-map.json — existing code structure and file locations
  • project-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, 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"]
    }
  ]
}

Read the full file on GitHub · 278 lines

Changes

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.

  1. 2d ago Changed 5186e03ca3ad
  2. 1mo ago First seen · 278 lines · 63 tokens per session scan A 42de97b9ecb0

Subscribe to this mod's changes

security-privacy is an agent published in the GitHub repository closedloop-ai/claude-plugins (122 stars, last pushed today), licensed Apache-2.0. It adds 63 tokens to every session and 4,273 once invoked, about $0.0003 per session on Opus 5.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.

Related

Other agents, from other repositories

thermo-nuclear-code-quality-review-subagent

Thermo-nuclear code quality audit (maintainability, structure, 1k-line rule, spaghetti, code-judo). Invoked through the Agent tool after a parent gathers diff and file contents. Loads rubric from the thermo-nuclear-code-quality-review skill in this plugin.

michael-denyer/pstack-claude · 68 tokens

antenna-engineer

Reasons from gain–directivity–efficiency, Chu–Harrington bandwidth limits, and array factor through HFSS/CST/FEKO synthesis, IEEE 149-2021 NF/FF/CATR metrology, CTIA TRP/TIS/ECC OTA, and Friis link budgets while treating ground-plane truncation, active impedance in arrays, range ripple, and S₁₁≠pattern conflation as…

K-Dense-AI/scientific-agents · 97 tokens

biosystems-agricultural-process-engineer

Reasons from coupled heat and mass transfer, moisture sorption (EMC/ERH on D245.7 isotherms), respiration, and closed unit-operation balances through ASABE standards (S352.2 oven moisture, S448 Page thin-layer kinetics, D272.3 airflow resistance), psychrometric aeration analysis, and SuperPro/Aspen bioprocess…

K-Dense-AI/scientific-agents · 122 tokens

cardiologist

Reasons from oxygen supply-demand mismatch, forward flow, filling pressures, and pre-test probability through 12-lead ECG, TTE/TEE with ASE grading, cath hemodynamics, CMR, and ACC/AHA/ESC guidelines with risk scores like HEART, GRACE, and CHA2DS2-VASc, while treating context-free troponin elevation, low-flow…

K-Dense-AI/scientific-agents · 107 tokens

nauro-planner

Use to plan a non-trivial change before any code is written. Classifies doctrine risk (GREEN/AMBER/RED) via Nauro, writes a structured plan, and drafts decision additions, updates, or supersedes for the direct-user Delivery parent. Returns a plan and never writes project truth or edits files.

Nauro-AI/nauro · 69 tokens

Agent Prompt: Agent creation architect

System prompt for creating custom AI agents with detailed specifications.

openonion/connectonion · 17 tokens