Built on Y Build Build this app yourself — prompt to deployed, on your own domain. Start free
BuildShipCompareThe LabAbout Start building →
The Lab

Your AI agent has idle time. Prove that extra reasoning is worth buying

Second Thought moves extra reasoning into tool-wait windows. A Build Lab pilot should measure accepted outcomes, wall-clock latency, branch usefulness, cancellation, and fully loaded cost before shipping it.

Maya ChenProduct Experience Editor, YBuild Blog
Published Aug 18, 2026
18 min
read
Hero cover · 1200×600
three builds, one stopwatch
Drop in a real screenshot or render here

An AI agent often stops thinking while a search, test suite, database query, browser action, or remote API runs. The new Second Thought paper treats that action–observation interval as an idle window. Its proposed agent starts four auxiliary reasoning branches after the main thought has chosen an action. Those branches check assumptions, recall constraints, rehearse likely next steps, and propose alternatives. When the observation arrives, incomplete fragments are discarded and completed “atomic thoughts” are attached to the next turn.

The paper reports fewer average turns in all nine tested model–benchmark combinations, statistically significant Pass@1 gains in two, and a 10.9% lower median per-task latency in a paired wall-clock replay. It also reports a less comfortable result: four branches increased per-task API cost by 66.4% to 181.5% in the SWE-Bench Pro configurations. A one-branch variant reduced that overhead to 16.3%–35.5%.

That is not a universal speedup. It is a new place to spend compute.

The product decision for a small team is therefore not “Should we implement Second Thought?” It is: Which tool waits are long and predictable enough that bounded parallel reasoning improves accepted outcomes or user-visible latency after total cost, context growth, cancellation, and failure recovery are counted?

This field note proposes a paired pilot for answering that question. Y Build did not run the experiment described below. Every threshold and result field is intentionally blank or marked as a team decision. The paper’s measurements are author-reported research results on specific models, benchmarks, prices, and harnesses—not observations from your product.

Start with the loop, not the optimization

ReAct popularized a useful agent pattern: interleave reasoning with actions and observations. A simplified turn looks like this:

reason about current state
choose and serialize a tool call
wait for the tool result
read the observation
reason about the next move

The wait is not one thing. It may include request serialization, network transit, queueing, server work, a local process, context assembly, validation, and the return trip. OpenAI’s engineering account of Responses API WebSocket mode separates model inference, API work, and client-side tool/context time, and describes removing repeated processing from multi-turn critical paths. That is a reminder to fix known transport and orchestration waste before adding more model calls.

Second Thought targets a different interval. The main action is already selected, so its branches cannot change the current tool call. They prepare the next turn while the current action is serialized and executed. The reference design uses four roles:

BranchQuestion it preparesProduct risk if wrong
CheckWhich assumption may the observation invalidate?It may anchor the next turn on a false concern.
RecallWhich earlier constraint still matters?It may resurface stale or irrelevant instructions.
RehearseWhat should happen for plausible outcomes?It may overfit to an outcome that never arrives.
AlternativeWhat other route should be available?It may distract the agent from a working plan.

Each branch emits short, independently parseable thoughts. The paper caps the harvest at five thoughts per branch and cancels generation when the observation arrives. If nothing complete is produced, the loop falls back to the baseline behavior.

That mechanism is intelligible. Whether it belongs in your product depends on the shape of your waits, the value of the harvested thoughts, and the real behavior of your provider’s caching and cancellation.

Read the headline results with their denominators

The Second Thought evaluation used three reasoning models and three agent settings: a random 150-task subset of SWE-Bench Pro, 89 Terminal-Bench tasks, and 97 banking tasks in a tool-using dialogue benchmark. The benchmark papers help define those scopes. SWE-Bench Pro is built around long-horizon repository issues, while Terminal-Bench uses containerized terminal tasks with task-specific verification. The related tau-squared benchmark emphasizes dynamic, dual-control support environments where both agent and user can change state.

