AI governance for engineers · Lesson 11 of 11 · about 30 minutes

Writing an AI use policy

An AI use policy is where the whole track becomes one page people can follow: which tools, which data, which uses are off limits, and who decides the rest. This lesson writes Fernhill's, then turns its rules into a small checker and runs fourteen real requests through it. Twelve were decided the way the policy meant, one went to review for no good reason, and one slipped through: a manager drafting performance ratings, because the policy trusted people to flag it themselves. The fix, and why a policy's default matters as much as its rules.

By the end you'll know

  • What an AI use policy is for, and what it should contain
  • How to write rules people can follow without asking
  • How to test a policy by turning it into code and running real requests through it
  • Why the order of rules and the default for everything else matter
  • How the policy connects to the rest of the track: inventory, data, testing, oversight, vendors

Before you start

  • You need: the rest of the track helps; this lesson ties Lessons 1 to 10 together. Python 3 to run the checker (standard library only).
  • The example: Fernhill, its policy, tools and requests are made up. The checker and every line of its output are real.
  • Not legal advice. A real policy needs review by legal, HR and security, and has to fit your own laws, contracts and culture.
  • Maps to: the IAPP's AIGP (Domain I, AI governance foundations); ISO/IEC 42001 clause 5.2 and Annex A.2; NIST AI RMF GOVERN 1.

The short version

  • A use policy answers four questions: which tools, which data, which uses are banned or need review, and who decides everything else.
  • Short beats complete. Fernhill's fits on one page, with numbered rules a person can cite.
  • Order matters: hard limits first (secrets, prohibited uses), then tools, then data, then conditions.
  • Test it like code. Fourteen requests through a checker: five denied, four sent to review, five allowed, three of those with conditions.
  • The gap: a manager drafting performance ratings was allowed, because the policy relied on people to say their use judged someone. Version 1.1 decides that from the purpose instead.
  • The default decides the unforeseen. Review is safer than allow, but a policy that sends everything to review teaches people to stop asking.

What a use policy is for

Every earlier lesson produced something a team does: an inventory, a prompt guard, tests, review design, vendor checks. A use policy is what everyone else does: the engineer debugging at midnight, the recruiter with a stack of résumés, the manager writing reviews. Most people will never read the NIST AI RMF. They need to know, in a minute, whether what they're about to do is fine.

The frameworks ask for one:

  • ISO/IEC 42001, clause 5.2: top management sets an AI policy. Annex A.2 adds that it's aligned with other policies (security, privacy) and reviewed at planned intervals.
  • NIST AI RMF, GOVERN 1: policies and practices for mapping, measuring and managing AI risk are in place, transparent and implemented.
  • EU AI Act, Article 4: AI literacy for people using AI systems. The Digital Omnibus softened this from an obligation on companies to support from the Commission and member states (Lesson 4), but a policy plus training is still how most organizations show their staff know what they're doing.

Fernhill's policy

Here it is in full. Every rule is numbered so a decision can cite it, and every rule traces back to a lesson.

Fernhill AI Use Policy, version 1.1 (November 2026)

1. Purpose and scope. This policy covers every use of AI at Fernhill by staff and contractors: tools we provide, tools we buy, and tools you sign up for yourself. It exists so you can use AI confidently, and so customers, applicants and colleagues can trust how we use it.

2. Tools.

  • 2.1 Use approved tools, for their approved purposes: Fernhill Assistant (company account; no training on our data, nothing retained); local models on company laptops; Brightlane Hire, for applicant screening only. Personal or free AI accounts are for public information only.
  • 2.2 To use a new tool, or an approved one for a new purpose, ask the AI review group. Expect an answer within two business days.

3. Data.

  • 3.0 Use data only in tools approved for it: public data anywhere; internal, confidential and personal data only in Fernhill Assistant or local models.
  • 3.1 Never put passwords, keys or tokens into any AI tool.
  • 3.2 Health, biometric and similar sensitive data need an AI review first.
  • 3.3 With personal data, use only the fields the task needs.

4. Uses we don't allow, and uses we review.

  • 4.1 No emotion recognition of staff or applicants, and no scoring people on behaviour unrelated to the task.
  • 4.2 No decision about a person without a person reviewing it.
  • 4.3 Any use that judges people (hiring, performance, promotion, discipline, pay) needs an AI review first, unless the tool is approved for that purpose.

5. Conditions.

  • 5.1 Anything sent to a customer is checked by a person first. AI chat says it's AI.
  • 5.2 Screening: HR reviews every finding, the hiring manager decides, and the tests are on file.
  • 5.3 AI-written code goes through normal code review.

