docs/ANTIVIRUS.md
Some antivirus software may flag beads (bd or bd.exe) as malicious. This is a false positive - beads is a legitimate, open-source command-line tool for issue tracking.
Beads release installers now verify downloaded archives against release checksums.txt before installation. For users who manually install binaries, checksum verification should be the first trust step before running bd or creating antivirus exclusions.
Go binaries (including beads) are sometimes flagged by antivirus software due to:
This is a known industry-wide problem affecting many legitimate Go projects. See the Go project issues for examples.
Detection: PDM:Trojan.Win32.Generic
Affected versions: bd.exe v0.23.1 and potentially others
Component: System Watcher (Proactive Defense Module)
Kaspersky's PDM (Proactive Defense Module) uses behavioral analysis that commonly triggers false positives on Go executables.
Before running a downloaded binary or adding antivirus exclusions, verify the file is legitimate:
checksums.txt file in the releaseVerify checksum (Windows PowerShell):
Get-FileHash bd.exe -Algorithm SHA256
Verify checksum (macOS/Linux):
shasum -a 256 bd
Compare the output with the checksum in checksums.txt from the release page.
Add beads to your antivirus exclusion list:
Kaspersky:
bd.exe (e.g., C:\Users\YourName\AppData\Local\bd\)Windows Defender:
bd.exe fileOther antivirus software:
Help improve detection accuracy by reporting the false positive:
Kaspersky:
bd.exe file for analysisWindows Defender:
Other vendors:
If you're building beads from source or distributing it:
Beads releases are built with multiple optimizations to reduce false positives:
ldflags:
- -s -w # Strip debug symbols and DWARF info
Windows PE version info: Release builds embed legitimate PE resource metadata
(company name, product name, file description, version, copyright, and an
application manifest) into the Windows binary using go-winres. This is one of the
most effective measures against AV false positives — legitimate software almost
always has PE metadata, and AV heuristics use its absence as a suspicion signal.
These optimizations are applied automatically in official release builds.
Windows releases are signed with an Authenticode certificate when available. Code signing:
Verify a signed binary (Windows PowerShell):
# Check if the binary is signed
Get-AuthenticodeSignature .\bd.exe
# Expected output for signed binary:
# SignerCertificate: [Certificate details]
# Status: Valid
Verify a signed binary (Linux/macOS with osslsigncode):
# Install osslsigncode if not available
# Ubuntu/Debian: apt-get install osslsigncode
# macOS: brew install osslsigncode
osslsigncode verify -in bd.exe
Note: Code signing requires an EV (Extended Validation) certificate, which involves a verification process. If a release is not signed, it means the certificate was not available at build time. Follow the checksum verification steps above to verify authenticity.
Some users report success with:
go build -ldflags "-s -w" -o bd ./cmd/bd
However, results vary by antivirus vendor and version.
Yes. Beads is:
The issue isn't specific to beads' code - it's a characteristic of Go binaries in general. Changing code won't reliably prevent heuristic/behavioral detection. The proper solutions are:
We've implemented:
-s -w ldflags)Still in progress:
False positives may still occur with new releases until the certificate builds reputation with antivirus vendors. This typically takes several months of consistent signed releases.
No. Instead:
If you encounter a new antivirus false positive:
bd version)This helps us track and address false positives across different antivirus vendors.