Chio/Docs

LearnActors & Federation

Assurance Model

The trust model identifies trusted components, formal-model claims, assumptions, and how a counterparty verifies your receipts.

Zero ambient authority: before and afterTraditional · ambient authorityChio · zero ambient authorityAgent: runs under an OS user account and inherits that user's permissions by defaultAgentinherits OS user permsTool Server: reachable directly; trusts whatever the OS allowsTool Serverno mediationAgent: starts with zero authority; must present a signed capability tokenAgentno permissionsKernel: validates token, runs guard pipeline, signs a receipt for every decisionKernelvalidate · guardsTool Server: receives only pre-validated, kernel-dispatched callsTool ServersandboxedDeny: no capability token was presentedDENYno tokenDeny: token's expires_at is in the pastDENYexpiredDeny: token does not cover the requested tool or parametersDENYwrong scopeambient authsigned tokendispatchpermissions inherited by defaultevery call mediated · every decision signedauthority is conferred, never inheritedsolid = happy path · dashed = deny / ambient
In a traditional setup, a process inherits its OS user's authority. In Chio, the kernel dispatches a call only after validating a signed, scoped, unexpired capability token.

Zero Ambient Authority

In many systems, a process inherits permissions from its execution context: user accounts, IAM roles, and environment variables. Reducing that authority requires removing permissions after the fact.

In Chio, an agent starts without authority. A Capability Authority must issue a signed token before the agent can read a file, call an API, execute a shell command, or invoke a tool.

This applies least privilege to AI agents. A token limits the action, duration, and constraints available to the agent.

It also lets counterparties determine what another agent was authorized to do. In the autonomous-commerce model, a counterparty can inspect what was authorized and what happened. The kernel is the trusted component; the model states what is proved about it and which assumptions bound the remaining components.


Comparison with Traditional Models

PropertyTraditional (ACL/RBAC)Chio (Capabilities)
Default stanceFail-open (permit unless denied)Fail-closed (deny unless explicitly allowed)
Authority sourceInherited from identity/roleGranted via signed, scoped tokens
Time boundsTypically permanent or session-longTokens include issued_at and expires_at
DelegationAll-or-nothing (share credentials)Attenuated delegation; the bounded P1 model checks narrowing
Audit trailApplication-level logs (optional, mutable)Cryptographically signed receipts (mandatory, append-only)
Scope granularityRole or resource levelPer-tool, per-server, per-parameter

Trust Levels

Each component has a trust level. The level defines its permitted role and the guarantees associated with that role.

ComponentTrust LevelImplication
AgentUntrustedGoverned calls require a valid capability token
KernelTrusted (TCB)Trusted mediator for governed calls; evaluates and signs their decisions
Tool ServerSandboxedReceives only pre-validated requests; isolated from agents and other servers
Capability AuthorityTrustedIssues and revokes tokens; defines the boundary of what agents can do
Receipt LogIntegrity-verifiedAppend-only, cryptographically signed; tampering is detectable
Chio TCB ringsHardware: CPU · RAM · hwRNGOS / runtime: Linux · libc · tokioRust compiler + std: rustc · llvm · std · cargoCrypto primitives: libsodium · ed25519-dalek · sha2Chio core: chio-kernel-coreHardwareCPU · RAM · hwRNGOS / runtimeLinux · libc · tokioRust compiler + stdrustc · llvm · std · cargoCrypto primitiveslibsodium · ed25519-dalek · sha2Chio corechio-kernel-coreHardware · trustedno software can verify; ring 0 attestation needs a TEEOS / runtime · auditedkernel, syscalls, allocator, async runtimeRust compiler + std · auditedcompiler correctness and std-library invariantsCrypto primitives · verifiedconstant-time, audited, well-known APIsChio core · formally specifiedthe smallest TCB; subject of Lean 4 proofssmallest TCB at the center; assumptions on outer rings tracked in formal/assumptions.toml
The Chio core is the smallest trusted computing base. Outer rings add the assumptions listed in `formal/assumptions.toml`.

