ansible_become: true in host inventory vars leaks into delegate_to: localhost tasks in Ansible 2.18, causing those tasks to try sudo on the Semaphore runner (which has no sudo). Instead, become: true is set at the play level in the playbook where needed, which does NOT propagate to delegated tasks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>