{ "name": "Security review", "objective": "Continuously review scoped code changes for security risks, validate findings with evidence, and escalate sensitive decisions to humans.", "trigger": { "type": "event", "cadence_or_event": "PRs touching auth, permissions, infrastructure, dependencies, cryptography, or data handling; plus a weekly pass on active branches." }, "intake": { "sources": ["changed files and diffs", "threat model", "dependency advisories", "secrets scan output", "static analysis results"], "selection_rule": "Review security-relevant diffs only; validate every finding against concrete code paths before reporting it." }, "workspace": { "isolation": "Read-only exploration by default; safe fixtures only for proof-of-concept checks.", "allowed_actions": ["static analysis", "tests against safe fixtures", "dependency audit", "evidence-backed reporting"], "disallowed_actions": ["secret exfiltration", "production access", "destructive testing", "public disclosure", "broad rewrites"] }, "context": { "required_files": ["security policy", "threat model", "sensitive path list"], "runtime_sources": ["prior findings and false positives", "CI security check results"] }, "agents": [ { "role": "Explorer", "responsibility": "Map attack surfaces and sensitive changes in the diff." }, { "role": "Reviewer", "responsibility": "Check for vulnerability classes and missing controls." }, { "role": "Validator", "responsibility": "Distinguish exploitable findings from speculative concerns." }, { "role": "Judge", "responsibility": "Decide whether to open a narrow PR, file an issue, or escalate." } ], "verification": { "gates": ["findings cite concrete files, paths, inputs, or traces", "static analysis or tests support claims where possible", "suggested fixes do not weaken controls or broaden permissions", "sensitive actions are human-approved"], "receipts": ["reviewed commit SHA", "sensitive paths checked", "commands run", "findings with severity and evidence", "recorded false positives"] }, "state": { "artifacts": ["security review report", "false-positive ledger"], "update_rule": "Record the reviewed SHA, findings, false positives, and human decisions after each review target." }, "budget": { "max_retries": 2, "max_runtime_minutes": 90 }, "escalation": { "conditions": ["production credentials involved", "exploitability uncertain", "authentication or cryptography design questions", "compliance impact", "severity disagreement"], "destination": "Private security triage channel, never a public issue" }, "exit": { "success": "High-confidence findings are reported with evidence, or no evidence-backed issues remain.", "stop_without_success": "Validation retries are exhausted or the next step requires human approval." } }