The kernel is the TCB

The kernel is the Trusted Compute Base (TCB). The system's guarantees depend on its correctness. It is written in Rust to reduce memory-safety risk and kept small enough to audit. A compromised kernel invalidates these guarantees.

Bounded Lean theorem coverage

Lean 4 checks theorem families over the kernel's claim-registry bounded model: P1 Capability Monotonicity (bounded Lean mechanization for attenuation over the verified-core model), P2 Revocation Completeness (bounded Lean proofs that revoked tokens and revoked presented ancestors cannot pass), P3 Fail-Closed Guarantee (bounded Lean proofs that the pure evaluator is total and fail-closed), P4 Symbolic receipt and checkpoint properties (symbolic Lean proofs plus runtime receipt-signing checks in Rust), and P5 Bounded delegation-chain structure (bounded structural delegation-chain theorems for the presented-chain model). P1 is discharged over the claim-registry bounded model. These claims do not cover the full Rust runtime; the Lean statements define the formally checked boundary.
Chio assurance pyramidFormal proofs: machine-checked theorems for the Chio core; smallest code scope and strongest guaranteeFormal proofsLean 4 · Aeneas + F*Symbolic execution and model checking: bounded-depth verification of decision logic and protocol invariantsSymbolic executionKani · TLA+Differential tests: cross-check the runtime against an executable spec or reference oracleDifferential testsCoq-style oraclesProperty tests and fuzzing: randomized inputs against invariants; coverage-guided campaignsProperty tests + fuzzlibFuzzer · ClusterFuzzLiteIntegration tests: flows across the kernel, guards, tool servers, and signing keysIntegration testsmulti-processManual review: human eyes on diffs, threat-model walks, and external auditsManual reviewcode review · auditsmachine-checked theoremsbounded state-space searchruntime vs spec / oracle parityrandomized inputs vs invariantscross-component flowsintent and threat-model gapsnarrower scope,higher assurancebroader scope,lower assurancehigher layers verify less code more deeply; lower layers verify more code more shallowly
Higher levels cover less code with stronger guarantees. Lower levels cover more code through tests and review.

Fail-Closed by Default

The kernel uses fail-closed semantics: an error at an evaluation stage results in denial.

  • Missing token: deny
  • Invalid signature: deny
  • Expired token: deny
  • Guard throws an internal error: deny
  • Tool server timeout: deny
  • Budget exhausted: deny
  • Kernel panic: deny

A misconfigured or partially deployed system denies the call. Within this model, disrupting the kernel causes a denial of service rather than a privilege escalation.

Silence is denial

If the kernel cannot produce a definitive Allow verdict with a valid signature, the default resolution is Deny. The full runtime kernel can suspend a request in a distinct PendingApproval state and route it to a human (see Human-in-the-Loop) instead of resolving it immediately. chio-kernel-core, the pure evaluator, does not emit PendingApproval; only the chio-kernel shell does. Outside that approval path, silence resolves to denial.

Principle of Least Privilege

