//go:build !windows package input import ( "fmt" "os" "golang.org/x/term" ) // readSecurePassword reads the user's password with prompt directly from /dev/tty. func readSecurePassword(prompt string) (string, error) { f, err := os.OpenFile("/dev/tty", os.O_RDWR, 0) if err != nil { return "", err } defer f.Close() _, err = f.WriteString(prompt) if err != nil { return "", err } pass, err := term.ReadPassword(int(f.Fd())) if err != nil { return "", fmt.Errorf("failed to read password: %w", err) } _, err = f.WriteString("\n") return string(pass), err }