While the response given by heslant is generally accurate, noting that the snap list
command presents only the two latest versions of a package, it's worth highlighting that a considerable number of cached snaps are actually retained (as pointed out in the linked source by him and by Milan Bojovic, although it haven't received adequate emphasis).
$ snap list lxd --all
Name Version Rev Tracking Publisher Notes
lxd git-5a1faae 25306 latest/edge canonical✓ held
lxd git-752650e 25381 latest/edge canonical✓ disabled,held
In fact, I have the following .snaps in my system:
$ sudo ls -lah /var/lib/snapd/snaps/
total 8.5G
drwxr-xr-x 3 root root 4.0K Aug 21 22:07 .
drwxr-xr-x 23 root root 4.0K Aug 21 18:20 ..
-rw------- 1 root root 165M May 3 01:15 lxd_24758.snap
-r--r--r-- 1 1000000 1000000 170M Aug 21 22:05 lxd_24817.snap <- transferred from other machine (May 3)
-rw------- 1 root root 174M Jun 16 20:10 lxd_24988.snap
-rw------- 1 root root 174M Jun 17 02:50 lxd_24994.snap
-rw------- 1 root root 174M Jun 17 15:45 lxd_24999.snap
-rw------- 1 root root 174M Jun 19 14:21 lxd_25003.snap
-rw------- 2 root root 174M Jun 20 02:30 lxd_25009.snap
-rw------- 2 root root 174M Jun 21 01:15 lxd_25013.snap
-rw------- 2 root root 174M Jun 21 22:10 lxd_25027.snap
-rw------- 2 root root 174M Jun 22 07:55 lxd_25042.snap
-rw------- 2 root root 174M Jun 22 15:16 lxd_25050.snap
-rw------- 2 root root 174M Jun 22 21:51 lxd_25056.snap
-rw------- 2 root root 174M Jun 23 03:36 lxd_25063.snap
-rw------- 2 root root 174M Jun 26 19:55 lxd_25075.snap
-rw------- 2 root root 174M Jun 28 00:50 lxd_25092.snap
-rw------- 2 root root 174M Jun 29 04:25 lxd_25097.snap
-rw------- 1 root root 174M Jul 6 23:11 lxd_25128.snap
-rw------- 1 root root 176M Jul 7 04:01 lxd_25136.snap
-rw------- 1 root root 176M Jul 7 11:45 lxd_25144.snap
-rw------- 1 root root 176M Jul 7 12:41 lxd_25154.snap
-rw------- 2 root root 176M Jul 11 07:00 lxd_25186.snap
-rw------- 2 root root 176M Jul 11 13:21 lxd_25197.snap
-rw------- 2 root root 176M Jul 12 00:45 lxd_25224.snap
-rw------- 2 root root 176M Jul 12 09:51 lxd_25228.snap
-rw------- 2 root root 176M Jul 13 07:45 lxd_25234.snap
-rw------- 2 root root 176M Jul 13 16:11 lxd_25239.snap
-rw------- 2 root root 176M Jul 14 09:10 lxd_25246.snap
-rw------- 2 root root 176M Jul 15 18:35 lxd_25253.snap
-rw------- 2 root root 176M Jul 17 14:45 lxd_25269.snap
-rw------- 2 root root 176M Jul 18 16:00 lxd_25285.snap
-rw------- 2 root root 176M Jul 19 10:20 lxd_25292.snap
-rw------- 1 root root 176M Jul 20 05:30 lxd_25306.snap
-rw------- 1 root root 176M Jul 20 15:30 lxd_25313.snap
-rw------- 1 root root 176M Jul 21 07:30 lxd_25319.snap
-rw------- 1 root root 176M Jul 24 07:01 lxd_25332.snap
-rw------- 1 root root 176M Jul 26 00:00 lxd_25345.snap
-rw------- 1 root root 176M Jul 26 14:05 lxd_25357.snap
-rw------- 2 root root 176M Jul 27 09:10 lxd_25364.snap
-rw------- 2 root root 176M Jul 27 20:30 lxd_25371.snap
-rw------- 2 root root 176M Jul 29 10:05 lxd_25376.snap
-rw------- 2 root root 176M Aug 3 20:10 lxd_25381.snap
drwxr-xr-x 2 root root 4.0K Apr 10 2020 partial
And the process of reverting is as straightforward as executing a single command:
$ sudo snap install /var/lib/snapd/snaps/lxd_24817.snap
lxd git-49b9c78 from Canonical✓ installed
$ snap list lxd --all
Name Version Rev Tracking Publisher Notes
lxd git-5a1faae 25306 latest/edge canonical✓ disabled,held
lxd git-49b9c78 24817 latest/edge canonical✓ held
And finally, we can stop auto-updating specific snaps issuing a command:
sudo snap refresh --hold lxd
P.S. I have searched for this solution to restore a feature that was "fixed" in a recent release, and had a hard time searching for a previous version of snap. Ironically, it was right there, within arm's reach.
However, automatic updates for this snap are currently not viable for me (at least for the time being).