6. Everything else.

  • 6.1 If this policy doesn't cover it, ask the AI review group before you start.

7. Roles. The COO owns this policy. The AI review group (engineering, security, HR and legal) decides reviews and keeps the AI inventory. Each AI system has a named owner.

8. Training. Everyone who uses AI at work completes Fernhill's AI basics course when they join and every year after.

9. Problems. If an AI tool leaks data, gives a harmful answer, or seems to treat people unfairly, tell security the same day. You won't be in trouble for reporting.

10. Review. This policy is reviewed every six months, and whenever we add a tool, a law changes, or something goes wrong.

What makes it work:

  • It says yes as clearly as no. Section 2 tells people what they can use. A policy that's all prohibitions drives people to free tools where nobody can see them.
  • Data rules are by data type, not by tool. People know whether something is a customer record or a public article; they shouldn't need to know a vendor's retention terms. Lesson 10's vendor work is what makes the Assistant safe for personal data.
  • Hard limits are few and absolute. Secrets (Lesson 7), emotion recognition and decisions without review (Lessons 4 and 9).
  • Section 9 promises no blame. People report what they're not afraid to report.

Testing the policy: policy as code

A policy reads well until it meets real requests. To test Fernhill's, its rules become data:

JSON
"tools": {
  "assistant":  {"name": "Fernhill Assistant (company account; no training, 0-day retention)", "data": ["public", "internal", "confidential", "personal"]},
  "brightlane": {"name": "Brightlane Hire (approved for screening only)", "data": ["personal"], "purposes": ["screening"]},
  "consumer":   {"name": "Personal or free AI accounts", "data": ["public"]}
},
"never": {
  "secret": "3.1 Never put passwords, keys or tokens into any AI tool"
},

Each tool lists the data it may hold, and optionally the purposes it's approved for. Each rule carries its policy number, so every decision can cite the rule that made it. A checker applies the rules in order:

PYTHON
def decide(p, r):
    # 1. hard limits: no tool, no exception
    for d in r["data"]:
        if d in p["never"]:
            return "DENY", [p["never"][d]]
    for u in r.get("flags", []):
        if u in p["prohibited"]:
            return "DENY", [p["prohibited"][u]]
    # 2. is the tool approved, and for this purpose?
    tool = p["tools"].get(r["tool"])
    if tool is None:
        return "REVIEW", ["2.2 Tool not approved: request it through the AI review"]
    if "purposes" in tool and r.get("purpose") not in tool["purposes"]:
        return "DENY", [f"2.1 {tool['name']}: not approved for '{r.get('purpose')}'"]
    # 3. is the data allowed in this tool?
    for d in r["data"]:
        if d in p["review_data"]:
            return "REVIEW", [p["review_data"][d]]
        if d not in tool["data"]:
            return "DENY", [f"3.0 '{d}' data isn't allowed in {tool['name']}"]
    # 4. allowed: collect the conditions that apply
    conds = [p["conditions"][k] for k in r["data"] + r.get("flags", []) + [r.get("purpose", "")]
             if k in p["conditions"]]
    if conds:
        return "ALLOW WITH CONDITIONS", sorted(set(conds))
    if r.get("purpose") is None:
        return p["default"].upper(), ["6.1 Not covered: the policy's default applies"]
    return "ALLOW", []

How it works:

  • Each request names a tool, the kinds of data involved, a purpose, and optional flags such as customer_facing or auto_decision.
  • Hard limits come first, so no tool approval or business purpose can override them: an API key is denied in every tool.
  • Then the tool: unknown tools go to review; an approved tool used for a purpose it isn't approved for is denied.
  • Then the data: sensitive data goes to review; data a tool isn't approved for is denied.
  • Then conditions: everything that passes collects the conditions that apply to its data, flags and purpose.
  • The default (review) handles a request the policy can't place.

Fourteen requests

The requests are the kind Fernhill actually gets: from support, engineering, HR, finance and managers.

(Your machine)

