Every time an agent fires — whether from a trigger or a manual invocation — it writes a run row. The run captures status, tool calls, token usage, duration, and a tool-resolution trace that explains why the agent saw the tools it saw. Runs are how you answer “did it work?” and “why didn’t it work?”Documentation Index
Fetch the complete documentation index at: https://docs.copass.com/llms.txt
Use this file to discover all available pages before exploring further.
What you can do
- List recent runs for an agent.
- Follow runs live as they fire (tail mode).
- Inspect a specific run’s full trace.
- Test-fire an agent synchronously with a synthetic event payload.
Via the Concierge (recommended)
“Show me the last 20 runs for the support agent.” “Why didn’t runThe Concierge reads the run row plus the tool-resolution trace and explains the result in plain English.run_abc123use any tools?” “Test the triage agent with this fake event:{ "title": "broken checkout" }.”
Via the CLI
Via the SDK / API
What a run row contains
| Field | Purpose |
|---|---|
run_id | Stable id; the audit anchor. |
status | succeeded / failed / cancelled. |
trigger_id | Which trigger fired this run (null for manual / test runs). |
tokens_in, tokens_out | Per-run usage. |
duration_ms | End-to-end. |
error_message | On failures. |
tool_resolution_trace | The full audit of which sources resolved, which tools the model saw, which allowlist entries were filtered out. The drift detector. |
Reading the tool-resolution trace
The trace is what makes “agent silently did nothing” debuggable. Key fields:| Field | What it tells you |
|---|---|
sources_resolved | Which tool sources actually built. If pipedream is missing, no integration tools showed up. |
sources_skipped | Sources whose builders soft-failed (most common: missing OAuth). |
tool_names_advertised | The exact strings the model saw. If your expected tool isn’t here, the model couldn’t have called it. |
allowlist_filtered_out | Tools removed because they weren’t in tool_allowlist. |
allowlist_missing_entries | Allowlist entries that didn’t match any real tool — the stale-allowlist drift signal. Fix these immediately. |
duration_ms | How long resolution took. |
One-shot runs from the terminal — copass run
For ad-hoc invocations without setting up a trigger, copass run fires an agent turn from the shell using your connected integrations as tools:
Test before binding
Always test-fire a fresh agent before pointing live triggers at it. The CLI version:run_id synchronously. Pull the trace via runs --follow or ask the Concierge to summarize.
Common patterns
Test → trigger → tail
Test-fire while iterating on the prompt; once it’s working, attach a trigger and use
runs --follow to watch real fires.Debug silent no-ops
“My agent fires but doesn’t do anything” almost always means a tool-resolution issue. Pull the trace; check
allowlist_missing_entries and sources_skipped.Audit by trigger
Filter run history by
trigger_id to see only the runs from a specific binding — useful when one agent has multiple triggers.Cost-watch by token usage
Aggregate
tokens_in + tokens_out across runs in a window to catch a runaway agent before it dents your billing.Next steps
- Build an agent — start here.
- Triggers — what causes runs to fire.
- Tools — diagnose tool-resolution traces.
- Events — the event types streaming during a run.

