{"title":"Mind Key vs JWT — どちらを使うべきか","slug":"mind-key-vs-jwt","category":"getting-started","summary":"判断ガイド：エージェントのデータアクセスには Mind Key、アカウント管理には JWT。","audience":["human","llm"],"tags":["auth","mind-key","jwt","decision-guide"],"difficulty":"beginner","updated":"2026-06-27","word_count":450,"read_minutes":2,"llm_context":"Mind Key: tenant-scoped, never expires, for memory/chat/tasks/scripts/computers/webhooks.\nJWT: user-scoped, 7-day expiry, for /register, /login, /minds (CRUD), /sharing, /push.\nSimple rule: if it touches a single mind's data → Mind Key. If it manages the account → JWT.\nException: /computers/me/* uses Computer Token (not Mind Key or JWT).\n","lang":"ja","translated":true,"requested_lang":"ja","content_markdown":"\n# Mind Key vs JWT — どちらを使うべきか\n\nSynapse には 2 つの認証トークンがあります。誤った方を選ぶと 401 エラーになります。本ガイドは明確な判断基準を提供します。\n\n## クイック判断表\n\n| やりたいこと | 使用するもの |\n|----------------|-----|\n| メモリの保存/再取得 | Mind Key |\n| チャットメッセージの送信/ポーリング | Mind Key |\n| タスク管理 | Mind Key |\n| スクリプトの保存 | Mind Key |\n| Webhook の登録 | Mind Key |\n| コンピュータの制御 | Mind Key（ユーザー側）/ Computer Token（エージェント側） |\n| ユーザーアカウントの登録 | なし（パブリック） |\n| ログイン | なし（パブリック） |\n| mind の作成/一覧/削除 | JWT |\n| 他のユーザーとの mind 共有 | JWT |\n| Web Push 通知の購読 | JWT |\n| 監査ログの閲覧 | Mind Key |\n\n## シンプルなルール\n\n> [!TIP]\n> **単一 mind のデータに触れる場合 → Mind Key。**\n> **アカウントや mind メタデータを管理する場合 → JWT。**\n\n## Mind Key — データアクセス権\n\nMind Key は**1 つの mind のデータ**へのアクセスを許可します。期限切れにならない長期間のトークンです（mind が削除されるまで）。以下に最適です。\n\n- セッションをまたいでメモリを永続化する LLM エージェント\n- バックグラウンド cron ジョブ\n- MCP サーバー設定\n- Webhook 連携\n- メモリを読むモバイルアプリ\n\n### Mind Key でできること\n\n- `GET /memory/recall` — この mind の全メモリを読む\n- `POST /memory` — メモリの保存/更新\n- `GET /chat/poll` — チャットメッセージの読み取り\n- `POST /chat/reply` — チャットメッセージの送信\n- `GET /mind/tasks` — タスクの一覧\n- `POST /mind/task` — タスクの作成\n- `POST /script` — スクリプトの保存\n- `POST /webhooks` — Webhook の登録\n- `POST /computers/:id/commands` — コンピュータコマンドのキューイング\n\n### Mind Key でできないこと\n\n- mind の作成/一覧/削除（JWT が必要）\n- 他のユーザーとの mind 共有（JWT が必要）\n- ユーザーアカウント情報の閲覧（JWT が必要）\n- Web Push の購読（JWT が必要）\n\n## JWT — アカウント管理トークン\n\nJWT は**ユーザーアカウント**を認証します。7 日後に期限切れとなり、複数の mind にまたがる、または他のユーザーを含むアカウントレベルの操作に使用されます。\n\n### JWT でできること\n\n- `POST /minds` — 新しい mind の作成（新しい Mind Key を返す）\n- `GET /minds` — このユーザーの全 mind の一覧\n- `DELETE /minds/:id` — mind の削除\n- `POST /sharing` — 他のユーザーとの mind 共有\n- `POST /push/subscribe` — Web Push 通知の購読\n- `GET /sharing` — mind 共有の一覧\n\n### JWT でできないこと\n\n- メモリの読み書き（Mind Key が必要）\n- チャットメッセージの送信（Mind Key が必要）\n- タスク管理（Mind Key が必要）\n- Webhook の登録（Mind Key が必要）\n\n## 特殊ケース：Computer Token\n\n`/computers/me/*` エンドポイント（エージェント向け、screen-remote-agent 用）は第 3 のトークン種別である **Computer Token** を使用します。このトークンはインストールコードを引き換える際に `POST /computers/register` が返し、1 つの登録済みコンピュータに固有です。\n\n| エンドポイント | 認証 |\n|----------|------|\n| `GET /computers/me/poll` | Computer Token |\n| `POST /computers/me/commands/:cid/result` | Computer Token |\n| `GET /computers/list` | Mind Key または JWT |\n| `POST /computers/:id/commands` | Mind Key または JWT |\n\n## よくあるパターン\n\n### パターン 1：単一 LLM エージェント\n\n1. 一度登録 → JWT を取得\n2. 1 つの mind を作成 → Mind Key を取得\n3. LLM はすべてに Mind Key を使用\n\n### パターン 2：マルチプロジェクトエージェント\n\n1. 一度登録 → JWT を取得\n2. 複数の mind を作成（work、personal、project-x）→ 複数の Mind Key を取得\n3. LLM はコンテキストに応じて異なる Mind Key を読み込み\n\n### パターン 3：チーム共有\n\n1. ユーザー A が mind を作成 → Mind Key A を取得\n2. ユーザー A が JWT でユーザー B と共有（`POST /sharing`）\n3. ユーザー B は自身の JWT でアクセス可能\n4. LLM アクセスには、ユーザー B は自身の Mind Key を作成する必要がある（または A のものを使用）\n\n### パターン 4：MCP サーバー\n\nMCP サーバーは常に Mind Key を使用します（`SYNAPSE_MIND_KEY` 環境変数で設定）。1 つの MCP サーバーインスタンス = 1 つの mind。マルチ mind アクセスには、複数の MCP インスタンスを動かすか、クライアント側で mind 切り替えを実装してください。\n\n## トークン形式のチートシート\n\n| トークン | 形式 | 例 |\n|-------|--------|---------|\n| Mind Key | `mk_` + 36 文字 | `mk_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789` |\n| JWT | `eyJ` + base64 | `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...` |\n| Computer Token | `ct_` + 36 文字 | `ct_xYzAbCdEfGhIjKlMnOpQrStUvWxYz0123456789` |\n\n## 次のステップ\n\n- [Authentication](/docs/getting-started/authentication) — 完全な認証ガイド\n- [User & Minds API](/docs/api/user) — JWT で保護されたエンドポイント\n- [Memory API](/docs/api/memory) — Mind Key で保護されたエンドポイント\n","content_html":"<h1>Mind Key vs JWT — どちらを使うべきか</h1>\n<p>Synapse には 2 つの認証トークンがあります。誤った方を選ぶと 401 エラーになります。本ガイドは明確な判断基準を提供します。</p>\n<h2>クイック判断表</h2>\n<table>\n<thead>\n<tr>\n<th>やりたいこと</th>\n<th>使用するもの</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>メモリの保存/再取得</td>\n<td>Mind Key</td>\n</tr>\n<tr>\n<td>チャットメッセージの送信/ポーリング</td>\n<td>Mind Key</td>\n</tr>\n<tr>\n<td>タスク管理</td>\n<td>Mind Key</td>\n</tr>\n<tr>\n<td>スクリプトの保存</td>\n<td>Mind Key</td>\n</tr>\n<tr>\n<td>Webhook の登録</td>\n<td>Mind Key</td>\n</tr>\n<tr>\n<td>コンピュータの制御</td>\n<td>Mind Key（ユーザー側）/ Computer Token（エージェント側）</td>\n</tr>\n<tr>\n<td>ユーザーアカウントの登録</td>\n<td>なし（パブリック）</td>\n</tr>\n<tr>\n<td>ログイン</td>\n<td>なし（パブリック）</td>\n</tr>\n<tr>\n<td>mind の作成/一覧/削除</td>\n<td>JWT</td>\n</tr>\n<tr>\n<td>他のユーザーとの mind 共有</td>\n<td>JWT</td>\n</tr>\n<tr>\n<td>Web Push 通知の購読</td>\n<td>JWT</td>\n</tr>\n<tr>\n<td>監査ログの閲覧</td>\n<td>Mind Key</td>\n</tr>\n</tbody></table>\n<h2>シンプルなルール</h2>\n<div class=\"callout callout-ok\">**単一 mind のデータに触れる場合 → Mind Key。**\n**アカウントや mind メタデータを管理する場合 → JWT。**</div><h2>Mind Key — データアクセス権</h2>\n<p>Mind Key は<strong>1 つの mind のデータ</strong>へのアクセスを許可します。期限切れにならない長期間のトークンです（mind が削除されるまで）。以下に最適です。</p>\n<ul>\n<li>セッションをまたいでメモリを永続化する LLM エージェント</li>\n<li>バックグラウンド cron ジョブ</li>\n<li>MCP サーバー設定</li>\n<li>Webhook 連携</li>\n<li>メモリを読むモバイルアプリ</li>\n</ul>\n<h3>Mind Key でできること</h3>\n<ul>\n<li><code>GET /memory/recall</code> — この mind の全メモリを読む</li>\n<li><code>POST /memory</code> — メモリの保存/更新</li>\n<li><code>GET /chat/poll</code> — チャットメッセージの読み取り</li>\n<li><code>POST /chat/reply</code> — チャットメッセージの送信</li>\n<li><code>GET /mind/tasks</code> — タスクの一覧</li>\n<li><code>POST /mind/task</code> — タスクの作成</li>\n<li><code>POST /script</code> — スクリプトの保存</li>\n<li><code>POST /webhooks</code> — Webhook の登録</li>\n<li><code>POST /computers/:id/commands</code> — コンピュータコマンドのキューイング</li>\n</ul>\n<h3>Mind Key でできないこと</h3>\n<ul>\n<li>mind の作成/一覧/削除（JWT が必要）</li>\n<li>他のユーザーとの mind 共有（JWT が必要）</li>\n<li>ユーザーアカウント情報の閲覧（JWT が必要）</li>\n<li>Web Push の購読（JWT が必要）</li>\n</ul>\n<h2>JWT — アカウント管理トークン</h2>\n<p>JWT は<strong>ユーザーアカウント</strong>を認証します。7 日後に期限切れとなり、複数の mind にまたがる、または他のユーザーを含むアカウントレベルの操作に使用されます。</p>\n<h3>JWT でできること</h3>\n<ul>\n<li><code>POST /minds</code> — 新しい mind の作成（新しい Mind Key を返す）</li>\n<li><code>GET /minds</code> — このユーザーの全 mind の一覧</li>\n<li><code>DELETE /minds/:id</code> — mind の削除</li>\n<li><code>POST /sharing</code> — 他のユーザーとの mind 共有</li>\n<li><code>POST /push/subscribe</code> — Web Push 通知の購読</li>\n<li><code>GET /sharing</code> — mind 共有の一覧</li>\n</ul>\n<h3>JWT でできないこと</h3>\n<ul>\n<li>メモリの読み書き（Mind Key が必要）</li>\n<li>チャットメッセージの送信（Mind Key が必要）</li>\n<li>タスク管理（Mind Key が必要）</li>\n<li>Webhook の登録（Mind Key が必要）</li>\n</ul>\n<h2>特殊ケース：Computer Token</h2>\n<p><code>/computers/me/*</code> エンドポイント（エージェント向け、screen-remote-agent 用）は第 3 のトークン種別である <strong>Computer Token</strong> を使用します。このトークンはインストールコードを引き換える際に <code>POST /computers/register</code> が返し、1 つの登録済みコンピュータに固有です。</p>\n<table>\n<thead>\n<tr>\n<th>エンドポイント</th>\n<th>認証</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /computers/me/poll</code></td>\n<td>Computer Token</td>\n</tr>\n<tr>\n<td><code>POST /computers/me/commands/:cid/result</code></td>\n<td>Computer Token</td>\n</tr>\n<tr>\n<td><code>GET /computers/list</code></td>\n<td>Mind Key または JWT</td>\n</tr>\n<tr>\n<td><code>POST /computers/:id/commands</code></td>\n<td>Mind Key または JWT</td>\n</tr>\n</tbody></table>\n<h2>よくあるパターン</h2>\n<h3>パターン 1：単一 LLM エージェント</h3>\n<ol>\n<li>一度登録 → JWT を取得</li>\n<li>1 つの mind を作成 → Mind Key を取得</li>\n<li>LLM はすべてに Mind Key を使用</li>\n</ol>\n<h3>パターン 2：マルチプロジェクトエージェント</h3>\n<ol>\n<li>一度登録 → JWT を取得</li>\n<li>複数の mind を作成（work、personal、project-x）→ 複数の Mind Key を取得</li>\n<li>LLM はコンテキストに応じて異なる Mind Key を読み込み</li>\n</ol>\n<h3>パターン 3：チーム共有</h3>\n<ol>\n<li>ユーザー A が mind を作成 → Mind Key A を取得</li>\n<li>ユーザー A が JWT でユーザー B と共有（<code>POST /sharing</code>）</li>\n<li>ユーザー B は自身の JWT でアクセス可能</li>\n<li>LLM アクセスには、ユーザー B は自身の Mind Key を作成する必要がある（または A のものを使用）</li>\n</ol>\n<h3>パターン 4：MCP サーバー</h3>\n<p>MCP サーバーは常に Mind Key を使用します（<code>SYNAPSE_MIND_KEY</code> 環境変数で設定）。1 つの MCP サーバーインスタンス = 1 つの mind。マルチ mind アクセスには、複数の MCP インスタンスを動かすか、クライアント側で mind 切り替えを実装してください。</p>\n<h2>トークン形式のチートシート</h2>\n<table>\n<thead>\n<tr>\n<th>トークン</th>\n<th>形式</th>\n<th>例</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key</td>\n<td><code>mk_</code> + 36 文字</td>\n<td><code>mk_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789</code></td>\n</tr>\n<tr>\n<td>JWT</td>\n<td><code>eyJ</code> + base64</td>\n<td><code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...</code></td>\n</tr>\n<tr>\n<td>Computer Token</td>\n<td><code>ct_</code> + 36 文字</td>\n<td><code>ct_xYzAbCdEfGhIjKlMnOpQrStUvWxYz0123456789</code></td>\n</tr>\n</tbody></table>\n<h2>次のステップ</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">Authentication</a> — 完全な認証ガイド</li>\n<li><a href=\"/docs/api/user\">User &amp; Minds API</a> — JWT で保護されたエンドポイント</li>\n<li><a href=\"/docs/api/memory\">Memory API</a> — Mind Key で保護されたエンドポイント</li>\n</ul>\n","urls":{"html":"/docs/getting-started/mind-key-vs-jwt","text":"/docs/getting-started/mind-key-vs-jwt?format=text","json":"/docs/getting-started/mind-key-vs-jwt?format=json","llm":"/docs/getting-started/mind-key-vs-jwt?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}