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
    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
    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
    Mar 4, 2013 at 6:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.