Update Cua Driver
Check whether a newer Cua Driver release is available and install it.
Cua Driver gives you three update paths: a passive banner at launch time, a CLI command that only checks, and a separate command that installs the update. Keep the check and apply steps separate so you can decide when to change the installed binary.
Before updating from 0.12.x to 0.13.0#
The installer command, CLI/MCP connection flow, tool names, and Python and TypeScript SDK constructors remain the same. Two behavior changes require attention:
standardis the promptless practical default for normal observation, input, file, browser, and configuration tools. Attaching to an existing logged-in Chromium profile remains an explicit boundary. Start CLI or MCP with--grant existing-profile, use a matching bounded manifest, or supply an authorization host from an embedding application.- The old cursor-style fields and
set_agent_cursor_styleoperation are removed. Sessions use the built-in animatedcua.defaulttheme and display the public session name in a badge below the cursor unless an installed theme ID is selected.
For unattended authenticated-browser work, create a short-lived bounded
manifest instead of disabling every approval. Use unrestricted only when a
trusted launcher explicitly supplies --dangerously-bypass-approvals and the
environment can tolerate full Cua autonomy.
See Permission modes and bounded autonomy, Drive a web page, and Personalize the agent cursor before restarting a long-running daemon or worker.
Check for updates#
cua-driver check-updateWhen you're behind:
Current: 0.12.6
Latest: 0.13.0
Update available. Run `cua-driver update --apply` to install.
Release notes: https://github.com/trycua/cua/releases/tag/cua-driver-rs-v0.13.0
When you're current:
Current: 0.13.0
Latest: 0.13.0
You're on the latest release.
Flags:
--json: return a machine-readable payload, shown below.--no-cache: skip the 20-hour on-disk cache and force a fresh GitHub check.
The command exits with 0 when the check succeeds. Read update_available in the JSON payload to learn whether a release is available. Non-zero exit codes mean the check failed, for example because the network was unavailable or parsing failed.
Apply the update#
cua-driver update --applyOutput:
Current version: 0.12.6
Checking for updates…
New version available: 0.13.0
Downloading and installing Cua Driver 0.13.0…
Installed Cua Driver 0.13.0.
update --apply calls the canonical installer script, the same one-line installer used for the first install.
If the daemon was running before the update, restart it so it uses the new binary:
cua-driver stop && cua-driver serveOn Windows with autostart enabled, the Scheduled Task uses the new binary on its next invocation. autostart enable is idempotent, and the task path resolves through the current junction.
Scripted check (CI / agents)#
cua-driver check-update --json{
"current_version": "0.12.6",
"latest_version": "0.13.0",
"update_available": true,
"source": "github_releases",
"checked_at": "2026-07-01T14:30:00Z",
"cache_hit": false,
"install_command": "curl -fsSL https://cua.ai/driver/install.sh | bash",
"release_notes_url": "https://github.com/trycua/cua/releases/tag/cua-driver-rs-v0.13.0",
"error": null
}When the installed version is current, install_command and release_notes_url are null.
Use the JSON form from a bash script:
if cua-driver check-update --json | jq -e '.update_available' > /dev/null; then
echo "Cua Driver is outdated — applying update"
cua-driver update --apply
fiThe same payload is available over MCP through the check_for_update tool. MCP does not provide an apply variant because installing through MCP would replace the running server process.
Passive banner#
Every cua-driver mcp, serve, and doctor invocation starts a background version check. If it finds a newer release, Cua Driver prints a two-line banner to stderr:
✨ cua-driver v0.13.0 is available (you have v0.12.6).
Update with: cua-driver update
Release notes: https://github.com/trycua/cua/releases/tag/cua-driver-rs-v0.13.0
The check uses a 20-hour cache and never blocks startup. One-shot commands such as --version, call, and list-tools skip it so piped output remains clean.
Disable the check for one invocation:
CUA_DRIVER_RS_UPDATE_CHECK=false cua-driver serveDisable it permanently:
cua-driver config set update_check_enabled false