semaphoreui/semaphore · error
user with login not found
Error message
user with login %s not found
What it means
getTokenUser looks up the user with store.GetUserByLoginOrEmail; when the store returns db.ErrNotFound it is converted into 'user with login %s not found'. This means the --login value matched no user in the database.
Solutions
- List existing users (`semaphore user list`) and use an exact login from that output
- Create the user first with `semaphore user add` if it genuinely doesn't exist
- Confirm the config points at the intended database/environment
Example fix
// before semaphore user token list --login jonh // after semaphore user list # find correct login semaphore user token list --login john
Defensive patterns
Strategy: validation
Validate before calling
LOGIN="$1"
semaphore user list | grep -Fx "$LOGIN" || { echo "user '$LOGIN' does not exist"; exit 1; }
semaphore user token list --login "$LOGIN" Prevention
- Copy logins verbatim from `semaphore user list` instead of typing them
- Confirm you're pointed at the right database/environment
- Recreate missing users before token operations
- Watch for deleted users in scripts that cache login names
When it happens
Trigger: Running `semaphore user token create/list --login <name>` where <name> (or email) does not exist in the users table — a typo, a deleted user, or the wrong database/environment.
Common situations: Typo in username; running against a different environment's DB than intended; user was removed before token operations; case or exact-match differences in the login name.
Understand the failure class
Background: "User not found", "Invalid user", and "does not exist": what missing-user lookup errors mean across Rocket.Chat, LiteLLM, Phabricator, rustfs, and pnpm — this error's family across 10 libraries.
Related errors
AI-assisted analysis of semaphoreui/semaphore@1774ccb71a (2026-09-07).
Data as JSON: /api/errors/7d775fe5860f9bd1.
Report an issue: GitHub.
Appendix: source
Thrown at cli/cmd/user_token.go:54
}
var tokenCmd = &cobra.Command{
Use: "token",
Short: "Manage user API tokens",
Run: func(cmd *cobra.Command, args []string) {
_ = cmd.Help()
os.Exit(0)
},
}
func getTokenUser(store db.Store, login string) (db.User, error) {
if login == "" {
return db.User{}, errors.New("argument --login required")
}
user, err := store.GetUserByLoginOrEmail(login, "")
if errors.Is(err, db.ErrNotFound) {
return db.User{}, fmt.Errorf("user with login %s not found", login)
}
if err != nil {
return db.User{}, err
}
return user, nil
}
func createUserToken(store db.Store, out io.Writer, args tokenArgs) error {
user, err := getTokenUser(store, args.login)
if err != nil {
return err
}
var expiresAt *time.Time
if args.ttl != "" {
d, err := time.ParseDuration(args.ttl)
if err != nil {View on GitHub (pinned to 1774ccb71a)