When using TAB completion (via expand-or-complete, and "setopt globcomplete") on a partial hostname where alternatives with a common suffix exist, the second invocation of TAB will insert some character(s) that make it fail to complete afterwards. % autoload -Uz compinit % compinit % echo "Host test-05827d88.foo.bar test-6cae9ce0.foo.bar" > ssh_config % setopt globcomplete With % ssh -F ssh_config test- You will get: % ssh -F ssh_config test-|.foo.bar Pressing TAB again results in: % ssh -F ssh_config test-|BR.foo.bar The characters being inserted seem to come from the "bar". With ".dot.com" at the end I am seeing "CM" being inserted. With "Host test-05.dot.com test-6c.dot.com" however "D" is being inserted. And with a single TLD (i.e. "test-05827d88.com test-6cae9ce0.com") it works. In _ssh_hosts the following is used, which seems to be relevant, since the inserted characters are uppercased: compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts zsh 5.2-dev-1, 062aeca. Thanks, Daniel.