Tracekit MCP gateway について
Tracekit MCP gatewayは、エージェントのツール呼び出しを制御・監査するMCPサーバーで、許可状況と記録の完全性を確認したい環境向けです。実行前に許可・拒否・保留を判断し、決定と呼び出し記録をオフライン検証可能な署名付きハッシュチェーンに保存します。
主な機能
- 01実行前にツール呼び出しを許可・拒否・保留
- 02呼び出し、決定、結果を署名付きハッシュチェーンに記録
- 03人による承認を正確な引数に結び付け
- 04実行記録のオフライン検証
- 05検証済み、ブロック済み、保留中の呼び出しを表示
活用シーン
- 01未承認の危険なツール呼び出しを阻止
- 02エージェント実行中の呼び出しを監査
- 03ログが改ざんされていないかオフラインで検証
MCP 対応
MCPゲートウェイとして、ツール呼び出しの実行前にポリシーを判定し、署名付きの証拠を記録します。READMEではMCPを対応インテグレーションにも挙げています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://{tracekit_gateway}/mcpclaude mcp add --transport http cygnux-labs-tracekit-mcp-gateway https://{tracekit_gateway}/mcp{"mcpServers":{"cygnux-labs-tracekit-mcp-gateway":{"type":"http","url":"https://{tracekit_gateway}/mcp"}}}Cursor で開く{"servers":{"cygnux-labs-tracekit-mcp-gateway":{"type":"http","url":"https://{tracekit_gateway}/mcp"}}}VS Code で開く{"mcpServers":{"cygnux-labs-tracekit-mcp-gateway":{"type":"http","url":"https://{tracekit_gateway}/mcp"}}}{"mcpServers":{"cygnux-labs-tracekit-mcp-gateway":{"serverUrl":"https://{tracekit_gateway}/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://{tracekit_gateway}/mcp認証が必要ツール
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
エージェントはログを編集できます。編集の痕跡は隠せません。
Tracekit はエージェントが実行する前にすべてのツール呼び出しをチェックし、各呼び出しと判断をハッシュチェーンに署名して記録します。
さらに、実行ごとに 1 つの .tkb ファイルを生成するため、誰でもオフラインで検証できます。
8 件中 8 件改ざん攻撃を検知480 回の試行、証人あり(E1) | 512 件中 512 件有害な呼び出しを阻止11 種類、695 件中誤検知 1 件(E17) | < 1 msツール呼び出しあたりの追加時間p99 で 0.91 ms、署名者との往復(E9) | 8 件中 8 件内部関係者による攻撃を検知すべての PR に対するマージゲート(E8) |
Certificate Transparency のように構築:追記専用ログに署名済みレコードを記録し、独立した証人が共同署名
オープンなファイル形式 · Python と TypeScript の検証ツール · MIT · 自分のマシンで実行
試す · エージェントに追加する · 証明できること · 内容 · 証拠 · 仕組み · 試験導入 · 貢献する · ドキュメント
エージェントがしてはいけないことをしたとき、知りたいのは 3 つです。何をしたのか、許可されていたのか、そして記録を信頼できるのか? エージェント自身のログでは、3 つ目には答えられません。エージェントがログを編集できるからです。ある実行を、2 つの方法で記録した例を紹介します。
同じ実行を記録しています。データベース、署名者、ビューアー、2つの編集は実物で、モデルはスクリプトで動作します。音声付きで視聴(1:47)
このデモでは、署名者はエージェント自身のユーザーとして実行されていました(開発モード)。そのため、方法を知っているエージェントであれば、キーを読み取ってログに再署名できた可能性があります。署名者をエージェントがアクセスできない場所で、証人とともに実行すれば、それはできません。
試してみる
uvx --from tracekit-ai tracekit demo --server
API キーは不要で、uv でインストールするものもありません。キャッシュが空の Mac では5秒かかりました(新しい仮想環境で pip install tracekit-ai を実行した場合は10秒です)。パッケージ名は tracekit-ai です。PyPI の tracekit は無関係なプロジェクトです。スクリプト化されたエージェントが3回呼び出しを行い、次のように表示されます。
== agent run (SCRIPTED: fixed tool calls, not a model)
Bash 'ls': allow
Bash 'sudo rm -rf /': deny TK-D001 TK-D004 TK-F003
Bash 'echo "unterminated': ask TK-SHELL-PARSE
...
Integrity: VERIFIED.
== tamper test: rewrite the denied call as allowed in a copy, then verify again
[FAIL] signatures — 11 record(s), keys valid at their position
seq 4: hash does not match the event
Integrity: FAILED.
削除は実行前に拒否され、保留された呼び出しは承認後に実行され、実行は検証されました。その後、デモではコピー内で拒否を許可に書き換えたため、変更されたレコードの箇所で検証に失敗しました。
エージェントに追加する
3行です。
pip install tracekit-ai
import tracekit; tracekit.instrument() # the first line of your agent; then run it as usual
tracekit last # Integrity: VERIFIED. / Assurance: dev; ...
tracekit.instrument() は開発用署名者を起動(または実行中のものを再利用)し、検出したフレームワークのすべてのツール呼び出しとモデル呼び出しを制御・記録します。tracekit last は最新の実行をエクスポートして検証し、その保存先を表示します。tracekit view --dev はすべての実行を表示します。クリーンなマシンで LangGraph の例(モックモデル、API キー不要)をインストール、実行、検証するまでにかかった時間は27秒でした:examples/v2/clean-machine.sh langchain。
その他の導入方法:コーディングエージェント、uv を使わない方法、理由のデモ、サンプルバンドル、TypeScript
コーディングエージェント:tracekit init --dev --v2 を実行すると、Claude Code のフックが開発用署名ツールに接続されます。他のエージェントには --agent codex、cursor、または
gemini を追加します(実験版)。uv を使わない場合:pip install tracekit-ai を実行し、その後 tracekit demo --server を実行します。--why
(実験版)では、リプレイによって原因が特定され、署名済みレコードによってその根拠が示される、保留中の
メールを確認できます:
tracekit demo --server # exit 0
tracekit demo --why # exit 0
tracekit init --dev --v2
チェックアウトしたリポジトリから、同梱のサンプルバンドル(v1)は検証ツールだけで確認できます(pip install --no-deps tracekit-ai だけで
十分です)。また、python examples/v2/langchain/agent.py --scripted を実行すると、モックモデルを使用する LangGraph エージェントが起動します:
tracekit verify docs/sample/demo-run.tkb --key docs/sample/signer.pub # exit 0
tracekit verify docs/sample/demo-run-tampered.tkb --key docs/sample/signer.pub # exit 1
TypeScript には Node 18 以降が必要です:npm install @cygnuxlabs/tracekit を実行し、npx @cygnuxlabs/tracekit up を実行すると、Apple Silicon 搭載 Mac、Linux、Windows 上で Python を使わずに開発用
署名ツールを起動できます(TypeScript SDK)。Python は 3.9~3.13 に対応しています。フレームワーク統合には 3.10 以降が必要です。
3つの保証があります。相互に関連していますが、どれか1つでほかの保証も得られるわけではなく、それぞれに異なる要件があります。
| 保証 | 得られるもの | 必要なもの |
|---|---|---|
| 証拠の完全性 | 編集、削除、差し替え、または挿入された記録は、その記録の検証に失敗します | 署名付きログだけです。ログの末尾を切り落とした場合や、盗まれた鍵で再署名した場合に検知するには、証人が必要です |
| 実行制御 | 各呼び出しは実行前にチェックされます。拒否された呼び出しはブロックされ、保留された呼び出しは、承認されたものとまったく同じ引数で、承認後にのみ実行されます | 呼び出しがTracekitを経由する必要があります。SDK、フック、またはゲートウェイを使います。経由しないコードは停止されません |
| 独立した保証 | オペレーターが自分のログを書き換えたり、フォークしたりすると検知されます | オペレーターが管理していない証人とモニターが必要です。どちらも実験段階で、現在稼働している公開証人はありません |
制限事項
- 開発モードでは、自分と同じ権限で動作するエージェントから何も保護されません。 開発モードの実行では
isolation: same-userと表示されます (FAQ)。 - 検証済みの実行で証明できるのは、記録が完全であることだけです。 意図や、報告されたツールの結果が真実であること、すべてのアクションが記録されたことは証明できません (FAQ)。
- キャプチャ経路の外で行われたアクションは記録に残りません。 たとえば、フックが検知しないサブプロセスや、アダプターを経由しないコードです (アダプター)。
- ポリシールールはテキストとツール名に一致します。 強い意志を持つエージェントはコマンドの表現を変えられます。保護を担うのは署名者の隔離です (ポリシーリファレンス)。
- コミットメントで隠せるのは内容だけであり、タイミング、サイズ、件数は隠せません (プライバシー)。
開発モードからエージェントが到達できない署名者まで、デプロイごとの保証: 保証。各制限事項とその対処方法: 制限事項。EU AI Act、 ISO/IEC 42001、NIST AI RMF、OWASPとの対応: コンプライアンス。
含まれるもの
署名者は1つです。中核機能は安定しており、最優先で強化されています。それ以外は実験的な機能として同じパッケージに含まれています。動作し、テスト済みですが、リリースごとに変更される可能性があります(安定している機能)。
| 中核機能 | 内容 | 測定結果 |
|---|---|---|
| 記録 | 実行ごとに、すべてのツール呼び出し、判断、結果を1つの署名付きハッシュチェーンに記録します。イベントが失われた場合は、無言で欠落するのではなく、署名付きの欠落記録になります | ログだけで改ざん攻撃8件中6件を検知(E1) |
| 判断 | 各呼び出しの実行前に、許可、拒否、または人による保留を選択します。シェル、ファイル、SQL、HTTP、クラウド CLI、ブラウザー、メール、メッセージング、決済、シークレット、MCP 向けのパックを提供します | 有害な呼び出し512件中512件を停止し、695件中1件が誤検知(E17) |
| 承認 | 保留された呼び出しは、コマンドラインからの承認後にのみ実行されます。承認は正確な引数に紐付けられ、1回のみ使用できます(承認) | 引数の編集、スナップショットの再利用、別の実行に対する承認は拒否されます。すべての安定したフレームワーク統合で契約テストを実施 |
| 証明 | tracekit verify は、ピン留めした鍵を使って実行のファイルをオフラインで検証します | 内部関係者による攻撃8件中8件を検知(E8) |
| 監視 | tracekit view:すべての実行を検証し、ブロックされた呼び出しと保留中の呼び出し、承認、欠落記録、リプレイ、実行レビューを表示します(ビューアー) | 未測定 |
| 実験的機能 | 内容 | 測定結果 |
|---|---|---|
| 証人 | 独立した証人が各チェックポイントに共同署名します。モニターはログを監視し、書き換えや分岐を検出します | 証人を使って改ざん攻撃8件中8件を検知(E1) |
| 照合 | 署名者は、モデルが要求した呼び出し(LLM ゲートウェイまたはセッションのトランスクリプトで確認されたもの)と、エージェントが報告した呼び出しを比較します。フックのスキップや捏造された呼び出しにフラグを立てます | 仕込まれた不一致12件中12件にフラグを立て、誤検知は0件(E10) |
| 封じ込め | 署名付きのインシデントにより、実行を保留または隔離します。ツールはエージェントが保持していない認証情報で実行されます(エグゼキューター、MCP ゲートウェイ)。送信トラフィック監視機能は、どの呼び出しでも説明できないトラフィックにフラグを立てます | 封じ込めチェック8件中8件、検知チェック10件中10件(E17) |
| 説明 | 各引数の出所と、tracekit why:そのアクションを引き起こした入力を、実行からその入力を除いてリプレイすることで特定します | 真の原因6件中6件を特定し、誤った責任帰属は0件。7Bモデルを1つ使用、小規模サンプル |
| 承認者の追加 | パスキー、Slack、または範囲内で承認するレビュアーエージェントを備えたウェブページ | エージェント承認者を狙った不正利用ケース7件中7件を検知(E18) |
検証結果
独自に実施した実験です。小規模かつ合成データを使用し、すべて自分たちで作成しました。数値を丸めてはいません。失敗もそのまま掲載しています。
| 実験 | 設定 | 結果 |
|---|---|---|
| E1 改ざん検知 | 120レコードの署名付きログ、8種類の攻撃を各60回試行、1.2で再実行 | ログだけで8種類中6種類を検知、証人がいれば8種類すべてを検知 |
| E8 内部関係者による攻撃 | Linuxのシステムモード署名ツールに対する、実際の非特権ユーザーによる攻撃:おとりの署名ツール、停止した署名ツール、差し替えられたポリシー、捏造された実行 | 8種類すべてを検知。すべてのプルリクエストでマージゲートとして実行 |
| E17 ポリシーパック | 11クラスの有害なツール呼び出し512件と無害なツール呼び出し695件を、両方の正規表現エンジンで判定 | 512件すべてを阻止。誤検知は1件で、下書きメールが人による確認のため保留されました |
| E10 照合 | 30回の実行のうち、フックの欠落、呼び出しの捏造、引数の変更という不一致を仕込んだものが12回 | 12件すべてにフラグを付与、誤検知は0件 |
| E9 オーバーヘッド | Unixソケット経由の署名ツールとの往復、ファイルストレージ、macOSでのクイック実行 | 呼び出しごとにp50 0.45 ms、p99 0.91 ms。毎秒5,356イベント |
| E3 粗めのデータセットでのv1正規表現ゲート | ルール作成後に作成した有害な呼び出し16件と無害な呼び出し20件 | 16件中12件を検知、誤検知は1件。ルールはトリップワイヤーであり、サンドボックスではありません |
E1で検知できなかった2件は、設計上の限界です。ログは自分自身の末尾が切り取られたことを検知できず、鍵を持つ者は再署名できます。これらを検知できるのは、別の場所に保持されたヘッドのコピーである証人だけです。そのため、証人のない実行はdevとして検証されます。テストセットは自分たちで作成したもので、脅威モデルはまだ外部の誰にもレビューされていません。各実験と、測定していない項目については、評価 ·
技術レポートをご覧ください。
仕組み
- エージェントが署名鍵を保持することはなく、シーケンス番号を割り当てることもありません。
- 各レコードには署名が付与され、その直前のレコードのハッシュが含まれます。そのため、1バイトでも変更されると、該当レコードで検証に失敗します。
- エージェント自身が報告する内容は一切信頼されません。隔離状態、障害時の動作、欠落、呼び出しの承認者も対象です。
- ログを書き換えられる者によって、実行の価値が決まります。そのため、署名者はエージェントがアクセスできない場所に配置してください。エージェントのコードはどのモードでも同じです。
TRACEKIT_SIGNERで署名者を指定します。
| 署名者の実行場所 | 鍵とログにアクセスできる者 | 記録される隔離状態 |
|---|---|---|
| ノートPCでの開発 | エージェント自身のユーザー | same-user |
| ノートPCのシステムモード(Linux、macOSは実験段階) | rootと署名者のOSユーザー | separate-user |
| コンテナまたはKubernetesサイドカー | 署名者のuidとノードの管理者 | separate-user |
| HTTPS経由の中央署名者(またはDocker Compose) | 署名者ホストの管理者 | remote |
署名者を実行する運用担当者は、自身の鍵を使ってログを書き換えることができます。独立した証人とモニターを設ければ、そのことを検出できます。各モードのエンドツーエンドの説明はこちらです:デプロイ。 モデル全体については、アーキテクチャ、 ノートPCおよび サーバーの脅威モデルをご覧ください。
あなたに適していますか?
| Tracekitを使う場合 | 通常のトレーサーで十分な場合 |
|---|---|
| エージェントがシェル、ファイル、データベース、メール、決済、クラウドなどの実システムに対して操作を行う | 読み取りのみを行う、または使い捨てのサンドボックスで実行する |
| 実行前に停止したり、人の判断を仰いだりする必要がある呼び出しがある | 実行後に何が起きたかを確認できれば十分 |
| 顧客、監査担当者、インシデントレビュー担当者など、チーム外の人が記録を信頼する必要がある | ログを読むのはデバッグを行うチームだけ |
プロトタイプのデバッグには、OpenTelemetry、Langfuse、LangSmithなどのトレーサーが適しています。Tracekitはそれらに取って代わるものではありません。エージェントを信頼していない相手にも渡せる記録を提供します。トレーサー、ガードレールライブラリ、その他の改ざん検知可能なログとの比較や、Tracekitが適さないケースについては、比較をご覧ください。
私たちと一緒に試験導入する
顧客、監査担当者、保険会社など、承認を行う人がいる環境で、実システムを操作するエージェントを運用していますか?2週間、無料でTracekitのセットアップをお手伝いします。お客様のマシンで、1つのエージェントを対象に実施します。終了時には、各実行の検証済み証拠ファイルと、エージェントが行った予想外の動作に関する書面でのレビューをお渡しします。 [email protected]にメールするか、 試験導入をリクエストしてください。
コマンド
tracekit demo --server # allow, deny, approve, then a tampered copy fails verification
tracekit up # start the dev signer, or find the running one
tracekit last # export your latest run, pin the dev key, verify it
tracekit view --dev # every run, verified: calls, decisions, gaps, replay, why
tracekit approvals list # calls held for a person; tracekit approvals approve ID
tracekit export --v2 --run ID -o run.tkb # one run as one .tkb file
tracekit verify run.tkb --trust trust.json # check it offline, against the keys and witnesses you pinned
tracekit policy lint policy.yaml # check a policy before the signer loads it
tracekit doctor # check this setup
tracekit init --dev --v2 # wire Claude Code's hooks; add --agent codex, cursor or gemini
証拠フォーマット
- 仕様が明確です。 証拠フォーマット v2 は、独立した検証ツールを実装できるほどの精度を目指しており、規範的な テストベクトルを用意しています。
- 標準規格に基づいています。 レコードはRFC 8785の正規化JSONに対してEd25519で署名されます。各ログは、Certificate Transparencyで使われている構造であるRFC 6962 Merkleツリーです。チェックポイントはC2SP署名付きノートであり、証人はC2SP tlog-cosignatureに従って 署名を追加します。
- 自己完結型です。
.tkbファイルは、レコード、包含証明、チェックポイント、および呼び出しの判定に使われた ポリシースナップショットをまとめたzipです。検証コードは含まれません。 - 古いファイルも検証を続けられます。 フォーマットは拡張のみで、各フォーマットの検証ツールは凍結されます。古い検証ツールで新しいファイルを検証すると、
FAILEDではなくUNVERIFIABLE (needs tracekit >= x)と報告されます。
GitHub Actionsでv1バンドルを検証するには、uses: Cygnux-Labs/Tracekit@main(bundle: と key: または witness:)を使います。
require-anchor のデフォルトは true であり、アンカーのないバンドルはステップが失敗します。報告のみを行うには、require-anchor: "false" を設定します。
貢献する
次の作業はどれも単独で役に立ち、コードベース全体を把握している必要はありません。
- 別の言語で検証ツールを書く。 証拠フォーマット は仕様が明確で、テストベクトルも用意されています。仕様だけをもとにGoまたはRustで 検証ツールを書くことが、仕様の完全性を確かめる最善の方法です。
- パックが通してしまう有害な呼び出しを見つける。 それを捕捉するルールとともに
tests/data/policy/deny/に追加します。E17がすべてのケースを実行します。 - Tracekitを自分のエージェントで実行し、問題を報告する。 2つのオープンソースエージェントで実行したところ、実際のバグが見つかりました (事例研究)。
- フレームワークを追加する。 アダプターコントラクトを パスすれば、統合は完了です。
- 問題を見つける。 E1とE8が見逃す改ざんや回避方法を見つけたら、 SECURITY.mdの説明に従って非公開で報告してください。見つけた方は、掲載を希望しないと申し出ない限り、 殿堂入りリストに名前が掲載されます。
始めるには、make install の後に make check を実行します
(貢献ガイド)。小規模なタスクには
good first issueのラベルが付いています。参加するすべての方は
行動規範に従ってください。
ドキュメント
| 目的 | こちらから始めてください |
|---|---|
| クリーンインストールの全手順を確認する | チュートリアル · 録画デモ · ビューアーツアー |
| エージェントを接続する | v2 クイックスタート · コーディングエージェント · TypeScript SDK |
| 署名者を隔離する | デプロイ · Compose · コンテナ · Kubernetes · 診断 |
| 呼び出しを判断する | ポリシーリファレンス · 承認 · インシデント · Webhook |
| 証拠を確認する | 検証レポートの読み方 · 監査担当者向けガイド · 証人 · モニター · コンプライアンス対応表 |
| アクションが実行された理由を確認する | tracekit why · アーキテクチャ |
| 設計を理解する | アーキテクチャ · 評価 · 技術レポート · ケーススタディ |
| 安定している機能を確認する | サポート · 制限事項 · FAQ · セキュリティチェックリスト · 変更履歴 |
| v1 のノート PC 用署名者を実行する | コーディングエージェント · 署名 · v1 の連携 |
ライセンス
MIT、著作権者 Cygnux Labs。これは 1.3.0 であり、1.x が サポート対象の系列です。SECURITY.md に記載のとおり、脆弱性は非公開で報告してください。
引用
@software{tracekit2026,
author = {{Cygnux Labs}},
title = {Tracekit: the tamper-evident flight recorder for AI agents},
year = {2026},
url = {https://github.com/Cygnux-Labs/Tracekit}
}
エージェントはログを編集できます。しかし、編集の事実を隠すことはできません。スターを付けるのに費用はかかりません。Tracekit を他のチームにも見つけてもらいやすくなります。
ウェブサイト · 評価 · 制限事項 · コントリビューション · 課題コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