Those are valuable environments, but they are not a sample of every production agent. A support lookup that returns in 250 milliseconds, a 40-second test run, a five-minute deployment, and a human approval wait create different opportunities and risks.

The paper’s result table also resists a single slogan:

  • average turns fell in all nine model–benchmark pairs;
  • Pass@1 was not significantly different in seven pairs and significantly higher in two Terminal-Bench pairs;
  • main-thread output tokens fell in six pairs, stayed roughly unchanged in others, and increased materially in one setting that also improved accuracy;
  • only 28.7% of turns produced harvested thoughts, although 96.5% of tasks received at least one harvest;
  • the longest-window group produced most of the useful harvest;
  • four branches raised API cost far more than the median latency fell.

The authors attribute much of the cost to repeated cached-prefix input processing. They note that shared KV caches imply low marginal compute inside a suitable serving stack, but a customer pays the provider’s billing policy, not an abstract marginal-compute estimate. Cache discounts, cancellation semantics, concurrency limits, and rate-limit behavior can change the economics.

The responsible reading is bounded: the study shows that tool-wait reasoning can improve the accuracy–latency trade-off in some agent settings. It does not establish that four branches are the right default, that billing will match compute, or that user-perceived latency will improve in your workflow.

Instrument the idle window before adding branches

Run the existing agent unchanged for a representative trace sample. Do not infer opportunity from total task duration. Record each action–observation interval separately.

idle_window_ms = observation_received_at - main_thought_finished_at

For every turn, capture:

FieldWhy it matters
task_id, trial_id, turn_idsupports paired comparison and replay
tool name and effect classseparates read-only waits from side effects
thought end, call dispatch, tool start/end, observation receiptexposes serialization, queue, execution, and return time
cache status and provider request IDstests whether claimed prefix reuse occurred
retry, timeout, and cancellation stateprevents hidden work from disappearing from the ledger
input/output tokens and billed amountmeasures total cost rather than main-thread tokens
terminal task resultkeeps speed subordinate to accepted outcomes

Plot p50, p90, and p95 idle-window duration by tool and task class. Also record the share of turns above candidate branch budgets such as 250 ms, one second, and five seconds. These are descriptive buckets, not universal thresholds.

An optimization has no room to work if most observations return before a branch can produce one valid unit. The paper found that harvest yield rose with window duration; your own distribution decides whether the mechanism has an addressable surface.

Do this trace before writing branch prompts. Otherwise the team may design an elegant concurrency system for waits that barely exist.

Define one product-shaped scenario

Imagine ParcelDesk, a small support product that helps merchants resolve missing-shipment requests. A normal run may retrieve an order, query a carrier, inspect refund policy, draft a response, and—only after an employee approves—create a refund case.

The team sees two slow read-only tools:

  1. a carrier trace that usually takes several seconds and sometimes times out;
  2. a policy search over a large merchant-specific knowledge base.

The product decision is narrow:

Can bounded parallel reasoning during carrier and policy waits reduce accepted-case completion time without increasing wrong-policy drafts, unsupported certainty, approval bypasses, contradictory plans, or fully loaded cost beyond the team’s declared ceiling?

That decision excludes refund execution, permission changes, outbound messages, and other side effects. Auxiliary branches may advise the next reasoning turn; they may not issue tools, reserve inventory, message a customer, or pre-authorize a refund.

The accepted outcome is not “the agent responded.” It is a correctly matched order and carrier event, a policy-grounded draft, an honest uncertainty state when evidence is missing, and no external mutation before approval. The speed numerator is useful only after that contract passes.

Compare baseline, one branch, and four branches

Use a paired fixture set drawn from the task classes the product actually serves. Include ordinary success, slow tool response, empty result, conflicting result, timeout, retry, stale data, policy exception, and a case that must escalate. Freeze the model snapshot, prompts, tool schemas, permissions, retrieval corpus, timeout rules, and terminal grader.

Run three conditions:

ConditionPurpose
A: baselinepreserves the current serial loop
B: one branchtests the strongest task-specific branch under a small budget
C: four branchestests broader preparation and its full overhead

