メインコンテンツまでスキップ

AI接続の登録情報(開発中)

概要​

現在開発中で、保存知識の参照を先行提供しています。 Portal 0.36.1の マイホーム → MCP接続 → 接続と許可 で、端末と保存知識への参照許可を確認・解除できます。本番の接続先はhttps://portal.mymem.net/mcpです。法令・作業記録・チケットのRemote参照や更新はローカル開発版の検証範囲です。対応する開発版PRO/Go補助アプリが必要で、通常配布PRO 0.35.20の新しい登録UIはまだ未配布です。

Portalの主な役割はMCPの接続設定と許可の管理です。必要なときは「確認用の画面 → 作業一覧」から端末内のTask Journalも開けます。画面の役割と操作はAI Workspaceを確認してください。AIの自動実行は未実装です。

利用条件と操作​

保存知識の先行提供には本人のPortalアカウント・MCP対応プランと、対応する開発版Go補助アプリのプロファイルが必要です。その他のローカル試験には専用Portalと開発用コンパニオンを使います。通常のPortalの端末利用数の登録とは別の開発用登録であり、製品の契約・プランを変更しません。

  1. 端末側で接続登録を開始し、表示された確認リンクを同じ端末のブラウザで開きます。
  2. Portalにログインし、端末名・対象Project・プロファイルを確認して「この端末を登録」を押します。登録の確認リンクは5分で期限切れになります。
  3. AI側から接続を開始すると、Portalで参照先の端末を選ぶ画面が開きます。「法令の参照を許可」で、選んだ端末の保存済み法令の検索・取得を許可します。
  4. 接続を止めるときは、「接続と許可」で「AIの許可を解除」または「端末を解除」を押します。端末を解除すると、その端末に対するすべてのAIの許可が無効になります。

法令の参照、作業記録の参照・更新、保存知識の参照、Backlog・GitHubチケットの参照を別々に許可します。端末側が公開していない範囲は許可できません。正本は端末に残り、参照する間は必要な本文が中継を通ってブラウザや許可済みAIへ送られます。実Codexのバックエンドでは、架空データで認証・参照・Task記録を確認しました。モデルによる自動調査や実Claudeとの相互接続は未確認です。PortalへのGoogle/ChatGPTログインと、外部AIへのデータ参照の許可は別の操作です。

保存する情報と関係​

本番では既存のアカウント/Roomと別の3つのSQLite保存領域を追加し、以下のschemaVersion 1を使用します。保存するJSON項目とOS登録schema 1を変更せず、通常DuckDB・ZIP・既存の参照用SQLも変更しません。契約を登録・認証・参照前後に確認し、失効後も登録の解除は可能です。本文は要求中だけ中継し、原本は端末に残します。

制御用のDurable Objectは、本番/STGまたはローカルPortalの環境別に作られる保存領域です。相互に登録や許可を移しません。ChromeのDuckDBとは別です。アカウント別のstateはschemaVersion: 1のJSONで、端末IDと許可IDをキーに関連付けます。

保存物・項目型・内容参照する画面・関係
アカウント別の保存先PortalのアカウントUUIDで分離自分の接続一覧だけを表示する。ローカルJournalのuser_idとは別の識別子
devices端末IDをキーにしたオブジェクト。id、profileId、name、projectIdは文字列「接続した端末」。Nativeのプロファイルを明示的に対応付ける
端末のcredentialHash資格情報のSHA-256文字列端末の認証に使用。画面・一覧応答には表示しない
端末のscopes、revision、revoked参照範囲の文字列配列、改訂整数、失効の真偽値範囲はlaw:read、journal:read、journal:write、knowledge:read、tickets:read。更新には参照も必須。解除時に改訂を進める
grants許可IDをキーにしたオブジェクト。clientId、deviceId、profileId、projectIdは文字列、deviceRevisionは整数「AIへの参照許可」。端末の改訂と一致する有効な許可だけを使う
許可のscopes、revoked参照範囲の配列、失効の真偽値実際に同意した範囲だけを保存する。接続アプリの要求全体や登録上限とは別。別端末や解除済みの許可で参照できないようにする
createdAt、expiresAtUTCのUnix時刻、ミリ秒の数値登録期限・許可期限。画面では日時として表示
codes認可コードのハッシュをキーに、許可ID・クライアントID・戻り先・resource・PKCE challenge・期限・使用済み状態を保存AIへの許可後の1回限りの接続。生コードを保存しない
tokensトークンのハッシュをキーに、許可ID・クライアントID・resource・kind・期限を保存kindはaccess/refresh/used-refresh。生トークンを保存しない
5分限りの確認レコード登録/認可の区分、確認対象、期限、PKCE challenge、アカウントとセッション/CSRFのハッシュ、承認・消費状態登録・参照許可の確認画面。セッションの生Cookieは保存しない。認可には任意のdeviceIdも保存し、選択済み端末を固定できる。期限に削除

