At long last there's a way to hide annexed files whose content is missing from the working tree: `git-annex adjust --hide-missing` And once you've run that command, `git annex sync` will update the tree to hide/unhide files whose content availability has changed. (So will running `git annex adjust` again with the same options.) You can also combine `--hide-missing` with `--unlock`, which should prove useful in a lot of situations. My implementation today is as simple as possible, which means that every time it updates the adjusted branch it does a full traversal of the original branch, checks content availability, and generates a new branch. So it may not be super fast in a large repo, but I was able to implement it in one day's work. It should be possible later to speed it up a lot, by [maintaining more state](http://git-annex.branchable.com/todo/hide_missing_files/#comment-5f56545b69a0baebffe5411258ee30ea). Today's work was sponsored by Ethan Aubin.