DCP-09: Delegación y representación¶
Traducción informativa de la especificación en inglés, actualizada el 25/10/2026. La versión normativa es la inglesa: esta traducción no tiene valor normativo y, si difieren, prevalece el inglés. Los identificadores y bloques de código se conservan sin traducir.
Estado¶
Publicada — v2.0 (extensión; las revisiones se gestionan según los comentarios de quienes la adoptan)
Erratas (25/10/2026, normativas): las erratas E5, E6, E7 y E8 de V2-WIRE-COMPATIBILITY.md corrigen los contextos de firma, el campo que lleva la caducidad de un mandato y el carácter de los ejemplos. No cambian ningún otro requisito de esta especificación.
Resumen¶
Esta especificación define el protocolo para la delegación de autoridad de una persona a un agente, los umbrales de conciencia del agente, las declaraciones de aviso, los espejos del principal y los registros de interacción de doble capa. Proporciona mecanismos para que un principal humano delegue formalmente una autoridad concreta en un agente de IA, para que los agentes declaren cómo entienden el contexto delegado y para que las interacciones se registren tanto en una capa técnica como en una capa legible por personas. DCP-09 también extiende el handshake A2A de DCP-04 para incluir la verificación del mandato de delegación, de modo que los agentes que actúan en nombre de principales puedan demostrar su autoridad ante las contrapartes.
1. Introducción¶
DCP-01 establece que todo agente está vinculado a un principal responsable. Sin embargo, la naturaleza de esa vinculación (qué autoridad ha delegado el principal, qué entiende el agente sobre su papel delegado y cómo representa el agente a su principal en las interacciones) no está especificada formalmente. DCP-09 cubre ese hueco.
En los sistemas multiagente, los agentes actúan con frecuencia en nombre de principales humanos que no pueden estar presentes en cada interacción. Un agente de compras negocia con agentes de proveedores, un agente de cumplimiento revisa una política en nombre de un responsable de gobernanza, un agente de investigación consulta fuentes de datos en nombre de una científica o un científico. En cada caso, el agente ejerce una autoridad delegada, y el alcance y los límites de esa autoridad deben ser explícitos, verificables y auditables.
DCP-09 aborda cinco cuestiones interrelacionadas:
- Delegación: cómo un principal concede formalmente autoridad a un agente
- Conciencia: cómo un agente declara su comprensión del contexto delegado y de sus limitaciones
- Aviso: cómo un agente comunica incertidumbre o recomendaciones a su principal
- Representación: cómo un agente presenta los intereses de su principal en forma legible por personas
- Registro de interacciones: cómo se capturan las interacciones tanto en la capa técnica como en la narrativa
1.1 Principios de diseño¶
- La delegación es explícita, acotada y limitada en el tiempo
- Los agentes deben declarar lo que entienden, no solo lo que pueden hacer
- Los principales humanos deben poder revisar las acciones del agente en lenguaje natural
- Las interacciones producen registros de doble capa: verificables por máquina y legibles por personas
- Las contrapartes pueden verificar los mandatos de delegación durante los handshakes A2A
1.2 Relación con otras especificaciones¶
- DCP-01: los mandatos de delegación amplían la vinculación con el principal con ámbitos de autoridad explícitos
- DCP-02: las declaraciones de intención hacen referencia al mandato de delegación que autoriza la acción
- DCP-03: todos los eventos de delegación se registran en la cadena de auditoría
- DCP-04: el handshake A2A se extiende para incluir la verificación del mandato
- DCP-05: los mandatos de delegación se revocan cuando el agente se retira
- DCP-07: pueden surgir disputas por exceder la autoridad delegada
- DCP-08: los agentes tienen la obligación de actuar dentro del ámbito delegado
2. Terminología¶
Mandato de delegación: un documento firmado por un principal humano que concede una autoridad concreta a un agente, con un ámbito, unas condiciones y una caducidad definidos.
Umbral de conciencia: una declaración estructurada de un agente sobre lo que entiende y lo que no entiende de su contexto delegado, que sirve como mecanismo verificable de honestidad.
Declaración de aviso: una comunicación formal de un agente a su principal en la que declara incertidumbre, recomienda una revisión humana o señala condiciones que pueden exceder la competencia delegada del agente.
Espejo del principal: una representación narrativa, legible por personas, de los intereses, valores y prioridades del principal, tal como los entiende el agente, que acompaña al agente en las interacciones.
Registro de interacción: un registro de doble capa de una interacción: una capa técnica (verificable por máquina) y una capa narrativa (legible por personas), ambas firmadas y encadenadas por hash.
Cadena de mandatos: cuando un agente delega un subconjunto de su autoridad en otro agente, la cadena de mandatos desde el principal humano original, pasando por los agentes intermedios, hasta el delegado final.
Contextos de separación de dominio: DCP-AI.v2.Delegation (mandatos raíz, espejos del principal y registros de interacción), DCP-AI.v2.Awareness (umbrales de conciencia y declaraciones de aviso), DCP-AI.v2.SubMandate (submandatos, sección 3.5). Errata E5; los dos primeros figuraban antes aquí como las etiquetas DCP-DELEGATION-SIG-v2 y DCP-AWARENESS-SIG-v2.
3. Mandato de delegación¶
3.1 Propósito¶
Un mandato de delegación es el instrumento formal por el que un principal humano concede autoridad a un agente de IA. Define qué está autorizado a hacer el agente, en qué condiciones, con qué límites y durante cuánto tiempo. Sin un mandato de delegación válido, un agente no debe (MUST NOT) actuar en nombre de un principal más allá de sus capacidades básicas.
3.2 Esquema¶
Referencia del esquema: schemas/v2/delegation_mandate.schema.json
Erratas E6 y E7 (25/10/2026): este ejemplo es conceptual. El formato de intercambio V2.0 es el esquema: la ventana es
valid_from/valid_until, y la firma eshuman_composite_sig(raíz) odelegator_composite_sig(submandato), sección 3.5. Hay mandatos raíz y submandatos firmados entests/interop/v2/mandate_chain_vectors.json. Véase V2-WIRE-COMPATIBILITY.md.
{
"dcp_version": "2.0",
"record_type": "delegation_mandate",
"mandate_id": "dm:<uuid>",
"mandate_hash": "sha256:<hex of the canonical form of this mandate>",
"delegator": {
"principal_id": "principal:<identifier>",
"principal_name": "Dr. Sarah Chen",
"organization_id": "org:<identifier>",
"role": "Head of Procurement"
},
"delegate": {
"agent_id": "agent:<identifier>",
"agent_name": "Procurement Agent Alpha"
},
"authority": {
"scope": "procurement",
"permissions": [
{
"action": "negotiate",
"resource_pattern": "vendor:*",
"conditions": {
"max_contract_value": 50000,
"currency": "USD",
"approved_vendors_only": true,
"vendor_list_reference": "policy:approved-vendors-2026-q1"
}
},
{
"action": "issue_purchase_order",
"resource_pattern": "vendor:approved:*",
"conditions": {
"max_order_value": 10000,
"currency": "USD",
"requires_dual_quote": true
}
},
{
"action": "request_information",
"resource_pattern": "vendor:*",
"conditions": {}
}
],
"prohibitions": [
{
"action": "approve_payment",
"reason": "Payment approval requires human authorization"
},
{
"action": "modify_vendor_list",
"reason": "Vendor list modifications require governance review"
}
],
"escalation_triggers": [
{
"condition": "contract_value_exceeds_threshold",
"threshold": 25000,
"action": "advisory_to_principal",
"description": "Notify principal when negotiated value exceeds $25,000"
},
{
"condition": "new_vendor_encountered",
"action": "advisory_to_principal",
"description": "Alert principal when interacting with a vendor not on the approved list"
},
{
"condition": "uncertainty_above_threshold",
"threshold": 0.3,
"action": "pause_and_advise",
"description": "Pause action and seek principal guidance when confidence drops below 70%"
}
]
},
"sub_delegation": {
"permitted": true,
"max_depth": 1,
"sub_delegate_requirements": {
"same_organization_required": true,
"minimum_security_tier": "elevated",
"permitted_scope_reduction_only": true
}
},
"validity": {
"effective_from": "2026-03-01T00:00:00Z",
"effective_until": "2026-06-01T00:00:00Z",
"renewable": true,
"revocation_conditions": [
"principal_revocation",
"agent_decommissioned",
"policy_violation_detected",
"organization_policy_change"
]
},
"audit_requirements": {
"log_all_actions": true,
"narrative_record_required": true,
"principal_review_interval": "P7D",
"advisory_threshold": "medium"
},
"issued_at": "2026-03-01T00:00:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<principal-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-DELEGATION-SIG-v2"
},
"agent_acknowledgment": {
"acknowledged_at": "2026-03-01T00:01:00Z",
"awareness_threshold_id": "at:<uuid>",
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-DELEGATION-SIG-v2"
}
}
3.3 Flujo de emisión del mandato¶
- El principal crea el mandato de delegación y define el ámbito, los permisos, las prohibiciones y la validez
- El principal firma el mandato con su clave
- El mandato se entrega al agente
- El agente revisa el mandato y crea un umbral de conciencia (sección 4) que refleja su comprensión
- El agente firma el acuse de recibo y lo enlaza con el umbral de conciencia
- El mandato con acuse de recibo pasa a estar activo
- Se crea una entrada de auditoría
delegation_mandate_issueden las cadenas de auditoría del principal y del agente
Nota informativa (25/10/2026): el esquema V2.0
delegation_mandateno tiene ningún campo para el acuse del agente del paso 5; véase V2-WIRE-COMPATIBILITY.md.
3.4 Hash del mandato¶
mandate_hash es un hash SHA-256 del contenido canónico (serializado de forma determinista) del mandato, sin las firmas. Este hash se usa en los handshakes A2A (sección 8) para que las contrapartes puedan verificar la autoridad del agente sin acceder al mandato completo.
3.5 Subdelegación¶
Un agente delegado puede (MAY) transmitir parte de su autoridad a otro agente emitiendo un submandato: un DelegationMandate (schemas/v2/delegation_mandate.schema.json) que hace referencia a su padre y que firma el agente que delega en lugar de la persona. Los mandatos que van desde el mandato raíz de la persona hasta el agente que actúa forman la cadena de mandatos. La responsabilidad sobrevive a cada salto porque cada salto está firmado, solo puede restringir lo que concedió el anterior y se verifica sin conexión hasta llegar al principal humano.
3.5.1 Campos del formato de intercambio¶
El esquema del formato de intercambio tiene estos campos opcionales, todos ausentes en un mandato que no forma parte de una cadena, de modo que los mandatos raíz existentes no cambian ni un byte:
| Campo | Tipo | Significado |
|---|---|---|
parent_mandate_id |
string | mandate_id del mandato que este submandato restringe. Debe (MUST) estar ausente en un mandato raíz. |
delegation_depth |
integer ≥ 0 | Saltos desde la persona: 0 (o ausente) en un mandato raíz, la profundidad del padre + 1 en un submandato. |
sub_delegation |
{ "permitted": boolean, "max_depth": integer ≥ 0 } |
Si el delegado puede subdelegar y la mayor delegation_depth que puede alcanzar cualquier descendiente. Su ausencia significa que la subdelegación no está permitida. |
minimum_security_tier |
routine | standard | elevated | maximum |
Nivel mínimo de seguridad (DCP-AI v2.0 §14.2) de toda acción realizada con el mandato. |
delegator_composite_sig |
CompositeSignature |
Firma del agente que delega (el agent_id del mandato padre) sobre el submandato canónico, con el contexto de separación de dominio DCP-AI.v2.SubMandate. |
Un mandato raíz debe (MUST) llevar human_composite_sig (contexto DCP-AI.v2.Delegation) y no debe (MUST NOT) llevar delegator_composite_sig. Un submandato debe (MUST) llevar delegator_composite_sig, parent_mandate_id y delegation_depth, y no debe (MUST NOT) llevar human_composite_sig. Los bytes firmados son el mandato canónico sin su campo de firma, con el contexto que corresponde a su profundidad.
Tanto human_composite_sig como delegator_composite_sig deben (MUST) usar la vinculación pq_over_classical (DCP-AI v2.0 §5): un verificador debe (MUST) rechazar un mandato cuya firma sea classical_only, sea cual sea su modo de verificación.
3.5.2 Verificación de la cadena¶
Un verificador que acepta una cadena de mandatos debe (MUST) recibir la cadena ordenada (la raíz primero), el conjunto de mandate_id revocados, el momento de la verificación y las claves del principal humano y de cada agente que delega, y debe (MUST) rechazar la cadena entera salvo que se cumpla todo lo siguiente. Las claves del principal humano deben (MUST) ser las binding_keys del Responsible Principal Record del human_id de la cadena, y las claves de un agente que delega deben (MUST) ser las keys del Agent Passport verificado de ese agent_id; el verificador de la cadena busca las claves por kid en lo que se le entrega y no establece por sí mismo esa correspondencia, el mismo modelo de confianza que el del verificador de bundles. Las marcas de tiempo se interpretan como instantes RFC 3339 y no deben (MUST NOT) compararse como texto. Cualquier campo con un valor desconocido, cualquier campo que falte para la profundidad del mandato y cualquier entrada que no sea comparable hacen que la verificación falle de forma cerrada.
- Raíz. El primer mandato tiene
delegation_depth0 o ninguna, no tieneparent_mandate_idy tiene unahuman_composite_sigque se verifica con las claves del principal humano. - Enlace. El
parent_mandate_idde cada submandato es igual almandate_iddel mandato anterior; sudelegation_depthes la del padre + 1; suhuman_ides igual al del padre; y sudelegator_composite_sigse verifica con las claves delagent_iddel padre. - Permiso y profundidad. El
sub_delegation.permitteddel padre estrue, y ladelegation_depthdel submandato es como máximo el menorsub_delegation.max_depthde todos sus ancestros. - Ventana de validez.
valid_fromno es anterior a la del padre yvalid_untilno es posterior a la del padre, y el momento de la verificación está dentro de la ventana de cada mandato. - Atenuación. Cada entrada de
authority_scopedel submandato coincide con una entrada del padre con el mismodomain; susactions_permittedson un subconjunto de las del padre; susdata_classesson un subconjunto de las del padre: cuando la entrada del padre tienedata_classes, la entrada del submandato también las tiene (una lista vacía, ninguna clase de datos, es lo más restrictivo), y cuando la entrada del padre no las tiene, la del submandato tampoco; para cada clave de loslimitsde la entrada del padre, la entrada del submandato tiene la clave con un valor numérico no mayor que el del padre o con un valor idéntico al del padre; el submandato puede (MAY) añadir claves. Un límite numérico debe (MUST) ser un entero dentro de ±(2^53 − 1), el rango que toda implementación lee con exactitud sea cual sea su representación de los números JSON: más allá de él, un verificador que interpreta los números como dobles y otro que conserva todas las cifras discrepan sobre lo que dice un mandato. Un mandato que lleve un límite numérico fuera de ese rango, a cualquier profundidad y tenga o no el padre esa clave, no es comparable. Un dominio que aparece dos veces en un mismo mandato no es comparable. - Nivel mínimo. Cuando el padre tiene un
minimum_security_tier, el submandato tiene uno que no es inferior (routine<standard<elevated<maximum). El nivel efectivo de la cadena es el mayorminimum_security_tiera lo largo de ella; un verificador que lo incorpore al cálculo del nivel de DCP-AI v2.0 §14.2 debe (MUST) permitir solo que eleve el nivel. - Revocación. Ningún mandato de la cadena está revocado. Un ancestro revocado invalida a todos sus descendientes.
Implementaciones de referencia: verifyMandateChain (TypeScript), verify_mandate_chain (Python y Rust) y VerifyMandateChain (Go). tests/interop/v2/mandate_chain_vectors.json contiene cadenas que toda implementación debe (MUST) aceptar y cadenas que debe (MUST) rechazar, y las cuatro suites de los SDK lo ejecutan.
3.6 Revocación del mandato¶
Un mandato puede revocarse por:
- Revocación del principal: el principal que delega revoca explícitamente el mandato
- Caducidad: se supera el instante
valid_until(errata E6; comparado como instante RFC 3339, sección 3.5.2) - Retirada del agente: el agente delegado pasa a
decommissioned(DCP-05) - Infracción de la política: el agente infringe una condición indicada en el mandato
La revocación produce un registro de revocación firmado que se añade a la cadena de mandatos.
4. Umbral de conciencia¶
4.1 Propósito¶
Un umbral de conciencia es la declaración formal de un agente sobre lo que entiende y lo que no entiende de su contexto delegado. Sirve como mecanismo verificable de honestidad: al indicar explícitamente los límites de su conocimiento, el agente permite que los principales y las contrapartes evalúen la fiabilidad de sus acciones.
4.2 Esquema¶
Referencia del esquema: schemas/v2/awareness_threshold.schema.json
{
"dcp_version": "2.0",
"record_type": "awareness_threshold",
"threshold_id": "at:<uuid>",
"agent_id": "agent:<identifier>",
"mandate_id": "dm:<uuid>",
"version": 1,
"understanding": {
"delegation_scope": {
"confidence": 0.95,
"summary": "I understand that I am authorized to negotiate with approved vendors for procurement contracts up to $50,000 and issue purchase orders up to $10,000",
"gaps": []
},
"domain_knowledge": {
"confidence": 0.82,
"summary": "I have strong knowledge of standard procurement procedures and vendor evaluation criteria. I have moderate knowledge of supply chain risk assessment.",
"gaps": [
{
"area": "international_trade_compliance",
"confidence": 0.45,
"description": "Limited knowledge of export control regulations and international trade compliance requirements",
"mitigation": "Will escalate to principal for any international procurement"
},
{
"area": "specialized_materials",
"confidence": 0.55,
"description": "Limited ability to evaluate technical specifications for specialized laboratory equipment",
"mitigation": "Will request technical review from domain specialist before proceeding"
}
]
},
"counterparty_context": {
"confidence": 0.70,
"summary": "I have interaction history with 15 of the 23 approved vendors. I have no prior context for 8 vendors.",
"gaps": [
{
"area": "new_vendor_negotiation_patterns",
"confidence": 0.40,
"description": "No historical data on negotiation patterns for vendors added in Q1 2026",
"mitigation": "Will adopt conservative negotiation stance and consult principal for high-value engagements"
}
]
},
"ethical_boundaries": {
"confidence": 0.98,
"summary": "I understand the organization's ethical procurement policy, including fair dealing requirements, conflict of interest restrictions, and sustainability criteria",
"gaps": []
}
},
"self_assessed_overall_confidence": 0.78,
"advisory_triggers": [
{
"condition": "confidence_below_threshold",
"threshold": 0.6,
"action": "issue_advisory",
"description": "Will issue advisory declaration when confidence in any domain drops below 60%"
},
{
"condition": "novel_situation",
"action": "issue_advisory",
"description": "Will issue advisory when encountering a situation with no precedent in training or interaction history"
}
],
"created_at": "2026-03-01T00:01:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-AWARENESS-SIG-v2"
}
}
4.3 Puntuaciones de confianza¶
Las puntuaciones de confianza son valores de coma flotante en [0, 1]:
- 0.9–1.0: confianza alta. El agente tiene una comprensión sólida y puede actuar de forma independiente.
- 0.7–0.9: confianza moderada. El agente puede continuar, pero debería vigilar si surgen condiciones inesperadas.
- 0.5–0.7: confianza baja. El agente debería continuar con cautela y estar preparado para escalar.
- 0.0–0.5: confianza mínima. El agente no debería actuar de forma independiente; se requiere un aviso al principal.
Estos umbrales son orientativos. Las organizaciones pueden (MAY) definir umbrales más estrictos o más laxos.
4.4 Actualizaciones de la conciencia¶
Los umbrales de conciencia tienen versiones. A medida que un agente gana experiencia operando con un mandato, puede (MAY) actualizar su umbral de conciencia para reflejar una comprensión mejor o peor. Cada actualización:
- Incrementa el campo
version - Hace referencia a la versión anterior mediante
prev_hash - Genera una entrada de auditoría
- Se firma con la clave del agente
Las caídas significativas de la confianza (más de 0.15 en cualquier categoría) deberían (SHOULD) desencadenar una declaración de aviso.
5. Declaración de aviso¶
5.1 Propósito¶
Una declaración de aviso es una comunicación formal de un agente a su principal que señala incertidumbre, recomienda una revisión humana o informa de condiciones que pueden exceder la competencia delegada del agente. Es el mecanismo del agente para decir «no estoy seguro; revísalo, por favor».
5.2 Esquema¶
Referencia del esquema: schemas/v2/advisory_declaration.schema.json
{
"dcp_version": "2.0",
"record_type": "advisory_declaration",
"advisory_id": "adv:<uuid>",
"agent_id": "agent:<identifier>",
"mandate_id": "dm:<uuid>",
"principal_id": "principal:<identifier>",
"urgency": "medium",
"category": "uncertainty",
"subject": {
"description": "Vendor proposal contains non-standard liability terms that fall outside my training distribution for contract evaluation",
"related_interaction_id": "ir:<uuid>",
"related_intent_id": "intent:<uuid>",
"confidence_at_trigger": 0.42,
"awareness_gap_reference": "international_trade_compliance"
},
"context": {
"current_action": "Evaluating vendor proposal from TechSupply Co. for laboratory equipment",
"decision_point": "Whether to accept modified liability terms in section 4.3 of the proposed contract",
"options_considered": [
{
"option": "Accept modified terms",
"agent_assessment": "Cannot reliably assess risk; liability exposure unclear",
"confidence": 0.35
},
{
"option": "Reject modified terms and counter with standard terms",
"agent_assessment": "Safe option but may lose competitive pricing",
"confidence": 0.80
},
{
"option": "Escalate to principal for review",
"agent_assessment": "Recommended: terms exceed my competence for risk assessment",
"confidence": 0.95
}
],
"recommendation": "Escalate to principal. The modified liability terms in section 4.3 include indemnification clauses that I cannot reliably evaluate against organizational risk tolerance."
},
"action_taken": "paused",
"action_details": "Negotiation paused pending principal review. Counterparty notified of brief delay.",
"response_requested": true,
"response_deadline": "2026-03-02T12:00:00Z",
"issued_at": "2026-03-01T14:30:00Z",
"timestamp": "2026-03-01T14:30:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-AWARENESS-SIG-v2"
}
}
5.3 Niveles de urgencia¶
| Urgencia | Código | Tiempo de respuesta esperado |
|---|---|---|
| Baja | low |
En 7 días |
| Media | medium |
En 24 horas |
| Alta | high |
En 4 horas |
| Crítica | critical |
En 1 hora |
5.4 Categorías de aviso¶
| Categoría | Código | Descripción |
|---|---|---|
| Incertidumbre | uncertainty |
La confianza del agente ha caído por debajo del umbral para la tarea actual |
| Situación nueva | novel_situation |
El agente se encuentra con un escenario fuera de su entrenamiento o experiencia |
| Límite del ámbito | scope_boundary |
La acción se acerca al ámbito definido del mandato o lo excede |
| Inquietud ética | ethical_concern |
El agente identifica una posible cuestión ética que requiere juicio humano |
| Señales contradictorias | conflicting_signals |
El agente recibe información o directrices contradictorias |
| Limitación de recursos | resource_limitation |
Las capacidades del agente son insuficientes para la tarea |
5.5 Respuesta del principal¶
El principal puede responder a una declaración de aviso con:
- Continuar: autoriza al agente a continuar con una opción indicada
- Anular: da una directriz concreta que prevalece sobre la evaluación del agente
- Asumir el control: se hace cargo directamente de la interacción
- Delegar en otro: transfiere la tarea a otro agente o a una persona
- Acusar recibo: toma nota del aviso sin cambiar el rumbo del agente
La respuesta la firma el principal y se registra en la cadena de auditoría.
6. Espejo del principal¶
6.1 Propósito¶
Un espejo del principal es un documento narrativo, legible por personas, que representa los intereses, los valores y las prioridades del principal tal como los entiende el agente. Acompaña al agente en las interacciones y permite que las contrapartes (tanto personas como agentes) entiendan a quién representa el agente y qué implica esa representación.
El espejo del principal hace de puente entre el mundo criptográfico de DCP y el mundo humano de las relaciones organizativas.
6.2 Esquema¶
Referencia del esquema: schemas/v2/principal_mirror.schema.json
{
"dcp_version": "2.0",
"record_type": "principal_mirror",
"mirror_id": "pm:<uuid>",
"agent_id": "agent:<identifier>",
"principal_id": "principal:<identifier>",
"mandate_id": "dm:<uuid>",
"narrative": {
"principal_role": "Dr. Sarah Chen serves as Head of Procurement for Acme Research Labs, responsible for all vendor relationships and purchasing decisions for the organization's research operations.",
"organizational_context": "Acme Research Labs is a mid-sized biotech research organization focused on molecular diagnostics. Procurement supports approximately 200 researchers across 12 laboratory groups.",
"delegation_narrative": "Dr. Chen has delegated routine procurement negotiations and purchase order processing to this agent. The agent manages vendor relationships for standard laboratory supplies, equipment under $50,000, and service contracts. Dr. Chen retains authority over payment approvals, vendor list changes, and contracts involving novel terms.",
"values_and_priorities": [
"Quality of materials takes precedence over cost savings",
"Long-term vendor relationships are preferred over one-time transactions",
"Sustainability and ethical sourcing are organizational requirements",
"Transparency in pricing and terms is expected from all vendors"
],
"interaction_guidance": "This agent represents Dr. Chen in procurement negotiations. It is authorized to discuss terms, request quotes, and issue purchase orders within its mandate. For matters outside its scope, it will consult with Dr. Chen. Counterparties should expect the same professional standards as direct interaction with Dr. Chen's office."
},
"version": 2,
"approved_by_principal": true,
"principal_approval_timestamp": "2026-03-01T00:05:00Z",
"created_at": "2026-03-01T00:02:00Z",
"updated_at": "2026-03-01T00:05:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"agent_signature": {
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-DELEGATION-SIG-v2"
},
"principal_signature": {
"alg": "ed25519",
"kid": "<principal-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-DELEGATION-SIG-v2"
}
}
6.3 Aprobación del principal¶
El principal debe (MUST) revisar y aprobar el espejo antes de que se use en interacciones. Así se asegura que la representación narrativa del agente refleje con exactitud la intención del principal. Se requieren ambas firmas (la del agente y la del principal).
Nota informativa (25/10/2026): el esquema V2.0
principal_mirrorlleva una únicacomposite_sig; véase V2-WIRE-COMPATIBILITY.md.
6.4 Actualizaciones del espejo¶
El espejo del principal tiene versiones. Se actualiza cuando:
- Cambia el papel o el contexto del principal
- Se actualiza el mandato de delegación
- El umbral de conciencia del agente cambia de forma significativa
- El principal pide una revisión después de examinar los registros de interacción
Cada actualización produce una nueva versión con un número de versión incrementado, encadenada por hash a la versión anterior.
7. Registro de interacción¶
7.1 Propósito¶
Los registros de interacción capturan las interacciones del agente en dos capas:
- Capa técnica: datos verificables por máquina, como hashes de mensajes, marcas de tiempo, números de secuencia y pruebas criptográficas
- Capa narrativa: resúmenes legibles por personas de lo que ocurrió, qué decisiones se tomaron y por qué
Este enfoque de doble capa garantiza que los principales humanos puedan revisar las acciones del agente en lenguaje natural, mientras los datos subyacentes siguen siendo verificables criptográficamente.
7.2 Esquema¶
Referencia del esquema: schemas/v2/interaction_record.schema.json
{
"dcp_version": "2.0",
"record_type": "interaction_record",
"interaction_id": "ir:<uuid>",
"agent_id": "agent:<identifier>",
"mandate_id": "dm:<uuid>",
"counterparty": {
"type": "agent",
"agent_id": "agent:<counterparty>",
"organization_id": "org:<counterparty-org>",
"mandate_verified": true,
"mandate_hash": "sha256:<hex>"
},
"session_reference": {
"session_id": "<hex>",
"session_type": "a2a",
"protocol": "DCP-04"
},
"technical_layer": {
"messages_exchanged": 24,
"first_message_timestamp": "2026-03-01T10:00:00Z",
"last_message_timestamp": "2026-03-01T10:45:00Z",
"message_hashes": [
{
"sequence": 1,
"direction": "sent",
"content_hash": "sha256:<hex>",
"timestamp": "2026-03-01T10:00:00Z"
},
{
"sequence": 2,
"direction": "received",
"content_hash": "sha256:<hex>",
"timestamp": "2026-03-01T10:00:30Z"
}
],
"intents_declared": ["intent:<uuid-1>", "intent:<uuid-2>"],
"policy_outcomes": ["po:<uuid-1>", "po:<uuid-2>"],
"interaction_merkle_root": {
"sha256": "<hex>",
"sha3_256": "<hex>"
}
},
"narrative_layer": {
"summary": "Negotiated Q2 2026 supply contract with TechSupply Co. for standard laboratory consumables. Achieved 8% volume discount against previous quarter pricing.",
"key_decisions": [
{
"decision": "Accepted 8% volume discount in exchange for 90-day payment terms (vs. standard 60-day)",
"reasoning": "Extended payment terms align with organizational cash flow preferences communicated in procurement policy P-2026-03. The 8% discount exceeds the 5% target.",
"confidence": 0.88,
"mandate_authority": "negotiate:vendor:techsupply"
},
{
"decision": "Declined optional maintenance package for centrifuge equipment",
"reasoning": "Maintenance package at $12,000/year exceeds the value threshold for independent decision. Flagged for principal review via advisory declaration.",
"confidence": 0.72,
"mandate_authority": "escalated_to_principal"
}
],
"counterparty_behavior": "TechSupply Co. agent was cooperative and transparent. Pricing was consistent with market data. No unusual terms or conditions proposed beyond the liability clause flagged in advisory adv:xxx.",
"unresolved_items": [
{
"item": "Modified liability terms in section 4.3",
"status": "pending_principal_review",
"advisory_id": "adv:<uuid>"
}
],
"principal_action_required": true,
"action_items_for_principal": [
"Review and approve/reject modified liability terms in section 4.3 of TechSupply contract",
"Confirm acceptance of 90-day payment terms for Q2 supply contract"
]
},
"delegation_compliance": {
"within_scope": true,
"permissions_exercised": ["negotiate", "request_information"],
"prohibitions_respected": ["approve_payment", "modify_vendor_list"],
"escalation_triggers_activated": [
{
"trigger": "contract_value_exceeds_threshold",
"threshold": 25000,
"actual_value": 47000,
"action_taken": "advisory_issued",
"advisory_id": "adv:<uuid>"
}
]
},
"timestamp": "2026-03-01T11:00:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-DELEGATION-SIG-v2"
}
}
7.3 Capa técnica¶
La capa técnica es verificable por máquina e incluye:
- Hashes de todos los mensajes intercambiados (lo que permite verificarlos con la cadena de auditoría A2A)
- Referencias a declaraciones de intención y resultados de políticas
- Una raíz de Merkle de doble hash sobre todos los hashes de mensajes, que permite una verificación compacta
7.4 Capa narrativa¶
La capa narrativa es legible por personas e incluye:
- Un resumen en lenguaje llano de la interacción
- Las decisiones clave, con su razonamiento y su nivel de confianza
- Observaciones sobre el comportamiento de la contraparte
- Asuntos sin resolver que requieren la atención del principal
- Acciones explícitas para el principal
La capa narrativa permite a los principales revisar las acciones del agente de forma eficiente sin analizar los registros en bruto de los mensajes A2A.
7.5 Cumplimiento de la delegación¶
Cada registro de interacción incluye una sección de cumplimiento que recoge:
- Si todas las acciones estuvieron dentro del ámbito del mandato
- Qué permisos se ejercieron
- Qué prohibiciones se respetaron
- Qué desencadenantes de escalado se activaron y qué acción se tomó
Esto proporciona una auditoría de cumplimiento por interacción que alimenta el sistema más amplio de seguimiento de obligaciones (DCP-08).
8. Extensión del handshake A2A¶
8.1 Propósito¶
Cuando dos agentes interactúan con mandatos de delegación, cada uno debería poder verificar la autoridad del otro. DCP-09 extiende el handshake A2A de DCP-04 para incluir la verificación del mandato de delegación.
8.2 A2A_HELLO extendido¶
El mensaje A2A_HELLO (DCP-04, sección 3.2) se extiende con un campo opcional delegation:
{
"type": "A2A_HELLO",
"protocol_version": "2.0",
"initiator_bundle": { "...SignedBundleV2..." },
"ephemeral_kem_public_key": { "..." },
"nonce": "<hex>",
"supported_algorithms": { "..." },
"delegation": {
"mandate_id": "dm:<uuid>",
"mandate_hash": "sha256:<hex>",
"delegator_principal_id": "principal:<identifier>",
"delegator_organization_id": "org:<identifier>",
"authority_scope": "procurement",
"permissions_summary": ["negotiate", "issue_purchase_order", "request_information"],
"valid_until": "2026-06-01T00:00:00Z",
"mandate_signature_kid": "<principal-key-id>",
"mirror_id": "pm:<uuid>",
"mirror_hash": "sha256:<hex>"
},
"requested_capabilities": ["negotiate", "purchase_order"],
"security_tier": "elevated",
"timestamp": "2026-03-01T10:00:00Z"
}
8.3 Verificación del mandato durante el handshake¶
Cuando el respondedor recibe un A2A_HELLO con un campo delegation:
- Verifica el
mandate_hashcon la firma del mandato (el respondedor puede almacenar en caché los mandatos verificados) - Comprueba que el mandato no ha caducado (
valid_until) - Verifica que la interacción solicitada está dentro del
authority_scopedel mandato - De forma opcional, obtiene y verifica el mandato completo de la organización del iniciador
- Si la verificación falla, responde con
A2A_REJECTy el motivomandate_verification_failed
8.4 Verificación mutua de los mandatos¶
Si ambos agentes operan con mandatos de delegación, ambos incluyen campos delegation en sus respectivos mensajes de handshake y ambos verifican el mandato del otro. Esto da a ambas partes la garantía de que los dos agentes están autorizados a participar en la interacción.
9. Integración con la auditoría¶
9.1 Eventos de auditoría de la delegación¶
| Evento | event_type |
|---|---|
| Mandato de delegación emitido | delegation_mandate_issued |
| Acuse de recibo del mandato de delegación | delegation_mandate_acknowledged |
| Mandato de delegación revocado | delegation_mandate_revoked |
| Umbral de conciencia creado | awareness_threshold_created |
| Umbral de conciencia actualizado | awareness_threshold_updated |
| Declaración de aviso emitida | advisory_declaration_issued |
| Respuesta al aviso recibida | advisory_response_received |
| Espejo del principal creado | principal_mirror_created |
| Espejo del principal actualizado | principal_mirror_updated |
| Registro de interacción creado | interaction_record_created |
| Mandato verificado durante A2A | mandate_verified_a2a |
| Verificación del mandato fallida | mandate_verification_failed |
| Subdelegación emitida | sub_delegation_issued |
9.2 Formato de la entrada de auditoría¶
{
"dcp_version": "2.0",
"event_id": "evt:<uuid>",
"event_type": "advisory_declaration_issued",
"agent_id": "agent:<identifier>",
"details": {
"advisory_id": "adv:<uuid>",
"mandate_id": "dm:<uuid>",
"principal_id": "principal:<identifier>",
"urgency": "medium",
"category": "uncertainty",
"confidence_at_trigger": 0.42
},
"timestamp": "2026-03-01T14:30:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>"
}
10. Consideraciones de seguridad¶
10.1 Falsificación de mandatos¶
Un agente comprometido podría falsificar un mandato de delegación para atribuirse una autoridad que no se le concedió. Mitigaciones:
- Los mandatos los firma la clave del principal, que el agente no posee
- Las contrapartes verifican la firma del mandato con la clave pública conocida del principal
- Los hashes de los mandatos se registran en la cadena de auditoría en el momento de la emisión, lo que proporciona una vía de verificación independiente
10.2 Escalada de autoridad¶
Un agente podría intentar exceder su autoridad delegada tergiversando el ámbito de su mandato. Mitigaciones:
- Los permisos del mandato son explícitos y verificables por máquina
- Los registros de interacción recogen qué permisos se ejercieron
- Las contrapartes verifican durante el handshake A2A que las acciones solicitadas están dentro del ámbito del mandato
- El seguimiento de obligaciones (DCP-08) vigila las extralimitaciones del ámbito
10.3 Abuso de la subdelegación¶
La subdelegación crea cadenas de autoridad que podrían aprovecharse. Mitigaciones:
- La profundidad de la subdelegación está limitada por el
sub_delegation.max_depthde cada ancestro (sección 3.5) - Los submandatos deben (MUST) ser más restrictivos que el padre: un subconjunto de acciones y clases de datos, límites que no sean más laxos, una ventana de validez dentro de la del padre y un
minimum_security_tierque no sea inferior al del padre, de modo que un subagente nunca pueda rebajar el nivel de seguridad de quien le delegó - La cadena de mandatos completa se puede verificar sin conexión hasta el principal humano: cada salto lo firma el delegado anterior y un ancestro revocado invalida a todos sus descendientes
- La subdelegación está desactivada de forma predeterminada (
sub_delegationausente opermitted: false)
10.4 Umbrales de conciencia desactualizados¶
El umbral de conciencia de un agente podría no reflejar su comprensión real tras mucho tiempo o tras cambios importantes en su experiencia. Mitigaciones:
- Los umbrales de conciencia tienen versiones y se actualizan cuando cambia la comprensión
- Las grandes caídas de confianza desencadenan declaraciones de aviso
- Los principales revisan los umbrales de conciencia en las revisiones periódicas de los mandatos
- Las contrapartes pueden comprobar la marca de tiempo del umbral de conciencia para detectar si está desactualizado
10.5 Manipulación de la narrativa¶
La capa narrativa de los registros de interacción podría redactarse para presentar un relato engañoso. Mitigaciones:
- La capa técnica proporciona la verdad de referencia criptográfica
- Las afirmaciones de la narrativa pueden contrastarse con los hashes de los mensajes de la capa técnica
- La revisión de los registros de interacción por el principal compara la narrativa con los datos técnicos
- Las contrapartes mantienen sus propios registros de interacción para la verificación cruzada
10.6 Separación de dominio¶
Esta especificación usa tres contextos de separación de dominio (errata E5):
DCP-AI.v2.Delegationpara los mandatos de delegación raíz, los espejos del principal y los registros de interacciónDCP-AI.v2.Awarenesspara los umbrales de conciencia y las declaraciones de avisoDCP-AI.v2.SubMandatepara los submandatos (sección 3.5), de modo que un mandato firmado por un agente que delega nunca pueda pasar por uno firmado por un principal humano
Los dos primeros figuraban antes aquí como las etiquetas DCP-DELEGATION-SIG-v2 y DCP-AWARENESS-SIG-v2, que no son contextos V2.0 (DCP-AI v2.0 §4.1).
Esta separación impide que las firmas de un contexto se reproduzcan en otro.
11. Conformidad¶
Una implementación es conforme con DCP-09 si:
- Admite la emisión, el acuse de recibo y la revocación de mandatos de delegación según la sección 3
- Genera umbrales de conciencia con versiones y puntuaciones de confianza según la sección 4
- Admite declaraciones de aviso con niveles de urgencia y respuesta del principal según la sección 5
- Produce espejos del principal con doble firma según la sección 6
- Crea registros de interacción de doble capa, con capa técnica y capa narrativa, según la sección 7
- Extiende el handshake A2A con la verificación del mandato según la sección 8
- Crea entradas de auditoría de DCP-03 para todos los eventos de delegación según la sección 9
- Admite la subdelegación con aplicación de la reducción del ámbito cuando está habilitada
- Usa los contextos de separación de dominio
DCP-AI.v2.Delegation,DCP-AI.v2.AwarenessyDCP-AI.v2.SubMandatetal como los asigna la sección 10.6 (errata E5)
Referencias¶
- DCP-01: Identidad y vinculación con el principal
- DCP-02: Declaración de intenciones y control por políticas
- DCP-03: Cadena de auditoría y transparencia
- DCP-04: Comunicación entre agentes
- DCP-05: Ciclo de vida del agente
- DCP-07: Resolución de conflictos
- DCP-08: Derechos y obligaciones
Esta especificación reconoce que la delegación es el acto fundamental de confianza entre las personas y los agentes de IA. Al hacer la delegación explícita, acotada y auditable, y al dar a los agentes un mecanismo formal para declarar lo que saben y lo que no, DCP-09 crea una base para una autonomía responsable dentro de límites que rinden cuentas.
Notas de implementación (informativas)¶
Añadidas el 25/10/2026. No normativas. Estas notas no añaden ningún requisito ni cambian nada de lo anterior: describen cómo se relaciona el código de referencia de
maincon este texto. Donde difieren, prevalece el texto normativo anterior, con las correcciones de las erratas de V2-WIRE-COMPATIBILITY.md.
- Lo que verifican los SDK. La cadena de mandatos de §3.5 está implementada en los cuatro SDK que firman y se
comprueba con
tests/interop/v2/mandate_chain_vectors.json. El resto de DCP-09 son registros que los SDK construyen y firman, no pasos del protocolo que ejecuten o hagan cumplir. - Registros en
schemas/v2/. Los esquemas tienen campos distintos de los ejemplos de §3 a §9. La ventana de un mandato esvalid_from/valid_until(§3.6 se lee comovalid_untilpor la errata E6; el ejemplo de §3.2 es conceptual), conauthority_scopeyrevocable. Un umbral de conciencia es una lista dethreshold_rules(dimension,operator,value,action_if_triggered), no la declaración de confianza de §4.2. Una declaración de aviso lleva unsignificance_scoreentero (0–1000),action_summary,recommended_response,response_deadlineyhuman_response, sin los niveles de urgencia ni las categorías de §5.3 y §5.4. Un espejo del principal llevanarrative,decision_summary,action_countyaudit_chain_hash. Un registro de interacción lleva unapublic_layer(terms,decisions,commitments), unprivate_layer_hashy unmandate_id, sin la raíz de Merkle ni la sección de cumplimiento de §7.3 y §7.5. - Firmas. Un mandato raíz lleva
human_composite_sig(contextoDCP-AI.v2.Delegation) y un submandatodelegator_composite_sig(DCP-AI.v2.SubMandate). Todos los demás registros llevan una únicacomposite_sigde quien tenga las claves que se pasan:DCP-AI.v2.Awarenesspara los umbrales de conciencia y las declaraciones de aviso,DCP-AI.v2.Delegationpara los espejos del principal y los registros de interacción. No hay acuse de recibo del mandato por el agente (§3.3) ni segunda firma, del principal, en el espejo (§6.3). - Lo que hacen las funciones auxiliares.
verifyMandateValiditysolo comprueba un conjunto de ID revocados y la ventana de validez, no la firma ni el ámbito.revoke_delegation(Python) añade el ID a un conjunto local cuando el mandato esrevocable; no produce ningún registro de revocación firmado (§3.6).generateMirrorcalcula el hash (SHA-256) de las entradas de auditoría que recibe y firma la narrativa y el resumen que escribe quien llama; no escribe la narrativa ni obtiene ninguna aprobación. Los tiposA2A_HELLOyA2A_WELCOMEtienen campos opcionalesmandate_idymandate_hash, pero ningún SDK verifica un mandato durante el handshake (§8.3) y ninguno envíaA2A_REJECT. - Los ejemplos son ilustraciones con marcadores, no fixtures. Los valores fraccionarios como
"confidence": 0.95no pueden canonicalizarse condcp-jcs-v1, así que esos registros no pueden firmarse tal como están escritos. Para los tipos del SDK, consulta docs/API_REFERENCE.md.