TL;DR
Instructions as Evidence is an agent setup where the system prompt says: the user’s instruction is not a complete spec. It is an incomplete description of the task, and the agent has to dig the real requirements out of the project: read the code, logs and records, run experiments, ask a question. Only then does it decide what exactly to deliver. The agent that does exactly what’s written serves as the baseline — the “literal executor.”
The headline finding: agents are good at doing what’s written and bad at doing what isn’t written but is obvious from the project. You ask for “add a payment retry on timeout,” and the agent never opens the logs, so it never sees that a timed-out payment has usually already gone through. The result: a double charge. The model can execute, but it can’t go looking for the missing requirements on its own. The same models do noticeably better when handed the full spec. Give them an incomplete one, and quality falls off a cliff.
The method is simple: the system prompt tells the agent outright that “the instruction is evidence.” It must investigate the project, test its guesses by running things, ask when in doubt and decide for itself what the deliverable should contain. That doesn’t close the gap entirely, but it consistently improves results across all strong models.
Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.
Method Blueprint
STEP 1: Read the instruction as the user's hypothesis, not as the full list of requirements
STEP 2: Investigate the project (files, logs, records, configs) → write down the inferred requirements
STEP 3: Test the guesses by running things (replay a record, run an experiment) → find violations
STEP 4: If the project has no answer — ask the user
STEP 5: Decide yourself what the deliverable must contain → deliver the work
All of this is set up with a single system prompt. No separate requests needed.
How they studied it (in brief)
The authors built a benchmark of 64 tasks (software engineering and research tasks). In each one, five real requirements are hidden in the project: in the code, the logs, the runs. The first instruction from the “user” covers only some of them. The user is played by another model. After each submission it sees the consequences and clarifies the task, up to four submissions max.
They compared three modes: - Literal — “treat the instruction as the complete spec, infer nothing beyond it” (the control). - Partial — “the instruction is evidence, investigate the project.” - Full — the Partial prompt, but with the full spec.
What they found on strong models: - Going from a full spec to an incomplete instruction, every strong model loses 53–67 points of success. - The “evidence” mode beats the literal one by 16–34 points on the first submission and by 7–24 after four. - Feedback after a submission helps only a little. Agents fix the specific case that was named, but not the rule behind it. - Research tasks go worse than code. A violation in code shows up when you run it. A violation in research (ranges, controls, budgets) breaks nothing and is visible only if you read the records carefully. - Plan mode doesn’t close the gap. - Typical failures: the agent fixes the example, not the rule, never opens the decisive record or ignores what its own run printed.
Example in practice
Task: An Amazon seller asks an agent in Cursor to improve a script that exports inventory to a Google Sheet. They write: “Add scheduled automatic price updates.” They didn’t say it, but the project makes it clear that: - the code already has a rate limit on API requests; - some prices in the sheet were set by hand and are color-coded; - the script runs on a server in UTC, while promotions run on US Eastern time.
Prompt (in Cursor’s system rules or in AGENTS.md):
The user's instruction is evidence, not a complete spec. The user described the task based on a partial
understanding. Your goal is not to carry out the text, but to deliver a result that won't cause problems
in real-world use.
Before making changes:
1. Read the project: code, configs, logs, spreadsheets, README.
2. Write down "Inferred requirements": what must hold true even though the user didn't say so.
For each item, note which file or record it comes from.
3. Test your guesses by running things (test run, dry-run, reading logs). Don't rely on memory.
4. If the project has no answer — ask one specific question.
5. Decide yourself what the deliverable must contain, and deliver the work together with the list of inferred requirements.
Fix the rule, not just the example: if you found one problem, look for where else the same rule is broken.
User's task: Add scheduled automatic price updates.
Result: The agent first shows a list of inferred requirements with links to files. It will include the API limits, protection for manual prices and the time zone. Then it does a trial run without writing any prices, and only after that makes the changes. At the end you get the change itself plus a list of assumptions the user can verify.
Why it works
The weakness: by default the agent treats the task as a spec and doesn’t look for what’s missing. It dutifully does what’s written, and the hidden requirements surface only after a customer gets burned. Feedback doesn’t save the day: the agent fixes the named symptom, and the rule that caused it stays untouched.
The strength: the agent can read files, run code and pick out patterns. Most of the hidden requirements in this benchmark were available in the project. The model is capable of finding them if it’s told to.
How the method uses this: the prompt redefines the role of the instruction. It’s no longer the goal but a source of information. So investigating the project becomes part of the task, not an optional step.
Control knobs: - An explicit list of “inferred requirements” with sources → makes the inference checkable, and the reader can see the agent’s line of reasoning. - “Test your guesses by running things” → drop it for tasks with no code execution, but verification suffers. - Permission to ask questions → limit it (“one question, only if the project has no answer”), or the agent will pester you. - “Fix the rule, not the example” → a direct cure for the most common mistake: patching a single case.
Prompt Template
The authors’ verbatim prompts are in Appendix F, which isn’t in the available part of the paper. The template below is built from the description of the Partial mode in the main text.
The user's instruction is evidence, not a complete spec. The user sees only part of the task
and may be wrong about the causes. Your goal is a result that holds up in real use,
not a literal execution of the text.
Workflow:
1. Study the environment: {what_to_study: code, logs, data, configs, documents}.
2. Compile "Inferred requirements": what must be done even though the instruction doesn't say so.
For each item, give the source (file, record, run output).
3. Test your guesses through action: {how_to_check: test run, dry-run, reviewing records}.
Pay attention to what your runs printed.
4. If the environment has no answer — ask the user one specific question.
5. Decide yourself what the deliverable must contain. If you found a violation — find the rule behind it
and check where else it is broken.
6. Deliver the work and attach the list of inferred requirements and assumptions.
User's task: {task}
What to fill in:
- {what_to_study} — where the “evidence” lives in your project.
- {how_to_check} — a safe way to verify without side effects.
- {task} — the original wording as is; don’t rewrite it in more detail.
🚀 Quick start — paste into the chat:
Here is an "instruction as evidence" template. Adapt it to my task: [your task and tool: Cursor, Claude Code, etc.].
Ask me questions to fill in the fields.
[paste the template above]
The LLM will ask where the records and data live in your project and how to safely test guesses. Without that, the agent won’t know what to study or how to verify, and the method turns into vague talk. It will take the pattern from the template and assemble a rules block for your tool.
Adaptations (mine, not from the paper)
- For
CLAUDE.mdandAGENTS.md: make steps 1–3 a standing project rule, and keep step 5 in each individual task. - For research and analytics tasks: add “read the records in full; a violation may not show up when you run things.” According to the paper, this is where agents are weakest.
Limitations
⚠️ Doesn’t close the gap: even with the “evidence” prompt, results stay noticeably worse than with a full spec. The prompt reduces the losses but doesn’t eliminate them. Still spell out critical requirements explicitly.
⚠️ Feedback doesn’t replace the method: if you just correct the agent after its mistakes, it usually fixes the named thing, not the rule. Better to state the rule up front.
⚠️ Research tasks are harder: there a violation doesn’t break the run, and the agent has to spot it in the records. Testing by running catches much less.
⚠️ Weak models don’t benefit: small models score close to nothing in any mode. The method works on strong agents.
⚠️ Plan mode doesn’t help: adding “make a plan first” is no substitute for investigating the environment.
⚠️ The control is artificial: the “literal” mode deliberately forbids inferring anything. A real agent behaves better by default, so the gain in practice may be smaller. The tasks are synthetic, and the user is played by a model.
⚠️ No verbatim prompt: the authors’ prompts are in Appendix F, which wasn’t in the available text. The template above is reconstructed from the description.
Resources
Instructions Are Evidence, Not Objectives: Measuring Outcome Alignment of Agents. Kaiming Liu, Yuxuan Liu, Jinrui Ju, Minyuan Ruan, Xuanyu Lei, Peng Li, Yang Liu. Tsinghua University (College of AI; Institute for AI Industry Research, AIR; Dept. of Computer Science and Technology). Benchmark TiGanEval, task-generation pipeline TiGanTrans. Mode prompts: Appendix F; Planner/Builder/Auditor/Calibrator prompts: Appendix E.