端末登録は最長30日、AIへの許可は最長8時間、アクセストークンは最長10分、認可コードは60秒です。使用済みコードや更新用トークンの再使用を検出すると、その許可を失効します。解除後は実行中の要求を止め、応答を返す前にも現行の許可を確認します。

端末の「接続中」「オフライン(登録済み)」は、ページを開いた時点の中継接続の状態です。接続状態をDBへ固定して保存する項目ではありません。端末を停止・再接続した後は、ページを開き直して確認します。

この制御用DBにはタスク本文、Memory、会話、法令の本文、外部サービスのAPIキーを保存しません。Portalの作業一覧と保存知識は専用クライアントmymem-portalとして明示的に許可を得ます。ブラウザ内のOAuthコード検証情報・トークンは画面のメモリだけで扱い、localStorage/sessionStorageには保存しません。Relayの処理中の要求・結果・カーソルは永続化せず、切断・再起動した処理を自動再送しません。

「MCP接続」の接続確認は、別の組み込みクライアントmymem-portal-checkとして、同じ形式の許可・コード・トークンのハッシュを保存します。戻り先は固定のPortal画面です。参照scopeだけを許可し、サーバー側でinitializeとtools/list以外を拒否します。本文の取得・記録の更新はできません。完了時に許可を解除し、解除済みのメタデータは一覧に残ります。実際のAIに対する接続許可とは別です。

希望範囲のチェック、依頼例、確認結果は画面のメモリ内だけで扱います。これらの保存列・JSON項目・バックアップ形式は追加しません。既存の制御JSON schemaVersion 1、Journal schema 1、参照用SQLに変更はありません。

旧ローカル形式との互換性: schemaVersion 1を維持し、既存の法令参照の許可を作業記録へ拡張しません。作業記録と保存知識には、新しい範囲での端末登録と同意が必要です。端末コンパニオンの登録結果には任意のscopes配列が加わります。scopesがない旧登録は法令参照の範囲を維持し、Journalや保存知識を自動公開しません。

接続アプリの自動登録で保存する情報​

Go補助アプリの登録と保存については、後述のGo補助アプリのPortal登録も参照してください。

同じPC上のMCPクライアントは、/oauth/registerで接続アプリを登録できます。登録しただけではデータを読めません。Portalでの本人ログインと、端末・Project・scopeへの明示的な同意が必要です。クライアントの名前は自己申告として表示します。

複数の範囲を要求した接続アプリには、同意画面で選んだ範囲だけを許可できます。登録のscopesは要求できる上限、認可要求のscopesは今回の要求、許可のscopesは利用者が実際に選んだ範囲です。更新用tokenで接続を継続しても、この範囲を広げません。保存項目・型・schemaVersionは変わりません。

知識の一時公開情報は、従来どおりChromeのセッション領域に保存します。DBを読む非表示ページは保存領域を直接読まず、進行中の要求ID・接続世代・Project・公開許可の改訂・期限をバックグラウンドに照合します。取得の前後で確認し、取消しや古い接続の結果を返しません。この照合はメモリ上だけで行い、新しいSQLテーブル・バックアップ項目は増やしません。

既存のAGENT_AUTHと同じ仕組みの、oauth-clients:<Portalのorigin>という別の名前付き保存領域へ、client-registryキーで次のJSONを保存します。アカウント別のstateとは別のレコードです。schemaVersion: 1と、接続アプリIDをキーにしたclientsオブジェクトを持ちます。

