diff --git a/cmd/login/helper.go b/cmd/login/helper.go
index fd6d88d..511f420 100644
--- a/cmd/login/helper.go
+++ b/cmd/login/helper.go
@@ -10,7 +10,9 @@ import (
 	"net/url"
 	"os"
 	"strings"
+	"time"
 
+	"code.gitea.io/tea/modules/auth"
 	"code.gitea.io/tea/modules/config"
 	"code.gitea.io/tea/modules/task"
 	"github.com/urfave/cli/v2"
@@ -102,6 +104,14 @@ var CmdLoginHelper = cli.Command{
 					return err
 				}
 
+				if userConfig.TokenExpiry > 0 && time.Now().Unix() > userConfig.TokenExpiry {
+					// Token is expired, refresh it
+					err = auth.RefreshAccessToken(userConfig)
+					if err != nil {
+						return err
+					}
+				}
+
 				_, err = fmt.Fprintf(os.Stdout, "protocol=%s\nhost=%s\nusername=%s\npassword=%s\n", host.Scheme, host.Host, userConfig.User, userConfig.Token)
 				if err != nil {
 					return err