argocd: rpc error: code = Unauthenticated desc = token expired
Routes argocd CLI expired-token failures. Use when argocd commands fail with rpc error code Unauthenticated (token expired or revoked). Not for PermissionDenied or login transport errors.
Your stored Argo CD auth token expired (or was revoked server-side) - every command fails the same way until you re-authenticate. Run argocd relogin to refresh the session in place; if the token's JTI was deleted server-side, log in fresh with argocd login. In scripts, prefer a project token with a long TTL over an interactive session.
The error
rpc error: code = Unauthenticated desc = token expiredWhat to do
- Refresh the session:
argocd reloginExpected: Prompts for credentials, saves a fresh token.
- Verify:
argocd account get-user-infoExpected: Returns your user instead of Unauthenticated.
- If relogin still fails, the server-side token record is gone - log in fresh:
argocd login [server] --grpc-web --username [user]Expected: New session established.
When this applies
- the exact rpc error code Unauthenticated message
- sessions that worked yesterday and fail today
- tokens revoked by an admin
When it does NOT apply
- PermissionDenied (logged in, but RBAC says no)
- Failed to invoke grpc call (transport, not token)
Works with
argocd CLI 2.x/3.x
FATA[0000] rpc error: code = Unauthenticated desc = invalid token
Same expired-or-bad-token family. Same relogin fix.
Why it happens
The CLI stores a JWT in ~/.config/argocd/config. JWTs carry an expiry, and the server can also invalidate the token id (JTI) - either way the stored credential stops working and every call 401s.
Edge cases
- SSO sessions expire with the IdP session too - relogin re-runs the browser flow.
- Automation should use argocd account generate-token / project tokens, not a human session that silently expires.
Resolved from
computingforgeeks argocd login guide - https://computingforgeeks.com/argocd-cli-login-authentication/