Skip to content
Back to skills

Computer Use Agents

ASecurity

Construa agentes de IA que interagem com computadores como humanos fazem - visualizando telas, movimentando cursores, clicando botões e digitando texto. Cobre Computer Use da Anthropic, Operator/CUA da OpenAI e alternativas de código aberto. Foco crítico em sandboxing, segurança e tratamento dos desafios únicos do controle baseado em visão. Use quando: computer use, automação de desktop agent, controle de tela IA, agente baseado em visão, automação de GUI.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
ai-agentspythongoshellbashdockergitapisecurity

Works with

  • cursor
  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 8, 2026

npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill computer-use-agents --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Computer Use Agents?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Computer Use Agents
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artubss-computer-use-agents/badge)](https://www.skillsdirectory.com/skills/artubss-computer-use-agents)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: computer-use-agents
description: "Construa agentes de IA que interagem com computadores como humanos fazem - visualizando telas, movimentando cursores, clicando botões e digitando texto. Cobre Computer Use da Anthropic, Operator/CUA da OpenAI e alternativas de código aberto. Foco crítico em sandboxing, segurança e tratamento dos desafios únicos do controle baseado em visão. Use quando: computer use, automação de desktop agent, controle de tela IA, agente baseado em visão, automação de GUI."
source: vibeship-spawner-skills (Apache 2.0)
---

# Computer Use Agents

## Padrões

### Loop de Percepção-Raciocínio-Ação

A arquitetura fundamental de agentes de computer use: observar tela,
raciocinar sobre a próxima ação, executar ação, repetir. Este loop integra
modelos de visão com execução de ações através de um pipeline iterativo.

Componentes-chave:
1. PERCEPÇÃO: Captura de screenshot do estado atual da tela
2. RACIOCÍNIO: Modelo de visão-linguagem analisa e planeja
3. AÇÃO: Executa operações de mouse/teclado
4. FEEDBACK: Observa resultado, continua ou corrige

Insight crítico: Agentes de visão ficam completamente parados durante a fase de "pensamento"
(1-5 segundos), criando um padrão de pausa detectável.

**Quando usar**: ['Construindo qualquer agente de computer use do zero', 'Integrando modelos de visão com controle de desktop', 'Entendendo padrões de comportamento de agentes']

```python
from anthropic import Anthropic
from PIL import Image
import base64
import pyautogui
import time

class ComputerUseAgent:
    """
    Implementação do loop de Percepção-Raciocínio-Ação.
    Baseado em padrões Computer Use da Anthropic.
    """

    def __init__(self, client: Anthropic, model: str = "claude-sonnet-4-20250514"):
        self.client = client
        self.model = model
        self.max_steps = 50  # Prevenir loops descontrolados
        self.action_delay = 0.5  # Segundos entre ações

    def capture_screenshot(self) -> str:
        """Captura tela e retorna imagem codificada em base64."""
        screenshot = pyautogui.screenshot()
        # Redimensiona para eficiência de tokens (1280x800 é bom balanço)
        screenshot = screenshot.resize((1280, 800), Image.LANCZOS)

        import io
        buffer = io.BytesIO()
        screenshot.save(buffer, format="PNG")
        return base64.b64encode(buffer.getvalue()).decode()

    def execute_action(self, action: dict) -> dict:
        """Executa ação de mouse/teclado no computador."""
        action_type = action.get("type")

        if action_type == "click":
            x, y = action["x"], action["y"]
            button = action.get("button", "left")
            pyautogui.click(x, y, button=button)
            return {"success": True, "action": f"clicou em ({x}, {y})"}

        elif action_type == "type":
            text = action["text"]
            pyautogui.typewrite(text, interval=0.02)
            return {"success": True, "action": f"digitou {len(text)} caracteres"}

        elif action_type == "key":
            key = action["key"]
            pyautogui.press(key)
            return {"success": True, "action": f"pressionou {key}"}

        elif action_type == "scroll":
            direction = action.get("direction", "down")
            amount = action.get("amount", 3)
            scroll = -amount if direction == "down" else amount
            pyautogui.scroll(scroll)
            return {"success": True, "action": f"rolou {direction}"}
```

### Padrão de Ambiente Sandboxed

Agentes de computer use DEVEM rodar em ambientes isolados, sandboxed.
Nunca dê aos agentes acesso direto ao seu sistema principal - os riscos
de segurança são muito altos. Use containers Docker com desktops virtuais.

Requisitos-chave de isolamento:
1. REDE: Restringir a endpoints necessários apenas
2. FILESYSTEM: Somente leitura ou escopo para diretórios temporários
3. CREDENCIAIS: Sem acesso a credenciais do host
4. SYSCALLS: Filtrar system calls perigosas
5. RECURSOS: Limitar CPU, memória, tempo

O objetivo é "minimização de raio de explosão" - se o agente falhar,
danos ficam contidos no sandbox.

**Quando usar**: ['Deployando qualquer agente de computer use', 'Testando comportamento do agente com segurança', 'Executando tarefas de automação não confiáveis']

```python
# Dockerfile para ambiente sandboxed de computer use
# Baseado no padrão de implementação de referência da Anthropic

FROM ubuntu:22.04

# Instala ambiente desktop
RUN apt-get update && apt-get install -y \
    xvfb \
    x11vnc \
    fluxbox \
    xterm \
    firefox \
    python3 \
    python3-pip \
    supervisor

# Segurança: Criar usuário não-root
RUN useradd -m -s /bin/bash agent && \
    mkdir -p /home/agent/.vnc

# Instala dependências Python
COPY requirements.txt /tmp/
RUN pip3 install -r /tmp/requirements.txt

# Segurança: Remover capabilities
RUN apt-get install -y --no-install-recommends libcap2-bin && \
    setcap -r /usr/bin/python3 || true

# Copia código do agent
COPY --chown=agent:agent . /app
WORKDIR /app

# Configuração Supervisor para display virtual + VNC
COPY supervisord.conf /etc/supervisor/conf.d/

# Expõe porta VNC apenas (não desktop diretamente)
EXPOSE 5900

# Executa como não-root
USER agent

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

---

# docker-compose.yml com restrições de segurança
version: '3.8'

services:
  computer-use-agent:
    build: .
    ports:
      - "5900:5900"  # VNC para observação
      - "8080:8080"  # API para controle

    # Restrições de segurança
    security_opt:
      - no-new-privileges:true
      - seccomp:seccomp-profile.json

    # Limites de recursos
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
        reservations:
          cpus: '0.5'
          memory: 1G

    # Isolamento de rede
    networks:
      - agent-network

    # Sem acesso a filesystem do host
    volumes:
      - agent-tmp:/tmp

    # Filesystem raiz somente leitura
    read_only: true
    tmpfs:
      - /run
      - /var/run

    # Ambiente
    environment:
      - DISPLAY=:99
      - NO_PROXY=localhost

networks:
  agent-network:
    driver: bridge
    internal: true  # Sem internet por padrão

volumes:
  agent-tmp:

---

# Wrapper Python com sandboxing de runtime adicional
import subprocess
import os
```

### Implementação Anthropic Computer Use

Padrão de implementação oficial usando a capacidade computer use do Claude.
Claude 3.5 Sonnet foi o primeiro modelo frontier a oferecer computer use.
Claude Opus 4.5 agora é o "melhor modelo do mundo para computer use".

Capacidades-chave:
- screenshot: Captura estado atual da tela
- mouse: Operações de clique, movimento, drag
- keyboard: Digitar texto, pressionar teclas
- bash: Executar comandos shell
- text_editor: Visualizar e editar arquivos

Versões de ferramenta:
- computer_20251124 (Opus 4.5): Adiciona ação de zoom para inspeção detalhada
- computer_20250124 (Todos outros modelos): Capacidades padrão

Limitação crítica: "Alguns elementos de UI (como dropdowns e scrollbars)
podem ser complicados para Claude manipular" - documentação Anthropic

**Quando usar**: ['Construindo agentes de computer use em produção', 'Precisa de melhor qualidade de entendimento de visão', 'Controle completo de desktop (não apenas browser)']

```python
from anthropic import Anthropic
from anthropic.types.beta import (
    BetaToolComputerUse20241022,
    BetaToolBash20241022,
    BetaToolTextEditor20241022,
)
import subprocess
import base64
from PIL import Image
import io

class AnthropicComputerUse:
    """
    Implementação oficial Anthropic Computer Use.

    Requer:
    - Container Docker com display virtual
    - VNC para visualizar ações do agent
    - Implementações adequadas de ferramentas
    """

    def __init__(self):
        self.client = Anthropic()
        self.model = "claude-sonnet-4-20250514"  # Melhor para computer use
        self.screen_size = (1280, 800)

    def get_tools(self) -> list:
        """Define ferramentas de computer use."""
        return [
            BetaToolComputerUse20241022(
                type="computer_20241022",
                name="computer",
                display_width_px=self.screen_size[0],
                display_height_px=self.screen_size[1],
            ),
            BetaToolBash20241022(
                type="bash_20241022",
                name="bash",
            ),
            BetaToolTextEditor20241022(
                type="text_editor_20241022",
                name="str_replace_editor",
            ),
        ]

    def execute_tool(self, name: str, input: dict) -> dict:
        """Executa uma ferramenta e retorna resultado."""

        if name == "computer":
            return self._handle_computer_action(input)
        elif name == "bash":
            return self._handle_bash(input)
        elif name == "str_replace_editor":
            return self._handle_editor(input)
        else:
            return {"error": f"Ferramenta desconhecida: {name}"}

    def _handle_computer_action(self, input: dict) -> dict:
        """Manipula ações de controle de computador."""
        action = input.get("action")

        if action == "screenshot":
            # Captura via xdotool/scrot
            subprocess.run(["scrot", "/tmp/screenshot.png"])

            with open("/tmp/screenshot.png", "rb") as f:
                pass
```

## ⚠️ Arestas Perigosas

| Problema | Severidade | Solução |
|----------|-----------|---------|
| Problema | crítica | ## Defesa em profundidade - nenhuma solução única funciona |
| Problema | média | ## Adicionar variação similar a humanos nas ações |
| Problema | alta | ## Usar alternativas de teclado quando possível |
| Problema | média | ## Aceitar o tradeoff |
| Problema | alta | ## Implementar gestão de contexto |
| Problema | alta | ## Monitorar e limitar custos |
| Problema | crítica | ## SEMPRE usar sandboxing |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…