# How the switch is enforced

**Category:** [Turning AI off](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/categories/ai-opt-out)
**Updated:** 2026-10-04

## Enforced in the code path, not the interface

This matters if you have to explain the control to a reviewer.

Turning AI off does not simply hide buttons. Every call to an AI provider in the platform passes through a single check, and that check refuses when your workspace has opted out. Hiding a button would only cover the interface; the check covers everything.
### Including the paths with no interface

The same refusal applies to:

- **Scheduled jobs** — nightly and hourly work that would otherwise call a model.
- **Webhooks and Orchestration workflows** triggered by events in your workspace.
- **The public REST API.**
- **AI agent tools (MCP).**
- **Mobile apps.**

None of those render a page, so none of them could be covered by hiding a control.
### It fails closed

If the platform cannot confirm whether your workspace allows AI — a momentary database problem, say — it refuses the call rather than allowing it. A wrong "allow" would send your content to a model after you told us not to; a wrong "refuse" makes a feature briefly unavailable. The safer error is the one we take.

---

## Related Articles

- [Exactly what stops working](https://help.totalctrl.app/en-US/articles/ai-opt-out-what-stops)
- [Proving it: the audit record](https://help.totalctrl.app/en-US/articles/ai-opt-out-audit)
- [Turn AI off for your workspace](https://help.totalctrl.app/en-US/articles/ai-opt-out-overview)
- [Questions people ask before switching it off](https://help.totalctrl.app/en-US/articles/ai-opt-out-faq)

---
[← Back to TotalCtrl Help Center](https://help.totalctrl.app/en-US/)