Show HN: PanicLock – Close your MacBook lid disable TouchID –> password unlock
Source: Hacker News
⚠️ Collection Error: Content refinement error: Error: 429 “you (bkperio) have reached your session usage limit, upgrade for higher limits: https://ollama.com/upgrade (ref: b4a1a87f-2f4c-44d6-bf0b-f1db99897362)”
PanicLock is macOS menu bar utility that instantly disables Touch ID and locks the screen with a single click or closing your laptop lid.
PanicLock fills a gap macOS leaves open: there is no built-in way to instantly disable Touch ID if it matters. Biometrics are convenient day-to-day, but US courts have ruled that law enforcement can compel a fingerprint or face unlock without violating the Fifth Amendment, a protection passwords still carry. PanicLock gives you a one-click or hotkey panic button from the menu bar that immediately disables Touch ID and locks your screen, restoring password-only protection without killing your session or shutting down.

Features
-
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
Requirements
-
macOS 14.0 (Sonoma) or later
-
Mac with Touch ID
Usage
Action Result
Left-click icon Trigger panic lock immediately
Right-click icon Open menu (Preferences, Uninstall, Quit)
Lock on Close
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.
First Launch
On first use, you’ll be prompted for your admin password to install the privileged helper. This is a one-time setup.
Building from Source
-
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
Uninstall
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
How It Works
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
Security
-
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
Releasing
The release script handles building, signing, notarizing, and packaging:
./scripts/release.sh
Features:
-
Extracts version from Xcode project automatically
-
Signs with Developer ID for distribution outside the App Store
-
Submits to Apple for notarization (can take minutes to hours)
-
Creates a notarized DMG for distribution
-
Supports parallel notarizations — each version gets its own
build/release//directory
Workflow:
-
Bump
MARKETING_VERSIONin Xcode -
Run
./scripts/release.sh— builds and submits for notarization -
Run again later to check status and continue when approved
-
Final output:
build/release//PanicLock-.dmg
License
MIT License — See LICENSE for details.
Contributing
Contributions welcome! Please open an issue or pull request.
