Hey there, coder! 😎 So, you’ve been loving Cursor, that sweet AI-powered code editor, but your free trial just ended, and you’re not ready to commit to a paid plan. No stress!
Here’s a chill, step-by-step guide to keep using Cursor for free on your MacOS/Linux machine. We’ll use a simple script and a disposable email to reset your trial like a pro. Don’t worry, I’ll explain what the script does, why it’s safe, and how to make it all work.
Later I'll update this blog to make it usefull in windows as well
I haven't tried it on linux but i speculate it will work there as well go give it a try
Let’s dive in! 🚀
Follow me on X
What You’ll Need
- A MacOS computer (Intel or Apple Silicon, doesn’t matter, we got you covered).
- Basic familiarity with the Terminal (don’t worry, it’s super easy).
- An internet connection to grab a temporary email and download the script’s goodies.
- A vibe for keeping things simple and free. 😎
Step-by-Step Guide to Keep Cursor Free
Step 1: Sign Out of Cursor
Once your free trial is over, open the Cursor app and sign out of your account. This clears the slate for a fresh start. Close the app completely when you’re done.
Step 2: Clear Cursor’s Data
To reset the trial, we need to remove some local data Cursor stores on your Mac. Open your Terminal (you can find it in Applications > Utilities or search for it with Spotlight). Run these commands one by one:
sudo rm -rf ~/Library/Application\ Support/Cursor
sudo rm -rf ~/Library/Application\ Support/cursor-updater
What’s happening here?
These commands delete Cursor’s local data, like cached settings and trial info. The sudo
part means you’re running it with admin privileges, so you’ll need to enter your Mac password. Don’t worry, this is totally safe—it’s just clearing out app-specific files, not touching anything critical to your system. It’s like wiping the app’s memory so it thinks it’s being installed fresh.
Step 3: Close Cursor
Make sure the Cursor app is fully closed. You can do this by right-clicking its icon in the Dock and selecting Quit, or use Command + Q
when the app is active.
Step 4: Create the Magic Script
Now, we’re gonna create a script called install.sh
that automates downloading and setting up a fresh Cursor install. Open Terminal and create the file by typing:
nano install.sh
Copy and paste the following script into the Terminal window:
You can get the script form here as well -
https://github.com/yeongpin/cursor-free-vip
The script
#!/bin/bash
# Color definitions
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Logo
print_logo() {
echo -e "${CYAN}"
cat << "EOF"
██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗ ██╔══██╗██╔══██╗██╔═══██╗
██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝ ██████╔╝██████╔╝██║ ██║
██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗ ██╔═══╝ ██╔══██╗██║ ██║
╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║ ██║ ██║ ██║╚██████╔╝
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝
EOF
echo -e "${NC}"
}
# Get download folder path
get_downloads_dir() {
if [[ "$(uname)" == "Darwin" ]]; then
echo "$HOME/Downloads"
else
if [ -f "$HOME/.config/user-dirs.dirs" ]; then
. "$HOME/.config/user-dirs.dirs"
echo "${XDG_DOWNLOAD_DIR:-$HOME/Downloads}"
else
echo "$HOME/Downloads"
fi
fi
}
# Get latest version
get_latest_version() {
echo -e "${CYAN}ℹ️ Checking latest version...${NC}"
latest_release=$(curl -s https://api.github.com/repos/yeongpin/cursor-free-vip/releases/latest) || {
echo -e "${RED}❌ Cannot get latest version information${NC}"
exit 1
}
VERSION=$(echo "$latest_release" | grep -o '"tag_name": ".*"' | cut -d'"' -f4 | tr -d 'v')
if [ -z "$VERSION" ]; then
echo -e "${RED}❌ Failed to parse version from GitHub API response:\n${latest_release}"
exit 1
fi
echo -e "${GREEN}✅ Found latest version: ${VERSION}${NC}"
}
# Detect system type and architecture
detect_os() {
if [[ "$(uname)" == "Darwin" ]]; then
# Detect macOS architecture
ARCH=$(uname -m)
if [[ "$ARCH" == "arm64" ]]; then
OS="mac_arm64"
echo -e "${CYAN}ℹ️ Detected macOS ARM64 architecture${NC}"
else
OS="mac_intel"
echo -e "${CYAN}ℹ️ Detected macOS Intel architecture${NC}"
fi
elif [[ "$(uname)" == "Linux" ]]; then
# Detect Linux architecture
ARCH=$(uname -m)
if [[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]]; then
OS="linux_arm64"
echo -e "${CYAN}ℹ️ Detected Linux ARM64 architecture${NC}"
else
OS="linux_x64"
echo -e "${CYAN}ℹ️ Detected Linux x64 architecture${NC}"
fi
else
# Assume Windows
OS="windows"
echo -e "${CYAN}ℹ️ Detected Windows system${NC}"
fi
}
# Install and download
install_cursor_free_vip() {
local downloads_dir=$(get_downloads_dir)
local binary_name="CursorFreeVIP_${VERSION}_${OS}"
local binary_path="${downloads_dir}/${binary_name}"
local download_url="https://github.com/yeongpin/cursor-free-vip/releases/download/v${VERSION}/${binary_name}"
# Check if file already exists
if [ -f "${binary_path}" ]; then
echo -e "${GREEN}✅ Found existing installation file${NC}"
echo -e "${CYAN}ℹ️ Location: ${binary_path}${NC}"
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo -e "${YELLOW}⚠️ Requesting administrator privileges...${NC}"
if command -v sudo >/dev/null 2>&1; then
echo -e "${CYAN}ℹ️ Starting program with sudo...${NC}"
sudo chmod +x "${binary_path}"
sudo "${binary_path}"
else
echo -e "${YELLOW}⚠️ sudo not found, trying to run normally...${NC}"
chmod +x "${binary_path}"
"${binary_path}"
fi
else
# Already running as root
echo -e "${CYAN}ℹ️ Already running as root, starting program...${NC}"
chmod +x "${binary_path}"
"${binary_path}"
fi
return
fi
echo -e "${CYAN}ℹ️ No existing installation file found, starting download...${NC}"
echo -e "${CYAN}ℹ️ Downloading to ${downloads_dir}...${NC}"
echo -e "${CYAN}ℹ️ Download link: ${download_url}${NC}"
# Check if file exists
if curl --output /dev/null --silent --head --fail "$download_url"; then
echo -e "${GREEN}✅ File exists, starting download...${NC}"
else
echo -e "${RED}❌ Download link does not exist: ${download_url}${NC}"
echo -e "${YELLOW}⚠️ Trying without architecture...${NC}"
# Try without architecture
if [[ "$OS" == "mac_arm64" || "$OS" == "mac_intel" ]]; then
OS="mac"
binary_name="CursorFreeVIP_${VERSION}_${OS}"
download_url="https://github.com/yeongpin/cursor-free-vip/releases/download/v${VERSION}/${binary_name}"
echo -e "${CYAN}ℹ️ New download link: ${download_url}${NC}"
if ! curl --output /dev/null --silent --head --fail "$download_url"; then
echo -e "${RED}❌ New download link does not exist${NC}"
exit 1
fi
elif [[ "$OS" == "linux_x64" || "$OS" == "linux_arm64" ]]; then
OS="linux"
binary_name="CursorFreeVIP_${VERSION}_${OS}"
download_url="https://github.com/yeongpin/cursor-free-vip/releases/download/v${VERSION}/${binary_name}"
echo -e "${CYAN}ℹ️ New download link: ${download_url}${NC}"
if ! curl --output /dev/null --silent --head --fail "$download_url"; then
echo -e "${RED}❌ New download link does not exist${NC}"
exit 1
fi
else
exit 1
fi
fi
# Download file
if ! curl -L -o "${binary_path}" "$download_url"; then
echo -e "${RED}❌ Download failed${NC}"
exit 1
fi
# Check downloaded file size
local file_size=$(stat -f%z "${binary_path}" 2>/dev/null || stat -c%s "${binary_path}" 2>/dev/null)
echo -e "${CYAN}ℹ️ Downloaded file size: ${file_size} bytes${NC}"
# If file is too small, it might be an error message
if [ "$file_size" -lt 1000 ]; then
echo -e "${YELLOW}⚠️ Warning: Downloaded file is too small, possibly not a valid executable file${NC}"
echo -e "${YELLOW}⚠️ File content:${NC}"
cat "${binary_path}"
echo ""
echo -e "${RED}❌ Download failed, please check version and operating system${NC}"
exit 1
fi
echo -e "${CYAN}ℹ️ Setting executable permissions...${NC}"
if chmod +x "${binary_path}"; then
echo -e "${GREEN}✅ Installation completed!${NC}"
echo -e "${CYAN}ℹ️ Program downloaded to: ${binary_path}${NC}"
echo -e "${CYAN}ℹ️ Starting program...${NC}"
# Run program directly
"${binary_path}"
else
echo -e "${RED}❌ Installation failed${NC}"
exit 1
fi
}
# Main program
main() {
print_logo
get_latest_version
detect_os
install_cursor_free_vip
}
# Run main program
main
Save the file by pressing Ctrl + O
, hit Enter
, then Ctrl + X
to exit nano
.
What does this script do?
This install.sh
script is a helper that automates downloading the latest version of a free Cursor binary from a GitHub repo (yeongpin/cursor-free-vip
). Here’s the breakdown:
- Prints a cool logo: Just for vibes, it displays a fancy ASCII art logo.
- Finds your Downloads folder: It figures out where your Downloads folder is on your Mac.
- Checks the latest version: It hits up GitHub’s API to grab the latest release version of the Cursor binary.
- Detects your Mac’s architecture: It checks if you’re on an Apple Silicon (arm64) or Intel Mac to download the right file.
- Downloads the binary: It pulls the correct Cursor binary for your Mac from GitHub and saves it to your Downloads folder.
- Makes it executable: It sets permissions so you can run the downloaded file.
- Runs the app: It launches the freshly downloaded Cursor app.
Is it safe?
Totally! The script only deletes Cursor’s local data (nothing system-critical), downloads a file from a public GitHub repo, and runs it. It doesn’t mess with your system files, install malware, or do anything shady. Just make sure you’re cool with downloading from the yeongpin/cursor-free-vip
repo—check it out on GitHub if you wanna be extra sure. The script also checks the file size to ensure it’s a legit executable, not some random error message.
Step 5: Run the Script
Now, let’s execute the script. In Terminal, run:
sudo bash install.sh
You’ll need to enter your Mac password again because sudo
is used to set executable permissions. The script will download the Cursor binary, make it runnable, and launch it.
Step 6: Interact with the Script
When the script runs, it might prompt you with a menu (depending on the binary). When prompted, press 8 and hit Enter
. This likely selects an option to set up a free version of Cursor. After that, when prompted again, press 0 to exit the script.
Step 7: Reopen Cursor
Open the Cursor app again (it should be in your Downloads folder or wherever the script saved it). It’ll act like a fresh install, ready for a new trial.
Step 8: Get a Disposable Email
Head over to temp-mail.org in your browser. This site gives you a temporary, disposable email address that self-destructs after a while—perfect for signing up without spamming your real inbox.
- Click to generate a new email address (it’s instant, no registration needed).
- Copy the temporary email address.
Step 9: Create a New Cursor Account
In the Cursor app, sign up for a new account using the temporary email from temp-mail.org. Follow the prompts to create the account, and log in with it. Boom, you’re back in with a fresh trial! 🎉
Step 10: Enjoy Cursor for Free
You’re all set! You can now use Cursor as if it’s a brand-new install. Note that some features, like Cloud Sonnet 4, might be locked to pro users, but you’ll still get the core Cursor experience—AI code suggestions, sleek editor, all the good stuff.
Why Use a Disposable Email?
Using a temp email (like from temp-mail.org) is clutch because:
- No spam: Your real email stays clean from promotional emails or potential data breaches.
- Privacy: You don’t have to share your personal email with every service.
- Easy resets: If you need to reset your trial again, just grab another temp email and repeat the process.
Temp-mail.org is super user-friendly, anonymous, and doesn’t require any signup. It’s like a burner phone for your email—use it, ditch it, no strings attached.
Tips for Smooth Sailing
- Repeat as needed: If your trial runs out again, just repeat the steps: clear the data, run the script, get a new temp email, and sign up again.
-
Check the GitHub repo: The script pulls from
yeongpin/cursor-free-vip
. If you’re curious, peek at the repo to see what’s up. - Stay safe: Only run scripts from sources you trust. This one’s straightforward, but always double-check GitHub repos for sketchy stuff.
- Backup your work: Cursor might reset settings or local data, so save your projects elsewhere before running the script.
Is This Ethical?
This method is about resetting your trial by clearing local data and using a new account with a disposable email. It’s a gray area—technically, you’re not breaking anything, but you’re extending the trial beyond what the devs might expect. If you love Cursor and can afford it, consider supporting the devs with a paid plan. For now, this is a chill way to keep coding without spending a dime. 😎
What You Get
With this setup, you’ll get Cursor’s core features—AI-powered code completion, error detection, and a slick VS Code-like interface. Some premium features (like advanced AI models) might be locked, but you’ll still have plenty to work with for coding, debugging, and building dope projects.
That’s it, fam! You’re now ready to keep rocking Cursor for free on your Mac. Hit up the Terminal, run that script, grab a temp email, and code like a boss. If you run into any snags, lemme know, and I’ll help you sort it out. Happy coding! 🚀✨
Top comments (0)