Workflow Builder

Execution artifacts and the Debugger

See exactly what an agent did, what was sent to the model, and what it recalled: durable per-run artifacts, the action ledger, blackboard recall, and captured prompts

Why this exists

An agent's visible output is the last thing it produces. Everything that got it there, the searches it ran, the pages it fetched, the queries it issued, the prompt the model actually received, used to live only in memory for the length of the run and then disappear. When an answer was wrong, there was nothing to look at.

MagOneAI persists that working layer. As an agent runs, its intermediate results are written to the Blackboard: a run-scoped, durable store of artifacts. Those artifacts then do three jobs.

Explain the run

Every tool result, the exact prompt sent to the model, and the path the agent took, all inspectable after the fact.

Stop repeated work

An agent re-entering a node is told what it already did this run, so it doesn't redo it.

Let the agent recall

An agent can search back over the full detail of its own earlier steps instead of running the same tool twice.

Everything on this page is run-scoped. Artifacts belong to one execution and are never visible to another run, another project, or another tenant. For memory that survives across runs, see conversational memory and the Super Agent's long-term memory.

What gets stored

Each artifact is one intermediate result. A short summary and its metadata live in the database; the full body is offloaded to object storage under a tenant-scoped key and fetched on demand. Each row also carries an approximate token size, so you can see what a step actually cost in context.

KindWritten whenIndexed for recall
tool_resultAn agent's tool call returnsYes
sub_agent_resultAn Agent node's final output is captured at finalize; also every Super Agent capability resultYes
plan_stateAn agent pass ends, recording the ordered path it tookNo
agent_promptImmediately before each request to the model providerNo
trajectoryAn agent pass ends, as a complete ATIF recordNo
planner_noteReserved for planner scratch notesNo

Only tool_result and sub_agent_result are embedded for search. Captured prompts, saved paths, and trajectories are durable and inspectable but deliberately kept out of recall, so they can never pollute what an agent gets back when it queries the Blackboard.

Identity and re-entry

An artifact is keyed by the step that produced it: the activity, the pass sequence, and the call. That gives two behaviours you want:

  • A Temporal retry of the same pass writes to the same key and de-duplicates, so a retried step doesn't double-log.
  • A goto re-entry of the same node is a new pass, so it writes a new row. The history of each pass is preserved rather than overwritten.

The Debugger

Open an execution and the Debugger panel gives you the run's glass-box view across three tabs:

TabShows
VariablesThe variable store: what each node declared as output and what downstream nodes can reference
BlackboardThe run's artifacts, by step
MemoryFor a Super Agent, the remembered entries and run episodes injected into this run

Per-step panels

Inside the activity log, an agent step renders two additional panels when the corresponding capture is enabled. Both are scoped to one pass, so a self-looping node shows each pass separately rather than repeating every artifact under every pass.

Prompt sent to LLM. One entry per model round-trip, listed chronologically as LLM call 1, 2, 3…. On a multi-iteration run you can watch the conversation grow as tool results are appended.

Artifacts (N). The step's tool results and captured outputs, each with a kind badge, its label, its token size, and a one-line summary. View full hydrates the complete body.

The action ledger

An agent that re-enters a node starts with a fresh conversation, which means that without help it happily reruns the search it already ran two passes ago.

The action ledger prevents that. At prepare time, the platform builds a compact block from this execution's artifacts, scoped to this one agent, and appends it to the system prompt:

## Actions already taken this run
You have already performed these tool calls in this run. Do NOT repeat an
identical call (same tool + same arguments); reuse the stated outcome or
refine your approach. For the full result of any call, use the blackboard.

- web_search({"query":"Q3 revenue guidance"}) -> Found 8 results; top result is the Q3 earnings release…
- fetch_page({"url":"https://…/q3.html"}) (failed) -> 404 Not Found
  • Identical calls (same tool, same arguments) are collapsed to one line.
  • The outcome is the artifact's summary, trimmed to 200 characters and flattened to a single line.
  • Failed calls are marked (failed), because a failure is information too.
  • At most 30 lines are shown, most recent last.
  • Non-tool kinds are excluded, so captured agent outputs, saved paths and trajectories never render as phantom tool lines.

The ledger is skipped for chat and free-text agents, and it is best-effort: if it can't be built, the run proceeds without it.

Blackboard recall

The ledger gives an agent a one-line reminder. When it needs the full result of something it already did, it uses the __query_blackboard tool:

{
  "query": "Q3 revenue guidance from the earnings release",
  "top_k": 5
}
  • query: what to recall, stated with specific terms and entities.
  • top_k: 1 to 10 results, default 5.

The search covers only the current execution's artifacts. The execution id comes from the run context and is never taken from a model-supplied argument, so an agent cannot target another execution or another tenant no matter what it's told to do. If recall is unavailable, it returns empty rather than failing the run.

Recall is exposed per agent through the agent's query blackboard capability, which is off by default, and requires the deployment to have retrieval enabled. When it's on, the platform adds a short nudge to the system prompt so the agent knows the tool is there. Recall is a choice the model makes, not something the platform forces.

Recall ranks tool results and captured agent outputs together, by relevance to your query. Deployments can optionally blend in recency so the freshest matching artifact wins on near-ties, which is useful for long runs where the same query is re-issued as data changes.

Use the variable store for deterministic hand-offs between nodes, an exact reference to an exact field. Use recall when an agent needs to search back over the detail of its own earlier work in the same run. They solve different problems; recall is not a substitute for wiring your data flow properly.

The path an agent took