clients内の項目型・内容参照する画面・関係
id文字列。サーバーが作るmcp-local-始まりのIDgrant/code/tokenのclientIdと結び付く。秘密の認証情報ではない
name文字列。接続アプリの自己申告名同意画面と「接続と許可」に表示。提供元の認証を示さない
redirectUris文字列配列同じPCのHTTP・127.0.0.1/[::1]に限定。認可時はhost/pathを一致させ、ポート差だけを許容する
registrationdynamicの文字列自己申告の接続アプリとして表示する区分
scopes文字列配列アプリが要求できる範囲の上限。登録だけでは利用者の許可は得られない
grantTypes文字列配列。authorization_codeと、任意のrefresh_token認可コードと更新用tokenを使う接続方式
createdAt・expiresAtUTCのUnixミリ秒数値登録から30日。期限切れはアクセス時と定期処理で整理。grantの期限も登録期限を超えない

保存領域全体は64件・96KiBを上限とし、上限では登録を拒否して既存の有効な登録を残します。client secret、登録管理用token、APIキーは作成・保存しません。任意URLのメタデータ・ロゴを取得せず、受理した補助的なアプリ情報は保存しません。MCPへの接続結果や本文もこのレコードには含めません。登録の更新・削除用APIは未実装です。

VS Codeが同じPCの戻り先とWeb版の候補を一緒に送る場合も、保存・登録応答には対応するHTTP loopbackの戻り先だけを含めます。既知のhttps://vscode.dev/redirect・https://insiders.vscode.dev/redirectは候補から外し、そこへ認可コードを返しません。Web候補だけの登録、任意ドメイン、localhostへの別名置換も拒否します。これはWeb版への接続対応ではありません。

通常ZIPとJournal JSONには含まれません。既存アカウント別state・Journal・DuckDBの項目は変更せず、旧登録・旧バックアップもそのままです。登録を追加しても既存のscopeを広げません。通常のSQLテーブルや結合先は増えないため、既存バックアップの参照用SQLに変更はありません。

架空の登録レコードをSQLで確認する​

次は開発試験で保存領域から読み出した単一clientの架空JSONを使う例です。利用者向けの登録情報export機能ではありません。通常ZIPにこのファイルが入るわけではなく、認証情報・生tokenを抽出する手順でもありません。

SELECT id, name, registration, scopes, grantTypes,
epoch_ms(createdAt) AS created_at,
epoch_ms(expiresAt) AS expires_at,
unnest(redirectUris) AS callback
FROM read_json_auto('synthetic-client-registration.json');

Go補助アプリのPortal登録​

対応するローカル開発版では、MyMemの「UI設定 → MCP → 保存知識の外部参照 → 公開中のProjectをPortalに登録」から端末を登録できます。新しい登録は保存知識の参照だけを公開します。

端末用の生の資格情報は、macOSのKeychainまたはWindowsの資格情報保管へ、Chromeプロファイルごとに1件保管します。既存の外部MCP資格情報と同じ保管サービス内で、Portal専用の参照先を使います。保存するJSONは次の形式で、DBテーブルや利用者向けexportではありません。

保存項目型・用途画面・他のデータとの関係
schemaVersion整数1。この登録の形式外部MCP資格情報やJournalの版とは別
originPortalの固定接続先の文字列認証先・中継先を固定。現在のUIは同じPCのローカルPortalを使用
account_id・device_idPortalアカウントUUID・端末UUIDの文字列Portalの登録端末とAIへの許可に対応
profile_id・project_idChromeプロファイルID・既存Project IDの文字列このプロファイルの、このProjectだけを参照
device_token端末の生の資格情報の文字列Go補助アプリだけが使用。Chrome・表示用応答・ログには返さない
scopes文字列配列。現在はknowledge:readのみ法令・チケット・Journalの権限を増やさない
expires_atUTCのUnixミリ秒数値端末登録の有効期限
paused停止状態の真偽値「接続を停止」の後、補助アプリを再起動しても自動再開しない

Chromeへ返すのは接続状態・接続先・対象Project・端末ID・期限と、登録中だけの確認リンクです。登録時の検証用の秘密値と端末の生の資格情報は返しません。OS保管に保存できなければ登録を完了した扱いにしません。

「この端末の登録を解除」は端末用資格情報でPortalの当該端末と関連するAIの許可を失効させてから、OSの登録を削除します。Portalへ到達できない場合は停止状態の資格情報を保持し、接続復旧後に再試行できます。旧来の法令stdio設定や他のChromeプロファイルの登録は変更しません。

