The runtime

An investigation is a record that moves through states.

Not a chat session. Both products, incident triage and governed tool access, run on the same core runtime: an investigation opens on an incident event, accumulates evidence under default-deny policy, and closes with a report that either satisfies review or escalates to a human, every step on the ledger.

Triggered
Investigatinggoverned · every action recorded
Reported · evidence cited
Escalated · human takes over

every action → an entry on the provenance ledger

Architecture-first, cloud-agnostic

Six decisions that make agents governable

Events, not chat prompts

An investigation starts the way a real incident does, an alert, a declared incident, an operator-dispatched event, so the workflow matches operations, not a demo of a chat window.

Default-deny capability policy

Capabilities are enumerable and granted explicitly, tools, queries, namespaces, egress. What wasn't granted doesn't execute, and the denial is recorded.

Governed tool identity

Tool servers are treated as a governed platform interface, not a generic subprocess call: approved identity, typed projection, runtime resolution, drift control.

Append-only provenance

Node messages, tool calls and outputs, model prompts and responses, and configuration overlays are written to a ledger that only grows. History can be read; it can't be revised.

Long-running by design

Real investigations run for hours across distributed systems and unknown unknowns. The runtime holds context, survives restarts, and keeps the trail continuous across responder handoffs.

Humans stay in the loop

A report is a proposal, not an action. Engineers review, confirm, or challenge, and the review itself joins the record, so accountability never silently shifts to the machine.

The model

One runtime, two products

LIFECYCLE

Open on an event

An investigation is created in the investigating state. The agent, tool set, and policy are resolved from the trigger's configuration, not baked into the call site, the same trigger can run a tighter policy in production than in staging.

run.ts
const run = await sentinel.investigations.open({
  trigger: "alert/5xx-telemetry-ingest",
  agent:   "incident-triage",
  policy:  policyFor(env),  // per-environment
  tools:   ["grafana", "kubernetes", "kafka"]
})
// run.state === "investigating"
TOOLS

Calls resolve through the registry

The agent never holds credentials or raw endpoints. It requests a tool; the runtime resolves the request against the approved registry and active policy, executes it, and writes both the call and its output to the ledger.

tools.ts
// in policy: executed and recorded
await run.tools.grafana.query({
  panel: "ingest-5xx", window: "15m"
})
→ ledger: call + output · artifact ev-07

// not granted: fails closed, recorded
await run.tools.k8s.deletePod("ingest-7f2")
→ denied by policy · entry written
REVIEW

The report closes the loop with a human

The posted report cites its evidence and links to the full transcript and provenance trail. An engineer confirms or challenges it; either way the decision is recorded, and the investigation reaches exactly one final state.

INC-4212 · review
report posted · cites ev-07..09 linked
on-call challenges finding 2 recorded
final state: reported once

Why it matters

Governed before it acts. Auditable after.

The question a platform team actually has to answer isn't whether an agent can answer questions about an outage. It's whether they can safely let an agent operate inside production workflows, collect evidence, use tools, maintain context, and support engineers, without becoming an ungoverned source of operational risk. Sentinel exists to make the answer yes, and to make the proof of that answer a property of the runtime itself.

ledger · INC-4212
03:04 · triggered → investigating entry
03:07 · grafana.query · ev-07 entry
03:14 · report posted · 3 citations entry
03:19 · human review · confirmed entry

Build agent operations that enforce what was approved.

Cloud-agnostic, architecture-first, and modeled around the way vehicle data platforms actually run. Start building against the Sentinel runtime.