fix scope on []=, cache in self.auto