Print Ansible header before executing a long running task

Migrating my comment to an answer upon OP's request

I am using Ansible 2.9.2.

I tried with no config file and with a config file with no value declared for stdout_callback (default). I cannot reproduce your problem in either case.

This is my test playbook:

- hosts: localhost
  gather_facts: false


    - name: Short running
        msg: I'm a short task

    - name: LOOOOOOOOOng task
      shell: sleep 2000

And the result (in both cases. Note: interruption by user after task header display)

$ ansible-playbook /tmp/play.yml  

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Short running] **********************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "I'm a short task"

TASK [LOOOOOOOOOng task] ******************************************************************************************************************************************************************************************
^C [ERROR]: User interrupted execution

Double check which config file you are loading with ansible-playbook --version in the directory where you are going to launch the playbook. I also suggest you try without any config file to see if it fixes your issue (and then see which setting is actually causing the issue).

Added from OP's comment: it turns out the problematic setting in ansible.cfg in this specific case was display_skipped_hosts=False