GpgWindowsHello replaces traditional GPG passphrase entry with Windows Hello biometric authentication. Sign your Git commits with a fingerprint scan or facial recognition instead of typing passwords.
- Windows Hello Integration - Use fingerprint, face recognition, or PIN instead of typing passphrases
- Encrypted Passphrase Storage - Encrypted at rest using Windows protection APIs (DataProtectionProvider preferred; DPAPI fallback)
- Automatic Installation - Double-click to install, automatically detects and configures all GPG installations
- Single-File Executable - No dependencies, no installer packages, just one self-contained EXE
- Smart GPG Detection - Finds both standalone GPG and Git-bundled GPG, offers to fix Git configuration issues
- OS: Windows 10 (build 19041+) or Windows 11
- Windows Hello: Fingerprint reader, IR camera, or PIN setup required
- GPG: Any version (standalone or Git-bundled)
- Git: Optional, for Git commit signing
- Download
GpgWindowsHello.exeandinstall.cmd(from the GitHub release assets) - Right-click
install.cmdand select Run as administrator (or just double-click it) - Follow the prompts to:
- Select your GPG installation
- If your GPG installation isn't detected (or you want to add another), use
mto manually enter the full path togpg.exeorbto browse for it - Configure GPG agent settings
- Verify Git GPG configuration (if applicable)
- Done! The app copies itself to
%LOCALAPPDATA%\Programs\GpgWindowsHelloand configures GPG.
When you first sign a commit or use GPG:
- GPG will launch GpgWindowsHello
- Authenticate with Windows Hello (fingerprint/face/PIN)
- Enter your GPG passphrase in the dialog (one-time only)
- Your passphrase is securely stored (DataProtectionProvider preferred; DPAPI fallback)
If you need to import a private key during setup, you can paste the key content or type b to browse for private-key.asc.
Every future GPG operation that needs your passphrase:
- Authenticate with Windows Hello - that's it!
- No more typing passphrases
# Configure Git to sign commits
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_KEY_ID
# Make a signed commit
git commit -m "Your message"
# → Windows Hello prompt appears
# → Authenticate and done!
# Verify the signature
git verify-commit HEAD- Passphrase encryption (prioritized, not guaranteed TPM-backed): Passphrases are stored in
%APPDATA%\GpgWindowsHello\gpg-auth.binencrypted using WindowsDataProtectionProviderwhen available, with a Windows DPAPI (CurrentUser) fallback. - No Network Access: Application operates entirely offline
- Per-user scope: Encrypted passphrases are scoped to your Windows user profile and aren’t intended to be portable.
- Windows Hello Required: Every passphrase retrieval requires Windows Hello authentication, which can be biometric or PIN-based
Some AV/EDR products (and VirusTotal) may flag this binary due to behaviors that resemble malware techniques, even though they are used here for legitimate installation and credential-gating purposes:
- Spawning
gpg/gpgconfprocesses - Encrypted credential storage on disk
If Microsoft Defender (or another product) blocks the app, you can add an exclusion for the install folder:
- Open Windows Security → Virus & threat protection
- Go to Manage settings → Exclusions → Add or remove exclusions
- Add a Folder exclusion for
%LOCALAPPDATA%\Programs\GpgWindowsHello
Optional debug logging (no files written): set GPGWINDOWSHELLO_DEBUG=1 and run the app from a console to see diagnostic messages on stderr.
This build does not create Desktop or Start Menu shortcuts automatically.
Desktop shortcut (PowerShell one-liner):
$exe="$env:LOCALAPPDATA\Programs\GpgWindowsHello\GpgWindowsHello.exe"; $w=New-Object -ComObject WScript.Shell; $s=$w.CreateShortcut("$([Environment]::GetFolderPath('Desktop'))\GpgWindowsHello.lnk"); $s.TargetPath=$exe; $s.Arguments='--help'; $s.WorkingDirectory=(Split-Path $exe); $s.Description='GpgWindowsHello - Windows Hello for GPG'; $s.Save()Start Menu shortcut (PowerShell one-liner):
$exe="$env:LOCALAPPDATA\Programs\GpgWindowsHello\GpgWindowsHello.exe"; $dir=Join-Path ([Environment]::GetFolderPath('Programs')) 'GpgWindowsHello'; New-Item -ItemType Directory -Force -Path $dir | Out-Null; $w=New-Object -ComObject WScript.Shell; $s=$w.CreateShortcut("$dir\GpgWindowsHello.lnk"); $s.TargetPath=$exe; $s.Arguments='--help'; $s.WorkingDirectory=(Split-Path $exe); $s.Description='GpgWindowsHello - Windows Hello for GPG'; $s.Save()To enable diagnostic output (written to stderr; no log files are created):
- PowerShell:
setx GPGWINDOWSHELLO_DEBUG 1(new shells only) - Cmd:
setx GPGWINDOWSHELLO_DEBUG 1(new shells only)
What you’ll see:
- Basic lifecycle and command processing logs
- Storage protection notice during first-time setup (DataProtectionProvider preferred; DPAPI fallback when needed)
What you won’t see:
- GPG passphrases (never logged)
- Single Passphrase: Currently stores one passphrase; multiple GPG key support may be added later if requested
- Windows Only: No macOS or Linux support (Windows Hello is Windows-specific)
- File Size: Large(ish) due to self-contained .NET runtime; if size is a concern, please open an issue and we'll discuss whether to begin shipping a version without the self-contained .NET runtime.
- No GUI Settings: Configuration handled during installation; manual edits to
gpg-agent.confmay be required for advanced users
- First Auth Delay: Initial Windows Hello authentication may take 10-15 seconds
- No Passphrase Update UI: To change stored passphrase, delete
%APPDATA%\GpgWindowsHello\gpg-auth.binand re-authenticate
Run the installer again:
& $env:LOCALAPPDATA\Programs\GpgWindowsHello\GpgWindowsHello.exe --setupDelete the encrypted storage file:
Remove-Item "$env:APPDATA\GpgWindowsHello\gpg-auth.bin"Your gpg-agent.conf should contain:
pinentry-program C:\Users\YourName\AppData\Local\Programs\GpgWindowsHello\GpgWindowsHello.exeRestart GPG agent:
gpgconf --kill gpg-agentPlanned for future releases:
- Multiple passphrase support (different passphrases per key)
- GUI for managing stored passphrases
- Smaller file size (AOT compilation)
- Automatic updates
- Per-key security policies
This is an alpha release - your feedback is invaluable!
- Have a feature request, found a bug, or have a security concern? Let us know
Copyright © 2026 James D. Bartlett III
See LICENSE for details.
Thank you for testing GpgWindowsHello!