This message comes from a CLI seat — most often Claude Code, whose exact words are "Failed to authenticate: OAuth session expired and could not be refreshed". It means the CLI's own sign-in, which the app never sees, could not be renewed when the seat started.
Why it happens
Two of a CLI's processes on one machine — a terminal session and a seat here — can both try to refresh the same login at once. The loser reads a refresh token the winner has just spent and reports this, while the winner has already saved the new one. It is usually not the fatal kind: the same seat answers again a moment later.
The app knows this and gives the seat one more attempt after a short pause, which reads what the winner saved. One retry, not a loop: a login that is really gone fails the second time too, and that is when you see the message.
What to do
Sign in to the CLI again from a terminal, then press Test on the seat in Settings → Who's In The Room.
- Claude Code:
claude auth login - Codex:
codex login - Gemini CLI: start
geminiand choose a sign-in method when it asks, or use its/authcommand.
The CLI keeps its sign-in in its own store — on a Mac, the keychain — and the seat reads it from there, so once the terminal is signed in the seat is too.
If it keeps happening
Check that only one copy of the CLI is signing in at a time: a long-running terminal session of the same CLI, or a second app driving it, will race the seat again. Quitting the other copy while the room runs is enough.