Guide

Everything you need to build, run and use HTID.

RequirementsBuildRun the clientThe menuLaunch argumentsMenu bar appFpbootdHow it worksLimitations

Requirements

Heads up: openssl@3 is scheduled to be deprecated on November 1st 2026, but it should keep working.

1. Build

git clone https://github.com/hackintosh-user/hack-touchid.git
cd hack-touchid
chmod +x prep_and_build.sh
./prep_and_build.sh

This produces the client and each sensor's daemon and support files.

2. Run the client

sudo ./hack-touchid

The first launch shows verbose output. Skip it with --q or --quiet. After the first launch the client adds itself to your $PATH, so from any new terminal you can just run:

sudo hack-touchid

Launch arguments

ArgumentWhat it does
--q / --quietLaunch without the verbose boot output.
--deploy-agentRun [3] Deploy without entering the client. The menu bar app also uses it after a macOS update.
--diag-pidRun the [D] Diagnose steps without launching the client.
--check-updatesCheck for updates without launching the client. If there is one, it shows the [A] Show changelog / [Y] Download and install / [N] Cancel prompt.
--menu-updaterCheck for updates and install one right away, with no prompts. The menu bar app's Update Client button runs this in a terminal.
--debugPrint every log line for easier debugging.

This list changes over time. New arguments are announced in the changelog.

Fpbootd: pre-login authentication

Fpbootd is an experimental effort to use your fingerprint before you have logged in to macOS. Today HTID only works after login, at the lock screen and in authentication prompts.

Not usable yet. This is early research, with no release date.

Current state

Progress is announced in the changelog.

How it works

Capture

The raw USB protocol is implemented directly against libusb with no Linux driver stack.

Matching

NIST's mindtct extracts minutiae and bozorth3 scores matches, both compiled in.

Storage

Templates and the password sit on an encrypted APFS volume. Its passphrase is in the System keychain.

Detection

The daemon watches the focused UI element through the Accessibility APIs. It patches no system process.

Privilege model

Runs as the console user and only escalates to root, via a scoped sudoers rule, for USB access. Not a system LaunchDaemon.

Limitations