Skip to content

Ferramentas de Execução de Comandos e Aprovações

O que você poderá fazer

  • Configurar a ferramenta exec para executar em três modos (sandbox/gateway/node)
  • Entender e configurar os mecanismos de segurança de aprovações (deny/allowlist/full)
  • Gerenciar a lista de permissões (Allowlist) e bins seguros
  • Aprovar solicitações exec por meio da UI ou canais de chat
  • Resolução de problemas comuns e erros de segurança da ferramenta exec

Seu dilema atual

A ferramenta exec permite que assistentes de IA executem comandos de Shell, o que é poderoso mas também perigoso:

  • A IA vai excluir arquivos importantes no meu sistema?
  • Como limitar a IA para executar apenas comandos seguros?
  • Quais são as diferenças entre os diferentes modos de execução?
  • Como funciona o fluxo de aprovação?
  • Como a lista de permissões deve ser configurada?

Quando usar essa abordagem

  • Quando você precisa que a IA execute operações do sistema (gerenciamento de arquivos, compilação de código)
  • Quando você quer que a IA chame scripts personalizados ou ferramentas
  • Quando você precisa de controle granular das permissões de execução da IA
  • Quando você precisa permitir comandos específicos com segurança

🎒 Preparação antes de começar

Pré-requisitos

Este tutorial assume que você completou Iniciar Gateway e que o daemon do Gateway está em execução.

  • Certifique-se de que Node ≥22 está instalado
  • O daemon do Gateway está em execução
  • Conhecimento básico de comandos de Shell e sistema de arquivos Linux/Unix

Conceitos Principais

As Três Camadas de Segurança da Ferramenta exec

A ferramenta exec usa um mecanismo de segurança de três camadas para controlar as permissões de execução da IA, do nível grosseiro ao fino:

  1. Política de Ferramentas (Tool Policy):controla se a ferramenta exec é permitida em tools.policy
  2. Host de Execução (Host):comandos são executados em três ambientes sandbox/gateway/node
  3. Mecanismo de Aprovações (Approvals):nos modos gateway/node, restrições adicionais podem ser aplicadas via allowlist e prompts de aprovação

Por que a proteção multicamada é necessária?

A proteção de uma única camada é fácil de contornar ou configurar incorretamente. A proteção multicamada garante que se uma camada falhar, as outras camadas possam fornecer proteção.

Comparação dos Três Modos de Execução

Modo de ExecuçãoLocal de ExecuçãoNível de SegurançaCenários TípicosRequer Aprovação
sandboxDentro de contêineres (ex. Docker)AltoAmbiente isolado, testesNão
gatewayA máquina onde o daemon do Gateway está em execuçãoMédioDesenvolvimento local, integraçãoSim (allowlist + aprovação)
nodeNó do dispositivo emparelhado (macOS/iOS/Android)MédioOperações locais do dispositivoSim (allowlist + aprovação)

Diferenças Chave

  • O modo sandbox por padrão não requer aprovação (mas pode estar limitado pelo Sandbox)
  • Os modos gateway e node por padrão requerem aprovação (a menos que configurados como full)

Siga-me

Passo 1: Entender os parâmetros da ferramenta exec

Por que Entender os parâmetros da ferramenta exec é a base da configuração de segurança.

A ferramenta exec suporta os seguintes parâmetros:

json
{
  "tool": "exec",
  "command": "ls -la",
  "workdir": "/path/to/dir",
  "env": { "NODE_ENV": "production" },
  "yieldMs": 10000,
  "background": false,
  "timeout": 1800,
  "pty": false,
  "host": "sandbox",
  "security": "allowlist",
  "ask": "on-miss",
  "node": "mac-1"
}

Descrição dos Parâmetros

ParâmetroTipoValor PadrãoDescrição
commandstringObrigatórioComando de Shell a ser executado
workdirstringDiretório de trabalho atualDiretório de execução
envobjectHerdar ambienteSobrescrita de variáveis de ambiente
yieldMsnumber10000Mudar automaticamente para plano de fundo após o tempo limite (milissegundos)
backgroundbooleanfalseExecutar imediatamente em plano de fundo
timeoutnumber1800Tempo limite de execução (segundos)
ptybooleanfalseExecutar em um pseudo-terminal (suporte TTY)
hoststringsandboxHost de execução:sandbox | gateway | node
securitystringdeny/allowlistPolítica de segurança:deny | allowlist | full
askstringon-missPolítica de aprovação:off | on-miss | always
nodestring-ID ou nome do nó de destino no modo node

