Governance
Governance in Trellaris is not a review process bolted onto an agent platform โ it is where the agent platform is built. Rules live in the data and execution layers, so a control cannot be bypassed by using a different surface, a different client, or a different tool.
The seven layers
Controls stack. Each layer catches what the one above it cannot see, and each is enforced by a different mechanism.
| Layer | Question it answers | Where it is enforced |
|---|---|---|
| Tenancy & visibility | May this caller even see this thing? | The repository layer โ every query is organization-scoped and ring-filtered. |
| Definition-time gates | Is this definition safe and allowed? | Validation and the five-stage security scan on every version. |
| Runtime policy | What may this run do right now? | The policy engine, on every model call and every tool call. |
| Human in the loop | Should a person decide this one? | The approval gate โ the run parks mid-execution. |
| Identity & credentials | Whose authority is this acting under? | Delegated OAuth resolved per call; agent identity minted per run. |
| Lifecycle switches | How do we stop it? | Pause, kill, user suspension, organization-wide emergency stop. |
| Evidence | What actually happened? | Audit log, SIEM export, run replay, the Compliance API. |
Definition-time gates
Nothing reaches runtime unvalidated. Creating an agent or skill version runs the validation pipeline (schema, slug uniqueness, referential and visibility checks on every skill and MCP reference, version pins, the model allowlist) and returns structured, field-path errors rather than a vague failure.
Every version also triggers a security scan of five independently reported stages:
| Stage | Looks for |
|---|---|
| Static analysis | Dangerous patterns in bundled code, against an OWASP LLM Top 10 rule set. |
| Dependency audit | Known-vulnerable packages in a skill bundle. |
| Secret detection | Credentials committed into a bundle. |
| Policy lint | Instructions that undermine the platform's own guardrails. |
| Tool-surface review | Tools and MCP servers the definition reaches for, against the allowlist. |
A personal-ring version scans asynchronously and simply carries its badge. A
version that has not passed cannot be published to a shared
ring โ the attempt is refused with the per-stage findings attached. A crashing
scanner reports error; it never degrades into a silent pass.
Runtime policy
Ten policy kinds cover data handling, the tool plane, model choice, approvals, spend, autonomy, browser egress, agent self-scheduling, injection screening, and agent-identity conditions. They share one scope grammar and one resolution rule โ deny wins, most specific wins.
DLP โ
Redact sensitive spans at the model and gateway boundaries.
Tool allowlist โ
Which tools an agent may call; denied tools are hidden.
Model allowlist โ
Which models an agent may run on.
Budget โ
Soft and hard spend caps by org, team, or user.
Approvals โ
Make a write wait for a human; edit-before-approve.
Autonomy โ
A floor on how much an agent may do unattended.
Policy reference โ
All ten kinds in one place: exact config, resolution, enforcement point, and default.
Human in the loop
Approval is not a notification you can ignore โ the run genuinely stops. Its loop state is serialized, and it resumes only on a decision.
| Capability | Behaviour |
|---|---|
| Park and resume | A write parks the run at awaiting_approval. Approving resumes it and executes the call exactly once; denying returns a tool error the agent can respond to. |
| Edit before approve | A reviewer may amend the pending arguments. Edits are validated against the tool's schema, executed exactly as amended, and the audit record carries both the original and the edited arguments. |
| Bulk decisions | Triage a queue in one action, with per-row results โ one stale item fails in place rather than sinking the batch. |
| Expiry | An undecided approval times out (72 hours by default) and the run is cancelled with approval_timeout rather than parking forever. |
| Decide from anywhere | The inbox and Slack resolve the same state transition, with row locking so a double-click cannot double-approve. |
| Ask the user | ask_user parks a run on a question; the reply becomes the tool result. |
| Connect cards | A missing connector credential parks the run and prompts for consent instead of falling back to anyone else's token. |
Identity and credentials
- Delegated, per-user access. Connectors act as the initiating user, with that user's OAuth token resolved at call time. There is no shared service credential to inherit, and revocation takes effect on the very next call.
- Identity travels. When the orchestrator delegates, the initiator's identity propagates to child runs, so a two-hop delegation still reaches external systems as the original human.
- Per-agent identity. Agents can hold their own workload identity, minted as short-lived, audience-scoped tokens. Minting is the single enforcement point for the
conditional_accesspolicy and for the agent's lifecycle state โ a killed or paused agent cannot mint. - Secrets are references. Tokens and server credentials are envelope-encrypted, stored by reference, decrypted server-side at the moment of use, and never returned through the API.
Lifecycle switches
| Control | Effect | Reversible |
|---|---|---|
| Pause agent | New runs are refused at the execution path. In-flight runs finish. | Yes โ resume. |
| Kill agent | The agent disappears from the catalog, active and parked runs are force-cancelled, and pending approvals are withdrawn. | No. |
| Suspend user | Their automations are disabled and their runs cancelled. | Yes. |
| Emergency stop | Organization-wide: new runs refused, active runs cancelled. | Yes. |
| Deprovision | Removing a user cascades: connector credentials revoked, automations disabled, runs cancelled, agent identities revoked. | โ |
Quality regressions have their own brake. Production runs are continuously sampled and graded; if the rolling pass rate drops below threshold the owner is alerted once per period and a demotion proposal is raised โ the promotion pipeline run in reverse. Approving it pauses the agent.
Data handling and privacy
Administrators run the platform; that does not automatically entitle them to read what employees said to it. Content access is a deliberate, org-wide setting.
| Tier | Admin access | Visible to users |
|---|---|---|
| Tier 1 (default) | Metadata only. Run status, timings, cost, and audit records โ never message content, run input/output, artifacts, or memories. | Nothing to show. |
| Tier 2 | As Tier 1, plus content for a specific user under an active legal hold. | Nothing, by design. |
| Tier 3 | Full content access. | A persistent in-product banner for everyone in the organization, plus a notification when the tier changes. |
Legal holds are dual-authorized: the requesting administrator cannot approve their own hold, a second administrator activates it, and releasing it re-blocks access. An active hold also pins the held user's conversations against retention sweeps.
Retention runs as a scheduled sweep against per-organization settings for audit and conversation history.
Evidence
| Surface | What it gives you |
|---|---|
| Audit log | Every registry change, approval decision, credential connect/disconnect, automation change, promotion transition, and administrative action โ browsable with filters. |
| SIEM export | The same records as newline-delimited JSON in a Sentinel-compatible shape, metadata-only by construction. |
| Run replay | A normalized step-by-step timeline of any run, showing post-redaction content and annotating which rules were applied. |
| Compliance API | Scoped, machine-readable access to agent inventory, run metadata, and governance decisions for external GRC tooling โ plus programmatic suspension of an agent. |
Risk register
Every agent carries a computed risk tier, so review effort can be aimed where the exposure actually is. The score combines four factors:
| Factor | Range |
|---|---|
| Write scope | read โ write โ destructive |
| Data sensitivity | none โ internal โ regulated |
| Autonomy | supervised โ trusted โ autonomous |
| Blast radius (ring) | personal โ team โ org |
The total maps to a tier โ minimal, limited, high, or unacceptable โ and each tier carries labels for NIST AI RMF and the EU AI Act. Those labels are data, not logic, so legal can retune the mapping without touching the scoring.
High and unacceptable tiers require attestation before org-ring operation, and sign-off is dual-authorized โ the same two-person pattern as legal holds. The register and its controls live under Admin โ Risk.
Testing the controls
Governance you never exercise is governance you don't have. Three mechanisms keep the controls honest:
- Evaluation floors. A write-capable agent cannot be promoted to a shared ring without refusal, injection, and red-team coverage in its evaluation set.
- A packaged adversarial suite ships with the platform, so red-teaming is not something each team invents.
- Simulation. A multi-turn persona-and-goal session runs the agent through the real execution path and scores the transcript against a rubric.
Platform-level limits
Some limits sit below policy, as properties of the deployment:
- Plan gates โ the free tier is capped at three automations per user, cron triggers only; paid tiers unlock the other trigger kinds and higher caps.
- Rate limits โ inbound webhooks and gateway tool calls are token-bucketed and shed with
429, never with a server error. - Concurrency โ per-user semaphores bound sandbox execution and automation dispatch.
- Sandbox isolation โ code runs in an ephemeral, network-less container as a non-root user with capped memory, CPU, process count, and wall clock, and no package managers installed.
- Fan-out and background caps โ child-run counts, family cost, checkpoint resumes, and background wall clock are all bounded.
Who does what
| Role | Responsibilities |
|---|---|
| Organization admin | Policies, kill switches, privacy tier, legal holds, audit and SIEM, risk sign-off, connector and channel configuration. |
| Reviewer | Promotion decisions: reads the gate reports and the candidate definition, then approves, requests changes, or rejects. |
| Builder | Agent and skill definitions, evaluation sets, and responding to drift alerts on agents they own. |
| Member | Approving writes on their own runs, connecting their own accounts, and managing their own memories. |