> This page is for Tools.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.moveworks.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.moveworks.com/_mcp/server.

# LLM Actions

# Overview

LLM Actions in Tool Studio provide built-in capabilities to leverage large language model (LLM) functionalities directly within your **[Compound Actions](/tool-studio/actions/compound-actions)** and **[Conversational Processes](/tool-studio/conversation-process)**. These actions enable tasks such as summarization, reasoning, classification, data extraction, and content generation, allowing you to build workflows without custom integrations.

This documentation focuses on two key LLM Actions: `generate_text_action` and `generate_structured_value_action`. These actions are designed to help you process unstructured data, generate insights, and structure outputs efficiently.

> **Security note**
>
> When you enable web search or file input, the model consumes untrusted content that may contain prompt-injection attacks. Before building flows that combine private data, untrusted content, and the ability to send data externally, read [Security: the lethal trifecta](#security-the-lethal-trifecta).

Model availability depends on your environment. Azure Government IL4/IL5 environments use the [IL4/IL5 model set](#azure-government-il4il5).

# Image and File Inputs

Both `generate_text_action` and `generate_structured_value_action` accept `image` and `file` inputs. Each must be a `File` object retrieved via a [File Slot](/tool-studio/conversation-process/slots/file-slots) in a Conversational Process. For supported formats and size limits, see [Supported file types](#supported-file-types) and the [File Input Limitations](#supported-file-types) callout. For best results, we recommend using `gpt-5` or newer.

`image` and `file` can be used **at the same time** in a single request, and either parameter can accept multiple files. To pass multiple files, supply a list of `File` objects — either from a single `List[File]` slot, or assembled from separate `File` slots:

```yaml
image: data.images   # e.g. a single List[File] slot
file: [data.contract, data.addendum]  # e.g. mapped from two separate File slots
```

If a single `List[File]` slot contains a mix of images and other files, route each item to the correct parameter by matching on the file extension. The example below sends image files to `image` and everything else to `file`:

```yaml
# Attachments whose name ends in an image extension go to `image`
image: data.attachments.$FILTER((item) => item.file_name.$MATCH('\.(png|jpg|jpeg|gif|webp)$', true).$LENGTH() > 0)
# All other attachments go to `file`
file: data.attachments.$FILTER((item) => item.file_name.$MATCH('\.(png|jpg|jpeg|gif|webp)$', true).$LENGTH() == 0)
```

# generate_text_action

### Description

The `generate_text_action` invokes an LLM to produce free-form text output based on user-provided input. This action is ideal for tasks requiring natural language generation, such as summarizing documents, generating responses, or performing step-by-step reasoning.
Use this action when you need unstructured text results, like drafting emails, explaining concepts, or brainstorming ideas.

### Input Parameters

| Field                        | Type                 | Required           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| :--------------------------- | :------------------- | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `system_prompt`              | `string`             | :x:                | Defines the model's behavior or instructions. For example, "Act as a helpful assistant that summarizes technical articles."                                                                                                                                                                                                                                                                                                                                                                                                         |
| `user_input`                 | `string`             | :white_check_mark: | The primary context or query for the LLM to process.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `image`                      | `List[File] or File` | :x:                | An image file to include as visual input for the LLM. Must be a `File` object retrieved via a [File Slot](/tool-studio/conversation-process/slots/file-slots) in a Conversational Process. Supported formats: PNG, JPEG/JPG, WEBP, non-animated GIF. See the [Model Reference](#model-reference) for image-capable models. For best results, we recommend using `gpt-5` or newer.                                                                                                                                                   |
| `file`                       | `List[File] or File` | :x:                | A document, spreadsheet, presentation, or text/code file to include as input for the LLM. Must be a `File` object retrieved via a [File Slot](/tool-studio/conversation-process/slots/file-slots) in a Conversational Process. See [Supported file types](#supported-file-types) for the full list of accepted formats, the [File Input Limitations](#supported-file-types) callout for size constraints, and the [Model Reference](#model-reference) for compatible models. For best results, we recommend using `gpt-5` or newer. |
| `model`                      | `string`             | :x:                | Specifies the LLM model to use. Choose a model from the [Model Reference](#model-reference) for your environment. Outside IL4/IL5, the default is `gpt-5.4-mini`. In IL4/IL5, set `model` explicitly to a [supported model](#azure-government-il4il5).                                                                                                                                                                                                                                                                              |
| `temperature`                | `number`             | :x:                | Control the randomness of the output. Higher values will make the output more random, while lower values will make it more focused and deterministic                                                                                                                                                                                                                                                                                                                                                                                |
| `reasoning_effort`           | `string`             | :x:                | Optional reasoning effort argument. Can be set to one of "minimal" (only `gpt-5` models), `"low"`, `"medium"`, or `"high"`. Must be left empty for non-reasoning models such as `gpt-4.1`.                                                                                                                                                                                                                                                                                                                                          |
| `enable_web_search`          | `boolean`            | :x:                | Enables the live web search tool, allowing the model to retrieve current information from the web and include it in the model's context rather than relying only on the model's base knowledge. When neither `web_search_allowed_domains` nor `web_search_blocked_domains` is provided, there are no restrictions on what the model can search. Supported on all models **except** `gpt-5` models with `reasoning_effort` set to `minimal`. Defaults to `false`.                                                                    |
| `web_search_allowed_domains` | `List[str]`          | :x:                | Optional. Limit live web search results to these domains (up to 100), e.g. `["openai.com"]`. Omit the `http(s)` prefix; subdomains are included. Providing this enables web search automatically.                                                                                                                                                                                                                                                                                                                                   |
| `web_search_blocked_domains` | `List[str]`          | :x:                | Optional. Exclude these domains (up to 100) from live web search results, e.g. `["reddit.com"]`. Omit the `http(s)` prefix; subdomains are included. Providing this enables web search automatically.                                                                                                                                                                                                                                                                                                                               |

### Output

| Field              | Type     | Description                      |
| :----------------- | :------- | :------------------------------- |
| `generated_output` | `string` | The LLM-generated text response. |

> **Info**
>
> If the model refuses the request or the generation is incomplete, `generated_output` may be returned as `null`.

### Usage Examples

Here are practical examples demonstrating various LLM abilities. Each includes a sample request schema for integration into a Compound Action.

#### Example 1: Text Summarization

Summarize a lengthy article or user query into a concise overview.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Summarize the following text in 3-5 bullet points, focusing on key takeaways.'''
      user_input: data.article_content  # e.g., a long blog post fetched from an API
      model: '''gpt-5.4-mini'''
    output_key: summary_output
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Summarize the following text in 3-5 bullet points, focusing on key takeaways.'''
user_input: data.article_content  # e.g., a long blog post fetched from an API
model: '''gpt-5.4-mini'''
```

#### Example 2: Content Generation

Generate creative or instructional content, such as drafting a user email.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Write a professional email response based on the user's complaint.'''
      user_input: data.user_complaint  # e.g., "My order is delayed by two weeks."
    output_key: email_draft
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Write a professional email response based on the user's complaint.'''
user_input: data.user_complaint  # e.g., "My order is delayed by two weeks."
```

#### Example 3: Step-by-Step Reasoning

Guide the LLM through logical reasoning for problem-solving.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Solve the problem step by step, explaining your reasoning.'''
      user_input: '''What is the next number in the sequence: 2, 4, 8, 16?'''
      reasoning_effort: '''high'''	
			model: '''gpt-5-2025-08-07'''
    output_key: reasoning_output
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Solve the problem step by step, explaining your reasoning.'''
user_input: '''What is the next number in the sequence: 2, 4, 8, 16?'''
reasoning_effort: '''high'''	
model: '''gpt-5-2025-08-07'''
```

#### Example 4: Image OCR

Extract text from an uploaded image, such as a receipt. The `image` parameter maps to a `File` object collected via a [File Slot](/tool-studio/conversation-process/slots/file-slots).

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Extract all text from the provided image exactly as it appears.'''
      user_input: '''Extract the text from this receipt image.'''
      image: data.receipt
      model: '''gpt-4o'''
    output_key: ocr_output
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Extract all text from the provided image exactly as it appears.'''
user_input: '''Extract the text from this receipt image.'''
image: data.receipt
model: '''gpt-4o'''
```

#### Example 5: Document Q\&A

Answer a question against an uploaded document, such as a PDF policy. The `file` parameter maps to a `File` object collected via a [File Slot](/tool-studio/conversation-process/slots/file-slots).

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Answer the user's question using only the content of the attached document.'''
      user_input: '''What is the reimbursement limit described in this policy?'''
      file: data.policy_document
      model: '''gpt-4o'''
    output_key: document_answer
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Answer the user's question using only the content of the attached document.'''
user_input: '''What is the reimbursement limit described in this policy?'''
file: data.policy_document
model: '''gpt-4o'''
```

#### Example 6: Comparing Multiple Documents

Pass more than one file in a single call by mapping the `file` parameter to a list of `File` objects. This requires a `List[File]` slot so the user can attach multiple documents.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_text_action
    input_args:
      system_prompt: '''Compare the two attached documents and summarize the key differences.'''
      user_input: '''What changed between these two contract versions?'''
      file: [data.pdf1, data.pdf2]
      model: '''gpt-5.4'''
    output_key: comparison_output
```

**`Conversational Process`**

```yaml Conversational Process
system_prompt: '''Compare the two attached documents and summarize the key differences.'''
user_input: '''What changed between these two contract versions?'''
file: [data.pdf1, data.pdf2]
model: '''gpt-5.4'''
```

---

# generate_structured_value_action

### Description

The `generate_structured_value_action` calls an LLM to extract or generate data in a predefined structured format (JSON schema). This is particularly useful for classification, entity extraction, or transforming unstructured input into queryable data.

Apply this action for tasks where output consistency is critical, such as tagging content, extracting key-value pairs, or categorizing user inputs.

### Input Parameters

| Field                        | Type                 | Required           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| :--------------------------- | :------------------- | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload`                    | `object`             | :white_check_mark: | The data or text to analyze.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `output_schema`              | `object`             | :white_check_mark: | JSON Schema defining the expected output structure.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `system_prompt`              | `string`             | :x:                | Defines the model's behavior or instructions. For example, "Act as a helpful assistant that summarizes technical articles."                                                                                                                                                                                                                                                                                                                                                                                                         |
| `image`                      | `List[File] or File` | :x:                | An image file to include as visual input for the LLM. Must be a `File` object retrieved via a [File Slot](/tool-studio/conversation-process/slots/file-slots) in a Conversational Process. Supported formats: PNG, JPEG/JPG, WEBP, non-animated GIF. See the [Model Reference](#model-reference) for image-capable models. For best results, we recommend using `gpt-5` or newer.                                                                                                                                                   |
| `file`                       | `List[File] or File` | :x:                | A document, spreadsheet, presentation, or text/code file to include as input for the LLM. Must be a `File` object retrieved via a [File Slot](/tool-studio/conversation-process/slots/file-slots) in a Conversational Process. See [Supported file types](#supported-file-types) for the full list of accepted formats, the [File Input Limitations](#supported-file-types) callout for size constraints, and the [Model Reference](#model-reference) for compatible models. For best results, we recommend using `gpt-5` or newer. |
| `model`                      | `string`             | :x:                | Specifies the LLM model to use. Choose a model from the [Model Reference](#model-reference) for your environment. Outside IL4/IL5, the default is `gpt-5.4-mini`. In IL4/IL5, set `model` explicitly to a [supported model](#azure-government-il4il5).                                                                                                                                                                                                                                                                              |
| `strict`                     | `string`             | :x:                | Enforces schema adherence. Defaults to `false`; can be either `true` or `false`.                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `output_schema_name`         | `string`             | :x:                | LLM-facing name for the schema (defaults to `extracted_value`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `output_schema_description`  | `string`             | :x:                | Description of the schema for the LLM.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `reasoning_effort`           | `string`             | :x:                | Optional reasoning effort argument. Can be set to one of "minimal" (only `gpt-5` models), `"low"`, `"medium"`, or `"high"`. Must be left empty for non-reasoning models such as `gpt-4.1`.                                                                                                                                                                                                                                                                                                                                          |
| `enable_web_search`          | `boolean`            | :x:                | Enables the live web search tool, allowing the model to retrieve current information from the web and include it in the model's context rather than relying only on the model's base knowledge. When neither `web_search_allowed_domains` nor `web_search_blocked_domains` is provided, there are no restrictions on what the model can search. Supported on all models **except** `gpt-5` models with `reasoning_effort` set to `minimal`. Defaults to `false`.                                                                    |
| `web_search_allowed_domains` | `List[str]`          | :x:                | Optional. Limit live web search results to these domains (up to 100), e.g. `["openai.com"]`. Omit the `http(s)` prefix; subdomains are included. Providing this enables web search automatically.                                                                                                                                                                                                                                                                                                                                   |
| `web_search_blocked_domains` | `List[str]`          | :x:                | Optional. Exclude these domains (up to 100) from live web search results, e.g. `["reddit.com"]`. Omit the `http(s)` prefix; subdomains are included. Providing this enables web search automatically.                                                                                                                                                                                                                                                                                                                               |

> **️ \`additionalProperties: false\` must always be set in objects.**
>
> `additionalProperties` controls whether it is allowable for an object to contain additional keys / values that were not defined in the JSON Schema.

### Output

| Field              | Type     | Description                                   |
| :----------------- | :------- | :-------------------------------------------- |
| `generated_output` | `object` | Structured data matching the provided schema. |

> **Info**
>
> If the model refuses the request or the generation is incomplete, `generated_output` may be returned as `null`.

### Usage Examples

Examples illustrate extraction, classification, and more. Include request schemas for easy implementation.

#### Example 1: Topic Classification (Existing Example, Expanded)

Classify a research abstract into predefined topics.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_structured_value_action
    input_args:
      payload: data.research_paper_abstract
      system_prompt: '''Given a research paper abstract and a list of topic options, output up to 5 topics that accurately apply to the paper.'''
      output_schema: >-
        {
            "type": "object",
            "properties": {
                "topic_tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": data.topic_tag_options  # e.g., ["AI", "ML", "NLP"]
                    }
                }
            },
            "required": ["topic_tags"],
            "additionalProperties": false
        }
      strict: true
    output_key: classified_topics
```

**`Conversational Process`**

```yaml Conversational Process
payload: data.research_paper_abstract
system_prompt: '''Given a research paper abstract and a list of topic options, output up to 5 topics that accurately apply to the paper.'''
output_schema: >-
    {
        "type": "object",
        "properties": {
            "topic_tags": {
                "type": "array",
                "items": {
                    "type": "string",
                    "enum": data.topic_tag_options  # e.g., ["AI", "ML", "NLP"]
                }
            }
        },
        "required": ["topic_tags"],
        "additionalProperties": false
    }
strict: true
```

##### Expected Output

```json
generated_output: {
  "topic_tags": ["LLM Capabilities", "Reinforcement Learning (RL)", "Reasoning"]
}
```

#### Example 2: Entity Extraction

Extract named entities like names, dates, and locations from text.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_structured_value_action
    input_args:
      payload: data.user_message  # e.g., "John Doe will arrive in New York on October 15, 2025."
      system_prompt: '''Extract entities such as persons, locations, and dates from the text.'''
      output_schema: >-
        {
            "type": "object",
            "properties": {
                "persons": {"type": "array", "items": {"type": "string"}},
                "locations": {"type": "array", "items": {"type": "string"}},
                "dates": {"type": "array", "items": {"type": "string"}}
            },
            "required": ["persons", "locations", "dates"],
            "additionalProperties": false
        }
      reasoning_effort: '''low'''
			model: '''gpt-5-2025-08-07'''
    output_key: extracted_entities
```

**`Conversational Process`**

```yaml Conversational Process
payload: data.user_message  # e.g., "John Doe will arrive in New York on October 15, 2025."
system_prompt: '''Extract entities such as persons, locations, and dates from the text.'''
output_schema: >-
    {
        "type": "object",
        "properties": {
            "persons": {"type": "array", "items": {"type": "string"}},
            "locations": {"type": "array", "items": {"type": "string"}},
            "dates": {"type": "array", "items": {"type": "string"}}
        },
        "required": ["persons", "locations", "dates"],
        "additionalProperties": false
    }
reasoning_effort: '''low'''
model: '''gpt-5-2025-08-07'''
```

##### Expected Output

```json
generated_output: {
  "persons": ["John Doe"],
  "locations": ["New York"],
  "dates": ["October 15, 2025"]
}
```

#### Example 3: Sentiment Classification

Classify text sentiment with confidence scores.

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_structured_value_action
    input_args:
      payload: data.customer_review
      system_prompt: '''Analyze the sentiment of the review and output the category with a confidence score.'''
      output_schema: >-
        {
            "type": "object",
            "properties": {
                "sentiment": {
                    "type": "string",
                    "enum": ["positive", "negative", "neutral"]
                },
                "confidence": {"type": "number"}
            },
            "required": ["sentiment", "confidence"],
            "additionalProperties": false
        }
    output_key: sentiment_analysis
```

**`Conversational Process`**

```yaml Conversational Process
payload: data.customer_review
system_prompt: '''Analyze the sentiment of the review and output the category with a confidence score.'''
output_schema: >-
    {
        "type": "object",
        "properties": {
            "sentiment": {
                "type": "string",
                "enum": ["positive", "negative", "neutral"]
            },
            "confidence": {"type": "number"}
        },
        "required": ["sentiment", "confidence"],
        "additionalProperties": false
    }
```

##### Expected Output

```json
generated_output: {
  "sentiment": "positive",
  "confidence": 0.85
}
```

#### Example 4: Structured Extraction from an Image

Extract structured fields from an uploaded image, such as a receipt. The `image` parameter maps to a `File` object collected via a [File Slot](/tool-studio/conversation-process/slots/file-slots).

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_structured_value_action
    input_args:
      payload: '''Extract the merchant, total amount, and date from this receipt.'''
      image: data.receipt
      system_prompt: '''Extract structured expense details from the provided receipt image.'''
      output_schema: >-
        {
            "type": "object",
            "properties": {
                "merchant": {"type": "string"},
                "total_amount": {"type": "number"},
                "date": {"type": "string"}
            },
            "required": ["merchant", "total_amount", "date"],
            "additionalProperties": false
        }
      model: '''gpt-4o'''
    output_key: receipt_details
```

**`Conversational Process`**

```yaml Conversational Process
payload: '''Extract the merchant, total amount, and date from this receipt.'''
image: data.receipt
system_prompt: '''Extract structured expense details from the provided receipt image.'''
output_schema: >-
    {
        "type": "object",
        "properties": {
            "merchant": {"type": "string"},
            "total_amount": {"type": "number"},
            "date": {"type": "string"}
        },
        "required": ["merchant", "total_amount", "date"],
        "additionalProperties": false
    }
model: '''gpt-4o'''
```

##### Expected Output

```json
generated_output: {
  "merchant": "Blue Bottle Coffee",
  "total_amount": 12.50,
  "date": "2025-10-15"
}
```

#### Example 5: Structured Extraction from a Document

Extract structured fields from an uploaded document, such as a PDF invoice. The `file` parameter maps to a `File` object collected via a [File Slot](/tool-studio/conversation-process/slots/file-slots).

**`YAML - Compound Action`**

```yaml YAML - Compound Action
- action:
    action_name: mw.generate_structured_value_action
    input_args:
      payload: '''Extract the invoice number, vendor, and amount due from this invoice.'''
      file: data.invoice_document
      system_prompt: '''Extract structured invoice details from the attached document.'''
      output_schema: >-
        {
            "type": "object",
            "properties": {
                "invoice_number": {"type": "string"},
                "vendor": {"type": "string"},
                "amount_due": {"type": "number"}
            },
            "required": ["invoice_number", "vendor", "amount_due"],
            "additionalProperties": false
        }
      model: '''gpt-4o'''
    output_key: invoice_details
```

**`Conversational Process`**

```yaml Conversational Process
payload: '''Extract the invoice number, vendor, and amount due from this invoice.'''
file: data.invoice_document
system_prompt: '''Extract structured invoice details from the attached document.'''
output_schema: >-
    {
        "type": "object",
        "properties": {
            "invoice_number": {"type": "string"},
            "vendor": {"type": "string"},
            "amount_due": {"type": "number"}
        },
        "required": ["invoice_number", "vendor", "amount_due"],
        "additionalProperties": false
    }
model: '''gpt-4o'''
```

##### Expected Output

```json
generated_output: {
  "invoice_number": "INV-2025-0042",
  "vendor": "Acme Supplies Inc.",
  "amount_due": 1450.00
}
```

---

# Model Reference

## Azure Government IL4/IL5

In Azure Government IL4 and IL5 environments, LLM Actions support only these models:

* `gpt-4.1`
* `gpt-4.1-mini`
* `gpt-5.6-sol`
* `gpt-5.6-terra`
* `gpt-5.6-luna`

This model set applies to both `generate_text_action` and `generate_structured_value_action`.

For IL4/IL5, set `model` explicitly to a supported value in each example you use. For example:

```yaml
model: '''gpt-4.1-mini'''
```

## Models Outside IL4/IL5

The following table applies to environments outside IL4/IL5. Availability includes supported model aliases and their dated versions. Your organization's provider settings can restrict this availability.

<table>
  <thead>
    <tr>
      <th rowspan="2">
        Model
      </th>

      <th colspan="5">
        Capabilities
      </th>

      <th colspan="2">
        OpenAI Direct
      </th>

      <th colspan="4">
        Azure OpenAI
      </th>
    </tr>

    <tr>
      <th>
        Context
      </th>

      <th>
        Max Output
      </th>

      <th>
        Reasoning Effort
      </th>

      <th>
        Live Search
      </th>

      <th>
        Image & File Input
      </th>

      <th>
        US
      </th>

      <th>
        EU
      </th>

      <th>
        US
      </th>

      <th>
        EU
      </th>

      <th>
        CA
      </th>

      <th>
        AU
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        gpt-5.6-sol-2026-07-09
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.6-sol
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.6-terra-2026-07-09
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.6-terra
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.6-luna-2026-07-09
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.6-luna
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.5-2026-04-23
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.5-2026-04-24
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.5
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.4-2026-03-05
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.4
      </td>

      <td>
        1.05M
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.4-mini-2026-03-17
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.4-mini
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.2-2025-12-11
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.2
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.1-2025-11-13
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-5.1
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-5-2025-08-07
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5-mini-2025-08-07
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5-mini
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5-nano-2025-08-07
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-5-nano
      </td>

      <td>
        400K
      </td>

      <td>
        128K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o4-mini-2025-04-16
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o4-mini
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-4.1-2025-04-14
      </td>

      <td>
        1M
      </td>

      <td>
        32K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-4.1
      </td>

      <td>
        1M
      </td>

      <td>
        32K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>
    </tr>

    <tr>
      <td>
        gpt-4.1-mini-2025-04-14
      </td>

      <td>
        1M
      </td>

      <td>
        32K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-4.1-mini
      </td>

      <td>
        1M
      </td>

      <td>
        32K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o3-2025-04-16
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o3
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o1-2024-12-17
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        o1
      </td>

      <td>
        200K
      </td>

      <td>
        100K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-4o-2024-11-20
      </td>

      <td>
        128K
      </td>

      <td>
        16K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>

    <tr>
      <td>
        gpt-4o
      </td>

      <td>
        128K
      </td>

      <td>
        16K
      </td>

      <td>
        —
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        ✓
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>

      <td>
        —
      </td>
    </tr>
  </tbody>
</table>

The Context and Max Output columns show model token limits. `generate_structured_value_action` caps output at 16,384 tokens, including reasoning tokens.

> **Live Search**
>
> Live Search is enabled per call with the `enable_web_search` argument. It is available on all models **except** `gpt-5` models with `reasoning_effort` set to `minimal`.

> **Image Input Limitations**
>
> Images must be supplied as a `File` object via a [File Slot](/tool-studio/conversation-process/slots/file-slots), which enforces a maximum file size of **5MB** — files exceeding this limit will fail to upload. Supported image formats: PNG, JPEG/JPG, WEBP, and non-animated GIF. For best results, we recommend using `gpt-5` or newer.

> **File Input Limitations**
>
> Files must be supplied as a `File` object via a [File Slot](/tool-studio/conversation-process/slots/file-slots), which enforces a maximum file size of **5MB** — files exceeding this limit will fail to upload.
>
> The combined size of all images and files in a single action call must stay under **\~11 MB** of raw file content (16 MiB encoded, enforced by the platform). As a rule of thumb, keep individual files under \~5 MB and prefer fewer, smaller attachments.
>
> For PDFs, both the text and page images are extracted by vision-capable models such as `gpt-4o` and later. For non-PDF documents, only the extracted text is passed to the model — embedded charts and images are not included. Note that large PDFs also consume model context — every page contributes both text and image tokens — so very long documents may exceed the model's context window even when they fit the size limit. For best results, we recommend using `gpt-5` or newer.

#### Supported file types

The `file` parameter accepts the following file types:

| Category       | Extensions                                                                                                                                                                                                                                                                                                                                                   | MIME types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| PDF files      | `.pdf`                                                                                                                                                                                                                                                                                                                                                       | `application/pdf`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Spreadsheets   | Excel sheets (`.xla`, `.xlb`, `.xlc`, `.xlm`, `.xls`, `.xlsx`, `.xlt`, `.xlw`)                                                                                                                                                                                                                                                                               | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-excel`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Spreadsheets   | CSV / TSV / IIF (`.csv`, `.tsv`, `.iif`), Google Sheets                                                                                                                                                                                                                                                                                                      | `text/csv`, `application/csv`, `text/tsv`, `text/x-iif`, `application/x-iif`, `application/vnd.google-apps.spreadsheet`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Rich documents | Word / ODT / RTF docs (`.doc`, `.docx`, `.dot`, `.odt`, `.rtf`), Pages, Google Docs                                                                                                                                                                                                                                                                          | `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/msword`, `application/rtf`, `text/rtf`, `application/vnd.oasis.opendocument.text`, `application/vnd.apple.pages`, `application/vnd.google-apps.document`, `application/vnd.apple.iwork`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Presentations  | PowerPoint slides (`.pot`, `.ppa`, `.pps`, `.ppt`, `.pptx`, `.pwz`, `.wiz`), Keynote, Google Slides                                                                                                                                                                                                                                                          | `application/vnd.openxmlformats-officedocument.presentationml.presentation`, `application/vnd.ms-powerpoint`, `application/vnd.apple.keynote`, `application/vnd.google-apps.presentation`, `application/vnd.apple.iwork`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Text and code  | Text / code formats (`.asm`, `.bat`, `.c`, `.cc`, `.conf`, `.cpp`, `.css`, `.cxx`, `.def`, `.dic`, `.eml`, `.h`, `.hh`, `.htm`, `.html`, `.ics`, `.ifb`, `.in`, `.js`, `.json`, `.ksh`, `.list`, `.log`, `.markdown`, `.md`, `.mht`, `.mhtml`, `.mime`, `.mjs`, `.nws`, `.pl`, `.py`, `.rst`, `.s`, `.sql`, `.srt`, `.text`, `.txt`, `.vcf`, `.vtt`, `.xml`) | application/javascript, application/typescript, text/xml, text/x-shellscript, text/x-rst, text/x-makefile, text/x-lisp, text/x-asm, text/vbscript, text/css, message/rfc822, application/x-sql, application/x-scala, application/x-rust, application/x-powershell, text/x-diff, text/x-patch, application/x-patch, text/plain, text/markdown, text/x-java, text/x-script.python, text/x-python, text/x-c, text/x-c++, text/x-golang, text/html, text/x-php, application/x-php, application/x-httpd-php, application/x-httpd-php-source, text/x-ruby, text/x-sh, text/x-bash, application/x-bash, text/x-zsh, text/x-tex, text/x-csharp, application/json, text/x-typescript, text/javascript, text/x-go, text/x-rust, text/x-scala, text/x-kotlin, text/x-swift, text/x-lua, text/x-r, text/x-R, text/x-julia, text/x-perl, text/x-objectivec, text/x-objectivec++, text/x-erlang, text/x-elixir, text/x-haskell, text/x-clojure, text/x-groovy, text/x-dart, text/x-awk, application/x-awk, text/jsx, text/tsx, text/x-handlebars, text/x-mustache, text/x-ejs, text/x-jinja2, text/x-liquid, text/x-erb, text/x-twig, text/x-pug, text/x-jade, text/x-tmpl, text/x-cmake, text/x-dockerfile, text/x-gradle, text/x-ini, text/x-properties, text/x-protobuf, application/x-protobuf, text/x-sql, text/x-sass, text/x-scss, text/x-less, text/x-hcl, text/x-terraform, application/x-terraform, text/x-toml, application/x-toml, application/graphql, application/x-graphql, text/x-graphql, application/x-ndjson, application/json5, application/x-json5, text/x-yaml, application/toml, application/x-yaml, application/yaml, text/x-astro, text/srt, application/x-subrip, text/x-subrip, text/vtt, text/x-vcard, text/calendar |

\


# Security: the lethal trifecta

Features like web search and file input make LLM Actions far more powerful, but they also expand what an attacker can attempt through **prompt injection** — malicious instructions hidden inside content the model reads (a web page returned by search, an uploaded PDF, a spreadsheet cell, or an API response). While mechanisms such as the [Instruction Hierarchy](https://arxiv.org/abs/2404.13208) exist to help a large language model differentiate instructions written by the agent developer (highest privilege), the end user (medium privilege), and the tool output data it is processing (lowest privilege), at scale these are not perfectly reliable — any untrusted content should be treated as potentially adversarial.

The **lethal trifecta** (a term coined by well-known blogger Simon Willison) describes the specific combination of capabilities that turns prompt injection from a nuisance into a data-exfiltration risk. The danger arises when a single flow has **all three** of the following at once:

1. **Access to private data** — sensitive input such as a user's records, internal documents, or data pulled from connected systems into `payload` / `user_input`.
2. **Exposure to untrusted content** — anything the model reads that you don't fully control, including `enable_web_search` results, uploaded `file` and `image` inputs, and responses from external APIs.
3. **The ability to communicate externally** — a way to send data out of the environment, such as a subsequent HTTP action, an outbound notification, or even a URL the model can cause to be fetched.

When all three are present, injected instructions in the untrusted content can direct the model to take the private data and exfiltrate it through the outbound channel — without the user ever seeing it happen.

> **Avoid combining all three capabilities in one flow**
>
> The most reliable mitigation is to break the trifecta on egress. Because the Assistant usually has access to private data, design your Compound Actions and Conversational Processes so that if the Assistant is exposed to **untrusted content** through a flow, it does **not** also have an unrestricted way to send data externally.
>
> Additional safeguards:
>
> * **Treat file, image, and web content as untrusted.** Never feed model output derived from untrusted content directly into a downstream action that transmits data (HTTP calls, notifications, or dynamically constructed URLs).
> * **Scope web search.** Use `web_search_allowed_domains` to restrict searches to sources you trust, or `web_search_blocked_domains` to exclude risky ones.
> * **Constrain outputs.** Prefer `generate_structured_value_action` with a strict `output_schema` so the model can only return the specific fields you expect, rather than free-form text or arbitrary URLs.
> * **Keep a human in the loop** for any action that sends sensitive data outside the environment.

\