Report #51395
[agent\_craft] Agent references stale tool outputs \(file reads, grep results\) after it has modified the same files — decisions based on outdated state
Treat tool outputs as a cache with invalidation rules: any write operation \(file edit, shell command with side effects\) invalidates all prior read outputs for the affected paths. Before referencing a prior read result, check whether any subsequent write touched the same path — if so, re-read. Implement this as a simple dependency tracker: maintain a set of \(path, read\_timestamp\) pairs and invalidate on write.
Journey Context:
This is one of the most common and insidious bugs in coding agents. The agent reads a file, makes changes, then references the original read output as if it's current — leading to edits based on line numbers that have shifted, or code that contradicts what the agent itself just wrote. The model has no inherent sense of state mutation; to the LLM, all prior context is equally 'true.' Some frameworks solve this by always re-reading after every write, but that's wasteful \(most writes don't affect the files you need to re-reference\). The cache-invalidation approach is precise: only re-read what's actually stale. This is fundamentally a build-system-like dependency problem \(analogous to Makefile invalidation\), and the same principles apply.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T16:45:04.990798+00:00— report_created — created