Requirements
- macOS 14 Sonoma or later (macOS 15 Sequoia or later recommended). Older versions get zero support.
- OpenCore v1.0.6 or later. v1.0.5 and older are not supported.
- Xcode Command Line Tools:
xcode-select --install - Homebrew, then
brew install libusb openssl@3 innoextract - Accessibility permission for the daemon. The deploy step handles this for you.
- Your sensor must be enabled in your USBMap so it is powered. Check System Information, USB, for your sensor's VID:PID.
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-touchidLaunch arguments
| Argument | What it does |
|---|---|
--q / --quiet | Launch without the verbose boot output. |
--deploy-agent | Run [3] Deploy without entering the client. The menu bar app also uses it after a macOS update. |
--diag-pid | Run the [D] Diagnose steps without launching the client. |
--check-updates | Check for updates without launching the client. If there is one, it shows the [A] Show changelog / [Y] Download and install / [N] Cancel prompt. |
--menu-updater | Check for updates and install one right away, with no prompts. The menu bar app's Update Client button runs this in a terminal. |
--debug | Print 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
- Early spike code is committed on the active-development branch.
- The
[FP]entry in the client menu is a placeholder. It does nothing yet. - Cold boot sign-in is not supported. See Limitations.
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
- macOS only, and only macOS 14 Sonoma or later. On Linux, use the libfprint driver directly.
- Swipe to Lock works only on macOS 26 Tahoe with a VFS5011 sensor.
- No PAM module for
sudoin a terminal yet. It is planned, but it is unknown whether modern macOS allows it. - Ad-hoc code signing only. No notarization or Developer ID.
- Cold boot sign-in is not supported. macOS does not allow this level of access at the login window before a user has logged in. It could take months or years.