Dan Birman

Questions with a shelf life

Agent Trust Patterns · 03 · v1 · Oct 2026 · 4 min

An agent that asks a question two hours into a task has already done two hours of work on a guess. Questions lose value as work goes on, and some lose it fast. Ask early, say what you’ll assume if nobody answers, and once an answer can’t help this run, offer a new run instead.

The problem

Long-running agents either interrupt constantly or never ask at all. In an early hands-on review of OpenAI’s Operator, TechCrunch’s Maxwell Zeff wrote: “Too often during my test, I had to answer several questions, grant permissions, fill out personal information, and help the agent when it got stuck.” A 2026 study measured when questions help. On the benchmark with the clearest timing signal, questions about the goal lost nearly all their value after 10% of the work, and questions about inputs kept value through roughly 50%. Some late questions did worse than never asking. In 300 sessions where three frontier models could ask whenever they chose, they asked too late for goal questions or never asked at all.

The pattern

  1. Ask everything you can up front. Before starting, the agent lists the decisions it expects to need, in one place.
  2. Say what you’ll assume. Every question shows its default, so silence becomes a decision you can see.
  3. Show when each question expires. Expiry follows progress, not the clock. A question about the goal expires early. A question about a detail lasts longer.
  4. Late answers start a branch, not a U-turn. After a question expires, answering offers a rerun from the last checkpoint, with the change, instead of changing course mid-task without telling you.

Try it

An assistant is planning a team dinner for eight. It asks four questions up front, then starts. Answer some, ignore others, and try answering one after it expires.

0%

      Prototype. Made-up task. The run is compressed to about 30 seconds. With the pattern on, the assistant never stops to wait: an unanswered question takes its default when it expires, and a late answer starts a branch from a checkpoint while the current run keeps going. Without it, the questions have no defaults, and the run stops at each one you haven’t answered.

      Why I care

      Pending your edit

      At Ruli, we interviewed lawyers and watched session recordings. Lawyers who opened the AI chat often gave up quickly. They knew what they needed but not how to phrase it, so the first answer missed, and every follow-up question came too late to save the session. We tried a step-by-step wizard, then the same wizard in its own tab, then a blank box. What worked was asking the structured questions at the very start, when they mattered, and then staying out of the way.

      The evidence

      Timing results: Gulati et al., “Ask Early, Ask Late, Ask Right”. Underspecification comes in kinds, and not every gap matters to the outcome (Pu et al.). Anthropic found that on the most complex tasks, Claude Code stops to ask for clarification more often than people interrupt it (Anthropic). The Magentic-UI team writes that the main problem in tuning when their agent asks for help is “the lack of ground truth signals for when is the right time to interrupt the user” (Mozannar et al.).

      Closest prior work

      When Devin 2.1 isn’t confident in its approach, it asks clarifying questions (Cognition). Claude Code can rewind to checkpoints (Anthropic). LangChain’s ambient-agent design sorts interruptions into notify, question, and review (LangChain). None of them show the assumed default and an expiry on each question, or treat a late answer as a fork.

      To build it, start from an AG-UI interrupt’s optional expiresAt, since MCP elicitation has no expiry field a client can read; an expired AG-UI interrupt can only be abandoned, while this pattern ties expiry to progress and falls back to a stated default (how all six map to today’s protocols). The demo is plain HTML and JS in this page’s source. A package comes later.

      Watch for

      Don’t hard-code the expiry points. The 10% and 50% figures come from one benchmark, and the study’s other benchmarks showed different timing, so treat them as a starting point to tune per task. And don’t turn defaults into a trap: a default that spends money should still wait for an answer.

      All patterns