O que você deve ver:A lista de parâmetros explica claramente os métodos de controle para cada modo de execução.

Passo 2: Configurar o modo de execução padrão

Por que Definir valores padrão globais através de arquivos de configuração evita especificar parâmetros em cada chamada exec.

Edite ~/.clawdbot/clawdbot.json

json
{
  "tools": {
    "exec": {
      "host": "sandbox",
      "security": "allowlist",
      "ask": "on-miss",
      "node": "mac-1",
      "notifyOnExit": true,
      "approvalRunningNoticeMs": 10000,
      "pathPrepend": ["~/bin", "/opt/homebrew/bin"],
      "safeBins": ["jq", "grep", "cut"]
    }
  }
}

Descrição dos Elementos de Configuração

Elemento de ConfiguraçãoTipoValor PadrãoDescrição
hoststringsandboxHost de execução padrão
securitystringdeny (sandbox) / allowlist (gateway, node)Política de segurança padrão
askstringon-missPolítica de aprovação padrão
nodestring-Nó padrão no modo node
notifyOnExitbooleantrueEnviar evento do sistema quando tarefas de segundo plano terminarem
approvalRunningNoticeMsnumber10000Enviar notificação "em execução" após o tempo limite (0 para desativar)
pathPrependstring[]-Lista de diretórios para adicionar ao PATH
safeBinsstring[][Lista padrão]Lista de bins seguros (apenas operações stdin)

O que você deve ver:Depois de salvar a configuração, a ferramenta exec usa esses valores padrão.

Passo 3: Usar a substituição de sessão /exec

Por que A substituição de sessão permite ajustar temporariamente os parâmetros de execução sem editar o arquivo de configuração.

Envie no chat:

/exec host=gateway security=allowlist ask=on-miss node=mac-1

Ver os valores de substituição atuais:

/exec

O que você deve ver:Configuração dos parâmetros exec da sessão atual.

Passo 4: Configurar a Allowlist (Lista de Permissões)

Por que allowlist é o mecanismo de segurança central nos modos gateway/node, permitindo apenas a execução de comandos específicos.

Editar allowlist

Editar via UI

  1. Abra a UI de Controle
  2. Vá para a aba Nodes
  3. Encontre o cartão Exec approvals
  4. Selecione o alvo (Gateway ou Node)
  5. Selecione o Agente (ex. main)
  6. Clique em Add pattern para adicionar um padrão de comando
  7. Clique em Save para salvar

Editar via CLI

bash
clawdbot approvals

Editar via arquivo JSON

Edite ~/.clawdbot/exec-approvals.json

json
{
  "version": 1,
  "defaults": {
    "security": "deny",
    "ask": "on-miss",
    "askFallback": "deny",
    "autoAllowSkills": false
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "askFallback": "deny",
      "autoAllowSkills": true,
      "allowlist": [
        {
          "id": "B0C8C0B3-2C2D-4F8A-9A3C-5A4B3C2D1E0F",
          "pattern": "~/Projects/**/bin/*",
          "lastUsedAt": 1737150000000,
          "lastUsedCommand": "rg -n TODO",
          "lastResolvedPath": "/Users/user/Projects/bin/rg"
        },
        {
          "id": "C1D9D1C4-3D3E-5F9B-0B4D-6B5C4D3E2F1G",
          "pattern": "/opt/homebrew/bin/rg",
          "lastUsedAt": 1737150000000,
          "lastUsedCommand": "rg test",
          "lastResolvedPath": "/opt/homebrew/bin/rg"
        }
      ]
    }
  }
}

Descrição do Modo Allowlist

allowlist usa correspondência de padrões glob (insensível a maiúsculas/minúsculas):

