Client Instance Assertion — User Delegation (authorization_code)
A user authorizes an AI agent via OAuth authorization code. When the agent redeems the code, it presents its Client Instance Assertion as the actor_token. The resulting access token carries user delegation: sub=user, act.sub=agent instance. This is the 'delegation' case.
The user visits the authorization endpoint (redirected from the agent's frontend). The AS authenticates the user, displays a consent screen, and the user grants the agent access to their repositories. PKCE code_challenge is included for security.
• This is a standard OAuth 2.1 authorization_code flow. The instance assertion is NOT involved at this stage.
• PKCE (code_challenge) protects against authorization code interception attacks.
• The client_id here is the logical OAuth client (the agent service), not any specific instance.
• §8.4: The instance assertion presented at step 5 MUST go to the same AS that issued this authorization code.
Step 1: GET /authorize (User Consent)
as.example.com
session=user_session_token