> ## Documentation Index
> Fetch the complete documentation index at: https://docs.komodor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Triggers

> The four kinds of trigger, why they belong to the agent, and where inbound endpoints fit instead.

A trigger is anything configured on an agent that starts a run. In the Komodor Agentic Operation
Platform (KAOP) triggers belong to the agent and are added on its own page, so the answer to "what
can start this agent?" is one list rather than several registries you have to cross-reference.

The Triggers tab is the complete list of what starts the agent on its own. Manual invocation —
**Run agent** and a direct API call — is separate, and keeps working when the agent is disabled; see
[The agent page](https://docs.komodor.com/manage-your-agents/fleet/agent-page.md#disabling-an-agent).

## The four kinds

| Trigger | What starts the run | What it carries |
| - | - | - |
| **Chat** | A person asks the agent in a connected channel. | Whether the agent accepts chat at all. |
| **Webhook** | An external event — a ticket, a form, a mention — posted to the agent's own URL. | The URL is issued with the trigger and shown beside it. |
| **Schedule** | A cron expression KAOP owns. | The expression and its timezone, shown together on the row. |
| **Workflow step** | A workflow reaches a stage this agent is bound to. | The binding, which also appears on the workflow. |

An agent commonly has several at once — a schedule for the routine pass, a webhook for the urgent
one, chat for a person who wants to ask directly. They are independent of each other, and
[disabling the agent](https://docs.komodor.com/manage-your-agents/fleet/agent-page.md#disabling-an-agent) stops all of them.

## Schedules

A schedule is a standard five-field cron expression plus a timezone, and optionally a JSON input
handed to the agent on every fire.

Set the timezone to the zone your team thinks in. A schedule written as 09:00 in Berlin is
converted to its UTC equivalent, and that conversion is re-derived as the offset changes — so the
run stays at 09:00 local across a daylight-saving transition rather than drifting by an hour twice
a year.

An expression KAOP cannot schedule is rejected when you save it, with the reason.

> [!WARNING]
>
> There is no minimum interval. A schedule can run every minute, which also means nothing stops you
> scheduling an expensive agent far more often than you meant to. Check the agent's budget after
> adding a frequent schedule.

## Schedules an agent declares for itself

An agent can declare its own schedules in its spec, and those register when the worker connects:

```yaml theme={null}
triggers:
  - id: nightly
    type: schedule
    name: Nightly summary
    cron: "0 6 * * *"
```

They appear badged **Declared in agent-spec** and are read-only in the console, because the
schedule's source of truth is the agent's repository — an edit made here would be overwritten on
the agent's next contact. A spec-declared schedule with no timezone runs in UTC.

Declare a schedule in the spec when it is part of what the agent *is*: a nightly digest agent
makes no sense without its nightly run. Add it on the agent when it is an operational choice you
may want to change without a deploy.

## Endpoints are not triggers

A webhook trigger belongs to one agent and starts it directly. An **inbound endpoint** is a
different object, living under [Connections](https://docs.komodor.com/manage-your-agents/build/connections): it
authenticates a specific sender, it can capture payloads before routing anywhere, and its URL is
stable independently of what it points at.

| | **Webhook trigger** | **Inbound endpoint** |
| - | - | - |
| Belongs to | One agent | The account |
| What you configure | Little — the URL is issued with it | Sender, authentication, field mapping, routing |
| Can route to | Its own agent | One or more agents or workflows, or nothing yet |
| Good for | One agent answering one URL | A sender with its own signing scheme, or a payload you want to see before deciding what it starts |

An endpoint with no target is a legitimate state: it accepts deliveries and captures them without
running anything, which is the right way to confirm a sender's payload shape before pointing it at
an agent. The target can be attached later without the URL changing.

> [!WARNING]
>
> An endpoint's token is shown once, when it is created or rotated. A GitHub endpoint validates
> every delivery against a signing secret, so an endpoint created without one rejects everything
> while looking configured.

## Next steps

> [card] [Connections](https://docs.komodor.com/manage-your-agents/build/connections)
>
> Where inbound endpoints and outbound webhooks live.

> [card] [The agent page](https://docs.komodor.com/manage-your-agents/fleet/agent-page.md)
>
> Where an agent's triggers are added and read.


## Related topics

- [Troubleshooting](https://docs.komodor.com/reference/troubleshooting.md)
- [Limits & quotas](https://docs.komodor.com/reference/limits-quotas.md)
- [The agent page](https://docs.komodor.com/manage-your-agents/fleet/agent-page.md)
- [Connections](https://docs.komodor.com/manage-your-agents/build/connections.md)
- [Integrations list](https://docs.komodor.com/manage-your-agents/build/built-in-integrations.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.