← Back to the journal

Why long-running AI tasks need progress heartbeats

When an AI assistant runs a long multi-step task in silence, users stop trusting it. This post explains why periodic progress heartbeats matter, what they should contain, and how to send them without spamming.

Here's the bottom line: an execution-type AI assistant running a long task must send periodic progress heartbeats, because sustained silence — more than any single misstep — is what destroys user trust. Hand a user an assistant that goes quiet after one message, and they're left guessing whether it's working normally or stuck in a loop.

Why is silence so corrosive? Because trust is built on predictability. A multi-step task can easily run for minutes. If the assistant reports only "received" at the start and "done" at the end, everything in between is a black box. When something does go wrong, the user finds out cold, with no prior signal — and that loss of control is usually worse than the failure itself.

If you've already read how an AI assistant answers "where are you" in chat and why multi-step plans need cross-run persistence, this post fills in the piece that's easiest to miss: during execution, how to keep the user informed with a lightweight heartbeat.

What a progress heartbeat is

A progress heartbeat is a short, periodic one-liner that the assistant sends while a task is running. It's not the final result and not a full audit log — just enough for the user to tell the system is alive and heading in the right direction.

A good heartbeat holds three things:

  1. What just completed — one verifiable fact, not a vague description;
  2. What's happening now — so the user can see you haven't drifted off course;
  3. What's next — a forward expectation of how much longer it'll take.

For example: "Site deployed; now submitting URLs for indexing." The user instantly knows the pipeline is progressing and roughly how much is left.

Why silence hurts trust the most

Users can't tell "normal" from "hung"

The most dangerous moment in a long task isn't an error — it's a long stretch with no output at all. Without a signal, the user is forced to guess. Is it computing, or is it in an infinite loop? Still in bounds, or spiraling out of control? That uncertainty makes people watch the screen and repeatedly ask "how far along?" — creating more friction, not less.

Users lose a sense of control over the result

If you deliver a result after doing all the work silently, the user had zero participation along the way. Even a good outcome leaves them unable to confirm "did you pick the approach I wanted?" For some tasks the intermediate choices matter more than the output — e.g. "should this use 64-bit or 32-bit?" If it runs off and decides silently, the user may have to start over.

Failures get more expensive

If something breaks mid-flight and the assistant never reported, the user finds out at the worst moment. A small issue that could've been fixed in one step becomes a larger loss because of the delay. Early progress updates give the user a window to course-correct.

How heartbeats differ from a final summary

A heartbeat and a closing summary are different things:

  • A heartbeat answers "where are we now?" — it's present-tense;
  • A final summary answers "what was done, what did it produce?" — it's past-tense.

Conflating the two leads to two bad habits: either total silence followed by one monolithic recap, or constant long paragraphs that turn the chat into a log feed. The right pattern is to stay visible with small, light heartbeats during the task, then wrap up with one concise, conclusive summary.

How to send heartbeats without being annoying

More frequency isn't better. What matters is "light" and "informative."

  1. Broadcast only on real progress — don't emit one per tool call; report on meaningful milestones;
  2. Keep it to a single line — glanceable, not something that requires careful reading;
  3. Set a next-step expectation — tell the user what's coming so they can gauge the wait;
  4. Don't spam within one turn — avoid turning the conversation into a stream of logs.

The rhythm principle is: your user should always be able to see you're making progress, yet never feel you're performing.

Why this is product design, not just etiquette

You might think "heartbeats" are just good manners. But for an execution-type assistant, they're part of the product capability. GoWork treats progress reporting as a built-in behavior: during long tasks, the assistant regularly surfaces its current status in the chat, turning execution from a "black box" into a visible, predictable process. The point is to keep the user in command of the task's state — and that sense of command is exactly why people are willing to hand long-running work to an AI in the first place.

To see this collaboration model in person, you can try GoWork on its download page. And if you want to understand why heartbeats also need planning and status queries behind them, read why multi-step plans need cross-run persistence and how an AI assistant answers "task status" in chat.

FAQ

FAQ 1: Do progress heartbeats slow a task down?

No. A heartbeat is just one extra line of text; it costs almost no compute. What actually takes time in a long task is reading files, running builds, and issuing HTTP requests — not that broadcast. By cutting down confirmation messages and follow-up questions, heartbeats often make the overall collaboration smoother.

FAQ 2: Does every task need heartbeats?

No. Only tasks that are long enough for the user to sit and wait need them. For operations that finish in seconds, just return the result. The rule of thumb is: could the user be left waiting in silence for a while?

FAQ 3: How often should heartbeats be sent?

There's no fixed frequency — use milestones instead. Emit one at each major phase transition, or when a long wait is expected. The goal is to keep the user from going a long time without any signal, rather than ticking on a timer.

FAQ 4: What if the task hits an error mid-heartbeat?

Report it honestly. Tell the user what broke, what you tried, and why you're here. Don't mask a confirmed failure with a vague "still processing." Users want the real state, not comfort.

#GoWork#AI assistant#long tasks#progress heartbeats

More from the journal

4 min

Why WeChat Official Account Logins Expire Every 3–4 Days

Three measured rounds show the WeChat Official Account (mp.weixin.qq.com) QR login dies after 3–4 days no matter how active the session is. Here is what still works: expiry alerts, a retry queue and a pre-flight login check.

Read