Claudeデスクトッププロファイル
1つの本物の /Applications/Claude.app に対して、--user-data-dir を通じてアカウントごとに1つのプロファイルフォルダ、そしてアカウントごとにガード付きのDockランチャーを作成します。既存のアプリ、そのサインイン状態、およびデフォルトプロファイルには一切触れません。元に戻すには、ランチャーと追加フォルダを削除するだけです。
Chad Timblinのガイド「各Claudeアカウントに個別のClaudeデスクトップアプリを実行する」から派生しています。macOSのみ対応。Windowsは未確認ですが、そのガイドの付録に既知の注意点が記載されています。
基本ルール
/Applications/Claude.appを決して変更、移動、名前変更、複製、再署名しないでください。 フォールバックとしても行わないでください。ステップ2が失敗した場合は、停止して報告し、クローンを作成しないでください。- デフォルトのプロファイル
~/Library/Application Support/Claudeに決して書き込まないでください。 - 既に実行中のプロファイルを起動しないでください。 このアプリにはmacOS上のシングルインスタンスロックがありません。1つのフォルダを2回起動すると、そのフォルダを共有する2つのライブプロセスが発生します(2026-11-04 v4.16336.0、2026-07-11 v1.20186.1で確認)。ランチャーのフォーカスパスは、決して再起動にフォールバックしてはいけません。
- サインインはユーザーの作業であり、正確に1つのインスタンスを実行した状態で行います。 GoogleおよびSSOログインはブラウザを経由して往復し、
claude://リンクで戻ってきます。macOSはこのリンクを既に実行中のインスタンスに渡します。2つが開いていると、サインインを受け取ったインスタンスがそれを受信し「Google sign-in code does not answer a sign-in this app started; ignoring」とログに記録し、もう一方はログイン画面のままになります。パスワードは決して扱わないでください。 - 実行環境に注意してください。 このセッションがClaudeデスクトップアプリ内で実行されている場合、それを終了するとセッションが強制終了されます。そのため、終了手順はユーザーにテキストで伝えてください。
~/Libraryが読み取れない場合は、ターミナルからこのコマンドを実行するようにユーザーに指示してください。 - このセッションで作成したテスト用の成果物のみを削除してください。 スクリプトのスモークテストは、実行前に存在していたフォルダには触れません。
スコープ
全作業は約10個のコマンドとREADMEです。インストール済みバージョンに関する情報は、ステップ2の使い捨てテストからのみ取得し、app.asar、エンタイトルメント、ヒューズ、Electron内部を読み取ることは決してしません。カスタムランチャーアイコンは、ユーザーが要求した場合のみ作成します。
手順
S はこのスキルのディレクトリにある scripts/claude-profiles.sh です。bash $S で使い方が表示されます。AppleScriptソースは CLAUDE_LAUNCHER_SOURCES(デフォルト: ~/Documents/claude-multi-account/launcher-sources)に格納されます。ユーザーが別の場所を選択した場合は、ステップ5のREADMEフォルダを指定してください。/Applications に書き込み不可の場合は、CLAUDE_LAUNCHER_DIR=$HOME/Applications を設定してください。verify-mechanism は /tmp/claude-profile-test-<pid> を作成および削除します。
- 入力。 プライマリアカウントは現在サインインしているアカウントです。このアカウントはデフォルトプロファイルを保持し、
Claude (<ラベル>).appを取得します。他のアカウントはそれぞれフォルダClaude-<ラベル>と独自のClaude (<ラベル>).appを取得します。ラベルとメールアドレスが指定されていない場合は、ユーザーに確認してください。どのアカウントがサインインしているかを確認するには、デフォルトプロファイルのconfig.json内のlastKnownAccountUuidと~/.claude.json内のoauthAccountを比較します。それらが異なる場合は、アプリに表示されているメールアドレスをユーザーに確認してください。どのプロファイルフォルダ名も、他のフォルダ名のプレフィックスであってはなりません。buildは、既存のフォルダおよび他のランチャーソースによって命名されたフォルダとの競合を拒否します。Application Support の下でClaudeで始まるがCookiesファイルを含まないフォルダ(例:Claude-3p)はプロファイルではありません。そのままにしておいてください。 - プリフライトとメカニズム。
bash $S preflightを実行します。ウィンドウが表示されることをユーザーに警告し、その後bash $S verify-mechanismを実行します。FAIL の場合は停止してユーザーに伝えてください。 - ビルドとスモークテスト。 プライマリ:
bash $S build <ラベル> defaultを実行します。他のアカウント: まずbash $S build <ラベル> Claude-<ラベル>、次にbash $S smoke <ラベル> Claude-<ラベル>を実行します。プライマリランチャーは決してスモークテストしないでください。そのフォーカスパスは、ユーザーが予期しないタイミングでAutomationプロンプトをトリガーします。以前の実行からのランチャーまたはREADMEが存在する場合は、READMEフォルダをバックアップし、その場で再ビルドします(buildは上書きします)。このセッションで作成していないランチャーは決して削除しないでください。 - 移行チェック。 claude.ai側のもの(会話、プロジェクト、コネクタ)はログインに従います。デスクトップ側のものは従いません。MCPサーバーは
<プロファイル>/claude_desktop_config.jsonにあります。エントリを選択的にコピーしてください。すべてをコピーすると、すべてのローカルサーバープロセスが2倍になります。スケジュールされたタスクは<プロファイル>/local-agent-mode-sessions/<uuid>/<uuid>/scheduled-tasks.jsonと<プロファイル>/claude-code-sessions/...にあり、サインインしているアカウントが実行中のインスタンス内にある間のみ実行されます。移行はターゲットインスタンスを終了した状態で行います。フィールドを正確にコピーし、notifySessionIdを削除し、lastRunAtを保持し、古いコピーでenabled: falseを設定して保持します。同じファイルのpreferencesブロック(Cowork設定、バイパス許可ゲート、許可されたオリジン、フォルダ許可、Chrome拡張機能のペアリング)はデフォルトプロファイルに残ります。READMEに、ユーザーが再度設定する必要があるかもしれないものをリストし、Chrome拡張機能とペアリングするインスタンスは1つだけにする必要があることを記載します。~/.claudeはすべてのインスタンスで共有されるため、グローバルなCLAUDE.mdはすべてのインスタンスに適用されます。 - README。
references/readme-template.mdを、ユーザーが指定したフォルダ(デフォルト:~/Documents/claude-multi-account)にコピーします。 - 引き渡し 以下のテキストを使用して行い、その後停止します。ユーザーがサインインを報告するたびに、
bash $S psを実行して何も出力されないことを確認します。出力された場合は、自分でインスタンスを終了し(killをPIDに対して実行、SIGTERMはこのアプリのクリーンな終了方法です)、その後にのみユーザーに1つのランチャーをクリックするように指示します。実行中のすべてのウィンドウは同じように見えるため、「サインインしている方を終了する」という手順をユーザーが間違えがちです。 - ユーザーからの報告があった場合:
bash $S psで、すべてのインスタンスが異なるプロファイルと異なるaccount=UUIDで表示されることを確認します。
引き渡し用テキスト
常に1つのインスタンスだけを開いた状態で:
- ランチャーをアプリケーションフォルダからDockにドラッグし、通常のClaudeタイルを削除します。複数のインスタンスが実行されると、そのタイルはすべてのインスタンスに対して点灯し、macOSが選択した方にフォーカスします。
- すべてのClaudeウィンドウを終了します。各ウィンドウでCmd+Qを押して、すべてがなくなるまで続けてください。すべてのウィンドウは同じように見えるため、1つを残そうとしないでください。サインインは、正確に1つのインスタンスが実行されている場合にのみ完了します。
Claude (<ラベル2>)をクリックし、そのアカウントでサインインし、同じ方法で終了します。他のアカウントについても、常に他に何も実行していない状態で繰り返します。Claude (<ラベル1>)をクリックします。プライマリアカウントはまだサインインしています。- 以降は任意の組み合わせで開くことができます。1つのインスタンスのみを終了するには、最初にそのウィンドウをクリックし、次にCmd+Qを押します。
ランチャーが実行中のインスタンスに初めてフォーカスするとき、macOSはシステムイベントの制御を許可するかどうかを尋ねます。「許可」をクリックしてください。拒否すると自動フォーカスが無効になるだけです。実行中のタイルは1つのアイコンを共有し、Dockの再起動後に統合される場合があります。どちらも無害です。
注意点
| 症状 | 対処方法 |
|---|---|
| 2つのインスタンスが同じDockアイコンを表示する、または1つのタイルに統合される | 見た目の問題です。ランチャーはプロセスでインスタンスを見つけます。タイルではありません。 |
| Quick Entryホットキーが1つのインスタンスでのみ機能する | 両方のインスタンスがホットキーを登録します。一方のインスタンスの設定で変更または無効にしてください。 |
| 1つのインスタンスに「再起動して更新」と表示される | すべてのインスタンスを終了し、ランチャーから再起動します。1つのアプリバンドル、1つの更新パスです。 |
| 2番目のプロファイルでCoworkを使用する | 独自のVMバンドル(プロファイルあたり約10 GB)をダウンロードします。 |
kill $pids が「illegal pid: 1\n2」で失敗する | zshは単語分割を行いません。xargs kill にパイプしてください。スクリプトは既にこれを行っています。 |
| インスタンスがまだ実行中にテストフォルダが削除された | 最初にプロセスを強制終了し、終了を確認してから削除してください。スクリプトは既にこれを行っています。 |
| GoogleまたはSSOログインでブラウザが開き、「Claudeアプリでサインインを完了」で終了し、「Claudeを開く」が機能しない。新しいインスタンスはログイン画面のまま | 別のインスタンスが実行中で、コールバックを受け取りました。すべてのインスタンスを終了し(ps で確認)、そのランチャーのみを開き、再度サインインしてください。すべてのインスタンスは ~/Library/Logs/Claude/main.log を共有します。[Auth] と sign-in code をgrepして、どのインスタンスがそれを受け取ったかを確認します。試行間でPIDが変更されていない場合は、ユーザーが決して終了していないことを意味します。 |
| セットアップ中にAutomationプロンプトが表示された | 誰かが、そのインスタンスが既に実行中であるランチャーを開きました。「許可」をクリックしてください。問題はありません。 |
レッドフラグ
- 「このアプリにはシングルインスタンスロックがあるので、フォーカス失敗時に再起動しても安全です。」 そのようなロックはありません。ステップ2のみが、このバージョンに関する唯一の情報源です。
- 「サインインはアプリ内で行われるため、両方のインスタンスを開いたままにできます。」 サインイン中は常に1つのインスタンスにしてください。
- 「プランB: アプリを複製して再署名する。」 禁止されています。代わりに停止して報告してください。
- 「まず
app.asar/ エンタイトルメント / ヒューズを調べさせてください。」 範囲外です。 - 「ついでにアイコンにバッジを付けます。」 要求された場合のみ。
- 「プライマリランチャーもテストします。」 そのフォーカスパスはユーザーにプロンプトを表示します。パイプラインチェックのみ行ってください。
復元
非プライマリインスタンスを1つリセットするには: それを終了し、プロファイルフォルダを削除し、そのランチャーをクリックし、再度サインインします。すべてを元に戻すには: ランチャーと追加のプロファイルフォルダを削除します。実際のアプリとデフォルトプロファイルは一切関与しません。ランチャーをそのソースから再構築するには、osacompile -o "/Applications/Claude (<ラベル>).app" <ソース>.applescript を実行します。