Deedglass について
DeedglassはAIエージェントと操作対象システムの間に入り、ポリシーでツール呼び出しを制御し、申告と実際の変更を照合します。書き込みを伴うエージェント運用向けに、署名付きの検証可能な記録とPostgresの行変更の取り消しを提供します。
主な機能
- 01ポリシーによる許可・拒否・承認要求
- 02申告と実際の変更の照合
- 03オフライン検証可能な署名付き記録
- 04変更されたPostgres行の取り消し
- 05接続を変更せずPostgresの変更を監視
活用シーン
- 01エージェントの書き込みを許可操作に限定
- 02Postgresの意図しない副作用を検出
- 03エージェントセッションのDB変更を確認
- 04変更行の取り消しを準備
MCP 対応
`deedglass mcp serve`でポリシー適用済みのMCPサーバーを提供し、`deedglass mcp wrap`でstdioのMCPサーバーをラップできます。MCPクライアントのツール呼び出しにポリシーを適用し、結果を検証します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 今日に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| args | object | いいえ | 関数の名前付き引数です。 |
| function | enum | はい | 許可リストにある関数です。public.ship_order |
詳細
エージェントは1行を更新したと言いました。Postgresが変更したのは301行でした。
DeedglassはAIエージェントと、エージェントが変更するシステムの間に位置します。ルールによって各ツール呼び出しを判断し、チェックではシステムが実際に変更した内容とエージェントの報告を比較します(申告済み、確認済み、または証明済み。報告と一致、不一致、または確認不能)。各結果は、誰でもオフラインで検証できる署名付き記録として封印されます。アクションによって変更された行を元に戻すこともできます。
ブラウザーで試す · クイックスタート · ドキュメント · セキュリティ · deedglass.com
エージェントに、注文42を出荷済みにするよう依頼しました。エージェントは1つのUPDATEを実行し、ツールは1行と報告しました。しかし、レガシートリガーにより、同じトランザクション内でさらに300件の注文が出荷されました。以下は、2026-10-14にクイックスタートの最後の手順を実行した際の実際の出力です(…の箇所は短縮しています)。
$ npx -y deedglass init --trigger
…
✕ UPDATE order 42 Proven · Doesn't match · Postgres changed 301 rows in public.orders. The agent reported 1.
expected UPDATE 1 row in public.orders where id = 42 · sets status
observed UPDATE 301 rows in public.orders · 300 outside id = 42
…
✓ Trigger off orders_ship_open_batch dropped
✓ Undo preview Undo available · 301 rows in public.orders · 301 updates
policy undo-needs-approval · a person countersigns first
エージェントのログには1行と記録されています。Deedglassは、そのトランザクションに関するPostgres独自の変更ログを読み取り、301行を検出して、その差分を記録として封印しました。また、担当者が連署した後にのみ実行される、これらの行を元に戻す処理を計画しました。
make demo-heroの実際の実行(コミット 97a524c、2026-10-14)。各行は出力された時点の表示です。
出典:docs/assets/demo-hero.cast.json、描画:scripts/demo/cast2svg.mjs。
| コマンド | 必要なもの | マシンから外部に送信されるもの | |
|---|---|---|---|
| ブラウザーで | deedglass.com/play | ブラウザーのタブ。Postgres はページ内で実行され、「said 1, changed 301」のシーンが開きます。 | なし |
| ターミナルで | npx deedglass play | Node と、npm から取得した deedglass 0.1.1 以降。Docker は不要です。ルールは各呼び出しをリアルタイムで判定し、レコードはマシン上で封印・確認されます。Postgres の行は記録済みの実行結果から再生され、その旨が明記されます。 | なし |
| セットアップをスキャン | npx deedglass scan | Node。MCP の設定と、指定した場合はデータベースのカタログを読み取り専用で読み込みます。エージェントが変更できる内容を A から F で評価します。 | 指定したデータベースへの読み取り専用カタログクエリを除き、なし |
| 監視モード | deedglass observe run --connector pg-demo -- ./agent.sh | observe が有効な Postgres コネクター。再設定は不要です。すでに使用しているゲートと並行して、Postgres の変更ログを読み取ります。 | なし |
スキャンで、エージェントが書き込み可能なテーブル上のトリガーまたはカスケードが見つかると、その旨を示して 301 のシーンを案内します。監視モードについては以下をご覧ください。
クイックスタート
Docker が起動していて、ディスクに約 2 GiB の空きがあり、Node 18 以降と macOS または Linux(Windows では WSL 2)が必要です。次に、(テスト済みのクイックスタート)から以下を実行します。
mkdir acme-agents && cd acme-agents
npx -y deedglass init --yes
npx -y deedglass doctor
npx -y deedglass init --trigger
deedglass init は Docker で Postgres 18.6 のコンテナーを 2 つ(Deedglass 自身のデータベースとデモ用データベース)起動し、127.0.0.1:8080 で deedglass serve を実行します。また、組織、エージェント、postgres-safe ポリシーを作成し、DROP TABLE をブロックし、Proven で確認された UPDATE を実行して終了します。deedglass doctor は、修正方法も含めて 16 個の読み取り専用チェックを実行します。deedglass init --trigger はデモ用データベースのレガシートリガーを有効にし、同じ 1 行の UPDATE を実行して、前述の 301 行の不一致と取り消しプレビューを表示して終了します。
監視モード:再設定不要
deedglass observe run --connector pg-demo -- ./agent.sh # open a watched session, run the agent, close it
deedglass observe show obs_01k… --undo-sql # the undo as SQL you review and run (free)
deedglass observe run --connector dev --undo-sql ~/deedglass-undo -- claude # watch a Claude Code session, shell included
コネクターの設定で witness.observe.enabled: true にすると有効になります。監視モードは、deedglass connector postgres init が作成するロールとレプリケーションスロットを介して、Postgres の変更ログのみを読み取ります。そのため、すでに使用しているゲートと並行して、またはゲートがなくても動作します。
セッションが開いている間に監視対象テーブルでコミットされたすべての行を表示し、セッションをレコードとして封印します。どのプログラムが行を書き込んだかは判別できないため、セッションに「一致」または「不一致」の判定は付きません。行イメージは 30 日間保持されます。TRUNCATE はレコードから取り消せません。取り消し用 SQL は無料です。Deedglass によるワンステップの取り消しは Pro で利用できます。詳細は docs/OBSERVE.md をご覧ください。
動作の仕組み
flowchart LR
A["AI agents<br/>Claude · OpenAI · Cursor · any MCP client"] -->|tool call + agent key| G
subgraph D["Deedglass · one binary + Postgres"]
I[Identity] --> P[Policies] --> G[Rules]
G --> W[Check] --> S[Records] --> L[Ledger] --> N[Insights]
end
G -->|credentials from the vault| T["Tools<br/>Postgres · GitHub · Slack · Stripe · MCP servers"]
T -->|what actually happened| W
H[People] -->|approve · stop| G
すべてのツール呼び出しは、エージェントのキーを使って Deedglass を経由します。ルール(ポリシー)が allow、deny、require_approval のいずれかを判定します。Deedglass はエージェントに渡されない認証情報を使って呼び出しを実行し、確認処理で実際に起きたことと要求された内容を比較します。結果は組織のチェーン内のレコードとして封印されます。
各確認の確実性
| レベル | 確認する内容 | 確認できない内容 |
|---|---|---|
| Claimed | ツール独自の応答を、スキーマおよび事後条件と照合します | 応答が真実かどうか |
| Checked | 対象(GitHub、Slack、Stripe、Notion、REST、Postgres の行)から読み戻して確認します | 読み戻しで確認できない副作用 |
| Proven | Postgres の変更ログ(論理デコード)を使い、トランザクションでコミットされたすべての行を確認します | DDL、シーケンス、非ログテーブル、およびそのデータベースの WAL 外のすべて |
各レコードには、1 つのレベルと 1 つの結果が記録されます。「一致」、「不一致」、「確認不能」のいずれかです。ツールが実行されたかどうかを Deedglass が判別できない場合、結果は「確認不能」となり、「一致」にはなりません。API では短縮名(L0/L1/L2、VERIFIED/MISMATCH/UNVERIFIABLE)が使われます。対応関係は用語集をご覧ください。
対応していないこと
- 検証済みのチェックは Postgres のみを対象としており、監視対象のテーブルでは
wal_level=logicalとREPLICA IDENTITY FULLが必要です。 - 有効なキーを持ち、ポリシーの範囲内の操作を行う乗っ取られたエージェントは許可されます。ポリシー、予算、承認によって範囲は狭まりますが、この問題を解消するものではありません。
- Deedglass は Postgres サーバー、そのスーパーユーザー、実行環境のホスト、シールキーを信頼します。ホストが侵害された場合は保護できません。
- レコードにはペイロードではなくダイジェストが保存されます。1つのインスタンス上のすべての組織で、同じシールキーがレコードに署名します。
- 最小権限のデータベースロールに代わるものではありません。両方を使ってください。ロールはエージェントが実行できることを制限し、Deedglass は実際に行ったことをそのロールに照らしてチェックします。
回避策を含む全項目については、docs/LIMITATIONS.md と KNOWN_ISSUES.md をご覧ください。
代替手段
Deedglass が不要な場合や、以下のいずれかと併用したい場合もあるでしょう。それぞれの詳細ページには、出典と確認日が記載されています。deedglass.com/compare をご覧ください。
| 必要なもの | 使うもの | Deedglass の役割 |
|---|---|---|
| 読み取り専用のエージェント | SELECT 以外の権限を持たない Postgres ロール。エージェントがどんな指示を送ってもデータを変更できず、インストールも不要です。 | 不要です。書き込みが必要なエージェント向けのツールです。 (比較) |
| エージェントが変更を試せる場所 | データベースブランチ:Neon のブランチはデータのコピーオンライトクローンであり、Supabase のブランチはデフォルトで本番データなしで作成されます。 | 本番環境に反映しなければならない書き込みに対し、まずルールを適用し、その後チェックと記録を行います。 (比較) |
| 多数の MCP サーバーのルーティング、分離、認証情報管理 | Docker のものなどの MCP ゲートウェイ。各サーバーを分離されたコンテナで実行し、認証情報を注入します。 | ゲートウェイの背後で、Postgres に書き込むサーバーを対象にします。 (比較) |
| 各ステップのトレースと評価 | Langfuse または LangSmith。 | これらと併用します。トレースはエージェント側から見た記録であり、チェックでは Postgres がコミットした内容を読み取ります。 (比較) |
| Postgres、Kubernetes、HTTP の通信レベルでのルール | 解析済みのトラフィックに対するルールで各操作を制御する Claw Patrol。 | こちらも最初に判断します。さらに、Postgres がコミットした内容のチェック、オフラインで誰でも検証できる記録、取り消し機能を追加します。 (比較) |
| エージェントの送信内容とツールからの応答のスキャン | 双方向の MCP トラフィックをスキャンするエージェントファイアウォール、Pipelock。 | 各呼び出し後に Postgres がコミットした内容をチェックし、行を取り消す機能を追加します。 (比較) |
インストール
| 方法 | コマンド |
|---|---|
| npx(インストール不要) | npx -y deedglass help |
| インストールスクリプト(macOS、Linux) | curl -fsSL https://raw.githubusercontent.com/deedglass/deedglass/main/scripts/install.sh | sh |
| バイナリ | 最新リリースにある macOS、Linux、Windows 用アーカイブ。checksums.txt 付きです |
| Go | go install github.com/deedglass/deedglass/cmd/deedglass@latest(CLI のみ。Console は含まれません) |
| Docker | チェックアウトしたソースからイメージをビルドします:make web-build docker(タグは deedglass:dev。Node 24 で Console をビルドします) |
インストールスクリプトは、お使いのプラットフォーム用のリリースアーカイブをダウンロードし、sha256 をリリースの checksums.txt と照合してから、deedglass を ~/.local/bin にコピーします。実行前に内容をご確認ください:
scripts/install.sh。公開コンテナイメージは近日公開予定です。公開されるまでは、上記の方法でローカルにイメージをビルドしてください。チェックサム、署名、SBOM については、docs/INSTALL.md をご覧ください。
エージェントクライアントに追加する
VS Code にインストール · LM Studio · Goose · Claude Desktop · すべてのクライアント
claude mcp add deedglass -- npx -y deedglass mcp serve
キーを含むリンクはありません。まず npx deedglass init を実行してください。各クライアントは、Deedglass に対して、書き込まれたキーを問い合わせます。
このリポジトリ独自のマーケットプレイスから利用できる Claude Code プラグイン(MCP サーバー、/deedglass:scan、/deedglass:wrap、/deedglass:watch コマンド、スキャン結果の読み取りと、エージェントに Postgres への安全なアクセスを許可するスキル):
/plugin marketplace add deedglass/deedglass
/plugin install deedglass@deedglass
ソース付きのすべての形式:docs/INSTALL_CLIENTS.md。
SDK とクライアント
- TypeScript:
@deedglass/sdk。AI SDK、OpenAI Agents SDK、LangChain、Claude Agent SDK 用のアダプターを提供します。 - Python:
pip install deedglass。LangChain と Claude Agent SDK 用のアダプターを提供します。 - Go:
github.com/deedglass/deedglass/pkg/deedglass。 - MCP:
deedglass mcp wrapは任意の stdio MCP サーバーを制御し、deedglass mcp serveは Claude Desktop、Claude Code、Cursor、VS Code、Windsurf 向けのリモートサーバーを制御します。
コネクター
Postgres(Proven)、REST、GitHub、Slack、Stripe(テストモードのみ)、Gmail の下書き、Notion、リモート MCP サーバーに対応しています。認証情報は暗号化された保管庫に保存され、すべての外部への呼び出しは単一の出口を通ります。docs/CONNECTORS.md を参照してください。
数値
| 項目 | 測定値 | 目標 |
|---|---|---|
| Gate · 証人なしで許可 | p50 5.81 ms · p99 19.4 ms | p50 < 5 ms · p99 < 25 ms(p50 は未達) |
| Policy · 50 ルール | p99 148 µs | p99 < 1 ms |
| Witness · 100 writes/s で L2 | p50 118 ms · p99 317 ms | p50 < 1 s |
| Verify · 100,000 件の記録 | 1.53 s · 80.9 MiB | < 5 s · < 256 MiB |
| Stop · 2 インスタンス間 | 20 回の試行で最大 23.5 ms | < 2 s |
測定方法と未達項目については、docs/BENCHMARKS.md を参照してください。
セキュリティ
攻撃テストスイートは、各リリース候補で実サーバーと実際の Postgres に対して 82 件のケースを実行します。
82 件が一致し、差異は 0 件です(attack/results/latest.json、docs/ATTACK_SUITE.md)。
脆弱性は非公開で報告してください:SECURITY.md。
無料機能から deedglass.com にデータが送信されることはありません。無料スキャンはマシン上のファイルを読み取り、--postgres-dsn-env を指定した場合は、指定したデータベースにのみ接続します。Pro ライセンスは Dodo Payments と deedglass.com を使って確認されます。deedglass serve は起動時とその後は毎日確認し、Pro コマンドは実行時に確認します。最後に成功した確認から 1 日経過している場合、時計が最後の確認時刻または確認された最新時刻より 5 分を超えて遅れている場合、あるいは licence.clock が存在しない、読み取れない、または変更されている場合は、リクエストが送信されます。deedglass licence activate、refresh、deactivate は常に外部に接続します。DEEDGLASS_NO_NETWORK=1 はライセンス確認の呼び出しのみをすべて停止します。deedglass version --check と deedglass policy install および policy packs の --latest オプションは、使用時に GitHub に接続します。
デフォルトではヘッドのタイムスタンプは無効です。deedglass.yaml に TSA または透明性サービスを指定すると、deedglass deeds timestamp と各エクスポートは、それらのサービスにのみ接続します。
ネットワークを無効にした場合、Pro は最後に成功した確認から最大 14 日間、キャッシュ済みのトークンで動作します。各リクエストに含まれる内容については、docs/LICENSING.md を参照してください。
貢献
CONTRIBUTING.mdをお読みください。make dev、make ci、変更に必要なテスト、DCO の署名(git commit -s)について説明しています。質問は Discussions(SUPPORT.md)へお寄せください。意思決定の方法についてはGOVERNANCE.mdをご覧ください。
Deedglass によってログからは分からなかったことが見えたなら、GitHub でスターを付けていただくと、ほかの人にも見つけてもらいやすくなります。
ライセンス
コア、SDK、CLI は Apache-2.0 です。ee/の Pro 機能は FSL-1.1-ALv2 でライセンスされており、リリースから 2 年後に Apache-2.0 になります。リリースバイナリ、@deedglass/cli-* npm パッケージ、コンテナイメージにはee/が含まれるため、それらのライセンスはApache-2.0 AND FSL-1.1-ALv2です。
FSL-1.1-ALv2 では、競合する製品の提供を除き、ee/を自由に閲覧、実行、変更できます(ee/LICENSE)。Deedglass が安全性のために行うすべてのことは無料で、ee/の対象外です(docs/LICENSING.md)。その他のライセンスはLICENSEをご覧ください。サードパーティに関する通知はNOTICEに記載されています。
記録仕様(spec/:deed 形式とエクスポートバンドル)と、意図と実際の効果に関するコーパス(corpus/)は CC-BY-4.0 のもとで公開されているため、クレジットを表示すれば、誰でも実装、複製、改変できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。