Why drush "assume yes" -y option do not work for some commands Drush has global option -y (or --yes) which allow you not to type y on every promt during given command execution. (There is also -n or --no option to which following applies as well.)

This works perfectly when you run something like:

drush en i18n -y


The propblem arises, for example, when you trying to run rsync in that manner:

drush rsync @staging:sites/all/themes @production:sites/all/themes -y


Drush just don't get the -y option, and prompts you for a confirmation.

What is this and how to make use of -y option?
The solution is to pass all global options like -y or -n before drush command:

drush -y rsync @staging:sites/all/themes @production:sites/all/themes


This allows you to pass options to a shell command run with drush without getting in conflict with drush options:

drush [global options] command [command options]


This will pass [global options] to drush, and [command options] to a shell command.

Take a habit of passing -y and other global options right after you type drush.

Run drush topic docs-strict-options to get a help on that case.