diff --git a/changelogs/fragments/ansible-adhoc.yaml b/changelogs/fragments/ansible-adhoc.yaml
new file mode 100644
index 00000000000..b5b5d369ec6
--- /dev/null
+++ b/changelogs/fragments/ansible-adhoc.yaml
@@ -0,0 +1,2 @@
+bugfixes:
+  - allow include_role to work with ansible command
diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
index 5108df1845d..2f79e881ea9 100644
--- a/lib/ansible/cli/adhoc.py
+++ b/lib/ansible/cli/adhoc.py
@@ -69,7 +69,7 @@ class AdHocCLI(CLI):
         mytask = {'action': {'module': context.CLIARGS['module_name'], 'args': parse_kv(context.CLIARGS['module_args'], check_raw=check_raw)}}
 
         # avoid adding to tasks that don't support it, unless set, then give user an error
-        if context.CLIARGS['module_name'] not in ('include_role', 'include_tasks') or any(frozenset((async_val, poll))):
+        if context.CLIARGS['module_name'] not in ('include_role', 'include_tasks') and any(frozenset((async_val, poll))):
             mytask['async_val'] = async_val
             mytask['poll'] = poll
 
diff --git a/test/integration/targets/include_import/runme.sh b/test/integration/targets/include_import/runme.sh
index cf523a89d99..0d253cc8d17 100755
--- a/test/integration/targets/include_import/runme.sh
+++ b/test/integration/targets/include_import/runme.sh
@@ -10,6 +10,10 @@ function gen_task_files() {
     done
 }
 
+## Adhoc
+
+ansible -m include_role -a name=role1 localhost
+
 ## Import (static)
 
 # Playbook