Add Attacker
add_attackerAdd a new attacker to a threat model and create a new version by specifying capability, position, archetype, and trust boundaries. Helps model attack paths for security analysis.
Instructions
Add a new attacker to a threat model. Creates a new version.
Authoring contract: capability names the operations the
attacker can perform from its position and what they achieve —
not just the access or vantage point. Phrase it as "From
[position], the attacker can [concrete operations] …" (e.g. "From
the network path between the API server and the database, the
attacker can read and alter requests and responses to exfiltrate
data in transit or inject forged responses"). A capability that
states only access is flagged with a quality_warning and the
control objectives derived from it may be under-specified.
The caller supplies identity-bearing fields (capability, position,
archetype, trust_boundary_ids); the backend LLM-reasons the factor
decomposition. Override any factor post-create via edit_attacker
with a change_reason. Mirror of add_asset semantics.
Three outcomes (normal create / auto-restore / similar-rejection)
mirror add_asset. 503 on factor-reasoning or restore-candidate
evaluator outage, 502 on malformed restore-candidate response.
surface_extent says how much of the reached interface this
attacker's operations range over. An attacker ranging over the whole
interface makes the objectives it appears in for-all obligations,
which only a sound witness (typed_boundary /
sink_default_deny) can credit. Declaring it here is an operator
statement about the attacker's reach, recorded attested with its
change_reason, so a create takes the two together. Only whole
is declarable on a create: narrowing to one named entry is a statement
about the objectives the attacker anchors, and a create has none yet —
add the attacker, then narrow it with edit_attacker and a
change_reason, where the narrowing is checked against the assets
those objectives defend. There is no attacker status to set.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | ID of the threat model. | |
| position | No | Position/access level. | |
| archetype | No | Archetype (e.g., "insider", "external"). | |
| capability | Yes | Attacker capability description (required). | |
| change_reason | No | Required when ``surface_extent`` is supplied — documents the declaration for the audit trail. | |
| server_version | Yes | ||
| surface_extent | No | ``"whole"`` when, from its position, the attacker's operations range over ANY entry of the interface it reaches (any endpoint, request, row, file, message or frame). Recorded as attested by this call and requires ``change_reason``. Omit to leave it undeclared, which is the ordinary case. | |
| trust_boundary_ids | No | Comma-separated trust boundary IDs. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||