---
title: "Send a statement of reasons for every · Agent Wranglers"
url: https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/statement-of-reasons
id: TNS-22
level: Required
applies: user-content, eu-users
region: EU
risk: law
updated: 2026-10-27
build: a2a6bdfed830
tokens: 1164
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Send a statement of reasons for every restriction

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Decisions and appeals](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: TNS-22
- Level: Required
- Chapter: [Decisions and appeals](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals.md)
- Rule: Send the affected user a statement of reasons for every restriction you place on their content or account. That covers removal, blocking, demotion, hidden reach, cut payments, suspension and closure.
- Check: A test applies each restriction type in the policy table to a test account, including a demotion. Each creates one statement with the restriction, the ground, the automation fields and the appeal links. A search of the code for actions that lower reach finds none that skip the statement function.
- Risk: A law broken
- Applies when: The project hosts content that users post, or has users in the EU.
- Region: European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.
- How: Article 17 of the Digital Services Act applies to every hosting service, whatever started the decision. A quiet demotion or a hidden reply counts as much as a removal, so a shadow ban without a notice breaks the law. Send the statement when the restriction starts, to the contact details you hold. Build it from the [policy table](https://agentwranglers.se/playbook/trust-and-safety/reports-and-queues/policy-table.md) row and the decision record. Name the restriction, its scope and length, the facts, and whether a notice or your own search found it. Say whether automated means found or decided it. Give the legal or contract ground and the ways to appeal, including out-of-court bodies and the courts. Answers to notices are covered in [Take notices about illegal content and answer each one](https://agentwranglers.se/playbook/compliance/online-platforms/notice-and-action.md).

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
export async function restrict(decision) {
  await applyRestriction(decision);
  await statements.send(decision.userId, {
    restriction: decision.type, scope: decision.territory, until: decision.endsAt,
    facts: decision.facts, source: decision.source, automatedDetection: decision.automatedDetection,
    automatedDecision: decision.automatedDecision, ground: policyRow(decision.reason).ground, redress: REDRESS_LINKS,
  });
}
```

### Python example

```python
def restrict(decision):
    apply_restriction(decision)
    statements.send(decision.user_id, {
        "restriction": decision.type, "scope": decision.territory, "until": decision.ends_at,
        "facts": decision.facts, "source": decision.source, "automated_detection": decision.automated_detection,
        "automated_decision": decision.automated_decision, "ground": policy_row(decision.reason).ground,
        "redress": REDRESS_LINKS,
    })
```

## Sources

- [Digital Services Act Article 17](https://eur-lex.europa.eu/eli/reg/2022/2065/oj)

## Related rules

- TNS-2 [Write the moderation policy as one table of reasons and actions](https://agentwranglers.se/playbook/trust-and-safety/reports-and-queues/policy-table.md) in Trust and safety
- CMP-63 [Take notices about illegal content and answer each one](https://agentwranglers.se/playbook/compliance/online-platforms/notice-and-action.md) in Compliance and governance

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/statement-of-reasons">Agent Wranglers trust and safety playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Warn before you suspend and count every strike](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/strikes-and-suspensions.md)
- Next: [Hide removed content and keep it until appeals close](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/removed-content-hold.md)
- [Decisions and appeals](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals.md)