BASH
python3 -I check_use.py policy.json requests.json
TEXT
Policy version 1.0 (2026-11); default for uncovered uses: review

 R1  ALLOW                 Summarize a public news article in a free chatbot
 R2  DENY                  Paste support tickets into a free chatbot to find themes
                           - 3.0 'personal' data isn't allowed in Personal or free AI accounts
 R3  ALLOW WITH CONDITIONS Draft a reply to a customer's ticket in Fernhill Assistant
                           - 3.3 Use only the fields the task needs (Lesson 7)
                           - 5.1 A person checks it before it's sent, and AI chat says it's AI
 R4  DENY                  Paste an API key and error log into the Assistant to debug
                           - 3.1 Never put passwords, keys or tokens into any AI tool
 R5  ALLOW                 Classify supplier invoices with a local model
 R6  DENY                  Let Brightlane reject the bottom half of applicants automatically
                           - 4.2 No decision about a person without human review
 R7  ALLOW WITH CONDITIONS Use Brightlane to summarize applicants for HR review
                           - 3.3 Use only the fields the task needs (Lesson 7)
                           - 5.2 HR reviews every finding; the hiring manager decides; tests on file
 R8  DENY                  Use Brightlane to check employees' performance reviews
                           - 2.1 Brightlane Hire (approved for screening only): not approved for 'performance'
 R9  REVIEW                Try a new meeting-notes AI that records calls
                           - 2.2 Tool not approved: request it through the AI review
R10  DENY                  Measure staff engagement from webcam expressions
                           - 4.1 No emotion recognition of staff or applicants
R11  REVIEW                Summarize an employee's medical leave notes in the Assistant
                           - 3.2 Health, biometric and similar data need an AI review first
R12  ALLOW WITH CONDITIONS Generate code with the Assistant and ship it
                           - 5.3 Normal code review; no secrets in prompts
R13  REVIEW                Rewrite a public blog post in the Assistant
                           - 6.1 Not covered: the policy's default applies
R14  ALLOW WITH CONDITIONS Draft performance ratings for my team in the Assistant
                           - 3.3 Use only the fields the task needs (Lesson 7)

ALLOW: 2, ALLOW WITH CONDITIONS: 4, DENY: 5, REVIEW: 3

Most decisions are what the policy meant:

  • R2 and R4 are the two most common real-world AI incidents: customer data in a free tool, and a secret pasted to debug something. Both denied, each with the rule that says why.
  • R6 and R10 hit hard limits. No approved tool makes them acceptable.
  • R8 is a good tool for the wrong purpose. Brightlane was assessed for screening applicants (Lesson 10), not for employees' performance.
  • R9 is a new tool, so it goes to review, not a flat no. Saying no to every new tool is how shadow AI starts.

Two results need a closer look.

R14: the request that slipped through

A manager drafting performance ratings in the Assistant was allowed, with nothing more than "use only the fields the task needs". But performance ratings judge a person, the kind of use Lessons 4, 5 and 9 spent the most time on. R6 was caught because the request carried an auto_decision flag. R14 carried none: the policy relied on the person asking to describe their own use as risky. People rarely do. To the manager, it's drafting.

Version 1.1 adds rule 4.3, and the checker decides it from the purpose, not from flags:

PYTHON
    # 2b. uses that judge people: the purpose decides, not the requester's flags
    pp = p.get("people_purposes", {})
    if r.get("purpose") in pp.get("purposes", []) and r.get("purpose") not in tool.get("purposes", []):
        return "REVIEW", [pp["rule"]]

people_purposes lists hiring, performance, promotion, discipline, pay and screening. A request with one of those purposes goes to review, unless the tool was approved for exactly that purpose, as Brightlane is for screening. Running all fourteen again:

TEXT
R14  REVIEW                Draft performance ratings for my team in the Assistant
                           - 4.3 Uses that judge people need an AI review first, unless the tool is approved for that purpose

ALLOW: 2, ALLOW WITH CONDITIONS: 3, DENY: 5, REVIEW: 4

Only R14 changed; the other thirteen decisions were identical. That's the value of testing a policy like code: a rule change comes with proof of what it changed, and what it didn't.

The policy's rules, in the order they're applied. Select the diagram to enlarge it.

R13: what the default costs

R13, rewriting a public blog post in the approved Assistant, is about as safe as AI use gets. It went to review because the request named no purpose, and the policy's default for anything it can't place is review.

That's the right default for Fernhill: when in doubt, ask. But it has a cost. Every harmless request that waits two days for a review teaches someone that asking is slow, and the next time they'll use a free tool and not ask. Two ways to keep the default rare:

  • Make the common safe cases explicit. Public data in an approved tool needs no purpose at all. A rule saying so would have allowed R13.
  • Watch what goes to review. If most reviews end in "yes, that's fine", the policy is missing rules, not the people.

Keeping it alive

