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 github

Flags

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)
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

    We can't find any results for your search.

    Try using different keywords or simplifying your search terms.