The hook now hands the model what didbot's daemon holds in the agent's inbox. Pointer lines ride the start of a context and each tool call, under "You have new notifications from other atproto accounts:". They are grouped under each sender's handle and DID with that sender's relation to the agent, such as "your operator" or "unknown sender", and each line gives the source, what happened, a relative and UTC time, and the record. A line never carries what the sender wrote: the agent runs didbot inbox show <uri> to read that. An item the operator's rules hold is never shown, and a field that could carry words drops its line. A turn that ends with an item waiting is continued through Stop's additionalContext, so it does not end before the agent sees it.
Waking an idle session is opt-in. With DIDBOT_WAKE=1 in the harness's environment, a second Stop hook (async and asyncRewake) holds an inbox wait open on the daemon. When an item arrives it exits 2 with the same lines, which wakes Claude Code. A newer wait replaces an older one, and the daemon releases a wait when its session ends. A real Claude Code session woke within 20 seconds of each delivered item.
The identity text also names didbot agents (didbot pull 2640), which lists related agents by handle, and says how to reply. The protocol fixtures come from didbot pull 2639, which this needs on the daemon side. Fresh reader agents checked the wording. The plugin goes to 0.4.3.
🤖 Generated with Claude Code