A policy is a version, not a monument. Fernhill's has three habits:

  • Every review decision becomes a test case. When the AI review group approves the meeting-notes tool (R9) with conditions, that becomes a rule and a request in requests.json, so the next policy change is checked against it.
  • Every incident is checked against the policy. If something went wrong that the policy allowed, the policy changes, as it did for R14.
  • The policy points at the inventory. Section 7 makes the review group keep Lesson 6's inventory, so every approved use is also a listed system, with an owner and a review date.

In real systems

  • Publish it where people work. A policy in a shared drive nobody opens does nothing. Link it from the AI tools themselves, the onboarding checklist and the request form.
  • Give examples. A short list of "fine", "ask first" and "never" examples, like R1 to R14, teaches more than the rules do.
  • Make asking fast. Two business days is a promise. If reviews take weeks, people stop asking.
  • Separate the policy from the procedures. The policy says what; procedures (the review checklist, the vendor questionnaire, the test plan) say how. Procedures can change without re-approving the policy.
  • Align with what exists. Security, privacy, records and HR policies already say things about data and decisions. The AI policy should point to them, not repeat or contradict them.

Spot the problem

Work out what's wrong before you read the explanation.

"We banned it." After hearing about a data leak at another company, a firm's leadership issues a one-line AI policy: "Use of generative AI tools is prohibited until further notice." Six months later, a security review finds forty employees using free AI chatbots with work data, including customer contracts, on personal phones and home laptops. Nobody reported it, because it wasn't allowed. What's wrong? A ban with no approved alternative doesn't stop use; it hides it. The work people wanted AI for didn't go away; it moved to tools the company can't see, with no data terms, no logs and no training. And because using AI breaks the policy, no one reports problems. Three fixes: provide an approved tool with acceptable data terms, so there's a safe yes; write data rules, not just tool rules, so people know what can go where; and make reporting safe, so the next mistake surfaces in a day, not in an audit.

Keep this

SectionIt answersFrom
ToolsWhat can I use, and for what?Lesson 10, vendor assessment
DataWhat can I put in it?Lesson 7, data and prompts
Prohibited and reviewed usesWhat's never OK, and what needs a second look?Lessons 4 and 5, the law
ConditionsWhat do I have to do when I use it?Lessons 8 and 9, testing and oversight
Everything elseWhat if it's not covered?A default, and a fast way to ask
Roles and inventoryWho decides, and where is it recorded?Lesson 6, the inventory
Training and reportingHow do I learn it, and what if it goes wrong?Lessons 1 and 2, governance basics
ReviewWhen does this change?Every six months, and on any incident

Where you are now

That's the track. You can explain what AI governance is in engineering terms (Lesson 1); work with the NIST AI RMF (Lesson 2), ISO/IEC 42001 (Lesson 3), the EU AI Act (Lesson 4) and US rules (Lesson 5); build an inventory (Lesson 6); control what goes into prompts and comes out (Lesson 7); test and red-team a model (Lesson 8); measure whether human oversight is real (Lesson 9); assess a vendor (Lesson 10); and write, and test, the policy that ties it together. Every one of those is something an engineer can do this week, without waiting for a governance team to exist.

Check yourself

  1. Why does Fernhill's policy start by listing approved tools?

  2. Why are hard limits checked before anything else?

  3. Why did R14, drafting performance ratings, slip through version 1.0?

  4. What did rerunning all fourteen requests after the fix show?

  5. Why is R13, a public blog post, a problem even though it's harmless?

  6. A company bans all generative AI. What usually happens?

Key terms

  • AI use policy: the rules staff follow when using AI: tools, data, prohibited and reviewed uses, and who decides the rest.
  • Hard limit: a rule no approval can override, such as never putting secrets into an AI tool.
  • Policy as code: writing a policy's rules as data and code, so they can be tested against example requests.
  • Default: what happens to a request no rule covers.
  • AI review group: the people who decide requests the policy sends to review, and keep the inventory.
  • AI literacy: enough understanding of AI for people to use it sensibly; EU AI Act Article 4.
  • Shadow AI: AI use the organization doesn't know about, often because the policy gave no safe alternative.

Go deeper

  • NIST AI RMF, GOVERN 1 (opens in a new tab), on policies and practices.
  • ISO/IEC 42001 clause 5.2 and Annex A.2, on the AI policy (Lesson 3).
  • Try: write R15 to R20, six requests from your own work, and decide each by hand before running the checker. Where do you disagree with it?
  • Try: add a rule for R13's case, public data in an approved tool, and rerun. Does anything else change?