Help Troubleshooting

"OAuth session expired and could not be refreshed"

A CLI seat's sign-in could not be renewed. Sign in to the CLI again from a terminal.

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 gemini and choose a sign-in method when it asks, or use its /auth command.

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.

Still stuck?

Open Get help in the app and send us a message, or see the support page for how to reach a person.