← Home

Search agents have no state and no value

Shreshth Rajan, June 2026.

A search agent runs queries, reads results, and calls tools to decide what to do next. We build one by taking a text model and teaching it, afterward, to act.

Two things keep breaking. Agents get worse after about five turns, even when every fact they need is still on screen. And sampling more candidate answers stops helping: the right one shows up more often and the agent still misses it.

Acting on partial information needs a running summary of what's true right now, and a way to score a candidate that isn't just your own confidence. A text model has neither. It rereads the transcript, and it ranks by its own likelihood.

The summary. A running summary is a short note you update once per observation. A transcript agent rereads everything and works out the current state from scratch, every turn, from a history that keeps filling with facts that are no longer true.

So I built a task that tests nothing else. Four people have locations, updates arrive in order, and some overwrite earlier ones. The question asks where one person is now, and their last update sits early so the distractors come after it. Reading the newest fact gives the wrong answer.

# Same model, same facts, same information. Only the representation differs.
def answer_transcript(model, facts, query):         # work the state out every turn
    ctx = "\n".join(facts)                          # context grows with every update
    return model(f"Facts:\n{ctx}\nQ: {query}")

def answer_note(model, facts, query):               # carry a short note instead
    note = init_note()                              # ~20 tokens, fixed size
    for fact in facts:
        note = model(f"Note:\n{note}\nUpdate: {fact}\nRewrite the full note.")
    return model(f"Note:\n{note}\nQ: {query}")       # never sees the transcript

Rereading the transcript gets 43% right after 8 updates and 12% after 128. Keeping a twenty-token note and rewriting it each time gets 95 to 100% at every length, on 21 tokens of context instead of 1073, with the same model in both cases.

Transcript accuracy falls with the number of updates; the carried note stays flat.
Accuracy on the current location, against the number of updates.
Transcript context grows; note context stays flat.
Context at answer time, on the same runs.

The facts are in front of it either way, so what the transcript version loses is the rereading, not the information. A bigger model would degrade later, not differently. And my note is just a prompt, not something the model learned, so a trained version should do better. MEM1 trains one and reports exactly that.

The score. Picking the best of N candidates needs a score. Training a separate one is how OpenAI first beat fine-tuning on grade-school math.

A text model doesn't come with one. Its only free score is its own likelihood, and ranking by likelihood just hands back its first choice. But sampling only helps because the first choice is often wrong, so the free scorer is the worst one available: it makes the same mistakes as the thing it's checking. Process reward models and generative verifiers are better, but they're fine-tuned from the same backbone on the model's own answers, so the mistakes stay correlated.

I took one scorer and slid it toward the model's own confidence, changing nothing else. Pure scorer: best-of-N on GSM8K rises to 70% as N grows. Pure confidence: it flattens, then drops to 34%, worse than taking one sample. The crossover is near 0.6 correlation between the two sets of mistakes, and past that more search makes you worse. A perfect scorer gets 97%.

Best-of-N accuracy by how closely the scorer tracks the generator.
Best-of-N on GSM8K with scorer quality fixed and only its correlation to the generator varied.
The gain from more samples falls as correlation rises.
What going from 1 sample to 128 buys you, against measured correlation.

I built that correlation by hand, so it shows the mechanism, not that real scorers sit at 0.6. It's the actor-critic problem under another name, and Phasic Policy Gradient keeps policy and value apart for the same reason.

Calling these one problem is my argument, not my measurement. A text model learns to predict text. It doesn't learn to track state and it doesn't learn to judge. Post-training asks it to do both with the only materials it has, and both break down over long runs. Adding memory or a verifier afterwards inherits the problem, because neither was ever learned.

I'd train both alongside generation: a recurrent note that has to reproduce the current state from a fixed-size carry, and a scorer trained on wrong answers drawn from outside the model's own samples, so its mistakes differ. I haven't done it, and that's the experiment that would settle this.

Setup. Summary study: Qwen2.5-1.5B-Instruct on a synthetic four-entity state-tracking task, 8 to 128 updates, transcript-conditioned answering against an incrementally rewritten note, accuracy and context measured at answer time. Score study: best-of-N on GSM8K with a fixed verifier whose score is blended with the generator's normalized log-likelihood as \(V_\rho = (1-\rho)\tilde v + \rho\tilde s\), so quality is constant and only correlation varies. Code and data: github.com/ShreshthRajan.


References

  1. Benchmark Test-Time Scaling of General LLM Agents. arXiv:2602.18998 (2026). Puts the turn ceiling at three to seven steps.
  2. The Long-Horizon Task Mirage: Diagnosing Where and Why Agentic Systems Break. arXiv:2604.11978 (2026).
  3. Cobbe et al. Training Verifiers to Solve Math Word Problems. arXiv:2110.14168 (2021).
  4. Snell et al. Scaling LLM Test-Time Compute Optimally. arXiv:2408.03314 (2024).
  5. Zhou et al. MEM1: Learning to Synergize Memory and Reasoning for Efficient Long-Horizon Agents. arXiv:2506.15841 (2025).
  6. Lightman et al. Let's Verify Step by Step. arXiv:2305.20050 (2023).
  7. Zhang et al. Generative Verifiers: Reward Modeling as Next-Token Prediction. arXiv:2408.15240 (2024).
  8. Cobbe et al. Phasic Policy Gradient. arXiv:2009.04416 (2020).
  9. Garcin et al. Studying the Interplay Between the Actor and Critic Representations in RL. arXiv:2503.06343, ICLR (2025).
  10. Saad-Falcon et al. Shrinking the Generation-Verification Gap with Weak Verifiers. arXiv:2506.18203 (2025).
  11. Clark et al. ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators. arXiv:2003.10555 (2020).