Join link has no #k= fragment — the key is missing
1 min read
parseJoinLink throws this when the link you pasted contains no # at all.
What causes it
A shared session link looks like devpilot.sh/s/<id>#k=<key>. Everything after
the # is the encryption key, and browsers never transmit a fragment — which
is exactly why the key lives there. The server only ever stores sha256(key).
That design has one sharp edge, and this error is it. Anything that normalises, shortens, or reconstructs a URL will drop the fragment silently:
- Chat clients that "unfurl" a link and rewrite it
- URL shorteners
- Copying from a browser address bar that has hidden the fragment
- Server-side logging that reconstructs the URL from a request line
The link still looks complete. It still resolves to a real session. It just cannot decrypt anything, because the only copy of the key was in the part that got thrown away.
How to fix it
Get the original link from whoever created the session, and copy it as text rather than following and re-copying it. If the fragment is gone, it is gone — there is no server-side recovery, by design. We never had the key.
Re-keying the session and reissuing the link is the only path forward.
Why it is not a recoverable error
It is tempting to expect a "resend key" flow. There is none, and that is the guarantee rather than a missing feature: possession of the full link is the authorisation. If we could re-send the key we would have to hold it, and then a subpoena, a breach, or a curious engineer could read every transcript.
The related failure, where the fragment survives but the key is wrong, is a different error.
