Copyright © 2026 Unity Technologies
Expected behavior of the Apple.Core plugin. Controller input is being blocked by the .entitlements file that the Apple.Core plugin generates for Xcode project, specifically by its AppSandboxEntitlement setting. What's happening: Apple.Core ships an AppleSecurityBuildStep that runs as a post-processing step on every macOS build. AppSandboxEntitlement on that step is enabled by default, so the generated .entitlements file includes: <key>com.apple.security.app-sandbox</key> <true/> When the App Sandbox is on, macOS blocks access to hardware transports (USB, Bluetooth) unless the app explicitly declares the corresponding entitlements. Game controllers on macOS reach the app via IOKit/HID (wired) or Bluetooth HID (wireless), both of which the sandbox blocks by default. As a result, the GCController.controllers API comes back empty. Two ways to enable Controller input: 1. Keep the sandbox, grant hardware access (required if you plan to ship via the Mac App Store): 1.1. Find and open DefaultAppleBuildProfile.asset (typically under Assets/Apple Plug-In Support/Editor/ for Apple.Core 3.1.8 and 3.2.0). In the inspector, expand Apple.Core.Security and check: - Allow Usb → adds com.apple.security.device.usb - Allow Bluetooth → adds com.apple.security.device.bluetooth 2. Disable the sandbox entirely (recommended for direct-distribution / non-App-Store desktop games): 2.1. In the same DefaultAppleBuildProfile.asset inspector, expand Apple.Core.Security and uncheck App Sandbox Entitlement. 2.2. To change the default at the source-code level, edit AppleSecurityBuildStep.cs (from the Apple.Core package) and change: “public bool AppSandboxEntitlement = true;" to false. Rebuild after either change and controllers will enumerate as expected. The behavior is entirely inside the Apple.Core plugin's build post-processing. Unity's macOS player build doesn't add the sandbox entitlement on its own — it only signs whatever .entitlements file Apple.Core writes into the project. Closing as third party issue.
Steps to reproduce:
1. Open the attached project “IN-146502”
2. Open Build profile, Platforms → macOS
3. Make sure “Assets/Samples/Input System/1.7.0/Visualizers/GamepadVisualizer” is selected in the Scene List
4. Enable “Create Xcode Project”
5. Build the project
6. Open the built project with Xcode
7. Build the project for your Mac
8. Try using a controller with the built app
Actual result: The controller has no effect and cubes that show when buttons are pressed do not change colors
Expected result: The controller works and in the scene cubes change colors depending on the button pressed
Reproducible with: 6000.0.0f1, 6000.0.80f1, 6000.3.21f1
Could not test with: 6000.5.6f1, 6000.6.0b6, 6000.7.0a3 (The Apple.Core plugin throws errors which I am unable to fix)
Reproducible on: Tahoe 26.5 (M1 Max)
Not reproducible on: No other environment tested
Reproducible with these devices:
PlayStation DualShock 4
PlayStation DualShock 5
Xbox One Controller (New)
Issues you vote on will appear here