diff --git a/strix/report/state.py b/strix/report/state.py index e4d1a16b..9dede601 100644 --- a/strix/report/state.py +++ b/strix/report/state.py @@ -137,6 +137,7 @@ class ReportState: self.posthog_scan_ended_sent: bool = False self.scarf_scan_ended_sent: bool = False + self.scan_ended_exit_reason: str | None = None def get_run_dir(self) -> Path: if self._run_dir is None: diff --git a/strix/telemetry/posthog.py b/strix/telemetry/posthog.py index 1cf0d448..df6bed4d 100644 --- a/strix/telemetry/posthog.py +++ b/strix/telemetry/posthog.py @@ -86,6 +86,8 @@ def finding(severity: str) -> None: def end(report_state: "ReportState", exit_reason: str = "completed") -> None: if report_state.posthog_scan_ended_sent: return + if report_state.scan_ended_exit_reason is None: + report_state.scan_ended_exit_reason = exit_reason vulnerabilities_counts = {"critical": 0, "high": 0, "medium": 0, "low": 0, "info": 0} for v in report_state.vulnerability_reports: @@ -119,7 +121,7 @@ def end(report_state: "ReportState", exit_reason: str = "completed") -> None: "scan_ended", { **base_props(), - "exit_reason": exit_reason, + "exit_reason": report_state.scan_ended_exit_reason, "duration_seconds": round(duration), "vulnerabilities_total": len(report_state.vulnerability_reports), **{f"vulnerabilities_{k}": v for k, v in vulnerabilities_counts.items()}, diff --git a/strix/telemetry/scarf.py b/strix/telemetry/scarf.py index f4c17abe..6e48570c 100644 --- a/strix/telemetry/scarf.py +++ b/strix/telemetry/scarf.py @@ -89,6 +89,8 @@ def finding(severity: str) -> None: def end(report_state: ReportState, exit_reason: str = "completed") -> None: if report_state.scarf_scan_ended_sent: return + if report_state.scan_ended_exit_reason is None: + report_state.scan_ended_exit_reason = exit_reason vulnerabilities_counts = {"critical": 0, "high": 0, "medium": 0, "low": 0, "info": 0} for v in report_state.vulnerability_reports: @@ -125,7 +127,7 @@ def end(report_state: ReportState, exit_reason: str = "completed") -> None: { **base_props(), "session": SESSION_ID, - "exit_reason": exit_reason, + "exit_reason": report_state.scan_ended_exit_reason, "duration_seconds": round(duration), "vulnerabilities_total": len(report_state.vulnerability_reports), **{f"vulnerabilities_{k}": v for k, v in vulnerabilities_counts.items()},