agent-desktop
Control native desktop apps with agent-desktop accessibility snapshots and actions on macOS, Windows, or Linux. Use for desktop UI tasks, never browser automation or web research.
SKILL.mdskills/agent-desktop/SKILL.md
GitHubAgent Desktop
Thin guidance for vercel-labs/agent-desktop v1.0.2, an Apache-2.0 Rust shell CLI using macOS AX, Windows UI Automation, and Linux AT-SPI.
Route and prerequisites
- If a higher-priority desktop-control tool is configured for this host (see local rules), prefer it.
- This is a native desktop route, never a browser/source-intake route. Never scrape or drive browser web research with it.
- If the CLI is missing, report the pinned prerequisite
npm install -g agent-desktop@1.0.2; install only when authorized. - On macOS, use
agent-desktop permissions --guideand ask the user to grant Accessibility. Screenshots also need Screen Recording permission. - At first use, load both upstream guides rather than guessing command syntax:
agent-desktop skills get desktop
agent-desktop skills get platform
Work loop
- Identify the requested app/window with
list-appsorlist-windowsas needed. - Read
agent-desktop snapshot --app "<App>" -i. - Use current snapshot refs with
click,set-value,type, orpress, following the loaded guides. Quote refs in PowerShell. - Re-snapshot after UI changes before choosing another ref. Use
find,get, orisfor targeted inspection; usemouse-clickonly when refs cannot address the target.
Tracing is off unless you pass --trace <path>; only pass it when the task needs a trace. Keep traces and screenshots out of repositories and avoid capturing credentials or unrelated private content.
Platform limits and approval
- Default operation is background friendly. Use
--headedonly when needed: it moves the real cursor and can steal focus. - Windows
typeand right-click require headed mode. Windows/Linux headless key actions need the target focused; do not assume background targeting establishes focus. - Hyprland/Wayland pointer, drag, and window control are unsupported; report that limit rather than improvising another runtime.
- The CLI has no built-in confirmation or allowlist. Before account writes, purchases, sends, or deletions, require explicit user approval for that exact action and target. Existing action-specific approval suffices.
- Never use
--forcewithout explicit approval. Stop at permission/provider gates and report the blocker. - Report what the requested interaction returned; do not claim completion from a successful command alone.