I once had some hosts named 'myhost', 'myhost1', etc. And now all those except 'myhost3' become invalid. I removed those from /etc/hosts and ~/.ssh/known_hosts, but zsh still completes them for me. Is there any other file I should edit to make zsh forget about those hosts?

I haven't changed anything related to hosts in my zsh configuration; they come out by default.


Some time later (after a hibernation but no reboot), those hosts disappear. Maybe zsh cleared some kind of cache? (But not ~/.zcompdump as I checked that. I also tried start new instances of zsh but that doesn't make difference.)

I'll try and test later.


I tried again and successfully removed a newly-added host from the completion list. Maybe I did something wrong previously, sorry.

3 Answers 3


From experimentation, it looks like zsh is indeed using .ssh/known_hosts for its autocompletion, but it only reads that at startup/first use.

Deleting the offending host (ssh-keygen -R hostname or simply editing .ssh/known_hosts), then restarting the shell seems to work.

  • That worked for me too
    – DGM
    Commented Mar 26, 2021 at 14:54

I don't know how zsh completes them, but my homegrown bash completion scripts also look at ~/.ssh/config. Maybe check if the hosts are in there?

Alternatively, strace -eopen the zsh process while autocompleting and see where it looks :)

  • I've checked ~/.ssh/config too. See my update please.
    – lilydjwg
    Commented Mar 4, 2013 at 6:46

You may need to delete your zsh completion cache, ~/.zcompdump (or $_comp_dumpfile if you've changed the location).

  • I've checked that file too (by searching one of the hosts). See my update please.
    – lilydjwg
    Commented Mar 4, 2013 at 6:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .