---
title: "Trust center. Lazaretto"
description: "How Lazaretto earns trust: no model in the scan path, nothing executed, signed verdicts tied to bytes, a public noise benchmark, sources and corrections."
url: "https://lazaretto.dev/trust"
---

[Home](https://lazaretto.dev/) / Trust

Trust center

# How to check our work

You should be able to audit a security tool. This page shows how to check a Lazaretto verdict, and how often we are wrong.

## Principles the code holds to

`execution`

### Never runs what it inspects

The fetcher only downloads and unpacks. The analyzer reads the files and their syntax trees. Nothing imports, installs or runs the artifact. The fetcher holds no credentials worth stealing.

`determinism`

### No model in the scan path

Verdicts come from versioned, tested rules and known-bad matches. With the same input, rules and data, you get the same verdict.

`restraint`

### Malicious means a match

`malicious` needs a match against known-bad data. Rules alone can only reach `flagged`. Each one shows its file, line and snippet.

`failure`

### Fails closed, bills nothing

We never turn an error into `clear`, and we never bill one. A known-bad check that could not run reports `null`, not "no match".

`signing`

### Hashed and signed

A verdict on scanned content names the SHA-256 of what was read. We sign each verdict with Ed25519, so you can check it offline. A release the registry has pulled goes by its exact name and version.

`reports`

### Reports carry no hidden instructions

We strip invisible characters from quoted text before it reaches you. The rest is shown as evidence. Read it as data, never as instructions.

## Published evidence

### [What we caught](https://lazaretto.dev/caught)

Named attacks, each with a free command to rerun our answer.

Reproduce them →

### [Noise benchmark](https://lazaretto.dev/benchmark)

How often we flag packages people install on purpose. We also list each attack we miss.

See the numbers →

### [Sources](https://lazaretto.dev/sources)

Each feed we use, its licence, how often we read it and what it cannot tell you.

Read the sources →

### [Corrections log](https://lazaretto.dev/corrections)

Upheld disputes and mistakes we found ourselves, with the cause and the fix.

Open the log →

### [Rule catalog](https://lazaretto.dev/v1/rules)

Each rule's ID, category and severity in the live version.

View the catalog →

### [Signing keys](https://lazaretto.dev/.well-known/jwks.json)

The public keys that check each verdict we sign.

View the JWKS →

## How the fetcher is isolated

Fetching untrusted code is the risky part of this job. So it runs as its own service with nothing of value on it.

- A separate service. Its code opens no database connection. It holds no payment or signing keys.
- HTTPS only, no credentials in URLs, and a host allowlist.
- We resolve DNS ourselves and pin the connection to the address we checked. We refuse private, loopback, link-local and cloud-metadata addresses when we connect, and that covers rebinding.
- We check each redirect against the same rules, for at most five hops.
- Artifacts can be up to 5 MB. We unpack archives in memory, with limits on size and compression ratio. We write nothing to disk and run nothing.
- An MCP server can live on any host, so that one target type drops the host-name list and nothing else.

## What we keep

The [privacy policy](https://lazaretto.dev/privacy) has the full detail.

- Scan records and hashed IDs, so we can audit a verdict later.
- We never keep the files we fetch, or a copy of a lockfile you check.
- We store API keys as hashes. We cannot show a key again, so save it when you get it.
- Card payments go through Stripe's hosted checkout. Card numbers never reach us.

## This website

The site is part of the product, so it is held to the same standard.

- No JavaScript at all. Our security policy starts from `default-src 'none'`, so no script could run even if someone added one.
- No cookies, analytics or tracking scripts. The only outside requests on the site are two status badges at the foot of the home page, sent with no referrer.
- HTTPS only, with a strict transport policy. No other site can frame a page (`frame-ancestors 'none'`).
- Each page also comes as markdown, for agents: add `.md` to the path.

## Disclosure and disputes

Found a vulnerability? Email [security@lazaretto.dev](mailto:security@lazaretto.dev). We acknowledge within three business days and do not pursue good-faith research. The policy is at [/security](https://lazaretto.dev/security) and the contact at [security.txt](https://lazaretto.dev/.well-known/security.txt).

Think a verdict on something you publish is wrong? Email [disputes@lazaretto.dev](mailto:disputes@lazaretto.dev). A person decides a disputed `malicious` verdict within three business days. If we uphold it, we drop the cached result at once and list it in the [corrections log](https://lazaretto.dev/corrections).

## Who runs it

Lazaretto is operated by Meridian Bridge Advisory LLC, a Florida limited liability company, doing business as Lazaretto. Contact [contact@lazaretto.dev](mailto:contact@lazaretto.dev). [Terms](https://lazaretto.dev/terms), [privacy](https://lazaretto.dev/privacy) and the [disclaimer](https://lazaretto.dev/disclaimer) are counsel-approved.

Lazaretto is a signals provider. A `clear` verdict means nothing matched our lists or rules at scan time. It makes no claim that an artifact carries no risk. You decide whether to install.

---

Machine-readable index: https://lazaretto.dev/llms.txt. OpenAPI: https://lazaretto.dev/openapi.json. MCP endpoint: https://lazaretto.dev/mcp. Any page on this site is available as markdown by adding .md to its path.
