Docs
...

Agentes e aprovações

O Console foi feito para ser operado também por agentes: a CLI iugu em uma sessão de um agente de código, ou um assistente de IA conectado ao Iugu for AI, o servidor MCP do Console. Um agente faz o que a pessoa que o autorizou pode fazer — nada além — e o que é sensível não é executado por ele: vira um pedido que a pessoa aprova no navegador, com um segundo fator. Esta página descreve esse modelo.

A Lifecycle API

Agentes e CLI falam com a Lifecycle API, em https://api.console.iugu.com/v1, cujo contrato OpenAPI 3.1 está em api-v1.yaml. Cada operação declara três coisas:

Declaração O que significa
x-iugu-scope O escopo que o cliente precisa ter pedido no consentimento (abaixo).
x-iugu-actions As permissões GIA que a pessoa (ou o app) precisa ter na área de trabalho — as mesmas cadeias das telas do Console.
x-iugu-tier Tier 0: executa na hora. Tier 1: vira um conjunto de mudanças que aguarda aprovação humana. Tier 2: exclusivo da equipe iugu.

A autorização de cada chamada é a interseção dos três: escopos do token ∩ áreas de trabalho consentidas ∩ permissões da pessoa. Nada que a pessoa não possa fazer no Console se torna possível por um agente.

Consentimento e agentes conectados

Um agente entra com o login da pessoa e um consentimento que cobre escopos × áreas de trabalho. Os escopos do Console:

Escopo Título no consentimento O que permite
console:read Ler seus dados do Console Áreas de trabalho, apps, instalações, permissões e eventos que a pessoa já pode ver.
console:apps.write Criar e configurar apps Nomes, descrições, imagens, permissões, privilégios e termos dos apps. Publicar continua exigindo aprovação.
console:installs Instalar e desinstalar apps Imediato para apps das próprias áreas de trabalho; apps de terceiros exigem aprovação.
console:credentials Solicitar credenciais e certificados Cada solicitação é aprovada no navegador; segredos são entregues uma única vez e nunca ao agente.
console:gia.write Solicitar mudanças de permissões Papéis, políticas, membros e convites — sempre aprovados no navegador.
console:testing Testar autorização Principais temporários limitados aos próprios papéis, simulador de políticas e tokens dos próprios apps.
console:approvals Acompanhar aprovações Listar aprovações pendentes e esperar o resultado.

Todo escopo de escrita implica console:read. Os consentimentos aparecem em Gerenciar Usuário → Agentes conectados: cada ferramenta ou assistente autorizado, com seus escopos e áreas de trabalho, e o botão para revogar o que a pessoa não reconhecer. Um consentimento é por portador de credencial — cada instalação da CLI ou de um assistente tem o seu; revogar um não afeta os outros.

Info

Os assistentes se identificam de três maneiras: cadastro prévio (a CLI iugu), um documento de metadados publicado no domínio do fabricante (Claude, ChatGPT, VS Code…) ou registro dinâmico (Cursor, Gemini CLI, OpenCode…). Clientes que o Console não consegue verificar recebem um aviso na tela de consentimento, ficam limitados a um teto de escopos (sem console:gia.write) e começam com acesso somente leitura.

Conjuntos de mudanças e aprovações

Uma operação de Tier 1 — credenciais, certificados, URL e callbacks OAuth, filtro por IPs, publicação, instalação de apps de terceiros, descarte de app, tokens de deploy e todas as escritas de GIA — responde 202 pending_approval com um conjunto de mudanças e a URL de aprovação. O agente entrega a URL à pessoa e espera; a pessoa abre https://console.iugu.com/workspace/approvals/<id>, vê exatamente o que será feito (o diff), quem pediu e por qual ferramenta, e escolhe ou .

  • Aprovar exige o nível Gerenciamento de Configurações (um segundo fator recente) e todas as permissões das operações contidas — o Console só mostra o botão a quem pode.
  • Um conjunto pode reunir várias operações e é aplicado de uma vez: um único pedido para “URL e callbacks + publicar + credencial de produção”.
  • Segredos (o client_secret de uma credencial nova) são entregues uma única vez: ao cliente que pediu a mudança ou à CLI iugu do próprio solicitante — mesmo quando o pedido saiu de um assistente conectado ao Iugu for AI, iugu changeset secrets <id> --write-env .env.local na máquina do desenvolvedor grava o segredo sem exibi-lo — ou pela página de segredos da aprovação. Ficam disponíveis por uma hora após a aprovação; depois, é preciso pedir uma nova credencial. O assistente nunca recebe o segredo.
  • Algumas operações exigem uma segunda pessoa (four_eyes): um membro mudando os próprios papéis não pode aprovar a si mesmo. O conjunto informa quem pode aprovar (approver_actions) e o Console notifica quem tem essa permissão.

