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
Rendering
tovio audit graph <chg-id> --format mermaidtovio audit graph <chg-id> --format dottovio 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.