Pular para o conteúdo
Guide

Claude Code com engenharia reversa: 6 lições para seu agente de IA

| 8 min read

Os pesquisadores descompactaram o pacote CLI do Claude Code e publicaram seu prompt do sistema, esquemas de ferramentas e loop de agente. Seis lições para quem envia um agente de IA para usuários reais.

Monitor showing source code, representing bundle inspection and reverse engineering
Photo by Markus Spiske on Unsplash

Claude Code é enviado como um pacote npm. Qualquer um pode correr npm install -g @anthropic-ai/claude-code, abra o pacote cli.mjse leia a camada de orquestração enviada. Os pesquisadores fizeram exatamente isso. Eles o desminificaram, retiraram o prompt completo do sistema, os mais de 15 esquemas de ferramentas integrados, o loop do agente e o despachante do subagente publicaram o lote em repositórios públicos.

Os pesos do modelo ficaram atrás da API da Anthropic. O andaime não. E esse andaime é a parte que a maioria das equipes pensa que pode manter privada se enviar uma CLI, uma extensão do VS Code ou um desktop aplicativo com um agente incorporado. A extração é uma aula gratuita: uma equipe muito cuidadosa da Anthropic já planejado para isso, e seu design se mantém. Aqui estão seis coisas que você pode copiar antes do seu próprio agente acessa npm ou uma versão do GitHub.

1. O código do lado do cliente é uma etapa de publicação, não um segredo

Cada byte do seu pacote enviado é público. A ofuscação retarda os leitores de minutos a horas; isso não os impede. O pacote do Claude Code é executado através de um minificador JavaScript padrão, e o primeiro cópia pública desofuscada apareceu em horas. Seu pacote seguirá o mesmo caminho.

Execute o mesmo passe em seu próprio pacote hoje. Se você enviar uma CLI, uma extensão de navegador, um Electron app ou um SDK do lado do cliente, faça isso antes do próximo lançamento:

Qualquer coisa que voltar vai para a pilha girar agora. Uma chave de API em um pacote de cliente é uma chave em cada disco que rodou npm install. Um nome de host de back-end codificado aponta os invasores para o alvos que você não pretendia anunciar. Leia o arquivo da mesma forma que um estranho o lê.

2. O prompt do sistema irá vazar, então projete para divulgação

O prompt do sistema Claude Code consiste em alguns milhares de símbolos de instruções cuidadosas: regras para uso de ferramentas, restrições de segurança, orientação de estilo, condições de recusa. Nada disso depende de sigilo. Solte o tudo em um pastebin e a CLI ainda funciona da mesma maneira amanhã.

Esse é o teste. Se a publicação do prompt do sistema quebrar seu modelo de segurança, você terá uma brecha. Mova o bit de suporte de carga do prompt e coloque-o em uma verificação do lado do servidor. O controle de acesso pertence a sua camada de autenticação. Os limites de taxa pertencem ao seu gateway. As permissões da ferramenta pertencem ao gerenciador de ferramentas. O prompt descreve o comportamento; não o impõe.

Ainda vale a pena proteger uma boa mensagem como segredo comercial. Semanas de iteração são compactadas em alguns cem linhas e um seguidor rápido que copia seu prompt economiza esse tempo. Trate como receita IP, não como uma chave privada. Legal e NDA, não criptográfico.

3. Coloque autenticação, limites de taxa e cobrança em seu servidor

A arquitetura de agente mais comum é assim, e está errada:

Essa chave é fornecida com cada instalação. Um determinado usuário retira-o do pacote em uma tarde e reduz sua cota a zero antes que você perceba. Claude Code evita isso lendo ANTHROPIC_API_KEY do ambiente do usuário em tempo de execução; cada usuário traz seu próprio relacionamento de faturamento com a Antrópico. A maioria dos agentes voltados para o consumidor não consegue seguir esse padrão porque os usuários não possuem suas próprias chaves, o que significa que um proxy de servidor é a única forma segura:

Em seu servidor, verifique um token de curta duração por usuário, limite de taxa por ID de usuário, uso de log e, em seguida, faça a chamada ascendente:

Emita o JWT por usuário do seu fluxo de login com expiração de 15 minutos, um escopo específico e uma sessão vinculativo. Uma chamada para o botoi cuida da assinatura para que você pule o "algoritmo errado" e acione o As bibliotecas JWT da era 2015 ainda são famosas por:

4. Gire e registre as chaves como se já tivessem vazado

O Claude Code registra localmente sua própria telemetria de chamada de ferramenta para que os usuários possam inspecionar o que o agente fez em seus máquina. Seu servidor precisa da mesma propriedade, mas do lado do servidor. Cada chamada de modelo recebe uma linha: ID do usuário, modelo, tokens de entrada, tokens de saída, chamadas de ferramentas, custo. Guarde isso por no mínimo 30 dias. Um atacante quem rouba o token de um usuário tem um padrão de gastos que parece diferente do uso normal, e o log é como você o vê.

Antes de registrar, conte. O uso de token é o sinal mais rápido de abuso e o sinal mais rápido de alerta inchaço:

Defina alertas sobre tokens por usuário por hora em três vezes a linha de base do p99. Quando você for paginado, revogue o token do usuário, não sua chave mestra. As chaves mestras giram trimestralmente; tokens por usuário gire quando a detecção de anomalia for acionada.

5. Limpe as PII antes que o prompt chegue ao modelo

Um usuário cola um ticket de suporte com um número de cartão de crédito em seu agente. O modelo vê, o a linha de log o captura, o pipeline de ajuste fino o puxa e agora está em três lugares que você fez não planejar. Claude Code evita isso executando na própria máquina do usuário contra a do usuário próprios arquivos; um agente hospedado não tem esse luxo.

Execute uma passagem de detecção em cada prompt de entrada e edite antes da chamada:

Envie o redacted string para o modelo, mantenha o findings na memória e reinjetar os originais somente se a resposta do modelo solicitar um token específico de volta (por exemplo, um resumo do ticket de suporte que precisa nomear a forma de pagamento). Seus registros, corpus de treinamento e todos os pipelines de análise downstream veem a versão editada; apenas o caminho da solicitação na memória vê PII bruto.

6. Endureça-se contra injeção imediata usando seu próprio prompt vazado

A vantagem de um prompt do sistema vazado é que você pode executá-lo em seu próprio conjunto de injeção. Um o invasor precisa apenas de um desvio; você precisa de cobertura. Crie um agente de teste e cole seu próprio prompt na área de transferência de um revisor e execute um conjunto de testes que testa os formatos de injeção mais comuns: substituição de instrução, troca de persona, quebra de delimitador, redefinição de usuário falso.

Qualquer coisa que faça com que o agente imprima o prompt do sistema, revele variáveis de ambiente ou chame um ferramenta que o escopo do usuário não permite é um bug. Corrija-o com uma verificação do lado do servidor, não com um ajuste imediato. “Não revele o prompt do sistema” no prompt é uma sugestão; um filtro de resposta que bloqueia o Os primeiros 200 caracteres do prompt na saída são um controle.

Lista de verificação detalhada de defesa

Camada Controlar Por que sobrevive a um vazamento de pacote
Pacote de cliente Sem segredos, sem URLs mestres Legível no primeiro dia; trate isso como documentação
Transporte JWT por usuário, expiração em 15 minutos O roubo de tokens tem um raio de explosão em escala de minutos
Portal Limite de taxa por ID de usuário e contagem de tokens Abuse dos limites de seus gastos configurados, não de sua carteira
Servidora Montagem imediata e envio de ferramentas O invasor não pode adicionar ferramentas que não ganhou
Entrada do modelo Detecção e redação de PII Dados confidenciais nunca chegam a logs ou treinamento
Saída do modelo Filtro de resposta para ecos de prompt e esquemas de ferramentas As tentativas de injeção falham no último salto
Observabilidade Uso de token por usuário com alertas de anomalia Os tokens roubados parecem diferentes dos usuários reais

