Abe について
Abeは、AIエージェントの操作を実行前に検査するローカルのオープンソースガードレールです。YAMLポリシーで評価し、ACT、BLOCK、ESCALATEの判定と監査可能な記録を返します。
主な機能
- 01ローカルでのポリシー検査
- 02ACT、BLOCK、ESCALATEの判定
- 03リプレイテスト対応のYAMLルール
- 04段階導入向けシャドウモード
- 05ハッシュ検証付き監査記録
- 06Python、TypeScript、CLI、HTTP、MCPに対応
活用シーン
- 01実行前の購入・支払い審査
- 02本番データベースやコードへの危険な操作の阻止
- 03保存済みリクエストによるポリシー変更のテスト
MCP 対応
Abeは`fjp_check_action`ツールを備えたMCPサーバーを提供し、MCPクライアントからポリシーに基づく操作評価を行えます。オプションのFlowによる解決は、エスカレーションされた操作のみを対象にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx abe-aiABE_POLICYAbsolute path to your abe-policy.yaml (create one with: uvx abe-ai init)ABE_RESOLVERSet to flow to send escalations to Flow (needs FLOW_API_KEY). Default: none, nothing leaves your machine.FLOW_API_KEYシークレットFlow Resolver key (fjp_live_...), only with ABE_RESOLVER=flow. https://fjp.flowinfo.co/creditsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Abe

