When a variable’s custom-form is 'lisp (or 'mismatch), `custom-variable-value-create' will quote its value prior to storing it inside the widget. Afterwards, `custom-variable-modified-p' will try to compare this quoted form to the (unquoted) value and think that the variable has been modified. To reproduce, fire up emacs -Q and do: 1. (setq custom-variable-default-form 'lisp) 2. M-x customize-variable RET auto-save-file-name-transforms RET You will notice that Customize thinks that the variable has been modified even though that is not true. If step 1. is omitted, everything is fine. The patch attached below fixes that.