Attest proxy について
Attestは、エージェントが既存のツールで行う操作に、ポリシー判定、人間の承認、検証、監査記録を加えます。MCPプロキシを任意のMCPサーバーの前段に置け、操作を実行するツールは変更しません。
主な機能
- 01ポリシー判定と人間の承認ゲート
- 02記録システムからの読み戻し検証
- 03ハッシュチェーン型の改ざん検知ログ
- 04PythonおよびTypeScript SDK
- 05ログのエクスポートと署名付きチェックポイント
活用シーン
- 01外部操作に承認を必須化
- 02CRMへの書き込み結果を確認
- 03エージェント操作の証跡を記録
- 04MCPサーバー経由の操作を監査
MCP 対応
Attestは、任意のMCPサーバーの前段でポリシー、承認、検証、記録を加えるゼロコードプロキシと、検証サーバーを提供します。実際の操作は引き続き下位のツールが実行します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx attestlayerATTEST_POLICYPath to a policy YAMLATTEST_LEDGERLedger SQLite path (default .attest/ledger.sqlite)ATTEST_INBOX_URLURL of the confirm inbox (attest serve) linked from Slack cardsSLACK_BOT_TOKENシークレットSlack bot token for confirm cardsATTEST_SLACK_CHANNELSlack channel for confirm cardsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Attest — AI エージェントが実際に行ったことを証明する
判断 → ゲート → 検証 → 証明。 エージェントはメールを送信し、CRM を更新し、資金を移動します。 Attest は実行の可否を判断し、重要な操作には人間による承認を挟み、記録システムから読み戻して実際に行われたかを確認し、いずれの場合も改ざんを検知できる証拠を記録します。
Attest は操作を実行しません。実行するのはお使いのツールです。そのため、初日からあらゆるアプリやフレームワークで利用できます。
エージェントは成功したと言っています。本当に成功しましたか?
CRM への同一の書き込みが 2 回行われ、どちらもツールから成功と報告され、どちらも人間に承認されたとします。
$ attest ledger
#2 2026-09-19 10:16:46 someweirdcrm.create → leads ask approved unverified a09e7641db12
#1 2026-09-19 10:16:46 someweirdcrm.create → leads ask approved verified 77a6d99a60f6
2 回目は読み戻しで問題がないことが確認されました。1 回目はそうではなく、どのフィールドに不一致があったかは台帳に記録されています。
{ "level": "unverified", "matched": false,
"evidence": { "compared": 4, "exists": true, "failed": ["stage"],
"fields": { "stage": { "want": "qualified", "got": "new", "ok": false } } } }
トレースには 2 つのステップがどちらも成功と表示されていたでしょう。この違いこそが、この製品のすべてです。
インストール
pip install attestlayer # Python
npm install attestlayer # TypeScript — byte-identical ledger format
import attest
@attest.action(system="gmail", verb="send", target="to")
def send_email(to, subject, body): ...
import { Attest } from "attestlayer";
const at = new Attest({ agent: "followup-agent@v3", readers: { gmail: process.env.GMAIL_TOKEN! } });
const sendEmail = at.wrap({ system: "gmail", verb: "send", target: "to" },
async ({ to, subject, body }) => gmail.send({ to, subject, body }));
変更はこれだけです。最初の外部送信では人間の承認待ちとなり、台帳の行には acknowledged と記録されます。または、エージェント自身の認証情報を使って Attest が読み戻せる場合は verified と記録されます(Attest(readers={"gmail": service}))。コードのほかの部分に変更はありません。
検証は段階的に行われ、決して誇張しません
各行には、どこまで確認できたかが正確に記録されます。実行できなかったチェックが成功として扱われることはありません。
| level | 意味 |
|---|---|
verified | 記録システムから読み戻し、フィールドが一致した |
verified-custom | 独自のチェックが実行され、合格した |
acknowledged | 操作は受け付けられたが、ここでは読み戻しを実行できなかった |
attested-only | この操作に利用できる検証手段がない状態で記録された |
unverified | チェックが実行され、申告内容と矛盾した |
unverified となるのは、矛盾が確認された場合だけです。認証情報がない場合、読み取り専用のスコープの場合、または未対応の動詞の場合は acknowledged に下がります。「確認できなかった」と「実行されなかった」は別の事実だからです。
接続先
| surface | 方法 |
|---|---|
| デコレーター/ラッパー | @attest.action(...) · at.wrap(...) |
| LangGraph | ツールノードのラッパー。ゲートはグラフの割り込みとして実装 |
| OpenAI Agents · Claude Agent SDK · CrewAI · DeerFlow | attest/ にあるアダプター |
| MCP | あらゆるサーバーの前段に置くコード不要のプロキシと、検証サーバー |
| HTTP ゲートウェイ | アウトバウンドトラフィックの宛先をここに設定。SDK は不要 |
| API のみ | 記述子を自分で POST |
人間による確認は、チームがすでに利用している場所に届きます。Slack、Web インボックス、Webhook、LangGraph の割り込み、またはコンソールです。承認者は承認前にパラメーターを編集でき、その編集内容も記録されます。
記録そのもの
ハッシュチェーン台帳をローカルでは SQLite、クラウドでは組織ごとに Postgres で運用します。署名付きチェックポイントにより、古い行を整理してもチェーンを検証できます。Ed25519 による署名は任意で、ファイル、git リポジトリ、または HTTP エンドポイントへの外部アンカリングにも対応します。エクスポート形式は JSON、CSV、IETF の draft-sharif-agent-audit-trail JSONL 形式、および EU AI Act のイベントログパックです。
オーバーヘッドは 1 回の操作あたり約 6 分の 1 ミリ秒です。benchmarks/ で測定しています(公開されている数値)。
ローカルで試す
python examples/unknown_app.py # an app Attest has never seen, L1 → L3
ATTEST_AUTO_APPROVE=1 python examples/langgraph_agent.py
cd deploy && cp .env.example .env && docker compose up # cloud API :8400 + dashboard :3400
Attest Cloud
SDK は MIT ライセンスで、ローカル台帳を使って単独で動作します。Attest Cloud では、共有台帳、確認用受信トレイ、バージョン管理された組織ポリシー、エージェントキー、コンプライアンスエクスポートを利用できます。ベンダーのトークンが Attest Cloud に渡ることはありません。読み戻しは独自の認証情報を使ってお客様のプロセス内で行われ、送信されるのはハッシュとプレビューのみです。deploy/ からセルフホストするか、DEPLOY.md をご覧ください。
インストール方法
| 配布先 | 方法 |
|---|---|
| PyPI | pip install attestlayer → attest、attest-mcp、attest-mcp-server、attest-gateway |
| npm | npm install attestlayer |
| MCP Registry | io.github.dev-prathap/attest(検証サーバー) · io.github.dev-prathap/attest-proxy(コード不要のプロキシ) |
| Smithery | attestlayer/attest |
| Claude Desktop | 最新リリースの attest-<version>.mcpb |
| Docker | ghcr.io/dev-prathap/attest-api · ghcr.io/dev-prathap/attest-dashboard |
ドキュメント
ドキュメント全文は dev-prathap.github.io/ATTEST にあります — クイックスタート · 検証レベル · ポリシー · 読み戻しレシピ · 台帳とエクスポート · セキュリティ強化
リポジトリ
| パス | 内容 |
|---|---|
| attest/ | Python SDK — ディスクリプター、ポリシー、台帳、検証レベル、ゲート、アダプター、MCP プロキシ、CLI |
| packages/attest-ts/ | TypeScript SDK — 同じ正規ハッシュを使用し、Python を基準にフィクスチャテスト済み |
| cloud/ | Attest Cloud — FastAPI + Postgres:組織、キー、ポリシーバージョン、台帳、確認用受信トレイ、エクスポート |
| dashboard/ | Next.js ダッシュボード — 台帳の詳細確認、確認用受信トレイ、ポリシーとキー |
| examples/ | 不明なアプリ、LangGraph、OpenAI Agents、MCP 設定、API のみ、クラウド |
| deploy/ | Dockerfile と compose |
| benchmarks/ | アクションごとのレイヤーのコスト |
| docs/ | ドキュメントサイトのソースと設計ノート |
pytest -q && (cd cloud && pytest -q) # 355 + 37 offline tests
pytest tests/live # 8 live suites; need real credentials, skipped without them
コントリビューション
読み戻しレシピは、取り組みを始めるのに最適です。各レシピは、もう 1 つのアプリで書き込みを確認する方法を Attest に教えるもので、そのアプリの読み取り API だけで作成できます。CONTRIBUTING.md をご覧ください。脆弱性の報告については SECURITY.md をご覧ください。
原則
- お客様のアクションを実行することはありません。ツールがお客様のアクションを実行し、私たちは判断、ゲート、検証、記録を行います。
- 対応範囲はあらゆる対象に及びます。検証の深さは段階的であり、すべての行で正直に明示します。
- MIT ライセンスのオープンソース SDK。共有台帳、受信トレイ、ポリシー、エクスポートを提供する有料クラウド。
設計ノート
製品の背景にある考えを公開しています:ビジョン · 製品 · ユニバーサルアダプター · アーキテクチャ · 市場 · 開発計画 · 決定事項 · フェーズ計画
系譜
Attest の中核となる仕組みは、実際に稼働している 2 つのコードベースから抽出されました。DO(ポリシーエンジン、読み戻し検証ペア、証拠台帳)と DeerFlow(ツールの実行記録、検証パターン、MCP とチャットチャネルのアダプター)です。これらは、実際の Gmail、Slack、HubSpot、Notion、Linear、Google Workspace を対象に動作します。Attest はこれらのシステム向けに独自のライブテストスイートを tests/live/ に用意しています。実際の認証情報が必要で、認証情報がない場合はスキップされます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。