{"id":12133,"date":"2021-04-19T12:59:25","date_gmt":"2021-04-19T07:29:25","guid":{"rendered":"https:\/\/www.allerin.com\/blog\/?p=12133"},"modified":"2026-10-13T15:33:33","modified_gmt":"2026-10-13T10:03:33","slug":"what-your-enterprise-ai-governance-plan-should-include","status":"publish","type":"post","link":"https:\/\/www.allerin.com\/blog\/what-your-enterprise-ai-governance-plan-should-include\/","title":{"rendered":"What Your Enterprise AI Governance Plan Should Include"},"content":{"rendered":"<p>An enterprise AI governance plan is only as good as the controls that run when a request arrives. Most plans are policy documents: principles, committees, a review cadence. They read well and enforce nothing. This post is for the engineers who end up running the controls, and it lists what the plan has to contain so that each line of policy maps to something in the platform that can refuse a request, cap a budget or write a record.<\/p>\n<h2>Start with a name and a place for every control<\/h2>\n<p>Each control in the plan needs an owner and an enforcement point. The owner is a person, not a council. The enforcement point is the component that applies the control at request time: the gateway, the budget service, the guardrail layer, the audit sink. If a control has no enforcement point, the plan should say so plainly and treat it as a gap, not a policy. A useful format is a control inventory with four columns: the control, who owns it, where it is enforced, and the evidence it produces.<\/p>\n<h2>One gateway in front of every model<\/h2>\n<p>Teams that call providers directly cannot be governed, only audited after the invoice. The plan should put one gateway between every application and every model provider, with keys issued per team rather than per developer. Routing policy lives there: which requests may use the expensive model, which go to the cheaper one, and which run on a self-hosted model because of the data they carry. So does provider fallback, so a cap or an outage degrades a feature instead of taking it down.<\/p>\n<h2>Hard budgets, not alerts<\/h2>\n<p>A budget that only alerts is a report. The plan should set a hard cap per team and per environment that returns an error when it is reached, with the alert as a warning on the way up. The spend incident that triggers most governance work is a weekend test script or a runaway agent; a hard cap turns that from a five-figure surprise into a failed job. Include the cached-input and output rates in the budget maths, because output tokens cost several times more than input on every current model.<\/p>\n<h2>Guardrails that block, with the evidence kept<\/h2>\n<p>Input and output guardrails belong in the request path, not in a prompt. The plan should list which checks run before a request reaches a model (data classes that may not leave, injection patterns) and which run on the way back (actions that need a human, outputs that may not be shown), and what happens when a check fails. Every block should leave a record, because the next question from security will be how often it happens.<\/p>\n<h2>What an agent may touch, and what it leaves behind<\/h2>\n<p>Agents that call tools against production systems need a permission model: which tools, which systems, which actions, and which of those need a person in the loop. The plan should write that model down per agent and enforce it in the tool layer rather than trusting the model to obey a system prompt. Alongside it, a per-action audit record: the input, the tool call, the output and the decision, kept somewhere an auditor or a customer can read. When a customer asks what your agent did with their data, this record is the answer; without it, the answer is a guess.<\/p>\n<h2>Model registration, evaluation and rollback<\/h2>\n<p>Models and prompts change, and a governance plan has to know which version served which request. That is model governance: registration, an evaluation set that gates releases, and a rollback that has been exercised rather than written. It is its own discipline and we cover it on the <a href=\"https:\/\/www.allerin.com\/services\/mlops-model-ops\">MLOps and model operations<\/a> page; the governance plan should reference that process rather than restate it.<\/p>\n<h2>Data boundaries<\/h2>\n<p>The plan should state, per data class, which models may receive it and where those models run. Regulated data may be allowed to reach a model in your own cloud region and never a vendor endpoint; public data may go anywhere. The gateway enforces the boundary, which is the only place it can be enforced consistently.<\/p>\n<h2>What to leave out<\/h2>\n<p>Leave out the ethics preamble, the maturity model and the framework crosswalk. They have their place in a board paper. In the plan the engineers run, every page should answer who, where, and what evidence. If a line cannot be turned into a control with an owner and an enforcement point, it is not governance yet.<\/p>\n<p>If you want this written for your platform, with the gateway, budgets, guardrails, agent permissions and data boundaries specified for the teams and providers you actually run, that is the <a href=\"https:\/\/www.allerin.com\/services\/ai-infrastructure-governance\">AI Infrastructure &amp; Governance Planning<\/a> engagement: two to three weeks, fixed scope, written by the engineers who then build it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An enterprise AI governance plan is only as good as the controls that run when a request arrives. Most plans are policy documents: principles, committees, a review cadence. They read&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[5,3],"tags":[1376],"class_list":["post-12133","post","type-post","status-publish","format-standard","hentry","category-ai","category-technology","tag-ai-governance"],"_links":{"self":[{"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/posts\/12133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/comments?post=12133"}],"version-history":[{"count":3,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/posts\/12133\/revisions"}],"predecessor-version":[{"id":14990,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/posts\/12133\/revisions\/14990"}],"wp:attachment":[{"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/media?parent=12133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/categories?post=12133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.allerin.com\/blog\/wp-json\/wp\/v2\/tags?post=12133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}