When plan-state persistence is enabled, each agent pass also records its ordered tool-call path: the sequence of calls as they happened, with only consecutive repeats collapsed:

web_search -> fetch_page x3 -> query_table -> web_search

This is a trajectory, not a set: a tool appearing twice at different points appears twice. It answers "what route did this agent take", which a de-duplicated list can't. Saved paths are never indexed, so they stay inspectable without affecting recall.

Captured prompts

The Prompt sent to LLM panel shows the exact request body sent to the model provider, not a reconstruction. It is captured inside each provider adapter immediately before the HTTP request, which has two consequences worth knowing:

  • It is the true post-transform payload for that provider: the separated system field, the provider's own message and content structure, converted tool schemas, and any JSON or thinking parameters.
  • A failed call still shows what was sent. When a provider rejects a request, the payload is the first thing you want, and it's there.

Every round-trip is captured, indexed by the loop iteration (or structured-output retry), so a multi-step agent yields one entry per call rather than only the opening prompt.

A captured prompt contains everything the model was sent: your instructions, retrieved knowledge-base content, tool results, and attached document text. Treat the panel as sensitive: it is project-scoped and requires access to the execution, but it is the fullest view of a run that exists.

Prompt capture is a standalone capability: a deployment can enable it without enabling the rest of the Blackboard. Captured prompt bodies are retained for 90 days by default, longer than ordinary artifacts, because debugging a bad answer often starts after the report comes in.

Trajectory capture

A trajectory is a canonical, replayable record of one agent pass in ATIF v1.7 (Agent Trajectory Interchange Format), a portable format that external evaluation and training tooling can read directly.

One record contains the ordered steps of the pass (the system step, the user step, one agent step per loop iteration, and the terminal answer) with each agent step's tool calls and their observation results, plus aggregate metrics for the pass and the model or adapter that produced it.

What it's for

Replay and debugging

Reconstruct exactly how a pass unfolded, turn by turn.

Offline evaluation

Score real runs against expectations without re-running them.

Fine-tuning

Assemble reward-filtered training sets from real production behaviour.

Successes and failures are both captured

A successful pass is tagged outcome: success. Failures are captured too, as negatives, with a reason that distinguishes two very different things:

ReasonWhat went wrong
output_validationThe reasoning was right; the result didn't match the declared output schema
loop_failureThe agent never produced a valid answer at all

That distinction matters for anyone building a dataset from these: filtering on outcome alone trains against good reasoning that was merely mis-formatted. Filter on the reason.

How observations are stored

Full results are inlined for system, MCP and table-query tools. Results from knowledge-base search, recall and error paths are stored as a 500-character preview and flagged as truncated, but each observation also carries a pointer to its matching tool_result artifact, so the full body can always be hydrated from the Blackboard.

Turning it on

Trajectory capture is off by default and requires three separate opt-ins, because it records production runs:

The deployment enables the master switch

A platform-level flag that is off by default, hard-disabling capture fleet-wide. While it's off, the per-use-case toggle is hidden entirely.

Artifact storage is enabled

Capture depends on artifacts for full observation fidelity. Without it, the pointers back to tool results would dangle.

You opt a use case in

In the use case's edit dialog, a Trajectory capture toggle: "Record each agent run as a training-ready trajectory for replay, evaluation, and fine-tuning. Off by default; enable only for use cases whose runs you want captured."

Once all three are on, every agent pass in that use case is captured, including chat and free-text passes, which are often the most valuable to capture. Trajectory bodies are retained for 90 days by default so a corpus isn't swept before anyone builds a dataset from it.

Retention

Artifacts are hard-deleted on a schedule, both the database rows and the stored bodies, with a per-kind lifetime:

KindDefault retention
Ordinary artifacts (tool results, agent outputs, saved paths)30 days
Captured prompts90 days
Trajectories90 days

The sweep runs automatically (daily by default) and can also be run on demand by an administrator. Retention exists so that the Blackboard's storage cost stays bounded. It is a hard delete, not an archive.

Tenancy and safety

  • Reads are project-scoped. Listing an execution's artifacts and hydrating a body both require the project, enforced at the repository layer.
  • Bodies are stored under tenant-prefixed keys that include the organization and project, so a key can't be guessed across a boundary.
  • Recall takes its execution id from the run context, never from the model, which closes the obvious injection path.
  • Every write is best-effort. Artifact capture, the ledger, recall, prompt capture and trajectory capture all swallow their own failures. None of them can fail an execution. If capture is unavailable, the run completes normally and the artifact is simply absent.

API

Two read-only, project-scoped endpoints back the UI:

MethodPathPurpose
GET/api/v1/executions/{execution_id}/artifactsList artifact summaries for an execution. Supports filtering by kind, and exclude_kind (repeatable).
GET/api/v1/artifacts/{artifact_id}Hydrate one artifact's full body.

Both require project_id. Kind filtering is enforced server-side.

What's enabled by default

Each capability is independently controlled by your deployment, so what you see depends on how your platform team has configured it:

CapabilityTypical defaultRequires
Artifact storage (the Blackboard)Onn/a
Action ledgerOffArtifact storage
Blackboard recall (__query_blackboard)OffArtifact storage, plus the agent's query blackboard capability
Saved tool-call pathOffArtifact storage
Prompt captureOffNothing (standalone)
Trajectory captureOffArtifact storage, plus a per-use-case opt-in

If a panel described here doesn't appear on your executions, the corresponding capture is off for your deployment rather than broken. Ask your platform administrator.

Next steps

MagOneAI© 2026 Magure, Inc.

On this page