Repository navigation
Permissions and Security
Learn which macOS permissions OpenJoystickDriver needs and how it protects your Mac.
Note: This page applies to OpenJoystickDriver 0.6.0-alpha.1 and later. Version 0.5.0-beta.4 and earlier do not have all of the features on this page.
OpenJoystickDriver works with System Integrity Protection (SIP) and Apple Mobile File Integrity (AMFI) turned on.
Warning
Never turn off SIP or AMFI for OJD. No OJD feature needs it. If a guide says to do so, do not follow it.
Apple notarized the release app, and the maintainer signed it. Tester builds use a Developer ID signature and are also notarized.
The OJD driver extension, com.openjoystickdriver.XboxUSBDevice, is a DriverKit system extension. It runs in user space, not in the kernel. macOS asks for your approval before it starts. OJD uses it only for Xbox One and Xbox Series controllers on USB. The virtual controller comes from the app, not from the extension. For more information, see Xbox USB driver extension.
OJD stores this data locally:
- Profiles in
~/Library/Application Support/OpenJoystickDriver/. Only your user can read the folder. - Logs in
~/Library/Logs/OpenJoystickDriver/. Each start of OJD clears them. - Settings in the
com.openjoystickdriverpreferences domain.
The only network request in the OJD source is the update check. It runs when you click Check Now and contacts GitHub. OJD does not send controller data. OJD has no automatic update.
The endpoint is a local socket that other programs can read controller input from. It is off until you run ojd access enable. Only programs that you grant with ojd access grant can use it, and a program needs a grant for each scope that it uses. The service reads the signature of each program that connects from the kernel, not from the program. A grant names that signature, by team ID or as Apple, so OJD refuses ad-hoc signed and unsigned programs. The grants are in ~/Library/Application Support/OpenJoystickDriver/AccessGrants.json. Until the service stops, the endpoint remembers the programs that it refused in the last 24 hours, so that you can see them with ojd access list. For the commands, see access.
Copy Support Report copies a JSON report to the clipboard. OJD does not save it to disk. The report contains service status, virtual device details, Input Monitoring state, build identity, and Apple game controller data. It contains product names of your devices. By its own privacy flags, it leaves out serial numbers, file paths, packet data, and HID location IDs. Read the report before you share it.
OpenJoystickDriver asks for macOS permissions only when you request them, and each permission has one purpose.
OJD requests nothing at start. A request starts only when you do one of these actions:
- Click Request... on a card in the Overview pane.
- Click Request Access... in the menu-bar menu.
- Run the
permissions requestcommand.
OJD reads the permission state every second. A request result is not treated as a grant. OJD reads the real state again.
| Permission | Purpose | Needed |
|---|---|---|
| Input Monitoring | Read reports from a physical controller | Always |
| Accessibility | Publish the virtual controller | Always |
| Keyboard & pointer | Send keyboard, mouse, or scroll events from a profile | Only when a profile does so |
| Notifications | Show notifications | Optional |
Not verified on hardware: the Keyboard & pointer card and the Accessibility card may use the same switch in System Settings.
OJD does not use camera, microphone, or Full Disk Access permissions. It reads Bluetooth controllers as HID devices, so they need Input Monitoring. OJD uses Bluetooth only to disconnect a wireless controller. Whether macOS asks for Bluetooth permission for this is not verified.
- Open the Overview pane, or click the menu-bar icon.
- Click Request... on the Input Monitoring card, or click Request Access... in the menu.
- Allow OpenJoystickDriver in System Settings > Privacy & Security > Input Monitoring.
- Repeat for System Settings > Privacy & Security > Accessibility.
- Click Restart OpenJoystickDriver on the Overview pane if it appears.
Without Input Monitoring, Input Test shows Input Monitoring permission required. Without Accessibility, the virtual controller does not work.
- Open Settings and turn on a notification toggle, or click Send Test Notification.
- Allow the macOS prompt.
If you denied notifications before, click Open Notification Settings. The Notifications card shows Banners off or Sound off when macOS turns those parts off.
The OJD driver extension needs approval, but it is not a privacy permission. For more information, see Xbox USB driver extension.
- Home
- Start here
- Controllers
- Games
- Remapping
- Your Mac
- Command line
- Help
- Advanced