Ik gebruik Claude voor persoonlijke projecten en klantwerk op dezelfde Mac. Elke keer uitloggen wanneer ik van context wissel onderbreekt mijn dag, en het is te makkelijk om een gesprek in het verkeerde account te beginnen. Mijn setup geeft elke context een eigen launcher: Claude Personal en Claude Work. In Terminal typ ik ccp of ccw. Beide launchers gebruiken dezelfde Claude.app-installatie.
Deze handleiding legt de macOS-configuratie achter die sneltoetsen uit, inclusief een klein AppleScript dat je kunt inspecteren voordat je het gebruikt. Het nut zit in het bewust kiezen van het account en het bijbehorende desktopprofiel voordat je aan het werk gaat.
Dit is een workaround uit de community voor Claude Desktop op macOS, geen officiële functie van Anthropic om tussen accounts te wisselen. App-updates kunnen het gedrag veranderen. De launchers hieronder bootsen de combinatie van een standaardprofiel voor Personal en een apart profiel voor Work na; controleer na de installatie elk account in de app.
De korte versie: één app, twee desktopprofielen
- Installeer Claude Desktop op
/Applications/Claude.app. Je hebt toegang nodig tot de persoonlijke en werkaccounts die je wilt gebruiken. - Personal gebruikt het bestaande standaardprofiel op
~/Library/Application Support/Claude. Work gebruikt~/Library/Application Support/Claude-Work. open -nvraagt macOS om een nieuwe instantie te starten.--argsgeeft de resterende argumenten door aan de applicatie en--user-data-dirselecteert het andere desktopprofiel.- De launchers voor dagelijks gebruik zoeken eerst naar het bijbehorende hoofdproces. Als het bestaat, vragen ze System Events om het naar de voorgrond te halen; anders starten ze het.
1. Begrijp de twee startcommando's
Voor het standaardprofiel van Personal is de onderliggende opdracht:
open -n -a "/Applications/Claude.app"
Voor het werkprofiel is dat:
open -n -a "/Applications/Claude.app" --args --user-data-dir="$HOME/Library/Application Support/Claude-Work"
Deze commando's zijn nuttig om de setup te begrijpen, maar voer ze alleen uit wanneer de bijbehorende instantie volledig is afgesloten. open -n herhalen is geen opdracht om van account te wisselen: het vraagt om een extra proces. De launcher in de volgende sectie voegt vóór dat moment een controle toe. Laat de aanhalingstekens staan rond paden met spaties en gebruik hier $HOME; een tilde binnen dubbele aanhalingstekens wordt niet naar je homedirectory geëxpandeerd.
Met een aparte user-data-directory kan de desktopapplicatie een andere lokale sessie en profielspecifieke instellingen bijhouden. Meld je in het werkvenster aan bij het werkaccount en controleer welk account daar wordt weergegeven. Gesprekken die vanuit je account beschikbaar zijn, blijven door dat account bepaald; het maken van een nieuwe map kopieert of migreert geen chats in de cloud.
2. Maak launchers voor Claude Work en Claude Personal
Open Script Editor op je Mac en plak het volgende AppleScript. Laat profileName voor de werklauncher op "Work" staan. Kies File → Export, selecteer Application als bestandsindeling en sla het bestand op als Claude Work.app in /Applications. Als die naam al bestaat, inspecteer dan de bestaande launcher voordat je die vervangt. Laat “Stay open after run handler” uitgeschakeld.
property profileName : "Work"
on run
set appPath to "/Applications/Claude.app"
set profileDir to (POSIX path of (path to home folder)) & "Library/Application Support/Claude-Work"
set executablePath to appPath & "/Contents/MacOS/Claude"
set selector to "personal"
if profileName is "Work" then set selector to "work"
set matcher to "$2 == exe && $0 !~ /--type=/ { if (mode == \"personal\" && index($0, \"--user-data-dir\") == 0) { print $1; exit } if (mode == \"work\") { marker = \"--user-data-dir=\" profile; pos = index($0, marker); tail = substr($0, pos + length(marker)); if (pos > 0 && (tail == \"\" || tail ~ /^[[:space:]]/)) { print $1; exit } } }"
set lookup to "/bin/ps -axww -o pid=,command= | /usr/bin/awk -v exe=" & quoted form of executablePath & " -v mode=" & quoted form of selector & " -v profile=" & quoted form of profileDir & " " & quoted form of matcher
set foundPid to do shell script lookup
if foundPid is not "" then
set targetPid to foundPid as integer
tell application "System Events"
set frontmost of (first application process whose unix id is targetPid) to true
end tell
return
end if
set launchCommand to "/usr/bin/open -n -a " & quoted form of appPath
if selector is "work" then
set launchCommand to launchCommand & " --args " & quoted form of ("--user-data-dir=" & profileDir)
end if
do shell script launchCommand
end run
Maak de tweede launcher met hetzelfde script door alleen property profileName : "Work" te wijzigen in property profileName : "Personal". Exporteer die als Claude Personal.app in /Applications. Dit zijn kleine launcher-applets, geen hernoemde kopieën van de Claude-applicatie. Je kunt beide naar het Dock slepen en hun pictogrammen desgewenst verschillende kleuren geven, zodat de snelkoppelingen makkelijker van elkaar te onderscheiden zijn.
Bij de eerste poging om de focus te verplaatsen kan macOS de launcher vragen om System Events te bedienen. Sta die automatisering toe als je wilt dat een klik de juiste app naar voren haalt. Als macOS een toegankelijkheidsbeperking meldt, controleer dan de toegang van de launcher via System Settings → Privacy & Security → Accessibility. Het script stopt als het focussen mislukt; het maakt dan niet stilletjes een extra instantie als terugvaloptie.
Deze launcher zoekt naar het hoofdprogramma van Claude en sluit helperprocessen met --type= uit. Personal matcht een hoofdproces dat het standaardprofiel gebruikt; Work matcht de map van het Work-profiel. Dit is een praktische controle voor normale opeenvolgende klikken, geen atomische vergrendeling: klik niet herhaaldelijk terwijl Claude nog start. Als een proces actief blijft nadat je het laatste venster hebt gesloten, brengt het naar voren halen ervan mogelijk geen venster terug. Rond al het werk op de achtergrond af, sluit die instantie normaal af en start haar daarna opnieuw. Het script beëindigt geen werk op de achtergrond en start bewust geen tweede proces met hetzelfde profiel.
3. Voeg de Terminal-aliassen ccp en ccw toe
Dit zijn de twee snelkoppelingen die ik gebruik. Voeg ze toe aan ~/.zshrc als je zsh gebruikt, de standaardshell op moderne macOS:
alias ccp='open -a "Claude Personal"'
alias ccw='open -a "Claude Work"'
Open een nieuw Terminal-tabblad of laad je shellconfiguratie opnieuw:
source ~/.zshrc
Nu opent of focust ccp de persoonlijke instantie en opent of focust ccw Work. De aliassen roepen de wrappers zonder -n aan; de wrapper beslist of het onderliggende Claude-proces moet worden gestart. Dit zijn mijn eigen snelkoppelingen, geen commando's die door Anthropic worden geleverd. Ze vereisen de twee hierboven gemaakte launcher-apps.
4. Controleer de setup voordat je erop vertrouwt
- Meld je per account aan. Start Personal, controleer het account en sluit Personal af voordat je je voor het eerst bij Work aanmeldt. Anders kunnen callbacks voor browseraanmelding bij een onverwachte instantie terechtkomen. Zodra beide sessies zijn ingesteld, open je beide launchers.
- Controleer de procesargumenten. Gebruik de onderstaande opdracht om de hoofdprocessen te zoeken. Work moet het pad naar Claude-Work tonen. Personal mag geen user-data override hebben. Proces-ID's zijn tijdelijk; zet er nooit één hard-coded in een launcher.
- Controleer het focusgedrag. Open beide vensters en voer ccp en ccw nogmaals uit, één voor één. Elk moet het bestaande venster naar voren halen. Als je een extra proces of een uitgelogde duplicaat krijgt, stop dan en controleer de profielmatching.
- Controleer integraties afzonderlijk. Controleer in elk profiel het bedoelde account, de MCP-servers en de machtigingen. Geef elke server of ontwikkelservice waar nodig een aparte poort. Herhaal deze controles na een Claude-update.
ps -axww -o pid=,command= | grep '[C]laude.app/Contents/MacOS/Claude' | grep -v -- '--type='
Als je later een AppleScript-applet wilt inspecteren, decompileer je het script met:
osadecompile '/Applications/Claude Work.app/Contents/Resources/Scripts/main.scpt'
Dit commando geldt voor applets die uit Script Editor zijn geëxporteerd. Een wrapper op basis van een shellscript kan zijn launcher ergens anders opslaan. Deel geen ongefilterde proceslijsten of profielinhoud: daarin kunnen lokale paden of integratiedetails staan die niet thuishoren in een openbare supportthread.
Wat dit scheidt — en wat niet
Het doel is om de desktopcontexten gescheiden te houden: een persoonlijke login met de bijbehorende profielinstellingen naast een werklogin met de bijbehorende instellingen. Beide draaien nog steeds onder dezelfde macOS-gebruiker. Ze hebben toegang tot bestanden waartoe die gebruiker toegang heeft en tot alle tools die je autoriseert. Gedeelde repositories, omgevingsvariabelen, externe MCP-credentials en netwerkservices worden niet geïsoleerd alleen omdat het desktopprofiel een andere naam heeft.
Deze handleiding configureert in het bijzonder niet de standalone Claude Code CLI. De configuratie daarvan gebruikt een ander mechanisme, waaronder CLAUDE_CONFIG_DIR, dat wordt beschreven in de officiële documentatie over Claude Code-instellingen. Ga er niet van uit dat deze desktopaliassen elke CLI-credential, -machtiging of projectinstelling scheiden. Als twee agents hetzelfde project bewerken, geef ze dan aparte Git-worktrees of checkouts en een duidelijke taakverdeling.
Personal op het standaardprofiel van de desktop laten staan is handig voor een bestaande login, maar daardoor kan het openen van het standaard Claude-pictogram ook dit profiel gebruiken. Gebruik de benoemde launchers consequent. Bij een nieuwe installatie kun je Personal ook een eigen expliciete directory geven; daarvoor moet je zowel de launchopdracht als de procesmatcher samen aanpassen. Verplaats of kopieer een actief profiel niet terwijl Claude het gebruikt.
Veelgestelde vragen
Moet ik Claude twee keer installeren?
Niet voor deze opstelling. Beide applets starten /Applications/Claude.app. De appinstallatie wordt gedeeld; de desktopdatamappen verschillen. Een update van de hoofdapp werkt de binary bij die beide launchers gebruiken, maar de workaround moet daarna nog steeds kort op gedrag worden gecontroleerd.
Verhoogt dit mijn gebruikslimiet?
Nee. Een launcher verandert geen abonnement, voegt geen credits toe en reset geen limiet. Elk account behoudt de eigen toepasselijke toegangs- en gebruikslimieten. Het voordeel is dat je de privé- en werkcontext beschikbaar kunt houden zonder steeds uit te loggen.
Waarom opende een klik een uitgelogd venster?
Controleer eerst of meer dan één proces hetzelfde profiel gebruikt. Sla je werk op, sluit de betrokken instanties normaal af en open de bedoelde launcher één keer opnieuw. Controleer ook de automatiseringsmachtigingen en de exacte directory in de launchopdracht. Installeer niet meteen opnieuw en verwijder profielmappen niet als eerste reactie.
Bronnen en credits
De aanpak met de profielvlag wordt beschreven door Philipp Stracker. aoxborrow’s launcher gist verkent benoemde launchers en focusgedrag; de huidige versie gebruikt een andere directoryindeling dan de mijne. Het AppleScript hierboven is een compacte implementatie voor de specifieke paden in dit artikel. Melkon’s guide behandelt een andere aanpak met gekopieerde appbundels. Voor deze opstelling heb je de stappen voor bundelwijzigingen daarin niet nodig.
Gebruik je AI om sneller te shippen? Zorg dat de code standhoudt.
Een betere AI-workflow helpt je tussen projecten te schakelen. Die vertelt je niet of de resulterende applicatie een degelijke architectuur heeft, data goed verwerkt of klaar is voor release. Als je een codebase hebt overgenomen, met AI een MVP hebt gebouwd of op het punt bent beland waarop elke wijziging kwetsbaar voelt, is dat een goed moment voor een onafhankelijke review.
Mijn auditdienst voor mobiele en webcode beoordeelt architectuur, state management, prestaties, beveiligingsrisico’s en releasegereedheid. Je ontvangt een schriftelijk rapport met een prioritering op ernst en aanbevolen oplossingen, plus een live walkthrough, zodat je kunt bepalen wat als eerste aandacht verdient. We spreken de scope vóór de review af; de implementatie van de oplossingen kan een afzonderlijke opdracht zijn.
Ik help teams ook met AI-adoptie en uitrol en AI-productontwikkeling. Vertel me over je app en vraag een code-audit aan. Neem de stack, de fase van het product en het onderdeel dat je het minst vertrouwt mee; samen bepalen we een nuttige scope.