Desktop Control

Warn

Audited by Runlayer on Feb 21, 2026

Risk Level: MEDIUM
Scan Summary
Max Score
78%
Files
43
Flagged
43
Chunks
72
Flagged Files (43)
.agent/workflows/openspec-apply.mdHIGH
78.3%

Malicious tool definition detected

Tool: .agent/workflows/openspec-apply.md Description: --- description: Implement an approved OpenSpec change and keep tasks in sync.

.agent/workflows/openspec-archive.mdHIGH
78.3%

Malicious tool definition detected

Tool: .agent/workflows/openspec-archive.md Description: --- description: Archive a deployed OpenSpec change and update specs.

.agent/workflows/openspec-proposal.mdHIGH
78.3%

Malicious tool definition detected

Tool: .agent/workflows/openspec-proposal.md Description: --- description: Scaffold a new OpenSpec change and validate strictly.

.github/workflows/release.ymlHIGH
78.3%

Malicious tool definition detected

Tool: .github/workflows/release.yml Description: name: Release and Publish to PyPI on: push: branches: - main paths: - 'pyproject.toml' permissions: contents: write id-token: write # Required for PyPI trusted publishing jobs: release: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 # Fetch all history for changelog generation - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install uv uses: astral-sh/set

.gitignoreHIGH
78.3%

Malicious tool definition detected

Tool: .gitignore Description: # Python-generated files __pycache__/ *.py[oc] build/

.opencode/command/openspec-apply.mdHIGH
78.3%

Malicious tool definition detected

Tool: .opencode/command/openspec-apply.md Description: --- description: Implement an approved OpenSpec change and keep tasks in sync.

.opencode/command/openspec-archive.mdHIGH
78.3%

Malicious tool definition detected

Tool: .opencode/command/openspec-archive.md Description: --- description: Archive a deployed OpenSpec change and update specs.

.opencode/command/openspec-proposal.mdHIGH
78.3%

Malicious tool definition detected

Tool: .opencode/command/openspec-proposal.md Description: --- description: Scaffold a new OpenSpec change and validate strictly.

.python-versionHIGH
78.3%

Malicious tool definition detected

Tool: .python-version

AGENTS.mdHIGH
78.3%

Malicious tool definition detected

Tool: AGENTS.md Description: <!-- OPENSPEC:START --> # OpenSpec Instructions These instructions are for AI assistants working in this project.

README.mdHIGH
78.3%

Malicious tool definition detected

Tool: README.md Description: # Desktop Control Skill 🤖 **AI Agent Skill** for desktop automation using PyAutoGUI.

SKILL.mdHIGH
78.3%

Malicious tool definition detected

Tool: SKILL.md [1/3] Description: --- name: Desktop Control description: Control mouse, keyboard, and screen for desktop automation tasks --- # Desktop Control Skill This skill provides comprehensive desktop automation capabilities through PyAutoGUI, allowing AI agents to control the mouse, keyboard, take screenshots, and interact with the desktop environment.

Tool: SKILL.md [2/3] Description: using `screen locate`, ensure: - Image file exists and path is correct - Adjust `--confidence` (try 0.7-0.9) - Image matches exact screen appearance (resolution, colors) ## Getting Help ```bash # Show all available commands uvx desktop-agent --help # Show commands for specific category uvx desktop-agent mouse --help uvx desktop-agent keyboard --help uvx desktop-agent screen --help uvx desktop-agent message --help # Show help for specific command uvx desktop-agen

Tool: SKILL.md [3/3] Description: to source uvx desktop-agent mouse position # Verify position uvx desktop-agent mouse drag 500 400 --duration 0.5 # Drag to destination # For precision, use slower duration uvx desktop-agent mouse drag 500 400 --duration 1.0 ``` ### 🔄 Error Recovery Patterns #### When Window Not Found ```bash # Pattern: List windows, find closest match, retry uvx desktop-agent app focus "Chrome" # Fails with window_not_found uvx desktop-agent app list # See actual window titles #

commands/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: commands/__init__.py

