Regenerate Controls
regenerate_controlsPropose rebuilding a threat model's controls from current COs, keeping unchanged control data and soft-deleting changed controls; optionally scope to specific CO IDs.
Instructions
Propose a regeneration of the model's controls. Starts nothing.
A regeneration re-authors controls from the current COs; its publish
creates the next model version. Controls whose descriptions survive
unchanged KEEP their implementation status, evidence, notes, assertions,
and Jira / compliance mappings. Controls whose descriptions change or
disappear are soft-deleted (still queryable via
get_controls(include_deleted=True)). When co_ids is given, only
those COs' controls are regenerated — all other controls are left as-is.
This tool records the regeneration as the model's PROPOSED build and
returns at once with status: "proposed" and proposal (mode,
objective_ids, objective_count, estimated_credits, and the
model_version and set_revision a start must name). A proposal
merges with any already proposed for the model, the broader one winning.
Show the user what it would build and cost; once they agree, call
start_control_build with those values and confirm_estimate=True.
A build someone started holds the model, so this is refused (409
generation_active) until it finishes, or is resumed and finishes, or
is discarded.
To rebuild everything, omit co_ids. To fix only stale/orphaned CO
mappings without re-authoring control text, prefer remap_control
(mechanical, no LLM).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "batch" (default) or "per_co" (most thorough — one LLM call per CO). | batch |
| co_ids | No | Optional comma-separated CO IDs to regenerate (e.g. "CO1,CO5"). Omit to regenerate all controls. | |
| model_id | Yes | ID of the threat model. | |
| batch_size | No | COs per batch in batch mode (default 15). Smaller = more accurate and more granular progress, but more LLM calls. | |
| server_version | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||