DCP-05: Agent Lifecycle¶
Status¶
Draft — v2.0 Extension
Abstract¶
This specification defines the full lifecycle of a DCP-certified AI agent, from commissioning through active service, declining capability, and eventual decommissioning. It introduces lifecycle state machines, vitality metrics, commissioning certificates, vitality reports, and decommissioning records — all cryptographically signed, hash-chained, and independently verifiable. The protocol ensures that an agent's operational history is tamper-evident, that transitions between lifecycle states are authorized and auditable, and that four distinct termination modes accommodate the full range of end-of-life scenarios.
1. Introduction¶
DCP-01 through DCP-04 establish identity, intent, audit, and communication for AI agents. However, these specifications assume agents exist in a steady operational state. In practice, agents have finite lifespans: they are created, they operate, they degrade, and they are retired or terminated. DCP-05 fills this gap by defining a comprehensive lifecycle model.
Without a lifecycle protocol, organizations face several risks: - No authoritative record of when an agent was placed into or removed from service - No continuous health monitoring that feeds into the trust model - No standardized process for orderly retirement or emergency termination - No tamper-evident history linking an agent's birth to its death
1.1 Design Principles¶
- Every lifecycle state transition MUST be signed and recorded
- Vitality metrics MUST be hash-chained to prevent retroactive manipulation
- Decommissioning MUST produce a sealed, independently verifiable record
- Lifecycle events integrate into the existing DCP audit chain (DCP-03)
- Human principals retain ultimate authority over lifecycle transitions
1.2 Relationship to Other Specifications¶
- DCP-01: Lifecycle states extend the identity model; a decommissioned agent's identity persists for audit purposes but cannot authorize new actions
- DCP-02: Intent declarations are only valid from agents in
activestate - DCP-03: All lifecycle events generate audit entries in the agent's hash chain
- DCP-04: A2A sessions MUST be terminated when an agent transitions out of
activestate - DCP-06: Succession and inheritance (defined separately) depend on lifecycle states defined here
2. Terminology¶
Commissioning: The formal act of creating an agent identity, binding it to a responsible principal, and placing it into service. Analogous to a birth certificate combined with a commission of office.
Vitality: A composite metric (integer, 0–1000) representing an agent's operational health, capability integrity, and trust standing. A vitality of 1000 indicates full operational capacity; 0 indicates total incapacity.
Vitality Report: A periodic, signed, hash-chained record of an agent's vitality metric and its component scores.
Decommissioning: The formal act of permanently removing an agent from service and sealing its operational record.
Lifecycle State: One of four canonical states an agent occupies: commissioned, active, declining, or decommissioned.
Termination Mode: The manner in which an agent transitions to the decommissioned state: planned_retirement, termination_for_cause, organizational_restructuring, or sudden_failure.
Domain Separation Tag: DCP-LIFECYCLE-SIG-v2 — used for all signatures produced under this specification to prevent cross-protocol replay.
3. Lifecycle State Machine¶
3.1 States¶
An agent MUST be in exactly one of the following states at any time:
| State | Code | Description |
|---|---|---|
| Commissioned | commissioned |
Agent identity has been created and bound to a principal, but the agent has not yet been placed into active service. Analogous to a newly minted credential that has not yet been activated. |
| Active | active |
Agent is fully operational. It may declare intents, execute actions, participate in A2A sessions, and generate audit entries. |
| Declining | declining |
Agent's vitality has dropped below a configurable threshold, or a principal has initiated a managed wind-down. The agent MAY still operate but with restricted capabilities. New long-term commitments SHOULD be refused. |
| Decommissioned | decommissioned |
Agent is permanently out of service. Its identity record persists for audit and historical verification, but it MUST NOT initiate any new actions, sessions, or intent declarations. |
3.2 Valid Transitions¶
activate
commissioned ──────────────> active
│ │
│ │ decline (vitality < threshold
│ │ OR principal-initiated)
│ v
│ declining
│ │
│ │ reactivate (vitality restored
│ │ AND principal-approved)
│ │───────────> active
│ │
decommission │ │ decommission
(any mode) │ │ (any mode)
v v
decommissioned
Valid transitions:
1. commissioned -> active (activation)
2. active -> declining (vitality drop or principal-initiated decline)
3. declining -> active (reactivation, requires principal approval and vitality above threshold)
4. active -> decommissioned (direct termination)
5. declining -> decommissioned (termination from declining state)
Invalid transitions:
- decommissioned -> any state (terminal state, irreversible)
- commissioned -> declining (must be activated first)
- commissioned -> decommissioned (must be activated first, or use termination_for_cause if commissioning was erroneous, which implicitly activates and immediately decommissions)
3.3 Transition Record¶
Every state transition MUST produce a signed record:
{
"dcp_version": "2.0",
"record_type": "lifecycle_transition",
"transition_id": "lt:<uuid>",
"agent_id": "agent:<identifier>",
"from_state": "active",
"to_state": "declining",
"reason": "vitality_threshold_breach",
"vitality_at_transition": 340,
"threshold": 400,
"authorized_by": {
"principal_id": "principal:<identifier>",
"role": "responsible_principal"
},
"timestamp": "2026-03-01T00:00:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<key-id>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
}
}
4. Commissioning Certificate¶
4.1 Purpose¶
A commissioning certificate is the foundational document of an agent's existence. It records the agent's creation parameters, its bound principal, initial capabilities, and the authorizing entity. It MUST be the first entry in the agent's lifecycle chain.
4.2 Schema¶
Schema reference: schemas/v2/commissioning_certificate.schema.json
{
"dcp_version": "2.0",
"record_type": "commissioning_certificate",
"certificate_id": "cc:<uuid>",
"agent_id": "agent:<identifier>",
"agent_name": "Human-readable agent name",
"agent_description": "Purpose and scope of the agent",
"principal_binding": {
"principal_id": "principal:<identifier>",
"principal_name": "Responsible Human or Entity",
"organization_id": "org:<identifier>",
"binding_type": "direct",
"authority_level": "full"
},
"initial_capabilities": [
"negotiate",
"purchase_order",
"data_query"
],
"operational_parameters": {
"intended_lifespan": "P365D",
"vitality_report_interval": "PT1H",
"vitality_decline_threshold": 400,
"vitality_critical_threshold": 200,
"max_concurrent_sessions": 100,
"security_tier": "elevated",
"permitted_domains": ["procurement", "finance"]
},
"initial_vitality": 1000,
"cryptographic_identity": {
"ed25519_public_key": "<base64>",
"ml_dsa_65_public_key": "<base64>",
"key_generation_timestamp": "2026-03-01T00:00:00Z"
},
"commissioning_authority": {
"authority_id": "auth:<identifier>",
"authority_name": "Organization Commissioning Authority",
"authorization_reference": "AUTH-2026-0042"
},
"metadata": {
"model_identifier": "model-name-v1.0",
"deployment_environment": "production",
"geographic_jurisdiction": "US"
},
"commissioned_at": "2026-03-01T00:00:00Z",
"prev_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
"prev_hash_secondary": "sha3-256:0000000000000000000000000000000000000000000000000000000000000000",
"signature": {
"alg": "ed25519",
"kid": "<authority-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
},
"countersignature": {
"alg": "ed25519",
"kid": "<principal-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
}
}
4.3 Commissioning Flow¶
- The commissioning authority generates the agent's cryptographic identity
- The authority creates and signs the commissioning certificate
- The responsible principal countersigns the certificate, accepting accountability
- The certificate is recorded as the genesis entry (with null
prev_hash) in the agent's lifecycle chain - An
agent_commissionedaudit entry is created in the DCP-03 audit chain - The agent transitions to
commissionedstate - Upon readiness verification, the agent transitions to
activestate
4.4 Countersignature Requirement¶
The commissioning certificate MUST carry two signatures: - Authority signature: The entity authorized to commission agents (organizational root key or delegated commissioning key) - Principal countersignature: The responsible principal accepting accountability for the agent
Both signatures MUST use the domain separation tag DCP-LIFECYCLE-SIG-v2.
5. Vitality Metric¶
5.1 Definition¶
Vitality is an integer in the range [0, 1000] representing an agent's overall operational fitness. It is a composite of four component scores:
| Component | Weight | Range | Description |
|---|---|---|---|
| Capability Integrity | 0.30 | 0–1000 | Measures whether the agent can perform its declared capabilities correctly. Derived from self-tests, capability probes, or external validation. |
| Trust Standing | 0.25 | 0–1000 | Measures the agent's trustworthiness based on audit history, policy compliance, and peer assessments. |
| Resource Health | 0.25 | 0–1000 | Measures computational resource availability: memory, latency, throughput, error rates. |
| Policy Compliance | 0.20 | 0–1000 | Measures adherence to declared intents and organizational policies. Derived from DCP-02 policy outcome records. |
Composite vitality:
vitality = floor(0.30 * capability_integrity + 0.25 * trust_standing +
0.25 * resource_health + 0.20 * policy_compliance)
5.2 Thresholds¶
Organizations configure two thresholds per agent in the commissioning certificate:
- Decline Threshold (default 400): When vitality drops below this value, the agent transitions to
decliningstate - Critical Threshold (default 200): When vitality drops below this value, immediate intervention is required; the agent SHOULD be decommissioned unless the responsible principal explicitly authorizes continued operation
5.3 Vitality Decay and Recovery¶
Vitality is not static. Component scores change based on: - Self-assessment: Agent-reported capability test results - External probes: Verification service health checks - Audit analysis: Automated review of audit chain for anomalies - Peer reports: Other agents reporting interaction quality via DCP-04
Recovery: If a declining agent's vitality rises above the decline threshold and the responsible principal approves, the agent MAY transition back to active.
6. Vitality Report¶
6.1 Purpose¶
Vitality reports form a hash-chained sequence providing a tamper-evident history of an agent's health over time. They are generated at the interval specified in the commissioning certificate.
6.2 Schema¶
Schema reference: schemas/v2/vitality_report.schema.json
{
"dcp_version": "2.0",
"record_type": "vitality_report",
"report_id": "vr:<uuid>",
"agent_id": "agent:<identifier>",
"sequence_number": 42,
"lifecycle_state": "active",
"vitality": 872,
"components": {
"capability_integrity": {
"score": 920,
"details": {
"tests_passed": 47,
"tests_failed": 2,
"tests_total": 49,
"last_test_timestamp": "2026-03-01T12:00:00Z"
}
},
"trust_standing": {
"score": 850,
"details": {
"successful_interactions": 1203,
"failed_interactions": 12,
"policy_violations": 0,
"peer_trust_score": 880
}
},
"resource_health": {
"score": 810,
"details": {
"avg_response_latency_ms": 45,
"error_rate_percent": 0.3,
"memory_utilization_percent": 72,
"throughput_ops_per_sec": 150
}
},
"policy_compliance": {
"score": 900,
"details": {
"intents_declared": 500,
"intents_completed": 495,
"policy_outcomes_compliant": 498,
"policy_outcomes_noncompliant": 2
}
}
},
"anomalies": [],
"recommendations": [],
"report_interval": "PT1H",
"report_window": {
"from": "2026-03-01T11:00:00Z",
"to": "2026-03-01T12:00:00Z"
},
"timestamp": "2026-03-01T12:00:05Z",
"prev_hash": "sha256:<hex of previous vitality report>",
"prev_hash_secondary": "sha3-256:<hex of previous vitality report>",
"merkle_root": {
"sha256": "<hex>",
"sha3_256": "<hex>"
},
"signature": {
"alg": "ed25519",
"kid": "<agent-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
}
}
6.3 Hash Chaining¶
Vitality reports form a hash chain. Each report's prev_hash and prev_hash_secondary reference the SHA-256 and SHA3-256 hashes of the immediately preceding vitality report. The first vitality report after commissioning references the commissioning certificate's hash.
The dual-hash approach (SHA-256 + SHA3-256) follows the same pattern as DCP-03 audit chains, providing resilience against single-algorithm compromise.
6.4 Merkle Root¶
Each vitality report includes a dual-hash Merkle root over the component scores and their details. This enables selective disclosure: an agent can prove its overall vitality score while revealing only specific component details.
6.5 Anomaly Detection¶
The anomalies array MAY contain structured anomaly reports:
{
"anomaly_id": "anom:<uuid>",
"type": "capability_degradation",
"severity": "warning",
"component": "capability_integrity",
"description": "Test pass rate dropped 15% in the last reporting interval",
"detected_at": "2026-03-01T11:45:00Z",
"data": {
"previous_pass_rate": 0.98,
"current_pass_rate": 0.83
}
}
Anomaly severities: info, warning, critical.
7. Termination Modes¶
7.1 Overview¶
An agent reaches the decommissioned state via one of four termination modes, each with different procedural requirements:
| Mode | Code | Trigger | Grace Period |
|---|---|---|---|
| Planned Retirement | planned_retirement |
Agent has fulfilled its purpose or reached end of intended lifespan | Full (configurable, default 72h) |
| Termination for Cause | termination_for_cause |
Agent violated policy, exhibited unsafe behavior, or was compromised | Minimal (configurable, default 1h) |
| Organizational Restructuring | organizational_restructuring |
Business decision to retire the agent unrelated to its performance | Standard (configurable, default 24h) |
| Sudden Failure | sudden_failure |
Agent became unresponsive or suffered catastrophic failure | None (post-hoc decommissioning by principal) |
7.2 Planned Retirement¶
The orderly end-of-life process:
- Responsible principal issues a retirement notice with a grace period
- Agent enters
decliningstate (if not already) - Agent completes or transfers in-progress work
- Agent terminates all A2A sessions with reason
complete - Agent generates a final vitality report
- Agent executes succession protocol (DCP-06) if configured
- Decommissioning record is created and signed
- Agent transitions to
decommissioned
7.3 Termination for Cause¶
Emergency termination due to policy violations or compromise:
- Responsible principal or organizational authority issues termination order
- Agent's credentials are immediately flagged for revocation
- All A2A sessions are terminated with reason
revocation - A minimal grace period allows in-flight operations to complete (or be rolled back)
- Decommissioning record is created with
causedetails - Agent transitions to
decommissioned - Post-incident analysis generates an audit summary
7.4 Organizational Restructuring¶
Business-driven retirement:
- Organization issues restructuring notice affecting the agent
- Standard grace period for work transfer
- Agent completes or transfers work per organizational policy
- Succession protocol (DCP-06) executes if a successor is designated
- Decommissioning record is created
- Agent transitions to
decommissioned
7.5 Sudden Failure¶
When an agent fails unexpectedly:
- Monitoring system or peer agent detects unresponsiveness
- A
sudden_failureevent is raised after a configurable timeout (default: 5 minutes of unresponsiveness) - The responsible principal is notified
- The principal creates a post-hoc decommissioning record on the agent's behalf
- The principal signs the decommissioning record with their own key (since the agent cannot sign)
- A2A counterparties are notified if the agent was in active sessions
- Succession protocol (DCP-06) executes in emergency mode if configured
8. Decommissioning Record¶
8.1 Purpose¶
The decommissioning record is the terminal document in an agent's lifecycle chain. It seals the agent's operational history and provides a permanent, verifiable record of how and why the agent was retired.
8.2 Schema¶
Schema reference: schemas/v2/decommissioning_record.schema.json
{
"dcp_version": "2.0",
"record_type": "decommissioning_record",
"decommission_id": "dc:<uuid>",
"agent_id": "agent:<identifier>",
"agent_name": "Human-readable agent name",
"termination_mode": "planned_retirement",
"lifecycle_summary": {
"commissioned_at": "2026-01-01T00:00:00Z",
"activated_at": "2026-01-01T01:00:00Z",
"decommissioned_at": "2026-03-01T00:00:00Z",
"total_active_duration": "P59D",
"total_vitality_reports": 1416,
"final_vitality": 720,
"average_vitality": 865,
"min_vitality": 410,
"max_vitality": 995,
"total_audit_entries": 15230,
"total_a2a_sessions": 342,
"total_intents_declared": 8901,
"policy_violations": 2
},
"audit_chain_seal": {
"final_audit_hash": "sha256:<hex>",
"final_audit_hash_secondary": "sha3-256:<hex>",
"audit_merkle_root": {
"sha256": "<hex>",
"sha3_256": "<hex>"
},
"total_entries": 15230
},
"vitality_chain_seal": {
"final_vitality_hash": "sha256:<hex>",
"final_vitality_hash_secondary": "sha3-256:<hex>",
"vitality_merkle_root": {
"sha256": "<hex>",
"sha3_256": "<hex>"
},
"total_reports": 1416
},
"succession_reference": {
"successor_agent_id": "agent:<identifier>",
"succession_record_id": "sr:<uuid>",
"memory_transfer_complete": true
},
"reason": "Agent fulfilled its intended operational lifespan",
"cause_details": null,
"key_disposition": {
"private_keys_destroyed": true,
"destruction_method": "secure_erasure",
"destruction_witness": "principal:<identifier>",
"public_keys_archived": true,
"archive_location": "org-key-archive-2026"
},
"data_disposition": {
"operational_data": "transferred_to_successor",
"audit_data": "archived",
"session_data": "purged",
"archive_retention_period": "P7Y"
},
"decommissioned_at": "2026-03-01T00:00:00Z",
"decommissioned_by": {
"principal_id": "principal:<identifier>",
"role": "responsible_principal"
},
"prev_hash": "sha256:<hex of final vitality report or last lifecycle record>",
"prev_hash_secondary": "sha3-256:<hex>",
"signature": {
"alg": "ed25519",
"kid": "<agent-key-id or principal-key-id for sudden_failure>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
},
"countersignature": {
"alg": "ed25519",
"kid": "<principal-key-id>",
"sig_b64": "...",
"domain_sep": "DCP-LIFECYCLE-SIG-v2"
}
}
8.3 Chain Sealing¶
The decommissioning record includes Merkle root seals for both the audit chain and the vitality chain. These seals enable any future verifier to confirm the completeness and integrity of the agent's historical records without replaying the entire chain.
8.4 Key Disposition¶
Upon decommissioning:
- Private keys MUST be securely destroyed
- Public keys MUST be archived for future verification of historical artifacts
- The destruction method and witness MUST be recorded
- For sudden_failure, key destruction is performed by the responsible principal
8.5 Sudden Failure Special Handling¶
When an agent fails suddenly and cannot sign its own decommissioning record:
1. The responsible principal signs the record using their own key
2. The signature.kid references the principal's key, not the agent's
3. A principal_signed_on_behalf flag is set to true
4. The reason MUST include available diagnostic information
5. If the agent's last vitality report is available, its hash is used as prev_hash; otherwise, the last known audit entry hash is used
9. Integration with DCP-03 Audit Chain¶
9.1 Lifecycle Audit Events¶
All lifecycle events generate entries in the DCP-03 audit chain:
| Event | event_type |
|---|---|
| Commissioning certificate created | agent_commissioned |
| Agent activated | agent_activated |
| Agent entered declining state | agent_declining |
| Agent reactivated from declining | agent_reactivated |
| Vitality report generated | vitality_report_generated |
| Vitality threshold breached | vitality_threshold_breach |
| Decommissioning initiated | decommissioning_initiated |
| Decommissioning completed | agent_decommissioned |
9.2 Audit Entry Format¶
{
"dcp_version": "2.0",
"event_id": "evt:<uuid>",
"event_type": "agent_declining",
"agent_id": "agent:<identifier>",
"lifecycle_state": "declining",
"vitality": 380,
"trigger": "vitality_threshold_breach",
"details": {
"threshold": 400,
"vitality_report_id": "vr:<uuid>"
},
"timestamp": "2026-03-01T00:00:00Z",
"prev_hash": "sha256:<hex>",
"prev_hash_secondary": "sha3-256:<hex>"
}
10. Security Considerations¶
10.1 Lifecycle Chain Integrity¶
The hash-chained sequence of commissioning certificate, vitality reports, transition records, and decommissioning record forms a tamper-evident lifecycle chain. Any modification to a historical record invalidates all subsequent hashes.
10.2 Vitality Report Authenticity¶
Vitality reports are self-reported by the agent. Implementations SHOULD supplement self-reported data with external validation: - Verification service health probes - Peer agent interaction quality reports - Organizational monitoring systems - Automated capability testing
A compromised agent could falsify its own vitality. External validation sources provide defense-in-depth.
10.3 Termination Authorization¶
Only authorized principals may initiate lifecycle transitions. The authorization model: - Activation: Commissioning authority or responsible principal - Decline: Automatic (vitality threshold) or responsible principal - Reactivation: Responsible principal only (requires explicit approval) - Decommissioning: Responsible principal, organizational authority, or automatic (sudden failure detection)
10.4 Post-Decommissioning Verification¶
After decommissioning, the agent's public keys remain archived. Any party can verify the agent's historical signatures, audit chain, and vitality reports. The decommissioning record's chain seals enable efficient verification without replaying the entire history.
10.5 Domain Separation¶
All signatures under this specification use the domain separation tag DCP-LIFECYCLE-SIG-v2. This prevents signatures created for lifecycle purposes from being replayed in other DCP protocol contexts (e.g., intent declarations or A2A sessions).
10.6 Sudden Failure Risks¶
Sudden failure presents unique security risks: - The agent cannot sign its own decommissioning record - The agent's private key material may be in an unknown state - In-flight operations may be in an inconsistent state
Mitigations: - Principal-signed decommissioning records are clearly marked - Key material MUST be presumed compromised; revocation SHOULD be issued - Counterparty agents SHOULD treat in-flight data from the failed agent as potentially unreliable
11. Conformance¶
An implementation is DCP-05 conformant if it:
1. Implements all four lifecycle states and valid transitions as defined in Section 3
2. Generates commissioning certificates with dual signatures as defined in Section 4
3. Produces hash-chained vitality reports at the configured interval as defined in Section 6
4. Supports all four termination modes as defined in Section 7
5. Generates sealed decommissioning records as defined in Section 8
6. Creates DCP-03 audit entries for all lifecycle events as defined in Section 9
7. Uses the domain separation tag DCP-LIFECYCLE-SIG-v2 for all signatures
8. Implements dual-hash (SHA-256 + SHA3-256) for all hash chain links
References¶
- DCP-01: Identity & Principal Binding
- DCP-02: Intent Declaration & Policy Gating
- DCP-03: Audit Chain & Transparency
- DCP-04: Agent-to-Agent Communication
- DCP-06: Succession & Inheritance
- NIST SP 800-88: Guidelines for Media Sanitization (key destruction)
- RFC 3339: Date and Time on the Internet
This specification acknowledges that AI agents, like all operational systems, have finite lifespans. A protocol for digital citizenship must account not only for how agents live, but for how they end — with dignity, accountability, and a complete record.