> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omni.co/llms.txt
> Use this file to discover all available pages before exploring further.

# allow_ctes

> Controls whether the AI can generate CTEs (common table expressions) in its queries, based on user permission levels.

Controls whether the [Omni Agent](/ai/chat) and [Workbook Agent](/ai/queries) can generate CTEs (common table expressions) in their queries.

This setting only applies to AI-generated queries. Hand-written SQL is not affected by this setting.

<Warning>
  **Disabling CTEs is not recommended**. Omni's AI evals are not run in this mode, and CTEs are still governed by your model - they build on top of it, not around it. Turning off CTEs limits what the AI can generate, and Omni will not address reports of the AI failing to produce certain queries as a result.
</Warning>

## Syntax

```yaml theme={null}
ai_settings:
  allow_ctes: <always | never | not_for_restricted_queriers>
```

## Properties

<ParamField path="ai_settings" type="object">
  An object that contains various AI settings. See [`ai_settings`](/modeling/models/parameters/ai-settings) for more information.

  <Expandable title="ai_settings properties" defaultOpen="true">
    <ParamField path="allow_ctes" type="string" default="always">
      When the [Omni Agent](/ai/chat) and [Workbook Agent](/ai/queries) can generate CTEs in their queries. Does not apply to hand-written SQL.

      Must be one of the following:

      * `always` - **Default**. The AI can generate CTEs for all users, regardless of whether their role allows direct SQL access.
      * `never` - The AI cannot generate CTEs.
      * `not_for_restricted_queriers` - The AI can generate CTEs for all users with querying access except **Restricted Queriers**.
    </ParamField>
  </Expandable>
</ParamField>

## Examples

ai\_settings:
allow\_ctes: not\_for\_restricted\_queriers

````

```yaml title="Disable CTEs for all users"
ai_settings:
  allow_ctes: never
````

ai\_settings:
allow\_custom\_fields: not\_for\_restricted\_queriers
allow\_ctes: not\_for\_restricted\_queriers

```

See [`allow_custom_fields`](/modeling/models/parameters/ai-settings/allow-custom-fields) for more information.
```
