Hello! persist-defvar does not persist records or hash tables correctly. Here's a minimal example with a hash table: (progn (persist-defvar foo (make-hash-table :test #'equal) "docstring") (puthash 'bar t foo) (persist-save 'foo) (gethash 'bar (persist-default 'foo))) ;; Expected nil, got t This patch fixes persisting records by using copy-tree. Currently, copy-tree does not work with records (see ). The following snippet will return the expected value only when both this patch and the above-linked patch are applied: (progn (cl-defstruct baz a) (persist-defvar quux (make-baz :a nil) "docstring") (setf (baz-a quux) t) (persist-save 'quux) (baz-a (persist-default 'quux))) ;; Expected nil, got t Before applying this patch, the updated values in both cases are not persisted to disk. With the patch, the updated values are persisted as expected. Best, Joseph