Read the whole chain with audit graph

One command that assembles human, token, agent, model and change into a graph.

Written By Dustin

Last updated About 3 hours ago

When you want to answer "who authorized this, through what, running what model, and what did it come from?", the flat log makes you assemble the answer yourself. audit graph assembles it for you.

tovio audit graph <chg-id>

What it walks

Human, then token and any delegation, then agent, then model and tools, then the change, then its rationale and session record, then the audit signature, then parent changes, then checks. One graph over material that was already signed — it stores nothing new and grants nothing.

Four kinds of target

TargetUse it when
chg:<id>You are looking at a specific change.
A commit addressWith or without the blake3: prefix.
task:<id>You want everything one agent task produced. Read the task id off an agent commit with tovio log --entity agent --json.
session:<id>You are tracing one agent session.

Rendering

tovio audit graph <chg-id> --format mermaid
tovio audit graph <chg-id> --format dot
tovio audit graph task:<task-id> --depth 3

--format is json by default, with dot for Graphviz and mermaid for anything that renders Mermaid. --depth bounds how far back the change-to-parent-change walk goes; it defaults to 1, so raise it when you want ancestry rather than a single hop.

Sealed nodes are shown, not hidden

A node you cannot decrypt renders as a typed locked marker rather than being dropped from the graph. This matters more than it sounds: a graph that silently omitted what you cannot read would be a reconnaissance oracle in reverse — you would learn the shape of your own blind spots by their absence, and so would anyone else. The marker tells you something is there and that you cannot read it, which is the honest answer.

When to reach for it

  • An agent commit looks wrong and you want the authorization chain, not the diff.
  • You revoked a token and want to see everything downstream of it.
  • Someone asks which human ultimately authorized a change three delegation hops deep.

An MCP client can ask the same question of itself through the provenance_graph tool, subject to its own scope.