{"slug": "proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal", "title": "Proposal: a non-blocking progresstool (twin ofquestion) so coding agents can signal long-running work without looking dead or abusing questions", "summary": "A developer has proposed a non-blocking \"progress\" tool as a counterpart to the existing \"question\" tool, letting coding agents signal long-running work such as compiles, subagents or long jobs without appearing frozen, burning tokens on polling or misusing the question tool for status updates. The draft schema takes a stable id, a status of running, done, error or waiting, plus optional title, detail and 0–1 progress fields, and is fire-and-forget so it never pauses the agent or requires a human reply. The proposal notes that harnesses including OpenCode, Claude Code and Codex would each implement one tool, while control surfaces like T3 Code map a single event into existing Working/Waiting UI, though nothing cross-harness is standard yet.", "body_md": "Coding agents can ask the user questions (`question` / `AskUserQuestion`), but they have no standard way to say:\n\n“I’m still alive — waiting on a compile / subagent / long job.”\n\nSo today they either:\n\n- look frozen\n- burn tokens polling\n- abuse the question tool for status updates\n\nControl surfaces (T3 Code, etc.) already have UI for Working / Waiting — they just don’t get a clean signal from the model.\n\nClassic waiting UX:\n\n*([xkcd 303](https://xkcd.com/303))*\n\nA tiny, non-blocking twin of `question`:\n\n```\nprogress({\n  id: \"compile-1\",           // stable id → update / clear later\n  status: \"running\" | \"done\" | \"error\" | \"waiting\",\n  title: \"Waiting on tsc\",\n  detail?: \"34s elapsed\",\n  progress?: 0.65            // optional 0–1\n})\n```\n\nRules:\n\n- fire-and-forget (does not pause the agent)\n- same `id` updates in place\n- never requires a human reply\n- harness / UI decides how to render (toast, status bar, Agents panel, OSC, …)\n\n`question` = “I need you.”\n\n`progress` = “I’m still working.”\n\n*([xkcd 927](https://xkcd.com/927))*\n\nOne small shared shape beats five slightly different notify plugins.\n\n- **Agents** — honest status without polling or fake questions\n- **Harnesses** (OpenCode, Claude Code, Codex, …) — one tool to implement\n- **Control surfaces** (T3 Code, etc.) — one event to map into existing UI\n\nDraft only. OpenCode already has community `notify` plugins; MCP has progress notifications. Nothing cross-harness is standard yet.", "url": "https://wpnews.pro/news/proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal", "canonical_source": "https://gist.github.com/jakedowns/ddc4eb4817184a074c82c61dc6e7228c", "published_at": "2026-11-13 01:54:45+00:00", "updated_at": "2026-11-13 02:23:08.149169+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "agent-protocols"], "entities": ["OpenCode", "Claude Code", "Codex", "T3 Code", "MCP"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal", "markdown": "https://wpnews.pro/news/proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal.md", "text": "https://wpnews.pro/news/proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal.txt", "jsonld": "https://wpnews.pro/news/proposal-a-non-blocking-progresstool-twin-ofquestion-so-coding-agents-can-signal.jsonld"}}