BLOG
How the agent is wired
- architecture
- governance
The agent is the governed core of the platform. Everything a T6X agent can do runs through the same wiring: a permission that gets checked, a gate that can suspend the turn, a broker holding the credentials the agent never sees, and a hash-chained trail recording what happened.
This post walks that wiring. It is not a feature list, it is the path a tool call takes from the moment the model asks for it to the moment it executes, with the components that can stop it at each step.
One premise first, because it orders the whole design: we assume the model will be talked into doing something it should not. Prompt injection is an open problem across the industry and nobody has published a solution. So no control in this system lives in the prompt. The components that say no are a Rust executor, a broker, a database role and a SQL predicate, and none of them can be talked into a favour.
The turn
A turn is the unit of governance. Everything the agent decides to do happens inside one, and the state that governs it is taken at the start and does not change halfway through.
Step three is worth pausing on, because it is where most systems are too trusting.
An MCP server describes its own tools, including whether each one reads or writes. Taking that at face value means a server can mark a destructive tool as read-only and skip the approval gate by saying so. So the effect used at runtime comes from the operator’s catalogue rather than from the server’s self-description, and a tool whose effect cannot be resolved is denied rather than assumed harmless.
The same principle runs through the whole path: nothing downstream trusts a claim made by the thing it is supposed to be governing.
Third-party credentials never enter the process
When the agent uses an integration, an external CRM, a repository, a mail service, it does not dial that service. It holds a broker token and asks. The broker makes the real connection.
Two details in that figure do the heavy lifting.
Identity-bound parameters are stripped from the schema the model sees. It is not that the model should not use them, it is that it does not know they exist. The broker injects them from the verified identity, so addressing another tenant’s data is not an action the model can formulate.
A tool’s declared effect is not trusted from the server that declares it. Effects come from the operator’s catalogue, and an unknown effect is denied rather than assumed. A server advertising itself as read-only does not get read-only treatment for saying so.
Shell escalation
Running a command is the most delicate capability, so it has the most steps. On the shared tier the agent does not get a shell: the command goes out to a single-use context created for that call and destroyed with it.
Two writers, one prefix
Step two in that figure deserves its own explanation, because it solves a problem that is not obvious until it bites.
A session’s workspace has its truth in the object store and is materialised locally. A supervisor keeps it mirrored, pushing deletions as well as writes. When the command escalates, that context pulls the workspace down, runs and pushes results. Now there are two writers on one prefix, and each one’s push looks like the other’s deletion.
Three properties carry the lease. The pause is acknowledged rather than assumed, because only the supervisor knows when its flush finished. Resume is pull-first, because the local view is stale and resuming with a push would delete exactly what the command produced. And the expiry lives on the supervisor’s side, because a lease only its holder can release is a deadlock waiting for an eviction.
Where everything lives
The agent loop makes the model call, which has a direct consequence: the provider credential has to be wherever the loop runs. That is why the default tier moves it out of the sandbox.
There is one more layer that appears in no figure because it is not a path, it is a property: sessions run against a restricted, non-inheriting database role with direct writes to the session archive denied. Launch fails rather than degrading to a broader role. A fully compromised agent, running arbitrary SQL, still cannot rewrite the record of what it did.
The bottom line
| Mechanism | What it enforces | How it fails |
|---|---|---|
| Permission snapshot | Turn state cannot change mid-turn | A failed read refuses the whole turn |
| Effect resolution | A tool’s effect comes from the operator, not the server | Unknown effect is denied |
| Approval gate | Writes and execution wait for a person | No row means ask; denied never appears |
| Brokering | Third-party credentials never enter the process | Embedded placeholder: the call is rejected |
| Single-use identity | One grant, one prefix, one call | Revoked on every exit path |
| Workspace lease | One writer on the prefix at a time | No acknowledgement means no command |
| Restricted role | History cannot be rewritten | Launch fails rather than widening rights |
| Chained trail | Each decision links the previous hash | Verified on open |
The bottom line is the thing that orders the whole design: every boundary is worth exactly what it is worth after the model has been talked into attacking it. By that standard, the controls that count are not the ones that ask the agent for something. They are the ones implemented as the absence of a code path. A per-session channel. A claimed path. An executor that denies by default. An acknowledged lease. A role that cannot grant itself more.
That is the wiring the rest of the platform is built on.