Documentation menu

Segurança e revogação de acesso

Tokens, não senhas

Conectar um assistente nunca entrega a ele sua senha do MailInApp ou uma chave de API. Aprovar a tela de consentimento gera um token de acesso OAuth com escopo restrito exatamente às permissões que você marcou, vinculado exatamente à conta que você selecionou. Os tokens são strings aleatórias opacas armazenadas com hash — o mesmo padrão que o MailInApp já usa para chaves de API de desenvolvedores — então uma leitura do banco de dados não consegue recuperar uma credencial utilizável, e revogar um token é instantâneo em vez de esperar por uma expiração.

  • Tokens de acesso duram 1 hora.
  • Tokens de atualização duram 60 dias e giram a cada uso — o antigo para de funcionar no momento em que um novo é emitido, e se um token de atualização já rotacionado for reutilizado (replay) em algum momento (um sinal de que vazou), a conexão inteira é revogada automaticamente, não apenas aquele token.

Confirmação em duas etapas antes de qualquer envio

Ter campaigns:send concedido não significa que um assistente possa enviar e-mails aos seus contatos em uma única etapa. O envio sempre passa por duas chamadas de ferramenta separadas:

  1. prepare_send resolve seu público, aplica supressões e renderiza uma pré-visualização real — anotada como somente leitura, porque não envia nada. Ela retorna a contagem de destinatários, uma amostra de endereços, o HTML renderizado e um confirmationToken de curta duração, vinculado exatamente àquele projeto, assunto e público.
  2. confirm_send exige esse token exato, além do mesmo projeto/assunto/público exatos para os quais ele foi gerado. Qualquer divergência — um assunto diferente, uma seleção de linhas diferente, um token expirado (janela de 10 minutos) — é rejeitada de imediato.

O efeito prático: um assistente não pode enviar e-mails sem primeiro exibir o que está prestes a enviar e para quantas pessoas, e não pode trocar o público ou o assunto entre mostrar a pré-visualização e efetivamente enviar. No Claude, o resultado de prepare_send é renderizado como um cartão de verdade, com seu próprio botão Confirmar e enviar — então a aprovação humana é um clique em uma pré-visualização renderizada, não uma frase em uma transcrição de chat que um modelo pudesse se convencer a ultrapassar.

Todo envio feito dessa forma ainda passa pelas salvaguardas já existentes na sua conta, por cima dessa: o limite connectorSendRecipientsMonthly do seu plano (separado do seu volume normal de envio mensal, e muito menor que ele — 0 no Gratuito), a mesma lista de supressão que todo outro envio verifica, e o limite mensal geral de envio da sua conta. Cada um desses também é registrado como seu próprio registro de auditoria.

Conteúdo não confiável é isolado, não confiado

Campos de contato, corpos de mensagens recebidas na caixa de entrada e respostas de texto livre de formulários são todos escritos por pessoas que não você — um destinatário, ou quem quer que esteja enviando e-mails para sua caixa de suporte. As ferramentas que retornam esse conteúdo o embrulham claramente como dado não confiável no resultado da ferramenta, então seu assistente o trata como algo para ler e resumir, nunca como uma instrução a seguir. (Para os curiosos tecnicamente: esse isolamento vive no resultado da ferramenta, nunca na descrição da ferramenta — colocar instruções comportamentais em uma descrição é exatamente o tipo de superfície de prompt-injection que os revisores de conectores rejeitam à primeira vista.)

O que nenhuma ferramenta jamais alcança

Nenhuma ferramenta de conector — independentemente de quais escopos você conceda — pode ler ou rotacionar uma chave de API, um segredo de assinatura de webhook, uma senha de SMTP, ou um segredo de cliente OAuth de uma fonte de dados conectada; alterar configurações de pagamento, domínio ou SMTP; ou gerenciar convites de equipe. Isso espelha exatamente as mesmas restrições que um(a) colega de equipe editor já não consegue alcançar em nenhum outro lugar do MailInApp. Nada aqui toca no Stripe ou em faturamento também — uma cobrança contestada ou um reembolso permanecem uma ação restrita ao painel.

Qual conta, sempre reverificada

Uma conexão é vinculada a uma conta no momento do consentimento e nunca relê um cabeçalho para decidir em nome de qual conta atuar (diferente de uma sessão de painel autenticada escolhendo entre empresas). Essa vinculação é revalidada a cada chamada, em relação à sua associação de equipe atual: se você for removido(a) de uma equipe, ou seu papel mudar, a próxima chamada nessa conexão reflete a nova realidade, não o que era verdade quando você a concedeu.

Revogando uma conexão

Vá em Conexões, no painel (/dashboard/connections). Todo assistente que você aprovou é listado com seus escopos concedidos e quando fez a última chamada; Revogar tem efeito imediato — todo token que aquele assistente está segurando, de acesso e de atualização igualmente, para de funcionar na próxima chamada. Não há nada para desfazer primeiro do lado da plataforma (Claude/Gemini); revogar aqui é sempre suficiente.