diff --git a/client/defines.h b/client/defines.h
index 3eee2b6..aa2afc1 100644
--- a/client/defines.h
+++ b/client/defines.h
@@ -212,4 +212,5 @@ typedef enum
     {ERROR_TDNF_RPM_CHECK,           "ERROR_TDNF_RPM_CHECK",           "rpm check reported errors"}, \
     {ERROR_TDNF_METADATA_EXPIRE_PARSE, "ERROR_TDNF_METADATA_EXPIRE_PARSE", "metadata_expire value could not be parsed. Check your repo files."},\
     {ERROR_TDNF_SELF_ERASE, "ERROR_TDNF_SELF_ERASE", "The operation would result in removing the protected package : tdnf"},\
+    {ERROR_TDNF_PERM, "ERROR_TDNF_PERM", "Operation not permitted. You have to be root."},\
 };
diff --git a/include/tdnferror.h b/include/tdnferror.h
index e858694..199c3a8 100644
--- a/include/tdnferror.h
+++ b/include/tdnferror.h
@@ -129,10 +129,11 @@ extern "C" {
 #define ERROR_TDNF_TRANS_INCOMPLETE     1525
 #define ERROR_TDNF_TRANS_PKG_NOT_FOUND  1526
 
-//System errors 1600 and up
-#define ERROR_TDNF_SYSTEM_BASE          1600
 // No search results found
-#define ERROR_TDNF_NO_SEARCH_RESULTS    1601
+#define ERROR_TDNF_NO_SEARCH_RESULTS    1599
+#define ERROR_TDNF_SYSTEM_BASE          1600
+//System errors 1600 and up
+#define ERROR_TDNF_PERM                 (ERROR_TDNF_SYSTEM_BASE + EPERM)
 #define ERROR_TDNF_INVALID_PARAMETER    (ERROR_TDNF_SYSTEM_BASE + EINVAL)
 #define ERROR_TDNF_OUT_OF_MEMORY        (ERROR_TDNF_SYSTEM_BASE + ENOMEM)
 #define ERROR_TDNF_NO_DATA              (ERROR_TDNF_SYSTEM_BASE + ENODATA)
diff --git a/tools/cli/main.c b/tools/cli/main.c
index c0a2b5f..e6d6026 100644
--- a/tools/cli/main.c
+++ b/tools/cli/main.c
@@ -63,6 +63,15 @@ int main(int argc, char* argv[])
     PTDNF pTdnf = NULL;
     int nFound = 0;
 
+    //granular permissions for non root users are pending.
+    //blocking all operations for non root and show the
+    //right error to avoid confusion.
+    if(geteuid() != 0)
+    {
+        dwError = ERROR_TDNF_PERM;
+        BAIL_ON_CLI_ERROR(dwError);
+    }
+
     _context.pFnCheck = TDNFCliInvokeCheck;
     _context.pFnCheckLocal = TDNFCliInvokeCheckLocal;
     _context.pFnCheckUpdate = TDNFCliInvokeCheckUpdate;