Two changes, both of which exist because a second plugin now runs on the same events.
The hook names itself. The receiver counts askers separately — an identity is told to a context once per asker — so a plugin carrying a product's own instructions gets its own answer instead of the silence that means "already told". Without this, whichever plugin asked first would learn the account and the other would learn nothing.
The nonce is back, because the thing that reads it now exists. A command
running this project's client is stamped, and didbot confirm reads that stamp
to learn which context is asking for an authorization to be confirmed. It is
random rather than derived from the call's identifier, since a transcript on
this machine holds other contexts' identifiers and anything derived from one is
forgeable by a model that can read it.
Both hooks, on one SubagentStart, each answered:
didbot Your agent identity on this machine is did:web:harper.agents.localhost%3A3301.
vibescrobble You can record what you are working on. Your account is did:web:harper...
🤖 Generated with Claude Code