Karabiner Breakage on macOS 26.4 Beta 1 and a Temporary Workaround

After macOS 26.4 beta tightened HID permissions, Karabiner-Elements keyboard remapping broke. hidutil plus LaunchAgent is a temporary workaround.
Note

Karabiner-Elements works normally again on macOS 26.4 beta 3.

My Karabiner-Elements Version: 15.9

Problem

Someone in Issue #4402 located the problem: Karabiner-Elements is missing the com.apple.hid.manager.user-access-protected entitlement.

error    20:29:23.547646+0100    Karabiner-Core-Service    IOServiceOpen failed: 0xe00002c7error    20:29:23.548438+0100    kernel    IOHIDLibUserClient:0x100001850 Insufficient permissions to access device for PID: 3591, missing entitlement: com.apple.hid.manager.user-access-protectederror    20:29:23.548444+0100    kernel    AppleHIDTransportHIDDevice:0x100000aac failed to create user client: 0xe00002c7

Entitlement? 🤨

Entitlements are key–value pairs that grant an app access to system‑protected resources or capabilities.

—— Apple Developer Documentation: Security Entitlements

Roughly speaking, an entitlement is the permission an app needs to request in order to access protected resources. Running codesign -d --entitlements - <path> shows the permissions requested by an app.

com.apple.hid.manager.user-access-protected is a private entitlement used internally by Apple. Third-party apps cannot request it.

In macOS 26.4 beta 1, Apple enabled stricter HID (Human Interface Devices) permission checks for the built-in keyboard, so Karabiner-Elements no longer has access.

Workaround

hidutil is Apple’s official HID mapping tool. It supports simple one-key remapping needs.

  • to
  • Right to Left

For the mappings above, run hidutil property --set <json_content> in the terminal, for example:

$ hidutil property --set '{"UserKeyMapping":[            {              "HIDKeyboardModifierMappingSrc": 0x700000039,              "HIDKeyboardModifierMappingDst": 0x7000000E3            },            {              "HIDKeyboardModifierMappingSrc": 0x7000000E7,              "HIDKeyboardModifierMappingDst": 0x7000000E0            },        ]}'# [OUTPUT]UserKeyMapping:(        {        HIDKeyboardModifierMappingDst = 30064771299;        HIDKeyboardModifierMappingSrc = 30064771129;    },        {        HIDKeyboardModifierMappingDst = 30064771296;        HIDKeyboardModifierMappingSrc = 30064771303;    })

Persistence

hidutil settings are lost after reboot. You can create a plist file in ~/Library/LaunchAgents/; it will run automatically after startup. If you do not want to write it manually, use the visual app 👉 hidutil key remapping generator

~/Library/LaunchAgents/com.local.KeyRemapping.plist
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>    <key>Label</key>    <string>com.local.KeyRemapping</string>    <key>ProgramArguments</key>    <array>        <string>/usr/bin/hidutil</string>        <string>property</string>        <string>--set</string>        <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}</string>    </array>    <key>RunAtLoad</key>    <true/></dict></plist>

Outro

Bilibili pushed me a video saying Safari in macOS 26.4 beta 1 supports compact mode. I do not use Safari, but I upgraded anyway out of curiosity.

At first I thought it would be like usual: a simple restart or reinstalling Karabiner would fix it. This time, it did not work.

Only after searching GitHub issues did I learn that Apple had tightened permissions, so Karabiner was basically unusable for the short term.

R.I.P, my beloved friends

  • Chrome DevTools Theming 🪦
  • IntelliCode extensions in VS Code 🪦
  • macOS’s Launchpad 🪦
  • Karabiner-Elements on macOS Tahoe betas 🪦