
Tracekitは、エージェントが実行するすべてのツール呼び出しを実行前に検査し、各呼び出しと判断をハッシュチェーンに署名し、
実行ごとに1つの.tkbファイルを生成します。このファイルは誰でもオフラインで検証できます。
8 / 8改ざん攻撃を検出480回の試行、証人あり(E1) |
570 / 570有害な呼び出しを阻止11クラス、738件中誤検知1件(E17) |
< 1 msツール呼び出しごとの追加コストp99で0.91 ms、署名者の往復(E9) |
8 / 8内部者攻撃を検出すべてのPRに対するマージゲート(E8) |
Certificate Transparencyのように構築:追記専用ログに署名付きレコードを記録し、独立した証人が連署
オープンなファイル形式 · PythonとTypeScriptの検証ツール · MIT · 自分のマシン上で動作
試してみる · エージェントに追加する · 何を証明するか · 含まれるもの · 証明 · 仕組み · パイロット導入 · コントリビュート · ドキュメント
エージェントがすべきでないことをしたとき、あなたは3つのことを問います:何をしたのか、それは許可されていたのか、そしてその記録を信頼できるのか? エージェント自身のログは3番目に答えられません。エージェントがそれを編集できるからです。ここに、同じ実行を両方の方法で記録した例を示します:
同じ実行を記録したもの: データベース、署名者、ビューア、および両方の編集は本物であり、モデルはスクリプト化されている。音声付きで視聴する (1:47)
このデモでは、署名者がエージェント自身のユーザーとして実行されていた (dev モード) ため、方法を知っていればエージェントが鍵を読み取り、ログに再署名できた可能性がある。エージェントが到達できない場所で署名者を実行し、witness を併用すれば、それは不可能になる。
uvx --from tracekit-ai tracekit demo --server
APIキーは不要で、uv でインストールするものもありません。Mac の空のキャッシュから実行した場合、5秒かかりました(新しい venv で 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。