Apache Airflow Ctl 0.1.5 - CLI, Dag Run, and API Updates

   |   4 minute read   |   Using 793 words

Apache Airflow Ctl airflow-ctl/0.1.5 was published on June 3, 2026. This release gives airflowctl users more direct Dag and Dag Run operations, cleaner generated command arguments, and fixes a few rough edges that matter when the tool is used in scripts.

The full release notes and downloads are on the GitHub release page.

More useful Dag and Dag Run commands

The most visible user change is the new command for finding the next Dag execution. The release notes call out added dags next execution support, with work tracked in #66172 and #66188. For operators, this is the kind of command that reduces small web UI checks during schedule debugging. It gives the CLI a clearer role when checking why a Dag is not moving, or when confirming the next planned run before changing schedule related settings.

Bulk Dag Run deletion is another practical addition. The notes list added bulk delete support for Dag Runs in #67095. That matters for cleanup tasks, test environments, and cases where a bad trigger pattern created more Dag Runs than intended. Manual deletion one item at a time is not a serious workflow once the count is high.

The release also adds is_backfillable in DAG API responses. That is useful for tools that need to decide whether a Dag can be used in backfill flows before presenting an action to a user or running automation. It is small metadata, but it helps clients avoid guessing.

Clearer command argument style

airflowctl 0.1.5 changes how required primitive parameters appear in auto generated commands. Required primitive parameters now become positional arguments instead of --flag options. Optional parameters keep the --flag form.

That sounds cosmetic until a command is generated from an API with several inputs. Required values as positional arguments make the command shape easier to read and harder to confuse with optional tuning. It also follows the parameter style discussed on the Apache dev list, which the release notes link as the basis for the change.

This is the one area to check if local scripts call generated airflowctl commands. A script that passed a required primitive value with a flag may need a small edit. The release notes do not frame this as a broad migration, but generated command syntax is still command syntax. Treat it as something to test before rolling the new CLI into shared automation.

API pagination and task operations

The API side gets cursor based pagination for both get_dag_runs and get_task_instances. That is a better fit for large Airflow installations than asking clients to pull huge result sets or walk unstable pages. If local tooling lists Dag Runs or task instances at scale, this is the kind of change that can make polling and inventory jobs less fragile.

Task instance operations also get wider batch support. The improvement list mentions support for clearing, marking success or failure, and deleting multiple task instances. That pairs well with operational workflows where a broken downstream dependency leaves a set of tasks in a known bad state. Doing this through one action rather than repeated single item calls is simpler and easier to audit.

The release also includes API patching for task group instances and enables queueing new tasks. Together, these changes keep pushing airflowctl and the related API surface toward real operational use, not only read only inspection.

Packaging and bug fixes

The bug fixes are plain but important. dagrun list no longer crashes when --state is omitted. Connections import schema handling is fixed. Backfill parameters now override existing Dag Run conf as expected. The missing pyyaml runtime dependency is also fixed, which is exactly the sort of packaging issue that wastes time because nothing is wrong with the command a user typed.

There are documentation fixes too, including broken download URLs and variable names. The maintainers also capped the airflowctl httpx dependency below 1.0, which should reduce surprise from a future major dependency shift.

Some listed changes are mostly internal cleanup. The notes mention Ruff fixes in client py, mypy checks moving into regular pre commit static checks, reuse of the existing safe_load helper for help text loading, and removal of an unused newsfragments directory. Useful maintenance work, but not something most CLI users need to act on.

Upgrade notes

This is not marked as a prerelease. The release metadata sets prerelease to false.

The main compatibility point is the generated command argument style. Required primitive parameters are now positional. Review scripts that call auto generated airflowctl commands with required values passed as flags.

Also verify environments that install airflowctl through packaging constraints. The fixed missing pyyaml dependency and the httpx cap are good changes, but they can still affect locked dependency files.

Where to get it



denis256 at denis256.dev