No Silent Agent Actions: UI Reflects Activity Immediately

The Idea

When an agent acts, the UI should reflect it immediately. Silent agents feel broken; visible progress builds trust. The rule is absolute: no silent actions.

A working event vocabulary for chat-style integration:

enum AgentEvent {
    case thinking(String)          // → show as thinking indicator
    case toolCall(String, String)  // → show tool being used
    case toolResult(String)        // → show result (optional)
    case textResponse(String)      // → stream to chat
    case statusChange(Status)      // → update status bar
}

In practice this means: show thinking progress as the agent considers options; show the current tool being executed; stream text incrementally rather than waiting for completion; update task-list progress in real time.

Some tools are noisy — internal checks, repeated lookups — and showing every one of them adds friction instead of trust. An ephemeralToolCalls flag lets you hide internal noise while still showing meaningful actions.

Why It Matters

This is mostly a trust problem, not a technical one. Users assume an agent that’s quiet is either stuck, lying, or doing something they wouldn’t approve of. The cheapest way to defuse all three is to show, in real time, what’s happening. Visible progress is the foundation for users letting the agent take on bigger jobs.