type that selects the tool it runs. This page covers the
core task types; iteration lives on the Loops
page.
type: agent
Runs an agent with a prompt.
Agent task consistency runs
You can enable consistency checking on agent tasks by settingconsistency_run
to a value greater than 1. This runs the agent multiple times with the same
prompt and selects the most consistent output:
- Critical calculations where consistency is important
- Data analysis tasks that may have slight variations in output
- Queries involving complex logic where you want to verify the agent’s reasoning
- Automation-level: Add
consistency_promptat the root to apply to all agent tasks - Task-level: Add
consistency_promptto a specific task to override the Automation prompt - Default: If not specified, uses the built-in evaluation prompt optimized for data analysis (view the default prompt source)
{{ submission_1 }}- First output{{ submission_2 }}- Second output{{ task_description }}- The task prompt
SQL output mode
Setoutput.mode: sql to use an agent as a SQL generator. The agent stops once
it has SQL — skipping the natural-language answer — and the SQL text becomes the
task’s result. SQL compiled from the semantic model or matched from a verified
query is returned without running it; SQL the agent wrote itself gets a
LIMIT 0 check first. Pair it with cache to save
the SQL to a file and an execute_sql task to run it:
type: execute_sql
Executes a SQL query either referenced by filename or provided inline.
You can use either
sql_file to reference a SQL file, or sql_query to provide
the SQL inline.
Note: These options are mutually exclusive—only one should be used at a time.
Specifying both in a single task is not allowed.
type: formatter
Formats the provided template using the outputs of other tasks, then passes
the rendered template as output.
type: workflow
Runs another Automation as a sub-step.
Use this to break up complex Automations into smaller, easily testable chunks.
The
variables key allows parameterization by overriding the sub-Automation’s
Automation-level variables. This is particularly useful when embedding an
Automation task into a loop:
type: semantic_query
Runs a query against your semantic model
— measures, dimensions, filters, and ordering by name, with the SQL compiled for
you. See Using the Semantic Model
for every property.
looker_query and omni_query task types —
see Looker.
type: conditional
Runs a different set of tasks depending on earlier results. Each branch’s if
is a Jinja expression (without the surrounding braces) evaluated against the
outputs of previous tasks; the first truthy branch runs. An expression that
renders empty, false, 0, or none is falsy.
type: http_request
Makes an outbound HTTP request — for example, to post results to another
system’s API. url, headers, body, and form values are Jinja templates
rendered against earlier task outputs, and {{ secrets.NAME }} resolves any
project secret listed in secrets.
Requests to private, loopback, and link-local addresses are always blocked.
type: airway
Runs an Airway ELT pipeline (.airway.yml) as a step. The step completes only
once the pipeline’s load has committed, so a following execute_sql task reads
fully loaded tables.
Common task options
Any task can also take:Caching a task’s output
cache is useful for LLM-generated artifacts you want to review and pin — for
example, SQL from an agent in SQL output mode. After the
first run, edits you make to the cached file are used on every later run.
The
visualize task type has been retired. Automations that still use it fail
with an “unknown task type” error — use an agent task instead.Next steps
Loops
Iterate over values with
loop_sequentialVariables
Parameterize tasks with typed inputs