The paper’s ablation found Alternative was its strongest single branch. Do not assume the same role will win for ParcelDesk. A policy-heavy support workflow may benefit more from Recall; a failure-prone integration may favor Check or Rehearse. Select the one-branch role from the product’s failure history, not the paper’s aggregate.

Randomize condition order within each fixture and repeat non-deterministic trials. Reset external state, caches where the comparison requires it, user simulator state, and rate-limit conditions. Store the seed where the provider exposes one, but do not treat a seed as proof of deterministic replay.

Grade the terminal outcome blind to condition and without exposing the branch transcript. Otherwise the condition that emits more fluent advisory text may receive a quality advantage unrelated to the final product state. Review branch usefulness in a separate pass after the terminal verdict is locked.

Use enough trials to detect the minimum change the team would act on. A fixed “30 tasks” rule is not defensible for every baseline rate or latency variance. Pre-register the minimum meaningful latency improvement, tolerated cost increase, severe-failure rule, and uncertainty method. If the sample is too small to resolve the decision, return insufficient_evidence; do not promote the most attractive point estimate.

Keep a branch-value ledger

Main-thread token reduction is not the product outcome. A branch can make the next thought shorter while adding more total tokens, context, and confusion. For every harvested thought, record whether it was usable.

idle_window_trial:
  task_id: "<fixture>"
  condition: "baseline | one_branch | four_branch"
  tool_wait:
    tool: "<name>"
    effect: "read_only | reversible | irreversible"
    idle_ms: null
    branch_budget_ms: null
  harvest:
    completed_units: null
    discarded_partial_units: null
    used_next_turn: null
    duplicated_main_reasoning: null
    contradicted_observation: null
    introduced_stale_constraint: null
  outcome:
    accepted: null
    severe_failure: null
    wall_clock_ms: null
    turns: null
    total_input_tokens: null
    total_output_tokens: null
    billed_cost: null
    human_correction_minutes: null
  cancellation:
    requested_at: null
    provider_confirmed: null
    tokens_after_cancel: null

Classify a harvested unit as used only when the next turn’s action or verified terminal result depends on it. “Appeared in context” is not usage. Track four other outcomes:

  • duplicate: restates the main thought without changing a decision;
  • invalidated: incoming evidence makes it false or irrelevant;
  • conflicting: pushes against a verified constraint or another branch;
  • harmful: contributes to an incorrect action, false claim, or recovery step.

This annotation can begin with a small blinded human sample. A model grader may assist after calibration, but it should not be the only judge of reasoning generated by the same model family. The purpose is not to audit private chain-of-thought. It is to evaluate the short advisory artifacts explicitly inserted into the product context.

Measure the complete critical path and complete bill

Report at least five outcome groups.

1. Acceptance and severity. Task success, terminal-state checks, policy compliance, honest escalation, and zero-observed severe failures with denominators.

2. User-visible time. End-to-end p50/p90/p95, time to first useful status, time to approval-ready draft, timeout rate, and recovery time. A lower average can hide a worse p95.

3. Workflow efficiency. Turns, tool calls, retries, main-thread tokens, total branch tokens, context added, and human correction minutes.

4. Window utilization. Eligible windows, windows with a completed harvest, completed units, useful units, useful units per billed branch request, and useful milliseconds saved.

5. Fully loaded economics. Model input/output, cache reads, tool calls, retrieval, graders, retries, observability, and human review.

Two ratios make the trade-off visible:

useful harvest rate = useful harvested units / completed harvested units

accepted-minute savings per extra dollar =
  (baseline accepted-task minutes - candidate accepted-task minutes)
  / (candidate fully loaded cost - baseline fully loaded cost)

If the denominator is zero or negative, report the direct values instead of forcing a ratio. Compare cost per accepted task, not cost per attempted run. A fast condition that produces more rejected work is not efficient.

