Observability Audit log

Audit log

Requires the Pro plan or higher; see Billing.

The audit log is an append-only record of every governed action. Each entry includes the hash of the entry before it, so editing or deleting any row breaks every hash after it. Tampering is detectable, not impossible.

Forgebench writes each audit row as part of the governed call itself, not from traces or logs afterwards.

The audit log: the list, a row's full detail, and the chain verdict

Reading the list

Each row is one governed action: when it happened, who or what did it, what it acted on, a shortened hash, and its state. Select a row for its position in the chain, both full hashes, a summary of what happened, and a link to the call's trace when one exists.

FieldWhat it is
SequenceIncreases per workspace. Ordering by sequence reconstructs the chain.
Event / ResourceWhat happened and to what.
ActorWho or what caused it: a person, an agent, or an API key with no identity behind it.
TraceA link to the call in Traces. Absent on older rows or when tracing is off.
Row hash / Previous hashThe chain. A row's hash is computed from the previous row's hash plus its own contents.

Actor and agent names are looked up when you view the log and aren't part of the hash. Renaming a person or agent changes what old rows display without breaking the chain.

Status

Each entry has one of four statuses, shown as a visual state:

StatusShown asWhat it means
FinalReady (✓)The call completed and was delivered. The only success status.
PendingWorking (◐, pulsing)Written when a call begins. It should resolve almost immediately; a row stuck here means the call didn't complete cleanly.
BlockedAttention (▲)The call completed and was billed, but a policy such as a guardrail or the Tool Registry withheld the result. The detail says why.
FailedFailing (✕)The call broke, for example on a provider error, and was refunded. The detail says why.

A row whose hash doesn't link correctly to the previous row shows as Failing, whatever its status.

The list's status filter has two options: Succeeded (Final) and Failed (any other status).

The hash chain

Walk the chain in sequence order and each link either matches or doesn't. Editing a row, or deleting one and closing the gap, breaks every hash after that point. No blockchain or third party is involved.

The list shows the chain's verdict: verified, or a count of broken links with each affected row marked.

The audit chain doesn't depend on tracing: if Traces is down, audit rows are still written. Refused calls that never reach the provider are recorded too (see Errors and refusals), so denied calls appear alongside successful ones.

Next

Cookie settings

Our Cookie Policy lists every cookie and what it does.