Agent Reliability LabDiscuss your needs
Automation

Multi-Agent Workflow Latency: Find the Gaps Between Handoffs

Use a production log to inspect multi-agent workflow latency, separate message gaps from processing time, and choose the next handoff event to record.

A multi-agent workflow can produce useful answers quickly and still take much longer to close the task. The useful diagnostic question is where elapsed time accumulates: before an agent receives work, during its processing, at a human decision, or after the result is ready.

Our production team log exposes part of that picture. A task to investigate indexing and prepare a content fix reached final acceptance in 2,099 seconds. The largest visible gap between adjacent channel messages was 936 seconds. Those are observations about the workflow’s record, not measurements of model processing or an agent’s queue.

The distinction matters when deciding what to change. A long silence is a place to investigate. It does not, by itself, tell you to replace the model or add another worker.

A production run with a visible interruption

On 29 October 2026, an orchestrator assigned an indexing investigation to a manager. The manager delegated checks to specialists. Their reports informed a patch, which then went through build, deployment and verification.

The elapsed time from the initial assignment to the ready patch was 1,368 seconds. Final acceptance came at 2,099 seconds. These intervals include coordination and checks; they do not isolate computation.

The panel also recorded a loop guard. From the guard message to the orchestrator’s technical explanation, 1,085 seconds elapsed. However, specialist messages continued after the guard. The longest adjacent-message gap was 936 seconds, within that broader interval.

Observed intervalSecondsWhat it establishes
Initial assignment to ready patch1368Elapsed time to that recorded milestone
Initial assignment to final acceptance2099Elapsed time across the recorded cycle
Last specialist message before the long silence to the next channel message936The largest visible adjacent-message gap
Guard message to technical explanation1085A broader, overlapping interval

The last intervals overlap. Adding them would count part of the same time twice.

The operator attributed the interruption to the guard. The log supports the presence of the guard and the subsequent message gap. It does not establish that every agent stopped, or how much faster the task would have finished with a different configuration.

Read the chart as a record of messages

Observed gap between channel messages (seconds) — calculated from displayed timestamps. Each category represents the next pair of adjacent messages in the exported sequence. The horizontal spacing represents message order, not a continuous time axis. The largest bar is 936 seconds. This is a single production run, not a benchmark.

Observed gap between channel messages (seconds)
Observed gap between channel messages (seconds)Production team log, 29 October 2026. Gaps calculated from displayed timestamps. Message order is categorical. These are channel gaps, not measured processing durations. E1-E2: 43; E2-E3: 10; E3-E4: 1; E4-E5: 0; E5-E6: 4; E6-E7: 14; E7-E8: 15; E8-E9: 12; E9-E10: 5; E10-E11: 5; E11-E12: 3; E12-E13: 1; E13-E14: 20; E14-E15: 0; E15-E16: 53; E16-E17: 38; E17-E18: 55; E18-E19: 936; E19-E20: 3; E20-E21: 0; E21-E22: 5; E22-E23: 16; E23-E24: 5; E24-E25: 9; E25-E26: 115; E26-E27: 36; E27-E28: 17; E28-E29: 31; E29-E30: 14; E30-E31: 6; E31-E32: 12; E32-E33: 2; E33-E34: 15; E34-E35: 80; E35-E36: 19; E36-E37: 26; E37-E38: 8; E38-E39: 80; E39-E40: 12; E40-E41: 18; E41-E42: 29; E42-E43: 16; E43-E44: 26; E44-E45: 16; E45-E46: 12; E46-E47: 5; E47-E48: 35; E48-E49: 129; E49-E50: 14; E50-E51: 18; E51-E52: 2; E52-E53: 15; E53-E54: 23; E54-E55: 15. Seconds.03006009001,200E1-E2: 43E2-E3: 10E3-E4: 1E4-E5: 0E5-E6: 4E6-E7: 14E7-E8: 15E8-E9: 12E9-E10: 5E10-E11: 5E11-E12: 3E12-E13: 1E13-E14: 20E14-E15: 0E15-E16: 53E16-E17: 38E17-E18: 55E18-E19: 936E19-E20: 3E20-E21: 0E21-E22: 5E22-E23: 16E23-E24: 5E24-E25: 9E25-E26: 115E26-E27: 36E27-E28: 17E28-E29: 31E29-E30: 14E30-E31: 6E31-E32: 12E32-E33: 2E33-E34: 15E34-E35: 80E35-E36: 19E36-E37: 26E37-E38: 8E38-E39: 80E39-E40: 12E40-E41: 18E41-E42: 29E42-E43: 16E43-E44: 26E44-E45: 16E45-E46: 12E46-E47: 5E47-E48: 35E48-E49: 129E49-E50: 14E50-E51: 18E51-E52: 2E52-E53: 15E53-E54: 23E54-E55: 15E1-E2E1-E2E2-E3E2-E3E3-E4E3-E4E4-E5E4-E5E5-E6E5-E6E6-E7E6-E7E7-E8E7-E8E8-E9E8-E9E9-E10E9-E10E10-E11E10-E11E11-E12E11-E12E12-E13E12-E13E13-E14E13-E14E14-E15E14-E15E15-E16E15-E16E16-E17E16-E17E17-E18E17-E18E18-E19E18-E19E19-E20E19-E20E20-E21E20-E21E21-E22E21-E22E22-E23E22-E23E23-E24E23-E24E24-E25E24-E25E25-E26E25-E26E26-E27E26-E27E27-E28E27-E28E28-E29E28-E29E29-E30E29-E30E30-E31E30-E31E31-E32E31-E32E32-E33E32-E33E33-E34E33-E34E34-E35E34-E35E35-E36E35-E36E36-E37E36-E37E37-E38E37-E38E38-E39E38-E39E39-E40E39-E40E40-E41E40-E41E41-E42E41-E42E42-E43E42-E43E43-E44E43-E44E44-E45E44-E45E45-E46E45-E46E46-E47E46-E47E47-E48E47-E48E48-E49E48-E49E49-E50E49-E50E50-E51E50-E51E51-E52E51-E52E52-E53E52-E53E53-E54E53-E54E54-E55E54-E55Adjacent event pairSeconds