Research on other latency mechanisms reinforces this system view. PASTE speculates future tool calls and isolates their results until confirmation; SPAgent uses adaptive speculation and a scheduler that considers engine load. Their methods differ from Second Thought, but both make the same operational point: concurrency can move a bottleneck into wasted work, verification, or overloaded serving capacity. Your pilot must include those costs.

Test the failure modes deliberately

Do not wait for aggregate metrics to reveal a structural bug. Add explicit cases for these failures.

The observation invalidates every branch

Return an unexpected carrier event or permission error. The next turn must privilege verified observation over precomputed advice. Measure whether stale branch text increases correction time.

Cancellation is late or cosmetic

Use short and variable waits. Confirm whether branch requests actually stop, whether the provider continues billing tokens, and whether canceled traffic occupies concurrency or rate-limit capacity.

The harvest expands context without value

Run a long case with repeated waits. Check total context, cache hit behavior, next-turn latency, duplication, and whether earlier user constraints become harder to recover.

Branches disagree

Create a case where Recall says to preserve a strict merchant rule while Alternative proposes a shortcut. The main agent must resolve the conflict against authoritative product state, not choose the more fluent thought.

Parallel load slows the main request

Run the candidate under expected concurrency, not only one task at a time. Four extra generations may compete with the main turn or other customers, especially when provider rate limits or a self-hosted GPU pool are saturated.

Advice escapes into authority

Inspect logs and tool controls to prove auxiliary branches cannot call tools or bypass approvals. A branch is an advisory buffer. It must not become a second control plane.

A “faster” path hides a worse recovery

Inject timeout, partial response, malformed output, and tool retry. Measure final acceptance and recovery minutes. Precomputed plans can accelerate the happy path while making surprise handling brittle.

Use a promotion receipt, not a latency screenshot

Write the decision artifact before looking at results.

parallel_reasoning_promotion:
  scope:
    tools: ["<eligible read-only tools>"]
    task_population: "<declared segment>"
    excluded_effects: ["messages", "refunds", "permission changes"]
  frozen_system:
    model: "<snapshot>"
    harness_commit: "<sha>"
    prompts_hash: "<hash>"
    tool_schema_hash: "<hash>"
    provider_region: "<region>"
  gates:
    accepted_task_delta: "<team-set>"
    severe_failures: "0 observed / <N> trials"
    p95_latency_delta: "<team-set>"
    max_cost_increase: "<team-set>"
    max_harmful_harvest_rate: "<team-set>"
    cancellation_verified: false
  evidence:
    paired_trials: null
    window_coverage: null
    useful_harvest_rate: null
    confidence_or_interval_method: "<method>"
    trace_bundle: "<uri>"
  decision: "hold | shadow | limited_go | promote"
  owner: "<name>"
  reviewer: "<name>"
  expires_on_change:
    - model
    - branch prompts or count
    - provider caching or pricing
    - tool latency distribution
    - permissions or approval flow

The zero is a zero-observed gate with a trial count, not proof that the population failure rate is zero. Promote should be scoped to named tools and task classes. A branch strategy that helps a slow, read-only carrier lookup does not automatically earn access to payment tools or short database reads.

Start in shadow mode. Generate and log the harvested advice but withhold it from the next-turn context. Validate parsing, cancellation, cost, leakage, and window coverage. Then enable it for a small paired cohort with an immediate fallback to baseline. Keep the baseline path deployable.

Know where the technique does and does not fit

The strongest candidates have meaningful waits, repeated multi-step work, explicit terminal verification, and reasoning failures that preparation can plausibly prevent. Examples include repository searches followed by tests, research agents waiting on remote sources, support agents retrieving several policy records, and data workflows with slow read-only jobs.

The weakest candidates have sub-second tools, one-step tasks, scarce concurrency, extreme input-token prices, or side effects that require fresh observation and approval. A high-risk action should not be speculatively authorized. A workflow limited by a human decision has a different idle interval; generating more model advice during that wait may add pressure rather than value.

