L'agente di sicurezza indipendente per software scritto dall'IA. Trova i problemi, verifica se sono reali e ti mostra le prove. Nucleo deterministico, nessuna chiave API necessaria, output JSON e SARIF.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="Ship Safe Logo" width="180" />
</p>
<p align="center"><strong>L'agente di sicurezza indipendente per il software scritto dall'IA. Trova i problemi, verifica se sono reali e ti mostra le prove.</strong></p>
<p align="center"><a href="https://shipsafe.sh">Sito web</a> · <a href="https://shipsafe.sh/docs">Documentazione</a> · <a href="https://shipsafe.sh/security">Sicurezza e flusso dei dati</a> · <a href="https://shipsafe.sh/benchmarks">Benchmark</a> · <a href="https://shipsafe.sh/pricing">Prezzi</a> · <a href="https://shipsafe.sh/blog">Blog</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">Contribuisci</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 viene eseguito localmente nel tuo repository e funziona su due livelli.
Un **motore deterministico** individua i problemi nel codice dell'applicazione, negli agenti IA, nelle configurazioni MCP, nei prompt, nelle dipendenze, nelle pipeline CI/CD, nei segreti e nella configurazione relativa al cloud. Veloce, ripetibile e sottoposto a benchmark: questo è il livello sensore.
Un **livello di indagine** decide poi quanto valgono i risultati. Traccia il valore che raggiunge un sink, cerca nel progetto i controlli che una regola segnala come mancanti, costruisce catene di attacco attraverso configurazioni che nessun singolo file contiene e — quando glielo chiedi — verifica una chiave esposta contro il suo provider. Ogni conclusione riporta il passaggio che vi è giunto e le righe lette:
```
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>Output reale di <code>ship-safe investigate</code> su OWASP NodeGoat. Il valore contaminato viene destrutturato in un file di route e passato a un DAO a tre directory di distanza.</sub>
Inizia con un solo comando:
```bash
npx ship-safe
```
Nessuna registrazione. Nessuna chiave API richiesta per la scansione. Funziona offline per i controlli principali. Le modalità red-team basate su AI utilizzano il provider configurato quando disponibile.
Usa `--no-ai` per garantire una scansione completamente locale. La classificazione basata su provider, l'analisi approfondita e GPT-Red inviano un contesto limitato direttamente al provider selezionato dopo un mascheramento best-effort delle credenziali. Consulta [Security & Data Flow](https://shipsafe.sh/security) per i limiti esatti e i limiti di contesto.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="Demo della REPL di Ship Safe" width="800" />
</p>
---
## Avvio rapido
Richiede Node.js 22.13+ sulla linea 22.x, oppure Node.js 24+. Node 18 e 20
non sono più supportati dalla versione di sviluppo corrente.
```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
```
Per le pull request, confronta una scansione di base attendibile con la scansione della head in modo che il debito esistente del repository rimanga visibile senza bloccare modifiche non correlate:
```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'artefatto di base contiene identità dei risultati con hash, percorsi relativi e metadati delle regole. Non memorizza i segreti grezzi individuati. I risultati delle PR classificano i risultati come introdotti, risolti, invariati o incerti; le corrispondenze ambigue vengono mostrate ma non bloccano la pull request.
### Contratto del report leggibile da macchina
`scan --json`, `audit --json` e `ci --json` includono `schemaVersion: 1`, la versione di Ship Safe e un timestamp UTC `generatedAt`. I percorsi dei risultati sono relativi al progetto per impostazione predefinita, così i report possono spostarsi tra workstation e CI senza divulgare i nomi delle directory locali. Usa `--absolute-paths` solo quando un consumatore necessita esplicitamente dei percorsi host. I report SARIF riportano la stessa versione del pacchetto nei propri metadati dello strumento.
## Cosa rileva Ship Safe
| Area | Esempi |
|------|----------|
| Sicurezza AI e LLM | Prompt injection, dirottamento degli agenti, agency eccessiva, avvelenamento della memoria, avvelenamento RAG, chiamate a strumenti non sicure |
| Configurazioni MCP e agenti | Permessi degli strumenti troppo ampi, registri avvelenati, trasporti non attendibili, allowlist pericolose |
| Sicurezza delle applicazioni | SQL/NoSQL injection, XSS, SSRF, bypass dell'autenticazione, path traversal, route API non sicure |
| Segreti e conformità | Chiavi API, token, credenziali, PII, segreti trapelati nella cronologia git |
| Supply chain | Typosquatting, dependency confusion, script di installazione rischiosi, azioni AI non bloccate a versione |
| CI/CD | Avvelenamento delle pipeline, GitHub Actions non bloccate a versione, logging di segreti, trigger di workflow non sicuri |
## Come funziona
1. **Scansione locale** - Ship Safe ispeziona il tuo repository con agenti mirati e salta i controlli che non si applicano.
2. **Indaga ogni risultato** - Passaggi separati decidono se è reale, classificati in modo che uno più economico non possa mai ribaltare uno più costoso: un percorso dati tracciato ha più peso della lettura di un modello dello stesso file, e una sonda che ha autenticato ha più peso di entrambi.
3. **Leggi le prove** - I risultati si risolvono in confermati, probabili, irrisolti o confutati, ciascuno citando le righe da cui è stata tratta la conclusione, così puoi dissentire da un passaggio invece che da un'etichetta di gravità.
4. **Correggi con controllo** - L'agente propone un piano e un diff, chiede prima di scrivere, riporta le prove di una nuova scansione statica e mantiene le modifiche reversibili. La scomparsa del rilevatore non è un nuovo test indipendente; vedi [esiti delle correzioni](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md).
5. **Gate in CI** - Usa `ship-safe ci` per far fallire le build rischiose e caricare SARIF nella code scanning di GitHub.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="Demo dell'agente Ship Safe" width="800" />
</p>
---
## "Perché non chiedere semplicemente al mio agente di coding di revisionare il repo?"
Puoi farlo, e dovresti. Troverà cose reali. Ma ci sono tre domande a cui strutturalmente non può rispondere riguardo al proprio lavoro.
**L'agente che ha scritto questo codice si è appena corretto da solo il compito?** Chiedere all'autore se l'autore ha commesso un errore non è una revisione. Ship Safe è un revisore separato con un metodo separato, e dissente da sé stesso in pubblico — una traccia del flusso di dati ribalta il passaggio euristico, e una sonda live ribalta entrambi.
**Può vedere ciò che può raggiungere?** Un agente di coding che revisiona il tuo repo non può leggere la configurazione del tuo server MCP, non può enumerare i permessi con cui è stato avviato, ed è l'attore la cui portata è in discussione. `ship-safe capabilities` legge tutto questo dall'esterno e riporta le combinazioni che sono pericolose insieme mentre risultano irrilevanti separatamente:
```
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.
```
Ognuna di queste righe è insignificante da sola. Insieme formano un percorso da una pull request a una scrittura privilegiata, e nessuna revisione di un singolo file può vederlo, perché nessun singolo file lo contiene.
**È coerente, e puoi dimostrare che è migliorato?** Chiedi due volte, ottieni due risposte. Il motore di Ship Safe è deterministico, e le sue conclusioni sono vincolate in CI da un benchmark che valuta la *qualità delle conclusioni*, non la copertura dei pattern: quante scoperte note come reali risolve, quanto rumore noto confuta, e se mai confuta qualcosa di reale. Il budget di quest'ultimo numero è zero — è l'unica classe di errore che perde una vulnerabilità in silenzio. Vedi [benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks).
## Perché gli sviluppatori lo usano
- **Progettato per app native all'AI**: rileva rischi in agenti, server MCP, prompt, flussi RAG, configurazioni di agenti gestiti e CI basate sull'AI.
- **Funziona con i client AI**: espone Ship Safe a Codex, Claude Desktop, Cursor, Windsurf e altri client MCP tramite il server stdio locale.
- **Feedback locale rapido**: eseguilo prima di una PR, durante la revisione o all'interno della CI senza inviare codice a uno scanner ospitato.
- **Le correzioni sono verificabili**: ogni modifica suggerita viene mostrata come diff prima di toccare i tuoi file.
- **Funziona con il tuo stack**: JavaScript, TypeScript, Python, file di configurazione, file di infrastruttura, GitHub Actions e altro ancora.
- **Core open source**: CLI con licenza MIT con documentazione, esempi e un sistema di agenti in crescita.
## CLI gratuita, flussi di lavoro per team a pagamento
La CLI open source è il modo più rapido per scansionare qualsiasi repository localmente. Passa a un piano superiore quando hai bisogno di un flusso di lavoro ospitato attorno allo stesso scanner:
| Esigenza | Utilizzo |
|------|-----|
| Scansioni locali, audit e correzioni assistite da agenti | CLI gratuita |
| Cronologia delle scansioni, dashboard cloud e report PDF | Pro |
| Workspace condiviso, PR Guardian, report per team e collaborazione | Team |
Confronta i piani su [shipsafe.sh/pricing](https://shipsafe.sh/pricing).
Ship Safe Cloud, la dashboard ospitata per la cronologia delle scansioni, PR Guardian, la fatturazione e i flussi di lavoro per team, è sviluppata in un repository privato perché contiene codice di prodotto commerciale e flussi di lavoro infrastrutturali ospitati. Il repository pubblico `ship-safe` rimane incentrato sulla CLI con licenza MIT, sugli agenti di sicurezza, sulle regole, sui fixture, sulle integrazioni CI e sulla documentazione. Vedi [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md) per i confini del repository.
---
## Agenti di sicurezza
Tutti gli agenti vengono eseguiti in parallelo. Ognuno salta automaticamente i progetti irrilevanti.
| Agent | Categoria | Cosa rileva |
|-------|----------|-----------------|
| **InjectionTester** | Vulnerabilità nel codice | SQL/NoSQL injection, command injection, XSS, path traversal, XXE, ReDoS, prototype pollution |
| **AuthBypassAgent** | Autenticazione | Vulnerabilità JWT (alg:none, secret deboli), CSRF, misconfigurazione OAuth, BOLA/IDOR, bypass TLS |
| **SSRFProber** | SSRF | Input utente in fetch/axios, endpoint di metadata cloud, IP interni |
| **SupplyChainAudit** | Supply Chain | Typosquatting, versioni wildcard, script di installazione sospetti, dependency confusion |
| **ConfigAuditor** | Configurazione | Docker (utente root, :latest), Terraform, Kubernetes, CORS, CSP, Firebase, Nginx |
| **SupabaseRLSAgent** | Autenticazione | Chiave service_role nel codice client, tabelle senza RLS, inserimenti con chiave anon |
| **LLMRedTeam** | AI/LLM | OWASP LLM Top 10: prompt injection, agency eccessiva, leakage del system prompt |
| **MCPSecurityAgent** | AI/LLM | Uso improprio del server MCP, tool poisoning, typosquatting, input non validati |
| **A2ASecurityAgent** | AI/LLM | Avvelenamento delle agent card A2A, autenticazione mancante, endpoint in chiaro, callback push non sicuri e card remote non bloccate ([copertura](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **AgenticSecurityAgent** | AI/LLM | OWASP Agentic AI Top 10: dirottamento degli agenti, escalation dei privilegi, uso improprio delle tool-call Kimi K3/compatibili OpenAI |
| **RAGSecurityAgent** | AI/LLM | Context injection, avvelenamento dei documenti, controllo degli accessi al vector DB |
| **MemoryPoisoningAgent** | AI/LLM | Injection di istruzioni nei file di memoria degli agenti, payload Unicode nascosti (ASI-01, ASI-05) |
| **PIIComplianceAgent** | Conformità | SSN, carte di credito, email, numeri di telefono nel codice sorgente |
| **VibeCodingAgent** | Vulnerabilità nel codice | Anti-pattern nel codice generato dall'AI: nessuna validazione, catch vuoti, TODO-auth |
| **ExceptionHandlerAgent** | Vulnerabilità nel codice | Catch vuoti, rejection non gestite, stack trace esposti (OWASP A10:2025) |
| **AgentConfigScanner** | AI/LLM | Prompt injection in .cursorrules, CLAUDE.md, hook malevoli di Claude Code |
| **MobileScanner** | Mobile | OWASP Mobile Top 10 2024: archiviazione non sicura, injection WebView, modalità debug |
| **GitHistoryScanner** | Segreti | Segreti esposti nella cronologia dei commit git |
| **CICDScanner** | CI/CD | Avvelenamento delle pipeline, action non bloccate, logging dei segreti (OWASP CI/CD Top 10) |
| **APIFuzzer** | API | Route senza autenticazione, mass assignment, introspezione GraphQL, endpoint di debug |
| **ManagedAgentScanner** | AI/LLM | Misconfigurazioni di Claude Managed Agent: policy always_allow, networking senza restrizioni (ASI-03–ASI-07) |
| **HermesSecurityAgent** | AI/LLM | Avvelenamento del registro dei tool, injection delle function-call, deriva dei permessi delle skill (ASI-01–ASI-10) |
| **AgentAttestationAgent** | Supply Chain | Versioni degli agenti non bloccate, hash di integrità mancanti, manifest non firmati (ASI-10, SLSA L0) |
| **AgenticSupplyChainAgent** | Supply Chain | Action CI AI con privilegi eccessivi, scope creep OAuth, ricevitori webhook AI non firmati (ASI-02, ASI-06) |
| **RobloxSecurityAgent** | Supply Chain | Asset malevoli di Roblox/Luau Toolbox (injection di asset a runtime, loader `rbxassetid://`, `HttpEnabled`, payload nascosti negli attributi delle istanze) |
| **ModelScanAgent** | Supply Chain | Payload di esecuzione di codice nei pesi dei modelli ML (opcode pickle in `.pt`/`.pkl`/`.ckpt`), `torch.load` senza `weights_only`, archivi per eludere gli scanner (CWE-502, CWE-506) |
| **TrustBoundaryAgent** | Agentico | Attacchi symlink GhostApproval (link con nomi di configurazione verso `~/.ssh`/`~/.aws`/`.env`), symlink del repository che escono dall'albero e istruzioni Friendly Fire run-on-review nei documenti letti dagli agenti (CWE-59, CWE-61) |
| **SlopSquatAgent** | Supply Chain | Import di pacchetti allucinati / fantasma (slopsquatting) — import bare non dichiarati, non installati o non builtin, più nomi noti allucinati dall'AI (CWE-1357) |
| **ClickFixAgent** | Supply Chain | Esca ClickFix / falso CAPTCHA paste-and-run (falso errore + sequenze di tasti Win+R/Ctrl+V/command-bar, PowerShell cradle) e script lifecycle npm di falsi installer (CWE-1357, CWE-506) |
| **InstallGuardAgent** | Supply Chain | Comportamenti di worm npm negli script del ciclo di vita (raccolta di credenziali, esfiltrazione di variabili d'ambiente, `rm -rf` distruttivo, `node -e` offuscato) e azioni node-gyp di `binding.gyp` armate (CWE-506, CWE-829) |
**Passate di indagine**, nell'ordine in cui le loro prove prevalgono l'una sull'altra:
| Passata | Rango | Cosa stabilisce |
|------|------|---------------------|
| **VerifierAgent** | euristica | Controllo di pattern attorno al risultato. Non afferma mai più di "probabile" |
| **DeepAnalyzer** | analisi | Lettura LLM del taint del risultato e del suo file, con la citazione validata |
| **DataflowInvestigator** | dataflow | Traccia il valore fino alla sua origine, attraverso un confine di funzione e in altri file. JavaScript, TypeScript e Python |
| **AbsenceInvestigator** | presenza | Cerca nel progetto, o nel gestore, il controllo che una regola dichiara mancante |
| **LiteralContextInvestigator** | presenza | Decide i risultati su un valore scritto in base a ciò che lo circonda — prosa, una stringa di aiuto o un indirizzo riservato |
| **CapabilityGraph** | catena | Costruisce catene di attacco da configurazioni che nessun singolo file contiene |
| **RedosReproducer** | riproduzione | Esegue un pattern segnalato contro input generati in un worker con una scadenza |
| **SecretsVerifier** | riproduzione | Presenta una chiave trapelata al suo provider. Opt-in: questo divulga la chiave |
Un'affermazione il cui file o riga citati non si risolvono viene registrata ma non decide mai un verdetto. Due passate di pari rango che sono in disaccordo si risolvono in non risolto anziché nel verdetto più allarmante.
**Inoltre:** ScoringEngine
---
## Il REPL
```
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan to find issues · /agent to fix them · /help for more
shipsafe ›
```
| Comando | Cosa fa |
|---------|-------------|
| `/scan` | Esegue una nuova scansione del progetto |
| `/agent` | Avvia il ciclo interattivo di correzione |
| `/findings` | Elenca i risultati dell'ultima scansione |
| `/show <n>` | Mostra i dettagli completi del risultato n |
| `/plan <n>` | Anteprima del piano di correzione per il risultato n (nessuna scrittura) |
| `/undo [--all]` | Annulla l'ultima correzione (o tutte le correzioni) |
| `/share` | Pubblica il report della scansione come URL pubblico (7 giorni) |
| `/diff` | Mostra il diff del working-tree git |
| `/provider <name>` | Cambia provider LLM durante la sessione |
| `/quit` | Esce (anche `Ctrl-D` o `Ctrl-C`) |
Qualsiasi cosa non inizi con `/` viene inviata all'LLM come domanda libera, con i risultati dell'ultima scansione come contesto.
---
## 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
```
Una versione per GitLab CI è disponibile in [docs/examples/gitlab-security-workflow.yml](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml).
### GitHub Action con risultati PR inline
Usa l'Action da un workflow `pull_request` quando vuoi che i risultati critici e alti
siano allegati alle righe modificate. Tieni `pull_request_target` fuori da questo
percorso per i contributi forkati: Ship Safe rifiuta quella combinazione privilegiata
perché il checkout potrebbe contenere codice non attendibile.
```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
```
I commenti inline sono opt-in e pubblicano solo i risultati critici/alti. Una nuova esecuzione
del job aggiorna il riepilogo senza creare commenti inline duplicati.
---
## Supporto LLM
Funziona con qualsiasi provider — rilevato automaticamente dalle variabili d'ambiente. Usa `--provider <name>` per forzare la selezione.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · qualsiasi endpoint compatibile con OpenAI
Kimi usa per impostazione predefinita `kimi-k3` tramite `MOONSHOT_API_KEY` o `KIMI_API_KEY`. Usa `--provider kimi --model kimi-k3` per esecuzioni GPT-Red a contesto lungo e analisi approfondite.
Per il red teaming a contesto lungo specifico per Kimi K3:
```bash
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
```
Ship Safe controlla anche le implementazioni di tool-call Kimi K3 / compatibili con OpenAI per il caricamento dinamico di tool dal contesto del prompt, le allowlist di tool mancanti, le chiamate forzate di tool su input non attendibili e i risultati dei tool riprodotti senza il messaggio originale di tool-call dell'assistente.
Nessuna chiave API richiesta per la scansione principale. La classificazione AI e `red-team --gpt-red` utilizzano il provider configurato quando disponibile, con fallback offline deterministico per i controlli GPT-Red.
---
## Sopprimere i falsi positivi
```python
password = get_password() # ship-safe-ignore
```
I risultati `critical` vengono sempre segnalati. Un commento inline non può nasconderne uno, e un tentativo di sopprimerne uno viene registrato nella scansione. Il commento è pensato per un essere umano che esclude un falso positivo, e qualsiasi cosa in grado di scrivere una riga del tuo codice sorgente — incluso un agente AI — può scrivere anche il commento, quindi le severità più alte non lo rispettano. Ogni soppressione viene conteggiata, così una scansione che ha silenziato risultati non appare mai come una che non ne aveva.
Le regole ordinarie del codice non valutano la prosa Markdown o gli esempi di codice delimitati come codice sorgente distribuito. I segreti vengono comunque scansionati ovunque, e i file leggibili dagli agenti come `AGENTS.md` e `CLAUDE.md` mantengono i loro controlli dedicati per prompt-injection e confini di fiducia. Per esaminare intenzionalmente gli esempi delimitati, usa `--include-doc-examples` con `scan`, `audit` o `ci`.
```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```
### Quanto è rumoroso?
Il recall è la metà facile di uno scanner. Uno strumento che segnala tutto intercetta
tutto ed è inutile, quindi monitoriamo anche ciò che Ship Safe segnala su progetti
maturi senza vulnerabilità attive note. Questi sono risultati grezzi, non
difetti confermati.
| progetto | risultati grezzi | critici | punteggio | grado |
|---|---:|---:|---:|:---:|
| [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 |
I quattro originali totalizzano 38 risultati grezzi, in calo rispetto ai 1.031
prima della v9.6.3. Il corpus pulito attuale di cinque progetti include anche Hermes Agent, che riporta 662
risultati, inclusi 66 critici. Nessuno dei due conteggi è un tasso di falsi positivi o un'
affermazione di accuratezza; le etichette di indagine automatizzata e il carico di lavoro rimanente
sono documentati nel benchmark. I controlli della soglia di rilevamento su NodeGoat e DVWA
passano ancora.
Corpus fissato per commit, riproducibile con un solo comando, limiti documentati:
**[benchmarks/false-positives/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks/false-positives)**
### Come si confronta con Semgrep, Gitleaks, Trivy, CodeQL?
Esegui Ship Safe insieme a loro, non al posto loro. CodeQL esegue l'analisi interprocedurale
del taint che Ship Safe non tenta, Gitleaks è lo specialista per i
segreti, e Trivy ha un vero database CVE alle spalle.
Ship Safe copre una questione più ristretta: cosa ha appena fatto un agente di coding AI al tuo
repository, alla tua CI e alla configurazione dei tuoi strumenti locali. Configurazione del client MCP,
avvelenamento della memoria dell'agente, import di pacchetti allucinati e AIBOM sono le aree
in cui non abbiamo trovato regole pubbliche equivalenti negli altri quattro.
Matrice di copertura completa, verificata rispetto ai loro registri pubblici, incluso dove
ci superano: **[docs/comparison.md](https://github.com/asamassekou10/ship-safe/blob/main/docs/comparison.md)**
---
## Aggiungi un Badge
```markdown
[](https://shipsafe.sh)
```
## Prossimi passi
**10.1 è una release di precisione.** Mantiene la baseline verificata di Hermes Agent 10.0 e rafforza l'attestazione affinché le citazioni di advisory di Ship Safe stesso non vengano scambiate per risorse dell'agente non firmate. I controlli esistenti su plugin e adapter sono parziali; la postura del terminale, ACP/TUI, il ciclo di vita attuale di cron e la raggiungibilità delle credenziali restano lavoro esplicito anziché copertura implicita. Vedi la
[matrice di copertura](https://github.com/asamassekou10/ship-safe/blob/main/docs/hermes-coverage-matrix.md).
Consulta la [roadmap](https://github.com/asamassekou10/ship-safe/blob/main/ROADMAP.md) per ciò che è pianificato e ciò che è deliberatamente escluso. Contributi mirati e correzioni supportate da benchmark sono benvenuti.
## Contribuire
Ship Safe è open source, e i migliori contributi sono miglioramenti piccoli e mirati che rendono più sicuro lo sviluppo assistito dall'AI.
Buoni ambiti per iniziare:
- Aggiungere un agente di sicurezza mirato per un rischio AI, MCP, CI, cloud o della supply chain
- Aggiungere una regola di sicurezza precisa a un agente esistente
- Aggiungere fixture vulnerabili e test di regressione
- Scrivere esempi per scansioni locali, gate CI, workflow red-team e configurazione di MCP/agenti
Inizia da qui:
- [Good first issues](https://github.com/asamassekou10/ship-safe/contribute)
- [Guida per i contributori](https://github.com/asamassekou10/ship-safe/blob/main/CONTRIBUTING.md)
- [Aggiungere un agente](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-an-agent.md)
- [Aggiungere una regola di sicurezza](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-a-security-rule.md)
- [Scrivere un plugin per un agente personalizzato](https://github.com/asamassekou10/ship-safe/blob/main/docs/custom-agent-plugins.md)
- [Gestire in sicurezza le variabili d'ambiente MCP](https://github.com/asamassekou10/ship-safe/blob/main/docs/mcp-env-safety.md)
- [Usare Ship Safe con Codex](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/codex.md)
- [Usare Ship Safe con Claude Code](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/claude-code.md)
- [Usare Ship Safe con Cursor](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/cursor.md)
- [Comprendere gli esiti delle correzioni e i limiti della verifica statica](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)
- [Processo di rilascio](https://github.com/asamassekou10/ship-safe/blob/main/docs/releasing.md)
---
## Sponsor
Ship Safe è distribuito con licenza MIT ed è gratuito per sempre.
<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>
---
## Star History
[](https://star-history.dera.page/#asamassekou10/ship-safe&type=date)
---
**Ship fast. Ship safe.** — [shipsafe.sh](https://shipsafe.sh)