Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/trycua/cua/llms.txt

Use this file to discover all available pages before exploring further.

Cua Driver supports Windows, macOS, and Linux. Support is defined by observed behavior in a real application against canonical Rust harness tests — not by whether a tool call returned a success code. The exact delivery route depends on the operating system, window system, application toolkit, action requested, and whether the target window may be brought to the foreground.

Support Levels

LevelMeaning
SupportedA canonical Rust harness test proves the result against application-owned or desktop-owned state.
Supported with limitsCommon paths are proven, but the platform or window system cannot safely provide every delivery shape. Unsupported paths return a structured refusal.
ExperimentalThe backend exists, but representative coverage is incomplete. Do not assume unlisted actions work.

Platform Overview

PlatformWindow system and automation APIsCurrent state
WindowsWin32, UI Automation (UIA), native input, and targeted window messagesSupported. Canonical coverage includes Electron, Tauri, WPF, WinUI 3, and WebView2. Some background Chromium gestures and elevated-integrity boundaries remain unavailable or unproven.
macOSAppKit, Accessibility (AX), Quartz/HID, and ScreenCaptureKitSupported. Canonical coverage includes Electron, Tauri, AppKit, SwiftUI, and WKWebView. Accessibility and Screen Recording permissions are required. Some background scroll and drag shapes return structured refusals.
Linux X11X11/EWMH, XTest, AT-SPI, and toolkit accessibility bridgesSupported with toolkit-specific limits. Foreground input and semantic background actions are broadly covered. Toolkits that reject synthetic background events receive an explicit refusal instead of a silent success.
Linux WaylandAT-SPI plus compositor-specific discovery, capture, activation, and portal inputSupported with compositor-specific limits. Semantic background actions work where the application exposes them. Raw input cannot generally be sent to an arbitrary occluded surface.
Wayland portal grants belong to the compositor/runtime scope that issued them. Do not treat a successful portal grant as a durable credential that migrates to a later process generation.

macOS Requirements

macOS attributes Accessibility and Screen Recording grants to a responsible app identity. Use one of these supported launch modes:
  • Standalone (recommended): Install CuaDriver.app, grant permissions to it, start its daemon with open -n -g -a CuaDriver --args serve.
  • Explicit direct MCP: cua-driver mcp --direct makes the MCP process own its runtime, using the spawning host’s TCC attribution.
# Check permission status
cua-driver permissions status

# Request both Accessibility and Screen Recording
cua-driver permissions grant

Windows Capabilities

Cua Driver on Windows runs as a user-space process with no elevated privileges required for most automation.
CapabilityState
Window discovery and enumerationSupported
UIA semantic actionsSupported
Keyboard injectionSupported
Mouse injectionSupported
Screenshot (per-window and desktop)Supported
Background keyboard/mouseSupported
Background Chromium gesturesSupported with limits
Elevated-integrity process targetsNot supported

Linux Window Systems

EnvironmentStateWhat is provenMain limits
X11/XorgSupportedWindow discovery, AT-SPI trees, foreground pointer/keyboard input, semantic background delivery, desktop scopeRaw background delivery depends on target toolkit
Sway (wlroots)Supported with limitsComplete typed Electron, Tauri, GTK, capture, and desktop-scope catalogFocus-bound raw background shapes return structured refusals
GNOME/MutterSupported with limitsAT-SPI actions, GTK controls, compositor-backed capture, portal/libei foreground inputWinRects Shell helper is a prerequisite; portal video recording incomplete
KDE/KWinExperimentalPlasma 6 startup, GTK AT-SPI discovery, portal interface availabilityNo target-addressable KWin activation adapter yet
cua-compositor nested sessionExperimentalNative GTK behavior, capture and scope, private route metadata, independent observation, and per-cell videoThe complete shared renderer matrix is not accepted. Unicode text and a canonical parallel-drag row remain unproven; this route does not establish a stock-Wayland capability.
XWaylandSupported with limitsX11 routes where the app exposes a real X11 windowDepends on whether the app uses X11 or native Wayland

Wayland Background Input

Background AX works when the target exposes a semantic AT-SPI action. The driver can invoke an accessible button without raising its window. Background PX is proven only for the action/surface cells declared by the driver catalog. Arbitrary raw background pointer injection is not available to an ordinary client on a standard Wayland compositor.
A structured background_unavailable or background_occluded result is part of the contract. It means Cua Driver refused an unsafe or unsupported route before disturbing the user’s active desktop. It is not a silent success — handle it in your agent loop.

Browser Tool Routes

Browser mutation always starts from an exact native (pid, window_id) binding.
SurfaceProven routesExplicit limit
Standalone Chrome and Edge on WindowsSnapshot, navigation, ref-bound typing, trusted background click, explicit DOM click and pointer actions, JavaScript dialogs, file assignment, approved downloads, frames, multi-tab, and exact ambiguity refusalElevated-integrity and unsupported native-host relationships still refuse
Standalone Chrome on macOSSnapshot, navigation, ref-bound typing, explicit DOM click and pointer actions, JavaScript dialogs, file assignment, approved downloads, frames, multi-tab, and exact ambiguity refusalTrusted CDP pointer input returns browser_input_trust_unavailable before dispatch
Standalone Chrome and Edge on Linux X11Snapshot, navigation, ref-bound typing, explicit DOM click and pointer actions, foreground JavaScript-dialog resolution, file assignment, approved downloads, frames, multi-tab, and exact ambiguity refusalTrusted CDP pointer input and background JavaScript-dialog resolution return browser_input_trust_unavailable before dispatch
Electron on Windows, macOS, X11, and validated SwayTyped mutation while one proven native window maps to one CDP pageA second page or native window invalidates the bounded exact route
Tauri, WKWebView, WebKitGTK, and common split-process WebView2Browser identity plus a side-effect-free structured refusalNo exact native-host-to-engine relationship is currently proven
Safari and FirefoxNative discovery and native AX/PX fallbacksNo typed browser mutation engine is currently advertised

Version Notes

This reference is documented against Cua Driver 0.19.3. Run cua-driver --version to confirm your installed version.
See Permission Modes for how to configure standard, bounded, or unrestricted access tiers. See MCP Tools for the full list of 54 automation tools.

Build docs developers (and LLMs) love