Skip to content

The asking device says who it waits for, and "No" stops the ask (GRYT-2014) - #1155

Merged
grytchat merged 1 commit into
mainfrom
claude/GRYT-2014-self-healing-keys
Nov 3, 2026
Merged

grytchat merged 1 commit into
mainfrom
claude/GRYT-2014-self-healing-keys

Conversation

@grytchat

@grytchat grytchat commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

The client half of Gryt-chat/server#363.

  • The device asking to use its key now shows which device it's waiting for, when that one was last used, and the date it takes over by itself if nobody answers. The title is "Approve this device" now, not "from your phone".
  • If the server says no device with the current key has been around for 30 days, it takes over straight away.
  • "No, that's not mine" also cancels the saved ask. Closing the window only drops it on this device.
  • The "Someone asked to reset your key" window stays shut while an "Is this your …?" request for the same server is up, so you don't get two windows for one ask.
  • Publishing sends the device name, so the server can say which device has the key.

Look closely at: denyHandover(request, { stop: true }) sending dm:key:reset:cancel. It reuses the "That wasn't me" proof, so only the device holding the key can stop an ask.

Not in this PR: warning your other devices that don't hold the key, and the phone (GRYT-2011).

Merge after the server PR is released. Against an older server the ask isn't acked, so the new lines just don't show.

🤖 Generated with Claude Code

…-2014)

The ask now gets back which device holds the key, when it was last used and
when this device takes over by itself, and takes over at once when the
server says nobody is left to answer. "No, that's not mine" also cancels the
saved ask. The key-reset window no longer doubles up with "Is this your …?".
Publishing sends the device name so the server can say which device holds it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@grytchat
grytchat merged commit ba151fc into main Nov 3, 2026
36 of 37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant