Coding agents can ask the user questions (question / AskUserQuestion), but they have no standard way to say:
“I’m still alive — waiting on a compile / subagent / long job.”
So today they either:
- look frozen
- burn tokens polling
- abuse the question tool for status updates
Control surfaces (T3 Code, etc.) already have UI for Working / Waiting — they just don’t get a clean signal from the model.
Classic waiting UX:
(xkcd 303)
A tiny, non-blocking twin of question:
progress({
id: "compile-1", // stable id → update / clear later
status: "running" | "done" | "error" | "waiting",
title: "Waiting on tsc",
detail?: "34s elapsed",
progress?: 0.65 // optional 0–1
})
Rules:
- fire-and-forget (does not the agent)
- same
idupdates in place - never requires a human reply
- harness / UI decides how to render (toast, status bar, Agents panel, OSC, …)
question = “I need you.”
progress = “I’m still working.”
(xkcd 927)
One small shared shape beats five slightly different notify plugins.
- Agents — honest status without polling or fake questions
- Harnesses (OpenCode, Claude Code, Codex, …) — one tool to implement
- Control surfaces (T3 Code, etc.) — one event to map into existing UI
Draft only. OpenCode already has community notify plugins; MCP has progress notifications. Nothing cross-harness is standard yet.