From 5a96fcbd27041ae1dfa05c9c3d9d9fe02d7192dd Mon Sep 17 00:00:00 2001
From: "Stephanie Elliott (via MelvinBot)" <infra+melvinbot@expensify.com>
Date: Sat, 30 May 2026 00:17:53 +0000
Subject: [PATCH 01/28] Update help docs for Release 3: Custom Agents

Adds the Custom Agents article and the new Agents hub, and adds short
pointers from the Approvals and Workspace Rules articles to the new
Custom Agents documentation.

Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
---
 docs/_data/_routes.yml                        |   5 +
 .../new-expensify/agents/Custom-Agents.md     | 164 ++++++++++++++++++
 .../new-expensify/workspaces/Add-Approvals.md |  11 ++
 .../workspaces/Workspace-Rules.md             |   2 +
 4 files changed, 182 insertions(+)
 create mode 100644 docs/articles/new-expensify/agents/Custom-Agents.md

diff --git a/docs/_data/_routes.yml b/docs/_data/_routes.yml
index 541cbbb0ede1..10bbec8fac12 100644
--- a/docs/_data/_routes.yml
+++ b/docs/_data/_routes.yml
@@ -226,6 +226,11 @@ platforms:
         icon: /assets/images/simple-illustration__concierge-bot.svg
         description: Learn about Concierge AI and what it can do.
 
+      - href: agents
+        title: Agents
+        icon: /assets/images/simple-illustration__concierge-bot.svg
+        description: Create and configure AI-powered Custom Agents that act as approvers in your workspace.
+
       - href: workspaces
         title: Workspaces
         icon: /assets/images/shield.svg
