Background agent work log
When an agent runs unsupervised, a supervisor — human, another agent, or the same agent after a pause — wants to check state without reading the transcript. "What's the agent doing right now? Which runs are stuck? What did it finish overnight?" are logbook queries.
run_id + step numberSchema
| Column | Meaning |
|---|---|
| run_id | Which background run this step belongs to. |
| timestamp | When the step happened. ISO 8601. |
| phase | High-level phase: plan, gather, act, verify, report. |
| action | What the agent did. Short verb phrase. |
| status | in-progress, done, blocked, failed. |
| artifact_ref | Link to file, URL, or tool output produced. |
| next_intent | What the agent plans to do next. Key for resuming after a pause. |
| blocked_on | If status=blocked, what's needed to proceed. |
Sample data
Common queries
# What's running right now?
filter status=in-progress
# Which runs are stuck awaiting humans?
filter status=blocked
group_by blocked_on
# Everything completed overnight
filter timestamp >= 2026-04-15T00:00Z
AND status=done
The agent's own next turn also reads its prior rows to re-orient after a pause or handoff. Self-continuity across time fits the concept: the agent consults its record later without rereading its full transcript.
Actions
Visualize. Dashboard renders one row per active run_id with its latest phase, status, next_intent. Queries power cards like "stuck-on-approvals" and "completed-overnight."
Trigger follow-up agent. A supervising agent polls status=blocked, fetches the blocked_on context, and either unblocks directly or notifies the right human.
Different phases produce different fields. A verify step has artifact_ref; a blocked step has blocked_on; a gather step might carry a nested tool-call payload. JSONL keeps the envelope stable while the payload stays soft. Still appendable, still greppable.