Governance

Data perimeter

This is one policy kind in the ADR-014 governance engine. Policies resolve most-specific-wins with deny-wins at a tie, across scopes that run agent โ†’ user/role โ†’ workspace โ†’ team โ†’ org. Rules of the same kind combine rather than replace, so what matters is which rules exist, not which policy row holds them.

What it does

A data perimeter policy says, per outbound channel, the highest classification a run may carry and still use that channel freely, and what happens above it. It is evaluated against the run's taint, the highest label the run has read, immediately before each outbound tool call, in the same place the approval gate runs.

Channels

ChannelCovers
webweb_search, web_fetch and other tools that send text to the public internet.
browserbrowser_use: typing into a page, submitting a form.
a2aDelegating to a remote agent. A run that is a remote call counts as this channel from the start.
mcp_externalTools on an MCP server the organisation marked external.
connector_writeWrite operations on connectors (tickets, records, files).
emailSending or drafting mail through a connector.

Actions

ActionEffect above the channel's limit
redactThe outgoing text is passed through DLP redaction before it leaves. The call proceeds.
require_approvalThe run parks for approval exactly as a connector write does, with the channel and the taint in the approval card. The approver is whoever the organisation's approval policy names. On a remote-agent run this acts as block: there is no call to park.
blockThe call is refused with a typed error the agent relays to the person. A refusal on Restricted material opens an incident.

Provider limits

The other half of the policy caps the label a model provider may receive. A chunk above the cap is withheld at the read, the agent is told some material could not be used, and the run continues. Nothing is sent and then filtered; the content never moves.

The default

Every organisation starts with one org-scoped row: on web, browser, a2a and mcp_external, Confidential material waits for approval and Restricted material is refused. Internal and Public material is unaffected on every channel, and no provider limit is set. Because everything that existed before labels carries Internal, nothing that worked before changes until someone labels something.

The Data perimeter policy editor: six channels, each with 'above label โ†’ action' rule rows, and a provider limits section.
The seeded perimeter in the Policies console: one rule row per channel and label, plus provider limits.

Floors

Under ADR-030 a floored perimeter is a minimum a narrower scope may only tighten. Channel rules union across scopes, so a team can add a rule but never remove one; a provider limit takes the lower label of the two.

Two enforcement points, no more The perimeter acts at the read (withholding) and before the outbound call (redact / park / refuse). It never rewrites a definition, hides a tool from an agent or inspects content; those are the jobs of the allowlists and DLP.