Skip to content

Workflow YAML

This page lists every field in a workflow file. Use it to look up a field name or a rule. For a guided start, read Agentic Workflows first.

Field Required Rule
name Yes Text. The name shown in the workflow list.
slug Yes Lowercase letters and digits, joined by single hyphens. At most 255 characters. Unique across your workflows.
trigger Yes A block with a type. See Trigger fields.
steps Yes A list with at least one step. See Step fields.
llm_config No Limits for AI steps. See llm_config.
repo For github and azure_devops triggers The repository whose events start the workflow.

The slug is also the identity the agent commits with. A workflow with the slug ci-fix commits as Anthara CI-FIX. Choose the slug once and keep it.

trigger.type must be one of manual, cron, github, azure_devops, or webhook. Settings go under trigger.config.

Field Required Rule
config.inputs No A list of inputs. Each input has a name and an optional type. The type is string when left out.
Field Required Rule
config.schedule Yes A valid cron expression.
config.tz No A valid IANA time zone name, such as Europe/London.
Field Required Rule
repo (top level) Yes owner/name, or owner/* for every repository of that owner.
config.events Yes A list with at least one event name from the table below.
config.branches Yes A list with at least one branch pattern, such as main or release/*.
GitHub event Starts a run when
pull_request.opened A pull request is opened.
pull_request.synchronize New commits are pushed to a pull request.
workflow_run.completed A CI run finishes and it failed.
issue_comment.created A new pull request comment mentions @anthara.
pull_request_review_comment.created A new inline review comment mentions @anthara.
Field Required Rule
repo (top level) Yes org/project/repo, or org/project/* for every repository in the project.
config.events Yes A list with at least one event name from the table below.
config.branches Yes A list with at least one branch pattern.
Azure DevOps event Starts a run when
git.pullrequest.created A pull request is created.
git.pullrequest.updated A pull request is updated.
build.complete A build finishes and it failed.
git.pullrequest.commented A new pull request comment mentions @anthara.

Comment events ignore branches. The field is still required, so write branches: ["*"].

Event kind Inputs
Pull request repo, prNumber, prUrl, headSha, baseBranch, sender
Failed CI run or build runId, workflowName, headBranch, headSha, conclusion, runUrl, ciEvent
Comment repo, prNumber, prUrl, sender, commentId, commentText

Azure DevOps comment runs also receive threadId, which can be empty.

These fields apply to every step.

Field Required Rule
name Yes Text. Other steps refer to this name in templates.
type Yes One of the step types below.
provider No Text. jira, azure_devops, or microsoft_teams. When left out, it is taken from the connection.
connection Depends on the type The name of one connection, exactly as shown under Connections.
connections No A list of connection names for an ai_task. See the rules below.
config Depends on the type The settings for the step.
fan_in No wait_all_collect. See Fan-out.

Rules for connections:

  • It must be a list of text values with at least one entry.
  • No name may appear twice.
  • Each name must start with a letter.
  • Two names may not turn into the same token name. Jira Cloud and jira-cloud both become JIRA_CLOUD_ACCESS_TOKEN, so they cannot be used together.
  • If a step has both connection and connections, connections is used.

Every connection name in the file must exist when you save the workflow.

Field Required Rule
connection Yes A Jira or Azure DevOps connection.
config.query Yes JQL for Jira. WIQL for Azure DevOps.
config.organization Azure DevOps only The Azure DevOps organization.
config.project Azure DevOps only The Azure DevOps project.
config.fields No A list of field names to return. A default set is used when left out.
Field Required Rule
config.prompt Yes The instructions for the agent.
connection or connections No Each connection gives the agent a <NAME>_ACCESS_TOKEN value.
config.llm_config No Limits for this step only.
config.interactive No true gives the agent the Teams card tools.
config.teams_channel_id When interactive The Teams channel for cards.
config.teams_service_url No The Teams service address.
config.card_title, config.card_description No Card title and description shown in the run view.
config.review_fixes No true adds the tools for approving changes to standards. Interactive steps only.

An ai_task with a repos setting is rejected.

Field Required Rule
connection Yes A GitHub or Azure DevOps connection.
config.prompt Yes The change the agent should make.
config.repos Yes A list of repository URLs to clone.
config.llm_config No Limits for this step only.
Field Required Rule
config.title Yes The card title.
config.message Yes The card text.
config.teams_channel_id Yes The Teams channel.
config.teams_service_url No The Teams service address.
Field Required Rule
connection Yes A Microsoft Teams connection.
config.message Yes The message text.
config.chatId Yes for Teams The Teams chat to post in.
Field Required Rule
config.input Yes JSON text, usually a template such as {{steps.name.output}}.
config.path No The field to pick, such as issueKey or items[0].id.

No required fields. The step returns its own config.

Allowed at the top level and under a step’s config. The step’s values win, key by key.

Key Rule Default
model Non-empty text. claude-sonnet-4-6
max_turns A whole number above zero. 300
max_budget_usd A number above zero. 50
effort Non-empty text, such as low, medium, or high. None
system_prompt Non-empty text. A text-only instruction for ai_task

Any other key is rejected. A number in quotes, such as "40", is also rejected.

Templates work inside any text value under a step’s config.

Template Result
{{inputs.<name>}} A trigger input.
{{steps.<step-name>.output}} The whole output of an earlier step.
{{steps.<step-name>.output.<field>}} One field of a JSON output.
{{steps.<step-name>.output.<list>[0].<field>}} One field of a list item.

Templates are checked when the step runs, not when you save. A template that names something missing fails the step.

The validator accepts these fields, but they have no effect. Don’t rely on them.

Field What happens
trigger.type: webhook The workflow saves, but nothing ever starts it.
on_error on a step Ignored. A failed step always ends the run.
retry_count, retry_delay on a step Ignored. A failed step is never retried.

This workflow reads open Jira stories by hand and writes a short summary for each one. It needs a Jira connection named Jira.

name: Summarize Open Stories
slug: summarize-open-stories
trigger:
type: manual
config:
inputs:
- name: projectKey
type: string
llm_config:
max_turns: 20
max_budget_usd: 2
steps:
- name: fetch-stories
type: read_data
provider: jira
connection: Jira
config:
query: project = {{inputs.projectKey}} AND status = "To Do" ORDER BY priority DESC
- name: summarize-story
type: ai_task
config:
prompt: |
You receive ONE Jira story as JSON:
{{steps.fetch-stories.output}}
Reply with exactly one JSON object on one line:
{"issueKey": "<the story key>", "summary": "<two sentences>"}
- name: collect
type: echo
fan_in: wait_all_collect

The last step collects the summaries of all stories into one JSON list. The list is the output of the run’s last step.