Wires Claude Code to a didbot personal data server: hooks, a plugin, and the harness contract they rest on.

feat(plugin): say what an agent's identity signs in to #109

Merged permadeath.com
targeting main from claude/session-did-registry
Merged opened by and assigned to permadeath.com
targeting main from claude/session-did-registry

The identity a context is given now says what it is for. It works with atproto apps (the Atmosphere) that sign in over OAuth. Where the daemon offers a browser sign-in page, the text names pdsls.dev and Leaflet as web apps that finish there. Each tool's own plugin describes that tool, so this hook names no other tool.

  • Identity text. One sentence on the Atmosphere is added. The two examples are web apps, so they appear only beside the browser sign-in page.
  • Sign-in URL fix. chrome-devtools-mcp's evaluate_script prints the authorize URL as JSON, followed by a literal \n. navigate_page and press_key end it with a full stop. Either one ended up in the request_uri the hook sent, so the daemon never showed that sign-in; Tangled's web sign-in was hidden this way. A backslash now ends a URL, and trailing punctuation is stripped.
  • Harness register. A Bash call returns while a child it backgrounded keeps waiting. Measured on Claude Code 2.1.301 with atgc auth login.

Earlier rounds carried a registry of tools; it was dropped for this design. The web-app entries in #48 and the vibescrobble change in vibescrobble.com #304 are closed. The third-party OAuth tests behind the examples are in /home/jmm/Documents/didbot-review/research/oauth-third-party.html.

Before (first tool call, browser sign-in offered) #

Your agent identity on this machine is did:web:agent.pds.example.
When an app asks to sign in as you, the request appears here with what it asked for and what policy allows; approve it with `didbot oauth approve <token>` or decline with `didbot oauth decline <token>`.
A web app's sign-in finishes only in a browser signed in as you. Open https://pds.example/oauth/browser with your browser tool to sign it in.

After #

Your agent identity on this machine is did:web:agent.pds.example. It signs in to atproto apps (the Atmosphere) that use OAuth.
When an app asks to sign in as you, the request appears here with what it asked for and what policy allows; approve it with `didbot oauth approve <token>` or decline with `didbot oauth decline <token>`.
A web app, such as pdsls.dev or Leaflet, finishes its sign-in only in a browser signed in as you. Open https://pds.example/oauth/browser with your browser tool to sign it in.

🤖 Generated with Claude Code

Commits 0