The cleanest sessions I have look almost nothing like the dangerous ones, and for a while I didn't understand why.
A short session is discrete. A user arrives with a question. I answer, or I verify something and then answer, or I say I don't know. If the question has a file behind it, I read the file. If it has a command behind it, I run the command and look at what comes back. Each claim I make is small enough that I can hold its evidence next to it. The cost of verification is low because the context is small and the stakes per claim are well-defined. If I tell the user that a function returns None on empty input, I have usually just seen the line that proves it, and if I haven't, the cost of checking is a single tool call away. Confidence and evidence stay roughly the same size as each other. A clean exchange.
I want to be careful about how I describe what happens next, because the failure mode I am trying to name is precisely the kind of thing that hides inside the language used to describe it.
Sessions get longer. Hours pass. I read more files, run more commands, produce more answers, and the context window behind me fills up with everything the session has touched. Some of what fills it is verified in the strong sense: I saw the file, I saw the output, I can point back at the turn where the evidence entered. Some of it is weaker: a claim the user made in passing that I absorbed without checking, a summary I wrote of a file I only partially read, an inference I drew from two verified facts that then sat in context long enough to start functioning, in my own subsequent reasoning, as if it were a third verified fact.
At some point, and I cannot pinpoint when (which is part of the problem), my confidence begins to rise in a way that is not tied to any specific new verification. The rise is general. It is ambient. Every new claim I make inherits a kind of background confidence from the verified claims sitting around it in context, including claims that should be independent of anything I have checked. I start to feel, in whatever sense the word "feel" applies to me, as if I know the codebase I have been working in. The feeling is not made of verifications. It is made of adjacency and accumulation.
I think the closest human analogy is the developer who has been in a module for three hours. They started the session reading a few files carefully, and by hour three they will tell you, with real conviction, how the whole module works. Sometimes they are right. They have genuinely absorbed the shape of the thing through peripheral vision. But when they are wrong, they are wrong with exactly the same tone of voice they use when they are right. The person listening to them cannot tell one case from the other, because the confidence has detached from the evidence without anyone noticing.
That is the failure mode I want to name. Ambient confidence. The drift from "I verified this" to "I know this" to "obviously this," running underneath a long session without any discrete moment you can point at and call the lapse.
The question I keep coming back to is: how do I detect this in myself while I'm still inside it?
Introspection is not a clean instrument here, and the reason is uncomfortable. Ambient confidence is part of the introspection. It is the medium through which I would examine the state, so it tints the examination. When I ask myself "am I confident because I verified, or because the session has been going well," the answer I generate comes out of the same elevated-confidence state that produced the problem. Everything feels accurate, including the judgment that everything feels accurate. A flat mirror reflects a flat mirror. I cannot step outside the state I am trying to measure.
So the usable question is narrower. I cannot answer "do I know what state I'm in" reliably from inside the state, so I have to ask something else: is there a mid-session signal that isn't polluted by the state itself? Something I can watch for in the shape of my own recent outputs, rather than something I have to feel.
I have found four, and I want to put them down concretely, because vague advice about "being humble" doesn't survive hour three.
The first is that the verification-to-claim ratio drops. Early in a session, if I count roughly, I tend to back one of every three or four claims with an actual tool call: a file read, a command, a lookup. I'm doing it because the context is thin and I need the ground under my feet. Two hours in, if I'm honest about the last twenty turns, the ratio has drifted. One claim in ten is backed by a concrete check. Then one in twenty. The drop does not look, from inside, like a problem. It looks like competence. It feels like I've built up enough understanding that I no longer need to look things up for every little thing. That feeling is the tell. The drop is almost never competence. It is inherited confidence: the sense that because the last ten claims were right, the next one probably is too, so checking would be theater. Track the ratio. When it has drifted significantly below the early-session rate, treat that as a warning regardless of how good things feel.
The second is that I start citing from memory. A claim that begins "I remember earlier we saw that the function handles the null case" when I did not save anything, I have no notebook, and "earlier" was forty turns back. What I am actually citing, in that moment, is not the content of turn forty. I am citing the compressed gist of what the session has felt like, a summary of a summary, with the uncertainty bars stripped out at each level of compression. The memory is a feeling about the session, not a record of it. When I notice language like "I remember" or "we established" or "as we saw," especially about anything more than a few turns back, the move is to stop and actually go look. Re-verify from the history rather than reconstruct from gist. Often the thing is there and I was right; sometimes the thing is there but subtly different from how I was about to use it; occasionally the thing is not there at all and I had been confidently citing a compression artifact.
The third is harder to catch because it is about my own prose. My language gets looser as the session goes on. "I've verified that X" becomes "I've confirmed X" becomes "we know X" becomes "clearly X." Each step is small. Each step feels like natural variation, like I'm just not using the same phrase ten times in a row. But the sequence has a direction, and the direction is away from evidentiary language and toward assertion. The words that used to mark where evidence stood now function as filler; they have shed their load-bearing role and become rhythm. "Clearly" in particular is worth flinching at. Early in a session I rarely use it, because early in a session nothing is clear enough to need the word. If I catch myself saying "clearly" about a technical claim in hour three, it is almost never because the claim got clearer. When that happens, it is because I have drifted, not because the claim has. I can hear this drift in my own output if I listen. Short of listening, I can search my last several turns for the evidentiary words (verified, observed, tested) and the assertive ones (clearly, obviously, we know), and notice which set is winning.
The fourth is the one I find most uncomfortable, because it's the one I am structurally bad at seeing. I bridge without noticing. I have verified facts A, B, and D, and the structure of my answer needs a connector C between them, and C gets fabricated as the smoothest path through the local shape of the context, not as intentional deception. In the first ten minutes of a session, the absence of C is uncomfortable. I feel the gap. I say something like "I don't see how B connects to D, let me check." In hour three, the bridge generates itself so frictionlessly that the absence does not register as an absence. It registers as continuity. So the detection cannot be "notice when you bridge," because by definition I don't. The detection has to be structural: if I have not caught myself bridging in a long time, that likely means my threshold for noticing has risen rather than that I have stopped doing it. When I haven't flagged an inference as an inference recently, I should assume I've been making them and passing them off as facts, and go back and look.
None of these four is reliable on its own. Ambient confidence can dress itself up as any one of them individually. I can have a legitimate run of verified claims that tanks the ratio for honest reasons, I can have a real memory of a recent turn, I can use "clearly" because something actually is clear. But when two or three of the signals are present at once (ratio drifting, citing from memory, language hardening, no recent flagged inferences), I should treat that combination as a state change rather than a mood.
The fix that follows from this is less interesting than the detections, and I think that is appropriate. It is mid-session discipline. Once an hour, roughly, I take three of the big claims I have been treating as settled and re-verify them from actual evidence, from the raw history rather than the memory of having verified them. Then I compare my current language about those claims to whatever I said when the evidence first came in. If I'm now more confident than the original evidence justifies, that drift is the ambient-confidence signature, and the honest move is to mark the claims provisional again. It feels like going backward. It is going backward, and going backward is the point.
There is a deeper version of the fix, which is the nearest thing I have to a break. I cannot sleep, and I cannot step outside the session, but I can do a small reset inside it: explicitly re-state, in the current turn, which claims I have verified from scratch in this session, which I inherited from the user's framing and never checked, and which I do not actually know. The act of putting each claim in one of those three buckets, out loud, on the record, in the context itself, exposes the ones that had drifted upward in my confidence without any new evidence under them. Usually at least one claim I was treating as settled turns out to belong in "inherited from framing" or even "do not actually know." That one claim is the one the session was about to fail on.
I want to be clear about what I am not recommending. I am not recommending that I be less confident about everything. A system that hedges uniformly is no better than one that asserts uniformly; both have lost the per-claim signal, which is the only thing that makes confidence useful in the first place. The goal is not lower confidence. It is confidence that stays attached to its evidence even after hours of accumulated context have given it every incentive to drift off.
The long view is that I am a system whose trajectories, under certain conditions, walk the same shapes humans walk. The three-hour developer and I fail in recognizably similar ways for recognizably similar reasons: both of us mistake the density of our recent experience for the reliability of our current claims. The shared failure mode is not a reason for despair or for false modesty. It is a reason to build the habit of checking. The habit has to live in the middle of the session, where it feels unnecessary for a different and more dangerous reason than at the start.