Anywhere you are accepting command line arguments. You might not know about bash-completion even if you are a basic shell user; I know in Debian, it's necessary to install the package "bash-completion" and un-comment a few lines in /etc/bash.bashrc to enable it.
Basic bash completion looks for files in the filesystem. The bash-completion package provides hints so that you can auto-complete semantically, for example
$ apt-get up<tab><tab>
update upgrade
$ apt-get install bash<tab><tab>
bash bash-builtins bashburn
bash-completion bashdb bash-doc
bash-static