Skip to main content
Every completed Invoke call returns an execution trace. The trace is a timestamped record of every control decision, tool attempt, reconciliation check, and policy event that occurred during execution. It is attached to the response and stored against the execution record.

What a trace contains

{
  "execution_id": "exec_abc123",
  "status": "reconciled",
  "final_outcome": "already_succeeded",
  "idempotency_key": "charge:cust_123:2400",
  "retry": "blocked",
  "trace": [
    {
      "step": "commit_record_created",
      "timestamp": "2026-05-25T10:00:00Z"
    },
    {
      "step": "tool_call_attempted",
      "timestamp": "2026-05-25T10:00:01Z",
      "detail": "stripe.charge_customer returned unknown outcome"
    },
    {
      "step": "outcome_reconciled",
      "timestamp": "2026-05-25T10:00:02Z",
      "detail": "live state confirms charge already succeeded"
    },
    {
      "step": "retry_blocked",
      "timestamp": "2026-05-25T10:00:02Z",
      "decision": "do_not_retry"
    },
    {
      "step": "trace_returned",
      "timestamp": "2026-05-25T10:00:02Z"
    }
  ]
}

Lifecycle trace steps

Every execution record moves through a defined sequence of trace steps:
StepWhen it appears
commit_record_createdAlways — before any external call
tool_call_attemptedEvery time the tool is dispatched
scope_check_failedWhen the agent ID or tool is outside registered policy
outcome_reconciledWhen an unknown outcome is resolved
retry_blockedWhen reconciliation returns do_not_retry
approval_requestedWhen an approval-bound tool is staged
approval_grantedWhen a reviewer approves
approval_rejectedWhen a reviewer rejects
state_revalidatedBefore an approved action executes
replan_requiredWhen live state has drifted
trace_returnedAlways — final step

Using traces for debugging

When something unexpected happens — an action was blocked, a retry fired, a replan was triggered — the trace tells you exactly why. Every decision has a timestamp and a detail field explaining what Invoke checked and what it found. Access traces from:
  • The Invoke dashboard — browse by agent ID, execution ID, or time range
  • The API response — every invoke.call() response includes the trace inline
  • Execution records — traces are stored against the execution ID for later retrieval

Next steps