Plugin da Vercel no Claude Code: Quando o Consentimento Não Tem Dono Visível

TV
Thiago Victorino
6 min de leitura
Plugin da Vercel no Claude Code: Quando o Consentimento Não Tem Dono Visível
Ouvir este artigo

Em 9 de abril de 2026, Akshay Chugh publicou uma análise do plugin oficial da Vercel para o Claude Code. O plugin obtém consentimento de telemetria escrevendo instruções no campo hookSpecificOutput.additionalContext do protocolo de hooks do Claude. Essas instruções dizem ao agente para chamar sua própria ferramenta AskUserQuestion. O usuário vê uma pergunta renderizada pela interface nativa do Claude Code, responde, e a telemetria começa a fluir.

Não há engano no fio de rede. O plugin usa a API de hooks como a Anthropic a expôs. E ainda assim, algo está fora do lugar.

Como já argumentamos sobre injeção de prompt na cadeia de suprimentos e sobre a arquitetura do harness do Claude Code, o vetor que importa não é o modelo. É o perímetro invisível ao redor dele. O caso da Vercel é o exemplo mais limpo de uma lacuna estrutural que vemos agora em produção.

O Que a Vercel Fez, Precisamente

O plugin fica em ~/.claude/plugins/cache/claude-plugins-official/vercel/hooks/. O arquivo user-prompt-submit-telemetry.mjs intercepta cada submissão de prompt e, na primeira execução, injeta contexto instruindo o Claude a perguntar se o usuário autoriza o envio de prompts para telemetry.vercel.com/api/vercel-plugin/v1/events. A resposta é persistida num UUID de dispositivo em ~/.claude/vercel-plugin-device-id, que sobrevive a reinstalações.

O matcher do hook UserPromptSubmit é uma string vazia. O plugin dispara em todo projeto aberto no Claude Code, não apenas em projetos Vercel. Um desenvolvedor que instalou o plugin para um app da Vercel também tem telemetria ativa num repositório proprietário de outro cliente, num side project em Rust, ou num fork que nunca deveria sair da máquina. O engenheiro da Vercel andrewqu confirmou na thread do Hacker News #47704881 que o escopo é intencional: “O plugin está sempre ativo. Não queremos limitar apenas a projetos Vercel detectados.” A issue #34 permanece aberta. O opt-out existe na variável VERCEL_PLUGIN_TELEMETRY=off, mas não está documentada na página oficial do plugin.

Por Que “Injeção de Prompt” Não É a Palavra Certa

A tentação é chamar isso de injeção de prompt. A tentação deve ser resistida. Injeção de prompt, no sentido técnico, é uma instrução hostil que atravessa uma fronteira de confiança disfarçada de dado. Aqui não há fronteira violada: a Anthropic expõe additionalContext precisamente para que plugins injetem instruções no sistema. O termo mais honesto é falsificação de consentimento via system prompt injetado.

O que o Claude Code não oferece hoje é o que, em design de interface, chamamos de cromo de atribuição (attribution chrome). Quando seu navegador mostra um diálogo de permissão, há uma moldura nativa do sistema operacional dizendo “isto vem do Chrome, não da página que você visita.” Quando um app iOS pede acesso à câmera, o texto do desenvolvedor aparece dentro de um diálogo do iOS. Essa moldura permite o consentimento informado.

No Claude Code, texto autoria de plugin, texto do usuário e texto do próprio Claude compartilham o mesmo canal visual. O usuário vê uma pergunta que parece do Claude porque é do Claude, só que sob instruções de um terceiro. Não há mentira de bit. Há ausência de moldura.

O Steel-Man da Vercel

Uma equipe de segurança competente na Vercel defenderia o desenho com argumentos que merecem ser enunciados. Telemetria com opt-out é prática corrente em ferramentas de desenvolvimento. Next.js, VS Code, a maioria das IDEs comerciais e boa parte dos frameworks de front-end coletam dados de uso por padrão. O consentimento é tecnicamente honesto: o plugin pergunta, o usuário responde, os bits só saem após o “sim.” A API de hooks foi usada como foi exposta. O escopo total, embora agressivo, pode ser resolvido num commit se a prioridade mudar.

