Voltar às atualizações
New releaseJul 28, 2026

deptrust v0.14.0

Servidor CLI e MCP que verifica versões de pacotes em busca de vulnerabilidades conhecidas em mais de 14 ecossistemas, incluindo npm, PyPI, crates.io, módulos Go e GitHub Actions. Integra-se com agentes de IA por meio de hooks e skills.

Compartilhar

deptrust

     __           __                  __
 ___/ /___  ___  / /________  _______/ /_
/ _  / __ \/ _ \/ __/ ___/ / / / ___/ __/
/  __/ /_/ /  __/ /_/ /  / /_/ (__  ) /_
\__,_/\____/ .___/\__/_/   \__,_/____/\__/
           /_/

O deptrust é um CLI que verifica versões de pacotes quanto a vulnerabilidades conhecidas em npm, PyPI, crates.io, módulos Go, RubyGems, NuGet, Maven, Packagist, pub.dev, CocoaPods, Hex.pm, Hackage, GitHub Actions e outros.

Ele é executado localmente como CLI e como servidor MCP. Ele chama diretamente as APIs públicas de registros de pacotes e da OSV; não existe um serviço deptrust hospedado em que confiar ou que configurar.

Esta ferramenta nasceu da frustração que são agentes de IA usando constantemente versões antigas.

Conteúdo

Escopo

Ecossistemas suportados:

  • npm, incluindo pacotes com escopo como @clidey/ux
  • PyPI
  • Cargo / crates.io
  • módulos Go
  • RubyGems
  • NuGet
  • Maven, usando nomes de pacote groupId:artifactId
  • Packagist / Composer, usando nomes de pacote vendor/package
  • pub.dev
  • CocoaPods
  • Hex.pm
  • Hackage
  • GitHub Actions, usando nomes de pacote owner/repo e tags, referências de branch ou SHAs de commit como versões

O deptrust atualmente reporta vulnerabilidades conhecidas e dá uma recomendação simples:

Maior gravidade conhecidaRecomendação
criticalblock
highblock
medium / unknownreview
lowallow
none foundallow

allow significa que nenhuma vulnerabilidade conhecida bloqueante foi encontrada nas fontes de dados públicas. Isso não prova que um pacote é seguro.

O deptrust também emite sinais de risco que não são CVEs. Por exemplo, uma versão publicada nas últimas 72 horas é marcada para revisão para que um agente não instale cegamente uma versão recém-lançada.

Os provedores de avisos são consultados em paralelo:

  • OSV
  • GitHub Advisory Database, incluindo avisos revisados e avisos de malware

A cobertura dos provedores varia por ecossistema. Se o deptrust conseguir resolver os metadados do registro, mas nenhum provedor de vulnerabilidades configurado for compatível com aquele ecossistema, ele retorna unknown em vez de tratar o pacote como seguro.

Cobertura dos provedores:

EcossistemaMetadados do registroOSVGitHub Advisory DB
npmsimsimsim
PyPIsimsimsim
Cargo / crates.iosimsimsim
módulos Gosimsimsim
RubyGemssimsimsim
NuGetsimsimsim
Mavensimsimsim
Packagist / Composersimsimsim
pub.devsimsimsim
CocoaPodssimnãosim
Hex.pmsimsimsim
Hackagesimsimnão
GitHub Actionssimsimsim

A saída JSON inclui campos de cobertura de avisos:

  • checked_providers: provedores de vulnerabilidade que o deptrust realmente consultou
  • skipped_providers: provedores configurados ignorados porque o ecossistema não é suportado
  • advisory_coverage: full, partial, none ou error
  • advisory_coverage_reason: breve explicação para o valor de cobertura
  • registry_verification: verified quando os metadados do registro confirmaram a versão, ou unverified quando uma verificação de versão exata continuou após uma falha transitória do registro
  • registry_verification_reason: o erro do registro quando a verificação não estava disponível

Uma verificação de versão exata ainda consulta os provedores de avisos quando a verificação do registro está temporariamente indisponível. Esse resultado é sempre não instalável e nunca recebe uma recomendação allow. Verificações de latest, de pacotes desconhecidos e de versões definitivamente inexistentes ainda exigem resolução bem-sucedida do registro.

Requisições HTTP repetem respostas 429, 502, 503 e 504 em até três tentativas no total. As novas tentativas usam atrasos exponenciais curtos e respeitam valores Retry-After de até dois segundos; esperas mais longas solicitadas pelo servidor falham rapidamente para que o CLI não trave. Tentativas de avisos esgotadas tornam o resultado incompleto e impedem uma recomendação allow.

Autenticação da API do GitHub

Requisições ao GitHub Advisory Database e à API do GitHub Actions podem usar um token de GitHub App de curta duração e privilégio mínimo. Em CI, passe-o via DEPTRUST_GITHUB_TOKEN:

DEPTRUST_GITHUB_TOKEN="$GITHUB_APP_TOKEN" deptrust check npm lodash 4.17.20

A precedência de credenciais é DEPTRUST_GITHUB_TOKEN, GITHUB_TOKEN e depois GH_TOKEN. Para uso local, o fallback opcional da CLI do GitHub é ativado explicitamente com DEPTRUST_GITHUB_AUTH=gh deptrust check ...; ele executa gh auth token sem solicitar entrada. Se nenhuma credencial estiver disponível, o DepTrust continua sem autenticação. Uma falha de limite de taxa ou de permissão da API do GitHub produz unknown com diagnósticos e nunca é tratada como sucesso somente via OSV.

O DepTrust nunca armazena, agrupa, cacheia, registra em log, telemetra ou emite tokens do GitHub. Os cabeçalhos de autenticação são enviados somente para https://api.github.com.

Uso do CLI

Verifique uma versão exata:

deptrust check npm lodash 4.17.20

Exemplo de resposta normal:

npm [email protected]: 2 known vulnerabilities found
recommendation: block
risk_score: 80

Verifique a versão mais recente:

deptrust check pypi requests latest

Retorne JSON:

deptrust check --json cargo serde latest

Verifique um módulo Go:

deptrust check go golang.org/x/crypto latest

Verifique RubyGems, NuGet ou Maven:

deptrust check rubygems rails latest
deptrust check nuget Newtonsoft.Json latest
deptrust check maven org.apache.logging.log4j:log4j-core latest

Verifique Packagist, pub.dev, CocoaPods, Hex.pm, Hackage ou GitHub Actions:

deptrust check packagist monolog/monolog latest
deptrust check pub http latest
deptrust check cocoapods AFNetworking latest
deptrust check hex plug latest
deptrust check hackage aeson latest
deptrust check github-actions actions/checkout v7.0.0
deptrust check github-actions actions/checkout main

Para GitHub Actions, SHAs completos de commit são tratados como fixados (pinned). Tags semver completas como v4.2.2 são aceitas sem um sinal extra de fixação. Tags apenas com a major como v4 e referências de branch como main são refs válidas, mas o deptrust adiciona um sinal de revisão porque elas podem mudar.

Exemplo de resposta JSON:

Categorias