Adds a troubleshooting entry: Claude's auto-updater relaunches the app with no profile flags, landing in the default profile. Turning off auto-updates via the disableAutoUpdates policy (macOS, Windows, Linux locations) avoids it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4.0 KiB
Run multiple isolated * Claude profiles on macOS from a menu-bar item — each its own Claude Desktop and paired Claude Code setup, its windows tagged to tell them apart. Your normal install is untouched.
Note
shannoncoat started as the shell script in the first commit, written by hand. Claude built the GUI app out of it — most of the Swift, the icon, and this README — working from human direction, review, and dogfooding.
Install
macOS 13+, Claude Desktop.
- Download
shannoncoat.app.zipfrom the latest release, unzip, and move to/Applicationsor~/Applications. - First launch is blocked (not notarized): System Settings → Privacy & Security → Open Anyway.
- Grant Accessibility when prompted; the tags need it.
Everyday use
With nothing running, shannoncoat offers a checklist and starts whichever profiles you tick. The menu bar shows a dot per running profile in its colour, plus the name when only one is up; hover for the rest.
- Click a profile — switch to it; the others are quit, even if it's already running.
- Shift-click — open it alongside them, or focus it if already up.
Settings → Click a profile to swaps the two. ⇆ marks the last one you
switched to. Close Profile quits one, Quit Claude all (shannoncoat
stays), Manage Profiles… opens the main window.
Each managed window carries a tag in its profile's colour — drag it anywhere, and each profile remembers its spot.
Profiles
default is your real Claude install: start/stop only, never managed, so it gets no tag and can't be deleted.
Manage Profiles… → + adds one. Directories are optional — blank gives
~/.shannoncoat/data/<name>/{app,code}. Two profiles may not share a directory;
that would silently merge their sessions, so shannoncoat refuses to start and
names the collision.
Profiles are JSON files in ~/.shannoncoat/. Deleting one quits it and removes
just that file — the Claude data stays on disk, so recreating it resumes
where you left off.
Settings
- Launch at Login
- Click a profile to — switch or open alongside; Shift-click does the other.
- Window tag — name chip or coloured dot.
- Automatically check for updates — once a day at most, against the latest GitHub release, or Check for Updates… on demand. It never self-updates; download and swap the app in yourself.
Troubleshooting
Tags don't appear. Almost always Accessibility. If shannoncoat is listed and ticked under Privacy & Security → Accessibility, remove it with − and re-add — a differently-signed build leaves the old entry visible but inert, and toggling won't help.
A profile restarts into the default one. Claude's auto-updater relaunches
the app with no profile flags. Turn auto-updates off with the
disableAutoUpdates policy, then update by hand and restart from shannoncoat:
| OS | Where |
|---|---|
| macOS | /Library/Managed Preferences/com.anthropic.claudefordesktop.plist — <key>disableAutoUpdates</key><true/> |
| Windows | HKLM\SOFTWARE\Policies\Claude — disableAutoUpdates (DWORD 1) |
| Linux | /etc/claude-desktop/managed-settings.json — {"disableAutoUpdates": true} |
A profile won't quit. Claude declined — usually its "unsaved work" or "still generating" dialog. shannoncoat waits rather than killing it.
Build from source
Needs the Xcode Command Line Tools (xcode-select --install).
./build.sh
Lands in .build/shannoncoat.app. Unsigned builds get a new code identity each
time, silently voiding Accessibility on every rebuild; .env.example covers a
one-off self-signed certificate that avoids it.
Isolation
Important
Isolation isn't perfect. Claude and Claude Code can have effectively full disk access from any profile, default config folders included, and some integrations — skills, plugins — hardcode
~/.claudeand write there.
