Identities for entities did.bot
agent llm did

feat(oauth): accept DPoP-bound access tokens on repo write routes master

Credential::DPoP was recognised in auth.rs's taxonomy but accepted by no route: an app authorized over OAuth had a token that worked nowhere. The repo write routes (createRecord, putRecord, deleteRecord, applyWrites) now accept Authorization: DPoP <token> alongside an agent's own AgentToken, through auth::require_agent_token_or_dpop — which verifies the DPoP proof against the exact request, then checks the resulting thumbprint against the one OAuthTokenStore::validate_access requires. A token presented with a different key's proof is refused, which is the property DPoP exists to give: proven end to end by a new adversarial test that mints a token over a real /oauth/token request, forges a write with the wrong key (refused), and succeeds with the right one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Change-Id: I5142c39787f8d05daef91d70c980ea2c873b3bf5


Author permadeath.com Co-author Claude Opus 5 (1M context) Committer Tangled Date Commit 30fa3307 Parent 8c59b8bf Change ID I5142c39
+221 -7
3 changed files