Cua Docs

Install Cua Driver

Install Cua Driver on macOS, Windows, or Linux with a one-line script.

Cua Driver supports macOS, Windows, and Linux. Use the same one-line installer on each platform; the script selects the right install path for the host and does not require administrator access.

Cua Driver sends content-free product telemetry by default. The installer shows this notice before the first event. Run cua-driver telemetry disable at any time to stop telemetry; the preference persists across upgrades. See Telemetry and privacy for the exact event schema and identity controls.

Requirements: macOS 14 (Sonoma) or later on Apple Silicon or Intel.

/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"

The installer places CuaDriver.app in /Applications and creates the ~/.local/bin/cua-driver symlink. The app bundle uses the com.trycua.driver signing identity, so macOS TCC permissions for Accessibility and Screen Recording remain attached across upgrades.

If ~/.local/bin is missing from your PATH, the installer detects your shell (zsh, bash, or fish) and adds the matching export PATH=… line to your rc file. Reload the shell with source ~/.zshrc or open a new terminal window.

Verify the install#

cua-driver --version
# cua-driver 0.13.0

For a full environment and install report:

cua-driver doctor
# [ok  ] binary: cua-driver 0.13.0 (aarch64-macos)
# [ok  ] install dir: /Users/you/.local/bin/cua-driver
# [ok  ] home dir: /Users/you/.cua-driver (3 release dirs cached)
# ...

doctor checks the version, install layout, and telemetry setup on every platform. It also runs platform probes for TCC on macOS, the interactive session on Windows, and AT-SPI plus the display server on Linux.

Grant TCC permissions (macOS only)#

Start the daemon first so macOS attributes the TCC request to CuaDriver.app instead of your terminal:

open -n -g -a CuaDriver --args serve

Then grant both permissions:

cua-driver permissions grant

That command launches CuaDriver through LaunchServices so macOS attributes the prompts to the app, then waits.

macOS prompts once for Accessibility. Note that it offers Open System Settings, not Allow — the dialog alone grants nothing:

The macOS Accessibility Access prompt: “CuaDriver” would like to control this computer using accessibility features, with Open System Settings and Deny buttons

Clicking Open System Settings adds CuaDriver to the Accessibility list, still switched off. Toggle it on:

CuaDriver listed under Accessibility in System Settings with its toggle switched off

Screen Recording prompts separately, in the same shape:

The macOS Screen Recording prompt: “CuaDriver” would like to record this computer’s screen and audio, with Open System Settings and Deny buttons

Toggle CuaDriver on under Screen & System Audio Recording too:

CuaDriver listed under Screen & System Audio Recording in System Settings with its toggle switched off

The prompt only registers the app; the toggle is what grants access. macOS may offer to quit and reopen CuaDriver when you flip one — accept, because a changed grant takes effect only after the responsible app fully relaunches. If the daemon does not come back, rerun open -n -g -a CuaDriver --args serve.

macOS does not always raise both prompts in one pass. Confirm what landed with cua-driver permissions status, and if only one of the two appeared, run the pair again to prompt for the other:

open -n -g -a CuaDriver --args serve
cua-driver permissions grant

If CuaDriver is missing from either list, add it with + and pick /Applications/CuaDriver.app — see macOS permissions for recovering a stale registration.

You can also trigger the prompts yourself:

cua-driver check_permissions

macOS opens the Accessibility and Screen Recording prompts. Grant both permissions, then run the check again:

cua-driver permissions status
# ✅ Accessibility: granted.
# ✅ Screen Recording: granted.

cua-driver permissions status reads the driver's actual grant state through the daemon. When no daemon is running, it reports ❓ unknown instead of reporting your terminal's grants, and it does not claim granted unless the driver has that permission.

Next steps#