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
query: project = {{inputs.projectKey}} AND status = "To Do" ORDER BY priority DESC
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>"}
The last step collects the summaries of all stories into one JSON list. The list is the output of the run’s last step.