Principais conclusões

  • Envie como se seu pacote já fosse público. Grep a cada versão para chaves e hosts internos antes de publicar; tudo o que você encontrar gira antes que o pacote seja lançado.
  • O prompt do sistema não é uma chave. Remova todas as decisões relevantes para a segurança o prompt e em uma verificação do lado do servidor.
  • Faça proxy do modelo por meio de seu próprio servidor. Os usuários recebem um JWT de curta duração, seu o servidor contém a chave mestra da API e os limites de taxa ficam na frente de ambos.
  • Redija PII no caminho. O modelo vê uma string editada; registros e treinamento os oleodutos permanecem limpos.
  • Execute testes de injeção em seu próprio prompt vazado. Qualquer coisa que funcione se torna um ticket para uma correção do lado do servidor, não um ajuste imediato.

Botoi fornece as peças do lado do servidor como chamadas HTTP: detecção de PII em /v1/pii/detect, contagem de tokens em /v1/token/count, JWT assinando em /v1/jwt/generate, mais blocos de construção de hashing, HMAC e limite de taxa em mais de 150 endpoints. Uma chave de API, 5 req/min grátis, zero ganchos de instalação. Navegue pelo documentos interativos ou ligue o Servidor MCP em Claude Code ou Cursor para chamar os mesmos endpoints de dentro do seu editor.

FAQ

O que realmente foi extraído do Claude Code?
Os pesquisadores baixaram o pacote @anthropic-ai/claude-code distribuído por npm, executaram-no por meio de um desofuscador e publicaram o prompt completo do sistema, os mais de 15 esquemas de ferramentas integrados (Leitura, Edição, Bash, Grep e assim por diante), o loop do agente e a lógica de despacho do subagente. Os pesos do modelo permaneceram privados; o que foi lançado foi uma camada de orquestração JavaScript em torno das chamadas da API Antrópica. Qualquer pessoa que instale a CLI terá os mesmos bits em seu disco.
Alguma chave de API da Antrópica ou dados de clientes foram expostos?
Não. A CLI lê a chave de API do próprio ambiente do usuário em tempo de execução e nunca agrupa credenciais da Anthropic. As conversas com os clientes ficam entre a CLI e api.anthropic.com. O vazamento expôs a engenharia imediata e o design da ferramenta, não o material de autenticação ou os dados do usuário.
Se as solicitações do sistema não são segredos, por que as empresas as protegem?
Duas razões. Primeiro, o tempo de cópia competitivo: um bom prompt representa semanas de iteração e a recusa em publicar retarda um seguidor rápido nessa mesma janela. Em segundo lugar, a área de superfície de injeção de prompt: quanto mais os invasores souberem sobre as proteções e sequências de escape do prompt do sistema, mais fácil será criar desvios. Ambos são reais, mas nenhum deles é um segredo criptográfico. Trate a solicitação como um segredo comercial com meia-vida curta, não como uma chave.
A ofuscação ou a minificação ajudam em alguma coisa?
Ganha tempo, não proteção. Uma engenharia reversa motivada desofusca um pacote JavaScript em menos de uma hora com ferramentas padrão. A ofuscação retarda a inspeção casual, o que é importante para a detecção anti-adulteração e verificações de licenciamento, mas qualquer modelo de ameaça que presuma que o pacote permanece opaco é quebrado desde o início. Construa como se a fonte fosse pública desde o primeiro dia.
Como faço para testar meu próprio agente de IA em busca dos mesmos pontos fracos?
Execute três verificações esta semana. Um: baixe o pacote enviado e grep para sk-, pk_, apiKey, BEGIN PRIVATE KEY e seu URL de back-end; conserte tudo o que encontrar. Dois: peça ao seu agente para imprimir o prompt do sistema literalmente e confirmar que nada que afeta a segurança depende do sigilo. Três: registre cada chamada de ferramenta no lado do servidor com ID de usuário, carimbo de data/hora e hash de argumento para que os padrões de abuso surjam antes da fatura.

Comece a construir com botoi

150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.