Skip to content

docs: integrations/agent-credentials.md — signed state-at-stop as the #99/#149 bridge #267

Description

@rabbidave

Following up on @imran-siddique's proposal in cosai-oasis/ws4-secure-design-agentic-systems#149 (2026-07-31 comment). Claiming this slot — unclaimed as of this writing — because the WS4/agent-manifest coevolution now has a concrete technical hook, not just a conceptual boundary.

The bridge: #99 asks "what does a credential assert?" and #149 asks "what does a manifest bind?" Between them sits a question neither answers alone: when is an agent's state trustworthy enough to assert as a claim in the first place?

OCSF's stop_reason_id (ocsf/ocsf-schema#1704, ai_operation profile, still open) answers that. Its values — Stop(1), Length(2), Tool Use(3), Session Stop(4) — carry an explicit semantic split added during review: after a defined stop, the agent's state at that boundary is known and reclaimable; after Unknown, it isn't. That's the leading-indicator use the enum was built for.

Tool Use is the case that matters here: it's the exact moment a credential-gated access decision has to happen, and it's a defined stop boundary — precisely where a signed state snapshot is legitimate to produce, not an arbitrary mid-decode point. That mechanism already exists: rabbidave/ws4-secure-design-agentic-systems@1e35ab5 emits an OCSF ai_agent object with a kv_state_fingerprint and an OAuth-bound token_fingerprint, correlated to a Manifest via ai_agent.instance_uid (the correlation this repo's companion spec_change issue proposes formally).

Put together: a Tool Use stop fires → agent-state emits a signed, instance_uid-correlated state fingerprint at that exact boundary → that fingerprint is the claim a #99 credential presents for the access decision the stop just triggered. Not "trust me" — "here is the signed state, at the one moment OCSF already defines as knowable, correlated to a manifest you can independently verify."

Proposed doc: docs/integrations/agent-credentials.md, following this repo's existing agt.md convention (division-of-concerns table + numbered integration points with code):

  1. What a credential asserts vs. what a manifest binds
  2. stop_reason_id as trigger — why Tool Use/Session Stop are valid signed-state boundaries, Unknown isn't
  3. Digest-as-claim: ai_agent.instance_uid (manifest correlation) + kv_state_fingerprint (state-at-stop) as the two values a credential carries
  4. Explicit non-coverage: doesn't make every stop attestable, doesn't replace boot-time fields_verified checks, takes no position on Unknown-boundary state

Co-authorship, per Imran's ask: @imolloy and the #99 authors (@benhylau, @ksingh299, @akolekar-zs, @rithikha).

Happy to take the first pass since the mechanism already exists in working code — flagging scope here first, per Imran's preference for contesting scope before a draft goes up rather than after.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions