Releasing¶
Release pipeline¶
The release process is automated via reusable workflows from kdeldycke/repomatic. A push to main triggers the release.yaml workflow, which produces:
Python source distributions (
.whl,.tar.gz) uploaded to PyPINuitka-compiled standalone binaries for Linux, macOS, and Windows (x64 and ARM64) attached to GitHub Releases
A Chocolatey package for Windows
All release artifacts are signed with GitHub Artifact Attestations providing SLSA v1 provenance.
The release PR must be merged via “Rebase and merge” (never squash). See the repomatic-release skill for the full mechanics.
Chocolatey¶
The Chocolatey package is maintained in-tree at packaging/meta-package-manager/, unlike Homebrew, Scoop, NixOS, and AUR which are maintained externally. The chocolatey job in release.yaml runs after the main release, downloads the Windows binaries, computes SHA256 checksums, and pushes the .nupkg to https://push.chocolatey.org/.
Chocolatey moderation then validates the package, which includes automated virus scanning (see below).
Antivirus false positives on Windows binaries¶
Nuitka --onefile Windows x64 binaries are systematically flagged by antivirus engines on VirusTotal. This is a structural issue with the Nuitka compilation model, not a sign of actual malware.
Why it happens¶
Nuitka --onefile creates a self-extracting archive that decompresses an embedded Python runtime to a temporary directory and executes it at launch. This “drop and execute from temp” pattern is behaviorally identical to trojan droppers, which triggers heuristic and ML-based detections.
Additional factors:
Nuitka is popular with malware authors for source code protection, which poisons AV heuristics for all Nuitka-compiled binaries.
mpminvokes external system commands (package managers), triggering behavioral rules for command-and-control activity.Microsoft has gone as far as suspending an Artifact Signing account over Nuitka onefile binaries.
Typical detection profile¶
Based on the v6.2.1 release (scanned 2026-04-10):
Platform |
Detection rate |
VT reports |
Notes |
|---|---|---|---|
Linux x64 |
0/62 |
Clean |
|
Linux ARM64 |
0/60 |
Clean |
|
macOS x64 |
0-1/63 |
Occasional ML false positive |
|
macOS ARM64 |
2/55-60 |
Cynet, Microsoft ML, Avast/AVG |
|
Windows ARM64 |
1/68-70 |
Fewer ARM64 heuristics in AV engines |
|
Windows x64 |
33-35/70 |
Heavily flagged by heuristic/ML engines |
|
|
0/56-63 |
Clean (Python source, no Nuitka) |
The Windows x64 detections come from generic signatures like Gen:Variant.Application.tedy (BitDefender family), Trojan:Win32/Sabsik (Microsoft), Python/Packed.Nuitka.AL (ESET), and various ML-based classifiers.
Submitting false positive reports¶
After each release, if VirusTotal detections are high, submit false positive reports to the major vendors. Priority order by impact:
Microsoft (https://www.microsoft.com/en-us/wdsi/filesubmission): most influential engine. Covers
Sabsik,Wacatacdetections. Turnaround: 1-2 business days.BitDefender (https://www.bitdefender.com/submit/): their engine powers ~6 downstream vendors (ALYac, Arcabit, Emsisoft, GData, MicroWorld-eScan, VIPRE). Fixing BitDefender removes the most detections per submission.
ESET (email
samples@eset.com, files in password-protected ZIP with passwordinfected): coversPython/Packed.Nuitka.AL. Turnaround: 1-3 business days.Symantec (https://symsubmit.symantec.com/false_positive): covers
ML.Attribute.HighConfidence. ML-based detections may take longer (3-7 business days).Avast/AVG (https://www.avast.com/submit-a-sample): shared engine, one submission covers both. Covers
Win64:Malware-gen.Sophos (https://support.sophos.com/support/s/filesubmission): covers
Generic Reputation PUA. PUA submissions require justification of the software’s legitimate purpose. Turnaround: up to 15 business days.
A complete list of vendor FP contacts is maintained by VirusTotal and False-Positive-Center.
Impact on Chocolatey¶
Chocolatey’s moderation pipeline includes automated virus scanning. A high VirusTotal detection count on the Windows binaries can block package validation. Reducing the count via FP submissions (or waiting for vendors to update their signatures) may be necessary before Chocolatey validation passes.
Long-term mitigations¶
Code signing with an EV certificate would reduce heuristic detections across the board, especially from Microsoft and Symantec ML models.
Switching from
--onefileto--standalonewould eliminate the self-extracting pattern entirely, at the cost of distributing a directory instead of a single.exe.Nuitka Commercial (https://nuitka.net/doc/commercial.html) claims proprietary AV-mitigation techniques but offers no guarantees.
References¶
Previous report: #1157
Nuitka issues: Nuitka/Nuitka#2685, Nuitka/Nuitka#2495, Nuitka/Nuitka#2757, Nuitka/Nuitka#3842