Trigger

Field Type Behavior Description
name string OUTPUT_ONLY Resource name (triggers/{id})
display_name string   Human-readable name for the trigger
description string   Description of what this trigger does
agent string REQUIRED The agent to create sessions for. Format: agents/{agent}
configuration TriggerConfiguration   Determines trigger type and behavior
enabled boolean   Whether the trigger is enabled. Disabled cron triggers are not executed. Manual triggers can always be invoked regardless of this setting.
activation_state TriggerActivationState OUTPUT_ONLY Runtime activation state. Set for post_deploy and row triggers.
create_time timestamp OUTPUT_ONLY When the trigger was created
update_time timestamp OUTPUT_ONLY When the trigger was last modified
delete_time timestamp OUTPUT_ONLY When the trigger was soft-deleted (null if active)

Example

{
  "name": "triggers/daily-health-check",
  "displayName": "Daily Health Check",
  "description": "Runs a health check every morning at 9 AM Eastern",
  "agent": "agents/health-checker",
  "configuration": {
    "cron": {
      "schedule": "0 9 * * *",
      "timezone": "America/New_York"
    }
  },
  "enabled": true,
  "createTime": "2026-02-06T01:42:31.481530Z",
  "updateTime": "2026-02-06T01:42:31.481530Z"
}

Trigger Configuration

Exactly one of the following fields must be set to determine the trigger type.

Field Type Description
cron CronTriggerConfig Trigger fires on the cron schedule
manual ManualTriggerConfig Trigger can only be manually invoked via InvokeTrigger
post_deploy PostDeployTriggerConfig Trigger fires once after a specific commit deploys
row RowTriggerConfig Trigger fires when a new row matching a predicate is written to a table
slack_message_posted SlackMessagePostedTriggerConfig Trigger fires when a message is posted to a listed Slack channel
slack_agent_mentioned SlackAgentMentionedTriggerConfig Trigger fires when the agent’s Slack handle is @mentioned

Cron Trigger Config

Field Type Required Description
schedule string Yes Standard 5-field cron expression (e.g. "0 9 * * *" for daily at 9 AM, "*/15 * * * *" for every 15 minutes)
timezone string No IANA timezone for interpreting the schedule (e.g. "America/New_York"). Defaults to "UTC".

Manual Trigger Config

Empty object. Manual triggers have no automatic execution and can only be invoked via InvokeTrigger.

Post Deploy Trigger Config

Field Type Required Description
repository string Yes GitHub repository in "owner/repo" format
environment string Yes Environment label to watch (e.g. "production", "staging")
sha string Yes Commit SHA that must deploy before this trigger fires. Also fires for descendant commits. Immutable after creation.
delay duration Yes How long to wait after the deployment before firing (e.g. "300s" for 5 minutes)

Row Trigger Config

Field Type Required Description
table_name string Yes Logical table name to watch (e.g. "opentelemetry/logs/api-server"). Does not include the organization namespace.
predicate string Yes SQL boolean expression evaluated against each incoming row. Column references are validated against the table schema at creation time. Subqueries and aggregations are not permitted.
cooldown duration No Minimum time between agent session invocations. Subsequent matching rows are suppressed until the cooldown expires. Must be at least 5 minutes if set. Defaults to 15 minutes if omitted.

Slack Message Posted Trigger Config

Field Type Required Description
slack_connection string Yes The Slack connection to scope this trigger to (connections/{id})
channels array of string Yes Channel names (with leading #) that fire this trigger. Must be a subset of the connection’s allowed_channels unless that list is empty (in which case any channel is allowed).
include_thread_replies bool No When true, fires on replies in existing threads as well as top-level messages. When false, only top-level messages. Defaults to true when omitted.

Every matching message creates a new agent session — there is no server-side cooldown. Callers that need throttling should handle it upstream or via the agent’s tool configuration.

Slack Agent Mentioned Trigger Config

Field Type Required Description
slack_connection string Yes The Slack connection to scope this trigger to (connections/{id})
handle string Yes Agent handle shown to users (without leading @). Normalized server-side (a supplied @ is stripped). Must be unique within the workspace.
user_group_id string Output-only Slack user group ID. Populated by the server once the user group has been auto-provisioned; empty until then.
channels array of string No Optional channel scope. When non-empty, must be a subset of the connection’s allowed_channels. Empty means any allowed channel.

Trigger Activation State

Output-only state set by the system. Post-deploy triggers set post_deploy; row triggers set row. Slack triggers are stateless — every matching event creates a new session.

Field Type Description
post_deploy PostDeployActivationState Activation state for post-deploy triggers
row RowTriggerActivationState Activation state for row triggers

Post Deploy Activation State

Field Type Description
deployment string The deployment that triggered activation (deployments/{id})
deployed_sha string The SHA that was actually deployed (may be a descendant of the configured SHA)
deploy_time timestamp Time of the deployment
fire_at_time timestamp Precomputed time to fire (deploy_time + delay)
fired_time timestamp When a session was created, or null if activated but not yet fired

Row Trigger Activation State

Field Type Description
last_fire_time timestamp The last time this trigger successfully fired an agent session

This site uses Just the Docs, a documentation theme for Jekyll.