The night of August 14th, Claude Code was planning me a trip. An eight-day itinerary — not code, just travel planning — running in the VS Code extension against the remote box where my sessions live. Just past midnight my phone buzzed: the turn had finished, and Claude was waiting for me to approve its plan. That buzz was claude-code-notify, a hook I wrote myself so that a long turn, or one waiting on my input, wouldn't pass unnoticed — before it existed, nothing notified me at all. I saw the message and switched to the window. The session tab said the turn was still executing.

Both indicators were right, and the hour between them was the bug. It just took a while to see how a session could be finished and not finished at the same time.

Late, not lost

The extension wasn't frozen, and it wasn't empty. Every so often it nudged a little more text into view — and the text was old, stale by the time it reached the screen. It wasn't showing me nothing. It was showing me the past, slowly.

That distinction did most of the diagnostic work before I touched anything. A lost handshake drops things: events go missing, the session looks truncated, the missing pieces never show up. A queue does the opposite: everything arrives, in order, late. What I was watching wasn't a failure to deliver — it was a delivery schedule. The events weren't lost; they were stacked up somewhere between the CLI and the screen, and something at the front of the stack moved slowly.