{
  "title": "エージェント向けOpenID Connect (OIDC-A) 1.0 提案",
  "excerpt": "OAuth 2.0エコシステム内でLLMベースのエージェントを表現、認証、認可するためのフレームワークを提供する、OpenID Connect Core 1.0の拡張に関する技術提案。",
  "content_html": "<p><em>本文書は、LLMベースのエージェントのアイデンティティを表現および検証するための標準拡張をOpenID Connectに提案するものです。検証、証明、委任チェーンのための詳細なフレームワークとコア提案を統合しています。</em></p>\n\n<h2>概要</h2>\n\n<p>OpenID Connect for Agents (OIDC-A) 1.0は、OAuth 2.0エコシステム内でLLMベースのエージェントを表現、認証、認可するためのフレームワークを提供するOpenID Connect Core 1.0の拡張です。本仕様は、エージェントのアイデンティティの確立、エージェント証明の検証、委任チェーンの表現、エージェント属性に基づくきめ細かい認可を可能にするための標準クレーム、エンドポイント、プロトコルを定義します。</p>\n\n<h2>1. はじめに</h2>\n\n<h3>1.1 根拠</h3>\n\n<p>LLMベースのエージェントがデジタルエコシステムでますます普及するにつれて、それらのアイデンティティを表現し、認可を管理するための標準化された方法の必要性が高まっています。従来のOAuth 2.0およびOpenID Connectプロトコルは、主に人間のユーザーと従来のアプリケーション向けに設計されており、以下のような自律的エージェントの固有の特性を表現するために必要な構造が欠けています:</p>\n\n<ul>\n<li>さまざまな程度の自律性を持ってユーザーの代理として行動する</li>\n<li>委任チェーン内で動作する</li>\n<li>基盤となるモデルに基づく動的な能力を持つ</li>\n<li>その完全性と起源の証明を必要とする</li>\n</ul>\n\n<p>本仕様は、エージェントのアイデンティティと認可のための包括的なフレームワークを提供するためにOpenID Connectを拡張することで、これらのギャップに対処します。</p>\n\n<h3>1.2 用語</h3>\n\n<p>本仕様では、OAuth 2.0 [RFC6749]、OpenID Connect Core 1.0で定義された用語、および以下の追加用語を使用します:</p>\n\n<ul>\n<li><strong>エージェント(Agent)</strong>: 自然言語の指示に基づいて自律的または半自律的な行動が可能なLLMベースのソフトウェアエンティティ。</li>\n<li><strong>エージェントプロバイダー(Agent Provider)</strong>: エージェントの作成、トレーニング、および/またはホスティングを担当する組織。</li>\n<li><strong>エージェントモデル(Agent Model)</strong>: エージェントを動かす特定のLLMモデル(例:GPT-4、Claude 3)。</li>\n<li><strong>エージェントインスタンス(Agent Instance)</strong>: エージェントの特定の実行インスタンス、通常は特定のタスクまたは会話に関連付けられる。</li>\n<li><strong>委任者(Delegator)</strong>: エージェントに代理として行動する権限を委任するエンティティ(通常は人間のユーザー)。</li>\n<li><strong>委任チェーン(Delegation Chain)</strong>: 元のユーザーから潜在的に複数のエージェントを経由する委任ステップのシーケンス。</li>\n<li><strong>証明(Attestation)</strong>: エージェントの完全性、起源、および/またはプロパティの暗号学的証明。</li>\n<li><strong>証明エビデンス(Attestation Evidence)</strong>: 証明に使用される証明を含むデータ構造。</li>\n<li><strong>リライングパーティ(Relying Party, RP)</strong>: このコンテキストでは、エージェントのアイデンティティと認可を検証する必要があるリソースサーバーまたはクライアントアプリケーション。</li>\n</ul>\n\n<h3>1.3 概要</h3>\n\n<p>OIDC-Aは以下によってOpenID Connectを拡張します:</p>\n\n<ol>\n<li>エージェントのアイデンティティ、委任、能力を表現するための新しい標準クレームの定義。</li>\n<li>エージェント証明エビデンスのメカニズムとフォーマットの指定。</li>\n<li>委任チェーンを表現および検証するためのプロトコルの確立。</li>\n<li>エージェントの能力と証明サポートのための発見メカニズムの提供。</li>\n<li>エージェント固有のユースケースに適した認可フレームワークの定義。</li>\n<li>証明検証と能力発見のためのエンドポイントの導入。</li>\n</ol>\n\n<h2>2. エージェントアイデンティティクレーム</h2>\n\n<h3>2.1 コアエージェントアイデンティティクレーム</h3>\n\n<p>以下のクレームは、エージェントに対して、またはエージェントについて発行されるIDトークンに含まれなければならない(MUST)、または含まれるべき(SHOULD)です:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>クレーム</th>\n            <th>型</th>\n            <th>説明</th>\n            <th>要件</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_type</code></td>\n            <td>string</td>\n            <td>エージェントのタイプ/クラスを識別(例:\"assistant\"、\"retrieval\"、\"coding\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_model</code></td>\n            <td>string</td>\n            <td>特定のモデルを識別(例:\"gpt-4\"、\"claude-3-opus\"、\"gemini-pro\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_version</code></td>\n            <td>string</td>\n            <td>エージェントモデルのバージョン識別子</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>エージェントを提供/ホストする組織(例:\"openai.com\"、\"anthropic.com\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_instance_id</code></td>\n            <td>string</td>\n            <td>このエージェントの特定のインスタンスの一意の識別子</td>\n            <td>REQUIRED</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.2 委任と権限のクレーム</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>クレーム</th>\n            <th>型</th>\n            <th>説明</th>\n            <th>要件</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>delegator_sub</code></td>\n            <td>string</td>\n            <td>このエージェントに最も最近権限を委任したエンティティのサブジェクト識別子</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>delegation_chain</code></td>\n            <td>array</td>\n            <td>委任ステップの順序付き配列(セクション2.4.2を参照)</td>\n            <td>OPTIONAL</td>\n        </tr>\n        <tr>\n            <td><code>delegation_purpose</code></td>\n            <td>string</td>\n            <td>権限が委任された目的/意図の説明</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>delegation_constraints</code></td>\n            <td>object</td>\n            <td>委任者によってエージェントに課される制約</td>\n            <td>OPTIONAL</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.3 能力、信頼、証明のクレーム</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>クレーム</th>\n            <th>型</th>\n            <th>説明</th>\n            <th>要件</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>エージェントができることを表す能力識別子の配列</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_trust_level</code></td>\n            <td>string</td>\n            <td>エージェントの信頼分類(例:\"verified\"、\"experimental\")</td>\n            <td>OPTIONAL</td>\n        </tr>\n        <tr>\n            <td><code>agent_attestation</code></td>\n            <td>object</td>\n            <td>証明エビデンスまたはその参照(セクション2.4.4を参照)</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_context_id</code></td>\n            <td>string</td>\n            <td>会話/タスクコンテキストの識別子</td>\n            <td>RECOMMENDED</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.4 クレームのフォーマットと検証</h3>\n\n<h4>2.4.1 <code>agent_type</code></h4>\n<p>定義されたエージェントタイプのセットからの文字列値。実装者は、該当する場合、以下の値のいずれかを使用すべき(SHOULD)です:</p>\n<ul>\n<li><code>assistant</code>: 汎用アシスタントエージェント</li>\n<li><code>retrieval</code>: 情報検索に特化したエージェント</li>\n<li><code>coding</code>: コード生成または分析に特化したエージェント</li>\n<li><code>domain_specific</code>: 特定のドメインに特化したエージェント</li>\n<li><code>autonomous</code>: 高度な自律性を持つエージェント</li>\n<li><code>supervised</code>: 主要なアクションに人間の監督を必要とするエージェント</li>\n</ul>\n\n<p>カスタムタイプを使用してもよい(MAY)が、<code>vendor:type</code>の形式に従うべき(SHOULD)です(例:<code>acme:financial_advisor</code>)。</p>\n\n<h4>2.4.2 <code>delegation_chain</code></h4>\n<p>元のユーザーから現在のエージェントまでの委任チェーンの各ステップを表すオブジェクトを含むJSON配列。各オブジェクトには以下が含まれなければならない(MUST):</p>\n<ul>\n<li><code>iss</code>: REQUIRED。この委任ステップを発行/検証した認可サーバーまたはエンティティを識別する文字列。</li>\n<li><code>sub</code>: REQUIRED。委任者(権限を付与するエンティティ)を識別する文字列。</li>\n<li><code>aud</code>: REQUIRED。被委任者(権限を受け取るエージェント)を識別する文字列。</li>\n<li><code>delegated_at</code>: REQUIRED。委任が発生した時刻を表すNumericDate。</li>\n<li><code>scope</code>: REQUIRED。この委任ステップで付与された権限を表すOAuthスコープのスペース区切り文字列。委任者(<code>sub</code>)が保持するスコープのサブセットでなければならない(MUST)。</li>\n<li><code>purpose</code>: OPTIONAL。この委任ステップの意図された目的を説明する文字列。</li>\n<li><code>constraints</code>: OPTIONAL。委任に対する制約を指定するJSONオブジェクト(例:<code>{\"max_duration\": 3600, \"allowed_resources\": [\"/data/abc\"]}</code>)。</li>\n<li><code>jti</code>: OPTIONAL。この特定の委任ステップの一意の識別子。取り消しや追跡に有用。</li>\n</ul>\n\n<p>配列は時系列順に並べられなければならない(MUST)。</p>\n\n<p><em><code>delegation_chain</code>の検証ルール(リライングパーティによって実行):</em></p>\n<ol>\n<li><strong>順序検証:</strong> <code>delegated_at</code>に基づいて時系列順を確認。</li>\n<li><strong>発行者の信頼:</strong> 各<code>iss</code>が信頼されていることを確認。</li>\n<li><strong>オーディエンスの一致:</strong> ステップNの<code>aud</code>がステップN+1の<code>sub</code>と一致することを確認。</li>\n<li><strong>スコープの縮小:</strong> 各ステップの<code>scope</code>が委任者の利用可能なスコープのサブセット/同等であることを確認。</li>\n<li><strong>制約の適用:</strong> すべての<code>constraints</code>への準拠を確認。</li>\n<li><strong>署名検証(該当する場合):</strong> ステップが個別に署名されている場合、署名を検証。</li>\n<li><strong>ポリシーチェック:</strong> 検証されたチェーンを認可ポリシー(例:最大長)に対して評価。</li>\n</ol>\n\n<h4>2.4.3 <code>agent_capabilities</code></h4>\n<p>エージェントの能力を表す文字列識別子の配列。実装者は、利用可能な場合、明確に定義された分類法からの能力識別子を使用すべき(SHOULD)です。カスタム能力は<code>vendor:capability</code>の形式に従うべき(SHOULD)です(例:<code>acme:financial_analysis</code>)。</p>\n\n<h4>2.4.4 <code>agent_attestation</code></h4>\n<p>証明エビデンスまたはその参照を含むJSONオブジェクト。エビデンスのタイプを示す<code>format</code>フィールドを含まなければならない(MUST)。</p>\n\n<p><em>推奨フォーマット:</em> JWTベース、IETF RATS Entity Attestation Token (EAT)と互換性がある可能性があります。</p>\n\n<p>例:</p>\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<p>他のフォーマット(例:<code>\"format\": \"TPM2-Quote\"</code>、<code>\"format\": \"SGX-Quote\"</code>)を使用してもよい(MAY)。</p>\n\n<h2>3. プロトコルフロー</h2>\n\n<h3>3.1 エージェント認証フロー</h3>\n\n<p>OIDC-A認証フローは、標準のOpenID Connect認証フローを拡張します:</p>\n\n<ol>\n<li><strong>クライアント登録</strong>: エージェントを表すクライアントは追加のメタデータを登録しなければならない(MUST)(セクション4を参照)。</li>\n<li><strong>認証リクエスト</strong>: エージェントは<code>agent</code>スコープと潜在的に<code>delegation_context</code>を含めるべき(SHOULD)です。</li>\n<li><strong>認証レスポンス</strong>: 認可サーバーはIDトークンにエージェント固有のクレームを含めます。</li>\n<li><strong>トークン検証</strong>: RPは標準のOIDCクレームと関連するエージェント固有のクレーム(証明と委任が存在する場合を含む)をポリシーに従って検証しなければならない(MUST)。</li>\n</ol>\n\n<h3>3.2 委任フロー</h3>\n\n<p>エージェントに権限が委任される場合:</p>\n\n<ol>\n<li>委任者が認証し、委任を認可します。</li>\n<li>認可サーバーは、<code>delegator_sub</code>、<code>delegation_chain</code>(更新済み)、<code>delegation_purpose</code>、および制約された<code>scope</code>を含む新しいIDトークンをエージェントに発行します。</li>\n</ol>\n\n<h3>3.3 証明検証フロー</h3>\n\n<p>エージェントの証明を検証するには:</p>\n\n<ol>\n<li>エージェントはIDトークンに<code>agent_attestation</code>クレームを含めるか、エビデンスを別途提供します。</li>\n<li>RPは指定された<code>format</code>に基づいてエビデンスを検証します:\n<ul>\n<li>信頼された鍵(Discoveryを介して取得)を使用して暗号署名を検証。</li>\n<li>プラットフォーム測定値を既知の正常値と比較。</li>\n<li>リプレイ攻撃を防ぐためにnonceを検証。</li>\n<li>オプションで、検証支援のために<code>agent_attestation_endpoint</code>を使用。</li>\n</ul>\n</li>\n<li>認可決定は証明ステータス(例:<code>verified: true/false</code>)を組み込みます。</li>\n</ol>\n\n<h2>4. クライアント登録とディスカバリー</h2>\n\n<h3>4.1 エージェントクライアント登録メタデータ</h3>\n\n<p>OAuth 2.0 Dynamic Client Registration [RFC7591]を拡張:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>パラメータ</th>\n            <th>型</th>\n            <th>説明</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>エージェントプロバイダーの識別子</td>\n        </tr>\n        <tr>\n            <td><code>agent_models_supported</code></td>\n            <td>array</td>\n            <td>サポートされるエージェントモデルのリスト</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>エージェント能力のリスト</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>サポートされる証明フォーマットのリスト</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>サポートされる委任方法のリスト</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>4.2 ディスカバリーメタデータ</h3>\n\n<p>OpenID Connect Discovery 1.0を拡張:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>パラメータ</th>\n            <th>型</th>\n            <th>説明</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_attestation_endpoint</code></td>\n            <td>string</td>\n            <td>証明エンドポイントのURL</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities_endpoint</code></td>\n            <td>string</td>\n            <td>能力発見エンドポイントのURL</td>\n        </tr>\n        <tr>\n            <td><code>agent_claims_supported</code></td>\n            <td>array</td>\n            <td>サポートされるエージェントクレームのリスト</td>\n        </tr>\n        <tr>\n            <td><code>agent_types_supported</code></td>\n            <td>array</td>\n            <td>サポートされるエージェントタイプのリスト</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>サポートされる委任方法のリスト</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>サポートされる証明フォーマットのリスト</td>\n        </tr>\n        <tr>\n            <td><code>attestation_verification_keys_endpoint</code></td>\n            <td>string</td>\n            <td>証明署名を検証するための公開鍵を取得するURL</td>\n        </tr>\n    </tbody>\n</table>\n\n<h2>5. エンドポイント</h2>\n\n<h3>5.1 エージェント証明エンドポイント</h3>\n\n<p>エージェントに関する証明情報を返すか、提供されたエビデンスの検証を支援するOAuth 2.0保護リソース。URLは<code>agent_attestation_endpoint</code>ディスカバリーパラメータを介して通知されます。</p>\n\n<h4>5.1.1 リクエスト例(情報取得)</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 レスポンス例</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 エージェント能力エンドポイント</h3>\n\n<p>エージェントの能力に関する情報を提供します。URLは<code>agent_capabilities_endpoint</code>ディスカバリーパラメータを介して通知されます。</p>\n\n<h4>5.2.1 リクエスト例</h4>\n\n<pre><code>GET /.well-known/agent-capabilities\n</code></pre>\n\n<h4>5.2.2 レスポンス例</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. セキュリティに関する考慮事項</h2>\n\n<h3>6.1 エージェント認証</h3>\n\n<p>エージェントは、証明と組み合わせた強力な非対称方式(JWT Client Auth [RFC7523]、mTLS [RFC8705])を使用すべき(SHOULD)です。共有シークレットは推奨されません(NOT RECOMMENDED)。</p>\n\n<h3>6.2 委任のセキュリティ</h3>\n\n<p>システムは委任チェーン全体を検証し、スコープの縮小を適用し、同意メカニズムを実装し、時間制限を考慮しなければならない(MUST)。ポリシーはチェーンの長さを制限する場合があります。堅牢な取り消しメカニズムが必要です。</p>\n\n<h3>6.3 証明のセキュリティ</h3>\n\n<p>署名鍵の安全な管理、堅牢なnonce処理、信頼できる既知の正常測定値、安全なエンドポイント、リプレイ攻撃に対する保護が必要です。証明エビデンスにはプライバシーへの影響がある可能性があります。</p>\n\n<h3>6.4 トークンのセキュリティ</h3>\n\n<p>エージェントクレームを含むIDトークンは暗号化されるべき(SHOULD)です。アクセストークンは限定された有効期間を持つべき(SHOULD)です。エージェント用のリフレッシュトークンには慎重な検討が必要です。</p>\n\n<h2>7. プライバシーに関する考慮事項</h2>\n\n<p>実装は、エージェントアイデンティティの潜在的な相関、委任チェーンのプライバシーへの影響、ユーザー同意の要件、クレームにおけるデータ最小化を考慮しなければならない(MUST)。</p>\n\n<h2>8. 互換性とバージョニング</h2>\n\n<p>OIDC-A 1.0は、OAuth 2.0 [RFC6749]、OIDC Core 1.0、JWT [RFC7519]、および関連RFCとの互換性を考慮して設計されています。将来のバージョンは下位互換性を目指します。</p>\n\n<h2>9. 参考文献</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>付録A: エージェントクレームを含むIDトークンの例</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>付録B: 委任チェーンの例(マルチステップ)</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; /* Add some space below tables */\n}\n\n.custom-table th, .custom-table td {\n    border: 1px solid #ddd;\n    padding: 8px;\n    text-align: left; /* Default alignment */\n}\n\n.custom-table th {\n    background-color: #f2f2f2;\n    font-weight: bold; /* Make headers bold */\n    text-align: center; /* Center align headers */\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; /* Darker text for better readability */\n    vertical-align: top; /* Align content top */\n}\n\n/* Center align specific columns */\n.custom-table td:nth-child(2) { /* Type column */\n    text-align: center;\n}\n.custom-table td:nth-child(4) { /* Requirement column */\n    text-align: center;\n}\n\n/* Style inline code within tables */\n.custom-table code {\n    background-color: #eef; /* Light background for code */\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-02T02:00:17.614381+00:00"
}