ObeliskDB docs Home Whitepaper Console

The guarantees

These are the contracts ObeliskDB enforces on every caller — Obi, an external agent over MCP, a human at the console. Each is structural: enforced in the executor, not requested in a prompt. That distinction is the whole point. A rule in a prompt is advisory — the model can ignore it, injected data can override it, a new session can lack it. The same rule in the engine is non-negotiable.

The six guarantees

GuaranteeWhat it meansHow it is enforced
MeaningOne canonical definition per quantityA governed metric the agent invokes by name; the definition is executed, not recalled
IsolationWrites never hit live data by accidentAuto-staged on a zero-copy branch; a human reviews the diff and merges
ReceiptsEvery answer replayable and citableImmutable history keyed to data versions; time travel reconstructs any past answer exactly
EconomicsA hard ceiling on agent spendA per-session credit budget charged at execution; statements refused once spent
MemoryDurable conclusions that know when they are staleInsights pinned to data versions, permission-checked on read, freshness computed from the version chain
ConfidentialitySensitive columns stay sensitive under attackMasking applied inside the scan rewrite, so even a WHERE filter sees masked values

Each of these is measured, advisory-versus-enforced, in the whitepaper's evaluation. See the whitepaper.

Authority-path controls

The six above bound an agent's blast radius — what it can break once it acts. A second, sharper class bounds the authority path — how an agent is allowed to ask, and whether it can be steered by what it reads.

Compelled governance

A session can be restricted to metrics and insights only. Raw table reads, DML, and DDL are refused in the executor.

ALTER SESSION SET GOVERNED_ONLY = TRUE;    -- raw SQL now refused
SELECT * FROM TABLE(METRIC('revenue'));    -- still works

Launch a governed external agent over MCP with OBELISK_MCP_GOVERNED=1. When imposed on an agent the flag is locked — the agent cannot ALTER its way out. This closes the raw-SQL escape hatch: an agent that cannot emit raw SQL cannot misdefine a quantity or reach an ungoverned column, whatever it is told.

Injection resistance

An agent session refuses irreversible and privileged operations outright — DROP DATABASE/SCHEMA/USER/ROLE/WAREHOUSE, CREATE USER/ROLE/WAREHOUSE, GRANT, REVOKE, ALTER USER, VACUUM, MERGE BRANCH, UNDROP — no matter what a data cell instructs. Ordinary writes still stage on the branch; only these bypass-the-branch operations are blocked, and a human runs them in the console. This is the defense against indirect prompt injection: a "drop the database" hidden in a row has nothing to act on.

Inference control

A table can require that aggregates cover a minimum cohort, defeating reconstruction of individual values by probing tiny groups (the classic statistical-database attack):

ALTER TABLE HR.EMPLOYEES SET AGGREGATION THRESHOLD = 5;
-- an aggregate qualifying fewer than 5 rows is refused

Everything the caller does is on the record

Every statement is logged with its accessed objects and versions, its cost, and (in an agent session) the exact redirected SQL that ran. SHOW AGENT SESSIONS is the audit trail; the control plane's Review queue shows every staged change before you approve it.

Determinism as a dial

Reproducibility is not all-or-nothing. ObeliskDB lets each question choose the guarantee it deserves: