Show HN: PanicLock – Close your MacBook lid disable TouchID –> password unlock

PanicLock is a macOS utility that instantly disables Touch ID and locks the screen when you close your laptop lid or click a menu bar icon, forcing a password-only unlock for enhanced security.
PanicLock is macOS menu bar utility that instantly disables Touch ID and locks the screen with a single click or closing your laptop lid.
One-click panic lock— Click the menu bar icon or press a hotkey to instantly lock Lock on Close— Optionally lock and disable Touch ID when you close the lid Temporarily disables Touch ID— Forces password-only unlock Auto-restore— Original Touch ID settings restored after unlock Keyboard shortcut— Configure a global hotkey (e.g., ⌃⌥⌘L) Launch at login— Start automatically when you log in
- macOS 14.0 (Sonoma) or later
- Mac with Touch ID
| Action | Result | |---|---| | Left-click icon | Trigger panic lock immediately | | Right-click icon | Open menu (Preferences, Uninstall, Quit) |
When enabled in Preferences, closing your Mac's lid will automatically disable Touch ID and lock your screen. Touch ID stays disabled until you re-login with your password. If your screen locks for other reasons (screensaver, display sleep, etc.), Touch ID will still work as normal.
On first use, you'll be prompted for your admin password to install the privileged helper. This is a one-time setup.
- Clone this repository
- Open
PanicLock.xcodeprojin Xcode - Set your Development Team in both targets (PanicLock and PanicLockHelper)
- Update Team ID in
Info.plist(SMPrivilegedExecutables) andInfo-Helper.plist(SMAuthorizedClients) - Build and run
From the app: Right-click → "Uninstall PanicLock..." → Enter admin password
Manual:
sudo launchctl bootout system/com.paniclock.helper
sudo rm -f /Library/PrivilegedHelperTools/com.paniclock.helper
sudo rm -f /Library/LaunchDaemons/com.paniclock.helper.plist
rm -rf /Applications/PanicLock.app
PanicLock uses a privileged helper (installed via SMJobBless) to modify Touch ID timeout settings:
- Reads current timeout via
bioutil -r -s - Sets timeout to 1 second via
bioutil -w -s -o 1 - Locks screen via
pmset displaysleepnow - Restores original timeout after ~2 seconds
Minimal privileges— Helper only runs 3 hardcoded commands (bioutil, pmset)
No command injection— Timeout parameter is a Swift Int, not a string
Code-signed XPC— Helper verifies connecting app's bundle ID + team ID + certificate
No network activity— App is 100% offline, no telemetry or analytics
No data collection— Only stores preferences (icon style, keyboard shortcut)
Open source— Full code available for audit
Source: Hacker News










