Sudo tty/askpass related error with pipelining after upgrade from 1.9 to 2.0

A playbook that runs fine on Ansible 1.9.5 suddenly fails on 2.0 with the following error (sensitive details hidden):

$ ansible-playbook deploy.yml -i inventory_dev.py -vvvv
Using /Users/[…]/ansible.cfg as config file
SUDO password:
Loaded callback default of type stdout, v2.0
3 plays in deploy.yml

PLAY ***************************************************************************
skipping: no hosts matched

PLAY ***************************************************************************
skipping: no hosts matched

PLAY ***************************************************************************

TASK [setup] *******************************************************************
<192.168.55.80> ESTABLISH SSH CONNECTION FOR USER: XXXX
<192.168.55.80> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o ‘ControlPath=~/.ansible/cp/ansible-ssh-%h-%p-%r’ -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=XXXX -o ConnectTimeout=10 XXX.XXX.XXX.XXX ‘/bin/sh -c ‘"’“‘sudo -i -p “[sudo via ansible, key=vcjmrsmghrskmmgswehtragyzgeuzrhl] password: " -u root /bin/sh -c '”’”’“'”‘"’“'”‘“'echo BECOME-SUCCESS-vcjmrsmghrskmmgswehtragyzgeuzrhl; /bin/sh -c '”’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“‘LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python’”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’‘"’“'”‘"’“'”‘"’“‘’”‘"’’
fatal: [machinename]: FAILED! => {“changed”: false, “failed”: true, “invocation”: {“module_name”: “setup”}, “module_stderr”: “OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011\ndebug1: Reading configuration data /Users/******/.ssh/config\r\ndebug1: Reading configuration data /etc/ssh_config\r\ndebug1: /etc/ssh_config line 20: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 9949\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\nsudo: no tty present and no askpass program specified\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 1\r\n”, “module_stdout”: “”, “msg”: “MODULE FAILURE”, “parsed”: false}

NO MORE HOSTS LEFT *************************************************************
to retry, use: --limit @deploy.retry

PLAY RECAP *********************************************************************
machinename : ok=0 changed=0 unreachable=0 failed=1

Here’s my ansible.cfg:

[defaults]
remote_user = ******
sudo_flags = -i
vault_password_file = get_vault_pass.py

[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o ControlPath=~/.ansible/cp/ansible-ssh-%h-%p-%r
pipelining = True

[privilege_escalation]
become = True
become_ask_pass = True

If I take out “pipelining = True”, the playbook runs fine on 2.0 as well.

What changed between 1.9.5 and 2.0.1.0 that broke this? Is there something I could change to make pipelining function again?