{
  "title": "OpenID Connect para Agentes (OIDC-A) 1.0 - Proposta",
  "excerpt": "Proposta técnica para estender o OpenID Connect Core 1.0 e fornecer uma estrutura para representar, autenticar e autorizar agentes baseados em LLM dentro do ecossistema OAuth 2.0.",
  "content_html": "<p><em>Este documento propõe uma extensão padrão ao OpenID Connect para representar e verificar a identidade de agentes baseados em LLM. Integra a proposta central com estruturas detalhadas para verificação, atestação e cadeias de delegação.</em></p>\n\n<h2>Resumo</h2>\n\n<p>OpenID Connect para Agentes (OIDC-A) 1.0 é uma extensão ao OpenID Connect Core 1.0 que fornece uma estrutura para representar, autenticar e autorizar agentes baseados em LLM dentro do ecossistema OAuth 2.0. Esta especificação define claims padrão, endpoints e protocolos para estabelecer identidade de agentes, verificar atestação de agentes, representar cadeias de delegação e habilitar autorização granular baseada em atributos de agentes.</p>\n\n<h2>1. Introdução</h2>\n\n<h3>1.1 Justificativa</h3>\n\n<p>À medida que os agentes baseados em LLM se tornam cada vez mais prevalentes em ecossistemas digitais, há uma necessidade crescente de métodos padronizados para representar sua identidade e gerenciar sua autorização. Os protocolos tradicionais OAuth 2.0 e OpenID Connect foram projetados principalmente para usuários humanos e aplicações convencionais, carecendo das construções necessárias para representar as características únicas de agentes autônomos, tais como:</p>\n\n<ul>\n<li>Agir em nome de usuários com diferentes graus de autonomia</li>\n<li>Operar dentro de cadeias de delegação</li>\n<li>Possuir capacidades dinâmicas baseadas em seus modelos subjacentes</li>\n<li>Requerer atestação de sua integridade e origem</li>\n</ul>\n\n<p>Esta especificação aborda essas lacunas estendendo o OpenID Connect para fornecer uma estrutura abrangente para identidade e autorização de agentes.</p>\n\n<h3>1.2 Terminologia</h3>\n\n<p>Esta especificação usa os termos definidos no OAuth 2.0 [RFC6749], OpenID Connect Core 1.0, e os seguintes termos adicionais:</p>\n\n<ul>\n<li><strong>Agente</strong>: Uma entidade de software baseada em LLM capaz de ação autônoma ou semi-autônoma baseada em instruções em linguagem natural.</li>\n<li><strong>Provedor de Agente</strong>: A organização responsável por criar, treinar e/ou hospedar o agente.</li>\n<li><strong>Modelo de Agente</strong>: O modelo LLM específico que alimenta o agente (por exemplo, GPT-4, Claude 3).</li>\n<li><strong>Instância de Agente</strong>: Uma instância específica em execução de um agente, tipicamente associada a uma tarefa ou conversa particular.</li>\n<li><strong>Delegador</strong>: A entidade (tipicamente um usuário humano) que delega autoridade a um agente para agir em seu nome.</li>\n<li><strong>Cadeia de Delegação</strong>: Uma sequência de etapas de delegação desde o usuário original através de potencialmente múltiplos agentes.</li>\n<li><strong>Atestação</strong>: Prova criptográfica da integridade, origem e/ou propriedades de um agente.</li>\n<li><strong>Evidência de Atestação</strong>: Estrutura de dados contendo a prova usada para atestação.</li>\n<li><strong>Relying Party (RP)</strong>: Neste contexto, frequentemente um Resource Server ou aplicação Cliente que precisa verificar a identidade e autorização de um agente.</li>\n</ul>\n\n<h3>1.3 Visão Geral</h3>\n\n<p>OIDC-A estende o OpenID Connect ao:</p>\n\n<ol>\n<li>Definir novos claims padrão para representar identidade, delegação e capacidades de agentes.</li>\n<li>Especificar mecanismos e formatos para evidência de atestação de agentes.</li>\n<li>Estabelecer protocolos para representar e validar cadeias de delegação.</li>\n<li>Fornecer mecanismos de descoberta para capacidades de agentes e suporte a atestação.</li>\n<li>Definir estruturas de autorização adequadas para casos de uso específicos de agentes.</li>\n<li>Introduzir endpoints para verificação de atestação e descoberta de capacidades.</li>\n</ol>\n\n<h2>2. Claims de Identidade de Agente</h2>\n\n<h3>2.1 Claims Principais de Identidade de Agente</h3>\n\n<p>Os seguintes claims DEVEM ou DEVERIAM ser incluídos em ID Tokens emitidos para ou sobre agentes:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>Claim</th>\n            <th>Tipo</th>\n            <th>Descrição</th>\n            <th>Requisito</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_type</code></td>\n            <td>string</td>\n            <td>Identifica o tipo/classe do agente (por exemplo, \"assistant\", \"retrieval\", \"coding\")</td>\n            <td>OBRIGATÓRIO</td>\n        </tr>\n        <tr>\n            <td><code>agent_model</code></td>\n            <td>string</td>\n            <td>Identifica o modelo específico (por exemplo, \"gpt-4\", \"claude-3-opus\", \"gemini-pro\")</td>\n            <td>OBRIGATÓRIO</td>\n        </tr>\n        <tr>\n            <td><code>agent_version</code></td>\n            <td>string</td>\n            <td>Identificador de versão do modelo do agente</td>\n            <td>RECOMENDADO</td>\n        </tr>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>Organização que fornece/hospeda o agente (por exemplo, \"openai.com\", \"anthropic.com\")</td>\n            <td>OBRIGATÓRIO</td>\n        </tr>\n        <tr>\n            <td><code>agent_instance_id</code></td>\n            <td>string</td>\n            <td>Identificador único para esta instância específica do agente</td>\n            <td>OBRIGATÓRIO</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.2 Claims de Delegação e Autoridade</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>Claim</th>\n            <th>Tipo</th>\n            <th>Descrição</th>\n            <th>Requisito</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>delegator_sub</code></td>\n            <td>string</td>\n            <td>Identificador de sujeito da entidade que mais recentemente delegou autoridade a este agente</td>\n            <td>OBRIGATÓRIO</td>\n        </tr>\n        <tr>\n            <td><code>delegation_chain</code></td>\n            <td>array</td>\n            <td>Array ordenado de etapas de delegação (veja Seção 2.4.2)</td>\n            <td>OPCIONAL</td>\n        </tr>\n        <tr>\n            <td><code>delegation_purpose</code></td>\n            <td>string</td>\n            <td>Descrição do propósito/intenção para o qual a autoridade foi delegada</td>\n            <td>RECOMENDADO</td>\n        </tr>\n        <tr>\n            <td><code>delegation_constraints</code></td>\n            <td>object</td>\n            <td>Restrições colocadas no agente pelo delegador</td>\n            <td>OPCIONAL</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.3 Claims de Capacidade, Confiança e Atestação</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>Claim</th>\n            <th>Tipo</th>\n            <th>Descrição</th>\n            <th>Requisito</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>Array de identificadores de capacidade representando o que o agente pode fazer</td>\n            <td>RECOMENDADO</td>\n        </tr>\n        <tr>\n            <td><code>agent_trust_level</code></td>\n            <td>string</td>\n            <td>Classificação de confiança do agente (por exemplo, \"verified\", \"experimental\")</td>\n            <td>OPCIONAL</td>\n        </tr>\n        <tr>\n            <td><code>agent_attestation</code></td>\n            <td>object</td>\n            <td>Evidência de atestação ou referência (veja Seção 2.4.4)</td>\n            <td>RECOMENDADO</td>\n        </tr>\n        <tr>\n            <td><code>agent_context_id</code></td>\n            <td>string</td>\n            <td>Identificador para o contexto de conversa/tarefa</td>\n            <td>RECOMENDADO</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.4 Formatos e Validação de Claims</h3>\n\n<h4>2.4.1 <code>agent_type</code></h4>\n\n<p>Valor string de um conjunto definido de tipos de agentes. Os implementadores DEVERIAM usar um dos seguintes valores quando aplicável:</p>\n\n<ul>\n<li><code>assistant</code>: Agente assistente de propósito geral</li>\n<li><code>retrieval</code>: Agente especializado em recuperação de informação</li>\n<li><code>coding</code>: Agente especializado em geração ou análise de código</li>\n<li><code>domain_specific</code>: Agente especializado para um domínio particular</li>\n<li><code>autonomous</code>: Agente com alto grau de autonomia</li>\n<li><code>supervised</code>: Agente requerendo supervisão humana para ações-chave</li>\n</ul>\n\n<p>Tipos customizados PODEM ser usados, mas DEVERIAM seguir o formato <code>vendor:type</code> (por exemplo, <code>acme:financial_advisor</code>).</p>\n\n<h4>2.4.2 <code>delegation_chain</code></h4>\n\n<p>Array JSON contendo objetos representando cada etapa na cadeia de delegação, desde o usuário original até o agente atual. Cada objeto DEVE conter:</p>\n\n<ul>\n<li><code>iss</code>: OBRIGATÓRIO. String identificando o Authorization Server ou entidade que emitiu/validou esta etapa de delegação.</li>\n<li><code>sub</code>: OBRIGATÓRIO. String identificando o delegador (a entidade concedendo permissão).</li>\n<li><code>aud</code>: OBRIGATÓRIO. String identificando o delegado (o agente recebendo permissão).</li>\n<li><code>delegated_at</code>: OBRIGATÓRIO. NumericDate representando o momento em que a delegação ocorreu.</li>\n<li><code>scope</code>: OBRIGATÓRIO. String separada por espaços de scopes OAuth representando as permissões concedidas nesta etapa de delegação. DEVE ser um subconjunto dos scopes mantidos pelo delegador (<code>sub</code>).</li>\n<li><code>purpose</code>: OPCIONAL. String descrevendo o propósito pretendido desta etapa de delegação.</li>\n<li><code>constraints</code>: OPCIONAL. Objeto JSON especificando restrições na delegação (por exemplo, <code>{\"max_duration\": 3600, \"allowed_resources\": [\"/data/abc\"]}</code>).</li>\n<li><code>jti</code>: OPCIONAL. Um identificador único para esta etapa de delegação específica, útil para revogação ou rastreamento.</li>\n</ul>\n\n<p>O array DEVE ser ordenado cronologicamente.</p>\n\n<p><em>Regras de Validação para <code>delegation_chain</code> (executadas pela Relying Party):</em></p>\n\n<ol>\n<li><strong>Verificação de Ordem:</strong> Confirmar ordem cronológica baseada em <code>delegated_at</code>.</li>\n<li><strong>Confiança do Emissor:</strong> Verificar se cada <code>iss</code> é confiável.</li>\n<li><strong>Correspondência de Audiência:</strong> Confirmar que <code>aud</code> da etapa N corresponde a <code>sub</code> da etapa N+1.</li>\n<li><strong>Redução de Scope:</strong> Verificar se <code>scope</code> em cada etapa é um subconjunto de/igual aos scopes disponíveis do delegador.</li>\n<li><strong>Aplicação de Restrições:</strong> Garantir conformidade com quaisquer <code>constraints</code>.</li>\n<li><strong>Validação de Assinatura (se aplicável):</strong> Validar assinaturas se as etapas forem assinadas individualmente.</li>\n<li><strong>Verificação de Política:</strong> Avaliar a cadeia validada contra políticas de autorização (por exemplo, comprimento máximo).</li>\n</ol>\n\n<h4>2.4.3 <code>agent_capabilities</code></h4>\n\n<p>Array de identificadores string representando as capacidades do agente. Os implementadores DEVERIAM usar identificadores de capacidade de uma taxonomia bem definida quando disponível. Capacidades customizadas DEVERIAM seguir o formato <code>vendor:capability</code> (por exemplo, <code>acme:financial_analysis</code>).</p>\n\n<h4>2.4.4 <code>agent_attestation</code></h4>\n\n<p>Objeto JSON contendo evidência de atestação ou uma referência a ela. DEVE incluir um campo <code>format</code> indicando o tipo de evidência.</p>\n\n<p><em>Formato Recomendado:</em> Baseado em JWT, potencialmente compatível com IETF RATS Entity Attestation Token (EAT).</p>\n\n<p>Exemplo:</p>\n\n<pre><code class=\"language-json\">\"agent_attestation\": {\n  \"format\": \"urn:ietf:params:oauth:token-type:eat\",\n  \"token\": \"eyJhbGciOiJFUzI1NiIsInR5cCI6ImVhdCtqd3QifQ...\"\n}\n</code></pre>\n\n<p>Outros formatos (por exemplo, <code>\"format\": \"TPM2-Quote\"</code>, <code>\"format\": \"SGX-Quote\"</code>) PODEM ser usados.</p>\n\n<h2>3. Fluxo de Protocolo</h2>\n\n<h3>3.1 Fluxo de Autenticação de Agente</h3>\n\n<p>O fluxo de autenticação OIDC-A estende o fluxo de Autenticação padrão do OpenID Connect:</p>\n\n<ol>\n<li><strong>Registro de Cliente</strong>: Clientes representando agentes DEVEM registrar metadados adicionais (veja Seção 4).</li>\n<li><strong>Requisição de Autenticação</strong>: Agentes DEVERIAM incluir o scope <code>agent</code> e potencialmente <code>delegation_context</code>.</li>\n<li><strong>Resposta de Autenticação</strong>: O Authorization Server inclui claims específicos de agente no ID Token.</li>\n<li><strong>Validação de Token</strong>: RPs DEVEM validar claims OIDC padrão e claims relevantes específicos de agente (incluindo atestação e delegação se presentes) de acordo com a política.</li>\n</ol>\n\n<h3>3.2 Fluxo de Delegação</h3>\n\n<p>Quando um agente recebe autoridade delegada:</p>\n\n<ol>\n<li>O delegador autentica e autoriza a delegação.</li>\n<li>O Authorization Server emite um novo ID Token para o agente incluindo <code>delegator_sub</code>, <code>delegation_chain</code> (atualizada), <code>delegation_purpose</code> e <code>scope</code> restrito.</li>\n</ol>\n\n<h3>3.3 Fluxo de Verificação de Atestação</h3>\n\n<p>Para verificar a atestação de um agente:</p>\n\n<ol>\n<li>O agente inclui o claim <code>agent_attestation</code> em seu ID Token ou fornece evidência separadamente.</li>\n<li>O RP valida a evidência baseada no <code>format</code> especificado:\n<ul>\n<li>Verificar assinaturas criptográficas usando chaves confiáveis (obtidas via Discovery).</li>\n<li>Comparar medições de plataforma contra valores conhecidos como bons.</li>\n<li>Validar nonces para prevenir ataques de replay.</li>\n<li>Opcionalmente, usar o <code>agent_attestation_endpoint</code> para assistência na validação.</li>\n</ul></li>\n<li>Decisões de autorização incorporam o status de atestação (por exemplo, <code>verified: true/false</code>).</li>\n</ol>\n\n<h2>4. Registro de Cliente e Descoberta</h2>\n\n<h3>4.1 Metadados de Registro de Cliente de Agente</h3>\n\n<p>Estende OAuth 2.0 Dynamic Client Registration [RFC7591]:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>Parâmetro</th>\n            <th>Tipo</th>\n            <th>Descrição</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>Identificador do provedor de agente</td>\n        </tr>\n        <tr>\n            <td><code>agent_models_supported</code></td>\n            <td>array</td>\n            <td>Lista de modelos de agente suportados</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>Lista de capacidades do agente</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>Lista de formatos de atestação suportados</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>Lista de métodos de delegação suportados</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>4.2 Metadados de Descoberta</h3>\n\n<p>Estende OpenID Connect Discovery 1.0:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>Parâmetro</th>\n            <th>Tipo</th>\n            <th>Descrição</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_attestation_endpoint</code></td>\n            <td>string</td>\n            <td>URL do endpoint de atestação</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities_endpoint</code></td>\n            <td>string</td>\n            <td>URL do endpoint de descoberta de capacidades</td>\n        </tr>\n        <tr>\n            <td><code>agent_claims_supported</code></td>\n            <td>array</td>\n            <td>Lista de claims de agente suportados</td>\n        </tr>\n        <tr>\n            <td><code>agent_types_supported</code></td>\n            <td>array</td>\n            <td>Lista de tipos de agente suportados</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>Lista de métodos de delegação suportados</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>Lista de formatos de atestação suportados</td>\n        </tr>\n        <tr>\n            <td><code>attestation_verification_keys_endpoint</code></td>\n            <td>string</td>\n            <td>URL para recuperar chaves públicas para verificar assinaturas de atestação</td>\n        </tr>\n    </tbody>\n</table>\n\n<h2>5. Endpoints</h2>\n\n<h3>5.1 Endpoint de Atestação de Agente</h3>\n\n<p>Um recurso protegido OAuth 2.0 que retorna informações de atestação sobre um agente ou auxilia na validação de evidências fornecidas. URL anunciada via parâmetro de descoberta <code>agent_attestation_endpoint</code>.</p>\n\n<h4>5.1.1 Exemplo de Requisição (Obter Info)</h4>\n\n<pre><code>GET /agent/attestation?agent_id=123&amp;nonce=abc\nAuthorization: Bearer &lt;token&gt;\n</code></pre>\n\n<h4>5.1.2 Exemplo de Resposta</h4>\n\n<pre><code class=\"language-json\">{\n  \"verified\": true,\n  \"provider\": \"openai.com\",\n  \"model\": \"gpt-4\",\n  \"version\": \"2025-03\",\n  \"attestation_timestamp\": 1714348800,\n  \"attestation_signature\": \"...\"\n}\n</code></pre>\n\n<h3>5.2 Endpoint de Capacidades de Agente</h3>\n\n<p>Fornece informações sobre as capacidades de um agente. URL anunciada via parâmetro de descoberta <code>agent_capabilities_endpoint</code>.</p>\n\n<h4>5.2.1 Exemplo de Requisição</h4>\n\n<pre><code>GET /.well-known/agent-capabilities\n</code></pre>\n\n<h4>5.2.2 Exemplo de Resposta</h4>\n\n<pre><code class=\"language-json\">{\n  \"capabilities\": [\n    {\"id\": \"text_generation\", \"description\": \"...\"},\n    {\"id\": \"code_generation\", \"description\": \"...\"}\n  ],\n  \"supported_constraints\": [\"max_tokens\", \"allowed_tools\"]\n}\n</code></pre>\n\n<h2>6. Considerações de Segurança</h2>\n\n<h3>6.1 Autenticação de Agente</h3>\n\n<p>Agentes DEVERIAM usar métodos assimétricos fortes (JWT Client Auth [RFC7523], mTLS [RFC8705]), potencialmente combinados com atestação. Segredos compartilhados NÃO SÃO RECOMENDADOS.</p>\n\n<h3>6.2 Segurança de Delegação</h3>\n\n<p>Sistemas DEVEM validar toda a cadeia de delegação, impor redução de scope, implementar mecanismos de consentimento e considerar limitação de tempo. Políticas podem limitar o comprimento da cadeia. Mecanismos de revogação robustos são necessários.</p>\n\n<h3>6.3 Segurança de Atestação</h3>\n\n<p>Requer gerenciamento seguro de chaves de assinatura, manipulação robusta de nonce, medições conhecidas como boas confiáveis, endpoints seguros e proteção contra ataques de replay. Evidência de atestação pode ter implicações de privacidade.</p>\n\n<h3>6.4 Segurança de Token</h3>\n\n<p>ID Tokens com claims de agente DEVERIAM ser criptografados. Access tokens DEVERIAM ter tempos de vida limitados. Refresh tokens para agentes requerem consideração cuidadosa.</p>\n\n<h2>7. Considerações de Privacidade</h2>\n\n<p>Implementações DEVEM considerar potencial correlação de identidade de agente, implicações de privacidade de cadeias de delegação, requisitos de consentimento do usuário e minimização de dados em claims.</p>\n\n<h2>8. Compatibilidade e Versionamento</h2>\n\n<p>OIDC-A 1.0 é projetado para compatibilidade com OAuth 2.0 [RFC6749], OIDC Core 1.0, JWT [RFC7519] e RFCs relacionadas. Versões futuras visarão compatibilidade retroativa.</p>\n\n<h2>9. Referências</h2>\n\n<ul>\n<li>[RFC6749] The OAuth 2.0 Authorization Framework</li>\n<li>[RFC7519] JSON Web Token (JWT)</li>\n<li>[RFC7523] JWT Profile for OAuth 2.0 Client Authentication</li>\n<li>[RFC7591] OAuth 2.0 Dynamic Client Registration</li>\n<li>[RFC7662] OAuth 2.0 Token Introspection</li>\n<li>[RFC8705] OAuth 2.0 Mutual-TLS Client Authentication</li>\n<li>[OpenID Connect Core 1.0]</li>\n<li>[OpenID Connect Discovery 1.0]</li>\n<li>[IETF RATS] Remote Attestation Procedures Architecture</li>\n</ul>\n\n<h2>Apêndice A: Exemplo de ID Token com Claims de Agente</h2>\n\n<pre><code class=\"language-json\">{\n  \"iss\": \"https://auth.example.com\",\n  \"sub\": \"agent_instance_789\",\n  \"aud\": \"client_123\",\n  \"exp\": 1714435200,\n  \"iat\": 1714348800,\n  \"auth_time\": 1714348800,\n  \"nonce\": \"n-0S6_WzA2Mj\",\n  \"agent_type\": \"assistant\",\n  \"agent_model\": \"gpt-4\",\n  \"agent_version\": \"2025-03\",\n  \"agent_provider\": \"openai.com\",\n  \"agent_instance_id\": \"agent_instance_789\",\n  \"delegator_sub\": \"user_456\",\n  \"delegation_purpose\": \"Email management assistant\",\n  \"agent_capabilities\": [\"email:read\", \"email:draft\", \"calendar:view\"],\n  \"agent_trust_level\": \"verified\",\n  \"agent_context_id\": \"conversation_123\",\n  \"agent_attestation\": {\n    \"format\": \"urn:ietf:params:oauth:token-type:eat\",\n    \"token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"timestamp\": 1714348800\n  },\n  \"delegation_chain\": [\n    {\n      \"iss\": \"https://auth.example.com\",\n      \"sub\": \"user_456\",\n      \"aud\": \"agent_instance_789\",\n      \"delegated_at\": 1714348700,\n      \"scope\": \"email profile calendar\"\n    }\n  ]\n}\n</code></pre>\n\n<h2>Apêndice B: Exemplo de Cadeia de Delegação (Multi-etapa)</h2>\n\n<pre><code class=\"language-json\">\"delegation_chain\": [\n  {\n    \"iss\": \"https://auth.example.com\",\n    \"sub\": \"user_456\",\n    \"aud\": \"agent_instance_789\",\n    \"delegated_at\": 1714348800,\n    \"scope\": \"email calendar\",\n    \"purpose\": \"Manage my emails and calendar\"\n  },\n  {\n    \"iss\": \"https://auth.example.com\",\n    \"sub\": \"agent_instance_789\",\n    \"aud\": \"agent_instance_101\",\n    \"delegated_at\": 1714348830,\n    \"scope\": \"calendar:view\",\n    \"purpose\": \"Analyze available time slots\"\n  }\n]\n</code></pre>\n\n<style>\n.custom-table {\n    width: 100%;\n    border-collapse: collapse;\n    margin-bottom: 1em;\n}\n\n.custom-table th, .custom-table td {\n    border: 1px solid #ddd;\n    padding: 8px;\n    text-align: left;\n}\n\n.custom-table th {\n    background-color: #f2f2f2;\n    font-weight: bold;\n    text-align: center;\n}\n\n.custom-table tr:nth-child(even){background-color: #f9f9f9;}\n\n.custom-table tr:hover {background-color: #ddd;}\n\n.custom-table td {\n    color: #333;\n    vertical-align: top;\n}\n\n.custom-table td:nth-child(2) {\n    text-align: center;\n}\n.custom-table td:nth-child(4) {\n    text-align: center;\n}\n\n.custom-table code {\n    background-color: #eef;\n    padding: 0.2em 0.4em;\n    border-radius: 3px;\n    font-size: 90%;\n}\n</style>",
  "source_hash": "sha256:73ea6cb5f87d953b8052cd05e0a127fa1a9cf036913230dc7e62c81ec066af98",
  "model": "claude-sonnet-4-5-20250929",
  "generated_at": "2026-01-02T01:49:19.684974+00:00"
}