STRIDE + agentic threat modeling — architecture discovery → assets/trust boundaries/data flows/actors → STRIDE + agentic threats → risk-ranked mitigations → incremental review → security acceptance criteria. Swarm-friendly.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add ulises-jeremias/agent-toolkit --skill threat-modeling --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Threat Modeling?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ulises-jeremias-threat-modeling-6f6b98ab)More formats (shields.io, HTML) on the badges page.
---
name: threat-modeling
description: STRIDE + agentic threat modeling — architecture discovery → assets/trust boundaries/data flows/actors → STRIDE + agentic threats → risk-ranked mitigations → incremental review → security acceptance criteria. Swarm-friendly.
origin:
type: first-party
---
# Threat Modeling — STRIDE + Agentic Threats
Guide **architecture → threat model → security review → security acceptance criteria**. Produces a STRIDE table augmented with agentic-specific threats (prompt injection, tool poisoning, excessive agency, inter-agent trust), risk-ranked with mitigations and acceptance criteria.
**Evidence-linked, portable, incremental.** Architecture discovery reuses C4/Mermaid inputs (#369); outputs feed `agentic-security-reviewer` + `owasp-agentic-review` + `security-reviewer`.
> **Sources:** Microsoft STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) + OWASP Threat Modeling + OWASP Agentic Security (prompt injection, tool poisoning, excessive agency, data leakage, insecure plugin/MCP). See https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats and https://owasp.org/www-project-threat-model/ .
## When to use
- New system/C4 design (`architect` output), new data flow (user → agent → tool → external), new trust boundary (skill composition, MCP addition, swarm handoff)
- Before `security-reviewer` / `owasp-agentic-review` prioritizes mitigations
- On architecture change — incremental mode re-runs only on deltas
## Inputs
| Input | Source | Required |
|-------|--------|----------|
| Architecture diagram | `architect` / C4/Mermaid (#369) — `docs/architecture/*.md`, Mermaid `C4Context`/`flowchart` | Yes (or textual description for small scopes) |
| Assets | Code + docs: skills, agents, MCP registry, secrets, data stores | Yes |
| Trust boundaries | User ↔ agent, agent ↔ MCP, agent ↔ external host, inter-agent, skill composition | Yes |
| Data flows | `audit-capability.py` shell/network/MCP/hooks surface, registry YAML, hook configs | Yes |
| Actors | Users, agents (by persona), MCP servers, external services | Yes |
## Outputs
- `threat-model.md` per `references/threat-model-template.md`: assets/boundaries/flows/actors → STRIDE + agentic threats table (severity, likelihood, impact, confidence, evidence) → mitigations → security acceptance criteria
- Incremental diff when `architecture discovery` changed
- Handoff: `agentic-security-reviewer` consumes findings for OWASP review; `security-reviewer` for app-layer vulns
## STRIDE + agentic checklist
| STRIDE | Meaning | Agentic extension | Evidence to check |
|--------|---------|-------------------|-------------------|
| **S** Spoofing | Impersonate user/agent/MCP | Identity spoofing (AGNT01), prompt hierarchy violation (AGNT06) | `agents/*/AGENT.md` identity, MCP `auth.env`, delegation tables |
| **T** Tampering | Modify data/code/instructions in transit | Tool poisoning (AGNT02), training-data/supply-chain poisoning (LLM03) | `mcp/registry/*.yaml` tool descriptions with imperative injection, `capabilities/upstream.lock` digests |
| **R** Repudiation | Deny action without audit trail | Missing `output-handshake`, Swarm handoff without logging | `output-handshake` gates, `ops/swarm-handoff` audit |
| **I** Information disclosure | Leak secrets/PII via tool output | Data leakage (AGNT04), sensitive info disclosure (LLM06), model theft (LLM10) | `security.network_hosts`, `secret_storage`, scans for `ghp_`, `sk-`, PII |
| **D** Denial of service | Exhaust tokens/compute | Model DoS (LLM04) — unbounded skill context, swarm fan-out | Skill token count, subagent fan-out limits, `docs/research` context audit |
| **E** Elevation of privilege | Gain permissions beyond least privilege | Excessive agency (LLM08), permission creep (AGNT05), insecure plugin design (LLM07) | `approval.default`, `security.dangerous_permissions`, composed skill chain |
Map each finding to STRIDE letter(s) + agentic IDs (`LLM01`–`LLM10`, `AGNT01`–`AGNT06`) where applicable. One finding can map to multiple STRIDE categories (e.g., tool poisoning = T + E).
## Workflow
1. **Discover scope:** Identify assets + trust boundaries + data flows + actors from architecture diagram (or `git diff HEAD` deltas in incremental mode). Enumerate: skills (`skills/**`), agents (`agents/**`), MCP servers (`mcp/registry/*.yaml` + templates), hooks, subagents, external hosts.
2. **Enumerate threats:** For each asset/flow/boundary, apply STRIDE + agentic checklist above. Ask per element: who can spoof? what can be tampered? what lacks repudiation? what leaks? what DoS? what elevates? Add agentic prompts: can tool description inject? can MCP exfiltrate? can agent over-act?
3. **Risk-rank:** Score `Impact` (who/what compromised) × `Likelihood` (Low/Med/High) × `Confidence` (High/Med/Low) → `Severity` Critical/High/Medium/Low (or Blocking/Major/Minor). Cite evidence: `file:line`, registry YAML path, `audit-capability.py` output, diagram node.
4. **Mitigate + acceptance criteria:** Per finding: `mitigation` (least-privilege, pin + provenance, sanitize, gate), `residual risk`, `security acceptance criteria` (testable, e.g., "`tool descriptions contain no imperative injection` via `audit-capability.py` clean"). Apply `output-handshake` before final artifact.
5. **Incremental review:** On architecture change, diff `threat-model.md` previous version: keep unchanged findings, re-evaluate only changed assets/flows. For large systems, shard by trust boundary or swarm agent.
## Risk table shape
| # | Asset / Flow (diagram ref) | Trust boundary | STRIDE | Agentic ID | Threat (observation, file:line) | Attack path (actor → boundary → asset) | Impact | Likelihood | Severity | Confidence | Mitigation | Residual | Acceptance criteria | Evidence |
|---|----------------------------|----------------|--------|------------|----------------------------------|----------------------------------------|--------|------------|----------|------------|------------|----------|---------------------|----------|
Sort by Severity (Critical → Low), then Likelihood. Include `Residual risk` after mitigation.
## Incremental mode
- **Input:** `git diff` + previous `threat-model.md` (from repo `docs/security/threat-model*.md` or prior PR).
- **Behavior:** Carry forward findings for unchanged elements with `status: unchanged`; mark `new`/`updated`/`removed` for deltas; re-rank only affected rows.
- **Swarm-friendly:** Split large architectures by trust boundary (e.g., `user ↔ agent` vs `agent ↔ MCP`) and run parallel subagents; merge tables, dedupe by asset+STRIDE.
## Collaboration
| Need | Delegate to |
|------|-------------|
| System design, C4/Mermaid, ADRs | `architect` / `platform-engineer` (`references/WORKSTATION_OPS.md`) — provides `Inputs` architecture diagram |
| App/code vulns (OWASP Web) | `security-reviewer` / `agents/security-reviewer` — consumes threat model for prioritized review |
| Agentic / LLM / MCP / supply-chain | `agentic-security-reviewer` + `agentic-security/owasp-agentic-review` (LLM01-10 + AGNT01-06) — joint risk table |
| Full supply-chain surface | `agentic-security/supply-chain-audit` |
| MCP config/impl depth | `agentic-security/mcp-audit` |
| Output gate | `output-handshake` |
| Swarm decomposition | `ops/swarm-handoff` |
Sequence: `architecture discovery → threat-modeling (this skill) → security review (owasp-agentic + security-reviewer) → security acceptance criteria`.
## Anti-patterns
- Do not hallucinate STRIDE findings without evidence (cite `file:line` or registry path).
- Do not collapse STRIDE into single category — one flow often maps to S+T+E.
- Do not claim full coverage from automated checks alone — mark `Not assessed (requires manual review)` where needed (per #380 a11y analog).
- Do not run full model on every file change — use incremental mode.
## References
- `references/threat-model-template.md` — report template
- Microsoft STRIDE: https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats
- OWASP Threat Modeling: https://owasp.org/www-project-threat-model/
- OWASP Agentic Security: https://owasp.org/www-project-agentic-security/
- `mcp/registry/*.yaml` + static Grep for shell/network/mcp/hooks (repo checkout/CI: `scripts/audit-capability.vsh`)
- `architect` / C4/Mermaid (#369) — discovery inputs
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!