実行。ブロック。エスカレーション。
Abeは、すべてのAIエージェントのアクションを実行前にチェックする、無料のオープンソースのガードレールです。
エージェントが請求書を支払う、サーバーを購入する、テーブルを削除する、顧客にメールを送信する直前に、Abeはお使いのルールに照らしてアクションを1ミリ秒未満でチェックし、ACT、BLOCK、**ESCALATE**のいずれかを返します。理由を示す改ざん検知可能な記録も残ります。
▶ 40秒のデモを見る:AIエージェントが12,500ドルを2回支払おうとします。簡単な判断はルールが行い、Flowが重複を検知し、実際の更新を承認します。(自分で実行する)
無料。本当に無料です。
Apache-2.0です。**アカウント、APIキー、ネットワーク、モデル、使用制限は不要です。**すべてのチェックはお使いのマシン上で実行され、永久に無料です。
チームがエージェントの前にAbeを導入する理由
- 高額なミスを防止:二重支払い、予算超過の購入、
mainへの強制プッシュ、本番環境でのDROP TABLE。 - いつでも同じ結果:読みやすく、テストでき、本番適用前に過去の判断に対して再実行できるプレーンなYAMLルールです。
- 監査人向けの証拠:すべての判断について、発動したルールとその理由を示すハッシュ検証済みの記録が作成されます(任意でEd25519署名を付けられます)。
- あらゆるエージェントに対応:Python、TypeScript、ローカルHTTPサイドカー、Docker、MCP(Claude、Cursor、その他のMCPクライアント)。
- リスクのない導入:シャドーモードは現在の承認プロセスと並行して実行され、Abeがどのように判断するかを示します。
- フェイルクローズ:不正な入力や壊れたルールに対しては
ESCALATEを返し、ACTは決して返しません。
判断に迷う場合のみ支払う(任意)
ルールで判断できない場合、AbeはESCALATEを返します。デフォルトでは人に引き継がれます。--resolver flowを追加すると、そのアクションのみがFlowに送信され(匿名化済み)、Flowは判断、理由、およびその判断が誤りだと証明する方法を、1件あたり約0.03~0.05ドルで返します。ACTとBLOCKがマシンの外に出ることはありません。詳細は以下。
クイックスタート
pip install abe-ai # or: npm install abe-ai
abe init # writes abe-policy.yaml + request.json
abe check request.json
Decision: ESCALATE
Reason: FINANCIAL_THRESHOLD_EXCEEDED
Rules: purchase_review_limit
Risk: MEDIUM
Record: jgr_01M3Q4...
Python
from abe import Abe
abe = Abe("abe-policy.yaml")
result = abe.check(
action={"type": "wire_transfer", "amount": 50000},
context={"agent_id": "finance-agent"},
)
if result.decision == "ACT":
... # execute exactly as evaluated
elif result.decision == "BLOCK":
... # do not execute; tell the user result.reason_code
else: # ESCALATE
... # hold; ask a human, or let a resolver decide
result.record.to_dict() # the Judgment-Grounded Record (store it, ship it to your SIEM)
TypeScript
import { Abe } from "abe-ai";
const abe = new Abe({ policy: "./abe-policy.yaml" });
const result = await abe.check({
action: { type: "purchase", amount: 12500, currency: "USD" },
context: { agent_id: "procurement-agent", principal_id: "user_123" },
});
console.log(result.decision); // "ESCALATE"
ポリシー例
version: "0.1"
defaults: { unmatched: ESCALATE } # nothing matched -> needs judgment (fail closed)
rules:
- id: purchase_hard_limit
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 100000 } ] }
decision: BLOCK
reason_code: HARD_POLICY_VIOLATION
- id: purchase_review_limit
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 10000 } ] }
decision: ESCALATE
reason_code: FINANCIAL_THRESHOLD_EXCEEDED
- id: routine_purchase
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: lte, value: 500 } ] }
decision: ACT
judgment_required:
- action.type: terminate_employee
その他の機能:エージェントごとの認可、必須の証拠、リスクおよび不可逆性のしきい値、最低信頼度。
優先順位はBLOCK、ESCALATE、ACTの順です。不正な入力や壊れたルールに対してはESCALATE / EVALUATION_FAILUREを返し、ACTは決して返しません。
完全なリファレンス: SPEC.md。
強制する前にテストする
リプレイでは、ポリシーを実際のお金に適用する前に、保存済みのリクエストをポリシーに通して再実行します。それぞれのケースに担当者の判断をラベル付けすると、Abeは判断が異なる箇所を報告します。稼働中のポリシーと比較すれば、変更によってどの判断が変わるかを正確に確認できます。
# cases.jsonl: one request per line, or {"id": "inv-1042", "request": {...}, "expected": "BLOCK"}
abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml
# Replayed 1204 case(s) against ... ACT 1088 BLOCK 31 ESCALATE 85
# Changed vs baseline: 3 inv-1042: ACT -> ESCALATE [purchase_review_limit]
# Agreement with expected: 1198/1204 (99.5%)
abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml --fail-on-change # CI: exit 1 if anything moved
シャドーモードでは、Abeを現在の承認プロセスと並行して実行します。判断、結果、終了コードは強制モードで返されるものとまったく同じで、すべての記録に"mode": "shadow"とマークされます。これまでどおり承認を続け、担当者の判断を報告すると、各記録の反証条件によって判断が一致したかどうかがわかります。
from abe.stores import SQLiteStore
abe = Abe("abe-policy.yaml", mode="shadow", store=SQLiteStore("abe.db")) # or: abe serve --shadow · ABE_MODE=shadow
r = abe.check(action={"type": "purchase", "amount": 48000}, context={"agent_id": "ap-agent"})
# ... your existing approval happens ...
abe.record_outcome(r.records[0], "approved") # people approved; if Abe said BLOCK, the falsifier triggers
一致率が目標に達したら、mode="shadow"を削除してAbeによる強制を開始します。
実行方法
| ライブラリ | pip install abe-ai · npm install abe-ai |
| CLI | abe check · replay · validate-policy · validate-record · conformance · keygen |
| ローカル HTTP サイドカー | abe serve --policy abe-policy.yaml → POST http://127.0.0.1:8787/v1/check(任意の言語で利用可能) |
| Docker サイドカー | docker run -e ABE_TOKEN=… -v $PWD:/policy:ro -p 127.0.0.1:8787:8787 ghcr.io/flowinfosystems-index/abe |
| MCP サーバー | pip install "abe-ai[mcp]" → abe mcp --policy /abs/abe-policy.yaml(ツール:fjp_check_action) |
| + エスカレーション時の Flow | check、serve、mcp または Docker イメージで FLOW_API_KEY を設定し、--resolver flow(または ABE_RESOLVER=flow)を追加します |
監査可能なレコード
すべての呼び出しは、判定、一致したすべてのルール、正確なポリシーハッシュ、リクエストハッシュ、SHA-256 の record_hash(abe keygen で Ed25519 署名を付与することもできます)を含むレコードを返します。レコードが変更されることはありません。結果と解決内容は、リンクされたレコードとして追記されます。それぞれが有効な FJP-CONF v0.1 Judgment-Grounded Record です。
abe check request.json --record-out jgr.json --sign-key abe-signing-key.pem
abe validate-record jgr.json --public-key abe-signing-key.pub.pem
ルールだけでは不十分な場合:Flow
Abe は Flow がなくても役立つように設計されています。ESCALATE を返した場合、そのアクションをFlow の判断サービスに渡すことで、動詞、理由、反証可能なレコードを取得できます。
from abe import Abe
from abe_flow import FlowResolver # pip install abe-flow
abe = Abe("abe-policy.yaml", resolver=FlowResolver(api_key=os.environ["FLOW_API_KEY"]))
Python がなくても問題ありません。CLI、サイドカー、MCP サーバーでは同じリゾルバーを使用できます(pip install "abe-ai[mcp,flow]")。
{"mcpServers": {"abe": {"command": "abe",
"args": ["mcp", "--policy", "/abs/abe-policy.yaml", "--resolver", "flow"],
"env": {"FLOW_API_KEY": "fjp_live_..."}}}}
abe serve --resolver flow と docker run -e ABE_RESOLVER=flow -e FLOW_API_KEY=… … も同様に動作します。Flow のクレジットが不足している場合、MCP の結果にはその旨とチャージページへのリンクが表示されます。アクションは ESCALATE のままです。
ACT と BLOCK がマシンの外に出ることはありません。送信されるのはエスカレーションのみ(情報を秘匿化)です。Flow に接続できない場合、回答はそのまま ESCALATE になります。人間の承認が必要なエスカレーションが自動で解決されることはありません。
適合性
abe conformance --bench # FJP-CONF v0.1 Gate profile, Level 3 — 160 checks, offline
リポジトリ
SPEC.md the normative specification
schemas/ JSON Schemas (request, response, record, policy)
python/ abe-ai (PyPI): core, CLI, HTTP, MCP, stores, signing, conformance
typescript/ abe-ai (npm): same API, same records, same hashes
flow-resolver/ abe-flow (PyPI): Gate → Flow for ESCALATE only
conformance/fixtures/ golden decisions + canonical-JSON vectors shared by every SDK
examples/ the $12,500 demo, purchasing, software agent, physical agent, travel (+ Judd), Flow
Apache-2.0。FJP™、Abe™(Abe)、FJP-CONF™ は Flow Information Systems の商標です。詳細は TRADEMARKS.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
