mcpField
T
Tracekit MCP gateway

Tracekit MCP gateway

リモート
github.comセキュリティ354今日更新
リポジトリ公式サイト

Tracekit MCP gateway について

Tracekit MCP gatewayは、エージェントのツール呼び出しを制御・監査するMCPサーバーで、許可状況と記録の完全性を確認したい環境向けです。実行前に許可・拒否・保留を判断し、決定と呼び出し記録をオフライン検証可能な署名付きハッシュチェーンに保存します。

主な機能

  1. 01実行前にツール呼び出しを許可・拒否・保留
  2. 02呼び出し、決定、結果を署名付きハッシュチェーンに記録
  3. 03人による承認を正確な引数に結び付け
  4. 04実行記録のオフライン検証
  5. 05検証済み、ブロック済み、保留中の呼び出しを表示

活用シーン

  1. 01未承認の危険なツール呼び出しを阻止
  2. 02エージェント実行中の呼び出しを監査
  3. 03ログが改ざんされていないかオフラインで検証

MCP 対応

MCPゲートウェイとして、ツール呼び出しの実行前にポリシーを判定し、署名付きの証拠を記録します。READMEではMCPを対応インテグレーションにも挙げています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://{tracekit_gateway}/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://{tracekit_gateway}/mcp認証が必要

ツール

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Tracekit:AI エージェントの改ざん検知可能なフライトレコーダー

エージェントはログを編集できます。編集の痕跡は隠せません。

Tracekit はエージェントが実行する前にすべてのツール呼び出しをチェックし、各呼び出しと判断をハッシュチェーンに署名して記録します。 さらに、実行ごとに 1 つの .tkb ファイルを生成するため、誰でもオフラインで検証できます。

PyPI 19 種類のエージェントとフレームワークに対応 CI MIT ライセンス

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 つの方法で記録した例を紹介します。

何が起きたか:サポートチケットに隠された指示があり、エージェントは 128 件中 43 件の注文を削除してから、ログと Tracekit の記録を編集し、削除を検索に見せかけます。エージェント自身のログには注文 1042 の検索が 2 回表示され、grep では DELETE が見つからず、データベースには 85 件の注文が残っています。一見問題はないようです。同じ実行を記録した Tracekit:13:51:59 の run_sql 呼び出しは行を削除する ACME-F001 としてフラグが立ち、実行終了時の検証では seq 7 で失敗しました。ハッシュがイベントと一致しません。レコード 7 で検知しました。

隠された指示を含むチケットによって、サポートエージェントは 43 件の注文を削除し、さらに自身のログと削除に関する Tracekit の記録を編集します。grep では削除が見つかりません。Tracekit はレコード 7 がハッシュと一致しなくなったため、実行を FAILED としてマークします。 同じ実行を記録しています。データベース、署名者、ビューアー、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。

Claude Code、Codex CLI、Cursor、Gemini CLI、Python および TypeScript SDK、OpenAI Agents SDK、Claude Agent SDK、LangChain、LangGraph、MCP、CrewAI、Browser Use、Pydantic AI、Vercel AI SDK、OpenTelemetry に対応 安定版:Claude Code、OpenAI Agents SDK、LangChain / LangGraph、Claude Agent SDK、MCP。実験版:Codex CLI、Cursor、Gemini CLI、CrewAI、Browser Use、Pydantic AI、Google ADK、Haystack、LlamaIndex、Microsoft Agent Framework、Strands Agents、TypeScript SDK。セットアップ: コーディングエージェント · OpenAI Agents SDK · Claude Agent SDK · LangChain / LangGraph · MCP · CrewAI · Browser Use · Pydantic AI · Google ADK · Haystack · LlamaIndex · Microsoft Agent Framework · Strands Agents · TypeScript · Vercel AI SDK · OpenTelemetry · その他のエージェント
その他の導入方法:コーディングエージェント、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)

検証結果

独自に実施した実験です。小規模かつ合成データを使用し、すべて自分たちで作成しました。数値を丸めてはいません。失敗もそのまま掲載しています。

改ざん検知。攻撃ごとに60回試行。署名付きログだけで、レコードの編集、削除、入れ替え、挿入、鍵を使わない再チェーン化、最終行の途中切断を60回中60回検知し、末尾の切り詰めと鍵を使った再署名は検知できません(0回中60回)。証人がいる場合は、8種類すべてを60回中60回検知します。
実験設定結果
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. エージェントはSDKまたはフックを通じて、呼び出しごとに署名者に判断を求めます。エージェントが保持するのは実行トークンで、鍵は保持しません。2. エージェントの手が届かない場所にある署名者が、許可、拒否、または人に判断を求め、各呼び出し、判断、結果を実行ごとの1つのハッシュチェーンに記録して署名します。3. 証人が各チェックポイントに共同署名します。4. 各実行はrun.tkbとしてエクスポートされ、tracekit verifyがオフラインで検証します。結果はVERIFIED、または変更されたレコードでFAILEDです。
  • エージェントが署名鍵を保持することはなく、シーケンス番号を割り当てることもありません。
  • 各レコードには署名が付与され、その直前のレコードのハッシュが含まれます。そのため、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 を他のチームにも見つけてもらいやすくなります。

ウェブサイト · 評価 · 制限事項 · コントリビューション · 課題

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。