commands/keyboard.pyHIGH
78.3%

Malicious tool definition detected

Tool: commands/keyboard.py Description: """Keyboard control commands.""" import typer import pyautogui app = typer.Typer(help="Keyboard control commands") @app.command() def write( text: str = typer.Argument(..., help="Text to type"), interval: float = typer.Option(0.0, "--interval", "-i", help="Interval between keystrokes"), ): """Type text with optional interval between keys.""" pyautogui.write(text, interval=interval) typer.echo(f"Typed: {text}") @app.command() def press( keys: str = typer.Ar

commands/message.pyHIGH
78.3%

Malicious tool definition detected

Tool: commands/message.py Description: """Message box commands.""" import typer import pyautogui app = typer.Typer(help="Message box commands") @app.command() def alert( text: str = typer.Argument(..., help="Alert message"), title: str = typer.Option("Alert", "--title", "-t", help="Window title"), button: str = typer.Option("OK", "--button", "-b", help="Button text"), ): """Display an alert message box.""" result = pyautogui.alert(text=text, title=title, button=button) typer.echo(f"Alert shown:

commands/mouse.pyHIGH
78.3%

Malicious tool definition detected

Tool: commands/mouse.py Description: """Mouse control commands.""" import typer import pyautogui app = typer.Typer(help="Mouse control commands") @app.command() def move( x: int = typer.Argument(..., help="X coordinate"), y: int = typer.Argument(..., help="Y coordinate"), duration: float = typer.Option(0.0, "--duration", "-d", help="Duration in seconds"), ): """Move mouse to specified coordinates.""" pyautogui.moveTo(x, y, duration=duration) typer.echo(f"Mouse moved to ({x}, {y})") @app.command(

commands/screen.pyHIGH
78.3%

Malicious tool definition detected

Tool: commands/screen.py Description: """Screen and screenshot commands.""" import typer import pyautogui from pathlib import Path app = typer.Typer(help="Screen and screenshot commands") @app.command() def screenshot( filename: str = typer.Argument("screenshot.png", help="Output filename"), region: str = typer.Option(None, "--region", "-r", help="Region as 'x,y,width,height'"), ): """Take a screenshot of the entire screen or a region.""" if region: try: x, y, width, height = map(int, region.spl

desktop_agent/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/__init__.py Description: """Desktop Agent - CLI for controlling mouse, keyboard, and screen using PyAutoGUI.""" import typer from desktop_agent.commands import mouse, keyboard, screen, message, app app_cli = typer.Typer( name="desktop-agent", help="Control your desktop with mouse, keyboard, and screen automation", no_args_is_help=True, )

desktop_agent/__main__.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/__main__.py Description: """Entry point for running desktop-agent as a module.

desktop_agent/commands/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/__init__.py

desktop_agent/commands/app.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/app.py Description: """Application control commands - cross-platform app launching and focusing.""" import platform import subprocess import time import typer from typing import Optional from desktop_agent.utils import CommandResponse, ErrorCode, DesktopAgentError app = typer.Typer(help="Application control commands") def _get_platform() -> str: """Get the current platform.""" system = platform.system().lower() if system == "darwin": return "macos" elif system == "wi

desktop_agent/commands/keyboard.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/keyboard.py Description: """Keyboard control commands.""" import time import typer import pyautogui from desktop_agent.utils import CommandResponse, ErrorCode, DesktopAgentError app = typer.Typer(help="Keyboard control commands") def _handle_command(command: str, func, *args, **kwargs): start = time.time() try: result = func(*args, **kwargs) duration_ms = int((time.time() - start) * 1000) response = CommandResponse.success_response( command=command, data=result, dura

desktop_agent/commands/message.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/message.py Description: """Message box commands.""" import time import typer import pyautogui from desktop_agent.utils import CommandResponse, ErrorCode, DesktopAgentError app = typer.Typer(help="Message box commands") def _handle_command(command: str, func, *args, **kwargs): start = time.time() try: result = func(*args, **kwargs) duration_ms = int((time.time() - start) * 1000) response = CommandResponse.success_response( command=command, data=result, duration_ms=dur

desktop_agent/commands/mouse.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/mouse.py Description: """Mouse control commands.""" import time import typer import pyautogui from desktop_agent.utils import CommandResponse, ErrorCode, DesktopAgentError app = typer.Typer(help="Mouse control commands") def _handle_command(command: str, func, *args, **kwargs): start = time.time() try: result = func(*args, **kwargs) duration_ms = int((time.time() - start) * 1000) response = CommandResponse.success_response( command=command, data=result, duration_ms=d

desktop_agent/commands/screen.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/commands/screen.py [1/2]

Tool: desktop_agent/commands/screen.py [2/2]

desktop_agent/specs/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/specs/__init__.py Description: from pathlib import Path SPECS_DIR = Path(__file__).parent def get_schema() -> dict: schema_path = SPECS_DIR / "v1" / "schema.json"

desktop_agent/specs/v1/schema.jsonHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/specs/v1/schema.json Description: { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Desktop Agent Command Response", "description": "Schema for all desktop-agent command responses", "type": "object", "properties": { "success": { "type": "boolean", "description": "Whether the command executed successfully" }, "command": { "type": "string", "description": "Full command path (e.g., 'mouse.move', 'screen.screenshot')" }, "timestamp": { "type": "string", "form

desktop_agent/utils/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/utils/__init__.py Description: from .errors import ErrorCode, DesktopAgentError

desktop_agent/utils/errors.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/utils/errors.py Description: from enum import Enum from typing import Optional, Any class ErrorCode(Enum): SUCCESS = 0 INVALID_ARGUMENT = 1 COORDINATES_OUT_OF_BOUNDS = 2 IMAGE_NOT_FOUND = 3 WINDOW_NOT_FOUND = 4 OCR_FAILED = 5 APPLICATION_NOT_FOUND = 6 PERMISSION_DENIED = 7 PLATFORM_NOT_SUPPORTED = 8 TIMEOUT = 9 UNKNOWN_ERROR = 99 def to_string(self) -> str: return self.name.lower() @classmethod def from_exception(cls, exc: Exception) -> "ErrorCode": exc_type = type(exc).__nam

desktop_agent/utils/response.pyHIGH
78.3%

Malicious tool definition detected

Tool: desktop_agent/utils/response.py Description: from datetime import datetime, timezone from typing import Any, Optional from pydantic import BaseModel, Field class CommandResponse(BaseModel): success: bool = Field(..., description="Whether the command succeeded") command: str = Field(..., description="Full command path (e.g., 'mouse.move')") timestamp: str = Field( default_factory=lambda: datetime.now(timezone.utc).isoformat(), description="ISO 8601 timestamp in UTC" ) duration_ms: Optional[

examples/automation_examples.mdHIGH
78.3%

Malicious tool definition detected

Tool: examples/automation_examples.md Description: # Automation Examples Collection of practical automation examples using the Desktop Control Skill.

main.pyHIGH
78.3%

Malicious tool definition detected

Tool: main.py Description: """Desktop Agent - Backwards compatibility wrapper.

openspec/AGENTS.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/AGENTS.md [1/3] Description: # OpenSpec Instructions Instructions for AI coding assistants using OpenSpec for spec-driven development.

Tool: openspec/AGENTS.md [2/3] Description: - [ ] 1.3 Add frontend component - [ ] 1.4 Write tests ``` 5. **Create design.md when needed:** Create `design.md` if any of the following apply; otherwise omit it: - Cross-cutting change (multiple services/modules) or a new architectural pattern - New external dependency or significant data model changes - Security, performance, or migration complexity - Ambiguity that benefits from technical decisions before coding Minimal `design.md` skeleton: ```ma

Tool: openspec/AGENTS.md [3/3] Description: `archive/` - Completed changes ### File Purposes - `proposal.md` - Why and what - `tasks.md` - Implementation steps - `design.md` - Technical decisions - `spec.md` - Requirements and behavior ### CLI Essentials ```bash openspec list # What's in progress?

openspec/changes/rename-to-desktop-agent/design.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/changes/rename-to-desktop-agent/design.md Description: # Design: Desktop-Agent Package Structure and UVX Distribution ## Overview This change transforms the project from a local script-based tool to a properly packaged Python application that can be executed via `uvx` without installation.

openspec/changes/rename-to-desktop-agent/proposal.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/changes/rename-to-desktop-agent/proposal.md Description: # Proposal: Rename to Desktop-Agent and Configure UVX Distribution ## Summary Rename the project from `desktop-skill` to `desktop-agent` and configure it for easy distribution via `uvx desktop-agent`, enabling one-command installation and execution.

openspec/changes/rename-to-desktop-agent/specs/cli-naming/spec.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/changes/rename-to-desktop-agent/specs/cli-naming/spec.md Description: # CLI Naming Specification ## MODIFIED Requirements ### Requirement: CLI Command Naming The CLI MUST be invoked using `desktop-agent` instead of `desktop-skill`.

openspec/changes/rename-to-desktop-agent/specs/package-distribution/spec.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/changes/rename-to-desktop-agent/specs/package-distribution/spec.md Description: # Package Distribution Specification ## ADDED Requirements ### Requirement: UVX-Compatible Package Structure The package MUST be structured to support execution via `uvx` without prior installation.

openspec/changes/rename-to-desktop-agent/tasks.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/changes/rename-to-desktop-agent/tasks.md Description: # Tasks: Rename to Desktop-Agent ## Phase 1: Package Structure - [ ] Rename package directory from root to `desktop_agent` (Python package naming) - [ ] Update `pyproject.toml` with new package name and entry points - [ ] Configure `pyproject.toml` for uvx compatibility - [ ] Create `desktop_agent/__init__.py` with CLI app - [ ] Move `main.py` logic to `desktop_agent/__main__.py` ## Phase 2: Module Updates - [ ] Update imports

openspec/project.mdHIGH
78.3%

Malicious tool definition detected

Tool: openspec/project.md Description: # Project Context ## Purpose Desktop Control Skill is an AI agent skill that provides desktop automation capabilities through PyAutoGUI.

pyproject.tomlHIGH
78.3%

Malicious tool definition detected

Tool: pyproject.toml Description: [project] name = "desktop-agent" version = "1.3.1" description = "AI agent skill for desktop automation using PyAutoGUI" readme = "README.md" requires-python = ">=3.12" authors = [ { name = "Patrick Porto" } ] keywords = ["desktop", "automation", "pyautogui", "ai", "agent", "skill"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :

scripts/__init__.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/__init__.py

scripts/install.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/install.py Description: """Installation script for desktop-skill.

uv.lockHIGH
78.3%

Malicious tool definition detected

Tool: uv.lock [1/25]

Tool: uv.lock [2/25]

Tool: uv.lock [3/25]

Tool: uv.lock [4/25]

Tool: uv.lock [5/25]

Tool: uv.lock [6/25]

Tool: uv.lock [7/25]

Tool: uv.lock [8/25]

Tool: uv.lock [9/25]

Tool: uv.lock [10/25]

Tool: uv.lock [11/25]

Tool: uv.lock [12/25]

Tool: uv.lock [13/25]

Tool: uv.lock [14/25]

Tool: uv.lock [15/25]

Tool: uv.lock [16/25]

Tool: uv.lock [17/25]

Tool: uv.lock [18/25]

Tool: uv.lock [19/25]

Tool: uv.lock [20/25]

Tool: uv.lock [21/25]

Tool: uv.lock [22/25]

Tool: uv.lock [23/25]

Tool: uv.lock [24/25]

Tool: uv.lock [25/25]

Audit Metadata
Max File Score
78%
Classification
UNKNOWN_SERVER
Files Scanned
43
Files Flagged
43
Chunks Analyzed
72
Analyzed
Feb 21, 2026, 12:18 AM
Security Audit — runlayer — Desktop Control