Reference

Data handling & retention

What Sentinelleai stores, what it deletes the moment a scan ends, who can see it, and where it actually runs.

What you send us

Depending on the scan type, you send Sentinelleai a git repository URL, an uploaded archive, a deployed contract address, or a web/DNS hostname you have proven you control. An uploaded archive is written to a temporary location, validated against path-traversal and size limits, and extracted only after that validation passes — see How a scan works for the extraction guards.

What we keep

A completed scan's findings are kept: severity, the affected file and line (where applicable), the tool that raised it, and its reasoning or message text. The scan's summary counts and score (when the scan was not degraded) are kept alongside it.

What we delete, and when

The source itself is not part of what is kept. A cloned repository or an extracted upload lives in a temporary directory only for the duration of the scan that reads it, and is removed once that scan ends — success or failure alike, since the cleanup runs unconditionally rather than only on the success path.

What this does not cover
A finding's reasoning text can quote a short excerpt of the source it is about, because that excerpt is what makes the finding checkable. What is deleted is the source tree as a whole — the full checkout, the archive bytes — not every fragment a finding happens to quote.

Who can see it

Every scan, report, and finding is owned by the individual account that created it. With authentication enforced on an installation, an ordinary member sees only their own rows, an administrator sees every row on that installation, and a request with no valid session sees nothing. This rule is enforced from one shared place rather than re-implemented per page or per API route, specifically so a list view and a by-id view of the same data cannot drift apart and leak one tenant's report to another. See Accounts & access for the full rule, including how an organisation's shared billing differs from shared visibility.

Where it runs

Sentinelleai's hosted service runs in the United States. For real incidents, an on-demand forensic analyst is available: small cases run on an always-on CPU server in the US; a mid-sized or larger incident bursts to a GPU rented in the EU for the duration. No hyperscaler and no Chinese-origin model sits anywhere in that forensic path. Retention for that material is short, and it is deleted afterward.

Secrets you give us

Alert channels can require credentials — an SMTP password, a webhook URL that embeds a live bot token. These are sealed at rest and are never returned to you in the clear: reloading your alert settings shows a placeholder in place of the password, and a webhook URL comes back redacted (masked, with only its non-sensitive shape visible). Saving the form again without touching those fields sends the placeholders back rather than overwriting a working credential with a mask — a failure mode this platform has specifically guarded against, since a naive round-trip once overwrote a working key with its own placeholder string.

Alert settings showing a masked webhook URL and a placeholder password field
Alert-channel secrets are shown masked or as a placeholder, never in the clear, after the first save.

The evidence ledger

A separate, append-only activity record — the evidence ledger — chains each entry to the one before it by hash, so the sequence itself can be checked for internal consistency: an entry cannot be quietly altered or removed without breaking the chain that follows it. The ledger's own head is anchored externally on a recurring basis so its state at a point in time can be shown to predate any later dispute.

Append-only, hash-chained, anchored, signed.An append-only, hash-chained evidence ledger. Each row hashes the previous row plus its own content — actions with a reason, alerts and their delivery receipts, auto-pause events, incidents. The chain is mirrored hourly, anchored daily via OpenTimestamps, exported with an Ed25519 signature, and checkable at a verify endpoint. UPDATE and DELETE are refused once a row is hashed.Actions with a reasonAlerts sent → delivery receiptsAuto-pause eventsIncidentsRow 1Row 2Row 3Row 4Hourly mirrorDaily anchor (OpenTimestamps)Signed export (Ed25519)Verify endpointhash(prev + row)hash(prev + row)hash(prev + row)UPDATE and DELETE refused once hashed
Append-only, hash-chained, anchored, signed.
What chaining proves, and what it does not
A hash chain is tamper-evident, not tamper-proof: verifying it proves the recorded sequence is internally consistent. It is the external, independent anchor that proves the chain's state at a given moment was not rewritten afterward — the chain alone cannot prove that on its own.

Security of the platform itself

Every response the application returns — HTML pages and API responses alike — carries a set of security headers: a strict Content Security Policy scoped to the platform's own origin, with a fresh nonce minted per request for the two inline scripts the app needs, X-Frame-Options: DENY, and a locked-down Permissions Policy disabling camera, microphone, geolocation, and payment API access by default. Session cookies are HttpOnly (unreadable to page script), SameSite=Lax, and marked Secure on every connection except plain-HTTP localhost. A session token itself is never stored — only its cryptographic digest — so reading the database does not hand over a usable session. See Lockdown & inline protection for how the platform responds if it is itself compromised.

What we do not promise
Sentinelleai is a hosted service. Using it means your data leaves your own perimeter and is processed on Sentinelleai's infrastructure (and, for on-demand forensics, on a rented GPU for the duration of that analysis). For teams that need their most sensitive material to never leave their own network, an own-endpoint tier exists for the forensic-analysis service specifically — ask about it rather than assuming the default hosted path covers that requirement.