Do Snaps auto refresh every 4 hours when store snap visibility is set to private?

The individual snaps don’t attempt to update. Snapd handles all snaps on the system in a single request, but to answer the actual question, no.

A snap that’s set to private would only update if the publisher/collaborators had logged into snapd with their Ubuntu One account. Specifically snapd, not snapcraft. From the perspective of any general user, they cannot tell the difference between the snap being private and the snap not existing, so they see it as there being nothing to update to even though snapd will try.

But if you don’t want automatic updates, it’s probably easier to just use snap refresh --hold snapname

@James-Carroll when you use snap refresh --hold snapname I read somewhere that it will still auto-update as there is a max limit (90 days max.

So would setting the snap to private force the snap to not update forever until the developer is ready to set the snap to unlisted or public?

refresh --hold without a duration set is indefinite, but this is relatively new and only landed in the last 12 months. It’s the Hold Refreshes section, not the refresh.hold variable; though I do wonder if that section of the documentation is out of date.

But yes, if the snap is private, it won’t update; the only exception is if the publishers are logged into snapd, then they specifically could still update (unless the update were held).