diff --git a/mrhlpr/mr.py b/mrhlpr/mr.py
index 587ebd1f77cb95fa29ddd29aeea0694c0fa7df3d..2380c8166a230f5b754ca4a87328cf886032aa9e 100644
--- a/mrhlpr/mr.py
+++ b/mrhlpr/mr.py
@@ -468,10 +468,11 @@ def finish(
     git.push_head(remote_local, status.source_branch)
 
     gl = gitlab_api.Gitlab(url="https://gitlab.com", private_token=gitlab_token)
+    gl.auth()
     project = gl.projects.get(origin.project_id)
     mr = project.mergerequests.get(mr_id)
-    if skip_approve:
-        print("Skipping approval per request...")
+    if skip_approve or (gl.user and mr.author and gl.user.id == mr.author.get("id")):
+        print("Skipping approval...")
     else:
         print("Approving MR...")
         try:
@@ -479,7 +480,6 @@ def finish(
         # For some reason, approve fails with auth error if already approved...
         except gitlab_api.GitlabAuthenticationError as e:
             approved_by_ids = [ap["id"] for ap in mr.approval_state.get().rules[0]["approved_by"]]
-            gl.auth()
             if gl.user is None:
                 raise e
             if gl.user.id not in approved_by_ids: