DCP-09: Delegação e representação¶
Tradução informativa da especificação em inglês, atualizada em 25/10/2026. A versão normativa é a inglesa: esta tradução não tem valor normativo e, em caso de divergência, prevalece o inglês. Identificadores e blocos de código são mantidos sem tradução.
Status¶
Publicada — v2.0 (extensão; as revisões são acompanhadas conforme o retorno de quem a adota)
Erratas (25/10/2026, normativas): as erratas E5, E6, E7 e E8 de V2-WIRE-COMPATIBILITY.md corrigem os contextos de assinatura, o campo que carrega a expiração de um mandato e o caráter dos exemplos. Não alteram nenhum outro requisito desta especificação.
Resumo¶
Esta especificação define o protocolo para a delegação de autoridade de uma pessoa a um agente, os limiares de consciência do agente, as declarações de alerta, os espelhos do principal e os registros de interação de duas camadas. Ela oferece mecanismos para que um principal humano delegue formalmente uma autoridade específica a um agente de IA, para que os agentes declarem como entendem o contexto delegado e para que as interações sejam registradas tanto em uma camada técnica quanto em uma camada legível por pessoas. O DCP-09 também estende o handshake A2A do DCP-04 para incluir a verificação do mandato de delegação, garantindo que os agentes que atuam em nome de principais possam comprovar sua autoridade às contrapartes.
1. Introdução¶
O DCP-01 estabelece que todo agente está vinculado a um principal responsável. No entanto, a natureza dessa vinculação (que autoridade o principal delegou, o que o agente entende sobre seu papel delegado e como o agente representa seu principal nas interações) não está especificada formalmente. O DCP-09 preenche essa lacuna.
Em sistemas multiagentes, os agentes frequentemente atuam em nome de principais humanos que não podem estar presentes em todas as interações. Um agente de compras negocia com agentes de fornecedores, um agente de conformidade revisa uma política em nome de um responsável de governança, um agente de pesquisa consulta fontes de dados em nome de uma pessoa cientista. Em cada caso, o agente exerce autoridade delegada, e o escopo e os limites dessa autoridade precisam ser explícitos, verificáveis e auditáveis.
O DCP-09 trata de cinco questões interligadas:
- Delegação: como um principal concede formalmente autoridade a um agente
- Consciência: como um agente declara seu entendimento do contexto delegado e de suas limitações
- Alerta: como um agente comunica incerteza ou recomendações ao seu principal
- Representação: como um agente apresenta os interesses do seu principal em forma legível por pessoas
- Registro de interações: como as interações são capturadas tanto na camada técnica quanto na narrativa
1.1 Princípios de design¶
- A delegação é explícita, delimitada e limitada no tempo
- Os agentes precisam declarar o que entendem, não só o que conseguem fazer
- Os principais humanos precisam poder revisar as ações do agente em linguagem natural
- As interações produzem registros de duas camadas: verificáveis por máquina e legíveis por pessoas
- Os mandatos de delegação podem ser verificados pelas contrapartes durante os handshakes A2A
1.2 Relação com outras especificações¶
- DCP-01: os mandatos de delegação estendem a vinculação ao principal com escopos de autoridade explícitos
- DCP-02: as declarações de intenção referenciam o mandato de delegação que autoriza a ação
- DCP-03: todos os eventos de delegação são registrados na cadeia de auditoria
- DCP-04: o handshake A2A é estendido para incluir a verificação do mandato
- DCP-05: os mandatos de delegação são revogados quando o agente é desativado
- DCP-07: podem surgir disputas por excesso da autoridade delegada
- DCP-08: os agentes têm a obrigação de agir dentro do escopo delegado
2. Terminologia¶
Mandato de delegação: um documento assinado por um principal humano que concede uma autoridade específica a um agente, com escopo, condições e validade definidos.
Limiar de consciência: uma declaração estruturada de um agente sobre o que entende e o que não entende do seu contexto delegado, que serve como mecanismo verificável de honestidade.
Declaração de alerta: uma comunicação formal de um agente ao seu principal, declarando incerteza, recomendando uma revisão humana ou sinalizando condições que podem exceder a competência delegada do agente.
Espelho do principal: uma representação narrativa, legível por pessoas, dos interesses, valores e prioridades do principal, tal como o agente os entende, que acompanha o agente nas interações.
Registro de interação: um registro de duas camadas de uma interação: uma camada técnica (verificável por máquina) e uma camada narrativa (legível por pessoas), ambas assinadas e encadeadas por hash.
Cadeia de mandatos: quando um agente delega um subconjunto da sua autoridade a outro agente, a cadeia de mandatos do principal humano original, passando pelos agentes intermediários, até o delegado final.
Contextos de separação de domínio: DCP-AI.v2.Delegation (mandatos raiz, espelhos do principal e registros de interação), DCP-AI.v2.Awareness (limiares de consciência e declarações de alerta), DCP-AI.v2.SubMandate (submandatos, seção 3.5). Errata E5; os dois primeiros constavam antes aqui como as tags DCP-DELEGATION-SIG-v2 e DCP-AWARENESS-SIG-v2.
3. Mandato de delegação¶
3.1 Finalidade¶
Um mandato de delegação é o instrumento formal pelo qual um principal humano concede autoridade a um agente de IA. Ele define o que o agente está autorizado a fazer, em que condições, com que limites e por quanto tempo. Sem um mandato de delegação válido, um agente não deve (MUST NOT) agir em nome de um principal além das suas capacidades básicas.
3.2 Schema¶
Referência do schema: schemas/v2/delegation_mandate.schema.json
Erratas E6 e E7 (25/10/2026): este exemplo é conceitual. O formato de transmissão V2.0 é o schema: a janela é
valid_from/valid_until, e a assinatura éhuman_composite_sig(raiz) oudelegator_composite_sig(submandato), seção 3.5. Há mandatos raiz e submandatos assinados emtests/interop/v2/mandate_chain_vectors.json. Veja 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 Fluxo de emissão do mandato¶
- O principal cria o mandato de delegação, definindo escopo, permissões, proibições e validade
- O principal assina o mandato com sua chave
- O mandato é entregue ao agente
- O agente revisa o mandato e cria um limiar de consciência (seção 4) que reflete seu entendimento
- O agente assina a confirmação de recebimento, ligando-a ao limiar de consciência
- O mandato confirmado passa a estar ativo
- Uma entrada de auditoria
delegation_mandate_issuedé criada nas cadeias de auditoria do principal e do agente
Nota informativa (25/10/2026): o schema V2.0
delegation_mandatenão tem nenhum campo para a confirmação do agente do passo 5; veja V2-WIRE-COMPATIBILITY.md.
3.4 Hash do mandato¶
mandate_hash é um hash SHA-256 do conteúdo canônico (serializado de forma determinística) do mandato, sem as assinaturas. Esse hash é usado nos handshakes A2A (seção 8) para que as contrapartes possam verificar a autoridade do agente sem acessar o mandato completo.
3.5 Subdelegação¶
Um agente delegado pode (MAY) repassar parte da sua autoridade a outro agente emitindo um submandato: um DelegationMandate (schemas/v2/delegation_mandate.schema.json) que referencia o seu pai e é assinado pelo agente que delega, em vez da pessoa. Os mandatos que vão do mandato raiz da pessoa até o agente que atua formam a cadeia de mandatos. A responsabilidade sobrevive a cada salto porque cada salto é assinado, só pode restringir o que o anterior concedeu e é verificado off-line até chegar ao principal humano.
3.5.1 Campos do formato de transmissão¶
O schema do formato de transmissão tem estes campos opcionais, todos ausentes em um mandato que não faz parte de uma cadeia, de modo que os mandatos raiz existentes não mudam nem um byte:
| Campo | Tipo | Significado |
|---|---|---|
parent_mandate_id |
string | mandate_id do mandato que este submandato restringe. Deve (MUST) estar ausente em um mandato raiz. |
delegation_depth |
integer ≥ 0 | Saltos a partir da pessoa: 0 (ou ausente) em um mandato raiz, a profundidade do pai + 1 em um submandato. |
sub_delegation |
{ "permitted": boolean, "max_depth": integer ≥ 0 } |
Se o delegado pode subdelegar e a maior delegation_depth que qualquer descendente pode alcançar. A ausência significa que a subdelegação não é permitida. |
minimum_security_tier |
routine | standard | elevated | maximum |
Nível mínimo de segurança (DCP-AI v2.0 §14.2) de toda ação realizada sob o mandato. |
delegator_composite_sig |
CompositeSignature |
Assinatura do agente que delega (o agent_id do mandato pai) sobre o submandato canônico, sob o contexto de separação de domínio DCP-AI.v2.SubMandate. |
Um mandato raiz deve (MUST) ter human_composite_sig (contexto DCP-AI.v2.Delegation) e não deve (MUST NOT) ter delegator_composite_sig. Um submandato deve (MUST) ter delegator_composite_sig, parent_mandate_id e delegation_depth, e não deve (MUST NOT) ter human_composite_sig. Os bytes assinados são o mandato canônico sem o seu campo de assinatura, sob o contexto correspondente à sua profundidade.
Tanto human_composite_sig quanto delegator_composite_sig devem (MUST) usar a vinculação pq_over_classical (DCP-AI v2.0 §5): um verificador deve (MUST) rejeitar um mandato cuja assinatura seja classical_only, seja qual for o seu modo de verificação.
3.5.2 Verificação da cadeia¶
Um verificador que aceita uma cadeia de mandatos deve (MUST) receber a cadeia ordenada (a raiz primeiro), o conjunto de mandate_id revogados, o momento da verificação e as chaves do principal humano e de cada agente que delega, e deve (MUST) rejeitar a cadeia inteira, a menos que tudo o que segue seja verdadeiro. As chaves do principal humano devem (MUST) ser as binding_keys do Responsible Principal Record do human_id da cadeia, e as chaves de um agente que delega devem (MUST) ser as keys do Agent Passport verificado desse agent_id; o verificador da cadeia procura as chaves por kid no que recebe e não estabelece ele próprio essa correspondência, o mesmo modelo de confiança do verificador de bundles. Os carimbos de data/hora são interpretados como instantes RFC 3339 e não devem (MUST NOT) ser comparados como texto. Qualquer campo com valor desconhecido, qualquer campo ausente para a profundidade do mandato e qualquer entrada que não seja comparável fazem a verificação falhar de forma fechada.
- Raiz. O primeiro mandato tem
delegation_depth0 ou nenhuma, não temparent_mandate_ide tem umahuman_composite_sigque é verificada com as chaves do principal humano. - Elo. O
parent_mandate_idde cada submandato é igual aomandate_iddo mandato anterior; suadelegation_depthé a do pai + 1; seuhuman_idé igual ao do pai; e suadelegator_composite_sigé verificada com as chaves doagent_iddo pai. - Permissão e profundidade. O
sub_delegation.permitteddo pai étrue, e adelegation_depthdo submandato é no máximo o menorsub_delegation.max_depthde todos os seus ancestrais. - Janela de validade.
valid_fromnão é anterior ao do pai evalid_untilnão é posterior ao do pai, e o momento da verificação está dentro da janela de cada mandato. - Atenuação. Cada entrada de
authority_scopedo submandato corresponde a uma entrada do pai com o mesmodomain; suasactions_permittedsão um subconjunto das do pai; suasdata_classessão um subconjunto das do pai: quando a entrada do pai temdata_classes, a entrada do submandato também as tem (uma lista vazia, nenhuma classe de dados, é a mais restrita), e quando a entrada do pai não as tem, a do submandato também não; para cada chave doslimitsda entrada do pai, a entrada do submandato tem a chave com um valor numérico não maior que o do pai ou com um valor idêntico ao do pai; o submandato pode (MAY) acrescentar chaves. Um limite numérico deve (MUST) ser um inteiro dentro de ±(2^53 − 1), o intervalo que toda implementação lê com exatidão, seja qual for sua representação dos números JSON: além dele, um verificador que interpreta os números como doubles e outro que mantém todos os dígitos discordam sobre o que um mandato diz. Um mandato que tenha um limite numérico fora desse intervalo, em qualquer profundidade e tenha ou não o pai essa chave, não é comparável. Um domínio que aparece duas vezes no mesmo mandato não é comparável. - Nível mínimo. Quando o pai tem um
minimum_security_tier, o submandato tem um que não é inferior a ele (routine<standard<elevated<maximum). O nível efetivo da cadeia é o maiorminimum_security_tierao longo dela; um verificador que o incorpore ao cálculo do nível de DCP-AI v2.0 §14.2 deve (MUST) permitir apenas que ele eleve o nível. - Revogação. Nenhum mandato da cadeia está revogado. Um ancestral revogado invalida todos os descendentes.
Implementações de referência: verifyMandateChain (TypeScript), verify_mandate_chain (Python e Rust) e VerifyMandateChain (Go). tests/interop/v2/mandate_chain_vectors.json contém cadeias que toda implementação deve (MUST) aceitar e cadeias que deve (MUST) rejeitar, e as quatro suítes dos SDKs o executam.
3.6 Revogação do mandato¶
Um mandato pode ser revogado por:
- Revogação pelo principal: o principal que delega revoga explicitamente o mandato
- Expiração: o instante
valid_untiljá passou (errata E6; comparado como instante RFC 3339, seção 3.5.2) - Desativação do agente: o agente delegado passa a
decommissioned(DCP-05) - Violação de política: o agente viola uma condição especificada no mandato
A revogação produz um registro de revogação assinado, anexado à cadeia de mandatos.
4. Limiar de consciência¶
4.1 Finalidade¶
Um limiar de consciência é a declaração formal de um agente sobre o que entende e o que não entende do seu contexto delegado. Ele serve como mecanismo verificável de honestidade: ao declarar explicitamente os limites do seu conhecimento, o agente permite que os principais e as contrapartes avaliem a confiabilidade das suas ações.
4.2 Schema¶
Referência do schema: 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 Pontuações de confiança¶
As pontuações de confiança são valores de ponto flutuante em [0, 1]:
- 0.9–1.0: confiança alta. O agente tem um entendimento sólido e pode agir de forma independente.
- 0.7–0.9: confiança moderada. O agente pode prosseguir, mas deveria ficar atento a condições inesperadas.
- 0.5–0.7: confiança baixa. O agente deveria prosseguir com cautela e estar preparado para escalonar.
- 0.0–0.5: confiança mínima. O agente não deveria agir de forma independente; é necessário um alerta ao principal.
Esses limiares são orientativos. As organizações podem (MAY) definir limiares mais rígidos ou mais flexíveis.
4.4 Atualizações da consciência¶
Os limiares de consciência têm versões. À medida que um agente ganha experiência operando sob um mandato, ele pode (MAY) atualizar seu limiar de consciência para refletir um entendimento melhor ou pior. Cada atualização:
- Incrementa o campo
version - Referencia a versão anterior por
prev_hash - Gera uma entrada de auditoria
- É assinada com a chave do agente
Quedas significativas de confiança (mais de 0.15 em qualquer categoria) deveriam (SHOULD) disparar uma declaração de alerta.
5. Declaração de alerta¶
5.1 Finalidade¶
Uma declaração de alerta é uma comunicação formal de um agente ao seu principal que sinaliza incerteza, recomenda uma revisão humana ou relata condições que podem exceder a competência delegada do agente. É o mecanismo do agente para dizer «não tenho certeza; por favor, revise».
5.2 Schema¶
Referência do schema: 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 Níveis de urgência¶
| Urgência | Código | Tempo de resposta esperado |
|---|---|---|
| Baixa | low |
Em até 7 dias |
| Média | medium |
Em até 24 horas |
| Alta | high |
Em até 4 horas |
| Crítica | critical |
Em até 1 hora |
5.4 Categorias de alerta¶
| Categoria | Código | Descrição |
|---|---|---|
| Incerteza | uncertainty |
A confiança do agente caiu abaixo do limiar para a tarefa atual |
| Situação nova | novel_situation |
O agente encontra um cenário fora do seu treinamento ou experiência |
| Limite do escopo | scope_boundary |
A ação se aproxima do escopo definido do mandato ou o excede |
| Preocupação ética | ethical_concern |
O agente identifica uma possível questão ética que exige julgamento humano |
| Sinais conflitantes | conflicting_signals |
O agente recebe informações ou diretrizes contraditórias |
| Limitação de recursos | resource_limitation |
As capacidades do agente são insuficientes para a tarefa |
5.5 Resposta do principal¶
O principal pode responder a uma declaração de alerta com:
- Prosseguir: autoriza o agente a continuar com uma opção especificada
- Sobrepor: dá uma diretriz específica que prevalece sobre a avaliação do agente
- Assumir o controle: assume diretamente a interação
- Delegar a outro: transfere a tarefa para outro agente ou para uma pessoa
- Confirmar ciência: registra o alerta sem mudar o curso do agente
A resposta é assinada pelo principal e registrada na cadeia de auditoria.
6. Espelho do principal¶
6.1 Finalidade¶
Um espelho do principal é um documento narrativo, legível por pessoas, que representa os interesses, os valores e as prioridades do principal tal como o agente os entende. Ele acompanha o agente nas interações e permite que as contrapartes (tanto pessoas quanto agentes) entendam quem o agente representa e o que essa representação implica.
O espelho do principal serve de ponte entre o mundo criptográfico do DCP e o mundo humano das relações organizacionais.
6.2 Schema¶
Referência do schema: 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 Aprovação do principal¶
O principal deve (MUST) revisar e aprovar o espelho antes que ele seja usado em interações. Isso garante que a representação narrativa do agente reflita com exatidão a intenção do principal. As duas assinaturas (do agente e do principal) são obrigatórias.
Nota informativa (25/10/2026): o schema V2.0
principal_mirrortem uma únicacomposite_sig; veja V2-WIRE-COMPATIBILITY.md.
6.4 Atualizações do espelho¶
O espelho do principal tem versões. As atualizações ocorrem quando:
- Muda o papel ou o contexto do principal
- O mandato de delegação é atualizado
- O limiar de consciência do agente muda de forma significativa
- O principal pede uma revisão após examinar os registros de interação
Cada atualização produz uma nova versão com número de versão incrementado, encadeada por hash à versão anterior.
7. Registro de interação¶
7.1 Finalidade¶
Os registros de interação capturam as interações do agente em duas camadas:
- Camada técnica: dados verificáveis por máquina, como hashes de mensagens, carimbos de data/hora, números de sequência e provas criptográficas
- Camada narrativa: resumos legíveis por pessoas do que aconteceu, que decisões foram tomadas e por quê
Essa abordagem de duas camadas garante que os principais humanos possam revisar as ações do agente em linguagem natural, enquanto os dados subjacentes continuam verificáveis criptograficamente.
7.2 Schema¶
Referência do schema: 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 Camada técnica¶
A camada técnica é verificável por máquina e inclui:
- Hashes de todas as mensagens trocadas (o que permite verificá-las com a cadeia de auditoria A2A)
- Referências a declarações de intenção e resultados de políticas
- Uma raiz de Merkle de hash duplo sobre todos os hashes de mensagens, que permite uma verificação compacta
7.4 Camada narrativa¶
A camada narrativa é legível por pessoas e inclui:
- Um resumo em linguagem simples da interação
- As decisões principais, com a fundamentação e o nível de confiança
- Observações sobre o comportamento da contraparte
- Pendências que exigem a atenção do principal
- Itens de ação explícitos para o principal
A camada narrativa permite aos principais revisar as ações do agente de forma eficiente, sem analisar os registros brutos das mensagens A2A.
7.5 Conformidade da delegação¶
Cada registro de interação inclui uma seção de conformidade que acompanha:
- Se todas as ações ficaram dentro do escopo do mandato
- Quais permissões foram exercidas
- Quais proibições foram respeitadas
- Quais gatilhos de escalonamento foram acionados e que ação foi tomada
Isso oferece uma auditoria de conformidade por interação que alimenta o sistema mais amplo de acompanhamento de obrigações (DCP-08).
8. Extensão do handshake A2A¶
8.1 Finalidade¶
Quando dois agentes interagem sob mandatos de delegação, cada agente deveria poder verificar a autoridade do outro. O DCP-09 estende o handshake A2A do DCP-04 para incluir a verificação do mandato de delegação.
8.2 A2A_HELLO estendido¶
A mensagem A2A_HELLO (DCP-04, seção 3.2) é estendida com um 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 Verificação do mandato durante o handshake¶
Quando o respondente recebe um A2A_HELLO com um campo delegation:
- Verifica o
mandate_hashcom a assinatura do mandato (o respondente pode manter em cache os mandatos verificados) - Verifica se o mandato não expirou (
valid_until) - Verifica se a interação solicitada está dentro do
authority_scopedo mandato - Opcionalmente, obtém e verifica o mandato completo junto à organização do iniciador
- Se a verificação falhar, responde com
A2A_REJECTe o motivomandate_verification_failed
8.4 Verificação mútua dos mandatos¶
Se os dois agentes operam sob mandatos de delegação, ambos incluem campos delegation nas respectivas mensagens de handshake e ambos verificam o mandato do outro. Isso dá às duas partes a garantia de que os dois agentes estão autorizados a participar da interação.
9. Integração com a auditoria¶
9.1 Eventos de auditoria da delegação¶
| Evento | event_type |
|---|---|
| Mandato de delegação emitido | delegation_mandate_issued |
| Recebimento do mandato de delegação confirmado | delegation_mandate_acknowledged |
| Mandato de delegação revogado | delegation_mandate_revoked |
| Limiar de consciência criado | awareness_threshold_created |
| Limiar de consciência atualizado | awareness_threshold_updated |
| Declaração de alerta emitida | advisory_declaration_issued |
| Resposta ao alerta recebida | advisory_response_received |
| Espelho do principal criado | principal_mirror_created |
| Espelho do principal atualizado | principal_mirror_updated |
| Registro de interação criado | interaction_record_created |
| Mandato verificado durante o A2A | mandate_verified_a2a |
| Verificação do mandato falhou | mandate_verification_failed |
| Subdelegação emitida | sub_delegation_issued |
9.2 Formato da entrada de auditoria¶
{
"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. Considerações de segurança¶
10.1 Falsificação de mandatos¶
Um agente comprometido poderia falsificar um mandato de delegação para reivindicar uma autoridade que não lhe foi concedida. Mitigações:
- Os mandatos são assinados pela chave do principal, que o agente não possui
- As contrapartes verificam a assinatura do mandato com a chave pública conhecida do principal
- Os hashes dos mandatos são registrados na cadeia de auditoria no momento da emissão, o que oferece um caminho de verificação independente
10.2 Escalada de autoridade¶
Um agente poderia tentar exceder sua autoridade delegada deturpando o escopo do seu mandato. Mitigações:
- As permissões do mandato são explícitas e verificáveis por máquina
- Os registros de interação acompanham quais permissões foram exercidas
- As contrapartes verificam durante o handshake A2A se as ações solicitadas estão dentro do escopo do mandato
- O acompanhamento de obrigações (DCP-08) monitora violações de escopo
10.3 Abuso da subdelegação¶
A subdelegação cria cadeias de autoridade que poderiam ser exploradas. Mitigações:
- A profundidade da subdelegação é limitada pelo
sub_delegation.max_depthde cada ancestral (seção 3.5) - Os submandatos devem (MUST) ser mais restritos que o pai: um subconjunto de ações e classes de dados, limites que não sejam mais frouxos, uma janela de validade dentro da do pai e um
minimum_security_tierque não seja inferior ao do pai, de modo que um subagente nunca possa rebaixar o nível de segurança de quem lhe delegou - A cadeia de mandatos completa pode ser verificada off-line até o principal humano: cada salto é assinado pelo delegado anterior e um ancestral revogado invalida todos os descendentes
- A subdelegação fica desativada por padrão (
sub_delegationausente oupermitted: false)
10.4 Limiares de consciência desatualizados¶
O limiar de consciência de um agente pode não refletir seu entendimento real após muito tempo ou após mudanças significativas na experiência. Mitigações:
- Os limiares de consciência têm versões e são atualizados quando o entendimento muda
- Grandes quedas de confiança disparam declarações de alerta
- Os principais revisam os limiares de consciência nas revisões periódicas dos mandatos
- As contrapartes podem verificar o carimbo de data/hora do limiar de consciência para detectar se está desatualizado
10.5 Manipulação da narrativa¶
A camada narrativa dos registros de interação poderia ser redigida para apresentar um relato enganoso. Mitigações:
- A camada técnica fornece a verdade de referência criptográfica
- As afirmações da narrativa podem ser verificadas com os hashes das mensagens na camada técnica
- A revisão dos registros de interação pelo principal compara a narrativa com os dados técnicos
- As contrapartes mantêm seus próprios registros de interação para verificação cruzada
10.6 Separação de domínio¶
Esta especificação usa três contextos de separação de domínio (errata E5):
DCP-AI.v2.Delegationpara mandatos de delegação raiz, espelhos do principal e registros de interaçãoDCP-AI.v2.Awarenesspara limiares de consciência e declarações de alertaDCP-AI.v2.SubMandatepara submandatos (seção 3.5), de modo que um mandato assinado por um agente que delega nunca possa se passar por um assinado por um principal humano
Os dois primeiros constavam antes aqui como as tags DCP-DELEGATION-SIG-v2 e DCP-AWARENESS-SIG-v2, que não são contextos V2.0 (DCP-AI v2.0 §4.1).
Essa separação impede que assinaturas de um contexto sejam reutilizadas em outro.
11. Conformidade¶
Uma implementação está em conformidade com o DCP-09 se:
- Oferece suporte à emissão, à confirmação de recebimento e à revogação de mandatos de delegação conforme a seção 3
- Gera limiares de consciência com versões e pontuações de confiança conforme a seção 4
- Oferece suporte a declarações de alerta com níveis de urgência e resposta do principal conforme a seção 5
- Produz espelhos do principal com assinatura dupla conforme a seção 6
- Cria registros de interação de duas camadas, com camada técnica e camada narrativa, conforme a seção 7
- Estende o handshake A2A com a verificação do mandato conforme a seção 8
- Cria entradas de auditoria do DCP-03 para todos os eventos de delegação conforme a seção 9
- Oferece suporte à subdelegação com aplicação da redução de escopo quando habilitada
- Usa os contextos de separação de domínio
DCP-AI.v2.Delegation,DCP-AI.v2.AwarenesseDCP-AI.v2.SubMandatecomo a seção 10.6 os atribui (errata E5)
Referências¶
- DCP-01: Identidade e vinculação ao principal
- DCP-02: Declaração de intenção e controle por políticas
- DCP-03: Cadeia de auditoria e transparência
- DCP-04: Comunicação entre agentes
- DCP-05: Ciclo de vida do agente
- DCP-07: Resolução de conflitos
- DCP-08: Direitos e obrigações
Esta especificação reconhece que a delegação é o ato fundamental de confiança entre pessoas e agentes de IA. Ao tornar a delegação explícita, delimitada e auditável, e ao dar aos agentes um mecanismo formal para declarar o que sabem e o que não sabem, o DCP-09 cria uma base para a autonomia responsável dentro de limites que prestam contas.
Notas de implementação (informativas)¶
Acrescentadas em 25/10/2026. Não normativas. Estas notas não acrescentam nenhum requisito nem mudam nada do que está acima: descrevem como o código de referência em
mainse relaciona com este texto. Onde divergem, prevalece o texto normativo acima, com as correções das erratas de V2-WIRE-COMPATIBILITY.md.
- O que os SDKs verificam. A cadeia de mandatos de §3.5 está implementada nos quatro SDKs que assinam e é
verificada com
tests/interop/v2/mandate_chain_vectors.json. O restante do DCP-09 são registros que os SDKs constroem e assinam, não passos do protocolo que executem ou façam cumprir. - Registros em
schemas/v2/. Os schemas têm campos diferentes dos exemplos de §3 a §9. A janela de um mandato évalid_from/valid_until(§3.6 é lido comovalid_untilpela errata E6; o exemplo de §3.2 é conceitual), comauthority_scopeerevocable. Um limiar de consciência é uma lista dethreshold_rules(dimension,operator,value,action_if_triggered), não a declaração de confiança de §4.2. Uma declaração de alerta tem umsignificance_scoreinteiro (0–1000),action_summary,recommended_response,response_deadlineehuman_response, sem os níveis de urgência nem as categorias de §5.3 e §5.4. Um espelho do principal temnarrative,decision_summary,action_counteaudit_chain_hash. Um registro de interação tem umapublic_layer(terms,decisions,commitments), umprivate_layer_hashe ummandate_id, sem a raiz de Merkle nem a seção de conformidade de §7.3 e §7.5. - Assinaturas. Um mandato raiz tem
human_composite_sig(contextoDCP-AI.v2.Delegation) e um submandatodelegator_composite_sig(DCP-AI.v2.SubMandate). Todos os demais registros têm uma únicacomposite_sigde quem detém as chaves passadas:DCP-AI.v2.Awarenesspara limiares de consciência e declarações de alerta,DCP-AI.v2.Delegationpara espelhos do principal e registros de interação. Não há confirmação de recebimento do mandato pelo agente (§3.3) nem uma segunda assinatura, do principal, no espelho (§6.3). - O que as funções auxiliares fazem.
verifyMandateValiditysó verifica um conjunto de IDs revogados e a janela de validade, não a assinatura nem o escopo.revoke_delegation(Python) acrescenta o ID a um conjunto local quando o mandato érevocable; não produz nenhum registro de revogação assinado (§3.6).generateMirrorcalcula o hash (SHA-256) das entradas de auditoria que recebe e assina a narrativa e o resumo que quem chama escreve; não escreve a narrativa nem obtém nenhuma aprovação. Os tiposA2A_HELLOeA2A_WELCOMEtêm campos opcionaismandate_idemandate_hash, mas nenhum SDK verifica um mandato durante o handshake (§8.3) e nenhum enviaA2A_REJECT. - Os exemplos são ilustrações com marcadores, não fixtures. Valores fracionários como
"confidence": 0.95não podem ser canonicalizados comdcp-jcs-v1, então esses registros não podem ser assinados como estão escritos. Para os tipos do SDK, consulte docs/API_REFERENCE.md.