What It Does
QuitProtect intercepts commandQ before it reaches the frontmost application and requires you to confirm the quit with a deliberate action. A single accidental keypress won’t close anything.
It sits silently in your menu bar, counting the quits it has blocked. You’ll be surprised how often it saves you.
Two Modes
Double-press ⌘Q (default)
The first commandQ is consumed silently. Press again within the interval to actually quit. If you don’t press again, nothing happens — the quit is blocked.
| Interval | Description |
|---|---|
| 0.3s | Fast — requires quick double-tap |
| 0.4s (default) | Balanced |
| 0.5s | Relaxed |
| 0.75s | Generous window |
Hold ⌘Q
Hold commandQ for the configured duration to quit. Anything shorter is blocked.
| Duration | Description |
|---|---|
| 0.5s | Quick hold |
| 1.0s (default) | Balanced |
| 1.5s | Deliberate |
| 2.0s | Very deliberate |
Settings
Click the power icon in the menu bar and choose Settings… to configure:
Quit Mode
Switch between double-press and hold-to-quit using radio buttons. The timing option updates to match the selected mode.
General
- Accessibility permission — status display and grant button
- Menu bar icon pill — optional grey background for stronger contrast on busy or wallpaper-tinted menu bars (off by default)
- Launch at Login — start automatically when you log in
Auto-updates are handled by Sparkle. Use the “Check for Updates…” menu item to check on demand; Sparkle’s prompt offers an “Automatically download and install updates in the future” checkbox the first time an update is available. QuitProtect checks for new versions automatically once a day in the background.
Permissions
- Accessibility — required to intercept keyboard events before they reach applications. macOS will prompt on first launch.
Permission status can be checked in Settings.
Self-exclusion
QuitProtect does not protect itself — you can always quit QuitProtect with a normal commandQ.
Installation
Two formats on every release — both signed and notarised, pick whichever suits:
- Installer (
.pkg) — recommended for first-time installs. Double-click to run; macOS Installer places the app in/Applicationswithout quarantine or App Translocation. - Download (
.zip) — unzip and dragQuitProtect.appto your Applications folder.
On first launch, grant Accessibility permission when prompted.
Building from Source
QuitProtect uses Swift Package Manager. No Xcode project is required.
- Clone the repo:
git clone https://github.com/PerpetualBeta/QuitProtect.git - Run
gmake build - Launch with
open .build/QuitProtect.app
Requirements
macOS 14 (Sonoma) or later. Universal binary (Apple Silicon and Intel).