When an auditor asks "reproduce this exact answer" six months later, you need more than (messages, model). You need the sampling parameters that were actually applied, the prompt template version, the tool set the model saw, and ideally the provider's backend fingerprint — because closed-source providers silently re-release weights.
Just shipped this in redb.Route.Llm 3.1.1: 7 nullable audit fields on every persisted message.
Set on assistant rows:
Temperature, MaxTokens, TopP — effective values (request override → factory default)
ToolSetHash — SHA-256 of canonical {name, description, InputSchema} set, sorted by name. Tool added/renamed/schema-changed → hash changes







