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

fix(plugin): name a local sign-in's redirect port on every showing #108

Merged permadeath.com
targeting main from claude/alpha-blockers
Merged opened by and assigned to permadeath.com
targeting main from claude/alpha-blockers

The hook took a local sign-in's redirect port only from the authorize URL printed in the current tool call. So a pending sign-in shown again on a later tool call or prompt read redirect port unknown, which is also how another program's sign-in looks. Now every rendering derives the port the same way: from the authorize URLs in the last 4 MB of the acting context's transcript (a subagent's own, or else the session's), plus the current call. It still matches them to pending decisions by show and token.

before, second showing:  client: unverified local app, redirect port unknown
after, second showing:   client: unverified local app, redirect port 35873

Tests: a sign-in shown again on an unrelated tool call and on a prompt names the same port as its first showing. A subagent reads its own transcript, not the session's. A 9 MB transcript is read from its end within the hook's time budget. The plugin version goes to 0.3.4.

🤖 Generated with Claude Code

Commits 1

fix(plugin): name a local sign-in's redirect port on every showing