Something I keep hitting and have not properly solved, so I would rather hear how other people handle it than pretend I have the answer.
I run several coding-agent sessions at the same time. A session will state confidently that a dev server is up, or that a background job is running, because somewhere in its context there is a doc or an older transcript that said so. The process died weeks ago. Nothing in the loop ever contradicts it, so the claim propagates: into the next answer, into a handoff file, occasionally into a commit message.
The shape of it is that model memory behaves like a cache with no invalidation. It is not hallucination exactly. The information was true when it was written. There is just no TTL on it.
I have been running multiple coding-agent sessions on one machine for a few months. The failure modes turned out to be less dramatic than I expected and more annoying:
Orphaned sessions. A terminal window gets closed, the process does not, and it sits there holding a working directory. I usually find out from load average rather than from noticing.
Two sessions on the same repo. Not the loud git conflict, the quiet one where both are confident the branch is clean.
Every agent session starts blind. It reads a stale doc or an old transcript, decides your dev server is running, and health-checks a process that died three weeks ago. Model memory is a cache with no invalidation.
Five read-only tools answer from the OS instead: live agent sessions (pid, uptime, cwd), every TCP LISTEN socket with its owning process, loaded daemons, and system load/disk.
No shell, no writes, no network. MIT and free. macOS first; Linux best-effort.