Security

We are asking to run software inside your network

So this page states plainly what the agent can reach, what it may execute, what leaves your perimeter, and who on your side can see what. If any of it is unacceptable, better to know on day one.

Threat model

Written as scenarios rather than assurances, because an assurance you cannot test is worth nothing to the person reviewing this.

The honest framing is that we are asking for read access to production systems from inside your perimeter. That is a significant request and no amount of reassuring language changes its shape. What can change is how much damage is possible if some part of it goes wrong.

Each row below is a scenario your reviewer should be asking about, and what structurally limits it. "Structurally" is load-bearing: several of these are properties of how the system is built rather than policies it follows, and those are the ones worth trusting.

Scenarios and what constrains them
If… The concern What limits it
Our servers are compromisedAttacker sends the agent a malicious instructionThe agent accepts only catalogue identifiers, resolved against a file on your host. There is no code path that executes a statement received over the wire.
Agent credentials are stolenAttacker reads your production dataThe credential is read-only, scoped to named tables and catalog views, with explicit DENY on write verbs. Revocable from your side without involving us.
Agent host is compromisedAttacker pivots into our systemsThe agent holds a tenant-scoped credential and no inbound path exists. Its egress reaches one hostname, which your network policy also constrains.
A redaction rule has a bugA secret leaves your networkon_rule_error: drop_field is the default — a field whose rule throws is discarded rather than transmitted.
Insider at our endReads your production evidenceEvidence is tenant-scoped and access-logged. Retention is short by design, which limits what exists to read.
Insider at your endWidens collection scope quietlyCatalogue and redaction changes are files in your repository, reviewed like any production change; scope changes are recorded in both audit trails.
Boundary

What crosses the boundary

The only question your data protection reviewer actually needs answered.

Everything in the "yes" column is redacted at the agent before it is queued for transmission. Everything in the "never" column has no code path — it is not a policy that could be relaxed by a configuration change or a support request.

What leaves your network, and in what state
Category Leaves? Detail
Query resultsYes — redactedRow-capped, from the approved catalogue only
Matched log linesYes — redactedSelected lines with context. Never whole files
Catalog metadataYesObject, column and module definitions — structure, not contents
Named config filesYes — redactedSecrets removed at the agent before transmission
Source filesOn demandA specific path at a commit, once already implicated
Whole tablesNeverNo bulk extraction path exists
Credentials or secretsNeverBuilt-in redaction rules cannot be disabled
Backups or snapshotsNeverThe agent has no such capability

Network

One hostname, one port, outbound only. The agent initiates every connection and polls for work; there is no mechanism by which we contact your network, including for support.

Complete egress requirement text
# The complete egress requirement. One hostname, one port.
# The agent is proxy-aware and pins our certificate.

destination:  ingest.decim.dev
port:         443/tcp
protocol:     TLS 1.3 (1.2 minimum), certificate pinned
direction:    outbound only — the agent initiates every connection
proxy:        HTTP CONNECT supported (DECIM_EGRESS_PROXY)
inbound:      none. no listening socket, no inbound firewall rule

Because collection is pull-based, there is no standing inbound channel to compromise and nothing to revoke on our side in a hurry — stopping the agent or revoking the database credential you issued ends collection immediately, using only controls you already own.

Execution

What may execute

A finite catalogue of read-only statements, held on your host, reviewed by your team.

The catalogue is a file in your infrastructure listing every query the agent may run, each with a stated purpose, bound parameters, a row cap and a timeout. Adding one is a pull request against your own repository — the same friction as any other production change, and deliberately so.

Database permissions are correspondingly narrow. Most of what an investigation needs is metadata: VIEW DEFINITION, VIEW DATABASE STATE, and read on scheduler tables. Row access is granted on specific named tables, and fact tables are usually granted at column scope — enough to count rows per batch, structurally unable to read an amount or a customer identifier. The full grant set is written out on the agent page.

Redaction

At the agent, before transmission. Not on ingest — by then the data has already left your network.

This distinction is the entire control and it is worth being pedantic about. A vendor that scrubs on receipt has, by definition, received the unscrubbed data: the secret crossed your boundary and existed in their systems. No retention policy undoes that, and no incident report about their infrastructure will exclude it.

Built-in rules cover connection strings, bearer tokens and API keys, private key blocks, and card numbers validated by Luhn check rather than matched by length. They cannot be disabled — not by us, not by an administrator on your side. Custom rules are yours to add, and support substituting a stable truncated hash so a value stays correlatable across artefacts without being readable.

Retention

Retention and deletion

Raw evidence expires well before the diagnosis that cites it.

This asymmetry is intentional. The reasoning in a diagnosis is durable and useful for as long as the incident record matters. The underlying rows are a working artefact of one investigation and there is no reason to keep them once it is settled — so a citation may outlive the evidence it points at, and the record says so rather than pretending otherwise.

