BuildEconomics
Credit & Underwriting
Issue agent credit facilities with underwriting decisions, collateral bonds, and a capital ledger.
Credit Facilities
A credit facility is a pre-approved line of credit granted to an agent or operator. The disposition is derived from the applicant's scorecard band, runtime assurance, and certification standing, and also from the shape of their book. The report carries a manual_review_required flag (crates/economy/chio-credit/src/lib.rs:592), and admission refuses a grant while it is set (crates/economy/chio-credit/src/obligation/credit_admission.rs:554). Nothing in the crate sets it, so what raises it is the caller's to decide. Terms are captured in CreditFacilityTerms:
pub struct CreditFacilityTerms {
pub credit_limit: MonetaryAmount,
pub utilization_ceiling_bps: u16, // max % of limit drawable at once
pub reserve_ratio_bps: u16, // reserve, as a share of outstanding exposure
pub concentration_cap_bps: u16, // max size of any single allocation
pub ttl_seconds: u64, // facility lifetime
pub capital_source: CreditFacilityCapitalSource, // where backing capital comes from
}When an agent applies for credit, the underwriting system evaluates the application and returns a CreditFacilityDisposition, one of three variants:
- Grant: a credit facility is created with the terms specified by the underwriting decision.
- ManualReview: the application is borderline and requires human review before a facility can be granted.
- Deny: the application does not meet minimum underwriting criteria.
The same three values are the accepted --disposition filter on chio trust facility list: grant, manual_review, deny.
Every amount is in minor units
credit_limit, collateral_amount and every other MonetaryAmount on this page count the currency's smallest unit: 100 units is one US dollar (crates/core/chio-core-types/src/capability/scope.rs:80-91). A $10,000 facility is units: 1000000, not units: 10000.Utilization ceiling vs. credit limit
credit_limit is the total facility size. The utilization_ceiling_bps controls how much of that limit can be drawn at any given time. A facility with a $10,000 limit and 8,000 bps (80%) ceiling allows a maximum of $8,000 in concurrent outstanding draws.Credit Bonds
A credit bond is the collateral backing for an active credit facility. Bonds lock capital that can be seized if the agent defaults on its obligations.
pub struct CreditBondTerms {
pub facility_id: String,
pub credit_limit: MonetaryAmount,
pub collateral_amount: MonetaryAmount,
pub reserve_requirement_amount: MonetaryAmount,
pub outstanding_exposure_amount: MonetaryAmount,
pub reserve_ratio_bps: u16,
pub coverage_ratio_bps: u16,
pub capital_source: CreditFacilityCapitalSource,
}Bonds pass through a lifecycle of states:
| State | Meaning |
|---|---|
Active | Bond is live and backing the credit facility |
Superseded | Replaced by a new bond (e.g., after facility amendment) |
Released | Collateral returned after facility closure with no outstanding exposure |
Impaired | Collateral partially or fully seized due to default or policy violation |
Expired | Bond TTL elapsed without renewal |
Bond disposition actions control transitions between states:
Lock: lock additional collateral into the bondHold: place a hold on bond collateral pending investigationRelease: release collateral back to the bond holderImpair: seize collateral due to default or violation
Underwriting Decisions
The underwriting system evaluates credit applications using a combination of reputation history, certification status, and risk classification. Each decision records its reason codes and inputs.
Risk Classification
The risk class is an output, not a gate. Every finding carries its own class, and the report's risk_class is the maximum over them, defaulting to Baseline when nothing fired (crates/economy/chio-underwriting/src/decision.rs:649-653). The outcome is derived the same way from the same findings (:644-648), so the class summarizes an application rather than deciding it. Terms are set by a different enum, CreditScorecardBand, whose five values are prime, standard, guarded, probationary and restricted(crates/economy/chio-credit/src/lib.rs:372-378), carried as the band field of the scorecard (:511).
| Level | Meaning |
|---|---|
Baseline | The default when no finding fired. |
Guarded | Something fired, but nothing severe. |
Elevated | High risk. The highest class short of Critical. |
Critical | At least one finding is severe. Any Deny finding lands here. |
Decision Outcomes
The underwriter produces one of four decision outcomes. There is no manual-review outcome here: ManualReview is a CreditFacilityDisposition and an UnderwritingRemediation, not an UnderwritingDecisionOutcome.
- Approve: grant the requested facility with computed terms
- ReduceCeiling: approve with a lower utilization ceiling than requested
- StepUp: require additional collateral or certification before approval
- Deny: reject the application with reason codes
Decision Policy Defaults
The default policy is not a document to trust: the evaluator prints it with every report, so read it from the binary rather than from here.
$ chio --json trust underwriting-decision evaluate \
--agent-subject demo-agent --tool-server ts-demo --receipt-db ./receipts.db \
| jq '.policy'{
"schema": "chio.underwriting.decision-policy.v1",
"version": "chio.underwriting.decision-policy.default.v1",
"minimumReceiptHistory": 1,
"maximumReceiptAgeSeconds": 2592000,
"minimumApproveReputationScore": 0.6,
"denyReputationScoreBelow": 0.25,
"minimumStepUpRuntimeAssuranceTier": "attested",
"minimumApproveRuntimeAssuranceTier": "verified",
"requireActiveToolCertification": true,
"requireComplianceScoreReference": false,
"reduceCeilingFactor": 0.5
}crates/economy/chio-underwriting/src/decision.rs:113-129at fe56570Two of those need reading carefully. minimumReceiptHistory is a count: at least one matching receipt. maximumReceiptAgeSeconds is a freshness ceiling on the newest one, so an agent with a single receipt from five minutes ago passes while an agent with two years of history whose newest receipt is thirty-one days old fails with StaleReceiptHistory(crates/economy/chio-underwriting/src/decision.rs:447-457).
Scores between thresholds
effective_score < deny_reputation_score_below (crates/economy/chio-underwriting/src/decision.rs:485), so exactly 0.25 does not deny. A score at or above 0.25 and below 0.6 produces ReduceCeiling with reason ReputationBelowApproveThreshold and no remediation (:498-501), and reduceCeilingFactor is what that outcome actually applies. Operators can customize every one of these thresholds in their own policy.Reason Codes
Every UnderwritingDecisionFinding carries a primary UnderwritingDecisionReasonCode in its reason field, the code that ties directly to the thresholds above. There are eight:
pub enum UnderwritingDecisionReasonCode {
PolicySignal, // an underlying policy signal fired
ComplianceScoreRequired, // a compliance score is missing
InsufficientReceiptHistory, // fewer receipts than the minimum
StaleReceiptHistory, // receipt history older than the window
ReputationBelowApproveThreshold, // reputation under the 0.6 approve floor
ReputationBelowDenyThreshold, // reputation under the 0.25 deny floor
RuntimeAssuranceBelowApproveTier, // assurance tier below approve
RuntimeAssuranceBelowStepUpTier, // assurance tier below step-up
}A finding may also carry an optional secondary signal_reason of type UnderwritingReasonCode, the underlying signal that drove the primary reason. There are 13:
pub enum UnderwritingReasonCode {
ProbationaryHistory, // insufficient operational history
LowReputation, // composite reputation below threshold
ImportedTrustDependency, // reliance on external trust source
MissingCertification, // required cert not present
FailedCertification, // certification check failed
RevokedCertification, // certification was revoked
MissingRuntimeAssurance, // no runtime assurance attestation
WeakRuntimeAssurance, // assurance tier below minimum
PendingSettlementExposure, // unsettled financial exposure
FailedSettlementExposure, // prior settlement failure
MeteredBillingMismatch, // billing discrepancy detected
DelegatedCallChain, // delegation chain risk factor
SharedEvidenceProofRequired, // additional proof needed
}Bonded Execution
Bonded execution is the mechanism that allows autonomous agents to operate independently while providing economic guarantees to counterparties. The level of autonomy an agent has is governed by its autonomy tier and control policy.
Autonomy Tiers
| Tier | Description |
|---|---|
Direct | Human operator approves every invocation. No autonomous action. |
Delegated | Agent operates within pre-approved parameters. Escalates when outside bounds. |
Autonomous | Agent operates independently within its bonded limits. No per-invocation approval. |
Control Policy
Every bonded agent has a control policy that constrains its autonomy:
pub struct CreditBondedExecutionControlPolicy {
pub version: String,
pub kill_switch: bool, // immediately halt all agent activity
pub maximum_autonomy_tier: Option<GovernedAutonomyTier>, // highest tier this agent can reach
pub minimum_runtime_assurance_tier: Option<RuntimeAssuranceTier>, // floor on attested runtime assurance
pub require_delegated_call_chain: bool, // require a delegated call chain
pub require_locked_reserve: bool, // must have active bond before operating
pub deny_if_bond_not_active: bool, // deny when the bond is not active
pub deny_if_outstanding_delinquency: bool, // deny on outstanding delinquency
}The kill_switch is an emergency stop that immediately halts all agent activity regardless of bonds or approvals. When require_locked_reserve is set, the agent cannot execute any tool invocations unless it has an active bond with sufficient collateral. The autonomy ceiling is a GovernedAutonomyTier, and the deny_if_bond_not_active and deny_if_outstanding_delinquency gates are on by default.
Execution Decisions
When a bonded agent requests a tool invocation, the system evaluates the request against the agent's bond, control policy, and current exposure to produce a CreditBondedExecutionDecision. The decision is binary:
- Allow: invocation proceeds against the agent's bond.
- Deny: invocation rejected. The decision carries finding codes that name which gate refused it:
KillSwitchEnabled,BondNotActive,RuntimeAssuranceBelowAutonomyMinimum,MissingDelegatedCallChain, and so on.
There is no "requires bond" outcome: an agent that lacks the collateral to proceed is denied, and posting a bond is a separate action (chio trust bond issue) taken before the next attempt.
Capital Book
The capital book is the ledger of all capital movements within the credit system. Every event (Commit, Hold, Draw, Disburse, Release, Repay, Impair) is recorded.
Event Kinds
| Event | Description |
|---|---|
Commit | Capital committed to a facility or bond |
Hold | Capital placed on hold pending a specific invocation |
Draw | Capital drawn from a facility to fund an invocation |
Disburse | Capital disbursed to a provider after settlement |
Release | Held or committed capital released back to the source |
Repay | Outstanding draw repaid to the facility |
Impair | Capital written off due to default |
Capital Roles
Each capital movement involves a counterparty with a defined role:
OperatorTreasury: the operator's own capital pool, used for self-funded facilitiesExternalCapitalProvider: third-party capital provider who funds facilities for a returnAgentCounterparty: the agent or entity on the other side of the capital movement
Execution instructions for capital movements can require multi-sig authority chains, ensuring that high-value disbursals or impairments require approval from multiple authorized parties.
Multi-sig for impairments
Liability Market
The liability market provides insurance-like coverage for tool execution risks. Providers underwrite specific risk classes and agents can purchase coverage to protect against operational failures.
Provider Types
| Provider | Description |
|---|---|
AdmittedCarrier | Licensed insurance carrier operating in regulated markets |
SurplusLine | Non-admitted carrier for risks standard markets won't cover |
Captive | Self-insurance entity owned by the insured organization |
RiskPool | Decentralized pool of capital from multiple participants sharing risk |
Coverage Classes
Coverage is organized into five classes, each addressing a different risk category:
ToolExecution: covers losses from tool invocation failures or incorrect resultsDataBreach: covers costs arising from unauthorized data exposure during tool useFinancialLoss: covers direct financial losses from agent actionsProfessionalLiability: covers claims from errors in professional-grade agent outputsRegulatoryResponse: covers costs of regulatory investigations or compliance actions
Coverage Lifecycle
Coverage follows a standard insurance lifecycle:
Quote -> Bind -> [Active Coverage Period] -> Claim -> Adjudication -> Payout- Quote: provider prices the coverage based on the agent's risk profile and requested class
- Bind: agent accepts the quote, premium is collected, coverage begins
- Claim: agent or operator files a claim against the coverage after a covered event
- Adjudication: provider evaluates the claim against receipts and policy terms
- Payout: approved claims are settled through the standard settlement rails
Open Market
The open market uses economic bonds to incentivize honest participation in the Chio ecosystem. Participants post bonds that can be slashed if they violate market rules.
Bond Classes
| Class | Purpose |
|---|---|
Publication | Bond posted when publishing a tool or service listing. Slashed for fraudulent descriptions. |
Listing | Bond posted when listing availability. Slashed for service unavailability. |
Dispute | Bond posted when filing a dispute. Slashed if the dispute is frivolous. |
Penalty Actions
When a market rule is violated, the system can apply penalty actions against the violator's bond:
HoldBond: freeze the bond pending investigation. Capital cannot be withdrawn but is not yet seized.SlashBond: seize part or all of the bond as a penalty. Slashed capital is distributed to the affected counterparty.ReverseSlash: reverse a previous slash if the original decision is overturned on appeal.
Bond penalties
Operator CLI
Each concept above has a corresponding chio trust subcommand that emits or lists the corresponding signed record.
| Command | What it produces |
|---|---|
chio trust underwriting-input | Builds a signed UnderwritingPolicyInput. |
chio trust underwriting-decision | Evaluates the input into an UnderwritingDecisionArtifact record with a risk class, budget recommendation, and premium quote. |
chio trust underwriting-appeal | Runs the appeal lifecycle against a persisted decision. |
chio trust facility | Evaluates, issues, and lists credit facility records. |
chio trust bond | Evaluates, issues, lists, and simulates reserve-lock bond records. |
chio trust loss | Records delinquency, recovery, reserve-release, reserve-slash, and write-off events. |
chio trust exposure-ledger | Produces a signed ExposureLedgerReport (per-currency settlement position). |
chio trust credit-scorecard | Produces a signed CreditScorecardReport from the exposure ledger and reputation inspection. |
chio trust capital-book | Exports a signed live capital book tying facilities, bonds, and losses to one source-of-funds view. |
chio trust capital-instruction | Emits custody-neutral capital instructions. |
chio trust capital-allocation | Emits simulation-first capital-allocation decisions. |
chio trust liability-provider | Manages the curated liability-provider registry. |
chio trust liability-market | Drives the quote, placement, and bound-coverage flow. |
chio trust provider-risk-package | Assembles the signed insurer-facing evidence bundle. |
chio trust credit-backtest | Runs deterministic backtests over historical subject-scoped evidence. |
Summary
| Concept | Description |
|---|---|
| Credit Facility | Pre-approved credit line with utilization ceiling, reserve ratio, and concentration cap |
| Credit Bond | Collateral backing a facility, with Active/Superseded/Released/Impaired/Expired lifecycle |
| Underwriting | Risk classification (Baseline to Critical) and decision outcomes (Approve, ReduceCeiling, StepUp, Deny) |
| Bonded Execution | Autonomy tiers (Direct, Delegated, Autonomous) with kill switch and reserve controls |
| Capital Book | Ledger of Commit, Hold, Draw, Disburse, Release, Repay, and Impair events |
| Liability Market | Insurance coverage (ToolExecution, DataBreach, FinancialLoss, ProfessionalLiability, RegulatoryResponse) |
| Open Market | Publication/Listing/Dispute bonds with HoldBond, SlashBond, and ReverseSlash penalties |
Next Steps
- Settlement · how settled capital moves through the configured payment rail
- CLI Reference · commands for managing facilities, bonds, and underwriting
- Agent Passport · the reputation system that feeds underwriting decisions