Update an existing AI agent by UUID
Before You Begin
- Use the GraphQL Playground.
- Authenticate with a Service Account token.
Prerequisites
- You must have admin permission on the agent's pipe or table (and on the new pipe or table if moving the agent).
- The organization must have the AI Agents feature enabled.
- You need the agent UUID. Query it using the
aiAgentsquery:
{
aiAgents(repoUuid: "1cc2bce3-1ea3-4af0-8fe9-0b899c73ae84") {
edges {
node {
uuid
name
}
}
}
}
Update an AI Agent
Inputs
- uuid: The agent UUID to update (required).
- agent.name: Updated display name (required).
- agent.repoUuid: UUID of the pipe or table (required). Change this to move the agent to a different pipe or table.
- agent.instruction: Updated agent-level instruction (optional).
- agent.dataSourceIds: Updated list of knowledge base IDs (optional). See Create AI Agent → Knowledge Bases.
- agent.disabledAt: Pass
nullto enable the agent; pass a timestamp to disable it (optional). - agent.behaviors: Updated list of behaviors (optional). If included, any existing behavior whose
idis not in the list will be deleted.
Basic example (update agent name and instruction)
mutation {
updateAiAgent(input: {
uuid: "bfcf25c0-afcf-40db-8a63-04094620c1e8"
agent: {
name: "Updated Customer Support Agent"
repoUuid: "1cc2bce3-1ea3-4af0-8fe9-0b899c73ae84"
instruction: "Help customers with inquiries. Escalate complex issues to a human agent."
dataSourceIds: ["93779687-19d5-42dd-8b8a-e8b75e1c12dd"]
disabledAt: null
}
}) {
agent {
uuid
name
instruction
repoUuid
dataSourceIds
disabledAt
}
}
}
Response:
{
"data": {
"updateAiAgent": {
"agent": {
"uuid": "bfcf25c0-afcf-40db-8a63-04094620c1e8",
"name": "Updated Customer Support Agent",
"instruction": "Help customers with inquiries. Escalate complex issues to a human agent.",
"repoUuid": "1cc2bce3-1ea3-4af0-8fe9-0b899c73ae84",
"dataSourceIds": ["93779687-19d5-42dd-8b8a-e8b75e1c12dd"],
"disabledAt": null
}
}
}
}
Response explained
- agent.uuid: The agent identifier (unchanged).
- agent.name / instruction: Updated values.
- agent.repoUuid: UUID of the pipe or table. Can be changed to move the agent.
- agent.dataSourceIds: Updated list of knowledge base IDs.
- agent.disabledAt:
nullmeans the agent is active.
Important: When
behaviorsis omitted from the update anddisabledAtis not passed, the agent is automatically disabled (because there are no active behaviors in the request). Always passdisabledAt: nullexplicitly if you want the agent to remain active when updating only name, instruction, or other fields.
Updating behaviors
The behaviors field follows the same input structure as in Create AI Agent. When behaviors is included in the update:
- Behaviors with an
idmatching an existing behavior are updated in place. - Behaviors without an
idare created as new. - Existing behaviors whose
idis not present in the list are deleted.
If you omit behaviors entirely, existing behaviors are left unchanged.
Update an existing behavior
Pass the behavior's numeric id (automation ID) to update it. Any behavior IDs not included in the list will be deleted.
mutation {
updateAiAgent(input: {
uuid: "bfcf25c0-afcf-40db-8a63-04094620c1e8"
agent: {
name: "Comments Summary Agent"
repoUuid: "1cc2bce3-1ea3-4af0-8fe9-0b899c73ae84"
dataSourceIds: ["93779687-19d5-42dd-8b8a-e8b75e1c12dd"]
behaviors: [
{
id: "305992651"
name: "Summarize comments when card moves"
actionId: "ai_behavior"
eventId: "card_moved"
active: false
eventParams: {
to_phase_id: "338796240"
}
condition: {
expressions_structure: []
expressions: []
}
actionParams: {
aiBehaviorParams: {
instruction: "Read the field %{field:all_comments} and update the card with the summary of those comments, executing the action %{action:63637099-d172-4196-b46a-1864ed61e685} and executing the action %{action:88eb26bc-c838-41a7-a8f7-4f6c3df337a4}"
referencedFieldIds: ["all_comments"]
dataSourceIds: ["93779687-19d5-42dd-8b8a-e8b75e1c12dd"]
actionsAttributes: [
{
id: "0e73ad94-496c-4fa1-99e2-089f880ed6ca"
name: "Move card"
actionType: "move_card"
referenceId: "88eb26bc-c838-41a7-a8f7-4f6c3df337a4"
metadata: {
destinationPhaseId: "338796241"
pipeId: "306422123"
fieldsAttributes: []
}
},
{
id: "74b6f9e8-de85-417b-9abd-5040019f8f5b"
name: "Update card fields"
actionType: "update_card"
referenceId: "63637099-d172-4196-b46a-1864ed61e685"
metadata: {
pipeId: "306422123"
fieldsAttributes: [
{
fieldId: "421679209"
inputMode: "fill_with_ai"
value: ""
}
]
}
}
]
}
}
}
]
}
}) {
agent {
uuid
name
behaviors {
id
name
active
event_id
action_id
}
}
}
}
Important: Including only one behavior in
behaviorswill delete all other existing behaviors. Always include theidof every behavior you want to keep.
Disable a behavior
Set active: false on the behavior to disable it without deleting it. Include the behavior id and all other existing behavior IDs to avoid unintended deletions.
Move the agent to a different pipe
Update repoUuid to move the agent. The name and repoUuid fields are always required.
mutation {
updateAiAgent(input: {
uuid: "bfcf25c0-afcf-40db-8a63-04094620c1e8"
agent: {
name: "Comments Summary Agent"
repoUuid: "new-pipe-uuid-456"
}
}) {
agent {
uuid
name
repoUuid
disabledAt
}
}
}
Error handling
If the agent doesn't exist or you don't have permission to update it:
{
"data": {
"updateAiAgent": null
},
"errors": [
{
"message": "Resource Not Found - Couldn't find Agent with uuid bfcf25c0-afcf-40db-8a63-04094620c1e8",
"locations": [{ "line": 2, "column": 3 }],
"path": ["updateAiAgent"]
}
]
}
- data.updateAiAgent: Returns
nullwhen the operation fails. - errors[].message: Human-readable error description.
Tips
nameandrepoUuidare always required even when updating only other fields.- Behavior IDs: The behavior
idis the numeric automation ID (e.g.,"305992651"). Action IDs withinactionsAttributesare UUIDs (e.g.,"0e73ad94-..."). - Behavior deletion: When
behaviorsis included, any existing behavior not represented by anidin the list is deleted. Always include all behavior IDs you want to keep. - Omitting
behaviors: Existing behaviors are unchanged when the field is omitted entirely. disabledAtand agent status: PassdisabledAt: nullto keep the agent active. IfdisabledAtis omitted and no active behavior is included in the request, the agent is automatically disabled. PassdisabledAt: nullexplicitly whenever you want the agent to remain enabled.
