Repository navigation
0.5.0
0.5.0 — Threat impact and leverage lists
23 September 2026. Minor on 0.4.0.
threat.impact and threat.leverage are lists of vocabulary names, as threat::1.0 specifies. 0.4.0 rejected every threat written to the spec with Input should be a valid string. A threat written the way 0.4.0 required (impact: Data Breach) now fails until it becomes a one-item list — update threats before upgrading a pipeline.
Install
pip install opentide==0.5.0
export OPENTIDE_REPO_ROOT=/path/to/detection-repo
opentide validate --strictThen run opentide generate so new threats start from the list template. If your CI patches the installed opentide model to accept lists, drop that step.
Changed
threat.impactandthreat.leveragemust be non-empty YAML lists of vocabulary names. A single string fails withmust be a YAML list of … vocabulary names; a value or list item that joins several names with;fails too. Give every name its own item and keep all of them (#189).- SDK:
ThreatBody.impact/.leveragearelist[str]. Threat templates, editor schemas (type: array,minItems: 1), and the explorer bundle carry lists (#189).
threat:
impact:
- Data Breach
- Identity Theft
leverage:
- Elevation of privilegeFixed
- Threats written to the
threat::1.0spec validate, andvalidateno longer suggests a single vocabulary name for a;-joined value, which would drop the other names (#189).
Tests
The 14 threat-*.yaml conformance fixtures from OpenTideHQ/specifications run through opentide validate --file in the E2E suite, and a guard fails when upstream adds one without an expectation (#189).
Verify
python -c "import opentide; print(opentide.__version__)"
opentide setup --yes --name "Tutorial Detections" --org "Example Corp" --platform sentinel --path /tmp/tutorial-detections
opentide --repo /tmp/tutorial-detections generate
opentide --repo /tmp/tutorial-detections validate --strictExpect 0.5.0. The generated threat template (.opentide/templates/threat.1.0.template.yaml) lists impact and leverage as YAML lists.
Links
License: EUPL-1.2. Issues: OpenTideHQ/opentide.