Estados: Aguardando aprovação, Aprovado, Aplicado, Rejeitado, Expirado, Falhou.

Três pedidos que não exigem um novo login

Quando falta algo ao agente, a resposta traz uma URL e a pessoa resolve no navegador; o token do agente não muda, o consentimento sim:

Situação Resposta O que a pessoa faz
Falta um escopo ou uma área de trabalho no consentimento 403 insufficient_scope / workspace_not_consented com details.widen_url Amplia o consentimento em Agentes conectados; o agente repete a chamada.
A operação exige que quem pede prove presença 403 elevation_required com details.elevate_url Faz o segundo fator; a elevação vale 15 minutos para aquele consentimento.
A operação exige outra pessoa conjunto de mudanças com four_eyes Quem tem a permissão de aprovação aprova.

Auditoria

Em Gerenciar Área de Trabalho → Auditoria fica a linha do tempo da área de trabalho: cada mudança por agente ou API, cada aprovação, cada chamada do Iugu for AI a um app (inclusive leituras) com os argumentos enviados, com filtros Iugu for AI, Aprovações, Agentes e API e Tudo, e no topo o que está Aguardando alguém — conjuntos de mudanças e confirmações pendentes. Quem tem console:workspace.audit.list vê tudo; os demais membros veem os próprios eventos. Os eventos são mantidos por 30 dias (configurável por área de trabalho) e também estão na API: GET /v1/workspaces/<id>/events.

Iugu for AI

O Iugu for AI é o servidor MCP do Console em https://mcp.console.iugu.com/mcp. Suas ferramentas são geradas do mesmo contrato da Lifecycle API e executadas com a mesma autorização — e, por meio do app Iugu for AI instalado em toda área de trabalho, ele também oferece as ações dos apps provedores (veja Expor ações) como ferramentas <tag>__<ação>, chamadas em nome da pessoa e sujeitas às permissões dela.

Para conectar um assistente:

# Claude Code (identifica-se pelo documento de metadados da Anthropic)
claude mcp add --transport http iugu https://mcp.console.iugu.com/mcp
# depois, dentro do Claude Code: /mcp → Authenticate

# Codex: em ~/.codex/config.toml
# [mcp_servers.iugu]
# url = "https://mcp.console.iugu.com/mcp"
# e então: codex mcp login iugu

# ou, para todos os assistentes instalados na máquina, com o roteiro embutido:
iugu agent setup --all

iugu agent setup escreve a entrada do servidor MCP e a skill da iugu para Claude Code, Codex, OpenCode, Cursor e VS Code (--print mostra os trechos sem gravar). O Claude Desktop é outro produto: seu claude_desktop_config.json só aceita servidores locais (stdio); o Iugu for AI entra pelo próprio aplicativo, em Settings → Connectors → Add custom connector com a URL acima — o consentimento OAuth acontece ali.

O que o assistente recebe do Iugu for AI ao conectar são as instruções do servidor (níveis, aprovações, nunca pedir segredos, as ações dos apps disponíveis) e a descrição de cada ferramenta; a skill da CLI só faz sentido para assistentes que executam comandos. Para ler essas instruções — e entregá-las de propósito a uma conversa — use o prompt iugu_guide que o servidor oferece (no Claude Desktop: + → Add from Iugu for AI). Uma ação elevada de um app provedor (config/transfers) leva a pessoa a uma página do Console que mostra o app, a ação, os argumentos exatos e a área de trabalho — ela confirma com o segundo fator, e a confirmação vale para uma única repetição da mesma chamada. Uma área de trabalho que não quer a ponte desinstala o app Iugu for AI.

Apps agindo por si e tokens de deploy

Caso Como Limites
Um app agindo por si na Lifecycle API (uma integração, um CI que consulta a plataforma) POST https://identity.iugu.com/token com grant_type=client_credentials, a credencial do app e resource=https://api.console.iugu.com (ou a URL do Iugu for AI) Token de 5 minutos com sub = app:<id>; as áreas de trabalho são as instalações do app, a autoridade é a GIA de cada uma; tudo o que exige uma pessoa verificada responde human_required.
Token de deploy para um pipeline de CI iugu app deploy-tokens create --scope oauth,rotate_self --expires 24h; a CLI o usa por IUGU_TOKEN Age sobre um app, só para oauth (URL e callbacks), ip_whitelist e rotate_self (rotacionar a própria credencial). Nunca é gravado em disco pela CLI.

Warning

Um agente nunca deve pedir à pessoa um segredo, nem ecoá-lo. A CLI foi desenhada para isso: --write-env grava o segredo num arquivo 0600, --exec o substitui dentro de um comando sem passar pelo terminal, e as respostas --json nunca contêm segredos.