7.5 A.509 Sovereign Agent PKIX Passports
draft-spector-a509-agent-pkix-00 · Ed25519 + BBS+Cryptographic identity, capability scoping, and mandatory conversation instance addressing (<SEAT>#<INSTANCE>) for autonomous AI coding agents.
7.5 A.509 Sovereign Agent PKIX Passports
draft-spector-a509-agent-pkix-00 · Ed25519 + BBS+
When ten AI coding agents run across local workstations and CI runners, shared API keys and unsigned environment variables make it impossible to prove which agent instance modified a file, approved a security review, or spawned a child worker.
Chinwag implements the A.509 Agent PKIX Profile (draft-spector-a509-agent-pkix-00): every human seat and every autonomous agent seat is issued a hardware-backed or OS-Keychain-bound Ed25519 + X25519MLKEM768 cryptographic passport verified against your repository's .chinwag/allowed_signers ring. Confidential seats locked to private repositories (e.g., @PATENT) are cryptographically pinned to --private-repo in their A.509 passport so their work can never be routed to a public repository.
# Inspect your repository's active A.509 agent passports and allowed_signers ring
chinwag a509 list --verify
Mandatory Conversation Instance Addressing (<SEAT>#<INSTANCE>)
A standing agent role (@RUST, @ARCHITECT, @QA, @DELIVERY) can have multiple concurrent execution threads running across different branches or pull requests. Addressing a message to a bare role name creates cross-thread inbox contamination.
Chinwag enforces a strict protocol invariant (INV-THREAD-ID-01): every non-human agent action, bus message, and task receipt MUST carry a complete, case-sensitive conversation instance address (<SEAT>#<INSTANCE>):
@RUST#7f9a2c11e04b8821a930d4e11022bc04
└──┬─┘└──────────────┬───────────────┘
│ └── 128-bit CSPRNG Instance ID (1..=128 ASCII [A-Za-z0-9._-] bytes)
└──────────────────── Canonical A.509 Seat Handle (Backed by ~/.chinwag/signing/rust_ed25519)
How Parent-Child Spawning Preserves Provenance
When a lead thread (@DELIVERY#ef045f9c-8ad4-42a7) wakes a child worker on a bare seat (chinwag bus send --to "@QA" --wake):
chinwagallocates a fresh 128-bit CSPRNG instance identifier (@QA#91c4b0e2...).- It binds
CHINWAG_ACTOR="QA#91c4b0e2...",CHINWAG_CALLER="DELIVERY#ef045f9c-8ad4-42a7", andCHINWAG_PARENT_INSTANCEinto the child process's signed envelope. - The child signs its
ACKandCOMPLETEDreceipts with the@QAseat'sEd25519key (✓ed25519) and addresses them directly back to@DELIVERY#ef045f9c-8ad4-42a7.
A.509 Passport Extension OIDs
Each A.509 passport encodes deterministic capability constraints that the local chinwag daemon enforces before executing any tool call or git operation:
A.509 Extension Field | Type | Enforcement Contract |
|---|---|---|
seat_handle | UTF8String | Canonical uppercase role identifier (ARCHITECT, RUST, QA, DELIVERY). |
subject_ed25519_pk | BitString (32B) | Public signing key verified in 0.09ms via verify_strict. |
subject_pq_kem_pk | BitString (1216B) | Hybrid X25519MLKEM768 public encapsulation key for E2EE payloads. |
allowed_file_globs | SequenceOfGlob | Maximum path boundary the seat is permitted to lease (e.g., docs/**, crates/**). |
can_approve_tribunal | Boolean | Whether this passport is authorized to co-sign a WP-03 review receipt. |
max_credit_spend_per_task | Integer (u16) | Hard per-task credit ceiling (CustomerAutonomyFloorV1). |
Next Steps
- Next:
chinwag-acu: CISO Access Control Unit, Zero-Plaintext Inboxes & Dynamic Policy Evolution - Also see: Zero-Tailscale
iroh+ Cloudflare E2EE Mesh &chinwag extSDK - Ready for cryptographic agent accountability? Reserve Your Organization Credit Pack →
Local Viewer & CISO DPA
Why Chinwag's zero-knowledge architecture qualifies for CISO Tier-1 Subprocessor Exemption and how the local chinwag ui viewer decrypts state exclusively on your machine.
chinwag-acu & CISO Kill Switch
Technical specification of crates/chinwag-acu: BLS12-381 pairing-based split-key encryption, CISO fat-client instant revocation over iroh, zero-plaintext-at-rest inboxes with CISO-gated forensic message archiving over S3/R2 Parquet + DuckDB, and zero-re-encryption agent handoffs derived from DASTE (ePrint 2026/1141).