> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invokehq.run/llms.txt
> Use this file to discover all available pages before exploring further.

# execution-records

> Every risky agent action gets an execution record before it touches the outside world — enabling dashboards, replay, debugging, and audit.

Before any tool call reaches the outside world, Invoke commits a durable execution record. This record is the primitive that makes observability, replay, debugging, and audit possible.

## What is an execution record?

An execution record is a persisted object created before a side effect lands. It captures:

* **Execution ID** — a unique identifier for the action
* **Tool name and parameters** — exactly what the agent asked to do
* **Agent ID** — which agent made the call
* **Idempotency key** — the deduplication handle for this action
* **Safety class** — how Invoke classified the tool
* **Timestamp and workflow context** — when it happened and in what run

The record exists before the API call goes out. If the network drops, the agent crashes, or a retry fires, Invoke has the full context to reconcile the outcome.

## Why records come first

Writing the record before the side effect is the key design choice. It means:

* **No silent duplicates** — if a second attempt arrives, Invoke checks the existing record and blocks it if the first already succeeded
* **No lost context** — even if the agent restarts, the execution history is intact
* **No untracked actions** — every risky tool call is accounted for before it happens

## What you can do with execution records

Every execution record feeds into:

| Feature            | What it enables                                                |
| ------------------ | -------------------------------------------------------------- |
| **Dashboard**      | See every agent action in real time                            |
| **Replay**         | Re-run an execution against its original parameters            |
| **Debugging**      | Inspect exactly what the agent called, when, and what happened |
| **Audit**          | Prove what your agent did and didn't do in any run             |
| **Reconciliation** | Resolve unknown outcomes against the committed record          |

## Record lifecycle

An execution record moves through these states:

1. **created** — record committed before the tool call
2. **attempted** — tool call dispatched
3. **succeeded / failed / unknown** — outcome from the API
4. **reconciled** — unknown outcome resolved via live state check
5. **blocked** — duplicate attempt stopped by idempotency enforcement

Every state transition is timestamped and appended to the execution trace.

## Next steps

* [Reconciliation](/concepts/reconciliation) — how Invoke resolves unknown outcomes using execution records
* [Traces](/concepts/traces) — the full timeline attached to every execution record
* [Tool Safety Classes](/concepts/tool-safety-classes) — how safety class affects record handling
