doctl harness-runtime triggers create
Generated on 1 Oct 2026
from doctl version
v1.177.0
Usage
doctl harness-runtime triggers create [flags]Description
Create a webhook or cron trigger.
--session-mode fresh needs a session template, either --spec (agents.yaml) or --from-config (an existing Agent Config, by name or ID). --session-mode reuse needs --bound-session-id (a paused session — see list-reusable-sessions).
Webhook: optional --provider (github|gitlab|custom). Cron: requires --cron-expr and --timezone. Set --output-mode to none, email, or slack for run-result delivery.
--from-config copies, it does not link. The config’s manifest is read once, now, and stored on the trigger — replacing or editing the config later does not change triggers already created from it. A config’s stored secret values are never returned to a client, so supply them again here with --secret NAME=VALUE (also NAME=@path / NAME=-, repeatable), which works with --spec too.
Example
doctl harness-runtime triggers create --kind webhook --name gh-ci --session-mode fresh --prompt 'Review this PR: {{payload}}' --spec ./agent.yaml --provider githubFlags
| Option | Description |
|---|---|
--bound-session-id |
Paused session ID for session-mode=reuse |
--cron-expr |
Cron expression when kind=cron |
--format |
Columns for output in a comma-separated list. Possible values: TriggerID, Name, Kind, Status, SessionMode, AgentKind, BoundSessionID, WebhookURL, NextRunAt, CreatedAt. |
--from-config |
Name or ID of an existing Agent Config to use as the session template for session-mode=fresh, instead of –spec. Its manifest is copied into this trigger at create time. |
--help, -h |
Help for this command |
--kind |
Trigger kind (webhook|cron) (required) |
--name |
Unique trigger name for the team (1–64 characters: letters, digits, hyphen, dot, underscore; starts and ends alphanumeric, not a UUID) (required) |
--no-header |
Return raw data with no headers Default: false |
--output-email |
Destination email when output-mode=email |
--output-mode |
Output delivery mode (none|email|slack) Default: none |
--output-slack-webhook |
Slack incoming webhook URL when output-mode=slack |
--prompt |
Prompt template sent on each fire (required) |
--provider |
Webhook provider (github|gitlab|custom); default custom |
--secret |
Tenant secret as NAME=VALUE, injected into the manifest’s secret slots (overriding a value declared in the file). Repeatable. NAME=@path reads the value from a file and NAME=- reads it from stdin, so a credential need not appear in shell history or in checked-in YAML. |
--session-mode |
Session mode (fresh|reuse) (required) |
--spec |
Path to agents.yaml manifest for session-mode=fresh ("-" reads stdin). ${VAR} references are resolved from the local environment at create time and stored expanded. |
--timezone |
IANA timezone when kind=cron (e.g. America/New_York) |
Related Commands
| Command | Description |
|---|---|
| doctl harness-runtime triggers | Manage webhook and cron triggers for hosted agent runs |
Global Flags
| Option | Description |
|---|---|
--access-token, -t |
API V2 access token |
--api-url, -u |
Override default API endpoint |
--config, -c |
Specify a custom config file Default: |
--context |
Specify a custom authentication context name |
--http-retry-max |
Set maximum number of retries for requests that fail with a 429 or 500-level error
Default: 5 |
--http-retry-wait-max |
Set the minimum number of seconds to wait before retrying a failed request
Default: 30 |
--http-retry-wait-min |
Set the maximum number of seconds to wait before retrying a failed request
Default: 1 |
--interactive |
Enable interactive behavior. Defaults to true if the terminal supports it (default false)
Default: false |
--output, -o |
Desired output format [text|json] Default: text |
--trace |
Show a log of network activity while performing a command Default: false |
--verbose, -v |
Enable verbose output Default: false |