L'agent de sécurité indépendant pour les logiciels écrits par IA. Il détecte les problèmes, vérifie s'ils sont réels et vous montre les preuves. Cœur déterministe, aucune clé API requise, sortie JSON et SARIF.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="Logo Ship Safe" width="180" />
</p>
<p align="center"><strong>L'agent de sécurité indépendant pour les logiciels écrits par IA. Il détecte les problèmes, vérifie s'ils sont réels et vous montre les preuves.</strong></p>
<p align="center"><a href="https://shipsafe.sh">Site web</a> · <a href="https://shipsafe.sh/docs">Documentation</a> · <a href="https://shipsafe.sh/security">Sécurité et flux de données</a> · <a href="https://shipsafe.sh/benchmarks">Benchmark</a> · <a href="https://shipsafe.sh/pricing">Tarifs</a> · <a href="https://shipsafe.sh/blog">Blog</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">Contribuer</a></p>
<p align="center">
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://badge.fury.io/js/ship-safe.svg" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://img.shields.io/npm/dm/ship-safe.svg" alt="npm downloads" /></a>
<a href="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml"><img src="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
<a href="https://github.com/asamassekou10/ship-safe/stargazers"><img src="https://img.shields.io/github/stars/asamassekou10/ship-safe?style=social" alt="GitHub stars" /></a>
<a href="https://github.com/sponsors/asamassekou10"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github" alt="Sponsor" /></a>
</p>
## Ship Safe CLI
Ship Safe s'exécute localement dans votre dépôt et fonctionne en deux couches.
Un **moteur déterministe** détecte les problèmes dans le code applicatif, les agents IA, les configurations MCP, les prompts, les dépendances, la CI/CD, les secrets et la configuration liée au cloud. Rapide, reproductible et benchmarké — c'est la couche de capteurs.
Une **couche d'investigation** décide ensuite de la valeur des résultats. Elle trace la valeur qui atteint un sink, recherche dans le projet les contrôles qu'une règle déclare manquants, construit des chaînes d'attaque à travers une configuration qu'aucun fichier seul ne contient et — lorsque vous le demandez — teste une clé divulguée auprès de son fournisseur. Chaque conclusion porte la passe qui y a conduit et les lignes qu'elle a lues :
```
CONFIRMED — traced end to end (10)
NoSQL Injection via $where [high]
app/data/allocations-dao.js:78 NOSQL_INJECTION_WHERE
why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
decided by: dataflow
1. value reaches NOSQL_INJECTION_WHERE here app/data/allocations-dao.js:78
2. getByUserIdAndThreshold is called here with threshold app/routes/allocations.js:23
3. threshold is assigned here app/routes/allocations.js:20
fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)
```
<sub>Sortie réelle de <code>ship-safe investigate</code> sur OWASP NodeGoat. La valeur contaminée est déstructurée dans un fichier de route et transmise à un DAO situé trois répertoires plus loin.</sub>
Commencez par une seule commande :
```bash
npx ship-safe
```
Aucune inscription. Aucune clé API requise pour l'analyse. Fonctionne hors ligne pour les vérifications de base. Les modes red-team assistés par IA utilisent votre fournisseur configuré lorsqu'il est disponible.
Utilisez `--no-ai` pour garantir une analyse entièrement locale. La classification via fournisseur, l'analyse approfondie et GPT-Red envoient un contexte limité directement au fournisseur que vous avez sélectionné après un masquage des identifiants au mieux. Consultez [Sécurité et flux de données](https://shipsafe.sh/security) pour connaître les limites exactes et les limites de contexte.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="Démo du REPL Ship Safe" width="800" />
</p>
---
## Démarrage rapide
Nécessite Node.js 22.13+ sur la branche 22.x, ou Node.js 24+. Node 18 et 20
ne sont plus pris en charge par la version de développement actuelle.
```bash
# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe
# Full audit: secrets + 31 agents + deps + remediation plan
npx ship-safe audit .
# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all # also detail unresolved and refuted
npx ship-safe investigate . --verify # probe leaked keys against their providers
# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json
# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .
# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red
# Interactive fix agent: plan, diff, approve, inspect the static rescan
npx ship-safe agent .
npx ship-safe agent . --severity critical # critical findings only
npx ship-safe agent . --branch --pr # fix on a branch + open a PR
# Undo the last fix
npx ship-safe undo
# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # stricter: critical or high
# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted # do not block on what was argued away
```
Pour les pull requests, comparez un scan de base de confiance avec le scan de la tête afin que la dette existante du dépôt reste visible sans bloquer les changements non liés :
```bash
# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
--write-baseline-report /tmp/ship-safe-base.json
# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high
```
L'artefact de base contient des identités de constatations hachées, des chemins relatifs et des métadonnées de règles. Il ne stocke pas les secrets bruts correspondants. Les résultats de PR classent les constatations comme introduites, résolues, inchangées ou incertaines ; les correspondances ambiguës sont affichées mais ne bloquent pas la pull request.
### Contrat de rapport lisible par machine
`scan --json`, `audit --json` et `ci --json` incluent `schemaVersion: 1`, la version de Ship Safe et un horodatage UTC `generatedAt`. Les chemins des constatations sont relatifs au projet par défaut afin que les rapports puissent circuler entre postes de travail et CI sans divulguer les noms de répertoires locaux. N'utilisez `--absolute-paths` que lorsqu'un consommateur a explicitement besoin des chemins de l'hôte. Les rapports SARIF portent la même version de paquet dans leurs métadonnées d'outil.
## Ce que Ship Safe détecte
| Domaine | Exemples |
|------|----------|
| Sécurité IA et LLM | Injection de prompt, détournement d'agent, agencéité excessive, empoisonnement de mémoire, empoisonnement RAG, appels d'outils non sûrs |
| Configurations MCP et d'agents | Permissions d'outils trop larges, registres empoisonnés, transports non fiables, listes d'autorisation dangereuses |
| Sécurité applicative | Injection SQL/NoSQL, XSS, SSRF, contournement d'authentification, traversée de chemin, routes d'API non sécurisées |
| Secrets et conformité | Clés d'API, jetons, identifiants, PII, secrets divulgués dans l'historique git |
| Chaîne d'approvisionnement | Typosquatting, confusion de dépendances, scripts d'installation risqués, actions IA non épinglées |
| CI/CD | Empoisonnement de pipeline, GitHub Actions non épinglées, journalisation de secrets, déclencheurs de workflow non sûrs |
## Comment ça fonctionne
1. **Scanner localement** - Ship Safe inspecte votre dépôt avec des agents ciblés et ignore les vérifications qui ne s'appliquent pas.
2. **Examiner chaque constatation** - Des passes distinctes déterminent si elle est réelle, classées de sorte qu'une passe moins coûteuse n'invalide jamais une plus coûteuse : un chemin de données tracé prime sur la lecture d'un modèle du même fichier, et une sonde authentifiée prime sur les deux.
3. **Lire les preuves** - Les constatations aboutissent à confirmée, probable, non résolue ou réfutée, chacune citant les lignes sur lesquelles elle se fonde, afin que vous puissiez contester une étape plutôt qu'une étiquette de sévérité.
4. **Corriger avec contrôle** - L'agent propose un plan et un diff, demande avant d'écrire, rapporte les preuves d'un rescan statique et maintient les modifications réversibles. La disparition d'un détecteur ne constitue pas un retest indépendant ; voir [résultats de correction](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md).
5. **Filtrer en CI** - Utilisez `ship-safe ci` pour faire échouer les builds risqués et téléverser le SARIF dans le code scanning de GitHub.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="Démo de l'agent Ship Safe" width="800" />
</p>
---
## « Pourquoi ne pas simplement demander à mon agent de codage de relire le dépôt ? »
Vous pouvez, et vous devriez. Il trouvera de vraies choses. Mais il y a trois questions auxquelles il ne peut structurellement pas répondre au sujet de son propre travail.
**L'agent qui a écrit ce code s'est-il simplement noté lui-même ?** Demander à l'auteur s'il a commis une erreur n'est pas une revue. Ship Safe est un réviseur distinct avec une méthode distincte, et il se contredit en public — une trace de flux de données invalide la passe heuristique, et une sonde en direct invalide les deux.
**Peut-il voir ce qu'il peut atteindre ?** Un agent de codage qui relit votre dépôt ne peut pas lire la configuration de votre serveur MCP, ne peut pas énumérer les permissions avec lesquelles il a été lancé, et est l'acteur dont la portée est en question. `ship-safe capabilities` lit tout cela de l'extérieur et signale les combinaisons qui sont dangereuses ensemble alors qu'elles sont anodines séparément :
```
CRITICAL Repository-controlled instructions reach an unattended write capability
1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
CLAUDE.md:1
2. Claude Code runs without per-action approval
.claude/settings.json:2
3. shell execute granted: Bash(git push:*)
.claude/settings.json:3
4. filesystem write granted: Write
.claude/settings.json:3
5. mcp-tool write granted: mcp__github__create_pull_request
.claude/settings.json:3
Impact: Text committed to this repository can direct the agent to write files
or run commands with no human in the loop.
Boundary: Require approval for write and execute tools during sessions on
untrusted branches, or remove the pre-granted entries.
```
Chacune de ces lignes est anodine prise isolément. Ensemble, elles forment un chemin allant d'une pull request à une écriture privilégiée, et aucune revue fichier par fichier ne peut le voir, car aucun fichier seul ne le contient.
**Est-ce cohérent, et pouvez-vous prouver que cela s'est amélioré ?** Posez la question deux fois, obtenez deux réponses. Le moteur de Ship Safe est déterministe, et ses conclusions sont validées en CI par un benchmark qui évalue la *qualité des conclusions*, et non la couverture des motifs : combien de findings réellement avérés il tranche, combien de bruit connu il réfute, et s'il lui arrive de réfuter quelque chose de réel. Le budget de ce dernier chiffre est zéro — c'est la seule classe d'erreur qui fait perdre une vulnérabilité en silence. Voir [benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks).
## Pourquoi les développeurs l'utilisent
- **Conçu pour les applications natives de l'IA** : détecte les risques dans les agents, les serveurs MCP, les prompts, les flux RAG, les configurations d'agents gérés et les CI propulsées par l'IA.
- **Compatible avec les clients IA** : exposez Ship Safe à Codex, Claude Desktop, Cursor, Windsurf et d'autres clients MCP via le serveur stdio local.
- **Retour local rapide** : exécutez-le avant une PR, pendant la revue ou dans la CI sans envoyer de code à un scanner hébergé.
- **Des correctifs vérifiables** : chaque modification suggérée est affichée sous forme de diff avant de toucher à vos fichiers.
- **Compatible avec votre stack** : JavaScript, TypeScript, Python, fichiers de configuration, fichiers d'infrastructure, GitHub Actions, et plus encore.
- **Cœur open source** : CLI sous licence MIT avec documentation, exemples et un système d'agents en pleine croissance.
## CLI gratuite, workflows d'équipe payants
La CLI open source est le moyen le plus rapide de scanner n'importe quel dépôt localement. Passez à une offre supérieure lorsque vous avez besoin d'un workflow hébergé autour du même scanner :
| Besoin | Utilisation |
|------|-----|
| Scans locaux, audits et correctifs assistés par agents | CLI gratuite |
| Historique des scans, tableau de bord cloud et rapports PDF | Pro |
| Espace de travail partagé, PR Guardian, rapports d'équipe et collaboration | Team |
Comparez les offres sur [shipsafe.sh/pricing](https://shipsafe.sh/pricing).
Ship Safe Cloud, le tableau de bord hébergé pour l'historique des scans, PR Guardian, la facturation et les workflows d'équipe, est développé dans un dépôt privé car il contient du code produit commercial et des workflows d'infrastructure hébergée. Le dépôt public `ship-safe` reste centré sur la CLI sous licence MIT, les agents de sécurité, les règles, les fixtures, les intégrations CI et la documentation. Voir [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md) pour les limites du dépôt.
---
## Agents de sécurité
Tous les agents s'exécutent en parallèle. Chacun ignore automatiquement les projets non pertinents.
| Agent | Catégorie | Ce qu'il détecte |
|-------|----------|-----------------|
| **InjectionTester** | Vulns de code | Injection SQL/NoSQL, injection de commandes, XSS, traversée de chemin, XXE, ReDoS, pollution de prototype |
| **AuthBypassAgent** | Auth | Failles JWT (alg:none, secrets faibles), CSRF, mauvaise configuration OAuth, BOLA/IDOR, contournement TLS |
| **SSRFProber** | SSRF | Entrées utilisateur dans fetch/axios, points de terminaison de métadonnées cloud, IP internes |
| **SupplyChainAudit** | Chaîne d'approvisionnement | Typosquatting, versions wildcard, scripts d'installation suspects, confusion de dépendances |
| **ConfigAuditor** | Config | Docker (utilisateur root, :latest), Terraform, Kubernetes, CORS, CSP, Firebase, Nginx |
| **SupabaseRLSAgent** | Auth | Clé service_role dans le code client, tables sans RLS, insertions avec clé anon |
| **LLMRedTeam** | IA/LLM | OWASP LLM Top 10 : injection de prompt, agence excessive, fuite de prompt système |
| **MCPSecurityAgent** | IA/LLM | Mauvaise utilisation de serveur MCP, empoisonnement d'outils, typosquatting, entrées non validées |
| **A2ASecurityAgent** | IA/LLM | Empoisonnement de carte d'agent A2A, authentification manquante, points de terminaison en clair, callbacks push non sécurisés et cartes distantes non épinglées ([couverture](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **AgenticSecurityAgent** | IA/LLM | OWASP Agentic AI Top 10 : détournement d'agent, escalade de privilèges, mauvaise utilisation d'appels d'outils Kimi K3/compatibles OpenAI |
| **RAGSecurityAgent** | IA/LLM | Injection de contexte, empoisonnement de documents, contrôle d'accès à la base de données vectorielle |
| **MemoryPoisoningAgent** | IA/LLM | Injection d'instructions dans les fichiers de mémoire d'agent, charges utiles Unicode cachées (ASI-01, ASI-05) |
| **PIIComplianceAgent** | Conformité | SSN, cartes de crédit, e-mails, numéros de téléphone dans le code source |
| **VibeCodingAgent** | Vulns de code | Anti-patterns de code généré par IA : absence de validation, catch vides, TODO-auth |
| **ExceptionHandlerAgent** | Vulns de code | Catch vides, rejets non gérés, traces de pile divulguées (OWASP A10:2025) |
| **AgentConfigScanner** | IA/LLM | Injection de prompt dans .cursorrules, CLAUDE.md, hooks Claude Code malveillants |
| **MobileScanner** | Mobile | OWASP Mobile Top 10 2024 : stockage non sécurisé, injection WebView, mode debug |
| **GitHistoryScanner** | Secrets | Secrets divulgués dans l'historique des commits git |
| **CICDScanner** | CI/CD | Empoisonnement de pipeline, actions non épinglées, journalisation de secrets (OWASP CI/CD Top 10) |
| **APIFuzzer** | API | Routes sans authentification, affectation de masse, introspection GraphQL, points de terminaison de debug |
| **ManagedAgentScanner** | IA/LLM | Mauvaises configurations d'agent géré Claude : politiques always_allow, mise en réseau non restreinte (ASI-03–ASI-07) |
| **HermesSecurityAgent** | IA/LLM | Empoisonnement de registre d'outils, injection d'appels de fonction, dérive de permissions de compétences (ASI-01–ASI-10) |
| **AgentAttestationAgent** | Chaîne d'approvisionnement | Versions d'agent non épinglées, hachages d'intégrité manquants, manifestes non signés (ASI-10, SLSA L0) |
| **AgenticSupplyChainAgent** | Chaîne d'approvisionnement | Actions CI IA sur-privilégiées, dérive de portée OAuth, récepteurs de webhooks IA non signés (ASI-02, ASI-06) |
| **RobloxSecurityAgent** | Chaîne d'approvisionnement | Ressources malveillantes Roblox/Luau Toolbox (injection de ressources à l'exécution, chargeurs `rbxassetid://`, `HttpEnabled`, charges utiles cachées dans les attributs d'instance) |
| **ModelScanAgent** | Chaîne d'approvisionnement | Charges utiles d'exécution de code dans les poids de modèles ML (opcodes pickle dans `.pt`/`.pkl`/`.ckpt`), `torch.load` sans `weights_only`, archives d'évasion de scanner (CWE-502, CWE-506) |
| **TrustBoundaryAgent** | Agentique | Attaques par lien symbolique GhostApproval (liens nommés d'après la config vers `~/.ssh`/`~/.aws`/`.env`), liens symboliques de dépôt s'échappant de l'arborescence, et instructions Friendly Fire exécutées à la revue dans les documents lus par les agents (CWE-59, CWE-61) |
| **SlopSquatAgent** | Chaîne d'approvisionnement | Imports de paquets hallucinés / fantômes (slopsquatting) — imports nus non déclarés, non installés ou non intégrés, plus des noms connus comme hallucinés par IA (CWE-1357) |
| **ClickFixAgent** | Chaîne d'approvisionnement | Leurres ClickFix / faux CAPTCHA de type coller-et-exécuter (fausse erreur + frappes Win+R/Ctrl+V/barre de commandes, cradles PowerShell) et faux scripts de cycle de vie npm d'installateur (CWE-1357, CWE-506) |
| **InstallGuardAgent** | Chaîne d'approvisionnement | Comportements de ver npm dans les scripts de cycle de vie (collecte d'identifiants, exfiltration de variables d'environnement, `rm -rf` destructif, `node -e` obfusqué) et actions node-gyp `binding.gyp` weaponisées (CWE-506, CWE-829) |
**Passes d'investigation**, dans l'ordre où leurs preuves se classent les unes par rapport aux autres :
| Pass | Rang | Ce qu'il établit |
|------|------|---------------------|
| **VerifierAgent** | heuristique | Vérification de motif autour de la découverte. Ne déclare jamais plus que « probable » |
| **DeepAnalyzer** | analyse | Lecture LLM de la contamination de la découverte et de son fichier, avec la citation validée |
| **DataflowInvestigator** | flux de données | Remonte la valeur jusqu'à son origine, à travers une frontière de fonction et dans d'autres fichiers. JavaScript, TypeScript et Python |
| **AbsenceInvestigator** | présence | Recherche dans le projet, ou dans le gestionnaire, le contrôle qu'une règle dit manquant |
| **LiteralContextInvestigator** | présence | Tranche les découvertes sur une valeur écrite en dur selon ce qui l'entoure — prose, chaîne d'aide ou adresse réservée |
| **CapabilityGraph** | chaîne | Construit des chaînes d'attaque à partir de configuration qu'aucun fichier seul ne contient |
| **RedosReproducer** | reproduction | Exécute un motif signalé contre une entrée générée dans un worker avec une échéance |
| **SecretsVerifier** | reproduction | Présente une clé divulguée à son fournisseur. Sur opt-in : cela divulgue la clé |
Une affirmation dont le fichier ou la ligne cité ne se résout pas est enregistrée mais ne décide jamais d'un verdict. Deux passes de rang égal qui divergent aboutissent à non résolu plutôt qu'au verdict le plus effrayant.
**Également :** ScoringEngine
---
## Le REPL
```
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan to find issues · /agent to fix them · /help for more
shipsafe ›
```
| Commande | Ce qu'elle fait |
|---------|-------------|
| `/scan` | Relance l'analyse du projet |
| `/agent` | Lance la boucle de correction interactive |
| `/findings` | Liste les résultats de la dernière analyse |
| `/show <n>` | Détail complet du résultat n |
| `/plan <n>` | Prévisualise le plan de correction pour le résultat n (sans écriture) |
| `/undo [--all]` | Annule la dernière correction (ou toutes les corrections) |
| `/share` | Publie le rapport d'analyse sous forme d'URL publique (7 jours) |
| `/diff` | Affiche le diff de l'arbre de travail git |
| `/provider <name>` | Change de fournisseur LLM en cours de session |
| `/quit` | Quitte (également `Ctrl-D` ou `Ctrl-C`) |
Tout ce qui ne commence pas par `/` est envoyé au LLM sous forme de question libre, avec vos derniers résultats d'analyse comme contexte.
---
## CI/CD
```yaml
# .github/workflows/security.yml
name: Security Audit
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security gate
run: npx ship-safe ci . --sarif results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
```
Une version GitLab CI se trouve dans [docs/examples/gitlab-security-workflow.yml](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml).
### GitHub Action avec résultats de PR en ligne
Utilisez l'Action depuis un workflow `pull_request` lorsque vous souhaitez que les résultats critiques et élevés soient attachés aux lignes modifiées. Tenez `pull_request_target` à l'écart de ce chemin pour les contributions issues de forks : Ship Safe refuse cette combinaison privilégiée car le checkout peut contenir du code non fiable.
```yaml
name: Ship Safe
on:
pull_request:
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: asamassekou10/[email protected]
with:
fail-on: high
inline: true
```
Les commentaires en ligne sont optionnels et ne publient que les constats critiques/élevés. La réexécution de la tâche met à jour le résumé sans créer de commentaires en ligne en double.
---
## Prise en charge des LLM
Fonctionne avec n'importe quel fournisseur — détecté automatiquement à partir des variables d'environnement. Utilisez `--provider <name>` pour le remplacer.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · tout endpoint compatible OpenAI
Kimi utilise par défaut `kimi-k3` via `MOONSHOT_API_KEY` ou `KIMI_API_KEY`. Utilisez `--provider kimi --model kimi-k3` pour les exécutions GPT-Red à contexte long et d'analyse approfondie.
Pour le red teaming à contexte long spécifique à Kimi K3 :
```bash
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
```
Ship Safe vérifie également les implémentations d'appels d'outils Kimi K3 / compatibles OpenAI pour le chargement dynamique d'outils à partir du contexte du prompt, l'absence de listes d'autorisation d'outils, les appels d'outils forcés sur des entrées non fiables, et les résultats d'outils rejoués sans le message d'appel d'outil original de l'assistant.
Aucune clé API n'est requise pour l'analyse de base. La classification par IA et `red-team --gpt-red` utilisent votre fournisseur configuré lorsqu'il est disponible, avec un repli hors ligne déterministe pour les vérifications GPT-Red.
---
## Supprimer les faux positifs
```python
password = get_password() # ship-safe-ignore
```
Les constats `critical` sont toujours signalés. Un commentaire en ligne ne peut pas en masquer un, et toute tentative de suppression est enregistrée dans le scan. Le commentaire est destiné à un humain écartant un faux positif, et tout ce qui peut écrire une ligne de votre code source — y compris un agent IA — peut aussi écrire le commentaire, c'est pourquoi les sévérités les plus élevées ne l'honorent pas. Chaque suppression est comptabilisée, afin qu'un scan ayant réduit des constats au silence ne se lise jamais comme un scan qui n'en contenait aucun.
Les règles de code ordinaires ne traitent pas la prose Markdown ni les exemples de code en bloc comme du code source déployé. Les secrets sont toujours scannés partout, et les fichiers lisibles par les agents tels que `AGENTS.md` et `CLAUDE.md` conservent leurs vérifications dédiées d'injection de prompt et de frontière de confiance. Pour examiner intentionnellement les exemples en bloc, utilisez `--include-doc-examples` avec `scan`, `audit` ou `ci`.
```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```
### À quel point est-ce bruyant ?
Le rappel est la moitié facile d'un scanner. Un outil qui signale tout attrape
tout et est inutile, c'est pourquoi nous suivons également ce que Ship Safe signale sur des projets matures
sans vulnérabilités actives connues. Ce sont des constats bruts, pas des défauts confirmés.
| projet | constats bruts | critiques | score | note |
|---|---:|---:|---:|:---:|
| [express](https://github.com/expressjs/express) | 10 | 0 | 88.2 | B |
| [requests](https://github.com/psf/requests) | 7 | 0 | 95.5 | A |
| [flask](https://github.com/pallets/flask) | 17 | 0 | 81.4 | B |
| [chalk](https://github.com/chalk/chalk) | 4 | 0 | 89.4 | B |
Les quatre projets d'origine totalisent 38 constats bruts, contre 1 031 avant la v9.6.3. Le
corpus propre actuel de cinq projets inclut également Hermes Agent, qui rapporte 662
constats, dont 66 critiques. Aucun des deux chiffres n'est un taux de faux positifs ni une
affirmation d'exactitude ; les étiquettes d'investigation automatisée et la charge de travail restante
sont documentées dans le benchmark. Les contrôles du seuil de détection sur NodeGoat et DVWA
passent toujours.
Corpus épinglé par commit, reproductible avec une seule commande, limites documentées :
**[benchmarks/false-positives/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks/false-positives)**
### Comment se compare-t-il à Semgrep, Gitleaks, Trivy, CodeQL ?
Utilisez Ship Safe à leurs côtés, pas à leur place. CodeQL effectue une analyse de
taint interprocédurale que Ship Safe ne tente pas, Gitleaks est le spécialiste des
secrets, et Trivy dispose d'une véritable base de données CVE derrière lui.
Ship Safe couvre une question plus étroite : ce qu'un agent de codage IA vient de faire à votre
dépôt, à votre CI et à la configuration de vos outils locaux. La configuration du client MCP,
l'empoisonnement de la mémoire de l'agent, les imports de paquets hallucinés et l'AIBOM sont les domaines
où nous n'avons trouvé aucune règle publique équivalente dans les quatre autres.
Matrice de couverture complète, vérifiée par rapport à leurs registres publics, y compris là où
ils nous surpassent : **[docs/comparison.md](https://github.com/asamassekou10/ship-safe/blob/main/docs/comparison.md)**
---
## Ajouter un badge
```markdown
[](https://shipsafe.sh)
```
## Et ensuite
**10.1 est une version de précision.** Elle conserve la base vérifiée Hermes Agent 10.0 et renforce l'attestation afin que les citations d'avis propres à Ship Safe ne soient pas confondues avec des ressources d'agent non signées. Les vérifications existantes des plugins et adaptateurs sont partielles ; la posture du terminal, ACP/TUI, le cycle de vie actuel de cron et l'accessibilité des identifiants restent un travail explicite plutôt qu'une couverture implicite. Voir la [matrice de couverture](https://github.com/asamassekou10/ship-safe/blob/main/docs/hermes-coverage-matrix.md).
Consultez la [feuille de route](https://github.com/asamassekou10/ship-safe/blob/main/ROADMAP.md) pour ce qui est prévu et ce qui est délibérément exclu. Les contributions ciblées et les correctifs appuyés par des benchmarks sont les bienvenus.
## Contribuer
Ship Safe est open source, et les meilleures contributions sont de petites améliorations ciblées qui rendent le développement assisté par IA plus sûr.
Bons premiers domaines :
- Ajouter un agent de sécurité ciblé pour un risque lié à l'IA, MCP, CI, au cloud ou à la chaîne d'approvisionnement
- Ajouter une règle de sécurité précise à un agent existant
- Ajouter des fixtures vulnérables et des tests de régression
- Rédiger des exemples pour les scans locaux, les portes CI, les workflows red-team et la configuration MCP/agent
Commencez ici :
- [Bonnes premières issues](https://github.com/asamassekou10/ship-safe/contribute)
- [Guide du contributeur](https://github.com/asamassekou10/ship-safe/blob/main/CONTRIBUTING.md)
- [Ajouter un agent](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-an-agent.md)
- [Ajouter une règle de sécurité](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-a-security-rule.md)
- [Écrire un plugin d'agent personnalisé](https://github.com/asamassekou10/ship-safe/blob/main/docs/custom-agent-plugins.md)
- [Gérer les variables d'environnement MCP en toute sécurité](https://github.com/asamassekou10/ship-safe/blob/main/docs/mcp-env-safety.md)
- [Utiliser Ship Safe avec Codex](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/codex.md)
- [Utiliser Ship Safe avec Claude Code](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/claude-code.md)
- [Utiliser Ship Safe avec Cursor](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/cursor.md)
- [Comprendre les résultats de correction et les limites de la vérification statique](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)
- [Processus de publication](https://github.com/asamassekou10/ship-safe/blob/main/docs/releasing.md)
---
## Sponsors
Ship Safe est sous licence MIT et gratuit pour toujours.
<p align="center">
<a href="https://github.com/sponsors/asamassekou10">
<img src="https://img.shields.io/badge/Sponsor%20Ship%20Safe-%E2%9D%A4-ea4aaa?style=for-the-badge&logo=github" alt="Sponsor Ship Safe" />
</a>
</p>
---
## Historique des étoiles
[](https://star-history.dera.page/#asamassekou10/ship-safe&type=date)
---
**Ship fast. Ship safe.** — [shipsafe.sh](https://shipsafe.sh)