Borrowing it
Nothing to install: this file belongs to shakaran/symfony-agent-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/shakaran/symfony-agent-mcp/main/.claude/commands/security-audit.mdgit clone --depth 1 https://github.com/shakaran/symfony-agent-mcpWrote 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/commands/shakaran/symfony-agent-mcp/security-audit)<a href="https://agentmods.dev/commands/shakaran/symfony-agent-mcp/security-audit"><img src="https://agentmods.dev/badge/commands/shakaran/symfony-agent-mcp/security-audit.svg" alt="Measured on agentmods" 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.00000 | $0.01313 |
| Opus 5 | $0.00000 | $0.00656 |
| Sonnet 5 | $0.00000 | $0.00263 |
| Haiku 4.5 | $0.00000 | $0.00131 |
Grade A, and why
security-audit scanned grade A with 0 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 7d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security Audit — symfony-agent-mcp
Run a comprehensive security audit of the Symfony MCP server codebase.
Architecture context
The security pipeline in server.ts is applied to every tool call:
validateToolArgs() ← input-validator.ts: schema + PATH_SAFE regex
→ guardAppPath() ← app-guard.ts: path traversal + symlink + allowlist
→ withAudit() ← audit-logger.ts: encrypted audit log
→ tool handler() ← src/tools/*.ts
→ sanitizeToolResult() ← output-sanitizer.ts: DLP + injection filter + size cap
What to look for in tool files
Real vulnerabilities:
- Secondary user-supplied param (not
app_path) joined into a filesystem path without containment check - Regex with nested quantifiers
(a+)+on large file content (no file size guard) - DSN/URL credentials not caught by DLP:
?password=query-string,redis://:pass@,redis://token@host - HTTP headers
Authorization,X-Api-Keyemitted verbatim (DLP only catches JWT-format tokens) - Env var masking missing: PASS, KEY, DSN, AUTH, CERT
- Stateful
/gregex withlastIndexshared across loop iterations → false negatives
Not vulnerabilities (pipeline handles them):
- Reading files under appPath — guardAppPath validated it
- Returning credential-shaped strings — DLP redacts AWS keys, JWTs, PEM blocks, URLs with
user:pass@host - Large output — size cap enforced
- Missing per-tool input validation — validateToolArgs handles it centrally
Key utility files
| File | Purpose |
|---|---|
src/utils/dlp-detector.ts |
DLP patterns: AWS, GitHub, Stripe, Slack, SendGrid, JWT, PEM, CREDENTIALS_IN_URL |
src/utils/app-guard.ts |
Path traversal prevention, symlink resolution, allowlist |
src/utils/input-validator.ts |
TOOL_SCHEMAS — all tool params with type/length/pattern constraints |
src/utils/output-sanitizer.ts |
Wraps DLP + prompt injection + size cap |
src/utils/prompt-injection-detector.ts |
9 regex patterns; see PATTERNS array for exact syntax |
src/utils/startup-audit.ts |
Warns on missing SIGNING_SECRET, SESSION_SECRET, DLP disabled, key TTL |
src/utils/audit-logger.ts |
AES-256-GCM encrypted audit log, key rotation (SIGUSR2), TTL enforcement |
src/utils/anomaly-detector.ts |
Detects PATH_TRAVERSAL_PROBE, TOOL_SCANNING, AUTH_FAILURE_SPIKE, etc. |
src/utils/vault-resolver.ts |
HashiCorp Vault + AWS Secrets Manager integration |
src/fuzz/generators.ts |
Deterministic PRNG + SECRET_SAMPLES / INJECTION_SAMPLES for fuzz tests |
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.
- 7d ago First seen · 124 lines · 0 tokens per session scan A 95cb28f46471
security-audit is a command published in the GitHub repository shakaran/symfony-agent-mcp (0 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,313 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
auto
An automated coding workflow runs a software task from planning through code changes, checks, and a pull request. A pull request is a proposed change for review before it is merged into the main codebase.
sync
A command that pulls the latest code from the main Git branch and updates the project's key planning and instruction documents to match it.
workflow-classify
Classify task size (S/M/L/XL) and recommend the appropriate workflow pipeline.
guide
An interactive beginner's guide for Claude Forge that checks whether a project, its rules file, and Git are ready, then suggests common next steps.
next-task
A command that checks a coding project and prepares the next task. It reads project notes, Git history, changed files, and task checkboxes to find progress and the next unfinished work.
suggest-automation
A command that reviews recent Git commits and project instructions to find work patterns that happen repeatedly.