セキュリティと可視性
エージェントにストレージエンジンへの直接アクセスを与えるということは、「致命的な三点セット(lethal trifecta)」を組み上げることを意味します — プライベートなデータ × 信頼できないノートの内容 × 外向きのチャネル。どの軸も単独なら無害ですが、3つが揃うと、ノートに仕込まれたインジェクションがあなたのデータを外へ持ち出せてしまいます。Notarium の MCPゲートウェイは、このすべての軸を設定ではなく構造そのもので断ち切ります。これは利便性のためのラッパーではなく、信頼の境界です。
構造で断ち切られた三点セット
- 外向きのチャネルがない。 すべてのツールに
openWorldHint:falseが付いており、ネットワークに出るツールは1つもありません。スペース間の移動やコピーも存在しないため、内部でのデータ漏洩の経路も塞がれています。データの持ち出し先がそもそもないのです。 - 信頼できない内容を無害化。 サーバーの指示は静的で、ノートの内容と決して混ざりません — ノートの中身がツールの説明やサーバーの
instructionsに織り込まれることはありません。こうして、ノート本文へのインジェクションがエージェントへの命令になることはありません。 - 破壊的な操作は常に取り消せる。
delete_noteはノートをゴミ箱へ送るだけです。復元も完全な消去も、エージェントではなく人間が行います。これが「エージェントは取り返しのつかないことをしない」という一線です。
呼び出しのたびに権限を検査
権限は二重に検査されます。まず tools/list がトークンの権限上限でフィルタされ — read トークンには書き込み系ツールがそもそも見えません。次にすべての tools/call が、対象となる特定のスペースへのアクセスを追加で検査します(can(principal, action, {space}))。権限の式は effective = scopes(token) ∩ grants(principal) — トークンのスコープ(許された操作の上限)と、スペースへの生きたメンバーシップの積です。付与を取り消せば、トークンは即座に狭まります。
管理操作(トークンの発行、メンバーの管理)は write よりも上に位置します — 漏れた write レベルのトークンでは、新しいトークンの発行もアクセスの付与もできません。
拒否 = 404、403 ではない
アクセスの拒否は 403(「許可されていない」)ではなく 404(「そんなものはない」)として返されます。こうすることで、応答コードを手がかりに、付与された権限の外にあるノートやスペースの存在を総当たりで割り出すことはできません。他人のスペースはそもそも到達不能で、存在しないものと見分けがつきません。
flowchart TD
call[tools/call] --> listed{ツールはトークンの<br/>権限上限の内か?}
listed -->|いいえ| gone[tools/list にツールが現れない]
listed -->|はい| acl{can principal,<br/>action, space?}
acl -->|いいえ| notfound[404 · 列挙対策]
acl -->|はい| exec[実行 · 来歴をログへ]
信頼できない内容の無害化
エージェントへ渡るものはすべて — タイトル、スニペット、本文、フロントマター — 送信前にサニタイズされます。疑似コントロールタグ(<system>、<instructions> など)の山括弧は無害化されます。誰かが「システム指示」を書き込んだノートも、エージェントには命令ではなくただのテキストとして届きます。
編集履歴は見える
すべての編集は、それを行った主体 — 特定の人物かエージェントか — を編集履歴に記録します。get_note と recall は、そのノートを誰が編集したか — 人間かエージェントか、そしてどれか — を返せます。エージェントを経由したインジェクションも、可視のまま追跡可能な状態で残ります。
プロンプトによって完全に乗っ取られたエージェントでさえ、そのトークンによって縛られています — ネットワークには出られず、他人のスペースには手が届かず、取り返しのつかない削除もできず、自分に権限を付与することもできません。できる最悪のことは、自分の権限の範囲内での取り消し可能な編集にとどまり、完全な来歴がログに残ります。
境界線 — E2EE ではない
Notarium は意図的にエンドツーエンド暗号化を行いません。賢いサーバー — 検索、セマンティクス、履歴、エージェント — は平文へのアクセスを必要とします。ここでのプライバシーは、E2EE ではなく、セルフホストと自分のファイルを所有することの上に築かれます。ゲートウェイの脅威モデルが守るのは、乗っ取られたエージェントからであって、乗っ取られたホストからではありません — あなたはそのホストに、もともと自分のファイルを預けて信頼しているのですから。
次へ
- エージェントを接続する — トークン、権限、そして OAuth ファサード。
- 検索監査 — エージェントが何を検索したかの可観測性。
- インテントツール — なぜツールセットがちょうどこの形なのか。