diff --git a/designateclient/cli/base.py b/designateclient/cli/base.py
index b01ae0df..557a6983 100644
--- a/designateclient/cli/base.py
+++ b/designateclient/cli/base.py
@@ -31,7 +31,9 @@ class Command(CliffCommand):
         self.client = Client(
             region_name=self.app.options.os_region_name,
             service_type=self.app.options.os_service_type,
-            session=self.app.session)
+            session=self.app.session,
+            all_tenants=self.app.options.all_tenants,
+            edit_managed=self.app.options.edit_managed)
 
         try:
             return super(Command, self).run(parsed_args)
diff --git a/designateclient/shell.py b/designateclient/shell.py
index bd1de9a8..4e2649c4 100644
--- a/designateclient/shell.py
+++ b/designateclient/shell.py
@@ -234,9 +234,7 @@ class DesignateShell(App):
             user_domain_name=self.options.os_user_domain_name,
             token=self.options.os_token,
             insecure=self.options.insecure,
-            cacert=self.options.os_cacert,
-            all_tenants=self.options.all_tenants,
-            edit_managed=self.options.edit_managed
+            cacert=self.options.os_cacert
         )
 
     def run(self, argv):
diff --git a/designateclient/utils.py b/designateclient/utils.py
index 87031736..ae53295d 100644
--- a/designateclient/utils.py
+++ b/designateclient/utils.py
@@ -101,7 +101,7 @@ def get_columns(data):
 def get_session(auth_url, endpoint, domain_id, domain_name, project_id,
                 project_name, project_domain_name, project_domain_id, username,
                 user_id, password, user_domain_id, user_domain_name, token,
-                insecure, cacert, all_tenants, edit_managed):
+                insecure, cacert):
     session = ks_session.Session()
 
     # Build + Attach Authentication Plugin
@@ -139,8 +139,6 @@ def get_session(auth_url, endpoint, domain_id, domain_name, project_id,
         session.verify = False
     else:
         session.verify = cacert
-    session.all_tenants = all_tenants
-    session.edit_managed = edit_managed
 
     return session
 
diff --git a/designateclient/v1/__init__.py b/designateclient/v1/__init__.py
index 3d389d8b..854bcccc 100644
--- a/designateclient/v1/__init__.py
+++ b/designateclient/v1/__init__.py
@@ -62,11 +62,12 @@ class Client(object):
                 user_domain_name=user_domain_name,
                 token=token,
                 insecure=insecure,
-                cacert=cacert,
-                all_tenants=all_tenants,
-                edit_managed=edit_managed,
+                cacert=cacert
             )
 
+        self.all_tenants = all_tenants
+        self.edit_managed = edit_managed
+
         # Since we have to behave nicely like a legacy client/bindings we use
         # an adapter around the session to not modify it's state.
         interface = endpoint_type.rstrip('URL')
@@ -99,9 +100,9 @@ class Client(object):
         kw['raise_exc'] = False
         kw.setdefault('headers', {})
         kw['headers'].setdefault('Content-Type', 'application/json')
-        if self.session.session.all_tenants:
+        if self.all_tenants:
             kw['headers'].update({'X-Auth-All-Projects': 'true'})
-        if self.session.session.edit_managed:
+        if self.edit_managed:
             kw['headers'].update({'X-Designate-Edit-Managed-Records': 'true'})
 
         # Trigger the request