diff --git a/cccli/cli.py b/cccli/cli.py
index b9877e54cc7672d3d0350321a0093dd681975405..418ff90aa9af912ca4012175765c0878bc4929ca 100644
--- a/cccli/cli.py
+++ b/cccli/cli.py
@@ -70,7 +70,7 @@ class Cli(object):
         # parsing
         self._parse()
         # save history
-        self.printer.history.write(self.settings.get("history", ""))
+        self.printer.history.write(self.settings.get("history", None))
 
     def _connect(self):
         '''Connect to a cloud control server'''
diff --git a/cccli/command/expert.py b/cccli/command/expert.py
index 1ed92d2e93fa1f3d6f435f2dcc35dfed6fdf7953..9ab46bebd8f9e0cd2859c1773d91892acd205e97 100644
--- a/cccli/command/expert.py
+++ b/cccli/command/expert.py
@@ -26,7 +26,7 @@ class Command_expert(Command):
             c = code.InteractiveConsole(local)
             c.interact("Use Ctrl+D to go back in CLI. Type dir() to see variables.")
         finally:
-            self.printer.history.write(self.cli.settings.get("expert", ""))
+            self.printer.history.write(self.cli.settings.get("expert", None))
             self.printer.history.load(h)
 
 
diff --git a/cccli/command/tagdisplay.py b/cccli/command/tagdisplay.py
index cc0bcd60285b270431d188198a11e4261d006855..884554d997593e8f3d71be3b3b32ffa4075ad2e5 100644
--- a/cccli/command/tagdisplay.py
+++ b/cccli/command/tagdisplay.py
@@ -107,4 +107,7 @@ class Command_tagdisplay(OptionCommand):
                     del db[tagname]
             else:
                 db[tagname] = value
-        self.cli.tagdisplay.save(self.cli.settings.get("tagdisplay", ""))
+        try:
+            self.cli.tagdisplay.save(self.cli.settings.get("tagdisplay", None))
+        except Exception as e:
+            raise cmdError(e)
diff --git a/cccli/printer.py b/cccli/printer.py
index ef36e6857089c5011243061d416e7c62926b687c..5364d3e3067f76daac612c3cc75e957dbce5e585 100644
--- a/cccli/printer.py
+++ b/cccli/printer.py
@@ -198,6 +198,8 @@ class History(object):
     def read(self, path):
         '''Load history from a file'''
         self.clear()
+        if path is None:
+            return
         try:
             self.readline.read_history_file(path)
         except IOError:
@@ -205,6 +207,8 @@ class History(object):
 
     def write(self, path):
         '''Save history into path'''
+        if path is None:
+            return
         try:
             self.readline.write_history_file(path)
         except IOError:
diff --git a/cccli/tagdisplay.py b/cccli/tagdisplay.py
index 50fced81d56656dbe9ce897762f1b894f8fb997d..aeb624e239cc950045439991ec9b8cbb893fa79f 100644
--- a/cccli/tagdisplay.py
+++ b/cccli/tagdisplay.py
@@ -26,7 +26,7 @@ class TagDisplay(object):
 
     def load(self, filename):
         '''load tagdisplay settings from file'''
-        if os.access(filename, os.R_OK):
+        if filename is not None:
             fparser = ConfigParser.RawConfigParser()
             fparser.read(filename)
             self.__init__()
@@ -41,7 +41,7 @@ class TagDisplay(object):
 
     def save(self, filename):
         '''save tagdisplay settings on file'''
-        if os.access(filename, os.R_OK or os.W_OK):
+        if filename is not None:
             fparser = ConfigParser.RawConfigParser()
             fparser.read(filename)
             for n,d in (("type", self.tagtype), ("color", self.tagcolor),