A lightweight Windows GUI utility to manage and launch multiple isolated Cursor IDE instances on the same codebase. Each profile uses its own user-data directory, maintaining separate login sessions, extensions, settings, and AI chat history.
Version 2.0+ introduces native integration with Agent Story, a local MITM proxy and React dashboard to monitor, record, and inspect all Cursor AI requests, prompts, and streaming LLM payloads.
Each profile gets its own folder under %USERPROFILE%\.cursor-profiles\ (override with CURSOR_PROFILES_DIR). That lets several Cursor windows open the same project at once without sharing account credentials, extensions, or chat history.
The Profile Manager window title is built dynamically as Cursor Profile Manager vversion so it is distinct from a Cursor IDE window editing this repo. Multiple manager windows may run at once — each launch opens a new instance.
Public marketing site: https://jpolvora.github.io/cursor-profile-manager/
Static source lives in site/. GitHub Actions (.github/workflows/pages.yml) deploys on push to master when site/** or that workflow file changes. README-only pushes do not redeploy the site.
Maintainer enablement (one-time): Repo Settings → Pages → Build and deployment → Source: GitHub Actions. After the first green workflow run, the URL above serves the site.
Profile list with per-row Actions (Start, Focus, Close, Folder, Edit, Del), theme selector, and footer status (version, Check for updates, Cursor install info).
Create a profile with a custom user-data directory, optional default project folder, and notes. Sign in to a different Cursor account the first time that profile launches.
Footer Check for updates compares your local # App-Version marker with GitHub master. When versions match, you can still force reinstall from GitHub.
- Multiple Cursors on one codebase — parallel work in separate windows.
- Separate accounts — work vs. personal, or different clients (sign in once per profile).
- Custom user-data dirs — pick any folder per profile.
- Parallel AI assistance — independent agent/chat context per instance.
- Multiple windows per profile — start the same profile more than once when needed.
Clone this repository and run the PowerShell script:
.\cursor-profile-manager.ps1Or double-click cursor-profile-manager.bat.
Desktop Shortcut (launches with the Cursor icon, hiding the background console):
.\install-desktop-shortcut.ps1Re-run the shortcut installer if you move the folder to automatically repair the path.
| Feature | Description |
|---|---|
| Isolated Profiles | Add, edit, and delete profiles. Each profile runs with its own --user-data-dir (fully isolating extensions, themes, login sessions, and chat logs). |
| Agent Story Integration (v2) | Capture and inspect Cursor AI traffic (system prompts, user questions, tool calls, and streaming responses) with an embedded MITM proxy and React dashboard. |
| Automatic Routing | Proxied profiles automatically configure Chromium arguments, Node.js proxy environment variables, and settings.json HTTP proxy values. |
| Project Context Mapping | Writes a startup context marker (cursor-profile-manager.context.json) and registers the process PID with Agent Story to map TCP request sessions to the correct project workspace (avoids Unassigned telemetry). |
| Live Process Tracking | Monitors running instances using Windows WMI process start/exit events and a 2-second fallback timer. Shows live window count and active status in the grid. |
| Parallel Execution | Start multiple instances/windows for the same profile or run multiple different profiles concurrently on the same project folders. |
| Theme Customization | Light mode, Dark mode, or System default (dynamically tracks Windows color customization settings via registry changes). |
| Tray and startup options | Optional Close/minimize to tray sends the window to the notification area when you click minimize or close (X); tray menu Show Window / Exit (Exit confirms if Agent Story proxy is running). Start with Windows registers in the current-user Run key. |
| In-App Auto-Updates | One-click footer button comparing local code version markers against GitHub master. Updates all local script assets in-place on confirmation. |
| Cursor Installer Helper | Checks for Cursor installation path and CLI executable on PATH. Prompts to download and install if missing. |
| Safe Deletion | Prevents folder deletion if any window for the profile is still active. |
- Launch the Manager: Run
cursor-profile-manager.ps1or use the Desktop shortcut. - Add a Profile: Click the Add Profile button in the toolbar. It automatically suggests isolated folders under
%USERPROFILE%\.cursor-profiles\. - Configure Defaults: Optionally choose a default project directory (Cursor will open this workspace on startup). Optionally set Window mode: Default (Cursor decides), Classic IDE (
--classic), or Agents Window (--glass). Classic and Agents Window require a recent Cursor 3.x desktop build; older builds ignore unknown flags. - Launch Cursor: Click Start ▶ (or double-click the row). This spawns Cursor with
--user-data-dirpointing to your profile folder (and--classic/--glasswhen Window mode is set). - Multiple Windows: Click Start ▶ again on the same running profile to open additional windows sharing that profile's session and extensions.
- Actions: Use Focus to bring the active windows to the front, Close to terminate all instances of a profile, Folder to open the user-data directory in File Explorer, and Edit / Del to modify profile info.
- Trace AI Interactions (v2):
- Edit a profile and check Run proxied.
- Choose Proxy type: Default (MITM capture + dashboard on port 8080) or Alternative (pass-through discovery log on port 8081 — logs every host Cursor connects to without decrypting TLS).
- Toggle Start Agent Story on the manager toolbar to start the local MITM proxy (port 8080) and dashboard (port 3001/5173) for Default profiles.
- For Alternative profiles, the pass-through proxy starts automatically on Start (port 8081); logs go to
agent-story\server\pass-through-proxy.log. Analyze withnpm run analyze-pass-through-loginagent-story\server. - Click Open dashboard to launch the React web app (
http://localhost:5173/). - Click Clean DB to wipe the local Agent Story SQLite database (all captured interactions) and restart with a fresh database if Agent Story was running.
- Start your proxied profile. Note: Ensure all existing Cursor windows for that profile are closed before launching proxied, as environment variables and settings apply at startup.
- Work with Cursor's chat or Cmd+K as usual and watch raw prompts and stream details appear instantly on the dashboard.
- Tray and startup (toolbar): Enable Close/minimize to tray to hide the manager in the notification area when you minimize or click the window close (X) button. Right-click the tray icon for Show Window (restore) or Exit (fully quit; confirms if the Agent Story proxy is running). Enable Start with Windows to launch at sign-in (starts in the tray when close/minimize-to-tray is also enabled). On Windows 11, new tray icons may appear under the ^ overflow chevron first.
Behind the scenes, the manager invokes:
Cursor.exe --user-data-dir "<profile-dir>" --new-window [--classic|--glass] [project-path]
By using separate user-data directories (instead of Cursor's --profile flag), all configurations, caches, extensions, and OAuth credentials remain completely independent. When Window mode is Classic IDE or Agents Window, Start appends --classic or --glass (never both). Default adds neither flag. These flags need a recent Cursor 3.x desktop build.
When a profile is launched with proxying enabled:
- Chromium Proxy: Appends
--proxy-server,--proxy-bypass-list(localhost + Git hosts), and--ignore-certificate-errorsso AI traffic is captured while Git and local services bypass the MITM. - Node Agent Proxy: Sets
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY,NO_PROXY(Git + localhost bypass hosts), andNODE_TLS_REJECT_UNAUTHORIZED=0so agent subprocesses route Cursor API calls through Agent Story without blocking on capture work (Windows env keys are case-insensitive, so these satisfy Node clients that read lowercase names too). - Settings Injection: Automatically configures
"http.proxy","http.proxyStrictSSL": false,"http.proxySupport": "override", and"http.electronFetch": truein<profile-dir>\User\settings.jsonso extension and agent HTTP clients route through the proxy (matches Cursor's default proxy mode). - Runtime argv.json: On every Start, writes
proxy-server,proxy-bypass-list, and (default MITM only)ignore-certificate-errorsto<profile-dir>\argv.jsonso Electron/Node subprocesses inherit the current proxy port — fully quit and relaunch Cursor after toggling RunProxied or proxy type so running processes pick up changes. - PID Grouping: Writes a temporary
<user-data-dir>\cursor-profile-manager.context.jsonfile and registers the process PID with Agent Story viaPOST /api/profile-sessions/registerso that TCP traffic captured by the proxy maps cleanly to the project name.
Agent Story forwards intercepted Cursor API traffic immediately; capture and profile resolution run in the background so agent chat streams are not delayed.
Profiles are scanned by looking at active Cursor.exe command lines via CIM Win32_Process.
- Instances count is the number of
--type=rendererprocesses associated with that user-data directory. - UI refreshes are triggered by WMI process creation/deletion events (debounced to 500 ms) and a 2-second fallback timer.
| Variable | Description |
|---|---|
CURSOR_PROFILES_DIR |
Root folder for profile subdirectories and the manager metadata (profiles.json, settings.json, launch.log). |
CURSOR_BIN |
Custom path to the Cursor.exe binary (otherwise auto-detected). |
AGENT_STORY_DIR |
Path to the Agent Story installation folder (defaults to agent-story\ under the script directory). |
AGENT_STORY_UI_URL |
Web dashboard URL (default: http://localhost:5173/). |
AGENT_STORY_PROXY_URL |
MITM proxy listener address (default: http://127.0.0.1:8080). |
AGENT_STORY_PASS_THROUGH_PROXY_URL |
Pass-through discovery proxy (default: http://127.0.0.1:8081). |
Saved under <CURSOR_PROFILES_DIR>\profiles.json (encoded in UTF-8):
[
{
"Id": "f3b18dfa-bbcc-4abc-8def-1234567890ab",
"Name": "Work-ClientA",
"UserDataDir": "C:\\Users\\Username\\.cursor-profiles\\Work-ClientA",
"ProjectPath": "L:\\source\\workspace-a",
"Notes": "Dedicated work profile for Client A",
"RunProxied": true,
"ProxyType": "default",
"WindowMode": "default",
"CreatedAt": "2026-06-30T12:00:00"
}
]Append-only launch diagnostics saved under <CURSOR_PROFILES_DIR>\launch.log. Each Start writes INFO/WARN/ERROR lines with profile name, executable, arguments, PID, and outcome. If a launch fails, the Launch Error dialog shows the last ERROR line and this file path.
Saved under <CURSOR_PROFILES_DIR>\settings.json:
{
"Theme": "default"
}default: Dynamically matches the Windows light/dark theme preference.light/dark: Locks the interface to light/dark color schemes.
Requires Pester 3.x or later. Run from the repo root:
.\run-tests.ps1Tests are isolated and run in a temporary sandbox directory, protecting your active profiles and configuration settings.
This repository can install portable agent skills from workflow-skills into .agents/skills/ (spec→PR workflows, harness audit, etc.). They are for AI-assisted development of this project, not required to run the Profile Manager GUI.
| Agent hub | .agents/skills/shared/AGENTS.md |
| Product agent guide | AGENTS.md (PowerShell conventions + install/update commands) |
| Local config | .agents/skills/shared/config.json (gitignored; /configure-project) |
# Install (interactive) or update tracked skills — requires Node.js / npx
npx --yes github:jpolvora/workflow-skills
npx --yes github:jpolvora/workflow-skills update
npx --yes github:jpolvora/workflow-skills update --include-newAfter install or update, ask your agent to run check-harness. Full CLI options: workflow-skills install docs.
| File / Folder | Description |
|---|---|
| cursor-profile-manager.ps1 | The main application GUI written in PowerShell and WinForms. |
| cursor-profile-manager.bat | Silent launcher wrapper that boots the GUI without showing a console window. |
| install-desktop-shortcut.ps1 | Sets up or repairs a Windows Desktop shortcut with the native Cursor icon. |
| run-tests.ps1 | PowerShell test runner for Pester unit testing. |
| tests/ | Directory containing Pester unit tests. |
| agent-story/ | Embedded Node/React proxy and visualization dashboard codebase. |
| .agents/skills/ | Optional installed workflow-skills (managed copies + local shared/ config). |
| screenshots/ | PNG screenshots for documentation. |
| CHANGELOG.md | Release change log. |
| AGENTS.md | Technical guidelines for AI coding assistants (product + workflow skills usage). |
- OS Support: Windows only. Relies on PowerShell 5.1+ and .NET WinForms.
- Resources: Each profile runs separate Electron rendering processes (~500 MB+ RAM each).
- Extensions: Extensions are downloaded and stored separately in each profile's user-data directory.
- CLI Command: Global terminal calls to
cursorcommand will use your default profile settings. Use the manager to launch secondary instances.
MIT


