Ir para o conteúdo

Aprovação humana antes de agir

O agente prepara a ação, o fluxo pausa de verdade e só executa depois que uma pessoa aprova. O padrão obrigatório para qualquer coisa que envia, cobra ou apaga.

Atualizado em 01 de set. de 2026

Agente que manda e-mail, emite nota, cancela pedido ou libera desconto não pode agir sozinho enquanto você não confia nele. Este fluxo é a trava: o modelo prepara o que vai acontecer, mostra para a pessoa e para.

A pausa é real — o run encerra no estado de espera e retoma na mensagem seguinte do mesmo thread, sem manter conexão aberta.

Como importar

Na plataforma: Agents → Importar, escolha o arquivo baixado. Ele entra como um rascunho novo (nada existente é alterado), com ids de observabilidade renovados. Depois preencha o que é do seu ambiente — credenciais, URLs e bases de conhecimento — e publique.

O arquivo

human-approval.hinow-agent.jsonjson
{
 "format": "hinow.agent",
 "version": 1,
 "exported_at": "2026-09-01T00:00:00Z",
 "credentials_included": false,
 "agent": {
  "name": "Aprovação humana antes de agir",
  "description": "O agente prepara a ação, o fluxo PAUSA para uma pessoa aprovar e só então executa.",
  "avatar": null,
  "model": "hinow/hicode",
  "system_prompt": null,
  "config": {},
  "tools": null,
  "workflow": {
   "nodes": [
    {
     "id": "start",
     "type": "start",
     "position": {
      "x": 300,
      "y": 0
     },
     "data": {
      "label": "Início",
      "variables": []
     }
    },
    {
     "id": "agent-prep",
     "type": "agent",
     "position": {
      "x": 285,
      "y": 150
     },
     "data": {
      "name": "redator",
      "model": "hinow/hicode",
      "system_prompt": "Com base no pedido do usuário, redija uma mensagem/e-mail curto e profissional pronto para envio. Apresente o texto claramente.",
      "config": {}
     }
    },
    {
     "id": "appr-1",
     "type": "user_approval",
     "position": {
      "x": 275,
      "y": 310
     },
     "data": {
      "name": "Aprovar envio",
      "approval_message": "Posso confirmar o envio do texto acima? (Aprovar/Rejeitar)",
      "approval_options": [
       "Aprovar",
       "Rejeitar"
      ]
     }
    },
    {
     "id": "agent-envia",
     "type": "agent",
     "position": {
      "x": 100,
      "y": 480
     },
     "data": {
      "name": "confirmador",
      "model": "hinow/hicode",
      "system_prompt": "O usuário APROVOU. Confirme que a mensagem foi registrada para envio (simulação de exemplo — diga claramente que é um exemplo didático) e mostre o texto final.",
      "config": {}
     }
    },
    {
     "id": "agent-cancela",
     "type": "agent",
     "position": {
      "x": 460,
      "y": 480
     },
     "data": {
      "name": "cancelador",
      "model": "hinow/hicode",
      "system_prompt": "O usuário REJEITOU. Cancele com elegância e pergunte o que ajustar no texto.",
      "config": {}
     }
    },
    {
     "id": "end-1",
     "type": "end",
     "position": {
      "x": 305,
      "y": 650
     },
     "data": {
      "label": "Fim"
     }
    }
   ],
   "edges": [
    {
     "id": "e-start-agent-prep-d",
     "source": "start",
     "target": "agent-prep"
    },
    {
     "id": "e-agent-prep-appr-1-d",
     "source": "agent-prep",
     "target": "appr-1"
    },
    {
     "id": "e-appr-1-agent-envia-approved",
     "source": "appr-1",
     "target": "agent-envia",
     "sourceHandle": "approved"
    },
    {
     "id": "e-appr-1-agent-cancela-rejected",
     "source": "appr-1",
     "target": "agent-cancela",
     "sourceHandle": "rejected"
    },
    {
     "id": "e-agent-envia-end-1-d",
     "source": "agent-envia",
     "target": "end-1"
    },
    {
     "id": "e-agent-cancela-end-1-d",
     "source": "agent-cancela",
     "target": "end-1"
    }
   ]
  }
 }
}

Card a card

CardPor que está aquiO que faz
**Agent redator**Separar preparar de executar.Produz o artefato (o e-mail, a mensagem, o texto da ação) e o apresenta ao usuário. Não tem poder de enviar nada.
**Aprovação do Usuário**É a trava.Emite a pergunta (approval_message) com as opções e **pausa o fluxo**. A resposta do usuário decide a saída.
**Agent confirmador** (saída approved)O caminho do "sim".É aqui que a ação de verdade acontece — no exemplo é simulada; no seu caso, é este agente que ganha o card Webhook que envia.
**Agent cancelador** (saída rejected)O caminho do "não" bem tratado.Cancela com elegância e pergunta o que ajustar — o "não" vira a próxima iteração, não um beco sem saída.

A regra de ouro

A ferramenta que executa (o Webhook que envia, cobra ou apaga) deve estar conectada só ao agente do caminho aprovado. Se ela estiver no slot do redator, o modelo pode chamá-la antes da aprovação — e a trava vira decoração. Use o tools_filter do Agent para garantir.

Como adaptar ao seu caso

  • Ação real: conecte um Webhook no slot do confirmador com a rota que envia/emite/cancela.
  • Mais opções que sim/não: approval_options aceita a lista que você quiser (Aprovar, Editar, Rejeitar) — cada uma vira uma saída para tratar.
  • Quem aprova não é quem conversa: dispare a notificação para o aprovador pelo seu sistema (um Webhook antes da pausa) e deixe a resposta voltar pelo mesmo thread.

Todos os fluxos prontos

Outros agents completos para importar e adaptar.