Tell agents not to ask clarifying questions - #62
Merged
Conversation
This benchmark is single-turn, so a question gets no reply and the agent is scored on whatever state it left — usually nothing. Four cells in the stored runs ended that way, against a skills delta measured at two cells in twenty-four. The artefact was larger than the signal beside it. The line is borrowed verbatim from clerk/clerk-evals, the closest architectural match to this benchmark: same two agent CLIs, same sandbox, and it prepends that exact sentence to every eval prompt on its agentic path. Precedent is worth more here than a marginally better sentence. It is not a claim that asking is wrong. tau-bench's airline policy *requires* an agent to obtain explicit user confirmation before any action that updates the booking database — the behaviour suppressed here is a pass requirement there, because that harness has a user to answer and ours does not. So the triage detector stays: the instruction removes the confound and the detector says whether it worked. Clerk instructs without measuring; upstream does neither. Everything measured before this commit was measured without the line, so results either side are not comparable. AGENTS.md also gains the reasoning, the rule that a cell tripping ASKED_AND_STOPPED must never be published as a capability failure, and a correction to the cost table: it is denominated in fifteen scenarios and there are nineteen, so a full matrix is about $81 rather than $64. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nt2Zgjw7STjrnFXYKRRVAA
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #57.
The change
One sentence added to
basePromptFor(), borrowed verbatim from clerk/clerk-evals:Why
This benchmark is single-turn. A question gets no reply and the agent is scored on whatever state it left, usually nothing. Four cells in the stored runs ended that way, against a skills delta measured at two cells in twenty-four — the artefact was larger than the signal sitting next to it.
Clerk is the closest architectural match: same two agent CLIs, same sandbox model, and it prepends that exact line to every eval prompt on its agentic path. Borrowed precedent is worth more than a marginally better sentence of our own.
What this is not
It is not a claim that asking is wrong. τ-bench's airline policy requires an agent to "list the action details and obtain explicit user confirmation (yes) to proceed" before any action that updates the booking database. The behaviour suppressed here is a pass requirement there, because that harness has a user to answer and ours does not.
So the
ASKED_AND_STOPPEDdetector from #58 stays. The instruction removes the confound; the detector says whether it worked. Nobody else in the survey does both — Clerk instructs without measuring, upstream does neither.The full option space is on #57: five different answers across six benchmarks.
Comparability
Everything measured before this commit was measured without the line. Results either side are not comparable, the same rule as a scenario or CLI change and for the same reason.
EVALS_PUBLISHis set tofalseso Monday's cron and the 1 September full matrix cannot publish a snapshot that is half one treatment and half the other — this compounding with #60 is exactly the failure mode that needed heading off.Also in this PR
AGENTS.md gains the reasoning under Conventions, plus two rules worth having:
--runs 3stops at the first pass, costs ~1.11×, and removes a stopped run's power to decide a cell without touching the prompt.The cost table is corrected. It was denominated in fifteen scenarios and there are nineteen, so a full matrix is about $81, not $64. The measured figures are left as measured with the scaling stated separately, because conflating the two is how the judge once came to be reported at twenty-eight times its real cost.
Multi-attempt costing is now documented:
1 + 0.114kwherekis what a failed attempt costs relative to a typical one.kis unknown — only 4 of 114 published rows carryusage.costUsdand all four passed, so there is no failed-cell cost data. See #6. Budget a three-attempt matrix at $90–$110.Verification
pnpm typecheckclean,pnpm -r testgreen (142 tests), formatted.Not yet measured: whether the instruction actually changes behaviour. That is the next step — re-run the four known ask-and-stop cells and check the detector.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Nt2Zgjw7STjrnFXYKRRVAA