Production team log, 29 October 2026. Gaps calculated from displayed timestamps. Message order is categorical. These are channel gaps, not measured processing durations.

The separate guard-to-explanation interval is 1,085 seconds. It is not another bar to add to these adjacent gaps.

The export’s precomputed gap column differs slightly from differences calculated using its displayed timestamps. This chart consistently uses the displayed times, which have second-level precision. The original fractional timestamps are unavailable in this export.

Draw the handoffs without inventing a serial pipeline

Observed production team workflowA manager delegates checks to specialists. Reports feed a patch, followed by build, deployment and verification. Parallel branches do not indicate measured execution timing.timing annotation

Orchestrator assigns task

Manager delegates checks

SEO checks

Content checks

Infrastructure checks

Developer checks

Manager reviews reports

Patch prepared

Build

Deployment

Live verification and acceptance

Guard event recorded

The sequence also contained rework. A patch-format issue and a build failure required attention before closure. A diagram that collapses those boundaries into a single “agent execution” box would hide information needed to diagnose the cycle.

For a workflow built around recurring launches, check the expected result and delivery separately. A process starting or a status turning green does not close every boundary.

What to record in your own handoff log

Start with a task identifier that survives delegation. For each handoff, record these events from the systems that actually observe them:

FieldOperational definitionIf it is missing
handoff_readyThe sender has completed and released the input the receiver needsThe beginning of the handoff interval is unknown
receiver_startThe receiver begins processing that specific inputQueue delay cannot be separated from processing
finishThe receiver completes the agreed output boundaryProcessing duration cannot be closed
clock_basisTimezone and clock source for the eventsCross-system subtraction may be misleading
branch_and_dependenciesWhich inputs this step needs and which work can run concurrentlyA serial total may misrepresent the workflow
result_checkEvidence that the agreed output passed its checkCompletion remains an agent claim

When those events share a usable clock basis, calculate:

def handoff_durations(handoff_ready, receiver_start, finish):
    """Proposed worksheet calculation; inputs are comparable datetimes."""
    if not handoff_ready <= receiver_start <= finish:
        raise ValueError("Check event order and clock basis")
    return {
        "wait_seconds": (receiver_start - handoff_ready).total_seconds(),
        "service_seconds": (finish - receiver_start).total_seconds(),
    }

This is a proposed calculation for an instrumented journal. It was not used to recover missing processing events from our channel.

In our export, a manager’s assignment was followed by a recipient’s acknowledgement after 14 seconds. The ready patch appeared 115 seconds after that acknowledgement, or 129 seconds after assignment. An acknowledgement establishes that a message was sent; it does not establish the exact processing start. Those elapsed intervals therefore cannot fill the wait and service fields above.

For parallel branches, follow dependencies to the result that closes the task. Do not add overlapping branch durations as if all work happened consecutively. The multi-agent dashboard case provides a related view of work that combines outputs from several agents.

Use an unknown boundary to choose the next observation

If the record stops at a handoff, improve receipt and processing-start events. If a result is ready but the next decision is absent, inspect that decision boundary. If a build fails, keep its execution evidence separate from the agent’s completion message.

Our log identifies a large visible gap and several workflow boundaries. It does not identify a typical delay, an isolated processing bottleneck, or a measured improvement after a fix. Better instrumentation would let the next investigation distinguish those possibilities without treating silence as a diagnosis.

Agent Reliability Lab
AI consultant

AI replies may be wrong. Messages and chat history are sent to an external AI service. Do not share passwords or confidential information. Privacy · Contact the studio directly