diff --git a/docs/articles/new-expensify/agents/Custom-Agents.md b/docs/articles/new-expensify/agents/Custom-Agents.md
new file mode 100644
index 000000000000..76f185efd6fe
--- /dev/null
+++ b/docs/articles/new-expensify/agents/Custom-Agents.md
@@ -0,0 +1,164 @@
+---
+title: Custom Agents
+description: Create AI-powered agents that act as approvers in your workspace approval workflows.
+keywords: [custom agents, AI agent, workflow agent, approval agent, agent approver, automated approval, AI approver, workspace approver, custom approver, agent prompt, agent copilot]
+internalScope: Audience is Workspace Admins and account owners. Covers how to create, configure, chat with, and delete custom agents, and how to add an agent as an approver in a workspace approval workflow. Does not cover Concierge AI, billing for agent credits, or personal agent usage in DMs.
+---
+
+# Custom Agents
+
+Custom Agents are AI-powered virtual members of your Expensify account that can act as approvers in your workspace approval workflows. They follow instructions you write to evaluate reports and approve or reject them according to your company's rules, which is useful when your approval logic is more complex than what the standard Rules engine supports.
+
+Each agent has its own Expensify account with a profile, display name, and instructions you control. You can chat with an agent, copilot into its account to review what it's doing, and add it to a workspace as an approver.
+
+---
+
+## Who can use Custom Agents
+
+- **Available to:** Anyone with an Expensify account can create personal agents. Adding an agent as an approver requires a workspace with the **Workflows** feature enabled.
+- **Plans:** Custom workflows that include agents require the **Control** plan. On **Collect** workspaces, an agent can replace the existing approver in the default workflow.
+- **Permissions:** Only the agent's owner can edit its instructions or delete it. The owner is added as a full-access copilot when the agent is created and cannot be removed.
+
+---
+
+## How to create a Custom Agent from your account
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+2. Click **Agents**.
+3. Click **Create agent**.
+4. Review the auto-generated profile image and display name. You can edit these later.
+5. Enter the agent's instructions in the prompt field. Describe what the agent should do, when it should approve a report, and when it should reject one.
+6. Click **Save**.
+
+<!-- SCREENSHOT:
+Suggestion: Settings > Agents page showing the Create agent button and the agents list with one example agent
+Location: After the create agent steps
+Purpose: Helps users find the entry point for creating an agent
+-->
+
+After saving, the new agent appears in your **Agents** list with **Edit**, **Chat**, and **Copilot** buttons.
+
+---
+
+## How to create a Custom Agent from a workspace approval workflow
+
+You can also create an agent directly while configuring an approval workflow:
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Workspaces**.
+2. Click your workspace name.
+3. Click **Workflows**.
+4. On the workflow card, click the **agent+** button.
+5. If you don't already own an agent, the **Create agent** form opens. Fill in the profile, display name, and instructions, then click **Save**.
+6. Expensify adds the agent to the workspace as a member and sets it as the first approver.
+
+On a **Control** workspace, the agent is inserted at the beginning of the existing approval chain. On a **Collect** workspace, the agent replaces the current approver. To add a human approver after the agent on Collect, upgrade to the Control plan.
+
+You can also reach this flow from the **Set Approver** page within workflow settings by clicking the **Create an agent** row.
+
+---
+
+## How to write instructions for a Custom Agent
+
+The instructions you save in the prompt field tell the agent what to do with each incoming report or chat message. Clear instructions help the agent approve or reject reports consistently.
+
+Useful things to include in an agent's instructions:
+
+- The agent's role (for example, "You review marketing team travel reports.").
+- The conditions under which the agent should **Approve** a report.
+- The conditions under which the agent should **Reject** a report and what feedback to leave.
+- Any escalation rules — for example, "Approve reports under $500; for anything higher, leave a comment asking the submitter to confirm the business purpose."
+
+Instructions are stored in Markdown, so you can use headings, bullets, and bold text to organize complex guidance.
+
+---
+
+## How to chat with a Custom Agent
+
+To open a direct conversation with an agent:
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+2. Click **Agents**.
+3. Find the agent in the list and click **Chat**.
+
+The agent will respond using its current instructions. Use this to test how the agent reacts to different scenarios before adding it to a live workflow.
+
+---
+
+## How to Copilot into a Custom Agent account
+
+You are automatically added as a full-access copilot on every agent you create. Use Copilot to see what the agent has done, review its activity, and inspect any actions it has taken on reports.
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+2. Click **Agents**.
+3. Find the agent in the list and click **Copilot**.
+
+While copiloting into the agent account, you can review its **Profile**, its current instructions on the **AI Prompt** page, and the chats and reports it has acted on.
+
+[Learn more about Copilot](/articles/new-expensify/settings/Add-or-Act-as-a-Copilot).
+
+---
+
+## How to edit a Custom Agent's instructions
+
+You can edit an agent's profile image, display name, and instructions at any time.
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+2. Click **Agents**.
+3. Click **Edit** on the agent you want to update.
+4. Update the profile image, display name, or instructions.
+5. Click **Save**.
+
+Updated instructions apply to all future reports and chat messages the agent receives.
+
+---
+
+## How to delete a Custom Agent
+
+Deleting an agent closes its Expensify account. If the agent is currently set as an approver on any workflow, remove it from those workflows first.
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+2. Click **Agents**.
+3. Click **Delete** on the agent you want to remove.
+4. Confirm the deletion.
+
+---
+
+## How to use a Custom Agent as an approver
+
+Once an agent is added to a workspace as a member, you can select it as an approver anywhere you'd choose a person:
+
+1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Workspaces**.
+2. Click your workspace name.
+3. Click **Workflows**.
+4. Open the workflow you want to edit, or click **Add approval workflow** to create a new one.
+5. Click **Approver**.
+6. Choose the agent from the list of workspace members.
+7. Click **Save**.
+
+The agent will receive each report submitted into the workflow and decide whether to **Approve** or **Reject** it based on its instructions.
+
+For details on configuring approval workflows generally, see [Learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
+
+---
+
+# FAQ
+
+## Who can edit or delete a Custom Agent?
+
+Only the agent's owner can edit its instructions or delete it. The owner is the account that created the agent.
+
+## Are Custom Agents billed?
+
+An agent is a member of any workspace it's added to and is billed as a workspace member like any other member. Usage-based billing for agent activity is not yet in effect at this release.
+
+## Can I remove myself as a Copilot from a Custom Agent I created?
+
+No. The owner is permanently added as a full-access copilot on the agent's account so you always retain access to review and update the agent.
+
+## What happens if my agent approves or rejects a report unexpectedly?
+
+Copilot into the agent's account, open the **AI Prompt** page, and review the current instructions. Adjust the instructions so the agent handles that scenario the way you want, then click **Save**.
+
+## Can a Custom Agent be added to multiple workspaces?
+
+Yes. An agent is a member like any other and can be added to as many workspaces as you'd like, and selected as an approver in each of their workflows.
diff --git a/docs/articles/new-expensify/workspaces/Add-Approvals.md b/docs/articles/new-expensify/workspaces/Add-Approvals.md
index 5262c390e41d..52416b9557be 100644
--- a/docs/articles/new-expensify/workspaces/Add-Approvals.md
+++ b/docs/articles/new-expensify/workspaces/Add-Approvals.md
@@ -60,6 +60,17 @@ Set up default or custom approval workflows to route expenses through one or mor
 
 **Note:** Custom workflows are only available on the Control plan. To enable custom workflows, upgrade to the Control plan in Settings > Billing & Subscriptions.
 
+## Set a Custom Agent as Approver
+
+You can select a Custom Agent — an AI-powered virtual member you create and configure — as an approver in any workflow. Custom Agents are useful when your approval logic is more complex than what the standard Rules engine supports.
+
+You'll see prompts to create or add an agent in two places:
+
+- A banner on the **Approvals** section of the **Workflows** page advertising automated approvals.
+- An **agent+** button on each workflow card that lets you add an existing agent or create a new one inline.
+
+To learn more, see [Learn how to use Custom Agents in Expensify](/articles/new-expensify/agents/Custom-Agents).
+
 ---
 
 ## Edit or Delete Approval Workflows
diff --git a/docs/articles/new-expensify/workspaces/Workspace-Rules.md b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
index bf0c5b757ae7..9192408dbc7c 100644
--- a/docs/articles/new-expensify/workspaces/Workspace-Rules.md
+++ b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
@@ -13,6 +13,8 @@ Workspace Rules let Admins enforce expense policies by setting custom requiremen
 
 You can also [add text or a PDF expense policy document](/articles/new-expensify/workspaces/Add-an-Expense-Policy-to-a-Workspace) to your workspace overview page so members can reference your company's expense guidelines.
 
+If your approval logic doesn't fit the rules available here, you can use a Custom Agent — an AI-powered virtual member you write instructions for — as an approver in your workflow. [Learn how to use Custom Agents in Expensify](/articles/new-expensify/agents/Custom-Agents).
+
 ---
 
 ## How to enable Workspace Rules

From 1a3dd9630b728693c0040969455ad841d31bc4b2 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 16:42:50 -1000
Subject: [PATCH 02/28] Revise Custom Agents documentation for clarity

Updated the title and description for clarity, refined instructions for creating and managing Custom Agents, and improved the overall structure of the document.
---
 .../new-expensify/agents/Custom-Agents.md     | 115 +++++++++++-------
 1 file changed, 72 insertions(+), 43 deletions(-)

diff --git a/docs/articles/new-expensify/agents/Custom-Agents.md b/docs/articles/new-expensify/agents/Custom-Agents.md
index 76f185efd6fe..9a2a7bd00c21 100644
--- a/docs/articles/new-expensify/agents/Custom-Agents.md
+++ b/docs/articles/new-expensify/agents/Custom-Agents.md
@@ -1,13 +1,13 @@
 ---
-title: Custom Agents
-description: Create AI-powered agents that act as approvers in your workspace approval workflows.
+title: Create and Use Custom Agents
+description: Create, configure, and manage AI-powered agents that act as approvers in your workspace approval workflows.
 keywords: [custom agents, AI agent, workflow agent, approval agent, agent approver, automated approval, AI approver, workspace approver, custom approver, agent prompt, agent copilot]
 internalScope: Audience is Workspace Admins and account owners. Covers how to create, configure, chat with, and delete custom agents, and how to add an agent as an approver in a workspace approval workflow. Does not cover Concierge AI, billing for agent credits, or personal agent usage in DMs.
 ---
 
-# Custom Agents
+# Create and Use Custom Agents
 
-Custom Agents are AI-powered virtual members of your Expensify account that can act as approvers in your workspace approval workflows. They follow instructions you write to evaluate reports and approve or reject them according to your company's rules, which is useful when your approval logic is more complex than what the standard Rules engine supports.
+Custom Agents are AI-powered virtual members of your Expensify account that can act as approvers in your workspace approval workflows. They follow instructions you write to evaluate reports and approve or reject them according to your company's rules. This allows you to automate approval decisions that may be too complex for standard workflow rules.
 
 Each agent has its own Expensify account with a profile, display name, and instructions you control. You can chat with an agent, copilot into its account to review what it's doing, and add it to a workspace as an approver.
 
@@ -15,20 +15,24 @@ Each agent has its own Expensify account with a profile, display name, and instr
 
 ## Who can use Custom Agents
 
-- **Available to:** Anyone with an Expensify account can create personal agents. Adding an agent as an approver requires a workspace with the **Workflows** feature enabled.
-- **Plans:** Custom workflows that include agents require the **Control** plan. On **Collect** workspaces, an agent can replace the existing approver in the default workflow.
-- **Permissions:** Only the agent's owner can edit its instructions or delete it. The owner is added as a full-access copilot when the agent is created and cannot be removed.
+Anyone with an Expensify account can create a Custom Agent.
+
+To add a Custom Agent as an approver on a workspace:
+
+ - You must be a Workspace Admin.
+ - **Workflows** must be enabled.
+ - The Custom Agent must be a member of the workspace.
 
 ---
 
-## How to create a Custom Agent from your account
+## How to create a Custom Agent
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
 2. Click **Agents**.
-3. Click **Create agent**.
-4. Review the auto-generated profile image and display name. You can edit these later.
-5. Enter the agent's instructions in the prompt field. Describe what the agent should do, when it should approve a report, and when it should reject one.
-6. Click **Save**.
+3. Click **New agent**.
+4. Review the auto-generated profile image and display name. If needed, you can edit these later.
+5. In the **Write custom instructions** field, enter the prompt, or instructions the agent should follow. 
+6. Click **Create agent**.
 
 <!-- SCREENSHOT:
 Suggestion: Settings > Agents page showing the Create agent button and the agents list with one example agent
@@ -36,30 +40,15 @@ Location: After the create agent steps
 Purpose: Helps users find the entry point for creating an agent
 -->
 
-After saving, the new agent appears in your **Agents** list with **Edit**, **Chat**, and **Copilot** buttons.
-
----
-
-## How to create a Custom Agent from a workspace approval workflow
-
-You can also create an agent directly while configuring an approval workflow:
-
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Workspaces**.
-2. Click your workspace name.
-3. Click **Workflows**.
-4. On the workflow card, click the **agent+** button.
-5. If you don't already own an agent, the **Create agent** form opens. Fill in the profile, display name, and instructions, then click **Save**.
-6. Expensify adds the agent to the workspace as a member and sets it as the first approver.
-
-On a **Control** workspace, the agent is inserted at the beginning of the existing approval chain. On a **Collect** workspace, the agent replaces the current approver. To add a human approver after the agent on Collect, upgrade to the Control plan.
+You can also create a Custom Agent from the **Set Approver** page by clicking **Create an agent**. Expensify automatically adds the new agent to the workspace as a member and assigns it as an approver.
 
-You can also reach this flow from the **Set Approver** page within workflow settings by clicking the **Create an agent** row.
+After saving, the new agent appears in your **Agents** list with **Edit**, **Chat**, and **Copilot** buttons.
 
 ---
 
 ## How to write instructions for a Custom Agent
 
-The instructions you save in the prompt field tell the agent what to do with each incoming report or chat message. Clear instructions help the agent approve or reject reports consistently.
+The prompt you share in the **Write custom instructions** field tells the agent what to do with each incoming report or chat message. Clear instructions help the agent approve or reject reports consistently.
 
 Useful things to include in an agent's instructions:
 
@@ -70,30 +59,50 @@ Useful things to include in an agent's instructions:
 
 Instructions are stored in Markdown, so you can use headings, bullets, and bold text to organize complex guidance.
 
+**Example approval prompt:**
+
+```
+# Role
+
+You review Marketing team travel reports.
+
+# Approve when
+
+- The report includes a business purpose.
+- Each expense has a receipt.
+- The total report amount is under $500.
+
+# Reject when
+
+- A receipt is missing.
+- The business purpose is unclear.
+
+When rejecting a report, leave a comment explaining what information is missing.
+```
 ---
 
 ## How to chat with a Custom Agent
 
-To open a direct conversation with an agent:
+To open a direct conversation with a Custom Agent:
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Find the agent in the list and click **Chat**.
 
-The agent will respond using its current instructions. Use this to test how the agent reacts to different scenarios before adding it to a live workflow.
+The agent will respond using its current instructions. Use this to test how the agent reacts to different scenarios before adding it to a workflow.
 
 ---
 
 ## How to Copilot into a Custom Agent account
 
-You are automatically added as a full-access copilot on every agent you create. Use Copilot to see what the agent has done, review its activity, and inspect any actions it has taken on reports.
+Each Custom Agent is its own Expensify account with a profile, inbox, chats, and activity history. When you create a Custom Agent, you become its owner and are automatically added as a full-access Copilot.
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+Use Copilot to see what the agent has done, review its activity, and inspect any actions it has taken on reports.
+
+1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Find the agent in the list and click **Copilot**.
 
-While copiloting into the agent account, you can review its **Profile**, its current instructions on the **AI Prompt** page, and the chats and reports it has acted on.
-
 [Learn more about Copilot](/articles/new-expensify/settings/Add-or-Act-as-a-Copilot).
 
 ---
@@ -102,7 +111,7 @@ While copiloting into the agent account, you can review its **Profile**, its cur
 
 You can edit an agent's profile image, display name, and instructions at any time.
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Click **Edit** on the agent you want to update.
 4. Update the profile image, display name, or instructions.
@@ -114,17 +123,23 @@ Updated instructions apply to all future reports and chat messages the agent rec
 
 ## How to delete a Custom Agent
 
-Deleting an agent closes its Expensify account. If the agent is currently set as an approver on any workflow, remove it from those workflows first.
+Deleting a Custom Agent closes its Expensify account. 
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Settings**.
+1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
 2. Click **Agents**.
-3. Click **Delete** on the agent you want to remove.
+3. On the agent you want to remove, click **Delete**.
 4. Confirm the deletion.
 
+If the agent is currently set as an approver on any workflow, remove it from those workflows first. [Learn how to edit or delete a workflow](/articles/new-expensify/workspaces/Add-Approvals#edit-or-delete-approval-workflows). 
+
 ---
 
 ## How to use a Custom Agent as an approver
 
+Before you can select a Custom Agent as an approver, the agent must be a member of the workspace.
+
+If the agent was created from a workflow setup flow, Expensify automatically adds it to the workspace. Otherwise, add the agent as a workspace member first: [Learn how to add a Custom Agent to a Workspace](/articles/new-expensify/workspaces/Managing-Workspace-Members#invite-members-to-a-workspace).
+
 Once an agent is added to a workspace as a member, you can select it as an approver anywhere you'd choose a person:
 
 1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Workspaces**.
@@ -139,6 +154,14 @@ The agent will receive each report submitted into the workflow and decide whethe
 
 For details on configuring approval workflows generally, see [Learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
 
+## What happens after a Custom Agent reviews a report
+
+ - The agent receives reports assigned to its approval step and evaluates them using its current instructions.
+ - When the agent approves a report, the workflow continues to the next approval step.
+ - When the agent rejects a report, the submitter receives the agent's feedback and can update and resubmit the report.
+
+Changes you make to the agent's instructions apply to future reports and conversations. You can chat with the agent to test updated instructions before using them in a workflow.
+
 ---
 
 # FAQ
@@ -153,7 +176,7 @@ An agent is a member of any workspace it's added to and is billed as a workspace
 
 ## Can I remove myself as a Copilot from a Custom Agent I created?
 
-No. The owner is permanently added as a full-access copilot on the agent's account so you always retain access to review and update the agent.
+No. The owner is permanently added as a full-access Copilot on the agent's account so you always retain access to review and update the agent.
 
 ## What happens if my agent approves or rejects a report unexpectedly?
 
@@ -162,3 +185,9 @@ Copilot into the agent's account, open the **AI Prompt** page, and review the cu
 ## Can a Custom Agent be added to multiple workspaces?
 
 Yes. An agent is a member like any other and can be added to as many workspaces as you'd like, and selected as an approver in each of their workflows.
+
+## Can I use a Custom Agent in multi-step approval workflows?
+
+Yes. On Control plans, Custom Agents can be used anywhere an approver can be selected, including multi-step approval workflows.
+
+On Collect plans, workspaces support a single approver. A Custom Agent can be used as that approver.

From b77d0d178bb83f045e3bbc9fe0aa72317445d6ed Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 16:45:28 -1000
Subject: [PATCH 03/28] Rename Custom-Agents.md to
 Create-and-Use-Custom-Agents.md

---
 .../agents/{Custom-Agents.md => Create-and-Use-Custom-Agents.md}  | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename docs/articles/new-expensify/agents/{Custom-Agents.md => Create-and-Use-Custom-Agents.md} (100%)

diff --git a/docs/articles/new-expensify/agents/Custom-Agents.md b/docs/articles/new-expensify/agents/Create-and-Use-Custom-Agents.md
similarity index 100%
rename from docs/articles/new-expensify/agents/Custom-Agents.md
rename to docs/articles/new-expensify/agents/Create-and-Use-Custom-Agents.md

From 4c15987684e7ed026e3ca5ae3a734d39a2af7b2b Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 16:53:32 -1000
Subject: [PATCH 04/28] Update _routes.yml

---
 docs/_data/_routes.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/_data/_routes.yml b/docs/_data/_routes.yml
index 10bbec8fac12..19474228c166 100644
--- a/docs/_data/_routes.yml
+++ b/docs/_data/_routes.yml
@@ -226,10 +226,10 @@ platforms:
         icon: /assets/images/simple-illustration__concierge-bot.svg
         description: Learn about Concierge AI and what it can do.
 
-      - href: agents
-        title: Agents
+      - href: ai-agents
+        title: AI Agents
         icon: /assets/images/simple-illustration__concierge-bot.svg
-        description: Create and configure AI-powered Custom Agents that act as approvers in your workspace.
+        description: Learn about Custom Agents and what they can do. 
 
       - href: workspaces
         title: Workspaces

From f478e036f5f4d71c335ecfd06f350f6e8c174e5d Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 16:54:24 -1000
Subject: [PATCH 05/28] Rename Create-and-Use-Custom-Agents.md to
 Create-and-Use-Custom-Agents.md

---
 .../{agents => ai-agents}/Create-and-Use-Custom-Agents.md         | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename docs/articles/new-expensify/{agents => ai-agents}/Create-and-Use-Custom-Agents.md (100%)

diff --git a/docs/articles/new-expensify/agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
similarity index 100%
rename from docs/articles/new-expensify/agents/Create-and-Use-Custom-Agents.md
rename to docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md

From a34359dd4509d5d666e4773dac166ace4e5d8182 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 16:58:26 -1000
Subject: [PATCH 06/28] Create index.html

---
 docs/new-expensify/hubs/ai-agents/index.html | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 docs/new-expensify/hubs/ai-agents/index.html

diff --git a/docs/new-expensify/hubs/ai-agents/index.html b/docs/new-expensify/hubs/ai-agents/index.html
new file mode 100644
index 000000000000..7e4102a82cfa
--- /dev/null
+++ b/docs/new-expensify/hubs/ai-agents/index.html
@@ -0,0 +1,6 @@
+---
+layout: default
+title: AI Agents
+---
+
+{% include hub.html %}

From bab633bf49e7fa999c39fd52fc57ed94c313fb70 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 17:01:45 -1000
Subject: [PATCH 07/28] Update Add-Approvals.md

---
 docs/articles/new-expensify/workspaces/Add-Approvals.md | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/docs/articles/new-expensify/workspaces/Add-Approvals.md b/docs/articles/new-expensify/workspaces/Add-Approvals.md
index 52416b9557be..7c064507519f 100644
--- a/docs/articles/new-expensify/workspaces/Add-Approvals.md
+++ b/docs/articles/new-expensify/workspaces/Add-Approvals.md
@@ -62,14 +62,11 @@ Set up default or custom approval workflows to route expenses through one or mor
 
 ## Set a Custom Agent as Approver
 
-You can select a Custom Agent — an AI-powered virtual member you create and configure — as an approver in any workflow. Custom Agents are useful when your approval logic is more complex than what the standard Rules engine supports.
+You can select a Custom Agent as an approver in any workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define.
 
-You'll see prompts to create or add an agent in two places:
+Custom Agents are added to workspaces and assigned as approvers the same way as other workspace members. Once a Custom Agent is a member of the workspace, you can select it anywhere you would normally choose an approver.
 
-- A banner on the **Approvals** section of the **Workflows** page advertising automated approvals.
-- An **agent+** button on each workflow card that lets you add an existing agent or create a new one inline.
-
-To learn more, see [Learn how to use Custom Agents in Expensify](/articles/new-expensify/agents/Custom-Agents).
+[Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/docs/articles/Create-and-Use-Custom-Agents).
 
 ---
 

From f0890d28d43c4a4ba3b3baea26d0f804eb93f5bf Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 17:03:06 -1000
Subject: [PATCH 08/28] Update Custom Agent description in Workspace Rules

Clarified the description of Custom Agents and their role in approval workflows.
---
 docs/articles/new-expensify/workspaces/Workspace-Rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/articles/new-expensify/workspaces/Workspace-Rules.md b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
index 9192408dbc7c..cfa58d3dbb7f 100644
--- a/docs/articles/new-expensify/workspaces/Workspace-Rules.md
+++ b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
@@ -13,7 +13,7 @@ Workspace Rules let Admins enforce expense policies by setting custom requiremen
 
 You can also [add text or a PDF expense policy document](/articles/new-expensify/workspaces/Add-an-Expense-Policy-to-a-Workspace) to your workspace overview page so members can reference your company's expense guidelines.
 
-If your approval logic doesn't fit the rules available here, you can use a Custom Agent — an AI-powered virtual member you write instructions for — as an approver in your workflow. [Learn how to use Custom Agents in Expensify](/articles/new-expensify/agents/Custom-Agents).
+If your approval requirements can't be handled using workspace rules alone, you can use a Custom Agent as an approver in your workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define. [Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/docs/articles/Create-and-Use-Custom-Agents).
 
 ---
 

From 09d7ee05f6d1348bccb0f6967efd09136aaa5694 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 17:34:50 -1000
Subject: [PATCH 09/28] Update Create-and-Use-Custom-Agents.md

---
 .../ai-agents/Create-and-Use-Custom-Agents.md | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
index 9a2a7bd00c21..90a9422647e4 100644
--- a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
+++ b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
@@ -27,7 +27,7 @@ To add a Custom Agent as an approver on a workspace:
 
 ## How to create a Custom Agent
 
-1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Click **New agent**.
 4. Review the auto-generated profile image and display name. If needed, you can edit these later.
@@ -85,7 +85,7 @@ When rejecting a report, leave a comment explaining what information is missing.
 
 To open a direct conversation with a Custom Agent:
 
-1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Find the agent in the list and click **Chat**.
 
@@ -99,11 +99,11 @@ Each Custom Agent is its own Expensify account with a profile, inbox, chats, and
 
 Use Copilot to see what the agent has done, review its activity, and inspect any actions it has taken on reports.
 
-1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Find the agent in the list and click **Copilot**.
 
-[Learn more about Copilot](/articles/new-expensify/settings/Add-or-Act-as-a-Copilot).
+[Learn more about Copilot](/articles/new-expensify/settings/Copilot-Access.md).
 
 ---
 
@@ -111,7 +111,7 @@ Use Copilot to see what the agent has done, review its activity, and inspect any
 
 You can edit an agent's profile image, display name, and instructions at any time.
 
-1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
 2. Click **Agents**.
 3. Click **Edit** on the agent you want to update.
 4. Update the profile image, display name, or instructions.
@@ -138,21 +138,23 @@ If the agent is currently set as an approver on any workflow, remove it from tho
 
 Before you can select a Custom Agent as an approver, the agent must be a member of the workspace.
 
-If the agent was created from a workflow setup flow, Expensify automatically adds it to the workspace. Otherwise, add the agent as a workspace member first: [Learn how to add a Custom Agent to a Workspace](/articles/new-expensify/workspaces/Managing-Workspace-Members#invite-members-to-a-workspace).
+If the agent was created from a workflow setup flow, Expensify automatically adds it to the workspace. Otherwise, add the agent as a workspace member first.
+
+[Learn how to add a Custom Agent to a Workspace](/articles/new-expensify/workspaces/Managing-Workspace-Members#invite-members-to-a-workspace).
 
 Once an agent is added to a workspace as a member, you can select it as an approver anywhere you'd choose a person:
 
-1. In the **navigation tabs** (on the left on web, and at the bottom on mobile), click **Workspaces**.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Workspaces**.
 2. Click your workspace name.
 3. Click **Workflows**.
-4. Open the workflow you want to edit, or click **Add approval workflow** to create a new one.
+4. Click the workflow you want to edit, or click **Add approval workflow** to create a new one.
 5. Click **Approver**.
 6. Choose the agent from the list of workspace members.
 7. Click **Save**.
 
 The agent will receive each report submitted into the workflow and decide whether to **Approve** or **Reject** it based on its instructions.
 
-For details on configuring approval workflows generally, see [Learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
+For details on configuring approval workflows generally, [learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
 
 ## What happens after a Custom Agent reviews a report
 

From 29670006dbb914d786395109e6ff2fe1e5030c85 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 17:36:08 -1000
Subject: [PATCH 10/28] Update Add-Approvals.md

---
 docs/articles/new-expensify/workspaces/Add-Approvals.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/articles/new-expensify/workspaces/Add-Approvals.md b/docs/articles/new-expensify/workspaces/Add-Approvals.md
index 7c064507519f..41e5eecb213e 100644
--- a/docs/articles/new-expensify/workspaces/Add-Approvals.md
+++ b/docs/articles/new-expensify/workspaces/Add-Approvals.md
@@ -60,13 +60,13 @@ Set up default or custom approval workflows to route expenses through one or mor
 
 **Note:** Custom workflows are only available on the Control plan. To enable custom workflows, upgrade to the Control plan in Settings > Billing & Subscriptions.
 
-## Set a Custom Agent as Approver
+## How to Set a Custom Agent as Approver
 
 You can select a Custom Agent as an approver in any workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define.
 
 Custom Agents are added to workspaces and assigned as approvers the same way as other workspace members. Once a Custom Agent is a member of the workspace, you can select it anywhere you would normally choose an approver.
 
-[Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/docs/articles/Create-and-Use-Custom-Agents).
+[Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents).
 
 ---
 

From 21923f2d1a417a64bf02190a8282c689352a96fb Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 29 May 2026 17:36:20 -1000
Subject: [PATCH 11/28] Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
 docs/articles/new-expensify/workspaces/Workspace-Rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/articles/new-expensify/workspaces/Workspace-Rules.md b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
index cfa58d3dbb7f..a39f09666bfc 100644
--- a/docs/articles/new-expensify/workspaces/Workspace-Rules.md
+++ b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
@@ -13,7 +13,7 @@ Workspace Rules let Admins enforce expense policies by setting custom requiremen
 
 You can also [add text or a PDF expense policy document](/articles/new-expensify/workspaces/Add-an-Expense-Policy-to-a-Workspace) to your workspace overview page so members can reference your company's expense guidelines.
 
-If your approval requirements can't be handled using workspace rules alone, you can use a Custom Agent as an approver in your workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define. [Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/docs/articles/Create-and-Use-Custom-Agents).
+If your approval requirements can't be handled using workspace rules alone, you can use a Custom Agent as an approver in your workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define. [Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents).
 
 ---
 

From 06b76ef5ba359053bf941e267eef786afcde8957 Mon Sep 17 00:00:00 2001
From: Yuwen Memon <yuwen@expensify.com>
Date: Tue, 2 Jun 2026 00:41:22 -0700
Subject: [PATCH 12/28] feat(agents): link to custom agents help docs from
 agents page

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 src/CONST/index.ts                       |  1 +
 src/languages/en.ts                      |  4 ++--
 src/languages/es.ts                      |  4 ++--
 src/pages/settings/Agents/AgentsPage.tsx | 13 +++++++++----
 4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/CONST/index.ts b/src/CONST/index.ts
index 48cee22a2e53..8b2b794cec22 100644
--- a/src/CONST/index.ts
+++ b/src/CONST/index.ts
@@ -1323,6 +1323,7 @@ const CONST = {
     CONFIGURE_APPROVAL_WORKFLOWS_HELP_URL: 'https://help.expensify.com/articles/new-expensify/workspaces/Configure-approval-workflows',
     SELECT_WORKFLOWS_HELP_URL: 'https://help.expensify.com/articles/new-expensify/workspaces/Set-up-workflows#select-workflows',
     COPILOT_HELP_URL: 'https://help.expensify.com/articles/new-expensify/settings/Add-or-Act-As-a-Copilot',
+    CUSTOM_AGENTS_HELP_URL: 'https://help.expensify.com/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents',
     BULK_UPLOAD_HELP_URL: 'https://help.expensify.com/articles/new-expensify/reports-and-expenses/Create-an-Expense#option-4-bulk-upload-receipts-desktop-only',
     ENCRYPTION_AND_SECURITY_HELP_URL: 'https://help.expensify.com/articles/new-expensify/settings/Encryption-and-Data-Security',
     PLAN_TYPES_AND_PRICING_HELP_URL: 'https://help.expensify.com/articles/new-expensify/billing-and-subscriptions/Plan-types-and-pricing',
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 0f96b0e1b1f2..46d27aab2f52 100644
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -2842,11 +2842,11 @@ const translations = {
     },
     agentsPage: {
         title: 'Agents',
-        subtitle: 'Create agents to handle your workflow. Skip the manual work and get hours back in your day.',
+        subtitle: `<muted-text>Create agents to handle your workflow. Skip the manual work and get hours back in your day. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Learn more</a>.</muted-text>`,
         newAgent: 'New agent',
         emptyAgents: {
             title: 'No agents created',
-            subtitle: 'Stop manually doing stuff. Instruct an agent instead and save yourself lots of time.',
+            subtitle: `<muted-text><centered-text>Stop manually doing stuff. Instruct an agent instead and save yourself lots of time. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Learn more</a>.</centered-text></muted-text>`,
         },
         error: {
             genericAdd: 'There was a problem adding this agent',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index a8717417154a..3b2d5da5170f 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2658,11 +2658,11 @@ ${amount} para ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agentes',
-        subtitle: 'Automatiza tareas con agentes personalizados.',
+        subtitle: `<muted-text>Automatiza tareas con agentes personalizados. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</muted-text>`,
         newAgent: 'Nuevo agente',
         emptyAgents: {
             title: 'No se han creado agentes.',
-            subtitle: 'Deja de hacer las cosas manualmente. En su lugar, instruye a un agente y ahorra mucho tiempo.',
+            subtitle: `<muted-text><centered-text>Deja de hacer las cosas manualmente. En su lugar, instruye a un agente y ahorra mucho tiempo. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</centered-text></muted-text>`,
         },
         error: {
             genericAdd: 'Hubo un problema al agregar este agente',
diff --git a/src/pages/settings/Agents/AgentsPage.tsx b/src/pages/settings/Agents/AgentsPage.tsx
index d98c0aa6dcf1..8c42ba80143a 100644
--- a/src/pages/settings/Agents/AgentsPage.tsx
+++ b/src/pages/settings/Agents/AgentsPage.tsx
@@ -4,9 +4,9 @@ import Button from '@components/Button';
 import GenericEmptyStateComponent from '@components/EmptyStateComponent/GenericEmptyStateComponent';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import {usePersonalDetails} from '@components/OnyxListItemProvider';
+import RenderHTML from '@components/RenderHTML';
 import ScreenWrapper from '@components/ScreenWrapper';
 import ScrollView from '@components/ScrollView';
-import Text from '@components/Text';
 import useChatWithAgent from '@hooks/useChatWithAgent';
 import useDocumentTitle from '@hooks/useDocumentTitle';
 import {useMemoizedLazyExpensifyIcons, useMemoizedLazyIllustrations} from '@hooks/useLazyAsset';
@@ -144,7 +144,9 @@ function AgentsPage() {
             {shouldUseNarrowLayout && <View style={[styles.ph5, styles.pb3]}>{newAgentButton}</View>}
             {hasAgents ? (
                 <>
-                    <Text style={[styles.textSupporting, styles.ph5, styles.pb3, styles.pt3]}>{translate('agentsPage.subtitle')}</Text>
+                    <View style={[styles.renderHTML, styles.ph5, styles.pb3, styles.pt3]}>
+                        <RenderHTML html={translate('agentsPage.subtitle')} />
+                    </View>
                     <FlatList
                         data={agentItems}
                         renderItem={renderItem}
@@ -156,8 +158,11 @@ function AgentsPage() {
                     <GenericEmptyStateComponent
                         headerMedia={illustrations.TvScreenRobot}
                         title={translate('agentsPage.emptyAgents.title')}
-                        subtitle={translate('agentsPage.emptyAgents.subtitle')}
-                        subtitleStyles={styles.agentsPageEmptyStateSubtitle}
+                        subtitleText={
+                            <View style={[styles.renderHTML, styles.agentsPageEmptyStateSubtitle]}>
+                                <RenderHTML html={translate('agentsPage.emptyAgents.subtitle')} />
+                            </View>
+                        }
                         headerStyles={styles.emptyStateCardIllustrationContainer}
                         headerContentStyles={styles.agentsPageEmptyStateIllustration}
                     />

From 96f9365da7b405447173b1e69fa36635e8fb7da0 Mon Sep 17 00:00:00 2001
From: Yuwen Memon <yuwen@expensify.com>
Date: Tue, 2 Jun 2026 17:35:43 -0700
Subject: [PATCH 13/28] chore(i18n): apply parrot translations for agents help
 link

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 src/languages/de.ts      | 7 +++++--
 src/languages/es.ts      | 4 ++--
 src/languages/fr.ts      | 7 +++++--
 src/languages/it.ts      | 7 +++++--
 src/languages/ja.ts      | 7 +++++--
 src/languages/nl.ts      | 7 +++++--
 src/languages/pl.ts      | 7 +++++--
 src/languages/pt-BR.ts   | 7 +++++--
 src/languages/zh-hans.ts | 7 +++++--
 9 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/src/languages/de.ts b/src/languages/de.ts
index fbbb7415ae94..5682b323c086 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -2783,9 +2783,12 @@ ${amount} für ${merchant} – ${date}`,
     },
     agentsPage: {
         title: 'Agenten',
-        subtitle: 'Erstelle Agents, die deinen Workflow übernehmen. Spare dir die manuelle Arbeit und gewinne stundenweise Zeit im Alltag zurück.',
+        subtitle: `<muted-text>Erstellen Sie Agents, die Ihren Workflow übernehmen. Überspringen Sie die manuelle Arbeit und gewinnen Sie Stunden Ihres Tages zurück. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Weitere Infos</a>.</muted-text>`,
         newAgent: 'Neue:r Agent:in',
-        emptyAgents: {title: 'Keine Agenten erstellt', subtitle: 'Hör auf, Dinge manuell zu erledigen. Weise stattdessen eine:n Agent:in an und spare dir eine Menge Zeit.'},
+        emptyAgents: {
+            title: 'Keine Agenten erstellt',
+            subtitle: `<muted-text><centered-text>Hören Sie auf, Dinge manuell zu erledigen. Geben Sie stattdessen einem Agenten Anweisungen und sparen Sie eine Menge Zeit. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Erfahren Sie mehr</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: 'Beim Hinzufügen dieses Agenten ist ein Problem aufgetreten',
             genericUpdate: 'Beim Aktualisieren dieses Agenten ist ein Problem aufgetreten',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 3b2d5da5170f..32d5bf8c060d 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2658,11 +2658,11 @@ ${amount} para ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agentes',
-        subtitle: `<muted-text>Automatiza tareas con agentes personalizados. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</muted-text>`,
+        subtitle: `<muted-text>Crea agentes para gestionar tu flujo de trabajo. Omite el trabajo manual y recupera horas de tu día. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</muted-text>`,
         newAgent: 'Nuevo agente',
         emptyAgents: {
             title: 'No se han creado agentes.',
-            subtitle: `<muted-text><centered-text>Deja de hacer las cosas manualmente. En su lugar, instruye a un agente y ahorra mucho tiempo. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</centered-text></muted-text>`,
+            subtitle: `<muted-text><centered-text>Deja de hacerlo todo manualmente. Da instrucciones a un agente y ahórrate mucho tiempo. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Más información</a>.</centered-text></muted-text>`,
         },
         error: {
             genericAdd: 'Hubo un problema al agregar este agente',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 69a77bc5c1c3..acb789864cbe 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -2791,9 +2791,12 @@ ${amount} pour ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agents',
-        subtitle: 'Créez des agents pour gérer votre flux de travail. Évitez le travail manuel et gagnez des heures dans votre journée.',
+        subtitle: `<muted-text>Créez des agents pour gérer votre flux de travail. Évitez le travail manuel et gagnez des heures chaque jour. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">En savoir plus</a>.</muted-text>`,
         newAgent: 'Nouvel agent',
-        emptyAgents: {title: 'Aucun agent créé', subtitle: 'Arrêtez de faire les choses manuellement. Donnez plutôt des instructions à un agent et gagnez beaucoup de temps.'},
+        emptyAgents: {
+            title: 'Aucun agent créé',
+            subtitle: `<muted-text><centered-text>Arrêtez de tout faire manuellement. Donnez plutôt des instructions à un agent et gagnez beaucoup de temps. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">En savoir plus</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: "Un problème est survenu lors de l'ajout de cet agent",
             genericUpdate: 'Un problème est survenu lors de la mise à jour de cet agent',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 15960393907b..bda5f19eec5b 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -2779,9 +2779,12 @@ ${amount} per ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agenti',
-        subtitle: 'Crea agenti per gestire il tuo flusso di lavoro. Elimina il lavoro manuale e recupera ore della tua giornata.',
+        subtitle: `<muted-text>Crea agenti per gestire il tuo flusso di lavoro. Salta il lavoro manuale e recupera ore nella tua giornata. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Scopri di più</a>.</muted-text>`,
         newAgent: 'Nuovo agente',
-        emptyAgents: {title: 'Nessun agente creato', subtitle: 'Smetti di fare le cose manualmente. Dai istruzioni a un agente e risparmia un sacco di tempo.'},
+        emptyAgents: {
+            title: 'Nessun agente creato',
+            subtitle: `<muted-text><centered-text>Smetti di fare le cose manualmente. Dai istruzioni a un agente e risparmia un sacco di tempo. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Scopri di più</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: "Si è verificato un problema durante l'aggiunta di questo agente",
             genericUpdate: "Si è verificato un problema durante l'aggiornamento di questo agente",
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index f58b76337ec1..f87ca9b7fa04 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -2755,9 +2755,12 @@ ${date} の ${merchant} への ${amount}`,
     },
     agentsPage: {
         title: '担当者',
-        subtitle: 'ワークフローを処理するエージェントを作成しましょう。手作業を省いて、1日の時間を何時間も取り戻せます。',
+        subtitle: `<muted-text>ワークフローを処理するエージェントを作成しましょう。手作業をなくして、毎日に数時間の余裕を取り戻せます。<a href="${CONST.CUSTOM_AGENTS_HELP_URL}">詳しく見る</a>。</muted-text>`,
         newAgent: '新しいエージェント',
-        emptyAgents: {title: 'エージェントは作成されていません', subtitle: '手作業はやめて、代わりにエージェントに指示を出して、時間を大幅に節約しましょう。'},
+        emptyAgents: {
+            title: 'エージェントは作成されていません',
+            subtitle: `<muted-text><centered-text>手作業はやめましょう。代わりにエージェントに指示して、大幅な時間短縮につなげてください。<a href="${CONST.CUSTOM_AGENTS_HELP_URL}">詳しく見る</a>。</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: 'このエージェントの追加中に問題が発生しました',
             genericUpdate: 'このエージェントの更新中に問題が発生しました',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 2aeba3345eb0..1c764b914cab 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -2776,9 +2776,12 @@ ${amount} voor ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agenten',
-        subtitle: 'Maak agents aan om je workflow af te handelen. Sla het handmatige werk over en krijg uren van je dag terug.',
+        subtitle: `<muted-text>Maak agents aan om je workflow af te handelen. Sla het handmatige werk over en krijg uren per dag terug. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Meer informatie</a>.</muted-text>`,
         newAgent: 'Nieuwe medewerker',
-        emptyAgents: {title: 'Geen agents aangemaakt', subtitle: 'Stop met dingen handmatig doen. Geef in plaats daarvan een opdracht aan een agent en bespaar jezelf veel tijd.'},
+        emptyAgents: {
+            title: 'Geen agents aangemaakt',
+            subtitle: `<muted-text><centered-text>Stop met dingen handmatig doen. Geef een agent instructies en bespaar jezelf veel tijd. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Meer informatie</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: 'Er was een probleem bij het toevoegen van deze agent',
             genericUpdate: 'Er is een probleem opgetreden bij het bijwerken van deze agent',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index be09ee06a69d..301a9217587c 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -2770,9 +2770,12 @@ ${amount} dla ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agenci',
-        subtitle: 'Twórz agentów do obsługi swojego przepływu pracy. Pomiń ręczną pracę i odzyskaj godziny w ciągu dnia.',
+        subtitle: `<muted-text>Twórz agentów, którzy obsłużą twój workflow. Odpuść sobie ręczną pracę i odzyskaj godziny w ciągu dnia. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Dowiedz się więcej</a>.</muted-text>`,
         newAgent: 'Nowy agent',
-        emptyAgents: {title: 'Nie utworzono agentów', subtitle: 'Przestań robić wszystko ręcznie. Zamiast tego wydaj polecenia agentowi i zaoszczędź mnóstwo czasu.'},
+        emptyAgents: {
+            title: 'Nie utworzono agentów',
+            subtitle: `<muted-text><centered-text>Przestań robić wszystko ręcznie. Zamiast tego wydawaj instrukcje agentowi i oszczędzaj mnóstwo czasu. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Dowiedz się więcej</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: 'Wystąpił problem podczas dodawania tego agenta',
             genericUpdate: 'Wystąpił problem z aktualizacją tego agenta',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index e72ee72ceb94..519bcf88bc2d 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -2770,9 +2770,12 @@ ${amount} para ${merchant} - ${date}`,
     },
     agentsPage: {
         title: 'Agentes',
-        subtitle: 'Crie agentes para gerenciar seu fluxo de trabalho. Pule o trabalho manual e ganhe horas de volta no seu dia.',
+        subtitle: `<muted-text>Crie agentes para cuidar do seu fluxo de trabalho. Pule o trabalho manual e ganhe horas de volta no seu dia. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Saiba mais</a>.</muted-text>`,
         newAgent: 'Novo agente',
-        emptyAgents: {title: 'Nenhum agente criado', subtitle: 'Pare de fazer tudo manualmente. Instrua um agente e economize muito tempo.'},
+        emptyAgents: {
+            title: 'Nenhum agente criado',
+            subtitle: `<muted-text><centered-text>Pare de fazer tudo manualmente. Instrua um agente e economize muito tempo. <a href="${CONST.CUSTOM_AGENTS_HELP_URL}">Saiba mais</a>.</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: 'Houve um problema ao adicionar este agente',
             genericUpdate: 'Ocorreu um problema ao atualizar este agente',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 8c721598f08f..e771a23a890e 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2698,9 +2698,12 @@ ${amount}，商户：${merchant} - 日期：${date}`,
     },
     agentsPage: {
         title: '代理人',
-        subtitle: '通过自定义智能体自动化处理任务。',
+        subtitle: `<muted-text>创建代理来处理你的工作流程，摆脱手工操作，每天节省数小时。<a href="${CONST.CUSTOM_AGENTS_HELP_URL}">了解更多</a>。</muted-text>`,
         newAgent: '新代理人',
-        emptyAgents: {title: '尚未创建代理', subtitle: '别再手动处理这些事情了。交给智能代理去执行，为自己节省大量时间。'},
+        emptyAgents: {
+            title: '尚未创建代理',
+            subtitle: `<muted-text><centered-text>别再手动处理各种事务了。改为指示代理来完成，为自己节省大量时间。<a href="${CONST.CUSTOM_AGENTS_HELP_URL}">了解更多</a>。</centered-text></muted-text>`,
+        },
         error: {
             genericAdd: '添加此智能体时出现了问题',
             genericUpdate: '更新此代理时出现问题',

From d245eeba91cdfed741997846e1a32dd1a720f674 Mon Sep 17 00:00:00 2001
From: "Yuwen Memon (via MelvinBot)" <infra+melvinbot@expensify.com>
Date: Wed, 3 Jun 2026 00:57:03 +0000
Subject: [PATCH 14/28] Fix AgentsPageTest by mocking RenderHTML

AgentsPage now renders <RenderHTML> for the help-article subtitle link.
The existing unit test renders the page in isolation without the HTML
engine provider, so it failed with "trenderEngine.buildTTree is not a
function". Mock @components/RenderHTML, consistent with the file's
existing component mocks.

Co-authored-by: Yuwen Memon <yuwenmemon@users.noreply.github.com>
---
 tests/unit/pages/settings/AgentsPageTest.tsx | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/unit/pages/settings/AgentsPageTest.tsx b/tests/unit/pages/settings/AgentsPageTest.tsx
index d6fa7c126780..74eb25da5059 100644
--- a/tests/unit/pages/settings/AgentsPageTest.tsx
+++ b/tests/unit/pages/settings/AgentsPageTest.tsx
@@ -102,6 +102,13 @@ jest.mock('@components/SelectionList', () => {
 
 jest.mock('@components/SelectionList/ListItem/UserListItem', () => 'UserListItem');
 
+jest.mock('@components/RenderHTML', () => {
+    function MockRenderHTML({html}: {html: string}) {
+        return html;
+    }
+    return MockRenderHTML;
+});
+
 jest.mock('@pages/ErrorPage/NotFoundPage', () => {
     function MockNotFoundPage() {
         return 'NotFoundPage';

From e6c867d48def263f945aae045bb4b60aa172fcb8 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Tue, 2 Jun 2026 17:18:04 -1000
Subject: [PATCH 15/28] Update Create-and-Use-Custom-Agents.md

---
 .../new-expensify/ai-agents/Create-and-Use-Custom-Agents.md   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
index 90a9422647e4..73c24df5991b 100644
--- a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
+++ b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
@@ -15,7 +15,9 @@ Each agent has its own Expensify account with a profile, display name, and instr
 
 ## Who can use Custom Agents
 
-Anyone with an Expensify account can create a Custom Agent.
+Custom Agents are currently available through an open beta program. If you'd like to try Custom Agents and provide feedback, contact Concierge to request access.
+
+Anyone with an Expensify account can create a Custom Agent once beta access is enabled on their account.
 
 To add a Custom Agent as an approver on a workspace:
 

From c502900cc2deb484fc83abfce5daf0233ce1f77f Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 5 Jun 2026 15:30:14 -1000
Subject: [PATCH 16/28] Add files via upload

---
 .../images/ExpensiHelp-CustomAgents-1.png     | Bin 0 -> 135253 bytes
 .../images/ExpensiHelp-CustomAgents-2.png     | Bin 0 -> 131633 bytes
 .../images/simple-illustration__ai-bot.svg    |  99 ++++++++++++++++++
 3 files changed, 99 insertions(+)
 create mode 100644 docs/assets/images/ExpensiHelp-CustomAgents-1.png
 create mode 100644 docs/assets/images/ExpensiHelp-CustomAgents-2.png
 create mode 100644 docs/assets/images/simple-illustration__ai-bot.svg

diff --git a/docs/assets/images/ExpensiHelp-CustomAgents-1.png b/docs/assets/images/ExpensiHelp-CustomAgents-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..186ff5c8213f1a221f0d59a580341aba2d8cdda3
GIT binary patch
diff --git a/docs/assets/images/ExpensiHelp-CustomAgents-2.png b/docs/assets/images/ExpensiHelp-CustomAgents-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..3923e2df12ed22e55a0ccf7227fff108554ec608
GIT binary patch
diff --git a/docs/assets/images/simple-illustration__ai-bot.svg b/docs/assets/images/simple-illustration__ai-bot.svg
new file mode 100644
index 000000000000..78ecc46f1412
--- /dev/null
+++ b/docs/assets/images/simple-illustration__ai-bot.svg
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 68 68">
+  <!-- Generator: Adobe Illustrator 30.4.0, SVG Export Plug-In . SVG Version: 2.1.4 Build 226)  -->
+  <defs>
+    <style>
+      .st0 {
+        fill: #4ed7de;
+      }
+
+      .st1 {
+        fill: #fffaf0;
+      }
+
+      .st2, .st3 {
+        fill: none;
+        stroke: #002140;
+        stroke-miterlimit: 10;
+      }
+
+      .st4 {
+        fill: #002140;
+      }
+
+      .st5 {
+        fill: #50eef6;
+      }
+
+      .st3 {
+        stroke-linecap: round;
+      }
+
+      .st6 {
+        fill: #fcdcff;
+      }
+
+      .st7 {
+        fill: #4ba6a6;
+      }
+    </style>
+  </defs>
+  <path class="st6" d="M59.958,17.649c.172,3.082,1.856,5.028,4.033,5.948-2.177.922-3.861,2.866-4.033,5.95-.171-3.084-1.856-5.028-4.033-5.95,2.177-.921,3.861-2.866,4.033-5.948Z"/>
+  <path class="st0" d="M56.604,28.595v25.389c0,1.23-1.006,2.236-2.236,2.236h-5.591c1.23,0,2.236-1.006,2.236-2.236v-25.389c0-1.23-1.006-2.236-2.236-2.236h5.591c1.23,0,2.236,1.006,2.236,2.236Z"/>
+  <path class="st5" d="M35.918,42.935h-14.306c-.943,0-1.709.764-1.709,1.709v6.051c0,.945.766,1.711,1.709,1.711h23.285c.943,0,1.709-.766,1.709-1.711v-6.051c0-.945-.766-1.709-1.709-1.709h-8.979ZM28.913,26.359h19.864c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236h-31.373c-1.23,0-2.236-1.006-2.236-2.236v-25.389c0-1.23,1.006-2.236,2.236-2.236h11.509ZM48.754,37.427v-5.956c0-.982-.796-1.776-1.776-1.776h-10.863c-.982,0-1.776.794-1.776,1.776v5.956c0,.98.794,1.776,1.776,1.776h10.863c.98,0,1.776-.796,1.776-1.776ZM32.057,37.41v-5.969c0-.98-.796-1.776-1.776-1.776h-10.883c-.98,0-1.776.796-1.776,1.776v5.969c0,.98.796,1.776,1.776,1.776h10.883c.98,0,1.776-.796,1.776-1.776Z"/>
+  <path class="st7" d="M41.432,31.803h-3.738c-.401,0-.723.324-.723.723v3.882c0,.399.322.723.723.723h7.762c.399,0,.723-.324.723-.723v-3.882c0-.399-.324-.723-.723-.723h-4.023ZM48.754,31.471v5.956c0,.98-.796,1.776-1.776,1.776h-10.863c-.982,0-1.776-.796-1.776-1.776v-5.956c0-.982.794-1.776,1.776-1.776h10.863c.98,0,1.776.794,1.776,1.776Z"/>
+  <path class="st1" d="M46.606,44.644v6.051c0,.945-.766,1.711-1.709,1.711h-3.388v-9.471h3.388c.943,0,1.709.764,1.709,1.709Z"/>
+  <path class="st1" d="M42.055,33.172l-.022-.056c-.136-.47-.341-.911-.6-1.314h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032l2.717-1.081Z"/>
+  <path class="st7" d="M43.779,23.269v3.09h-2.303v-3.09h2.303Z"/>
+  <path class="st4" d="M39.338,34.285l2.795,1.217c-.11.554-.311,1.075-.589,1.547v.082h-3.85c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6,1.314l.022.056-2.717,1.081v.032Z"/>
+  <path class="st1" d="M41.509,52.143v.263h-5.591v-9.471h5.591v9.208Z"/>
+  <path class="st0" d="M41.475,26.328v.032h-12.562v-3.09h12.562v3.058Z"/>
+  <path class="st5" d="M34.701,16.838c-.977-.509-1.644-1.534-1.644-2.711,0-1.69,1.368-3.058,3.058-3.058s3.058,1.368,3.058,3.058c0,1.191-.682,2.223-1.677,2.728-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347Z"/>
+  <path class="st7" d="M37.496,23.137v.132h-2.795v-6.431c.423.222.904.347,1.414.347s.967-.119,1.381-.33v6.282Z"/>
+  <path class="st1" d="M35.918,52.143v.263h-5.218v-9.471h5.218v9.208Z"/>
+  <path class="st7" d="M24.66,31.803h-3.738c-.401,0-.723.324-.723.723v3.882c0,.399.322.723.723.723h7.762c.399,0,.723-.324.723-.723v-3.882c0-.399-.324-.723-.723-.723h-4.023ZM32.057,31.441v5.969c0,.98-.796,1.776-1.776,1.776h-10.883c-.98,0-1.776-.796-1.776-1.776v-5.969c0-.98.796-1.776,1.776-1.776h10.883c.98,0,1.776.796,1.776,1.776Z"/>
+  <path class="st1" d="M30.7,52.143v.263h-5.404v-9.471h5.404v9.208Z"/>
+  <path class="st1" d="M25.283,33.172l-.022-.056c-.136-.47-.341-.911-.6-1.314h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032l2.717-1.081Z"/>
+  <path class="st4" d="M22.566,34.285l2.795,1.217c-.11.554-.311,1.075-.589,1.547v.082h-3.85c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6,1.314l.022.056-2.717,1.081v.032Z"/>
+  <path class="st1" d="M25.296,52.143v.263h-3.684c-.943,0-1.709-.766-1.709-1.711v-6.051c0-.945.766-1.709,1.709-1.709h3.684v9.208Z"/>
+  <path class="st6" d="M11.873,11.391c.291,5.268,3.166,8.591,6.888,10.162-3.722,1.571-6.597,4.894-6.888,10.162-.291-5.268-3.166-8.591-6.888-10.162,3.722-1.571,6.597-4.894,6.888-10.162Z"/>
+  <path class="st6" d="M8.822,31.564c.171,3.086,1.858,5.03,4.036,5.95-2.178.919-3.865,2.864-4.036,5.948-.171-3.084-1.856-5.03-4.036-5.948,2.18-.921,3.865-2.864,4.036-5.95Z"/>
+  <path class="st2" d="M48.777,26.359h5.591c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236H17.404c-1.23,0-2.236-1.006-2.236-2.236v-25.389c0-1.23,1.006-2.236,2.236-2.236h31.373Z"/>
+  <path class="st2" d="M48.777,26.359c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236"/>
+  <path class="st2" d="M41.509,42.935h3.388c.943,0,1.709.764,1.709,1.709v6.051c0,.945-.766,1.711-1.709,1.711h-23.285c-.943,0-1.709-.766-1.709-1.711v-6.051c0-.945.766-1.709,1.709-1.709h19.897Z"/>
+  <path class="st2" d="M25.296,42.803v9.34"/>
+  <path class="st2" d="M30.7,42.803v9.34"/>
+  <path class="st2" d="M35.918,42.803v9.34"/>
+  <path class="st2" d="M41.509,42.803v9.34"/>
+  <path class="st2" d="M30.281,29.665h-10.883c-.981,0-1.776.795-1.776,1.776v5.969c0,.981.795,1.776,1.776,1.776h10.883c.981,0,1.776-.795,1.776-1.776v-5.969c0-.981-.795-1.776-1.776-1.776Z"/>
+  <path class="st2" d="M24.66,31.803h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-7.762c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z"/>
+  <path class="st2" d="M24.577,31.676c.028.041.056.084.084.127.259.402.464.844.6,1.314"/>
+  <path class="st2" d="M25.376,35.433c-.004.022-.009.047-.015.069-.11.554-.311,1.075-.589,1.547"/>
+  <path class="st3" d="M22.566,34.253l2.717-1.081.013-.006"/>
+  <path class="st3" d="M25.361,35.502l-2.795-1.217"/>
+  <path class="st2" d="M46.978,39.203h-10.863c-.982,0-1.776-.796-1.776-1.776v-5.956c0-.982.794-1.776,1.776-1.776h10.863c.98,0,1.776.794,1.776,1.776v5.956c0,.98-.796,1.776-1.776,1.776Z"/>
+  <path class="st2" d="M41.432,31.803h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-7.762c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z"/>
+  <path class="st2" d="M41.349,31.676c.028.041.056.084.084.127.259.402.464.844.6,1.314"/>
+  <path class="st2" d="M42.148,35.433c-.004.022-.009.047-.015.069-.11.554-.311,1.075-.589,1.547"/>
+  <path class="st3" d="M39.338,34.253l2.717-1.081.013-.006"/>
+  <path class="st3" d="M42.133,35.502l-2.795-1.217"/>
+  <path class="st2" d="M28.913,26.426v-3.421"/>
+  <path class="st2" d="M28.65,23.269h15.391"/>
+  <path class="st2" d="M41.475,23.236v3.092"/>
+  <path class="st2" d="M43.779,26.426v-3.224"/>
+  <path class="st2" d="M34.701,16.838c-.977-.509-1.644-1.534-1.644-2.711,0-1.69,1.368-3.058,3.058-3.058s3.058,1.368,3.058,3.058c0,1.191-.682,2.223-1.677,2.728-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347Z"/>
+  <path class="st2" d="M34.701,16.823v6.314"/>
+  <path class="st2" d="M37.497,16.79v6.347"/>
+  <path class="st3" d="M4.972,21.559s.009-.004.013-.006c3.722-1.571,6.597-4.894,6.888-10.162.002-.03.004-.062.006-.093"/>
+  <path class="st3" d="M18.774,21.559s-.009-.004-.013-.006c-3.722-1.571-6.597-4.894-6.888-10.162,0-.03-.004-.062-.006-.093"/>
+  <path class="st3" d="M18.774,21.547s-.009.004-.013.006c-3.722,1.571-6.597,4.894-6.888,10.162,0,.03-.004.062-.006.093"/>
+  <path class="st3" d="M4.972,21.547s.009.004.013.006c3.722,1.571,6.597,4.894,6.888,10.162.002.03.004.062.006.093"/>
+  <path class="st3" d="M4.78,37.516s.004-.002.006-.002c2.18-.921,3.865-2.864,4.036-5.95.002-.019.002-.039.004-.058"/>
+  <path class="st3" d="M12.864,37.516s-.004-.002-.006-.002c-2.178-.921-3.865-2.864-4.036-5.95-.002-.019-.002-.039-.004-.058"/>
+  <path class="st3" d="M12.864,37.511s-.004,0-.006.004c-2.178.919-3.865,2.864-4.036,5.949-.002.019-.002.039-.004.058"/>
+  <path class="st3" d="M4.78,37.511s.004,0,.006.004c2.18.919,3.865,2.864,4.036,5.949.002.019.002.039.004.058"/>
+  <path class="st3" d="M55.916,23.601s.006-.002.009-.004c2.177-.921,3.861-2.866,4.033-5.948.002-.019.002-.039.004-.058"/>
+  <path class="st3" d="M64,23.601s-.006-.002-.009-.004c-2.177-.921-3.861-2.866-4.033-5.948,0-.019,0-.039-.004-.058"/>
+  <path class="st3" d="M64,23.593s-.006,0-.009.004c-2.177.922-3.861,2.866-4.033,5.95,0,.019,0,.039-.004.058"/>
+  <path class="st3" d="M55.916,23.593s.006,0,.009.004c2.177.922,3.861,2.866,4.033,5.95.002.019.002.039.004.058"/>
+</svg>
\ No newline at end of file

From 04818269e76f22bcc7f141437bd8acccff9712b8 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 5 Jun 2026 15:32:25 -1000
Subject: [PATCH 17/28] Update _routes.yml

---
 docs/_data/_routes.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/_data/_routes.yml b/docs/_data/_routes.yml
index 19474228c166..8d9a3e034a5b 100644
--- a/docs/_data/_routes.yml
+++ b/docs/_data/_routes.yml
@@ -228,7 +228,7 @@ platforms:
 
       - href: ai-agents
         title: AI Agents
-        icon: /assets/images/simple-illustration__concierge-bot.svg
+        icon: /assets/images/simple-illustration__ai-bot.svg
         description: Learn about Custom Agents and what they can do. 
 
       - href: workspaces

From 5e9173473307755a6042a9370dfd2683b3ee3e74 Mon Sep 17 00:00:00 2001
From: "Yuwen Memon (via MelvinBot)" <infra+melvinbot@expensify.com>
Date: Sat, 6 Jun 2026 01:34:16 +0000
Subject: [PATCH 18/28] Compress simple-illustration__ai-bot.svg to fix SVG
 compression check

Co-authored-by: Yuwen Memon <yuwenmemon@users.noreply.github.com>
---
 .../images/simple-illustration__ai-bot.svg    | 100 +-----------------
 1 file changed, 1 insertion(+), 99 deletions(-)

diff --git a/docs/assets/images/simple-illustration__ai-bot.svg b/docs/assets/images/simple-illustration__ai-bot.svg
index 78ecc46f1412..8843b5d18060 100644
--- a/docs/assets/images/simple-illustration__ai-bot.svg
+++ b/docs/assets/images/simple-illustration__ai-bot.svg
@@ -1,99 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 68 68">
-  <!-- Generator: Adobe Illustrator 30.4.0, SVG Export Plug-In . SVG Version: 2.1.4 Build 226)  -->
-  <defs>
-    <style>
-      .st0 {
-        fill: #4ed7de;
-      }
-
-      .st1 {
-        fill: #fffaf0;
-      }
-
-      .st2, .st3 {
-        fill: none;
-        stroke: #002140;
-        stroke-miterlimit: 10;
-      }
-
-      .st4 {
-        fill: #002140;
-      }
-
-      .st5 {
-        fill: #50eef6;
-      }
-
-      .st3 {
-        stroke-linecap: round;
-      }
-
-      .st6 {
-        fill: #fcdcff;
-      }
-
-      .st7 {
-        fill: #4ba6a6;
-      }
-    </style>
-  </defs>
-  <path class="st6" d="M59.958,17.649c.172,3.082,1.856,5.028,4.033,5.948-2.177.922-3.861,2.866-4.033,5.95-.171-3.084-1.856-5.028-4.033-5.95,2.177-.921,3.861-2.866,4.033-5.948Z"/>
-  <path class="st0" d="M56.604,28.595v25.389c0,1.23-1.006,2.236-2.236,2.236h-5.591c1.23,0,2.236-1.006,2.236-2.236v-25.389c0-1.23-1.006-2.236-2.236-2.236h5.591c1.23,0,2.236,1.006,2.236,2.236Z"/>
-  <path class="st5" d="M35.918,42.935h-14.306c-.943,0-1.709.764-1.709,1.709v6.051c0,.945.766,1.711,1.709,1.711h23.285c.943,0,1.709-.766,1.709-1.711v-6.051c0-.945-.766-1.709-1.709-1.709h-8.979ZM28.913,26.359h19.864c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236h-31.373c-1.23,0-2.236-1.006-2.236-2.236v-25.389c0-1.23,1.006-2.236,2.236-2.236h11.509ZM48.754,37.427v-5.956c0-.982-.796-1.776-1.776-1.776h-10.863c-.982,0-1.776.794-1.776,1.776v5.956c0,.98.794,1.776,1.776,1.776h10.863c.98,0,1.776-.796,1.776-1.776ZM32.057,37.41v-5.969c0-.98-.796-1.776-1.776-1.776h-10.883c-.98,0-1.776.796-1.776,1.776v5.969c0,.98.796,1.776,1.776,1.776h10.883c.98,0,1.776-.796,1.776-1.776Z"/>
-  <path class="st7" d="M41.432,31.803h-3.738c-.401,0-.723.324-.723.723v3.882c0,.399.322.723.723.723h7.762c.399,0,.723-.324.723-.723v-3.882c0-.399-.324-.723-.723-.723h-4.023ZM48.754,31.471v5.956c0,.98-.796,1.776-1.776,1.776h-10.863c-.982,0-1.776-.796-1.776-1.776v-5.956c0-.982.794-1.776,1.776-1.776h10.863c.98,0,1.776.794,1.776,1.776Z"/>
-  <path class="st1" d="M46.606,44.644v6.051c0,.945-.766,1.711-1.709,1.711h-3.388v-9.471h3.388c.943,0,1.709.764,1.709,1.709Z"/>
-  <path class="st1" d="M42.055,33.172l-.022-.056c-.136-.47-.341-.911-.6-1.314h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032l2.717-1.081Z"/>
-  <path class="st7" d="M43.779,23.269v3.09h-2.303v-3.09h2.303Z"/>
-  <path class="st4" d="M39.338,34.285l2.795,1.217c-.11.554-.311,1.075-.589,1.547v.082h-3.85c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6,1.314l.022.056-2.717,1.081v.032Z"/>
-  <path class="st1" d="M41.509,52.143v.263h-5.591v-9.471h5.591v9.208Z"/>
-  <path class="st0" d="M41.475,26.328v.032h-12.562v-3.09h12.562v3.058Z"/>
-  <path class="st5" d="M34.701,16.838c-.977-.509-1.644-1.534-1.644-2.711,0-1.69,1.368-3.058,3.058-3.058s3.058,1.368,3.058,3.058c0,1.191-.682,2.223-1.677,2.728-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347Z"/>
-  <path class="st7" d="M37.496,23.137v.132h-2.795v-6.431c.423.222.904.347,1.414.347s.967-.119,1.381-.33v6.282Z"/>
-  <path class="st1" d="M35.918,52.143v.263h-5.218v-9.471h5.218v9.208Z"/>
-  <path class="st7" d="M24.66,31.803h-3.738c-.401,0-.723.324-.723.723v3.882c0,.399.322.723.723.723h7.762c.399,0,.723-.324.723-.723v-3.882c0-.399-.324-.723-.723-.723h-4.023ZM32.057,31.441v5.969c0,.98-.796,1.776-1.776,1.776h-10.883c-.98,0-1.776-.796-1.776-1.776v-5.969c0-.98.796-1.776,1.776-1.776h10.883c.98,0,1.776.796,1.776,1.776Z"/>
-  <path class="st1" d="M30.7,52.143v.263h-5.404v-9.471h5.404v9.208Z"/>
-  <path class="st1" d="M25.283,33.172l-.022-.056c-.136-.47-.341-.911-.6-1.314h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032l2.717-1.081Z"/>
-  <path class="st4" d="M22.566,34.285l2.795,1.217c-.11.554-.311,1.075-.589,1.547v.082h-3.85c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6,1.314l.022.056-2.717,1.081v.032Z"/>
-  <path class="st1" d="M25.296,52.143v.263h-3.684c-.943,0-1.709-.766-1.709-1.711v-6.051c0-.945.766-1.709,1.709-1.709h3.684v9.208Z"/>
-  <path class="st6" d="M11.873,11.391c.291,5.268,3.166,8.591,6.888,10.162-3.722,1.571-6.597,4.894-6.888,10.162-.291-5.268-3.166-8.591-6.888-10.162,3.722-1.571,6.597-4.894,6.888-10.162Z"/>
-  <path class="st6" d="M8.822,31.564c.171,3.086,1.858,5.03,4.036,5.95-2.178.919-3.865,2.864-4.036,5.948-.171-3.084-1.856-5.03-4.036-5.948,2.18-.921,3.865-2.864,4.036-5.95Z"/>
-  <path class="st2" d="M48.777,26.359h5.591c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236H17.404c-1.23,0-2.236-1.006-2.236-2.236v-25.389c0-1.23,1.006-2.236,2.236-2.236h31.373Z"/>
-  <path class="st2" d="M48.777,26.359c1.23,0,2.236,1.006,2.236,2.236v25.389c0,1.23-1.006,2.236-2.236,2.236"/>
-  <path class="st2" d="M41.509,42.935h3.388c.943,0,1.709.764,1.709,1.709v6.051c0,.945-.766,1.711-1.709,1.711h-23.285c-.943,0-1.709-.766-1.709-1.711v-6.051c0-.945.766-1.709,1.709-1.709h19.897Z"/>
-  <path class="st2" d="M25.296,42.803v9.34"/>
-  <path class="st2" d="M30.7,42.803v9.34"/>
-  <path class="st2" d="M35.918,42.803v9.34"/>
-  <path class="st2" d="M41.509,42.803v9.34"/>
-  <path class="st2" d="M30.281,29.665h-10.883c-.981,0-1.776.795-1.776,1.776v5.969c0,.981.795,1.776,1.776,1.776h10.883c.981,0,1.776-.795,1.776-1.776v-5.969c0-.981-.795-1.776-1.776-1.776Z"/>
-  <path class="st2" d="M24.66,31.803h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-7.762c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z"/>
-  <path class="st2" d="M24.577,31.676c.028.041.056.084.084.127.259.402.464.844.6,1.314"/>
-  <path class="st2" d="M25.376,35.433c-.004.022-.009.047-.015.069-.11.554-.311,1.075-.589,1.547"/>
-  <path class="st3" d="M22.566,34.253l2.717-1.081.013-.006"/>
-  <path class="st3" d="M25.361,35.502l-2.795-1.217"/>
-  <path class="st2" d="M46.978,39.203h-10.863c-.982,0-1.776-.796-1.776-1.776v-5.956c0-.982.794-1.776,1.776-1.776h10.863c.98,0,1.776.794,1.776,1.776v5.956c0,.98-.796,1.776-1.776,1.776Z"/>
-  <path class="st2" d="M41.432,31.803h4.023c.399,0,.723.324.723.723v3.882c0,.399-.324.723-.723.723h-7.762c-.401,0-.723-.324-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z"/>
-  <path class="st2" d="M41.349,31.676c.028.041.056.084.084.127.259.402.464.844.6,1.314"/>
-  <path class="st2" d="M42.148,35.433c-.004.022-.009.047-.015.069-.11.554-.311,1.075-.589,1.547"/>
-  <path class="st3" d="M39.338,34.253l2.717-1.081.013-.006"/>
-  <path class="st3" d="M42.133,35.502l-2.795-1.217"/>
-  <path class="st2" d="M28.913,26.426v-3.421"/>
-  <path class="st2" d="M28.65,23.269h15.391"/>
-  <path class="st2" d="M41.475,23.236v3.092"/>
-  <path class="st2" d="M43.779,26.426v-3.224"/>
-  <path class="st2" d="M34.701,16.838c-.977-.509-1.644-1.534-1.644-2.711,0-1.69,1.368-3.058,3.058-3.058s3.058,1.368,3.058,3.058c0,1.191-.682,2.223-1.677,2.728-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347Z"/>
-  <path class="st2" d="M34.701,16.823v6.314"/>
-  <path class="st2" d="M37.497,16.79v6.347"/>
-  <path class="st3" d="M4.972,21.559s.009-.004.013-.006c3.722-1.571,6.597-4.894,6.888-10.162.002-.03.004-.062.006-.093"/>
-  <path class="st3" d="M18.774,21.559s-.009-.004-.013-.006c-3.722-1.571-6.597-4.894-6.888-10.162,0-.03-.004-.062-.006-.093"/>
-  <path class="st3" d="M18.774,21.547s-.009.004-.013.006c-3.722,1.571-6.597,4.894-6.888,10.162,0,.03-.004.062-.006.093"/>
-  <path class="st3" d="M4.972,21.547s.009.004.013.006c3.722,1.571,6.597,4.894,6.888,10.162.002.03.004.062.006.093"/>
-  <path class="st3" d="M4.78,37.516s.004-.002.006-.002c2.18-.921,3.865-2.864,4.036-5.95.002-.019.002-.039.004-.058"/>
-  <path class="st3" d="M12.864,37.516s-.004-.002-.006-.002c-2.178-.921-3.865-2.864-4.036-5.95-.002-.019-.002-.039-.004-.058"/>
-  <path class="st3" d="M12.864,37.511s-.004,0-.006.004c-2.178.919-3.865,2.864-4.036,5.949-.002.019-.002.039-.004.058"/>
-  <path class="st3" d="M4.78,37.511s.004,0,.006.004c2.18.919,3.865,2.864,4.036,5.949.002.019.002.039.004.058"/>
-  <path class="st3" d="M55.916,23.601s.006-.002.009-.004c2.177-.921,3.861-2.866,4.033-5.948.002-.019.002-.039.004-.058"/>
-  <path class="st3" d="M64,23.601s-.006-.002-.009-.004c-2.177-.921-3.861-2.866-4.033-5.948,0-.019,0-.039-.004-.058"/>
-  <path class="st3" d="M64,23.593s-.006,0-.009.004c-2.177.922-3.861,2.866-4.033,5.95,0,.019,0,.039-.004.058"/>
-  <path class="st3" d="M55.916,23.593s.006,0,.009.004c2.177.922,3.861,2.866,4.033,5.95.002.019.002.039.004.058"/>
-</svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" viewBox="0 0 68 68"><defs><style>.st0{fill:#4ed7de}.st1{fill:#fffaf0}.st2,.st3{fill:none;stroke:#002140;stroke-miterlimit:10}.st4{fill:#002140}.st5{fill:#50eef6}.st3{stroke-linecap:round}.st6{fill:#fcdcff}.st7{fill:#4ba6a6}</style></defs><path d="M59.958 17.649c.172 3.082 1.856 5.028 4.033 5.948-2.177.922-3.861 2.866-4.033 5.95-.171-3.084-1.856-5.028-4.033-5.95 2.177-.921 3.861-2.866 4.033-5.948" class="st6"/><path d="M56.604 28.595v25.389a2.24 2.24 0 0 1-2.236 2.236h-5.591a2.24 2.24 0 0 0 2.236-2.236V28.595a2.24 2.24 0 0 0-2.236-2.236h5.591a2.24 2.24 0 0 1 2.236 2.236" class="st0"/><path d="M35.918 42.935H21.612c-.943 0-1.709.764-1.709 1.709v6.051a1.71 1.71 0 0 0 1.709 1.711h23.285a1.71 1.71 0 0 0 1.709-1.711v-6.051c0-.945-.766-1.709-1.709-1.709zm-7.005-16.576h19.864a2.24 2.24 0 0 1 2.236 2.236v25.389a2.24 2.24 0 0 1-2.236 2.236H17.404a2.24 2.24 0 0 1-2.236-2.236V28.595a2.24 2.24 0 0 1 2.236-2.236zm19.841 11.068v-5.956c0-.982-.796-1.776-1.776-1.776H36.115c-.982 0-1.776.794-1.776 1.776v5.956c0 .98.794 1.776 1.776 1.776h10.863c.98 0 1.776-.796 1.776-1.776m-16.697-.017v-5.969c0-.98-.796-1.776-1.776-1.776H19.398c-.98 0-1.776.796-1.776 1.776v5.969c0 .98.796 1.776 1.776 1.776h10.883c.98 0 1.776-.796 1.776-1.776" class="st5"/><path d="M41.432 31.803h-3.738a.72.72 0 0 0-.723.723v3.882c0 .399.322.723.723.723h7.762a.723.723 0 0 0 .723-.723v-3.882a.723.723 0 0 0-.723-.723h-4.023Zm7.322-.332v5.956c0 .98-.796 1.776-1.776 1.776H36.115a1.776 1.776 0 0 1-1.776-1.776v-5.956c0-.982.794-1.776 1.776-1.776h10.863c.98 0 1.776.794 1.776 1.776" class="st7"/><path d="M46.606 44.644v6.051a1.71 1.71 0 0 1-1.709 1.711h-3.388v-9.471h3.388c.943 0 1.709.764 1.709 1.709m-4.551-11.472-.022-.056a5 5 0 0 0-.6-1.314h4.023c.399 0 .723.324.723.723v3.882a.723.723 0 0 1-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032z" class="st1"/><path d="M43.779 23.269v3.09h-2.303v-3.09z" class="st7"/><path d="m39.338 34.285 2.795 1.217a5 5 0 0 1-.589 1.547v.082h-3.85a.72.72 0 0 1-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6 1.314l.022.056-2.717 1.081z" class="st4"/><path d="M41.509 52.143v.263h-5.591v-9.471h5.591z" class="st1"/><path d="M41.475 26.328v.032H28.913v-3.09h12.562z" class="st0"/><path d="M34.701 16.838a3.057 3.057 0 0 1 1.414-5.769 3.057 3.057 0 0 1 1.381 5.786c-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347" class="st5"/><path d="M37.496 23.137v.132h-2.795v-6.431c.423.222.904.347 1.414.347s.967-.119 1.381-.33z" class="st7"/><path d="M35.918 52.143v.263H30.7v-9.471h5.218z" class="st1"/><path d="M24.66 31.803h-3.738a.72.72 0 0 0-.723.723v3.882c0 .399.322.723.723.723h7.762a.723.723 0 0 0 .723-.723v-3.882a.723.723 0 0 0-.723-.723h-4.023Zm7.397-.362v5.969c0 .98-.796 1.776-1.776 1.776H19.398c-.98 0-1.776-.796-1.776-1.776v-5.969c0-.98.796-1.776 1.776-1.776h10.883c.98 0 1.776.796 1.776 1.776" class="st7"/><path d="M30.7 52.143v.263h-5.404v-9.471H30.7zm-5.417-18.971-.022-.056a5 5 0 0 0-.6-1.314h4.023c.399 0 .723.324.723.723v3.882a.723.723 0 0 1-.723.723h-3.912v-.082c.278-.471.479-.993.589-1.547l-2.795-1.217v-.032z" class="st1"/><path d="m22.566 34.285 2.795 1.217a5 5 0 0 1-.589 1.547v.082h-3.85a.72.72 0 0 1-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738c.259.403.464.844.6 1.314l.022.056-2.717 1.081v.032Z" class="st4"/><path d="M25.296 52.143v.263h-3.684a1.71 1.71 0 0 1-1.709-1.711v-6.051c0-.945.766-1.709 1.709-1.709h3.684z" class="st1"/><path d="M11.873 11.391c.291 5.268 3.166 8.591 6.888 10.162-3.722 1.571-6.597 4.894-6.888 10.162-.291-5.268-3.166-8.591-6.888-10.162 3.722-1.571 6.597-4.894 6.888-10.162M8.822 31.564c.171 3.086 1.858 5.03 4.036 5.95-2.178.919-3.865 2.864-4.036 5.948-.171-3.084-1.856-5.03-4.036-5.948 2.18-.921 3.865-2.864 4.036-5.95" class="st6"/><path d="M48.777 26.359h5.591a2.24 2.24 0 0 1 2.236 2.236v25.389a2.24 2.24 0 0 1-2.236 2.236H17.404a2.24 2.24 0 0 1-2.236-2.236V28.595a2.24 2.24 0 0 1 2.236-2.236z" class="st2"/><path d="M48.777 26.359a2.24 2.24 0 0 1 2.236 2.236v25.389a2.24 2.24 0 0 1-2.236 2.236m-7.268-13.285h3.388c.943 0 1.709.764 1.709 1.709v6.051a1.71 1.71 0 0 1-1.709 1.711H21.612a1.71 1.71 0 0 1-1.709-1.711v-6.051c0-.945.766-1.709 1.709-1.709zm-16.213-.132v9.34m5.404-9.34v9.34m5.218-9.34v9.34m5.591-9.34v9.34M30.281 29.665H19.398c-.981 0-1.776.795-1.776 1.776v5.969c0 .981.795 1.776 1.776 1.776h10.883c.981 0 1.776-.795 1.776-1.776v-5.969c0-.981-.795-1.776-1.776-1.776Z" class="st2"/><path d="M24.66 31.803h4.023c.399 0 .723.324.723.723v3.882a.723.723 0 0 1-.723.723h-7.762a.72.72 0 0 1-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z" class="st2"/><path d="m24.577 31.676.084.127c.259.402.464.844.6 1.314m.115 2.316-.015.069a5 5 0 0 1-.589 1.547" class="st2"/><path d="m22.566 34.253 2.717-1.081.013-.006m.065 2.336-2.795-1.217" class="st3"/><path d="M46.978 39.203H36.115a1.776 1.776 0 0 1-1.776-1.776v-5.956c0-.982.794-1.776 1.776-1.776h10.863c.98 0 1.776.794 1.776 1.776v5.956c0 .98-.796 1.776-1.776 1.776Z" class="st2"/><path d="M41.432 31.803h4.023c.399 0 .723.324.723.723v3.882a.723.723 0 0 1-.723.723h-7.762a.72.72 0 0 1-.723-.723v-3.882c0-.399.322-.723.723-.723h3.738Z" class="st2"/><path d="m41.349 31.676.084.127c.259.402.464.844.6 1.314m.115 2.316-.015.069a5 5 0 0 1-.589 1.547" class="st2"/><path d="m39.338 34.253 2.717-1.081.013-.006m.065 2.336-2.795-1.217" class="st3"/><path d="M28.913 26.426v-3.421m-.263.264h15.391m-2.566-.033v3.092m2.304.098v-3.224m-9.078-6.364a3.057 3.057 0 0 1 1.414-5.769 3.057 3.057 0 0 1 1.381 5.786c-.414.211-.883.33-1.381.33s-.991-.125-1.414-.347Zm0-.015v6.314m2.796-6.347v6.347" class="st2"/><path d="m4.972 21.559.013-.006c3.722-1.571 6.597-4.894 6.888-10.162l.006-.093" class="st3"/><path d="m18.774 21.559-.013-.006c-3.722-1.571-6.597-4.894-6.888-10.162q-.001-.046-.006-.093" class="st3"/><path d="m18.774 21.547-.013.006c-3.722 1.571-6.597 4.894-6.888 10.162q-.001.046-.006.093" class="st3"/><path d="m4.972 21.547.013.006c3.722 1.571 6.597 4.894 6.888 10.162l.006.093M4.78 37.516l.006-.002c2.18-.921 3.865-2.864 4.036-5.95l.004-.058" class="st3"/><path d="m12.864 37.516-.006-.002c-2.178-.921-3.865-2.864-4.036-5.95l-.004-.058" class="st3"/><path d="M12.864 37.511s-.004 0-.006.004c-2.178.919-3.865 2.864-4.036 5.949l-.004.058" class="st3"/><path d="M4.78 37.511s.004 0 .006.004c2.18.919 3.865 2.864 4.036 5.949l.004.058m47.09-19.921.009-.004c2.177-.921 3.861-2.866 4.033-5.948l.004-.058" class="st3"/><path d="m64 23.601-.009-.004c-2.177-.921-3.861-2.866-4.033-5.948q.001-.029-.004-.058" class="st3"/><path d="M64 23.593s-.006 0-.009.004c-2.177.922-3.861 2.866-4.033 5.95q.001.029-.004.058" class="st3"/><path d="M55.916 23.593s.006 0 .009.004c2.177.922 3.861 2.866 4.033 5.95l.004.058" class="st3"/></svg>
\ No newline at end of file

From 49f9eb405aee44ccfa1a0e33c95aecc6bc171981 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Fri, 5 Jun 2026 15:40:39 -1000
Subject: [PATCH 19/28] Update Create-and-Use-Custom-Agents.md

---
 .../ai-agents/Create-and-Use-Custom-Agents.md        | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
index 73c24df5991b..e175290796e1 100644
--- a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
+++ b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
@@ -36,11 +36,9 @@ To add a Custom Agent as an approver on a workspace:
 5. In the **Write custom instructions** field, enter the prompt, or instructions the agent should follow. 
 6. Click **Create agent**.
 
-<!-- SCREENSHOT:
-Suggestion: Settings > Agents page showing the Create agent button and the agents list with one example agent
-Location: After the create agent steps
-Purpose: Helps users find the entry point for creating an agent
--->
+<!-- Screenshot: Account > Agents | Section: | Feature: New Agent -->
+
+![Agents page showing New Agent button]({{site.url}}/assets/images/ExpensiHelp-CustomAgents-1.png){:width="100%"}
 
 You can also create a Custom Agent from the **Set Approver** page by clicking **Create an agent**. Expensify automatically adds the new agent to the workspace as a member and assigns it as an approver.
 
@@ -158,6 +156,10 @@ The agent will receive each report submitted into the workflow and decide whethe
 
 For details on configuring approval workflows generally, [learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
 
+<!-- Screenshot: Workspaces > Workspace Name > Workflows | Section: Approvals | Feature: Approver -->
+
+![Workspace Workflows page showing Approvals section with a workflow configured]({{site.url}}/assets/images/ExpensiHelp-CustomAgents-2.png){:width="100%"}
+
 ## What happens after a Custom Agent reviews a report
 
  - The agent receives reports assigned to its approval step and evaluates them using its current instructions.

From c48780fa1b6bbca05748fdf41173019cae74a3f4 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 18:53:41 -1000
Subject: [PATCH 20/28] Update Create-and-Use-Custom-Agents.md

---
 .../ai-agents/Create-and-Use-Custom-Agents.md | 210 ++++++------------
 1 file changed, 70 insertions(+), 140 deletions(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
index e175290796e1..bf899c517a5c 100644
--- a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
+++ b/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
@@ -1,199 +1,129 @@
 ---
-title: Create and Use Custom Agents
-description: Create, configure, and manage AI-powered agents that act as approvers in your workspace approval workflows.
-keywords: [custom agents, AI agent, workflow agent, approval agent, agent approver, automated approval, AI approver, workspace approver, custom approver, agent prompt, agent copilot]
-internalScope: Audience is Workspace Admins and account owners. Covers how to create, configure, chat with, and delete custom agents, and how to add an agent as an approver in a workspace approval workflow. Does not cover Concierge AI, billing for agent credits, or personal agent usage in DMs.
+title: Create Agent Rules
+description: Create AI-powered workspace rules using natural-language instructions to automate report reviews, routing, approvals, and other actions.
+keywords: [agent rules, RuleBot, AI rules, automated approvals, report routing, workspace automation, approval automation]
+internalScope: Audience is Workspace Admins. Covers creating, managing, and understanding Agent Rules and how RuleBot enforces them. Does not cover Custom Agent management, personal AI features, or Concierge AI.
 ---
 
-# Create and Use Custom Agents
+# Create Agent Rules 
 
-Custom Agents are AI-powered virtual members of your Expensify account that can act as approvers in your workspace approval workflows. They follow instructions you write to evaluate reports and approve or reject them according to your company's rules. This allows you to automate approval decisions that may be too complex for standard workflow rules.
+Agent Rules are AI-powered rules that let Workspace Admins automate report reviews, routing, approvals, and other workspace actions using natural-language instructions. Write a description of the behavior you want, and RuleBot automatically evaluates reports and enforces your Agent Rules.
 
-Each agent has its own Expensify account with a profile, display name, and instructions you control. You can chat with an agent, copilot into its account to review what it's doing, and add it to a workspace as an approver.
+Agent Rules are useful when approval requirements can't be handled using standard workspace rules alone.
 
 ---
 
-## Who can use Custom Agents
+## Who can use Agent Rules
 
-Custom Agents are currently available through an open beta program. If you'd like to try Custom Agents and provide feedback, contact Concierge to request access.
+Agent Rules are currently available through an open beta program. If you'd like to try Agent Rules and provide feedback, contact Concierge to request access.
 
-Anyone with an Expensify account can create a Custom Agent once beta access is enabled on their account.
-
-To add a Custom Agent as an approver on a workspace:
+To create an Agent Rule: 
 
  - You must be a Workspace Admin.
- - **Workflows** must be enabled.
- - The Custom Agent must be a member of the workspace.
-
----
-
-## How to create a Custom Agent
-
-1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
-2. Click **Agents**.
-3. Click **New agent**.
-4. Review the auto-generated profile image and display name. If needed, you can edit these later.
-5. In the **Write custom instructions** field, enter the prompt, or instructions the agent should follow. 
-6. Click **Create agent**.
-
-<!-- Screenshot: Account > Agents | Section: | Feature: New Agent -->
-
-![Agents page showing New Agent button]({{site.url}}/assets/images/ExpensiHelp-CustomAgents-1.png){:width="100%"}
-
-You can also create a Custom Agent from the **Set Approver** page by clicking **Create an agent**. Expensify automatically adds the new agent to the workspace as a member and assigns it as an approver.
-
-After saving, the new agent appears in your **Agents** list with **Edit**, **Chat**, and **Copilot** buttons.
+ - The workspace must have access to the Agent Rules beta.
+ - **Rules** must be enabled on the workspace.
 
 ---
 
-## How to write instructions for a Custom Agent
-
-The prompt you share in the **Write custom instructions** field tells the agent what to do with each incoming report or chat message. Clear instructions help the agent approve or reject reports consistently.
-
-Useful things to include in an agent's instructions:
-
-- The agent's role (for example, "You review marketing team travel reports.").
-- The conditions under which the agent should **Approve** a report.
-- The conditions under which the agent should **Reject** a report and what feedback to leave.
-- Any escalation rules — for example, "Approve reports under $500; for anything higher, leave a comment asking the submitter to confirm the business purpose."
-
-Instructions are stored in Markdown, so you can use headings, bullets, and bold text to organize complex guidance.
-
-**Example approval prompt:**
-
-```
-# Role
-
-You review Marketing team travel reports.
-
-# Approve when
-
-- The report includes a business purpose.
-- Each expense has a receipt.
-- The total report amount is under $500.
+## How to create an Agent Rule
 
-# Reject when
-
-- A receipt is missing.
-- The business purpose is unclear.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**
+2. Click **Rules**.
+3. In the **Agent Rules** section, click **Add AI Rule**.
+5. Enter a natural-language description of the behavior you want.
+7. Click **Save**.
 
-When rejecting a report, leave a comment explaining what information is missing.
-```
 ---
 
-## How to chat with a Custom Agent
+## How to write Agent Rules
 
-To open a direct conversation with a Custom Agent:
+Agent Rules are written in natural language. Describe the outcome you want, and RuleBot will monitor reports and take action when the rule applies.
 
-1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
-2. Click **Agents**.
-3. Find the agent in the list and click **Chat**.
+Examples:
 
-The agent will respond using its current instructions. Use this to test how the agent reacts to different scenarios before adding it to a workflow.
+ - "Forward reports over $500 to Alice and all other reports to Bob."
+ - "Ask the submitter to justify any meal expense over $75."
+ - "Approve reports under $100 that contain no policy violations."
+ - "Add a 2% FX surcharge to all non-USD reimbursable expenses."
+ - "Forward reports containing hardware purchases to Alice. Route all other reports randomly between Bob and Cathy."
 
 ---
 
-## How to Copilot into a Custom Agent account
+## What happens after an Agent Rule is created 
 
-Each Custom Agent is its own Expensify account with a profile, inbox, chats, and activity history. When you create a Custom Agent, you become its owner and are automatically added as a full-access Copilot.
+When you create your first Agent Rule, Expensify automatically creates RuleBot and adds it to the workspace as a Workspace Admin.
 
-Use Copilot to see what the agent has done, review its activity, and inspect any actions it has taken on reports.
+RuleBot immediately begins monitoring report activity and evaluating reports against all configured Agent Rules.
 
-1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
-2. Click **Agents**.
-3. Find the agent in the list and click **Copilot**.
+Agent Rules apply to future report activity, but not existing Paid or Done reports. 
 
-[Learn more about Copilot](/articles/new-expensify/settings/Copilot-Access.md).
+## How RuleBot enforces Agent Rules
 
----
+RuleBot is an AI-powered workspace agent that enforces Agent Rules. 
 
-## How to edit a Custom Agent's instructions
+RuleBot can operate as a workspace observer that monitors reports and applies Agent Rules, and as the designated approver in a workflow
 
-You can edit an agent's profile image, display name, and instructions at any time.
+Whenever report activity occurs, RuleBot evaluates the report using:
 
-1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Account**.
-2. Click **Agents**.
-3. Click **Edit** on the agent you want to update.
-4. Update the profile image, display name, or instructions.
-5. Click **Save**.
+ - Workspace details
+ - All expenses on the report
+ - Recent report activity 
 
-Updated instructions apply to all future reports and chat messages the agent receives.
-
----
+Report activity includes actions such as:
 
-## How to delete a Custom Agent
-
-Deleting a Custom Agent closes its Expensify account. 
-
-1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Account**.
-2. Click **Agents**.
-3. On the agent you want to remove, click **Delete**.
-4. Confirm the deletion.
-
-If the agent is currently set as an approver on any workflow, remove it from those workflows first. [Learn how to edit or delete a workflow](/articles/new-expensify/workspaces/Add-Approvals#edit-or-delete-approval-workflows). 
+ - Adding an expense
+ - Submitting a report
+ - Posting a comment
+ - Editing report details
 
 ---
 
-## How to use a Custom Agent as an approver
-
-Before you can select a Custom Agent as an approver, the agent must be a member of the workspace.
+## What actions RuleBot can perform
 
-If the agent was created from a workflow setup flow, Expensify automatically adds it to the workspace. Otherwise, add the agent as a workspace member first.
+Depending on the Agent Rules you configure, RuleBot can:
 
-[Learn how to add a Custom Agent to a Workspace](/articles/new-expensify/workspaces/Managing-Workspace-Members#invite-members-to-a-workspace).
+ - Ask the submitter a question
+ - Edit an expense
+ - Forward a report
+ - Approve a report
 
-Once an agent is added to a workspace as a member, you can select it as an approver anywhere you'd choose a person:
+For example, RuleBot might:
 
-1. In the navigation tabs (on the left on web, on the bottom on mobile), click **Workspaces**.
-2. Click your workspace name.
-3. Click **Workflows**.
-4. Click the workflow you want to edit, or click **Add approval workflow** to create a new one.
-5. Click **Approver**.
-6. Choose the agent from the list of workspace members.
-7. Click **Save**.
-
-The agent will receive each report submitted into the workflow and decide whether to **Approve** or **Reject** it based on its instructions.
-
-For details on configuring approval workflows generally, [learn how to add approvals to a workspace](/articles/new-expensify/workspaces/Add-Approvals).
+ - Request additional information from a submitter
+ - Automatically adjust expenses
+ - Route reports to specific approvers
+ - Approve certain reports automatically 
+   
 
-<!-- Screenshot: Workspaces > Workspace Name > Workflows | Section: Approvals | Feature: Approver -->
-
-![Workspace Workflows page showing Approvals section with a workflow configured]({{site.url}}/assets/images/ExpensiHelp-CustomAgents-2.png){:width="100%"}
+---
 
-## What happens after a Custom Agent reviews a report
+## How to delete an Agent Rule
 
- - The agent receives reports assigned to its approval step and evaluates them using its current instructions.
- - When the agent approves a report, the workflow continues to the next approval step.
- - When the agent rejects a report, the submitter receives the agent's feedback and can update and resubmit the report.
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**
+2. Click **Rules**.
+3. In the **Agent Rules** section, select the AI rule you want to remove.
+4. Click **Delete**.
 
-Changes you make to the agent's instructions apply to future reports and conversations. You can chat with the agent to test updated instructions before using them in a workflow.
+Deleting an Agent Rule stops RuleBot from enforcing that rule on future report activity.
 
 ---
 
 # FAQ
 
-## Who can edit or delete a Custom Agent?
-
-Only the agent's owner can edit its instructions or delete it. The owner is the account that created the agent.
-
-## Are Custom Agents billed?
-
-An agent is a member of any workspace it's added to and is billed as a workspace member like any other member. Usage-based billing for agent activity is not yet in effect at this release.
-
-## Can I remove myself as a Copilot from a Custom Agent I created?
+## Can Agent Rules make mistakes?
 
-No. The owner is permanently added as a full-access Copilot on the agent's account so you always retain access to review and update the agent.
+Yes. Agent Rules are evaluated by an LLM and may occasionally behave unexpectedly.
 
-## What happens if my agent approves or rejects a report unexpectedly?
+Review AI-generated actions and instructions carefully. The Agent Rules page includes a reminder that AI-generated decisions may not always be correct.
 
-Copilot into the agent's account, open the **AI Prompt** page, and review the current instructions. Adjust the instructions so the agent handles that scenario the way you want, then click **Save**.
+## Do Agent Rules apply to existing reports?
 
-## Can a Custom Agent be added to multiple workspaces?
+No. Agent Rules are not retroactively applied to existing **Paid** or **Done** reports. 
 
-Yes. An agent is a member like any other and can be added to as many workspaces as you'd like, and selected as an approver in each of their workflows.
+## How much report history can RuleBot review?
 
-## Can I use a Custom Agent in multi-step approval workflows?
+When evaluating a report, RuleBot can review the 50 most recent report actions, including system messages describing previous actions it has taken on the report.
 
-Yes. On Control plans, Custom Agents can be used anywhere an approver can be selected, including multi-step approval workflows.
+## Do I need to create or manage RuleBot?
 
-On Collect plans, workspaces support a single approver. A Custom Agent can be used as that approver.
+No. RuleBot is created automatically when you add your first AI Rule and is managed by Expensify.

From b11a2e112766e5aa1e39538596b6f00279cddf84 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 18:59:38 -1000
Subject: [PATCH 21/28] Rename Create-and-Use-Custom-Agents.md to
 Create-Agent-Rules.md

---
 .../{Create-and-Use-Custom-Agents.md => Create-Agent-Rules.md}    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename docs/articles/new-expensify/ai-agents/{Create-and-Use-Custom-Agents.md => Create-Agent-Rules.md} (100%)

diff --git a/docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
similarity index 100%
rename from docs/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents.md
rename to docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md

From 5fff5e883fdc770962bdb4d4bc92ba6f5a5b7ccb Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 19:55:49 -1000
Subject: [PATCH 22/28] Create How-to-Write-Agent-Rules.md

---
 .../ai-agents/How-to-Write-Agent-Rules.md     | 127 ++++++++++++++++++
 1 file changed, 127 insertions(+)
 create mode 100644 docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md

diff --git a/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
new file mode 100644
index 000000000000..45a2d9d454eb
--- /dev/null
+++ b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
@@ -0,0 +1,127 @@
+---
+title: How to Write Agent Rules
+description: Learn how to write effective Agent Rules using natural-language instructions and examples.
+keywords: [agent rules, rulebot, prompt writing, ai rules, agent rule examples, agent rule best practices]
+internalScope: Audience is Workspace Admins. Covers best practices for writing Agent Rules and examples of effective instructions. Does not cover creating Agent Rules or managing Custom Agents.
+---
+
+# How to Write Agent Rules
+
+Agent Rules are written in natural language. Describe the behavior you want, and RuleBot evaluates reports against those instructions.Well-written Agent Rules help RuleBot make more consistent decisions and reduce unexpected behavior.
+
+If you're unsure how to write a rule, you can chat with RuleBot and describe the outcome you want. RuleBot can ask clarifying questions, help draft a rule, and explain how an existing rule would behave in a specific situation.
+
+---
+
+## Who can write Agent Rules
+
+Any Workspace Admin on a workspace with an Agent Rule configured can edit the rules. 
+
+If you haven't created an Agent Rule yet, [learn how to create Agent Rules](/articles/new-expensify/ai-agents/Create-Agent-Rules.md).
+
+---
+
+## How to write clear Agent Rules
+
+The best Agent Rules describe a specific outcome using clear, action-oriented language.
+
+When writing Agent Rules:
+
+ - Be specific and clear. Describe exactly what RuleBot should do and avoid vague instructions.
+ - Provide context when necessary. Include relevant details about your workflow, approval process, or company policies.
+ - Define the scope. Explain what RuleBot should handle and what it should ignore.
+ - Use examples when possible. Example scenarios can help RuleBot understand your intent.
+ - Start simple. Begin with a straightforward rule and refine it over time.
+ - Keep rules focused. Create separate rules for separate concerns rather than combining many behaviors into one rule.
+ - Use action-oriented language. Tell RuleBot what action to take when conditions are met.
+
+---
+
+## How to write Agent Rules for approvals 
+
+Approval rules work best when they define clear approval criteria. 
+
+Example:
+
+> Approve reports under $100 that contain no violations. Forward all other reports to Alice for review.
+
+More specific approval rules generally produce more predictable results than broad instructions such as:
+
+> Approve reports that seem reasonable.
+
+## How to write Agent Rules for routing
+
+Routing rules can be used to send reports to different approvers based on report details.
+
+Example:
+
+> Forward reports over $500 to Alice and all other reports to Bob.
+
+## How to write Agent Rules that request information
+
+Agent Rules can ask submitters for additional information when specific conditions are met.
+
+Example:
+
+> Ask the submitter to justify any meal expense over $75.
+
+## How to write Agent Rules that modify expenses
+
+Agent Rules can automatically update expenses when conditions are met.
+
+Example: 
+
+> Add a 2% FX surcharge to all non-USD reimbursable expenses.
+
+When writing rules that modify expenses, be explicit about which expenses should be updated and how they should be changed.
+
+---
+
+## How to use RuleBot to draft Agent Rules
+
+If you're not sure how to write an Agent Rule, you can chat with RuleBot and describe the outcome you want.
+
+For example:
+
+> I want to set a rule to ask for more information on expenses that took place over the weekend. Can you help?
+
+RuleBot may ask follow-up questions to clarify your requirements and then suggest a rule based on your answers.
+
+You can also ask RuleBot questions about existing Agent Rules to better understand how they work.
+
+To chat with RuleBot:
+
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**.
+2. Click **Members**.
+3. Select **RuleBot** from the list of workspace members.
+4. Click **Profile**.
+5. Click **Message**.
+
+---
+
+## What to do when an Agent Rule doesn't behave as expected
+
+If RuleBot isn't behaving the way you expect:
+
+ - Rewrite the rule using more specific language.
+- Break large rules into multiple focused rules.
+ - Add examples that demonstrate the intended behavior.
+ - Remove unnecessary instructions that may create ambiguity.
+
+Small changes often produce more reliable results than completely rewriting a rule.
+
+---
+
+# FAQ
+
+## Should I create one large rule or multiple smaller rules?
+
+Multiple focused rules are generally easier to understand, maintain, and troubleshoot than a single rule that handles many different scenarios.
+
+## How specific should Agent Rules be?
+
+As a general rule, the more specific the instruction, the more predictable the result.
+
+## Can Agent Rules make mistakes?
+
+Yes. Agent Rules are evaluated by an LLM and may occasionally behave unexpectedly. Review AI-generated actions and instructions carefully.

From 7c6b5157e315f43ad7d5ec7ac90060ea40717f68 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 19:58:40 -1000
Subject: [PATCH 23/28] Clarify descriptions of Agent Rules and RuleBot

Updated descriptions for clarity and consistency regarding Agent Rules and RuleBot functionality.
---
 .../new-expensify/ai-agents/Create-Agent-Rules.md | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
index bf899c517a5c..2a7a90ebaf7f 100644
--- a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
+++ b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
@@ -7,9 +7,9 @@ internalScope: Audience is Workspace Admins. Covers creating, managing, and unde
 
 # Create Agent Rules 
 
-Agent Rules are AI-powered rules that let Workspace Admins automate report reviews, routing, approvals, and other workspace actions using natural-language instructions. Write a description of the behavior you want, and RuleBot automatically evaluates reports and enforces your Agent Rules.
+Agent Rules are AI-powered rules that let Workspace Admins automate report reviews, routing, approvals, and other workspace actions using natural-language instructions.
 
-Agent Rules are useful when approval requirements can't be handled using standard workspace rules alone.
+When you create your first Agent Rule, Expensify automatically creates RuleBot, an AI-powered workspace agent that evaluates reports and enforces your Agent Rules.
 
 ---
 
@@ -37,15 +37,9 @@ To create an Agent Rule:
 
 ## How to write Agent Rules
 
-Agent Rules are written in natural language. Describe the outcome you want, and RuleBot will monitor reports and take action when the rule applies.
+Agent Rules are written in natural language. Describe the behavior you want, and RuleBot will monitor reports and take action when the rule applies.
 
-Examples:
-
- - "Forward reports over $500 to Alice and all other reports to Bob."
- - "Ask the submitter to justify any meal expense over $75."
- - "Approve reports under $100 that contain no policy violations."
- - "Add a 2% FX surcharge to all non-USD reimbursable expenses."
- - "Forward reports containing hardware purchases to Alice. Route all other reports randomly between Bob and Cathy."
+For guidance, examples, and prompt-writing best practices, [learn how to write Agent Rules](/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules).
 
 ---
 
@@ -94,7 +88,6 @@ For example, RuleBot might:
  - Route reports to specific approvers
  - Approve certain reports automatically 
    
-
 ---
 
 ## How to delete an Agent Rule

From fd2e345d64d5664af1ada87e90af7cfdb470484e Mon Sep 17 00:00:00 2001
From: "Yuwen Memon (via MelvinBot)" <infra+melvinbot@expensify.com>
Date: Fri, 12 Jun 2026 05:59:07 +0000
Subject: [PATCH 24/28] Fix spellcheck: use RuleBot casing in keywords

Co-authored-by: Yuwen Memon <yuwenmemon@users.noreply.github.com>
---
 .../new-expensify/ai-agents/How-to-Write-Agent-Rules.md         | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
index 45a2d9d454eb..2936cd48e6dc 100644
--- a/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
+++ b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
@@ -1,7 +1,7 @@
 ---
 title: How to Write Agent Rules
 description: Learn how to write effective Agent Rules using natural-language instructions and examples.
-keywords: [agent rules, rulebot, prompt writing, ai rules, agent rule examples, agent rule best practices]
+keywords: [agent rules, RuleBot, prompt writing, ai rules, agent rule examples, agent rule best practices]
 internalScope: Audience is Workspace Admins. Covers best practices for writing Agent Rules and examples of effective instructions. Does not cover creating Agent Rules or managing Custom Agents.
 ---
 

From 7d7c3daacce52a63a4a5e7276e2de645ff5cad0e Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 20:47:24 -1000
Subject: [PATCH 25/28] Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
 .../new-expensify/ai-agents/Create-Agent-Rules.md      |  4 ++--
 .../ai-agents/How-to-Write-Agent-Rules.md              | 10 +++++-----
 .../articles/new-expensify/workspaces/Add-Approvals.md |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
index 2a7a90ebaf7f..507390674085 100644
--- a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
+++ b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
@@ -24,7 +24,7 @@ To create an Agent Rule:
  - **Rules** must be enabled on the workspace.
 
 ---
-
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**.
 ## How to create an Agent Rule
 
 1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**
@@ -89,7 +89,7 @@ For example, RuleBot might:
  - Approve certain reports automatically 
    
 ---
-
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**.
 ## How to delete an Agent Rule
 
 1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**
diff --git a/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
index 2936cd48e6dc..06042d9da5c6 100644
--- a/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
+++ b/docs/articles/new-expensify/ai-agents/How-to-Write-Agent-Rules.md
@@ -7,7 +7,7 @@ internalScope: Audience is Workspace Admins. Covers best practices for writing A
 
 # How to Write Agent Rules
 
-Agent Rules are written in natural language. Describe the behavior you want, and RuleBot evaluates reports against those instructions.Well-written Agent Rules help RuleBot make more consistent decisions and reduce unexpected behavior.
+Agent Rules are written in natural language. Describe the behavior you want, and RuleBot evaluates reports against those instructions. Well-written Agent Rules help RuleBot make more consistent decisions and reduce unexpected behavior.
 
 If you're unsure how to write a rule, you can chat with RuleBot and describe the outcome you want. RuleBot can ask clarifying questions, help draft a rule, and explain how an existing rule would behave in a specific situation.
 
@@ -17,7 +17,7 @@ If you're unsure how to write a rule, you can chat with RuleBot and describe the
 
 Any Workspace Admin on a workspace with an Agent Rule configured can edit the rules. 
 
-If you haven't created an Agent Rule yet, [learn how to create Agent Rules](/articles/new-expensify/ai-agents/Create-Agent-Rules.md).
+If you haven't created an Agent Rule yet, [learn how to create Agent Rules](/articles/new-expensify/ai-agents/Create-Agent-Rules).
 
 ---
 
@@ -101,10 +101,10 @@ To chat with RuleBot:
 
 ## What to do when an Agent Rule doesn't behave as expected
 
-If RuleBot isn't behaving the way you expect:
-
  - Rewrite the rule using more specific language.
-- Break large rules into multiple focused rules.
+ - Break large rules into multiple focused rules.
+ - Add examples that demonstrate the intended behavior.
+ - Remove unnecessary instructions that may create ambiguity.
  - Add examples that demonstrate the intended behavior.
  - Remove unnecessary instructions that may create ambiguity.
 
diff --git a/docs/articles/new-expensify/workspaces/Add-Approvals.md b/docs/articles/new-expensify/workspaces/Add-Approvals.md
index 41e5eecb213e..b9c3ff009487 100644
--- a/docs/articles/new-expensify/workspaces/Add-Approvals.md
+++ b/docs/articles/new-expensify/workspaces/Add-Approvals.md
@@ -60,7 +60,7 @@ Set up default or custom approval workflows to route expenses through one or mor
 
 **Note:** Custom workflows are only available on the Control plan. To enable custom workflows, upgrade to the Control plan in Settings > Billing & Subscriptions.
 
-## How to Set a Custom Agent as Approver
+## How to set a Custom Agent as approver
 
 You can select a Custom Agent as an approver in any workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define.
 

From 126577163cbf69c77d6fca5b176b56c97e78b18c Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 20:49:00 -1000
Subject: [PATCH 26/28] Update Create-Agent-Rules.md

---
 docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
index 507390674085..fb84b08ba8e1 100644
--- a/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
+++ b/docs/articles/new-expensify/ai-agents/Create-Agent-Rules.md
@@ -55,7 +55,7 @@ Agent Rules apply to future report activity, but not existing Paid or Done repor
 
 RuleBot is an AI-powered workspace agent that enforces Agent Rules. 
 
-RuleBot can operate as a workspace observer that monitors reports and applies Agent Rules, and as the designated approver in a workflow
+RuleBot can operate as a workspace observer that monitors reports and applies Agent Rules, and as the designated approver in a workflow. 
 
 Whenever report activity occurs, RuleBot evaluates the report using:
 

From 43ddac3d3fcac31d06bbe0f6a4c7e16fb7596ddb Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 20:50:46 -1000
Subject: [PATCH 27/28] Update Add-Approvals.md

---
 docs/articles/new-expensify/workspaces/Add-Approvals.md | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/docs/articles/new-expensify/workspaces/Add-Approvals.md b/docs/articles/new-expensify/workspaces/Add-Approvals.md
index b9c3ff009487..5262c390e41d 100644
--- a/docs/articles/new-expensify/workspaces/Add-Approvals.md
+++ b/docs/articles/new-expensify/workspaces/Add-Approvals.md
@@ -60,14 +60,6 @@ Set up default or custom approval workflows to route expenses through one or mor
 
 **Note:** Custom workflows are only available on the Control plan. To enable custom workflows, upgrade to the Control plan in Settings > Billing & Subscriptions.
 
-## How to set a Custom Agent as approver
-
-You can select a Custom Agent as an approver in any workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define.
-
-Custom Agents are added to workspaces and assigned as approvers the same way as other workspace members. Once a Custom Agent is a member of the workspace, you can select it anywhere you would normally choose an approver.
-
-[Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents).
-
 ---
 
 ## Edit or Delete Approval Workflows

From d343f6920ad9583f43caa7a5e6399552ad03ef61 Mon Sep 17 00:00:00 2001
From: Stephanie Elliott <31225194+stephanieelliott@users.noreply.github.com>
Date: Thu, 11 Jun 2026 20:59:07 -1000
Subject: [PATCH 28/28] Update Workspace-Rules.md

---
 docs/articles/new-expensify/workspaces/Workspace-Rules.md | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/docs/articles/new-expensify/workspaces/Workspace-Rules.md b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
index a39f09666bfc..74a0876a4070 100644
--- a/docs/articles/new-expensify/workspaces/Workspace-Rules.md
+++ b/docs/articles/new-expensify/workspaces/Workspace-Rules.md
@@ -9,11 +9,7 @@ internalScope: Audience is Workspace Admins on the Control plan. Covers enabling
 
 Workspace Rules let Admins enforce expense policies by setting custom requirements for receipts, spending limits, category behavior, auto-approvals, and more. These rules help ensure compliance and streamline the approval process.
 
-**Note:** Rules are only available on the **Control** plan. You must be a **Workspace Admin** to enable or manage them.
-
-You can also [add text or a PDF expense policy document](/articles/new-expensify/workspaces/Add-an-Expense-Policy-to-a-Workspace) to your workspace overview page so members can reference your company's expense guidelines.
-
-If your approval requirements can't be handled using workspace rules alone, you can use a Custom Agent as an approver in your workflow. Custom Agents are AI-powered virtual members that review reports and approve or reject them based on instructions you define. [Learn how to create and use Custom Agents](/articles/new-expensify/ai-agents/Create-and-Use-Custom-Agents).
+If your approval requirements can't be handled using Workspace Rules alone, create an Agent Rule. Agent Rules are AI-powered rules that let Workspace Admins automate report reviews, routing, approvals, and other workspace actions using natural-language instructions. [Learn how to create Agent Rules](/articles/new-expensify/ai-agents/Create-Agent-Rules).
 
 ---
 
