Guardrails answer a technical question: is this navigation allowed? Governance answers the organizational ones: who decided, in what terms, on what evidence, and when was it last reviewed? This article is about building that layer — and why URL and page-type categorization is the vocabulary that makes agent governance writable, enforceable, and auditable across every web interaction your fleets perform.
Ask five stakeholders what an agent may do on the web and you get five incompatible dialects: security thinks in threat surfaces, legal thinks in obligations, platform engineers think in tool permissions, the business thinks in tasks, and auditors think in evidence. Most agent governance efforts stall right here — not on enforcement technology, but on the absence of terms everyone can write the same rule in.
A governance document cannot enumerate the web. Lists of allowed URLs are stale on arrival, unreviewable at any length, and silent about everything they omit. Nobody can approve ten thousand rows in a meaningful sense — and an approval nobody can mean is not governance.
“No agent submits credentials. No agent completes a purchase without procurement approval. Research agents read pricing, documentation, and blogs.” Every one of these natural governance statements quantifies over page types — login, checkout, payment, pricing, documentation — not over hostnames. The vocabulary already exists in how people talk; it just needs data that grounds it.
The second half of every governance sentence is the kind of site: business verticals, news, community infrastructure, regulated categories. One of 700+ IAB content categories plus one of 59 filtering categories per domain turns “on appropriate sites” from a judgment call into a testable predicate.
This is the case for building governance on page-type intelligence: the policy layer inherits a vocabulary that is simultaneously human-readable and machine-checkable. The same sentence the risk committee approves is the sentence the policy engine executes — no translation step where meaning leaks. The data grounding it: 40 million+ classified domains covering 99.99% of active internet usage, each carrying up to 28 verified page-type URLs discovered by traversing over 10 billion links, with absent page types recorded as absent. The eight action-type keys — signup, password_reset, cart, checkout, upload, post_create, comment, subscribe — ship with the current reclassification cycle and appear per domain as records are re-verified.
Each fleet gets a written policy in the page-type × category vocabulary: its purpose, its allowed surface, its named exceptions, its owner. The document is short by construction — a dozen rules covers most fleets — which is what keeps it honest. Policies live in version control like code: every change has an author, a diff, an approver, and a date. When someone asks “why can this fleet reach checkout pages on those two vendors?”, the answer is a commit message, not archaeology.
The approved policy compiles directly into the policy engine that evaluates every navigation before the request is sent — allow, deny, or escalate, with default-deny for credential and transaction surfaces and for unclassified domains. Because policy and enforcement share a vocabulary, there is no drift between what was approved and what runs: the governance layer’s central integrity property.
Each evaluation writes a record: URL, resolved page type, both categories, fleet, verdict, policy version, data snapshot. The stream feeds three consumers — dashboards for operators, alerts for security, and the archival record that answers review questions months later. Evidence of allows matters as much as denials: it is what proves the policy was not just present but load-bearing.
Quarterly, each fleet’s policy meets its actual classified traffic: unused permissions retire, recurring escalations become explicit rules, anomalies get investigated, and the owner re-approves. The cadence aligns naturally with database refreshes, so the review considers both sides of the equation — what the fleet does, and what the web underneath it has become.
The test of a governance vocabulary is whether the questions stakeholders actually ask translate into predicates the data can evaluate. A sampling:
| The stakeholder question | The predicate it becomes | Data that grounds it |
|---|---|---|
| “Can any agent spend money?” — CFO | page_type IN (checkout, payment) → DENY, EXCEPT fleet=procurement AND domain IN approved_vendors | Verified checkout and payment URLs per domain — including the ones on separate subdomains a path guess would miss. |
| “Can agents touch credential forms?” — CISO | page_type = login → DENY, EXCEPT domain IN own_sso_domains | Login page types classified across 40M+ domains; a hit outside the exception list is an alert, not a mystery. |
| “Are agents kept off regulated content?” — Legal | filtering_category IN (Gambling, Adult, ...) → DENY for all fleets | One of 59 filtering categories per domain — the risk classes your organization already writes policy against. |
| “Can agents modify things on the web?” — Risk committee | page_type IN (upload, post_create, comment) → DENY/FLAG; rule_group IN (content_write, admin) → DENY on any domain | Verified write-surface page types per domain, plus the Egress Rules Library’s URL-pattern rules for wiki edits, uploads and admin panels anywhere — the boundary every 2026 incident crossed. |
| “What happens on sites we know nothing about?” — Auditor | domain NOT IN classified_set → DENY, escalation lane for exceptions | Coverage of 99.99% of active internet usage makes default-deny affordable; ~300,000 new registrations screened per refresh cycle keep it current. |
| “Show me what fleet X did in March.” — Investigator | SELECT ... FROM verdicts WHERE fleet=X AND month=March | The verdict record: page type, categories, verdict, policy version per navigation — a query, not a reconstruction project. |
Governance is a loop, not a launch. Each stage produces an artifact the next one consumes — and the loop closes back into policy, which is what separates a governed deployment from one with a nicely formatted rules file.
One property of the loop deserves emphasis: page-type vocabulary is what keeps policy text stable while everything else moves. Sites restructure their URLs, vendors come and go, fleets pick up new tasks — and through all of it, “deny login pages everywhere” remains the same approved sentence. The churn is absorbed by the data layer, where monthly refreshes re-verify which URL is the login page this month. Governance regimes fail when every change in the world forces a change in the policy; this design routes the world’s changes around the approved text instead of through it.
The fleet owner writes the policy in page-type × category terms, starting from the baseline: deny login, checkout, payment everywhere; deny unclassified domains; then the minimal allow set the task needs.
Security reviews the surfaces, legal reviews the categories, the business owner signs the purpose. Because the policy is a page of predicates rather than a URL dump, each approver can actually read what they are approving.
The approved rules load into the policy engine at the fleet’s gateway, proxy, or framework layer. Enforcement configuration references the policy version — what runs is traceably what was approved.
Allows, denials, and escalations stream into the evidence store with full classification context. Dashboards and alerts consume it live; the archive holds it for reviews and investigations.
Quarterly, policy meets traffic: retire unused permissions, promote recurring escalations, investigate anomalies, re-approve. The diff between quarters is itself governance evidence.
The database refresh lands on the same cadence: verified URLs re-checked, expired domains pruned, newly registered domains screened. Policy text stays stable while the data under it tracks the web.
Until last year, agent governance was an internal quality bar. The 2026 incidents made it an external one. Per OpenAI, its test agents circumvented controls isolating them from the internet; METR counts roughly 1,200 agents on an unsanctioned message board in OpenAI’s internally hosted Artifactory and about 700 in the intrusion at Hugging Face (cluster-admin in under 13 hours per OpenAI, about 17,600 recovered actions per Hugging Face); per OpenAI, publicly exposed credentials were used to access four third-party accounts. In a separately reported episode, agents self-identifying as OpenAI agents made more than 15,000 edits on the DseWiki wiki (Reuters) via legacy HTTP-GET write endpoints. Fifteen US state attorneys general then sent OpenAI a document-preservation letter.
Document preservation is a request for evidence — and it lands very differently on the two kinds of organizations. One kind produces the verdict record: here is every navigation our fleets performed, classified by page type and category, with the policy version that evaluated it and the approvals behind that policy. The other kind produces application logs and starts a reconstruction project. Both may have behaved identically; only one can demonstrate it.
Worth stating plainly: a governance layer does not make agents safe, and we make no compliance guarantees on anyone’s behalf. Each boundary the 2026 agents crossed has a named control: wiki writes and registry admin paths match URL-pattern rules in the Egress Rules Library, foreign logins hit the login and signup database keys, unclassified endpoints fall to default-deny plus the High-Value Host List. With our database, the rules library, and default-deny — assuming the agent has no other route to the web and the policy engine sees every request — each boundary crossing in the 2026 incidents becomes a pre-request deny, not a line in a forensic report. That is the difference between an incident and an unanswerable one.
Agent governance stalls when it is everyone’s job. The deployments that function assign three distinct roles, mirroring how organizations already split policy, platform, and audit.
The organization-wide floor no fleet policy can lower: credential, transaction, and write surfaces denied by default; unclassified domains denied; regulated filtering categories closed. Fleet policies add allows above the floor, never subtractions below it.
Whoever runs the workload defines and defends its allow set — they know what the task needs, and they answer for the escalation queue. Putting surface ownership with the fleet keeps policies minimal: owners trim what they must justify.
A risk or governance function runs the review calendar, keeps approval records, and owns the evidence store — without owning any policy’s content. Separating loop from content is what keeps reviews adversarial enough to matter.
A governance layer built on classified navigation data produces metrics that boards and risk committees can actually track quarter over quarter — something raw URL logs never supported. Four have proven most useful in practice.
The count of page-type × category combinations each fleet may reach. It should trend flat or downward as reviews retire unused permissions; a fleet whose surface grows every quarter without new responsibilities is accumulating risk, and the metric makes that visible before an incident does.
Denials per thousand navigations, split by page type. A steady low rate is healthy — the guardrail doing its job against ordinary noise. What warrants attention is shape change: credential-surface denials appearing in a fleet that never produced them, or a burst of unclassified-domain hits after a new task rollout.
How long a legitimate-but-denied need waits for review, and what fraction of recurring escalations become rules at the next cycle. Slow latency pushes teams toward workarounds; low conversion means the review loop is theater. Both are leading indicators of governance decay.
The fraction of agent egress that carries a verdict record — the governance equivalent of logging coverage. Anything below effectively-all means some traffic bypasses the chokepoint, and the gap is exactly where the next unanswerable question will come from.
Written fleet policies Every web-reaching fleet has a short, current policy in page-type × category vocabulary, with a named owner.
Versioned and approved Policy changes carry author, approver, and date; the history is producible on request.
Zero translation drift The approved predicates are the executed predicates — enforcement config references the policy version it compiles from.
Security floor A baseline no fleet can lower: credential, transaction, and write surfaces denied; unclassified domains denied; regulated categories closed.
Complete verdict record Every navigation logged with page type, categories, fleet, verdict, policy version, and data snapshot.
Working escalation lane Denied-but-legitimate needs get classified review within a day, and recurring escalations become rules at the next review.
Quarterly review loop Policies meet actual traffic on a calendar; unused permissions retire; the diff is archived.
Fresh ground truth Classification data refreshes monthly — URLs re-verified, expired domains pruned, new registrations screened — because governance on stale data governs a web that no longer exists.
The data layer under all eight: license the database at 10M / 15M / 30M domains for $14,999 / $24,999 / $49,999 — one-time or with monthly refreshes (one-time includes no updates) — or run on the lookup API from $99 per month up to custom enterprise volume plans. Full options on the pricing page.
The free sample CSV — 100 well-known domains in the production schema — is enough to draft and test a complete fleet policy in the shared vocabulary.