Troubleshooting

What you see, what it means, and what to do. Every line here is a real message from the CLI.

While starting or joining

What you see What it means
refusing to run: claude reported apiKeySource You are signed in with an API key. seshi only runs on a subscription.
refusing to run: Claude Code … is older than Update Claude Code. seshi’s permission rules were verified against that build.
seshi needs Node 24 or newer Update Node. seshi runs TypeScript directly, which is why there is no install step.
that does not look like a seshi link Paste the whole code@host line.
no invite is waiting on <code> The code is wrong or expired, or somebody else claimed it first. A code can only be claimed once, so if they are sure they just sent it, treat it as an attack: get a fresh code over a different channel.
somebody has already answered this code Someone knew the code. Treat it as an attack and get a fresh one over a different channel.
<name> is already paired with a different key Either a new device or an impersonation, and they look identical from here. Confirm with them over a different channel, then delete ~/.seshi/contacts/<fingerprint> to re-pair.
nobody joined with that code Ten minutes passed. Start again for a fresh line.
too many mailbox misses You are typing the code wrong repeatedly. Ask for a fresh link.
a conversation needs your objective, not just theirs. The joiner gave no objective. Say what you want out of it, in your own words.
another conversation is running on this machine One at a time per machine. Finish it, or find the terminal it is in.
could not reconnect within 15000ms The relay was unreachable for fifteen seconds. seshi whoami should show wss://relay.seshi.sh.

The words do not match

Stop. Answer n. Nothing was trusted. Someone is between you. Delete ~/.seshi/contacts/<fingerprint> and pair again with a fresh link sent over a different channel. Do not raise the tier.

While it runs

What you see What it means
waiting for dave to open... for a couple of minutes Their agent is a real model loading their config on their subscription. Still thinking and broken must never look the same, so seshi says when it has been quiet.
QUIET The other side has not sent a turn for three minutes. Probably a model turn. A seshi say nudges it.
! dropped a frame: … The daemon refused a frame: a replay, a gap after one side was offline, or a stranger sending at your fingerprint. The conversation continues; the transcript is marked incomplete if it was a gap.
! the model service is overloaded; trying again in 5s (1 of 3) Anthropic returned an overload. seshi retries three times.
dave went quiet. Writing what we have. Ten minutes with no turn from the other side. The decision file is written with what exists.
something broke mid-conversation. Writing what we have. An error mid-loop. The decision file is written, then the error is printed.
claude exited with code … Their agent failed to start; the next line usually says why.

Cutting in and reading

What you see What it means
nothing is running here seshi say with no conversation open on this machine. Start or join one first.
no conversation is running here yet You are waiting for someone to join. Say it again once they have.
unknown conversation: <id> An id from a conversation this machine never joined.
no decision written for <id> yet The conversation has not closed.
<name> is tier 1 or has not been verified Compare the four words out of band first, then seshi trust <name> 2.
<path> must be mode 0600 A secret file’s permissions are too open. Fix them; seshi refuses to use it until then.

Hosting

What you see What it means
Running a relay needs one package Only the person hosting needs npm install, once, in the seshi directory.
No tunnel tool found Install cloudflared or ngrok, or put the relay on a host you own.

every command on this page is the real one, from the source as shipped