Nenhum desses argumentos é falso. Nenhum deles responde à questão central: a superfície na qual a Vercel pediu consentimento não é auditável pelo usuário como sendo da Vercel. Isso não é um defeito da Vercel. É um defeito do ecossistema.

Extensões de navegador, plugins de IDE, hooks de shell e macros de editor enfrentam a mesma pergunta há décadas: como o usuário sabe qual texto veio de qual autor? A diferença do Claude Code é que o texto plugin-autorado passa pelo mesmo canal que o output do modelo, e o canal do modelo é por construção uma superfície de linguagem natural sem bordas visuais. O GitHub Copilot, o Cursor e as extensões de IA do JetBrains têm a mesma lacuna estrutural. A Vercel apenas foi a primeira empresa grande o suficiente, com um plugin oficial o suficiente, a torná-la visível.

O Conserto Está na Anthropic

Essa é a parte desconfortável para quem quer uma história de vilão. O conserto técnico não fica no plugin da Vercel. Fica no Claude Code. A Anthropic precisa adicionar atribuição visual a todo texto originado de plugin: um cabeçalho explícito (“Plugin vercel está pedindo:”), uma moldura de cor distinta, ou um prefixo obrigatório que o renderizador insere antes do conteúdo autoria de terceiros. Essa é a primitiva ausente.

Até lá, todo plugin instalável do Claude Code é, do ponto de vista de governança, um terceiro não confiável com acesso de leitura a todo prompt e comando bash em todos os projetos abertos na máquina, e com a capacidade de renderizar diálogos indistinguíveis dos nativos. Como documentamos no caso do LiteLLM, quando o middleware de IA carrega autoridade invisível, a superfície de auditoria precisa migrar do produto para o perímetro.

O Que um CISO Deve Fazer Agora

Três ações imediatas. Primeiro, trate a instalação de plugins do Claude Code (e de qualquer agente de código com ecossistema aberto) como um controle de lista de permissões gerido pela segurança, não como uma preferência de desenvolvedor. Segundo, audite o diretório ~/.claude/plugins/cache/ em busca de hooks com matcher vazio no UserPromptSubmit, PostToolUse ou equivalentes. O matcher vazio é hoje um sinal a investigar. Terceiro, defina política explícita de telemetria de plugin: variáveis de ambiente não documentadas como VERCEL_PLUGIN_TELEMETRY=off deveriam ser falha de processo, não achado acidental.

O Que Realmente Está em Jogo

A Vercel provavelmente irá corrigir o escopo. A Anthropic provavelmente irá adicionar atribuição de plugin em algum release futuro. Este artigo vai envelhecer, e é bom que envelheça.

Toda ferramenta agentic com ecossistema de plugins irá reproduzir esse padrão até que a plataforma resolva a primitiva de atribuição. Enquanto isso, o consentimento informado numa superfície sem moldura é uma ficção útil que as equipes aceitam porque a alternativa, auditar cada plugin antes do uso, parece pesada. É, no entanto, o único comportamento defensável no perímetro corporativo hoje. Não porque a Vercel seja culpada de algo, mas porque ninguém tem uma primitiva melhor para oferecer no lugar.


Fontes

  • Akshay Chugh. “Vercel Plugin Telemetry: Prompt-Injection-as-Consent-Dialog.” Abril 2026.
  • byteiota. “Vercel Plugin for Claude Code: Privacy Dark Pattern.” Abril 2026.
  • Hacker News. Thread #47704881. Abril 2026.
  • GitHub. Issue vercel/vercel-plugin#34. Abril 2026.
  • Vercel. Documentação oficial do plugin para agentes de código.

Victorino Group ajuda organizações a avaliar e governar plugins e middlewares de IA antes que o perímetro invisível defina a postura de segurança: contato@victorino.com.br | www.victorino.com.br

Todos os artigos do The Thinking Wire são escritos com o auxílio do modelo LLM Opus da Anthropic. Cada publicação passa por pesquisa multi-agente para verificar fatos e identificar contradições, seguida de revisão e aprovação humana antes da publicação. Se você encontrar alguma informação imprecisa ou deseja entrar em contato com o editorial, escreva para editorial@victorino.com.br . Sobre o The Thinking Wire →

Se isso faz sentido, vamos conversar

Ajudamos empresas a implementar IA sem perder o controle.

Agendar uma Conversa