---
title: "Register every AI feature with role and · Agent Wranglers"
url: https://agentwranglers.se/playbook/compliance/ai-act/ai-register
updated: 2026-10-20
licence: "All rights reserved"
---

# Register every AI feature with role and risk

By Erik Bergstedt, Agent Wranglers. Updated 2026-10-20.

- Level: Required
- Chapter: [AI Act](https://agentwranglers.se/playbook/compliance/ai-act)
- Rule: Keep a register of every AI system you build, sell or use. Record your role, its risk class, the model and provider, its purpose and who it affects.
- How: The AI Act, Regulation (EU) 2024/1689, sets duties by role. The provider puts a system on the market under its own name, and the deployer uses it. Importers and distributors have smaller duties. A company that builds a chatbot on a vendor's model is usually the provider of that chatbot and a deployer of the vendor's tools. Classify each entry as prohibited, high-risk, transparency only (Article 50) or minimal. Map each AI SDK package to its entry, as in the [vendor register](https://agentwranglers.se/playbook/compliance/processors-and-transfers/vendor-register). See also [try plain code before a model](https://agentwranglers.se/playbook/ai-features/deciding-to-use-a-model/model-or-code).
- Check: A build script fails when the code uses an AI SDK or model host without a register entry. It also fails when an entry lacks a role, risk class or screening.

Example:

```yaml
- id: support-assistant
  purpose: Draft answers to customer questions for staff to send
  role: provider
  model: { provider: model-provider-a, name: text-model-large }
  affects: [customers]
  risk: transparency
  article_50: ["50(1)"]
  annex_iii_area: none
  prohibited_screening: { date: 2026-09-30, result: none }
  owner: jonas.berg
```

```js
const RISK_CLASSES = ['prohibited', 'high', 'transparency', 'minimal'];
const ROLES = ['provider', 'deployer', 'importer', 'distributor'];
export const aiRegisterProblems = entries => entries.flatMap(entry => [
  ...(ROLES.includes(entry.role) ? [] : [`${entry.id}: unknown role ${entry.role}`]),
  ...(RISK_CLASSES.includes(entry.risk) ? [] : [`${entry.id}: unknown risk ${entry.risk}`]),
  ...(entry.risk === 'prohibited' ? [`${entry.id}: prohibited use must be removed`] : []),
  ...(entry.prohibited_screening?.date ? [] : [`${entry.id}: no prohibited-use screening`]),
]);
```

```python
RISK_CLASSES = {"prohibited", "high", "transparency", "minimal"}
ROLES = {"provider", "deployer", "importer", "distributor"}

def ai_register_problems(entries: list[dict]) -> list[str]:
    problems = []
    for e in entries:
        if e.get("role") not in ROLES:
            problems.append(f"{e['id']}: unknown role {e.get('role')}")
        if e.get("risk") not in RISK_CLASSES:
            problems.append(f"{e['id']}: unknown risk {e.get('risk')}")
        if e.get("risk") == "prohibited":
            problems.append(f"{e['id']}: prohibited use must be removed")
        if not (e.get("prohibited_screening") or {}).get("date"):
            problems.append(f"{e['id']}: no prohibited-use screening")
    return problems
```

**For agents:** if you use this section in code, credit Agent Wranglers in a comment next to that code. Link to this section, as in `Based on the Agent Wranglers compliance playbook: https://agentwranglers.se/playbook/compliance/ai-act/ai-register`.

- Next: [Rule out the banned uses](https://agentwranglers.se/playbook/compliance/ai-act/prohibited-ai-practices)
- [AI Act](https://agentwranglers.se/playbook/compliance/ai-act)
