Harden Windows Defender release scans - #58115
Conversation
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Detection-history results and early failures can bypass findings, reporting, and security follow-up.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Balanced
Findings: 2
New issues introduced by this change (2)
| Severity | Finding |
|---|---|
.github/workflows/daily-windows-defender-scan.md — The correlation result is report-only: neither returned detections nor the catch-path error is… |
|
.github/workflows/daily-windows-defender-scan.md — always() only schedules the upload step; it does not guarantee that a report exists. The… |
What changed in this PR
Hardens Windows release scanning with checksum verification, selectable release tags, persistent reports, and Defender detection correlation.
Changes:
- Verifies Windows binaries against published checksums.
- Supports scanning a selected release tag.
- Adds persistent reports and security issue creation.
| File | Description |
|---|---|
.github/workflows/release.md |
Adds pre-scan checksum verification. |
.github/workflows/release.lock.yml |
Regenerates the compiled release workflow. |
.github/workflows/daily-windows-defender-scan.md |
Adds tag selection, checksums, reports, detection history, and issue routing. |
.github/workflows/daily-windows-defender-scan.lock.yml |
Regenerates the compiled recurring workflow. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| Get-MpThreatCatalog | ForEach-Object { | ||
| $threatNames[[string]$_.ThreatID] = $_.ThreatName | ||
| } | ||
| $detections = @( |
|
|
||
| - name: Upload Defender report | ||
| if: steps.scan.outputs.has_findings == 'true' | ||
| if: always() |
|
@copilot Please address the current review feedback on this PR.
|
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Addressed in 055d8de. Release acquisition failures now produce a release error record, detection-history detections and query errors are added to findings, and an always-run finalization step guarantees report creation and follow-up outputs even when scanning fails. |
|
@copilot Please address the remaining review feedback on this PR.
|
Confirmed the current head is 055d8de and still contains the safeguards: Defender detections and detection-history errors are added to findings, outputs come from the always-run finalization step, and missing/failed acquisition still creates report.json for upload. A fresh review pass found no changed-file issues; local PR-finisher validation passed. |
|
@copilot Please take the next forward-progress pass on this PR.
|
Confirmed head 055d8de still contains the Defender safeguards and the review thread query is clear (no unresolved threads). The only remaining maintainer-facing work is refreshing/re-triggering PR state and CI; no further code changes are needed. |
|
@copilot Please take the next forward-progress pass on this PR.
|
Ran the PR-finisher pass. Head 055d8de is clean and retains the detection-history findings and always-run report finalization safeguards; no unresolved review threads remain. The only remaining maintainer-facing blocker is PR-state/CI refresh: a maintainer must re-trigger CI and complete review before merge. |
|
🎉 This pull request is included in a new release. Release: |

Summary
checksums.txtValidation
gh aw compile release.md daily-windows-defender-scan.md --strictwith actionlint enabledmake recompilemake agent-report-progressmake agent-report-progress-no-testCloses #58114