Chio enforces least privilege at multiple levels:

  • Tool level: tokens grant access to specific tools by name, not to entire servers
  • Parameter level: constraints narrow the arguments a tool can receive (e.g., only paths matching ./workspace/**)
  • Time level: token expiration bounds the time window for authority
  • Economic level: per-invocation and total cost caps prevent runaway spending even if the scope is valid
  • Rate level: velocity guards limit how quickly an agent can act, bounding the damage rate

Component Boundaries and Isolation

The design enforces trust boundaries between components.

Agent and Tool Server Boundary

In the governed-call deployment path, agents and tool servers have no direct communication path. The kernel mediates each tool call:

  • The kernel validates the token and evaluates guards
  • The kernel checks and records metering information
  • The kernel signs and appends a receipt

In this deployment path, tool servers accept connections from the kernel. The boundary prevents an agent from bypassing token validation and guard evaluation.

Tool Server Isolation

Tool servers are sandboxed. They receive pre-validated requests and return results. The kernel need not disclose the requesting agent's identity, capability token, or policy to the tool server. This separation limits what a compromised tool server can use to escalate privileges; it does not remove the server's ability to perform the dispatched work.

Receipt Log Immutability

The receipt log is append-only for the configured receipt-store path. Each receipt is signed with the kernel's Ed25519 key. A verifier with the corresponding public key can detect changes to its signed bytes.


Attenuation

When a capability is delegated, the child token must narrow the parent token's permissions. The kernel enforces this property, attenuation, during token validation.

Concretely, a delegated token must have:

  • A scope that is a subset of the parent's scope
  • An expiration no later than the parent's expiration
  • Invocation limits no greater than the parent's limits
  • Cost caps no greater than the parent's caps

In the bounded P1 model, each validated child token has authority no greater than its parent.

bash
CA (root authority)
 └─ Orchestrator token: read_file + write_file, 1 hour, 100 calls
     └─ Research agent token: read_file only, 30 min, 25 calls
         └─ Sub-agent token: read_file only, 10 min, 5 calls

Signed Decision Records

A mediated-decision receipt records the request, decision, guard results, and timing data for a kernel evaluation. The kernel signs the receipt with its Ed25519 key. That signature lets a verifier check:

  • The receipt bytes were signed by the kernel key
  • The kernel recorded the embedded request in its decision
  • A changed signed field causes signature verification to fail

A receipt proves that the kernel key signed a record. It does not alone prove who originated a request, that an external tool performed its effect, or that the receipt store retained every record.


Federation

Chio supports cross-organizational trust relationships through signed capabilities. An organization that recognizes another's issuing authorities can let its agents invoke tools across the boundary. A counterparty in another trust domain can verify the receipts it receives. The bilateral case, mutual authority recognition, and the receipts two organizations settle against are described in Bilateral Federation and Bilateral Receipts.

A capability token includes its signature chain. The receiving kernel performs signature verification locally against the capability-issuer public keys in its trust store; it does not query the issuing organization during that check.

A signed authority profile configures this trust relationship. An operator running the issuer supplies an AuthorityProfileDocument (the lease, governance, BBS, and revocation authorities it trusts, each with a public key and a validity window) plus the local signing seeds. The issuer validates each input fail-closed. A seed signs only when its derived public key matches its profile entry. The issuer signs three record types from that profile:

  • ChioIssuanceBundle: capability leases and lease-scope bindings, with a governance receipt for destructive steps.
  • SignedChioRevocationCheckpoint : revocation state published under monotonic epoch enforcement; an older checkpoint cannot replace a newer one.
  • ChioVerifierTrustBundleDocument : the bundle a verifier loads to decide which authorities, workflows, and disclosure policies it will accept.
bash
# Issue capability leases + governance receipts from a signed authority profile
$ chio federation authority issue

# Publish a revocation checkpoint under monotonic epoch enforcement
$ chio federation authority checkpoint

# Assemble the verifier trust bundle peers load to admit this authority
$ chio federation authority trust-bundle assemble

The issuer does no networking or storage; it performs validation and signing. The admission and reputation contracts live in chio-federation, the network accept-time gate in chio-federation-transport-iroh, and the lease and governance record definitions in chio-governance. Agent identity is also represented in this configuration: a did:chio identifies an agent's Ed25519 public key. An Agent Passport can be presented to a receiving kernel without a registry lookup.

Federation is scoped

The verifier trust bundle specifies acceptable authorities, workflows, and disclosure policies. The transport gate checks admission at connection time. A federated token contains the delegated authority the receiving side has agreed to honor.

Summary

The kernel denies by default, records signed decisions, and enforces attenuation on delegated authority. Components above the kernel rely on those behaviors through its interfaces.