-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
Problem
The edit tool fails with:
Could not find oldString in the file. It must match exactly, including whitespace, indentation, and line endings.
236 occurrences in a single day. This is the second most common tool failure after webfetch.
Root cause
The model's in-context representation of a file drifts from the actual file content. This happens when:
- External processes (formatters, linters) modify files after the model reads them — partially addressed by Edit tool enters retry loop on stale file reads, causing hundreds of consecutive failures #450
- Multiple edits to the same file where the model uses stale oldString from before previous edits
- Context compaction drops or summarizes file content, leaving the model with an outdated view
- Model hallucination — generating oldString that was never in the file
Impact
- Each failed edit wastes a tool call
- Model often retries with the same incorrect oldString, creating short failure bursts
- The existing doom loop detector (threshold=3) catches identical inputs but not semantically similar ones
Suggested investigation
- Analyze whether failures correlate with files that were recently edited (context drift) vs. files never read (hallucination)
- Consider including a snippet of the actual file content in the error response so the model can self-correct (similar approach to Edit tool enters retry loop on stale file reads, causing hundreds of consecutive failures #450 for stale files)
- Evaluate whether the fuzzy matchers (LineTrimmedReplacer, WhitespaceNormalizedReplacer, etc.) are catching enough cases or if thresholds need tuning
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels