Short conversations work fine. The agent has a clear goal, a few tool calls, a clean context. It does what it was asked.
Long conversations are different. The goal was stated twelve turns ago. Since then: six tool calls with their full JSON outputs, three clarifying questions, two wrong paths that were corrected. The context is not a crisp specification anymore. It's an archaeological record of everything that happened.
And the model at turn 20 is not reading that record the way you'd read a document. It's weighting recent tokens more than early ones, struggling to hold the original goal while processing the latest tool output, and sometimes drawing conclusions from intermediate states that were already superseded.
The three failure modes in long conversations
1. Goal drift. The goal was clear at turn one. By turn fifteen, the agent has made so many micro-decisions that the original goal has been subtly reframed. It's no longer working on what the user asked. It's working on what the conversation evolved into. When the user gets the output, it's technically coherent with recent context but has wandered from the original intent.
2. Stale state reasoning. The agent read a record at turn three. At turn seven, it updated that record. At turn fourteen, it reasons from the original value — the one it read at turn three — because that's what's in context. The update happened but the context captured the original, not the updated, state.
This is particularly bad in agentic workflows where the agent is both reading and modifying state. The modification changes the world. The context doesn't update to reflect it.
3. Contradictory assertions. Tool call at turn four returned X. Tool call at turn eleven returned not-X (the data changed, the API behaved differently, the query was slightly different). Both assertions are in context. The model has to reconcile them. It usually picks one, often the more recent one, without flagging the conflict. The other assertion quietly becomes wrong context that affects subsequent reasoning.
What this looks like to users
The user asks a question at turn 18. The agent gives an answer that's technically consistent with recent context but misses the original intent. The user says "that's not what I asked." The agent apologizes and tries again, but now there's even more context — including the failed attempt and the correction — and the gap between the agent's model of the world and reality has widened.
In task-completion agents, this manifests as drift. The task changes shape over the course of execution. The final output reflects what the agent decided to do, not what was originally requested.
What you can do about it
Summarize aggressively. At regular intervals — or when context reaches a threshold — summarize what's been decided, what state the world is in, and what's left to do. Replace the accumulated context with a compact, accurate summary. Restart from that summary.
Track state separately from conversation. Don't let the agent maintain its model of the world through conversation history alone. Use an explicit state object: a structured record of what's been read, what's been modified, what decisions have been made. That object is authoritative. Context is supplementary.
Re-anchor to the goal. At every significant decision point, re-inject the original goal. Not as a reminder to the user — as an explicit instruction in the agent's context. "The original task was X. Current state: Y. Next step: decide Z." This counteracts drift.
Set a hard turn limit and force resolution. Long conversations that can't resolve indicate either a stuck agent or an underspecified task. Build a hard limit. When the limit is reached, force the agent to either produce an output or surface the blocker explicitly.
Faultmap tests long-horizon trajectories specifically. It runs the agent through multi-turn scenarios, measures goal drift, flags contradictions, and identifies where reasoning degrades. You see the failure before your users do.
The model is not bad at reasoning. It's bad at reasoning from a context that has accumulated twenty turns of noise. The fix is managing the context — summarizing it, structuring it, and never letting it grow past the point where coherent reasoning is possible.

