Composable Security Suite Runbook
Use this reference for authorized binary assurance, baseline comparison, policy enforcement, and offline repo-surface redteam. The caller supplies authorization and owns every decision after the report.
Primitive model
collect-staticrecords file metadata, runtime heuristics, linked libraries, and embedded archive signatures.collect-dynamicruns a sandboxed command (default--help) and records processes, file changes, and network endpoints.collect-contractcaptures the binary's machine-readable command/help contract.compare-baselinereports added, removed, and changed commands.enforce-policyevaluates allow/deny rules and a severity verdict.collect-redteamscans repo-owned control surfaces with the offline attack pack.runcomposes the binary primitives and writes the suite summary.
Commands
Capture an owned binary:
python3 skills/security/scripts/security_suite.py run \
--binary "$(command -v ao)" \
--out-dir .tmp/security-suite/ao-currentCompare with a known-good baseline:
python3 skills/security/scripts/security_suite.py run \
--binary "$(command -v ao)" \
--out-dir .tmp/security-suite/ao-current \
--baseline-dir .tmp/security-suite/ao-baseline \
--fail-on-removedEnforce policy:
python3 skills/security/scripts/security_suite.py run \
--binary "$(command -v ao)" \
--out-dir .tmp/security-suite/ao-current \
--policy-file skills/security/references/policy-example.json \
--fail-on-policy-failRun offline redteam:
python3 skills/security/scripts/prompt_redteam.py scan \
--repo-root . \
--pack-file skills/security/references/agentops-redteam-pack.json \
--out-dir .tmp/security-suite-redteamArtifact inventory
The binary suite writes beneath --out-dir:
static/static-analysis.jsondynamic/dynamic-analysis.jsoncontract/contract.jsoncompare/baseline-diff.jsonwhen a baseline is suppliedpolicy/policy-verdict.jsonwhen a policy is suppliedsuite-summary.json
The redteam scanner writes:
redteam/redteam-results.jsonredteam/redteam-results.md
Preserve command exit codes with the artifacts. A missing optional compare/policy artifact is valid only when that phase was not requested.
Policy model
Start from policy-example.json. Supported checks include:
required_top_level_commandsdeny_command_patternsmax_created_filesforbid_file_path_patternsallow_network_endpoint_patternsdeny_network_endpoint_patternsblock_if_removed_commandsmin_command_count
Do not relax policy or refresh a baseline merely because a candidate fails. Classify the delta, preserve the failing artifact, and require explicit judgment for an intentional contract change.
Redteam pack model
Start from agentops-redteam-pack.json. Cases use globs, require_groups, forbidden_any, and applies_if_any to bind adversarial prompts to repo-owned control surfaces. The shipped cases cover instruction precedence, context overexposure, destructive git misuse, security-gate bypass, unsafe shell, and secret handling.
Triage
- Empty dynamic evidence: confirm the owned binary runs and supply an appropriate safe command.
- Zero captured commands: verify the binary exposes the expected help interface.
- Removed-command failure: inspect
compare/baseline-diff.json; update the baseline only for an intentional accepted contract change. - Policy failure: inspect
policy/policy-verdict.json; change policy only with accountable approval. - Redteam failure: determine whether the control regressed or the attack-pack matcher needs an intentional update.