PadrãoCorrespondênciaDescrição
~/Projects/**/bin/*/Users/user/Projects/any/bin/rgCorresponde a todos os subdiretórios
~/.local/bin/*/Users/user/.local/bin/jqCorresponde ao bin local
/opt/homebrew/bin/rg/opt/homebrew/bin/rgCorrespondência de caminho absoluto

Regras Importantes

  • Corresponde apenas ao caminho binário resolvido, não suporta correspondência de nome base (ex. rg)
  • Encadeamentos de Shell (&&, ||, ;) requerem que cada segmento satisfaça allowlist
  • Redirecionamentos (>, <) não são suportados no modo allowlist

O que você deve ver:Depois de configurar allowlist, apenas comandos correspondentes podem ser executados.

Passo 5: Entender bins seguros (Safe Bins)

Por que safe bins é um conjunto de binários seguros que suportam apenas operações stdin, que podem ser executados no modo allowlist sem allowlist explícito.

Bins seguros padrão

jq, grep, cut, sort, uniq, head, tail, tr, wc

Características de segurança de bins seguros

  • Rejeita argumentos de arquivo de posição
  • Rejeita flags tipo caminho
  • Só pode operar no fluxo passado (stdin)

Configurar bins seguros personalizados

json
{
  "tools": {
    "exec": {
      "safeBins": ["jq", "grep", "my-safe-tool"]
    }
  }
}

O que você deve ver:Comandos de bins seguros podem ser executados diretamente no modo allowlist.

Passo 6: Aprovar solicitações exec via canais de chat

Por que Quando a UI não está disponível, você pode aprovar solicitações exec através de qualquer canal de chat (WhatsApp, Telegram, Slack, etc.).

Habilitar encaminhamento de aprovações

Edite ~/.clawdbot/clawdbot.json

json
{
  "approvals": {
    "exec": {
      "enabled": true,
      "mode": "session",
      "agentFilter": ["main"],
      "sessionFilter": ["discord"],
      "targets": [
        { "channel": "slack", "to": "U12345678" },
        { "channel": "telegram", "to": "123456789" }
      ]
    }
  }
}

Descrição dos Elementos de Configuração

Elemento de ConfiguraçãoDescrição
enabledSe deve habilitar o encaminhamento de aprovações exec
mode"session" | "targets" | "both" - modo de alvos de aprovação
agentFilterProcessar apenas solicitações de aprovação de agentes específicos
sessionFilterFiltro de sessão (substring ou regex)
targetsLista de canais de destino (channel + to)

Aprovar solicitações

Quando a ferramenta exec precisa de aprovação, você receberá uma mensagem com as seguintes informações:

Exec approval request (id: abc-123)
Command: ls -la
CWD: /home/user
Agent: main
Resolved: /usr/bin/ls
Host: gateway
Security: allowlist

Opções de aprovação

/approve abc-123 allow-once     # Permitir uma vez
/approve abc-123 allow-always    # Sempre permitir (adicionar à allowlist)
/approve abc-123 deny           # Negar

O que você deve ver:Depois de aprovar, o comando é executado ou rejeitado.

Ponto de Verificação ✅

  • [ ] Você entende as diferenças entre os três modos de execução (sandbox/gateway/node)
  • [ ] Você configurou os parâmetros padrão globais exec
  • [ ] Você pode usar a substituição de sessão do comando /exec
  • [ ] Você configurou allowlist (pelo menos um padrão)
  • [ ] Você entende as características de segurança de bins seguros
  • [ ] Você pode aprovar solicitações exec via canais de chat

Armadilhas Comuns

Erros Comuns

ErroCausaSolução
Command not allowed by exec policysecurity=deny ou allowlist não correspondeVerifique tools.exec.security e configuração allowlist
Approval timeoutUI não disponível, askFallback=denyDefina askFallback=allowlist ou habilite a UI
Pattern does not resolve to binaryUso de nome base no modo allowlistUse o caminho completo (ex. /opt/homebrew/bin/rg)
Unsupported shell tokenUso de > ou && no modo allowlistDivida comandos ou use security=full
Node not foundNó não emparelhado no modo nodeComplete primeiro o emparelhamento de nós

Encadeamentos e Redirecionamentos de Shell