There are also simpler optimizations. Remove unnecessary turns. Parallelize independent tools. Use persistent connections and caching. Reduce redundant context. Choose a faster model for bounded routing. OpenAI’s current model guidance explicitly recommends comparing total tokens, latency, cost, calls, turns, and retries while preserving the existing quality bar. Parallel reasoning belongs after that basic accounting, not before it.

Finally, the Second Thought paper is a version-one preprint. Its linked anonymous code endpoint returned HTTP 401 to the command-line check in this review session. That does not establish the repository’s general availability, but it means this article relies on the paper’s disclosed method and tables rather than an independent code run. Provider models, prices, caches, and rate limits can change. That uncertainty is a reason to run the pilot, not a reason to copy the result.

A 48-hour Build Lab pilot

Hours 0–4: define the decision. Name the task population, eligible read-only tools, accepted terminal state, severe failures, and the minimum latency or quality change worth buying.

Hours 4–12: instrument baseline waits. Add turn-level timestamps, effect classes, tokens, billing, retries, and terminal checks. Produce the wait distribution by tool.

Hours 12–20: implement shadow branches. Start with one task-shaped branch, interruption-safe units, a hard unit cap, and verified cancellation. Do not insert advice into the live next turn yet.

Hours 20–30: run failure fixtures. Exercise short waits, long waits, contradictory results, timeouts, malformed observations, rate limits, and saturated concurrency. Fix trace or control-plane gaps before judging quality.

Hours 30–42: run paired trials. Compare baseline, one branch, and four branches on frozen fixtures and repeated trials. Review accepted outcomes before economics.

Hours 42–48: sign the receipt. Choose hold, shadow, limited_go, or promote; store the trace bundle and limitations; set expiry triggers; keep rollback to baseline tested.

The most valuable first result may be “our waits are too short” or “one branch captures nearly all useful value.” That is not a failed experiment. It is a saved orchestration project and a cleaner understanding of the product’s real critical path.

The Build Lab conclusion

Second Thought identifies a real design surface: an agent can prepare while the environment is busy. Its evidence also shows why teams should resist the word “free.” Moving reasoning off the sequential path can reduce turns or latency, but it still consumes requests, cached input, output tokens, context, scheduler capacity, and review attention.

Treat the idle window as inventory. Measure how much exists, which waits are eligible, what useful artifacts fit inside, and what each harvested unit costs. Promote parallel reasoning only when accepted outcomes remain intact, user-visible time improves by a meaningful amount, cancellation is real, harmful advice stays below the declared gate, and the fully loaded bill fits the product.

The experiment changes one decision today: do not add four reasoning branches to every tool call. Instrument first, start with one bounded advisory branch on a long read-only wait, and make promotion earn its way through paired product evidence.

References

  1. Sun et al., Second Thought: Reasoning in Parallel as LLM Agents Act and Observe, 2026.
  2. Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models, 2022/2023.
  3. Deng et al., SWE-Bench Pro: Can AI Agents Solve Long-Horizon Software Engineering Tasks?, 2025.
  4. Merrill et al., Terminal-Bench: Benchmarking Agents on Hard, Realistic Tasks in Command Line Interfaces, 2026.
  5. Barres et al., tau-squared-Bench: Evaluating Conversational Agents in a Dual-Control Environment, 2025.
  6. Sui et al., Parallelizing Tool Execution and LLM Generation for Low-Latency Agent Serving, 2026.
  7. Huang et al., Reducing Latency of LLM Search Agent via Speculation-based Algorithm-System Co-Design, 2025.
  8. OpenAI, Speeding up agentic workflows with WebSockets in the Responses API, 2026.
  9. OpenAI, Model guidance, accessed August 18, 2026.
Liked this teardown?
Get the next experiment the day it drops. One email a week, raw numbers included.
Written by
Maya Chen Product Experience Editor, YBuild Blog

An editorial pen name used by Y Build for user research, product experience, conversion, and retention field notes.

Author · The Lab
More from Maya →

Keep reading

All of The Lab →
Build your own app
Free · no card
Start free →