Add "Mark as Skipped" action for Task Instances in the Airflow 3 UI
- Dominant language
- Python
- Stars
- 46.9k
- Forks
- 17.8k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 472
Description
### Description
The Airflow 3 UI currently allows operators to manually mark a Task Instance as success or failed, but does not provide an option to mark it as skipped.
### Use case/motivation
In the Airflow 3 UI, the Task Instance "Mark as" action only exposes:
- Success
- Failed
As a result, SKIPPED is not available as a manual Task Instance action.
### Expected behavior
The Task Instance "Mark as" action should provide:
- Success
- Failed
- Skipped
Selecting Skipped should set the selected Task Instance(s) to TaskInstanceState.SKIPPED, without executing the task.
### Use case
During the manual recovery of a DAG run, an operator may decide that a particular task should not be executed for this run.
For example:
task_a → task_b → task_c
If task_b should intentionally not run for this particular DAG run, the desired result is:
task_a → SUCCESS
task_b → SKIPPED
task_c → ...
Marking task_b as SUCCESS is not equivalent.
SUCCESS means that the task successfully executed, whereas SKIPPED records that the task was intentionally not executed.
This distinction is important for:
- accurately representing the execution history;
- operational troubleshooting
- downstream trigger_rule evaluation
- depends_on_past
Airflow's documentation explicitly treats skipped differently from success. For example, none_failed considers upstream tasks that are either successful or skipped as acceptable, while none_skipped explicitly rejects skipped upstream tasks. Therefore, replacing SKIPPED with SUCCESS can change DAG behavior.
### Related issues
_No response_
### Are you willing to submit a PR?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
Contributor guide
Research direction
Start in the Airflow 3 UI at the Task Instance "Mark as" action and inspect how the existing Success and Failed choices update selected instances. Add the Skipped choice, then verify that selected Task Instances become SKIPPED without executing and that the action works for multiple selections.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 66/100