# Cylc trigger --flow=new question about pre-reqs

**URL:** <https://cylc.discourse.group/t/cylc-trigger-flow-new-question-about-pre-reqs/1245>\
**Category:** Cylc Support\
**Created:** [September 18, 2025, 1:01am UTC](https://cylc.discourse.group/t/cylc-trigger-flow-new-question-about-pre-reqs/1245 "2025-09-18T01:01:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![TomC](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/tomc/32/115_2.png) [@TomC](https://cylc.discourse.group/u/TomC)\
**Post date:** [September 18, 2025, 1:01am UTC](https://cylc.discourse.group/t/cylc-trigger-flow-new-question-about-pre-reqs/1245/1 "2025-09-18T01:01:24Z")

</div>

I’ve asked similar questions before, but I wanted to see if there were any changes with recent updates or plans for future upgrades in this area.

When you trigger a new flow, and there are cross cycle pre-reqs, is there a way to automatically satisfy them?

e.g. with a simple workflow. This workflow will stall.

```bash
$ cat flow.cylc
[scheduler]
    allow implicit tasks = True
[scheduling]
    initial cycle point = 20250916T06
    runahead limit = P2

    [[graph]]
        T06, T18 = """
            @wall_clock => a_0
            b_0[-PT12H] => a_0 & b_0
            a_0 => b_0

        """
[runtime]
    [[a_0]]
        script = true
    [[b_0]]
        script = if [[${CYLC_TASK_CYCLE_POINT} == '20250917T0600Z']]; then cylc trigger --flow=new $CYLC_WORKFLOW_NAME //20250917T0600Z/a_0; fi

$ cylc show basic-workflow//20250917T0600Z/b_0
title: (not given)
description: (not given)
URL: (not given)
state: waiting
flows: [2]
prerequisites: ('⨯': not satisfied)
  ✓ 20250917T0600Z/a_0 succeeded
  ⨯ 20250916T1800Z/b_0 succeeded
...

```

Without manual intervention (or programming in logic to either know all cross-cycle pre-reqs or figure them out dynamically), `20250917T0600Z/b_0` will never be able to run. I had tried things like `cylc set -p //20250916T1800Z/*:succeeded basic-workflow //20250917T0600Z/*` but Cylc didn’t like that

```auto
2025-09-18T00:54:54Z WARNING - Invalid prerequisite task name:
    Illegal task name: *

```

It would be useful to be able to be able to do something like

```auto
# Trigger a new flow and Cylc auto-sets any prereqs from previous cycles which were satisfied for the previous flow
cylc trigger --flow-new --auto-set-old-cycle-prereq basic-workflow //20250917T0600Z/a_0

OR

# Trigger new flow and then set, for all tasks in the current cycle, including ones not in n=0 window, all prereqs from the previous cycle
cylc trigger --flow-new basic-workflow //20250917T0600Z/a_0
cylc set -p '//20250916T1800Z/*:succeeded' basic-workflow '//20250917T0600Z/*

```

---

<div class="post-metadata">

**Author:** ![hilary.j.oliver](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/hilary.j.oliver/32/4_2.png) [@hilary.j.oliver](https://cylc.discourse.group/u/hilary.j.oliver)\
**Post date:** [September 18, 2025, 1:34am UTC](https://cylc.discourse.group/t/cylc-trigger-flow-new-question-about-pre-reqs/1245/2 "2025-09-18T01:34:09Z")

</div>

Hi @TomC

Prerequisites always have to be satisfied within a self-consistent flow (otherwise all hell would break loose) and in general Cylc can’t tell if a given unsatisfied prerequisite should get satisfied later in the same flow or not - so it would be dangerous to automatically satisfy prerequisites like that.

However, `cylc trigger` improvements in 8.5 have this covered:

`cylc trigger <group-of-tasks>`

This means: _run these tasks now, respecting dependencies within the group and automatically satisfying off-group prerequisites_.

The group needs to be big enough to catch all “off-flow” prerequisites (if that’s what you want) because they only get automatically satisfied within the group. But the group could encompass every task in an entire cycle, if you need that.

**NOTE** :

- Globs will match tasks beyond the active (n=0) window from Cylc 8.6 (to be released this week or next); until then you may need to give the individual task ID of every group member in the trigger command.
- Since 8.4, `cylc remove` erases the run history of past tasks, to make it look as if they never ran (so they can run again in the same flow); and since 8.5 `cylc trigger` does a remove of target tasks - so now you can usually rerun stuff without triggering a new flow.
