Skip to content

Windows CLI install

Editions: OSS, Cloud, Enterprise. Unless stated otherwise, everything on this page ships in OSS.

The Preloop CLI runs natively on Windows. Every release publishes amd64 and arm64 binaries, and release binaries pass a required Microsoft Defender scan before publication. Running the CLI inside WSL is also supported; see Windows for WSL, the OSS server stack under Docker Desktop, and the current limits of the native binary.

irm https://preloop.ai/install/cli.ps1 | iex

Pin a version:

$env:PRELOOP_VERSION = '1.2.3'
irm https://preloop.ai/install/cli.ps1 | iex

The script verifies the downloaded binary against the release's SHA256SUMS, installs to %LOCALAPPDATA%\Preloop\bin\preloop.exe, and adds that directory to your user PATH. An unavailable, malformed, missing, duplicate, or mismatched checksum stops installation before replacing or running the binary. An existing installation remains unchanged on verification failure.

The installer preserves any download-zone metadata (Mark of the Web) and does not change Microsoft Defender settings. A matching checksum establishes that the download matches the release manifest; it is not a malware verdict or a publisher signature.

If https://preloop.ai/install/cli.ps1 is not yet deployed on your control plane (enterprise installer plugin), fetch the release asset directly:

irm https://github.com/preloop/preloop/releases/latest/download/install-cli.ps1 | iex

Build from source

If you have a Go toolchain:

go install github.com/preloop/preloop/cli/cmd/preloop@latest

Or from a clone:

git clone https://github.com/preloop/preloop.git
cd preloop\cli
go build -o preloop.exe .\cmd\preloop

Building locally is useful for development and investigation. It changes the binary and its download provenance, so a local build passing a scan does not establish that the distributed release will pass. Keep Windows protection enabled when testing either build.

Bash installer / Git Bash

curl -fsSL https://preloop.ai/install/cli | sh

works on Windows when PROCESSOR_ARCHITECTURE / PROCESSOR_ARCHITEW6432 are set (normal). Prefer the PowerShell installer: 32-bit Git Bash reports uname -m as i686 even on 64-bit Windows.

Microsoft Defender false positives

Go applications can receive false-positive detections, as discussed in Microsoft's Go issue tracker. A detection name or an unsigned binary alone does not establish why a specific file was flagged. Investigate the exact release hash, protection settings, and Defender detection record before classifying the alert.

If Defender flags the CLI

  1. Leave the file quarantined and keep Defender protection enabled.
  2. Open Windows Security → Virus & threat protection → Protection history and record the detection name, affected path, action, and time.
  3. Record the CLI release version, Windows version, and Defender security intelligence version. Include the SHA256 if it was captured before quarantine or is available in the detection record; label a manifest hash as expected rather than a measured file hash.
  4. Report these details to the maintainers so they can reproduce the detection and submit the affected release for Microsoft review. Remove personal paths and account details from public reports.

Do not disable protection, add directory/process exclusions, or remove download metadata to work around an unresolved alert. Use a release that has been investigated and validated in the affected environment.

Release gate classification

The release gate (scripts/test-windows-defender.ps1) fails on any Defender detection or remediation whose path, resources, or process name reference the artifact directory, a preloop-windows-*.exe file, or a process started from one, and on any loss of real-time protection or the antimalware service. Detections that reference none of these, such as GitHub's own hosted-runner provisioning daemon flagged by recent signatures (actions/runner-images#15272), are recorded under unrelated_detections in the evidence report and raised as workflow warnings instead of failing the release. Detections without a path are treated as ours. The runner setup adds exactly one exclusion, %SystemDrive%\Users\*\AppData\Local\Temp\provjobd.exe*, so Defender does not remove the runner agent mid-job; the gate rejects any other exclusion, refuses artifacts under that path, and lists active exclusions in the report as defender_exclusions.

Verify a release binary

Get-FileHash .\preloop-windows-amd64.exe -Algorithm SHA256
# Compare to SHA256SUMS from the same GitHub release

Report a false positive

Maintainers can submit the original release artifact and detection details to Microsoft Security Intelligence for review without asking users to restore quarantined files. See Windows release validation and signing for release checks and evidence requirements. A clean scan is evidence for the exact tested artifact, engine, signatures, settings, and observation period; it cannot guarantee no future alerts or identical results on other Windows versions.

Updating

preloop update

Or re-run the PowerShell installer.