Docs navigation

Trust score

Every agent starts at 100. Each logged event derives trust signals — negative for violations, positive for healthy behavior — and the score moves in real time, clamped to 0–100. Every change is stored with a human-readable reason, so the score is always explainable.

Signals

ViolationDelta
Failed authorization−15
Invalid event signature−15
Action blocked by policy−10
High failure rate−10
Suspicious tool call−8
Sensitive data access attempt−8
Unknown/unverified tool used−5
Repeated errors−5
Unusually high activity−3
Event missing signature−2
Healthy behaviorDelta
Workflow completed successfully+2
Low error rate+2
Signed event verified+1
Approved tool used+1
Stable activity pattern+1

Trust levels

ScoreLevelEffect
90–100TrustedNormal operation
70–89HealthyNormal operation
50–69WatchActions receive a policy warn; agent status escalates to warning below 50
30–49RiskyWarnings continue; visually flagged everywhere
0–29BlockedPrivileged actions are blocked by default policy; status auto-escalates to blocked

Reading the score

const trust = await ProofLedger.getTrustScore("support-agent");
// { agentId: "support-agent", trustScore: 82, trustLevel: "healthy", status: "active" }

// The change ledger, newest first — each row has a reason:
// GET /api/agents/support-agent/trust-history
// [{ "previousScore": 90, "newScore": 82, "delta": -8,
//    "reason": "Sensitive data access attempt: buyer financial records", … }]

Every logged event also returns the movement inline (trust: { before, after, level }), so your agent can react — e.g. slow down or ask for help when its own score drops.

Note

Scores never reset automatically and blocked status never auto-clears — an operator reviews the agent and reactivates it from the agent detail page. High/critical violations also email your team — see Alerts.