OS保管とChromeの一時公開は独立しています。再接続しても公開範囲を広げません。OS保管レコードは通常ZIP・Journal JSON・DuckDBには収録せず、ChromeやPortalの制御DBにも複製しません。旧版にこの登録がなくても既存機能はそのままです。既存の制御JSON・Journal schema 1・DuckDB・通常ZIP formatVersion 6と参照用SQLは変更しません。

保存知識を一時公開する端末内の設定​

MyMemのMCP設定では、Chrome拡張のchrome.storage.sessionにmymem_mcp_knowledge_session_v1を保存します。通常のWebページのsessionStorageとは別の領域です。値はprojectId(文字列)、enabled(真偽値)、expiresAt(UTCのUnixミリ秒数値)、revision(許可変更を検出する文字列)からなるオブジェクトで、停止時はnullにします。起動直後は公開しない状態です。

これは「どのProjectを、いつまで参照できるか」の一時設定であり、記憶本文・認証情報は含みません。ブラウザ再起動または最長8時間で失効します。通常ZIP、Journal JSON、Portalの制御DBには収録しません。旧形式にこのキーがなくても公開は始まりません。Portalの端末登録が残っていても、この端末内許可がなければ知識の取得は拒否します。

knowledge:readの検索・本文取得は、従来のmemory、project_source/project_source_content、skillsをProject IDで限定した読み取りです。AI人格の記憶、検索対象外の情報源、無効・非active・全体共通のSkillは除外します。返却するcontent_hashは種類・Project・ID・タイトル・本文・更新日時とSkillの危険度等から計算するSHA-256で、取得時の変更検出用です。DB列として追加保存する値ではありません。 検索結果にあるIDとハッシュを本文取得に渡します。

チケットの参照範囲​

tickets:readは、端末で指定した既存MCP接続と外部Projectの読み取り専用許可です。作業一覧から接続一覧、課題、コメントを参照し、関連付けや根拠をJournalへ保存する際に使います。チケットの作成・コメント投稿・更新は含みません。作業記録の保存には別途journal:writeが必要です。

コンパニオンはallowTicketReadを明示したローカル設定と、許可接続JSONの絶対パスconnectionsPathを使用します。許可接続JSONにはconnection_id/provider/project_id/provider_project等の識別情報を置き、資格情報は従来のNative Hostの管理から取得します。これらの起動設定を通常ZIPやJournalへ自動転記しません。接続allowlistの変更はコンパニオンを再起動して反映します。

旧登録の範囲は広がりません。チケットも使う場合は、新しい範囲を指定して端末を登録し、AIまたはPortalで同意を取り直します。チケット本文は取得中に中継され、明示的に記録した抜粋・関連付けだけがJournalに残ります。ページ継続の一時カーソルはクライアント・許可・チケット・接続に結び付け、永続化しません。

バックアップと旧形式との違い​

対象通常のバックアップZIPJournalの書き出しJSON
Chromeの従来のデータ従来どおり含まれない
ローカルのTask・イベント・操作ID台帳含まれない許可Projectの記録を収録
Portalの端末登録・AIの許可・確認レコード含まれない含まれない
開発用コンパニオンの資格情報ファイル含まれない含まれない

通常ZIPのformatVersion: 6、DuckDBの51テーブル・510列、制約・インデックス・ビュー・復元処理は変更していません。今回のJSONは従来のSQLテーブルへ追加されないため、通常データの参照用SQLの結合先にもなりません。PROのバックアップやJournalを復元しても、AIへの接続許可は復元されません。接続は端末登録からやり直します。旧バックアップにこの登録情報がないことは破損ではありません。

この制御用データの利用者向けエクスポート・インポートは未実装です。解除済みのメタデータは一覧に残り、期限切れのコード・トークンは次回の処理で整理します。ローカル実験にはアカウント別の制御データ全体96KiB、端末20件・許可100件(解除済みを含む)などの上限があり、先に到達した上限で更新全体を拒否します。長期運用向けの整理・削除画面は今後の実装です。

開発用の端末資格情報はコンパニオンが指定先の新規ファイルへ保存します。所有者だけが読める権限のローカル実験用方式で、正式な補助アプリの資格情報保管との統合は未実装です。共有・公開したり、Gitや手作業のJournalへ転記したりしないでください。

関連ページ​

Agent Task Journal · バックアップZIP · MCP・外部ツール連携 · Portal