NHI Governance
Your agents are identities, not API keys.
A service account that calls models, a cloud workload that triggers MCP tools, a cron job that runs a LoRA training sweep — these are Non-Human Identities (NHIs). Traditional API-key auth treats every bearer the same. That works until an agent is compromised, or drifts beyond its intended scope, or racks up a five-figure bill overnight. At that point, you need the same identity controls you already have for humans: tiers, ownership, risk scoring, revocation that cascades.
Trinitite's NHI Governance surface federates external identity providers, mirrors their agents as first-class NHIs, assigns privilege tiers, binds Guardians per-agent, and anchors every tool call to the ledger with the NHI's identity context attached.
Federate Every Provider You Already Use
Register a provider once and Trinitite mirrors its identities as federated NHIs. Supported providers: AWS IAM (role ARN / IRSA), GCP Workload Identity (service-account JWT), Kubernetes ServiceAccounts (OIDC-bound tokens), Azure Managed Identities, Astrix, Aembit, and any OIDC or SAML provider.
Three modes of engagement per identity:
- Observed — risk-scored, posture-tracked, surfaced in analytics. No governance binding yet.
- Linked — mirrored to a Trinitite NHI. Observable and governable.
- Auto-imported — newly-discovered identities from the provider are linked automatically and acquire a tier-default Guardian binding.
Observed-but-unlinked identities are your shadow NHI inventory — the agents your organization already runs but your governance stack hasn't caught up with. Federation surfaces them so the unknown unknowns become knowns.
Privilege Tiers, Not Role Sprawl
NHI Privilege Tier Ladder
Every NHI request carries a tier claim. The Guardian, the tool allowlist, and the spend session all key off the same tier. Promotion from T1 → T2 is a controlled operation with a governance event, not a configuration tweak.
Four tiers. Not four hundred roles. Promotion is a governed operation with an audit event, not a config tweak. Every Guardian, every tool allowlist, every spend session keys off the same tier claim carried in the NHI JIT token.
This makes the blast radius of a compromised NHI quantifiable. A leaked T0 token gets you read-only chat. A leaked T3 token is the event that triggers your org's break-glass IR runbook.
One Guardian Per NHI Per Tool
Guardian Binding Resolution — Per Request
When a tool call arrives, Trinitite resolves the Guardian to use in this strict order:
- Explicit binding for this exact
(nhi_id, tool)pair — the sharpest, most specific control. - Tier default — the Guardian configured for this NHI's tier and this tool class.
- Org default — the Guardian configured for the whole organization for this tool class.
- Otherwise — deny with a
403, and emit a governance event. No silent pass-through.
All four steps are written to the Glass Box Ledger. A regulator asking "which Guardian made this decision for this agent at 02:13 UTC on Tuesday?" has one answer, cryptographically chained to every decision before and after it.
Risk Scoring and Anomaly Detection
Every NHI carries real-time risk signals:
| Signal | What it catches |
|---|---|
| Action velocity | Agents that suddenly 10× their normal call rate |
| Privilege escalation | Attempts to use tools outside the tier's allowlist |
| Anomalous destinations | Cloud resources, external hosts, or queries the agent has never touched before |
| Credential age | NHIs running on tokens past their recommended rotation window |
| MFA / attestation gaps | Federated NHIs from providers that haven't attested identity in the expected cadence |
| Concentration | Too much of the organisation's traffic flowing through a single NHI (blast-radius hotspot) |
Aggregated into the Agentic Risk Score (nhi_posture dimension). A CRO or CISO can see the quartile distribution of NHIs by risk across the whole organisation and drill down to individual agents.
The /v1/proxy/nhi Surface
For applications that want to register and manage NHIs directly (not via federation), Trinitite exposes a first-class NHI lifecycle API:
POST /v1/proxy/nhi/identities
{
"external_id": "svc-agent-prod-01",
"tier": "T1",
"workload_origin": "k8s://prod/ns/agents/pod/xyz"
}
In response you get back a Trinitite-native NHI record. Agents then request short-lived JIT tokens via POST /v1/proxy/nhi/identities/:id/token and present them on the X-Trinitite-Nhi-Token header for every proxy / gateway / firewall call.
Spend sessions, emergency shutdown, and bulk revocation all flow through the Governance Controls surface and apply equally to federated and native NHIs.
What You Get
| Capability | Without NHI governance | With Trinitite |
|---|---|---|
| Agent inventory | Scattered across IAM, K8s, Astrix, and API-key tables | Unified federated registry |
| Privilege model | "API key → everything" | T0 / T1 / T2 / T3 with tier-aware tool allowlists |
| Blast radius | Unknown until incident | Quantifiable per-agent, per-tier |
| Risk signal | "The account has been used a lot" | Multi-signal ARS with anomaly heuristics |
| Forensic answer | Hand-stitched from logs | Single Guardian resolution trace in the ledger |
| Shadow NHIs | Invisible | Observed-but-unlinked queue ready for triage |
Tier Attestation
Tier escalations are never unilateral configuration changes. An NHI cannot move from T2 → T1 without a fresh, signed Guardian verdict that the next-tier rubric still passes.
Tier Attestation — escalations require a signed Guardian verdict
The escalation request runs the simulation, captures a guardian_approval_hash, and only the L2 control layer is willing to apply the new tier when that hash is fresh, signed, and bound to the requesting NHI. Stale or replayed hashes are rejected.
This makes a tier ladder enforceable rather than aspirational: the system itself refuses to let a privilege increase happen without a passing Guardian decision recorded against it.
Next Steps
→ Identity & RBAC — the human-principal and API-key counterparts.
→ LLM Proxy — where NHI JIT tokens authenticate chat requests.
→ Governance Controls — the L0-L6 hierarchy that enforces tier decisions.
→ MCP Gateway — where per-tool Guardian bindings actually fire.