Edit Attacker
edit_attackerUpdate an existing attacker in a threat model by changing only specified fields, with server-computed likelihood and required change reason for factor overrides.
Instructions
Edit an existing attacker. Only provided fields changed.
When changing identity fields, hold to the attacker authoring
contract: capability names the operations performable from
the position ("From [position], the attacker can [operations] …"),
not just access — otherwise the result is flagged with a
quality_warning (see add_attacker).
The composed likelihood is server-derived from the factor
fields; to change the rating, set factor values and supply
change_reason for the audit trail.
LLM-gated on identity-bearing fields (capability, archetype, position). Factor and trust_boundary edits skip the gate.
503 on evaluator outage, 502 on malformed response, 400 when
factor fields, surface_extent or attest_surface_extent are
sent without change_reason.
Attesting surface_extent is a person's audited structural
declaration, ledgered like a factor override and forking a model
version: "whole" makes every objective the attacker appears in a
for-all obligation. "point" is REFUSED where an asset on one of
those objectives is implemented by several components and is not
split-knowledge — reaching any one of them reaches the asset, so a
narrowing to one named entry would not be true of it — and it never
makes a clause whose own text is universal existential.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | ID of the threat model. | |
| position | No | New position (optional). | |
| archetype | No | New archetype (optional). | |
| capability | No | New capability (optional). | |
| attacker_id | Yes | ID of the attacker (e.g., "T1"). | |
| attack_vector | No | "Network" | "Adjacent" | "Local" | "Physical". | |
| change_reason | No | Required when any factor field, ``surface_extent`` or ``attest_surface_extent`` is supplied — documents the operator override for the audit trail. | |
| server_version | Yes | ||
| surface_extent | No | ``"whole"`` (operations range over ANY entry of the interface reached) or ``"point"`` (one named entry). Supplying it attests it; requires ``change_reason``. | |
| attest_position | No | Operator-attest the attacker's current position without changing it — e.g. to confirm a fully external attacker's empty crossed set so an objective blocked on an unpositioned attacker can be resolved. Pass ``true`` to attest. | |
| user_interaction | No | "None" | "Required". | |
| attack_complexity | No | "Low" | "High". | |
| trust_boundary_ids | No | Comma-separated trust boundary IDs — the boundaries this attacker has crossed (its position). Replaces the existing set. Changing it operator-attests the position, which lets reachability trust it for a decisive verdict. | |
| privileges_required | No | "None" | "Low" | "High". | |
| likelihood_rationale | No | New rationale (optional). | |
| attest_surface_extent | No | Record the extent already on the attacker as attested, without changing its value. Pass ``true`` to attest; requires ``change_reason``. | |
| capability_prevalence | No | "Commodity" | "Targeted" | "Rare". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||