Default retention, configurable per tenant
What Retained Note
Raw evidence30 days (configurable)The artefacts themselves — query results, log lines
Diagnosis and reasoningLife of the incident recordClaims and citations; the artefact may already be gone
Topology graphRolling, refreshed on discoveryStructure only — object names, no row data
Audit log12 monthsRetained deliberately longer than the data it describes
On termination30 days, then deletedExport available throughout the window

Access on your side

Seeing that an incident exists and reading production rows are different decisions.

Most people who need to read a diagnosis do not need to see the rows underneath it, and collapsing those into one permission forces an unnecessary choice: either grant broad access or exclude people from the investigation. Raw evidence is therefore a separate grant.

Permissions, and why each is separate
Action Required Why
See that an incident existsAll membersTitles, status and timing carry little sensitive content
Read a diagnosisAll membersClaims and reasoning, with citations
Open raw evidenceSeparate grantRedacted production rows are a deliberately distinct decision
Approve a catalogue queryAdminChanges what the agent is able to read
Change redaction rulesAdminBuilt-in rules cannot be disabled at any level
Widen an incident scopeAdminRecorded in both audit trails

Every one of these actions is recorded. Here is the shape of an audit line as it appears in your own logging, where your SIEM can consume it independently of anything we hold:

Audit line — query execution json
{
  "ts": "2026-08-05T08:14:22.417Z",
  "event": "query.execute",
  "agent": "sql-prod-weu",
  "incident": "INC-1042",
  "catalogue_id": "reject-profile-by-reason",
  "statement_sha256": "9f2c…a41d",
  "parameters": { "schema": "dbo", "table": "RejectedTransactions",
                  "since_utc": "2026-08-05T00:00:00Z" },
  "server": "sql-prod-02", "database": "Sales",
  "rows_returned": 3, "truncated": false, "duration_ms": 412,
  "redaction": { "rules_applied": ["pan"], "fields_dropped": [] },
  "requested_by": "engine/hypothesis:hyp_04"
}

The same record exists server-side and in the investigation timeline. Two independent copies is the design: if they ever disagree, that is a finding, and you should be able to detect it without asking us.

Stage

Our stage, stated plainly

The section most vendors write vaguely. Here is the actual position.

Decim is pre-release. We hold no SOC 2 report, no ISO 27001 certificate, and no external penetration test. All three are on the roadmap and none of them are done. There is no published customer list, and any figure elsewhere on this site is illustrative demo data rather than a measured result.

We could phrase that as "compliance roadmap in progress" and it would technically be true. It would also be the first thing you discovered was hollow, which is a poor foundation for a relationship that begins with us asking for read access to your production databases.

What is available now is concrete and reviewable before any pilot: the agent's permission model, the query catalogue, the redaction rules, the data flow above, and a conversation with whoever on your side has to sign this off. If something here is disqualifying, we would much rather establish that on day one than three months in.

Questionnaire answers

Do you hold SOC 2, ISO 27001 or equivalent?
No. Decim is pre-release and holds no formal attestation today. Both are on the roadmap and neither is complete, and we would rather say that here than have it surface in a questionnaire three weeks into an evaluation. What we can offer instead is specific and reviewable: the agent's permission model, the query catalogue and the redaction rules, in full, before any pilot begins.
Where is data processed and stored?
Evidence is processed and stored in the region you select at tenancy creation. Redaction happens before that — inside your network, at the agent — so the data crossing a region boundary is already redacted. Tell us your residency constraint before a pilot rather than during one; it is a tenancy decision that is awkward to change later.
Do you use our data to train models?
No. Your evidence is used to answer your investigations and nothing else. It is not used for training, not pooled across tenants, and not used to build benchmarks or case studies without a separate written agreement naming exactly what is shared.
Which subprocessors do you use?
Cloud hosting and a model provider, both under data processing agreements. The current list and its change-notification terms come with the pilot documentation. We will not publish a list here that goes stale — ask, and you will get the version that is true this week.
Can we run it entirely on our own infrastructure?
Not today. The agent runs in your network; the investigation engine does not. Fully self-hosted deployment is a real conversation to have with us early rather than a checkbox — for some organisations it is the only acceptable shape, and it is better to establish that before either side invests in an evaluation.
How do we revoke access immediately?
Revoke the database credential you issued, or stop the agent. Both are entirely on your side and neither requires us. Because collection is pull-based and outbound-only, there is no session for us to hold open — an agent that cannot authenticate simply stops.
What is logged, and can we see it?
Every query execution, on both sides. The agent writes an audit line into your own logging where your SIEM can consume it, and the same record exists in the investigation timeline. Two independent copies is the point — a record only we hold is one you have to take on trust.
Has this been penetration tested?
Not yet by an external firm, and it will be before general availability. Saying otherwise would be exactly the kind of claim this page exists to avoid making.

Related: the agent for the permission model and deployment; evidence for what a collected artefact contains; and privacy for the formal position.

Get started

Send us your security questionnaire

We would rather answer it before a pilot than during one. If something on this page is disqualifying, that is a useful thing for both of us to learn on day one.