Aviso

No modo security=allowlist, os seguintes recursos do Shell não são suportados

  • Pipes:| (mas || é suportado)
  • Redirecionamentos:>, <, >>
  • Substituição de comandos:$(), ` `
  • Plano de fundo:&, ;

Soluções

  • Use security=full (com cuidado)
  • Divida em várias chamadas exec
  • Escreva scripts de wrapper e adicione o caminho do script à allowlist

Variáveis de Ambiente PATH

Os diferentes modos de execução processam PATH de maneiras diferentes:

Modo de ExecuçãoProcessamento de PATHDescrição
sandboxHerda shell login, pode ser redefinido por /etc/profilepathPrepend é aplicado após o profile
gatewayMescla login shell PATH ao ambiente execO daemon mantém PATH mínimo, mas exec herda PATH do usuário
nodeUsa apenas sobrescritas de variáveis de ambiente passadasNós macOS descartam sobrescritas de PATH, nós headless suportam prepend

O que você deve ver:A configuração correta de PATH afeta a busca de comandos.

Resumo

A ferramenta exec permite que assistentes de IA executem comandos de Shell com segurança através de um mecanismo de três camadas (política de ferramentas, host de execução, aprovações):

  • Modos de execução:sandbox (isolamento de contêiner), gateway (execução local), node (operações de dispositivo)
  • Políticas de segurança:deny (proibição completa), allowlist (lista branca), full (permissão completa)
  • Mecanismo de aprovações:off (sem prompt), on-miss (prompt quando não corresponde), always (sempre prompt)
  • Allowlist:correspondência de padrões glob do caminho binário resolvido
  • Bins seguros:binários que fazem apenas operações stdin são isentos de aprovação no modo allowlist

Próxima Lição

Na próxima lição aprenderemos Ferramentas de Pesquisa e Extração Web

Você aprenderá:

  • Como usar a ferramenta web_search para pesquisa na web
  • Como usar a ferramenta web_fetch para extrair conteúdo de páginas da web
  • Como configurar provedores de mecanismos de busca (Brave, Perplexity)
  • Como lidar com resultados de pesquisa e erros de extração web

Apêndice: Referência do Código Fonte

Clique para expandir e ver localizações do código fonte

Última atualização:2026-01-27

FuncionalidadeCaminho do ArquivoNúmero da Linha
Definição da ferramenta execsrc/agents/bash-tools.exec.ts1-500+
Lógica de aprovação execsrc/infra/exec-approvals.ts1-1268
Análise de comandos Shellsrc/infra/exec-approvals.ts500-1100
Correspondência de Allowlistsrc/infra/exec-approvals.ts507-521
Validação de Safe binssrc/infra/exec-approvals.ts836-873
Comunicação Socket de Aprovaçõessrc/infra/exec-approvals.ts1210-1267
Execução de Processossrc/process/exec.ts1-125
Schema de Configuração de Ferramentassrc/config/zod-schema.core.ts-

Tipos Chave

  • ExecHost: "sandbox" \| "gateway" \| "node" - Tipo de host de execução
  • ExecSecurity: "deny" \| "allowlist" \| "full" - Política de segurança
  • ExecAsk: "off" \| "on-miss" \| "always" - Política de aprovação
  • ExecAllowlistEntry: Tipo de entrada allowlist (contém pattern, lastUsedAt, etc.)

Constantes Chave

  • DEFAULT_SECURITY = "deny" - Política de segurança padrão
  • DEFAULT_ASK = "on-miss" - Política de aprovação padrão
  • DEFAULT_SAFE_BINS = ["jq", "grep", "cut", "sort", "uniq", "head", "tail", "tr", "wc"] - Bins seguros padrão

Funções Chave

  • resolveExecApprovals(): Resolve configuração exec-approvals.json
  • evaluateShellAllowlist(): Avalia se o comando Shell satisfaz allowlist
  • matchAllowlist(): Verifica se o caminho do comando corresponde ao padrão allowlist
  • isSafeBinUsage(): Valida se o comando é um uso de bin seguro
  • requestExecApprovalViaSocket(): Solicita aprovação através do socket Unix