Skip to content

eval: request-bound credential proof (DPoP-style) for agent tool calls (decision record) - #14

Merged
tcconnally merged 1 commit into
mainfrom
docs/issue-13-dpop-decision
Aug 4, 2026
Merged

eval: request-bound credential proof (DPoP-style) for agent tool calls (decision record)#14
tcconnally merged 1 commit into
mainfrom
docs/issue-13-dpop-decision

Conversation

@tcconnally

Copy link
Copy Markdown
Collaborator

Summary

Decision record docs/decision-record-request-bound-credential-proof.md (perseus-agent-core #13):

  • Decision: adopt the request-bound proof-of-possession concept at the tool boundary and in the credential broker, as a lightweight binding — not the OAuth DPoP stack.
  • Session-bound vs request-bound comparison table covering replay, tamper, and cross-request leakage.
  • Placement: the tool boundary signs canonicalized request context (actor, boundary, tool, policy-relevant argv, credential id, one-time nonce, expiry); the broker verifies at the phantom-token swap (feat: phantom-credential brokering for tool execution (credential never enters the child) #11) and fails closed.
  • Receipts without secrets: request binding id, binding digest, credential id, proof outcome, expiry — hash-only fields, never the credential value, never raw argv bodies.
  • Non-goals: no OAuth-stack mandate; no claim DPoP maps 1:1 onto the manifest authority model.

Follow-up implementation issue opened for the binding layer (this sprint), referencing this record and #11.

Gates (run locally, actual output)

  • git diff --check → clean
  • npx markdownlint-cli --disable MD013 MD033 MD024 MD025 MD060 -- docs/decision-record-request-bound-credential-proof.md → exit 0 (LINT-OK)
  • Repo test suite (pytest) unaffected — docs-only change; CI runs on the PR head.

Acceptance criteria

  • Decision record saved in the repo docs with a recommendation and rationale
  • Replay/tamper cases explicitly addressed (dedicated section, four cases)
  • Non-goals: no OAuth-stack mandate; no claim that DPoP maps 1:1 onto the manifest authority model

Closes #13

Decision record (docs/decision-record-request-bound-credential-proof.md):
adopt the request-bound proof-of-possession concept at the tool boundary and
in the credential broker, as a lightweight binding (not the OAuth DPoP
stack). Session-bound vs request-bound comparison covers replay, tamper, and
cross-request leakage; the binding lives at both the tool boundary (signs
canonicalized request context) and the broker (verifies at phantom-token
swap, fail closed). Ledger receipts record only hash-only binding fields and
credential id, never secrets or argv bodies. Non-goals: no OAuth-stack
mandate, no 1:1 DPoP mapping onto the manifest authority model. Follow-up
implementation issue opened for the binding layer.

Closes #13
@tcconnally
tcconnally merged commit 1edc524 into main Aug 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

eval: request-bound credential proof (DPoP-style) for agent tool calls (decision record)

1 participant