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.
git clone --depth 1 https://github.com/andr-ca/agentharnessWrote 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.
[](https://agentmods.dev/rules/andr-ca/agentharness/security-review)<a href="https://agentmods.dev/rules/andr-ca/agentharness/security-review"><img src="https://agentmods.dev/badge/rules/andr-ca/agentharness/security-review/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.
<a href="https://agentmods.dev/rules/andr-ca/agentharness/security-review"><img src="https://agentmods.dev/badge/rules/andr-ca/agentharness/security-review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.02180 |
| Opus 5.5 | $0.00023 | $0.00872 |
| Sonnet 5.5 | $0.00011 | $0.00436 |
| Haiku 4.5 | $0.00006 | $0.00218 |
Grade B, and why
security-review scanned grade B with 3 findings 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 1mo 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.
Cloud metadata endpointmediumServer-side request forgery
One request to 169.254.169.254 can return temporary IAM credentials.
- Metadata endpoints (AWS `169.254.169.254`, GCP `metadata.google.internal`) Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
response = requests.get(user_provided_url) Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
subprocess.run(f"convert {filename}", shell=True) How it starts
The opening of the file, as written. The whole thing — 258 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security Review
This skill operationalises the OWASP mandate in this harness's own instructions: "Ensure your code is free from security vulnerabilities outlined in the OWASP Top 10." Work through this checklist for every production-tier code review; prioritise findings as P0 (must fix before merge) or P1 (fix within the sprint).
External reference: OWASP Top 10 (2021).
A01 — Broken Access Control
What to look for: Missing authentication checks, insecure direct object references (IDOR), privilege escalation paths, CORS misconfiguration.
# WRONG: fetches any record by ID — no ownership check
def get_document(doc_id: int) -> Document:
return db.query(Document).filter_by(id=doc_id).first()
# RIGHT: scope to the authenticated user
def get_document(doc_id: int, current_user: User) -> Document:
doc = db.query(Document).filter_by(id=doc_id, owner_id=current_user.id).first()
if doc is None:
raise NotFoundError()
return doc
Checklist:
- Every route/handler checks that the caller owns or is permitted to access the resource it requests.
- Admin/privileged endpoints require an explicit role check, not just authentication.
- CORS
Access-Control-Allow-Origin: *is not set on endpoints that return sensitive data.
A02 — Cryptographic Failures
What to look for: Hardcoded secrets, weak algorithms (MD5, SHA-1, DES), HTTP instead of HTTPS for sensitive data, secrets logged.
# WRONG: hardcoded API key and weak hashing
API_KEY = "sk-12345abcde"
password_hash = hashlib.md5(password.encode()).hexdigest()
# RIGHT: key from environment; use bcrypt/argon2 for passwords
import os, bcrypt
API_KEY = os.environ["OPENAI_API_KEY"]
password_hash = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
Checklist:
- No credentials, tokens, or private keys in source code or committed
config files. Use
.env+.env.samplepattern. - Password storage uses bcrypt, argon2, or scrypt — never MD5/SHA-1.
- Sensitive data transmitted only over TLS; no HTTP fallback for auth.
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.
- 1mo ago First seen · 258 lines · 57 tokens per session scan B 69083c18ba3c
security-review is a cursor rule published in the GitHub repository andr-ca/agentharness (1 stars, last pushed 5d ago), licensed MIT. It adds 57 tokens to every session and 2,180 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it B with 3 findings (cloud metadata endpoint, makes network calls, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other cursor rules, from other repositories
handoff
Export a Waybill Bundle by default, or import one when explicitly requested.
dreamd-recall
Recall lessons, decisions, and prior context from the .agent/ memory daemon. Use when starting work in a project that has a .agent/ folder, when the user references a past decision, or when you are about to make a choice that has a documented prior.
lemoncrow.execute
LemonCrow execute mode reference for Cursor.
ui-motion-workflow
Orchestrate motion-aware UI work by sequencing direction, provider choice, implementation, and browser validation.
prompt-routing
Route tasks to the correct Universal AI Engineering Prompt.
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.