| # Extract Cursor CLI OAuth token from host machine for use in Docker container | |
| # | |
| # IMPORTANT: This extracts the cursor-agent CLI OAuth token, NOT the Cursor IDE token. | |
| # cursor-agent stores tokens in macOS Keychain (not SQLite like the IDE). | |
| # | |
| # Usage: ./scripts/get-cursor-token.sh | |
| # or: export CURSOR_AUTH_TOKEN=$(./scripts/get-cursor-token.sh) | |
| # | |
| # For Docker: echo "CURSOR_AUTH_TOKEN=$(./scripts/get-cursor-token.sh)" >> .env | |
| set -e | |
| # Determine platform and extract token accordingly | |
| if [[ "$OSTYPE" == "darwin"* ]]; then | |
| # macOS: cursor-agent stores OAuth tokens in Keychain | |
| # Service: cursor-access-token, Account: cursor-user | |
| if ! command -v security &> /dev/null; then | |
| echo "Error: 'security' command not found." >&2 | |
| exit 1 | |
| fi | |
| # Extract access token from Keychain | |
| TOKEN=$(security find-generic-password -a "cursor-user" -s "cursor-access-token" -w 2>/dev/null) | |
| if [ -z "$TOKEN" ]; then | |
| echo "Error: No Cursor CLI token found in Keychain." >&2 | |
| echo "Make sure you've logged in with 'cursor-agent login' first." >&2 | |
| exit 1 | |
| fi | |
| elif [[ "$OSTYPE" == "linux-gnu"* ]]; then | |
| # Linux: cursor-agent stores OAuth tokens in a JSON file | |
| # Default location: ~/.config/cursor/auth.json | |
| # Or: $XDG_CONFIG_HOME/cursor/auth.json | |
| if [ -n "$XDG_CONFIG_HOME" ]; then | |
| AUTH_FILE="$XDG_CONFIG_HOME/cursor/auth.json" | |
| else | |
| AUTH_FILE="$HOME/.config/cursor/auth.json" | |
| fi | |
| if [ ! -f "$AUTH_FILE" ]; then | |
| echo "Error: Cursor auth file not found at: $AUTH_FILE" >&2 | |
| echo "Make sure you've logged in with 'cursor-agent login' first." >&2 | |
| exit 1 | |
| fi | |
| # Check if jq is available | |
| if ! command -v jq &> /dev/null; then | |
| echo "Error: jq is required but not installed." >&2 | |
| echo "Install it with: apt install jq" >&2 | |
| exit 1 | |
| fi | |
| TOKEN=$(jq -r '.accessToken // empty' "$AUTH_FILE" 2>/dev/null) | |
| if [ -z "$TOKEN" ]; then | |
| echo "Error: No access token found in $AUTH_FILE" >&2 | |
| exit 1 | |
| fi | |
| else | |
| echo "Error: Unsupported platform: $OSTYPE" >&2 | |
| exit 1 | |
| fi | |
| # Output the token | |
| echo "$TOKEN" | |