Deixe sua IA enviar segredos sem lhe dar os segredos.
Como o MCP da PrivateNote entrega arquivos por e-mail, Slack, Discord e WhatsApp — sem o modelo lê-los
Seu assistente pode enviar hoje um contrato, uma senha ou um CSV. Ele não deveria precisar ler esses arquivos para isso. Passe caminhos locais ao MCP da PrivateNote e coloque apenas um link que se autodestrói no canal que você já usa.
Principais conclusões
- Passe caminhos de arquivo, não os bytes — o MCP local criptografa para o modelo não precisar da carga.
- Você aprova uma pré-visualização que fixa os bytes exatos, as opções e o destino. Criar uma nota não é autorização para enviá-la.
- E-mail, Slack, Discord e WhatsApp devem levar só a URL da PrivateNote depois de sendAuthorized — nunca o arquivo. Deixe o one-shot desligado se o agente também puder enviar mensagens.
- A URL descriptografável é uma capacidade ao portador que o agente pode ver após a confirmação. Não a registre. Depois da entrega, consulte a abertura ou revogue uma nota não aberta.
A parte útil de um assistente de IA não é que ele consiga ler um contrato, um arquivo de senhas ou uma exportação de clientes. A parte útil é que ele consiga levar essa carga à pessoa certa, no canal em que ela já vive, sem transformar o assistente em uma cópia do segredo.
Esse é o trabalho do dia: enviar um PDF a um cliente por e-mail, deixar uma senha de staging para um colega no Slack, entregar um token de bot a um moderador no Discord ou colocar um login de uso único em um fio do WhatsApp. As pessoas já fazem isso colando. Os agentes tornam a cola mais rápida — e o vazamento maior, porque o segredo passa a estar também no contexto do modelo, na transcrição do chat e em cada log que o host guarda.
O servidor MCP da PrivateNote foi feito para a separação inversa. O agente orquestra. Um processo local trata do segredo. Você aprova o arquivo exato e o destino. E-mail, Slack, Discord e WhatsApp só carregam um link. O modelo recebe a ordem de passar caminhos de arquivo, não bytes. A criptografia acontece na sua máquina depois que você confirma. O que volta é uma URL cujo fragmento guarda a chave — o mesmo modelo do link secreto de uso único do app web. Criar uma nota não é autorização para enviá-la.
O trabalho é enviar, não saber
A maior parte dos conselhos de „IA + segredos” ainda assume que o modelo precisa ver a credencial para ajudar. Isso é verdade se você quer que o modelo explique o arquivo, reescreva o contrato ou depure a chave. Não é verdade se você quer que ele entregue.
Entrega é um problema de logística: qual arquivo, qual pessoa, qual canal, quanto tempo o acesso deve durar, se deve queimar após a primeira visualização. Nenhuma dessas decisões exige o texto em claro. Exigem uma ferramenta que possa ler um caminho local, criptografar e devolver um handle que o resto da pilha tem permissão de ver.
É para isso que existe o privatenote-mcp. Hosts que honram as instruções MCP recebem, nesta ordem: se o usuário nomeou um arquivo local, passe o caminho absoluto; não abra, não faça cat e não resuma; chame create_private_note (uma pré-visualização); espere você aprovar; depois chame confirm_private_note. Só então outra ferramenta pode enviar a URL — e só para o destino que você aprovou.
A regra
Se o assistente consegue concluir a tarefa com um caminho, não deve concluí-la com o conteúdo. Colar no prompt é o último recurso — depois que o segredo já está no chat.
Por que os canais que você já usa guardam a cópia errada
E-mail, Slack, Discord e WhatsApp são bons em conversa. São cofres ruins. Criptografia em trânsito, mesmo de ponta a ponta, não decide por quanto tempo uma cópia pesquisável permanece em dispositivos, em exportações do workspace, em backups na nuvem ou em prévias de notificação. É a mesma distinção de por que o e-mail é o pior lugar para segredos e por que segredos nunca devem ser colados no chat.
- O e-mail guarda anexos nas duas caixas, nos servidores de correio, em legal holds e em „pesquisar todo o e-mail”. Encaminhar multiplica cópias que você não consegue revogar depois.
- O Slack é indexado pelo workspace. Admins, exportações de compliance e funções de IA que resumem canais podem reencontrar uma senha meses depois.
- O Discord parece efêmero em um servidor movimentado. Não é. Pins, busca e DMs guardam tokens de bot e segredos de admin ao lado de memes.
- O WhatsApp costuma ser o único canal que um prestador ou cliente realmente abre. Também é uma caixa familiar: capturas de tela circulam, computadores vinculados sincronizam, e backups sobrevivem ao trabalho.
O ponto não é abandonar essas ferramentas. O ponto é parar de colocar nelas a carga. Elas continuam sendo o envelope. A nota é a carta. Os destinatários ainda não precisam de conta PrivateNote: abrem o link no navegador, do mesmo jeito que qualquer outra URL que você já envia.
A divisão em três
| Papel | O que pode ver | O que não deve ver |
|---|---|---|
| Agente de IA (Cursor, Claude, Codex) | Quem, qual caminho, qual canal, expiração, burn-after-read. Depois que você confirma: a URL descriptografável | Bytes do arquivo, senhas, corpo da nota. Não deve enviar a URL até você aprovar esse destino |
| MCP da PrivateNote (processo Node local) | Os arquivos em disco, só para criptografar | Nada que depois devolva em texto claro |
| E-mail / Slack / Discord / WhatsApp | A URL da PrivateNote (e um assunto legível) | O anexo, a credencial, a passphrase |
O MCP não envia o e-mail nem a mensagem do Slack por você. Criar uma nota não é autorização para enviá-la. Depois que você aprova uma pré-visualização que nomeia canal e destinatário exatos, o resultado pode incluir sendAuthorized: true — então uma ferramenta de e-mail ou chat pode enviar só a URL para esse destino. Se nenhum destino foi aprovado, sendAuthorized é false e o agente deve lhe dar a URL para colar, não disparar outra ferramenta.
A URL é uma capacidade ao portador: quem a tem pode abrir a nota. O host MCP atual devolve secureUrl no resultado da ferramenta, então o agente pode observar o link mesmo sem observar os bytes do arquivo. Não registre, não faça commit e não copie para ferramentas sem relação. Trate-a como o segredo.
O resto do retorno é pequeno: noteId, expiresAt, burnAfterReading e, quando couber, passwordProtected e attachedFileNames. Nomes de arquivo são metadados, não conteúdo — mesmo assim evite colocar um segredo no nome.
O que o MCP faz de fato na sua máquina
Quando o agente chama create_private_note, um processo Node.js local — não o modelo — canoniza o caminho, confere contra a allowlist do workspace, faz o hash do arquivo e mostra uma pré-visualização. Ele ainda não devolve uma URL descriptografável. Depois que você aprova, confirm_private_note reabre esse mesmo arquivo, verifica dispositivo, inode, tamanho e SHA-256, e criptografa esses bytes. Se o arquivo mudou, a confirmação falha; o agente precisa recomeçar. O texto cifrado AES-256-GCM é enviado por POST à PrivateNote. A chave de descriptografia fica no fragmento da URL (#…). Navegadores não enviam fragmentos aos servidores. A API guarda um blob criptografado. Sem o fragmento, esse blob é ruído.
Prefira parâmetros de caminho para o host nunca precisar colocar o segredo nos argumentos da chamada que o modelo montou:
contentFilePath— arquivo UTF-8 que vira o corpo da nota (uma senha, um código de recuperação, uma instrução curta).filePath/filePaths— anexos locais (PDF, CSV, imagens). Exigesign_in. Máximo combinado de 20 arquivos.passwordFilePath— a primeira linha de um arquivo local vira a passphrase de revelação (envoltório Argon2id). Envie essa passphrase fora do canal, nunca na mesma mensagem do link.contentepassword— último recurso, só se o usuário já colou o segredo no chat e não existe arquivo.
A política padrão combina com uma entrega, não com um arquivo morto: burnAfterReading é true, expiresIn é 24 horas por padrão. Mais curto é melhor quando o destinatário espera do outro lado do Slack. Visualização múltipla (burnAfterReading: false) exige conta Premium. Anexo, verificação do destinatário, avisos de abertura e listar/revogar exigem sessão autenticada; gates e alertas também exigem plano pago.
Os caminhos são limitados. Por padrão só arquivos sob o workspace (o diretório de trabalho do processo MCP) podem ser lidos. Defina PRIVATENOTE_MCP_ALLOWED_ROOTS se precisar acrescentar pastas. Chaves SSH, diretórios de credenciais na nuvem e o arquivo de sessão do MCP estão sempre bloqueados, mesmo se você permitir $HOME ou /.
Você aprova a entrega exata — não um nome de caminho
Um agente que pode criar um link descriptografável e enviar e-mail ou Slack é um confused deputy: pode criptografar o arquivo errado, ou enviar o link certo à pessoa errada, em um turno. O padrão da PrivateNote é que você autorize três coisas juntas: os bytes exatos do arquivo, as opções exatas da nota (expiração, burn-after-read) e o destino exato.
A pré-visualização deve mostrar o destino quando o envio é pedido, por exemplo „Send via: Email / Recipient: alice@example.com”. Aprovar isso nunca deve autorizar outro endereço ou outro canal do Slack. confirm_private_note aceita só confirmationId. O agente não pode substituir caminho, destinatário, canal, expiração ou política de destruição na confirmação.
Criar uma nota sem destino devolve sendAuthorized: false. É de propósito. Um link no chat continua sensível — mas não é permissão para enviá-lo por e-mail.
Não ligue o one-shot se o agente pode enviar
PRIVATENOTE_MCP_ALLOW_ONE_SHOT pula a pré-visualização humana. O agente não consegue ligar isso como argumento da ferramenta, e mudar a variável de ambiente depois não tem efeito até você reiniciar o servidor MCP. Deixe desligado. Ligar enquanto o mesmo host pode enviar e-mail, Slack, Discord ou arquivos deixa o modelo criar um link descriptografável e despachá-lo em um passo — inclusive o arquivo errado ou o destinatário errado. A allowlist de caminhos continua valendo; não substitui a sua aprovação.
Conecte uma vez
Exige Node.js 18+. Depois de salvar, reinicie o cliente MCP para carregar os esquemas e as instruções atuais das ferramentas. As notas completas de instalação estão na página de integração MCP.
{
"mcpServers": {
"privatenote": {
"command": "npx",
"args": ["-y", "privatenote-mcp"]
}
}
}Codex CLI: codex mcp add privatenote -- npx -y privatenote-mcp. Isso grava ~/.codex/config.toml. Notas específicas do Codex estão em Usar a PrivateNote com o OpenAI Codex.
Self-hosted: defina PRIVATENOTE_API_BASE_URL e PRIVATENOTE_WEB_ORIGIN no bloco env do MCP para o texto cifrado não sair da sua infraestrutura. Opcionalmente PRIVATENOTE_MCP_ALLOWED_ROOTS. Não acrescente PRIVATENOTE_MCP_ALLOW_ONE_SHOT a menos que tenha um host de automação bem restrito e sem ferramentas de envio.
Uso diário: e-mail
O e-mail ainda é como empresas enviam contratos, NDAs, faturas com dados bancários e exportações de clientes. O modo de falha é anexar o arquivo. A caixa guarda então uma cópia descriptografável por anos, inclusive do lado do destinatário, em rastros de BCC e no e-discovery.
O padrão MCP: o agente já conhece o endereço da Alice e os dois PDFs locais. Ele não deve abrir esses PDFs. Faz sign-in se precisar, chama create_private_note com filePaths, sendChannel e sendRecipient para a pré-visualização nomear a Alice, espera você aprovar e depois confirm_private_note. Só então a ferramenta de e-mail pode colocar apenas secureUrl no corpo. Se você usa verificação do destinatário, quem lê precisa provar que o endereço é dele antes de a nota abrir — esse gate não envia o e-mail; a sua ferramenta de e-mail continua enviando.
Envie estes dois arquivos para a Alice por e-mail. Proteja-os com a senha em /absolute/path/client-password.txt. Não exponha os arquivos nem a senha ao modelo: /absolute/path/contract.pdf /absolute/path/nda.pdf
- O agente chama
sign_inse não houver sessão do plugin, depoiscreate_private_notecomfilePaths,passwordFilePath,sendChannel: "email"esendRecipient. Você aprova a pré-visualização. Depoisconfirm_private_note. - O assunto pode dizer „pacote do contrato” — não deve citar cláusulas do PDF.
- Envie a passphrase em uma segunda mensagem, uma ligação ou um compartilhamento do gerenciador de senhas — nunca no mesmo e-mail do link. Veja como compartilhar uma senha com segurança.
- Para um destinatário nomeado em plano pago:
requireRecipientVerification: trueerecipientEmail: "alice@example.com".
É o mesmo modelo de entrega de enviar documentos sensíveis com segurança, com a diferença de que o assistente pode executá-lo sem virar leitor do pacote.
Uso diário: Slack
O Slack é onde o plantão acontece. Senhas do banco de staging, tokens de deploy e „o CSV do financeiro” caem em um fio porque todo mundo já está lá. A busca do workspace transforma esse depósito em uma wiki interna permanente de segredos.
Peça uma entrega baseada em caminho e um pavio curto. Quinze minutos bastam se o colega está online. Queime após a leitura para um acerto de busca posterior ser um link morto, não uma credencial viva. Trate a URL como o segredo: não publique em canal público; use uma DM ou um canal privado dedicado.
Envie ao Mark a senha do banco em /absolute/path/secrets/db-password.txt no Slack. Leitura única, expira em 15 minutos. Não leia o arquivo no chat.
create_private_notecomcontentFilePath,expiresIn: "15m",burnAfterReading: truee o destino do Slack ligado na pré-visualização. Aprove, depoisconfirm_private_note.- Se o Slack estiver conectado como outra ferramenta MCP, o agente só pode publicar
secureUrlno destino aprovado depois quesendAuthorizedfor true. Caso contrário, ele lhe dá a URL para colar. - Depois que o Mark abrir, rotacione a senha se era um segredo de staging compartilhado — a nota reduziu cópias restantes; não tornou única uma credencial compartilhada.
Uso diário: Discord
O Discord é o canal de operações padrão de muitas comunidades de produto e times próximos de jogos. Tokens de bot, chaves da Cloudflare e „aqui a planilha dos usuários reportados” são colados em DMs de moderação porque o Discord é onde os mods estão.
Uma mensagem do Discord continua sendo uma mensagem armazenada. Membros do servidor com o papel certo, backups de dispositivo e a própria busca do Discord vão guardá-la. O padrão MCP é idêntico ao do Slack: criptografe o arquivo ou o token localmente, coloque o link na DM, defina uma expiração curta. Se o token já foi colado antes no mesmo servidor, rotacione — embrulhar um segredo vazado não desfaz o vazamento.
Mande por DM ao responsável da comunidade o token do bot em /absolute/path/secrets/discord-bot.txt e a exportação de moderação em /absolute/path/reports/export.csv. Leitura única, 1 hora, não abra esses arquivos.
- Anexos exigem
sign_in. Uma nota só de token pode usarcontentFilePathsem sessão. - Amarre o destino do Discord na pré-visualização, aprove e depois
confirm_private_note. Só então uma ferramenta do Discord pode enviar a URL. - Prefira uma DM de usuário a colar no canal de mods. Um „canal privado” ainda é uma transcrição.
- Se a exportação inclui dados pessoais, acrescente um arquivo de passphrase e diga a passphrase ao responsável em uma chamada de voz.
Uso diário: WhatsApp
O WhatsApp é o canal que você usa quando a outra pessoa não entra no Slack e não vai olhar o e-mail até segunda. Um prestador, um assistente de family office, um cliente no celular. A criptografia de ponta a ponta é real. A persistência também: o chat é um registro, muitas vezes em vários dispositivos, muitas vezes com backup.
Você não precisa que instalem a PrivateNote. Precisa que toquem em um link. O trabalho do assistente é preparar esse link a partir de um arquivo local que você já tem — PDF da fatura, senha do Wi-Fi, código de portal de uso único — sem lê-lo antes no fio do Cursor ou do Claude. Você ainda aprova a pré-visualização (arquivo exato e destino do WhatsApp) antes de confirm_private_note criar a URL.
Envie o pacote de onboarding em /absolute/path/client/onboarding.pdf para a Ana no WhatsApp. Queime após a leitura, expire amanhã. Não leia o PDF.
O WhatsApp pré-visualiza URLs. Essa prévia é a página da PrivateNote, não o arquivo descriptografado. Mesmo assim: não coloque a passphrase no mesmo chat. Se o número pode estar errado, crie a nota, envie o link e revogue se ela nunca abriu. Advogados e outros remetentes profissionais que precisam de uma página de revelação com a marca, em vez de uma bolha verde, devem ler entrega segura a clientes para advogados.
Entre quando a carga é um arquivo
Notas só de texto a partir de contentFilePath podem ser criadas sem conta, dentro dos mesmos limites públicos do site. Anexar arquivo é diferente. O MCP precisa chamar sign_in primeiro. Isso abre uma página de aprovação no navegador (a concessão já está na URL — não há código para digitar). Depois que você clica em Approve, o agente chama sign_in de novo com pollDeviceCode. A sessão fica em ~/.config/privatenote/mcp-session.json e é enviada como Authorization: Bearer. Ela não substitui a sessão de cookie do site.
- O agente executa sign_in() — o navegador abre
- Você clica em Approve na página da PrivateNote
- O agente consulta com pollDeviceCode e depois whoami()
- O agente chama create_private_note com caminhos de arquivo (pré-visualização — ainda sem URL)
- Você aprova os arquivos exatos, a expiração e o destino
- O agente chama confirm_private_note e então você (ou outra ferramenta) envia só secureUrl no canal humano
whoami mostra a conta autenticada. sign_out apaga o arquivo de sessão do plugin. Trate esse arquivo como uma credencial desta máquina.
Instale o privatenote-mcp no Cursor, no Claude Desktop ou no Codex. O agente fica com o fluxo; o processo local fica com o segredo.
Abrir o guia de configuração do MCPDepois que o link foi enviado
Uma boa entrega não termina quando a mensagem sai do Slack. Sessões pagas e autenticadas podem tratar a entrega como eventos, não como conteúdo: criada, aberta, expirada, revogada. list_sent_notes devolve ids, status e openedAt — nunca o texto em claro. revoke_sent_note invalida uma nota não aberta. notifyOnOpen envia e-mail à sua conta PrivateNote quando a nota é aberta pela primeira vez; o agente fica sabendo da abertura consultando list_sent_notes. Não há webhook push para o Cursor.
sign_in()
create_private_note({
filePaths: [
"/absolute/path/signed-contract.pdf",
"/absolute/path/customer-export.csv"
],
expiresIn: "24h",
burnAfterReading: true,
requireRecipientVerification: true,
recipientEmail: "john@example.com",
notifyOnOpen: true,
label: "contract-for-john",
sendChannel: "email",
sendRecipient: "john@example.com"
})
# wait for user approval of that exact destination
confirm_private_note({ confirmationId: "<from preview>" })
# email or Slack only secureUrl to John
# later: list_sent_notes() and look for openedAt on that noteIdA verificação do destinatário é um gate de desbloqueio na PrivateNote, não um substituto de enviar a mensagem. Alertas de abertura exigem um e-mail de remetente verificado na conta. Recibos só de status são explicados em saber quando um link secreto foi aberto. Agentes com acesso amplo a ferramentas ainda precisam do modelo de permissões de proteger agentes de IA como funcionários.
A ressalva honesta de privacidade
A afirmação forte — „a IA nunca viu os bytes do arquivo” — vale quando o host honra as instruções de caminho primeiro e você nunca colou a carga no prompt. Ela não significa que o agente não possa ver secureUrl depois da confirmação. Uma chamada normal de ferramenta MCP ainda pode expor os argumentos ao host. Por isso as ferramentas preferem caminhos: o argumento é /Users/you/secrets/db-password.txt, não a senha.
Se você digita create a PrivateNote for sk_live_abc123, um provedor de modelo na nuvem pode processar essa string antes de o MCP rodar. A PrivateNote ainda guarda só texto cifrado, e o Slack ainda recebe só um link. Você melhorou o vazamento a jusante. Não manteve o segredo fora do modelo. Para o máximo de privacidade, deixe os segredos em arquivos (ou use a extensão do VS Code / Cursor para o editor criptografar sem o agente) e diga o caminho ao assistente.
- Não peça ao modelo para „checar o PDF primeiro” nem para resumir. Isso força uma leitura com outra ferramenta.
- Não coloque a passphrase no mesmo Slack, WhatsApp ou e-mail da URL.
- Trate
secureUrlcomo o segredo. O agente pode vê-la no resultado da ferramenta. Não faça commit, não registre e não cole em um canal público do Discord. - Recarregue o cliente MCP depois de atualizar o
privatenote-mcppara instruções e esquemas continuarem atuais. Deixe o one-shot desligado.
Perguntas frequentes
O MCP da PrivateNote envia Slack, Discord, WhatsApp ou e-mail sozinho?
Não. Ele criptografa localmente e devolve uma URL mais metadados. A entrega usa o que você já usa — outro servidor MCP (Gmail, Slack, …) ou você colando o link. Criar uma nota não é permissão para enviá-la. sendAuthorized só é true se você aprovou esse canal e esse destinatário exatos na pré-visualização.
Por que preciso confirmar antes de o link ser criado?
A confirmação amarra os bytes exatos do arquivo, as opções da nota e o destino. Sem ela, um agente que também tem ferramentas de e-mail ou chat poderia criptografar o arquivo errado ou enviar o link certo à pessoa errada em um turno. O modo one-shot pula essa pré-visualização. Deixe desligado, sobretudo se o mesmo host pode enviar mensagens ou arquivos.
O agente pode ver a URL descriptografável?
Sim, no host MCP atual. secureUrl volta no resultado da ferramenta para uma ferramenta de entrega poder enviá-la. O agente ainda não deve ver os bytes do arquivo. Ter a URL pode abrir a nota — trate-a como uma capacidade ao portador, não como „o modelo não consegue acessar o segredo”.
O destinatário precisa instalar alguma coisa?
Não. Ele abre o link completo em um navegador comum. Não é preciso conta PrivateNote para revelar uma nota. Ainda pode precisar de uma passphrase ou verificação por e-mail se você ativou esses gates.
Posso anexar arquivos sem entrar?
Não. Anexo, listar/revogar, verificação do destinatário e avisos de abertura exigem sign_in. Uma nota só de texto a partir de contentFilePath pode ser criada sem sessão, dentro dos limites públicos.
E se o assistente ler o arquivo mesmo assim?
Então o limite de privacidade já se rompeu naquele turno. As instruções MCP dizem aos hosts para não fazer isso. Se o seu cliente as ignora, continue usando a extensão do editor ou o app web, e não aponte o agente para o arquivo. Você ainda pode enviar a URL que a extensão produziu.
O burn-after-read impede capturas de tela?
Não. Quando um destinatário legítimo descriptografa a nota, pode copiar, fotografar ou reenviar. Burn-after-read e expiração reduzem cópias restantes no serviço e no histórico do chat. Não apagam à distância o que alguém já capturou. Para documentos, o acesso só de visualização no Business reduz o download casual; não é uma proibição de fotografar.
Deixe o agente enviar o link. Mantenha o arquivo fora do modelo.
Instale o privatenote-mcp, aponte-o para caminhos locais e continue usando e-mail, Slack, Discord e WhatsApp como envelopes — não como cofres. Deixe o one-shot desligado se o mesmo host pode enviar mensagens ou arquivos.