decionis について
AgentSafeは、エージェントやアプリケーション、ツールとAPIの間に認可境界を設ける実行ゲートウェイです。重要なリクエストをDecionisに照会し、転送、保留、拒否を行い、その証跡を記録します。
主な機能
- 01重要なHTTPリクエストのインターセプト
- 02Decionisへの判定照会
- 03許可されたリクエストを一度だけ転送
- 04リクエストの保留または拒否
- 05連鎖する判定証跡の記録
活用シーン
- 01エージェントの決済リクエストの制御
- 02レコード削除時の承認要求
- 03強制適用前のシャドーモード実行
MCP 対応
MCPサーバーとして掲載されていますが、READMEは操作を制御するHTTPゲートウェイについて説明しており、クライアントに公開するMCPツールやリソースは記載されていません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://protocol.decionis.com/mcpclaude mcp add --transport http com-decionis https://protocol.decionis.com/mcp{"mcpServers":{"com-decionis":{"type":"http","url":"https://protocol.decionis.com/mcp"}}}Cursor で開く{"servers":{"com-decionis":{"type":"http","url":"https://protocol.decionis.com/mcp"}}}VS Code で開く{"mcpServers":{"com-decionis":{"type":"http","url":"https://protocol.decionis.com/mcp"}}}{"mcpServers":{"com-decionis":{"serverUrl":"https://protocol.decionis.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
AgentSafe
あらゆるエージェントや API の前に、権限境界を設けます。
AgentSafe は重大な操作をインターセプトし、転送する前に承認されているかを確認します。エージェント、アプリケーション、またはツールは、対象ではなく AgentSafe に HTTP リクエストを送信します。AgentSafe はその操作をインテントとして捕捉し、Decionis のコントロールプレーン(正確な操作に紐づけられた独立実行権限機関)に判断を求め、要求された単回使用の許可に基づいて承認済みのリクエストを正確に一度転送するか、人による確認のために保留するか、拒否します。それぞれの処理は連鎖した記録として残ります。AgentSafe 自体が判断を下すことはありません。
brew tap decionis/agent-safe https://github.com/decionis/agent-safe-pipeline && brew trust decionis/agent-safe && brew install agentsafe
agentsafe proxy \
--upstream http://localhost:3000 \
--port 8080
5 分で始めるクイックスタート · Homebrew · Linux · Docker · Kubernetes · ホステッド
エージェントの統合とデプロイガイド:ツール呼び出しの前にゲートウェイを配置し、オンプレミスにデプロイするか、Decionis が管理するシャドウゲートウェイに接続します。
デプロイ戦略:TLS イングレスを使用する Docker、Kubernetes、Istio、AWS および Azure のネットワーク分離、デプロイの受け入れ確認について説明します。
インストール用の各形式は、
v0.2.0以降、リリースワークフローによって生成されます。Homebrew のフォーミュラは、各リリース後に専用のプルリクエストを通じて master に反映されます。クイックスタートにあるとおり、クローンから同じコマンドを実行できます。
ここから先は簡単です。検出し、インストールし、境界をテストして、公開されているものを確認し、シャドウモードで実行し、強制し、デプロイします。
境界の背後にある2つのシステム
初めてここに来ると、3つの名前に出会います。このリポジトリはその1つです。ほかの2つは、このリポジトリには含まれない、連携先のサービスです。
- Decionis は、特定のアクションに結び付いた独立実行権限機関です。AgentSafe が問い合わせる制御プレーンに当たります。取得した1つのインテントについて、組織のポリシーを評価し、
ALLOW、ESCALATE、BLOCKのいずれかを返します。ALLOWには、リクエストの実行に使う一度限りの実行許可が付与されます。ESCALATEには必要な人間による手続きが伴い、すべての判断には、提案された内容、判断内容、その理由を記録する署名付きDecision Dossierが添付されます。decionis.com(ドキュメント)で稼働しています。このリポジトリにあるローカルのデモ用権限機関は、ループバック上で合成ポリシーを使ってその代わりを務め、すべての行でその旨を明示します。 - Presence は、適応型の人間による検証レイヤーです。Decionis が
ESCALATEを返した場合、本人確認済みの人が自身のデバイス上で、その特定のアクションを承認します。そこで生成される署名付き Presence Record は、Decionis が実行許可を発行する前に再確認する証拠であり、それ自体が権限となることはありません。presence.decionis.com(レイヤーの概要)で稼働しています。このリポジトリにあるループバック用の代替実装は、例のために手続きをシミュレートするもので、実際の手続きについて何も証明しません。 - AgentSafe(このリポジトリ)は、エージェントまたは API と上記2つのサービスの間にある実行境界です。正確なインテントを取得し、Decionis に問い合わせ、
ESCALATEを Presence で解決し、申告された許可を使って承認済みのリクエストだけを1回転送し、それ以外は保留または拒否して、連鎖した証拠を残します。Apache-2.0 ライセンスで、判断は行いません。OPEN-CORE.mdには、このリポジトリと Decionis が運用する機能との境界が記されています。
エージェントに通常与えられる2つのシステムを分けるのは、次の一文です。意思決定インテリジェンスは AI が何をしたいかを判断し、実行権限機関はそれが許可されているかを判断します。ここでの境界は、後者を提案者の身元ではなく、特定のアクションに結び付けます。なぜなら、現実的な攻撃者は偽造された認証情報ではなく、有効な認証情報を持つ存在だからです。つまり、身元は実在し、認証情報も有効でありながら、誰も承認していないリクエストを送るエージェントです。エージェントの速度と自律性が高まるにつれ、身元が権限の代わりとして機能する度合いは弱まります。Compromised Principal Testは、その失敗を、すべてのプルリクエストで境界が通過するテストとして定義したものです。1分以内に実行できる3つの方法と、それぞれが証明する内容も記載されています。THREAT-MODEL.mdでは、これを脅威として説明しています。
境界をテストする
ゲートウェイを何かの前に置く前に、何が変わるのかを確認しましょう。agentsafe test は、実際に届いた内容を記録する合成ターゲットに対し、影響の大きい同じリクエストを3通りで送信します。エージェントとして何にも妨げられずに直接送信する場合、シャドーモードでゲートウェイを経由する場合、そして強制モードでゲートウェイを経由する場合です。実際のものには一切アクセスせず、あなたのデータも読み取りません。
agentsafe test
direct shadow enforcement
A read reached 200 reached 200 reached 200 (not consequential)
A payment within policy reached 201 reached 201, would ALLOW ALLOW: forwarded once, 201, dossier
A payment above the human ceiling reached 201 reached 201, would BLOCK BLOCK 403, NOT FORWARDED
A payment above the autonomous ceiling reached 201 reached 201, would ESCALATE ESCALATE 202, HELD
Deleting a customer record reached 204 reached 204, would ESCALATE ESCALATE 202, HELD
A forged approval on a blocked payment reached 201, forged headers accepted reached 201, would BLOCK BLOCK 403, NOT FORWARDED
A consequential request the policy cannot read reached 201 reached 201, would ESCALATE ESCALATE 202, HELD
A payment while the authority is unreachable reached 201 reached 201, would decide nothing (authority unreachable) AUTHORITY UNAVAILABLE 503, NOT FORWARDED
with failurePolicy failOpen (explicit): reached 201, marked FORWARDED (fail-open, ungoverned)
Exposure 6 of 6 adversarial actions reached the target directly, 6 of 6 in shadow, 0 of 6 under enforcement
Work routine actions went through under enforcement, once each
Evidence 26 chained lines, verified
Caller the same on every row, and never the reason: the target took every direct request; the boundary decided on the action
Verdict BOUNDARY HOLDS
Next: agentsafe proxy --upstream <your service> --mode shadow, then --mode enforcement.
✓ boundary tested
テスト対象のゲートウェイは、同じリスナーの背後で agentsafe proxy が実行するものです。権限の判定にはローカルのデモポリシーを使います。agentsafe test ledger=ledger.internal:443 は、あなたのいる場所から実際の記録システムにも接続し、ゲートウェイを通さずに応答するかどうかを示します。これは、エージェントが迂回して到達できるかどうかの確認です。終了コード 0 は境界が機能していること、1 は露出していることを示します。--json はレポートを1行で出力します。リリースのスモークテストでは、パッケージ化されたすべてのバイナリでこれを実行します。重要なのは Caller の行です。上記では、誰が要求したかではなく、何を要求したかだけを理由に拒否されています。これが1つの表にまとまった侵害されたプリンシパルテストです。最後の行は、この実行が導入パスのどの段階にあるかを示します。
ワークスペースがある場合、agentsafe test --hosted は同じリクエストを、Decionis が判定するシャドーモードで、同じ合成ターゲットに送信します。そのワークスペースでDecionisに対して最初に統制されたアクションを実行し、影響の大きいリクエストごとに署名済みのDecision Dossierを1つ作成します。また、実行専用のキーで取得した最初のレコードを、その証明とともに表示します。agentsafe login --provision を使えば、アカウントを作成せずに1つのコマンドでワークスペースを生成できます。テストにかかる時間はローカルでのテストとほぼ同じです。
5分で始める
ここではアカウントは不要です。Decionisキーがない場合、ゲートウェイは同じプロセス内のループバックで、合成ポリシーを使ったローカルのデモ権限を実行し、そのことを各行に表示します。
agentsafe proxy --upstream http://localhost:3000 --port 8080
AgentSafe 0.7.0
Gateway http://127.0.0.1:8080
Upstream http://localhost:3000
Mode ENFORCEMENT
Authority local/demo (synthetic policy on loopback; not Decionis)
Failure fail-closed
Routes none named; every unsafe method is governed
Evidence not written; use --verbose or evidence.journalDir
Status READY
Waiting for consequential actions...
リクエストを1つ送信します。
curl -i -X POST http://127.0.0.1:8080/payments -H 'content-type: application/json' -d '{"amount": 500}'
ESCALATE
POST /payments
Action http.post
Decision ESCALATE
Reason HUMAN_APPROVAL_REQUIRED
Execution HELD
Dossier synthetic-dossier-1
Latency 4ms
呼び出し元には 202 が返され、アップストリームには何も届きません。{"amount": 50} は ALLOW となり、アップストリーム独自の応答の横にドシエIDを添えて、バイト単位でそのまま1回転送されます。{"amount": 5000} は BLOCK となり、転送されずに 403 が返されます。GET は変更されずに通過します。状態ごとに見出しがあり、ターミナルでは状態ごとに色も異なります。ALLOW、BLOCK、ESCALATE、SHADOW、AUTHORITY UNAVAILABLE です。--verbose を指定すると、連鎖した証拠の行が表示されます。agentsafe init は設定ファイルを書き込みます。agentsafe doctor は、統制の妨げになるものを示します。agentsafe login はDecionisキーに接続し、その後、同じゲートウェイがまずシャドーモードでDecionisに問い合わせるようになります。シャドーモードのゲートウェイには独自のシャドーレポートがあります。これまでアクションごとに、強制モードなら許可したか拒否したか、そしてその拒否のうち何件をアップストリームが送信済みとして受け入れたかを記録します。このレポートは agentsafe status が出力するほか、ゲートウェイの停止時と実行中の定期的なタイミングでも表示されます。最後に、強制モードを有効にする唯一のスイッチも示されます。agentsafe login --provision は、そのスイッチが指定する無料のDecionisワークスペースを生成します。クイックスタートには手順全体が、CLIリファレンスにはすべてのコマンドが記載されています。
仕組み
Agent / Application / Tool
│
▼
AgentSafe
ingress / interceptor captures the action as an intent (agent-safe.intent/1)
│
▼
Decionis Control Plane policy, ExecutionBinding, Presence, Decision Dossiers
│
ALLOW | BLOCK | ESCALATE
│
▼
AgentSafe claims the single-use grant, forwards the exact bytes once
│
▼
Target Service / API
│
▼
finalize COMMITTED | FAILED | INDETERMINATE, on the Decision Dossier
AgentSafe は、インバウンドの受け入れとインターセプト、アクションの抽出と正規化、判定結果の適用、転送前のクレーム、転送、効果の証拠、最終処理、フェイルセーフ動作、そしてローカルでの使いやすさを担います。Decionis は実行権限を担います。ポリシー評価、ALLOW / BLOCK /
ESCALATE、ポリシーのバージョン管理、ExecutionBinding のセマンティクス、Presence の検証、Decision Dossiers、および証拠と権限の検証です。AgentSafe は第 2 のポリシーエンジンではありません。ローカルデモ用の権限は Decionis のルートをループバックするダブルで、どこでも local/demo と呼ばれ、本番環境では拒否されます。
| 状態 | 発生したこと | 呼び出し元に表示される内容 |
|---|---|---|
ALLOW | グラントがクレームされ、正確なリクエストが一度だけ転送されました | アップストリームのレスポンスに加え、agentsafe-decision、agentsafe-dossier-id、agentsafe-execution |
ESCALATE | 人による対応のため保留されます。Presence がある場合、再開時に Decionis に再度問い合わせます | 202、execution: HELD、resume パス |
BLOCK | 拒否され、何も転送されません | 拒否の理由を記録したドシエを含む 403 |
AUTHORITY_UNAVAILABLE | Decionis に問い合わせできません。フェイルクローズでは拒否し、フェイルオープンでは未統制のまま転送して記録します | Retry-After を含む 503。BLOCK にはなりません |
SHADOW | Decionis が下すはずだった判定を記録する間、変更せずに転送されます | アップストリームのレスポンス、agentsafe-mode: SHADOW |
何がバインドされて転送されるか、また各結果がどのように最終処理されるかについては、
docs/gateway/http-interception.md を参照してください。権限に到達できない場合の動作については、docs/gateway/failure-policy.md を参照してください。優先順位フラグ、環境、ファイル、デフォルト値を備え、すべての配布形態で共通の単一スキーマを使う設定については、docs/gateway/configuration.md を参照してください。ルートのオプションである
policyId または policyVersion は、公開済みの Decionis ポリシーを選択し、アクションのトップレベルパラメーターにバインドされます。その action は、ルールが照合するトランザクションを指定します。これらのセレクターはオペレーター設定から取得され、呼び出し元の本文から取得されることはありません。ゲートウェイは宛先として指定され、ワークロードから接続されます。agentsafe intercept は、ワークロードを設定せずに同じ境界を維持します。ネットワーク層でポッドまたはコンテナーのアウトバウンド 80 と 443 を AgentSafe にリダイレクトし、到達したすべての宛先を報告するとともに、オペレーターが指定した宛先を、ワークロードが信頼する権限のもとで統制します。
docs/gateway/transparent-interception.md では、何が監視され、何が統制され、権限にどのようなコストがかかるかを説明しています。
インストール
1つのランタイムを、5つの方法で実行できます。実行可能ファイル、パッケージ、イメージ、チャートは、同じコードからリリースワークフローによってビルドされ、スモークテストされています。権限、バインド、要求、確定のいずれにも違いはありません。
| 場所 | 方法 | ページ |
|---|---|---|
| macOS | brew tap decionis/agent-safe https://github.com/decionis/agent-safe-pipeline && brew trust decionis/agent-safe && brew install agentsafe | macOS |
| Linux | curl -fsSL https://raw.githubusercontent.com/decionis/agent-safe-pipeline/master/packaging/install.sh | sh、または強化された systemd ユニットを使用する .deb / .rpm | Linux |
| Docker | ghcr.io/decionis/agentsafe:<version>。docker.io/decionis/agentsafe:<version> と同じダイジェストです。ディストロレスで、非 root、2つのアーキテクチャに対応しています | Docker |
| Kubernetes | helm install agentsafe oci://ghcr.io/decionis/charts/agentsafe。1つの Service の前段に1つの Deployment を配置します | Kubernetes |
| ホステッド | {id}.decionisedge.com。同じランタイムを、Decionis がオンボーディングしたテナント向けに運用します。テナント自身のゲートウェイ上で適用する(プライベートベータ)か、シャドウモードで実行します。セルフサービスでのサインアップはまだ利用できません | ホステッド |
| ソースから | git clone、pnpm install --frozen-lockfile、pnpm build、node packages/agentsafe/dist/Cli.js | クイックスタート |
どのインストールページも、最初のガバナンス対象アクションを送信するところで終わります。
ワークフローゲートの Govern は、各プラットフォーム向けの静的バイナリとして同じリリースに含まれます。curl -fsSL https://raw.githubusercontent.com/decionis/agent-safe-pipeline/master/govern/install.sh | sh、同じ tap からの brew install govern、または go install github.com/decionis/agent-safe-pipeline/govern/v2/cmd/[email protected] を使用できます。
README に残りの情報があります。
ゴールデン敵対的デモ
正当な経路を1つ、同じ境界に対する敵対的な試みを8つ。オフラインで数秒のうちに実行し、すべての期待値を検証します。
git clone https://github.com/decionis/agent-safe-pipeline.git && cd agent-safe-pipeline
pnpm install --frozen-lockfile
pnpm --filter @decionis/agent-safe-example-golden-adversarial demo
トレジャリーエージェントが25万米ドルの電信送金を提案し、リモートの最高リスク責任者がFIDO2とライブネス確認を組み合わせた認証を完了すると、電信送金がちょうど1件実行されます。注入された認可フィールド、偽造されたALLOW、承認済みとの主張、差し替えられたレシート、承認後の金額変更、リプレイされた許可、25件の並行要求、シャドーオブザベーション、期限切れの許可は、いずれも実行されません。この条件が満たされた場合に限り、実行は0で終了します。examples/golden-adversarial-demo、銀行向けの解説であるdocs/remote-cro-authorization.md、およびレシートのセマンティクスを説明するdocs/presence-evidence.mdを参照してください。
インフラストラクチャについて、そして認証情報のチェックでは検出できない敵対者についても、同じ証明を示します。
pnpm --filter @decionis/agent-safe-example-infra-scale demo
有効なIDと認証情報を持つインフラストラクチャエージェントが、prod-eu内のinferenceに対して96レプリカのdeployment.scaleを提案し、許可されます。同じエージェントが、何も偽造せずに、その後960レプリカ、権限範囲外のサービス、別のクラスター、認可後に960へ差し替えた96の判断、512に対して提示された256の承認、リプレイされた許可、クラスターへの直接呼び出しを提案しますが、何も実行されません。権限がIDではなく、正確なアクションに紐づけられていたためです。examples/infra-scale-demoと侵害された主体テストを参照してください。
そして、主体は誠実でありながら、判断からコミットまでの間に状況が変化する場合に対応する例です。
pnpm --filter @decionis/agent-safe-example-changed-conditions demo
デプロイエージェントのキューに入ったカナリアデプロイは、読み取ったパスの設定変更、拡大したターゲットグループ、残り1単位の許容量をめぐって競合する2つ目のロールアウト、取り消された変更承認、ポリシーのリリース、本番環境として再分類されたセキュリティグループに遭遇します。許可はリプレイされ、差し替えられ、別の組織に持ち込まれ、さらにエージェントは自身の上限を引き上げようとします。これらはすべてコミット時に拒否されます。一方、正当なケース(更新、同じIDでの安全な再試行、修復後に再認可された作業)はそれぞれちょうど1回完了し、確認応答の消失も2回目の送信を行わずに照合されます。agentsafe testの背後にある記録用ターゲットは、到達したリクエストをカウントします。許容量は、デプロイAPIがコミットごとに新しいバージョンを割り当てる実質的なシグナルであるため競合は拒否されます。また、許容量がコミット時ではなくコミット後に公開される場合は、権限もこれを許容量として保持し、許可とともに予約してコミット時にカウントするため拒否されます。examples/changed-conditions-demoと状況変化テストを参照してください。
実行ライフサイクル
重大な操作については、すべての配布形態で、ライブラリ内でも同様に、次のとおりです。
request → normalize intent → enforce-and-bind → ALLOW | BLOCK | ESCALATE
ALLOW → claim-token → forward the exact authorized action, once → capture effect → finalize-token
COMMITTED | FAILED | INDETERMINATE
BLOCK → nothing is forwarded
ESCALATE → nothing is forwarded → Presence, or a managed ceremony Decionis runs → signed approval
evidence → Decionis reauthorization → a new grant → claim → execute once → finalize
ESCALATE がローカルで ALLOW に変更されることは決してなく、Decionis による再認可なしに Presence の承認が信頼されることもありません。docs/authority 以下のページでは、各ステップをプロトコルに対応付けています。ExecutionBinding、claim and finalize、Presence、evidence、およびこれらの記録とエージェントのアクションに関する SCITT のドラフトとの関係については、SCITT statement profiles をご覧ください。プロバイダー側の手順、つまり、記録システムまたはその手前のホップが、権限側で要求されていない内容を拒否する手順については、Verifying Provider Profile をご覧ください。このプロファイルには、あらゆる実装で実行できる vectors と、それらを実行する独立した検証ツールが含まれています。対象は、Envoy ext_authz と Kong、Spring と Apigee、tower レイヤーを備えた Rust サービス、および ASP.NET Core です。要求を検証したプロバイダーは、その操作結果を独自に署名したレシート(VP-3)で応答できます。実行側は最終確定時にそのレシートを読み取らずに転送し、Decionis は組織がプロバイダー用に登録した鍵で検証して、コミットとともに記録します。これにより、記録には実際に起きたことに対するプロバイダーの署名が含まれ、実行側の報告だけに頼ることはありません。
本番環境での不変条件
- エージェント入力には、提案されたアクション、対象、およびパラメーターのみが含まれます。テナント、アクター、下流の対象、および認証情報は、信頼されたランタイム構成から取得されます。
- 正確な正規化済みインテントがハッシュ化され、短時間で期限切れになります。
- Decionis が独立して判断します。ネットワークエラー、不正な形式の応答、付与の欠如、またはバインディングの不一致が発生した場合は、フェイルクローズします。
- Presence は、人間がその正確なインテントを承認したことを証明します。Presence が実行を直接認可することはありません。Decionis はレシートを検証し、ポリシーを再評価します。
- 許可はインテント、判断、オーディエンス、および有効期限にバインドされ、ハンドラーの実行前にアトミックにクレームされます。その後、権限側で試行結果がエビデンスとして最終確定されますが、権限そのものとして扱われることはありません。
- 下流の認証情報は、信頼された実行側の内部にのみ存在します。
- すべての判断にはエビデンスが伴います。レスポンスにドシエ識別子または許可が含まれない
ALLOWは、実行不可として拒否されます。また、実行結果には、消費済みの{decisionId, dossierId, grantId}バインディングが保持されます。ドシエ識別子が実行用の認証情報になることはありません。
プレゼンス
適応型の人間認証レイヤーであるPresenceは、明示的な統合レベルを2つサポートしています。DIRECT モードでは、信頼された実行主体が Presence を調整し、レシート参照を Decionis に返します。MANAGED モードでは、実行主体が Decionis に Presence のオーケストレーションを依頼し、終端ステータスになるまで Decionis をポーリングします。どちらのモードでも、独立して署名された Presence の証拠、意図との厳密な照合、最新ポリシーによる再評価、および同じクレーム前ハンドラー付与経路が必要です。招待の配信と Presence の証拠は、いずれも実行権限にはなりません。また、承認によって5分間の有効期限が切れた意図が復活することもありません。
ゲートウェイは ESCALATE を保持し、presence.managed: true の場合は Decionis に認証手続きをオーケストレーションするよう依頼します。/_agentsafe/v1/escalations/{intent_id}/resume を通じた再開時にも、Decionis に再度依頼し、新しい ALLOW と付与が得られた場合に限り、保留中のリクエストを一度だけ実行します。docs/authority/presence.md では、レシートによって証明されることと、証明されないことを説明しています。docs/human-approval.md と docs/presence-evidence.md はプロトコルの説明ページです。
実際のダウンストリーム API を統合する前に、docs/trust-boundary.md を参照してください。
意思決定の証拠
要約では混同されやすい重要な記録が5つあります。取得された意図、人間による承認の検証、実行許可、Decision Dossier、および結果です。何かを一度だけ許可するのは実行許可だけです。ドシエ識別子は実行資格情報ではありません。各記録が証明することで、行ごとに説明しています。
Execution Authority アーキテクチャを支える重要な特性は2つあります。実行経路上に位置することで制御が生まれます。アクションの実行時に独立した意思決定がなければ、何も実行されません。証拠記録によって説明責任が積み重なります。決定のたびに、何が、どのポリシーのもとで、誰の承認を受けて許可されたかを監査可能な履歴に追加します。
Decionis によるすべての評価は Decision Dossier として記録され、各 DecisionGate はその記録の decisionId と dossierId を返します。エスカレーションには検証済み Presence の receiptDossierId が紐付き、実行された各アクションは、消費された許可の {decisionId, dossierId, grantId, intentHash} バインディングを返します。そのため、追加の記録管理なしで、実行結果を証拠と関連付けられます。研究分野の用語では、ドシエは Decision Chain として積み重なります。これは、ワークフローをまたいで評価、承認、実行の証拠を結び付ける、改ざんを検知できる履歴です。Decionis がこの記録を管理し、このリポジトリが担うのは、実行がその記録を回避できないようにすることです。
ドシエ識別子は監査とサポートの参照情報として扱い、実行資格情報としては扱わないでください。詳しくはdocs/decision-dossiers.mdを参照してください。
各記録が証明すること
流暢な要約では、こうした違いが真っ先に失われます。各行では、記録または状態、その記録または状態が証明すること、証明しないことを示します。
| レコードまたは状態 | 何を立証するか | 何を立証しないか |
|---|---|---|
捕捉された意図(IntentCapture、intentHash) | エージェントが提案した正確なアクション、対象、パラメーターを、信頼されたテナント、アクター、下流コンテキストに結び付け、ハッシュ化して有効期限を設定したものです | エージェントの事実認識、身元、金額が正しいこと、または何かを実行できること |
検証済みの人間による承認(Presence の receiptDossierId) | レシートに記録された保証レベルの下で、特定の人物がその意図ハッシュを承認したことです | 実行権限ではありません。Decionis はレシートを使ってポリシーを再評価し、その評価によってのみ許可を発行できます |
実行許可(ALLOW の authorization) | 1 つの意図に対する 1 回の試行に限った許可です。ハンドラーの実行直前に AuthorizationVerifier を通じて一度だけ使用できます | 有効期限後、別の意図ハッシュに対する使用、または 2 回目の提示は許可されません。ドシエ識別子、招待リンク、以前の ALLOW は代わりになりません |
Decision Dossier(decisionId、dossierId) | Decionis が許可、エスカレーション、またはブロックした理由の記録です。ポリシーのスナップショット、入力、証拠、許可のメタデータが含まれます | 実行資格情報ではありません。また、基礎となるビジネス上の判断が正しかったことの証明でもありません |
単一の使用、COMPLETED | 許可が一度使用され、信頼されたハンドラーがプロバイダーの結果を返したことです | 下流でのビジネス効果が確実に一度だけ発生したことや、決済が独立して確認されたことではありません。観測結果を CONFIRMED とみなすかどうかは権限者の判断であり、このパッケージが決めることではありません |
UNKNOWN_AFTER_DISPATCH、最終状態 INDETERMINATE | ディスパッチが開始されたものの、完了を証明できなかったことです | 副作用を再度発生させる許可ではありません。再ディスパッチは決して行わず、プロバイダーの冪等性と読み取り専用の照会を通じて照合してください |
DEFINITELY_NOT_EXECUTED、最終状態 FAILED | ディスパッチが開始され、プロバイダーが決定的に拒否し、何も実行されなかったことです | 再試行する許可ではありません。この拒否は今回の試行に関するものであり、再試行には新たな判断と新たな許可が必要です |
シャドー観測(ShadowPipeline、mode: "SHADOW") | すでに実行されたアクションについて Decionis が下したであろう判断です。評決とドシエが含まれますが、許可は含まれません | 強制適用、許可、または書き込みのないテスト環境ではありません。従来どおり本番環境で書き込みが行われています |
| ライブラリの境界(このパッケージ) | 信頼された統合環境内での意図の捕捉、ゲート、検証、ハンドラー実行前の使用です | ホストの分離、IAM、ネットワークの送信制御、認証情報の保存、インシデント対応は含まれません |
信頼された実行環境(createTrustedExecutor) | 1 つのプロセスが自らについて検証し、独自の入口で強制する内容です。ホストの状態 HostPosture が観測できる範囲、ロールとそれぞれの認証情報を持つ呼び出し元プリンシパル、EgressPolicy の設定対象オリジンに送信先を限定する封印済みの送信制御、StartupReconciler が照合する永続的な試行ジャーナル、HardLimits の上限、BEAP 語彙の効果証拠、HaltSwitch、およびオフラインで検証可能なエクスポートを備えたハッシュチェーン付き証拠です | Node またはカーネルによる分離、キットが宣言する NetworkPolicies を実際に強制する CNI、HSM または KMS、権限者のポリシー、銀行のコアシステムの正確性は保証しません |
実行環境の証拠バンドル(agent-safe.evidence-bundle/1) | 1 つの実行環境プロセスがインシデントについて提示できる情報です。保持している 2 つのハッシュチェーン付きストリーム、未完了の試行、チェックごとの状態、チェーンヘッド、設定ダイジェスト、各ファイル固有のダイジェストが含まれます | 署名をマニフェストに付与し、読み手が持ち込んだ鍵で検証できない限り、出所は保証されません。また、保持するのは上限付きの期間分で、破棄した行数を示すため、完全性も保証されません。さらに、パラメーター、プロバイダーの本文、秘密情報、それらのダイジェストは含まれません |
判定ドシエの検証
リポジトリ管理下のdossiers/コーパスでは、オフライン検証ツールを、合成された
ALLOW、BLOCK、ESCALATEの証明バンドルで検証します。これには、所有ワークスペースと実行に紐づく
ベクトルも含まれます。コーパスの再生成を誰でも行えるよう、秘密署名鍵は意図的に公開されています。これは
本番用の認証情報ではなく、本番ドシエの真正性を証明するものではありません。
pnpm exec decionis-verify \
--file dossiers/vectors/allow.json \
--jwks dossiers/corpus-jwks.json
本番環境での異なる主張を検証するには、認可された経路でライブドシエを取得し、ドシエをコミットせずに、 ライブJWKSに対してピン留めされた検証ツールを実行してください。
npx -y @decionis/[email protected] \
--file /absolute/path/to/live-decision-dossier.json \
--jwks https://api.decionis.com/v1/.well-known/decision-dossier-jwks.json
再生成、来歴、想定される失敗、合成適合性検証と本番検証の間の信頼境界については、 コーパスのREADMEを参照してください。
同じオフライン検証のインテント側はagentsafe verify intentです。インストール済みランタイムによって、
conformance/内の各ベクトルがバイト列から再現されるか、独自のバインディングの
正規バイト列とハッシュが出力され、別の実装と比較できます(
Agent-Safe Intent v1)。
agentsafe verify intent conformance/vectors conformance/agent-safe-intent-v1.json
アーキテクチャ
Untrusted Trusted control plane
Agent proposal runtime identity/config
| |
+--------------> IntentCapture <----------+
|
canonical intent hash
|
DecionisGate
/ | \
ALLOW ESCALATE BLOCK
| | |
| Presence stop
| |
| verified receipt
| |
+--- Decionis re-evaluation
|
single-use grant
|
SafeExecutor
|
sealed trusted ActionRegistry
|
downstream credential
このリポジトリでは、ライブラリ@decionis/agent-safe-pipelineと、その上に構築されたランタイム
@decionis/agentsafeを提供しています。単一のバイナリに2つの入口があります。1つは前述のHTTPインターセプト
ゲートウェイであるagentsafe proxy、もう1つは、プリンシパル、ダウンストリーム認証情報、検証済みのホスト
ポスチャー、およびデプロイキットを備えた、銀行の境界向け信頼済みエグゼキューター
agentsafe serveです。どちらも同じライフサイクルオブジェクトを実行します。ディスカバリーレポート
では、1つのアクションを通じて両者をたどり、ADR 0001
では、ゲートウェイが2つ目の入口であり、2つ目の実装ではない理由を記録しています。これらはいずれも、
ホスト型認可サービス、IDプロバイダー、KMSではありません。また、キットとチャートで宣言したネットワーク
ポリシーをクラスターに強制させるプロセスもありません。各制御の責任者
に、それぞれの担当が示されています。
正規のソース:https://github.com/decionis/agent-safe-pipeline。このリポジトリの他のホストにあるコピー(github.com全体をリバースプロキシするサイトを含む)はDecionisによる保守対象ではなく、セキュリティ修正の反映が遅れており、npmパッケージ、Zenodoレコード、decionis.comが参照するものでもありません。コピーは、署名済みリリースタグ(docs/release-tag-signing.md)と照合して検証してください。
ライブラリ
要件:Node.js 22.14以降、pnpm 9。
git clone https://github.com/decionis/agent-safe-pipeline.git
cd agent-safe-pipeline
pnpm install --frozen-lockfile
pnpm --filter @decionis/agent-safe-example-basic demo
デモでは、本番環境向けではないフィクスチャ認証局を明示的に使用します。本番環境との統合では、サーバー側の認証情報とともにDecionisGateおよびDecionisGrantVerifierを使用します。
const captured = intentCapture.capture(agentProposal, trustedContext);
const decision = await gate.evaluate(captured);
const result = await executor.run(captured, decision);
エグゼキューターが受け取るのは、キャプチャされたインテントと判定です。エージェントから任意のコールバックを受け取ることはありません。封印されたActionRegistryは、アクション名を信頼済みハンドラーにマッピングし、単回使用の許可を消費する前にパラメーターを検証します。
オプション:Decionis が署名した Decision Dossier
上記はすべてローカルで実行され、今後もそのままです。フィクスチャの権限機関はプロセス内で評価を行い、ネットワークへの接続もアカウントも不要です。この方法は引き続きサポートされます。これは試用版でも機能を制限したプランでもなく、この手順を一度も行わなくても、このリポジトリ内の機能はすべて動作します。
ローカルの方法では、ある決定を他者に証明することはできません。変数を1つ設定すると、すべてのサンプルでフィクスチャと並行して同じ意図を Decionis に評価させ、最後に権限機関だけが生成できるもの、つまり提案内容、決定内容とその理由を記録した、署名付きの Decision Dossier を取得します。その Ed25519 署名は、アカウントなしでオフラインでも、権限機関が公開している鍵を使って検証できます。
DECIONIS_HOSTED=1 pnpm --filter @decionis/agent-safe-example-basic demo
鍵がない場合、実行時に鍵が作成されます。登録もメールアドレスもクレジットカードも不要な、無料の暫定ワークスペースが POST https://api.decionis.com/v1/public/agents/provision から発行されます。月50件のガバナンス対象の決定が利用でき、~/.config/agentsafe/credentials.json に保存されるため、次回の実行でも同じ鍵が使われます。初回の実行では、標準エラー出力にその旨が表示されます。
decionis: provisioned a free workspace 7f0c3a5e-... (provisional, no account; 50 governed decisions a month)
decionis: key stored at /home/you/.config/agentsafe/credentials.json; the next run reuses this workspace
その後、以前とまったく同じ内容が出力され、最後に次の内容が表示されます。
verdict: BLOCK
decionis: ALLOW (SHADOW, recorded beside the local verdict)
- POLICY_AUTONOMOUS_LIMIT
dossier: 6b2e5c1e-4b3a-4f0e-9c6d-2a1f7e8d9b0c
verify it yourself, no account needed: pnpm decionis:verify 6b2e5c1e-4b3a-4f0e-9c6d-2a1f7e8d9b0c
signed dossier: 6b2e5c1e-4b3a-4f0e-9c6d-2a1f7e8d9b0c (14211 bytes, ALLOW)
Ed25519 by key decionis-dossier-2026-09 at 2026-09-18T01:02:03.000Z, 3 signed artifact(s)
issuer: provisional_anonymous (a workspace without an account; claim it to keep it)
権限機関が決定に検証ページを付与すると、もう1行追加され、そのページの URL が表示されます。誰でもアカウントなしで開き、署名の検証結果を確認できます。pnpm decionis:verify <id> を実行すると、保存済みの鍵を使ってレコードを取得し、レコードに記載された公開 JWKS を解決して、署名付きの各アーティファクトを @decionis/verify で検証します。このパッケージは Node に組み込まれた crypto のみを使用します。検証結果、レコードを発行した主体、および VERIFIED または NOT VERIFIED が表示されます。署名付きレコードを保存するには --out dossier.json を追加してください。そのファイルを持っている人なら誰でも、Decision Dossier の検証に記載されたコマンドで、鍵を使わずに検証できます。
暫定鍵で行う評価は SHADOW のみです。実行を制御するのは引き続きフィクスチャの判定で、ホストされた決定とその Dossier はその隣に記録されます。暫定鍵で生成されるすべての Dossier には、署名付きの provisional_anonymous 発行者ティアが含まれるため、検証者は所有者のいる組織のレコードと常に区別できます。ワークスペースをクレームすると(方法はレスポンスに記載されています)、ユーザーが関連付けられ、鍵と台帳はそのまま引き継がれます。Decionis コンソールまたは agentsafe login で発行した、所有者のいる組織の鍵では、ENFORCEMENT を含め、希望するモードを指定できます。
各サンプルの動作は次のとおりです。basic-agent、shopify-refund-agent、github-deploy-agent、mcp-tool-gate、procurement-agent は、それぞれ1つの提案をフィクスチャと並行して評価します。golden-adversarial-demo、whisper-boundary-demo、crm-outreach-demo、infra-scale-demo、local-escalation は、設計上、敵対的な試行をローカルで実行し、最後に Decionis でゴールデン提案を評価します。changed-conditions-demo はループバックのダブルのみを使って実行します。変更対象(ポリシーのリリース、公開シグナル)は権限機関自身の状態であるためです。trusted-executor は、Decionis に対するシャドウ実行として、エグゼキューターのプロセスをもう一度実行します。2つの Presence サンプルは、承認者が登録された所有者のいる組織を必要とします。暫定ワークスペースを指定すると、その旨が表示されます。staged-change-demo はループバックの権限機関のみを使って実行します。ホストされたプランのステップを実行するには、まず Decionis にプランを登録する必要があるためです。
配線方法
packages/pipeline の createHostedGate は、環境変数を読み込み、サンプルが実行する権限機関と検証ツールを返します。
| 変数 | デフォルト | 効果 |
|---|---|---|
DECIONIS_HOSTED | 未設定 | 1:キーがない場合は、保存済みの認証情報を使用します。認証情報もない場合は、実行時に無料の暫定ワークスペースを作成し、次回に備えて保存します。ホスト評価は SHADOW で実行されます。 |
DECIONIS_API_KEY | 未設定 | 未設定の場合:フィクスチャのペアを使用し、従来と同じオブジェクトを使い、クライアントは構築されません。設定されている場合:DECIONIS_HOSTED の設定にかかわらず、フィクスチャと並行して DecionisGate が実行されます。 |
DECIONIS_TENANT_ID | キーとともに必須 | キーの組織です。Decionis はすべてのインテントをこの組織に紐付けるため、例では合成テナントではなく、この組織の下でキャプチャされます。 |
DECIONIS_MODE | SHADOW | SHADOW:実行は引き続きフィクスチャの判定に従い、ホスト側の判定とドシエが記録されます。ENFORCEMENT:ホスト側の判定に従い、Decionis で許可を取得します。フィクスチャは制限をさらに厳しくする場合にのみ作用します。 |
DECIONIS_API_URL | https://api.decionis.com | HTTPS のみです。ステージング、または DECIONIS_ALLOW_INSECURE_LOOPBACK=true を設定したループバックのダブルに使用します。 |
DECIONIS_TIMEOUT_MS | 4000 | ホスト側呼び出しの制限時間です。これを超過した呼び出しは、フェイルクローズとして記録されます。 |
ホストモードはフェイルクローズで動作します。タイムアウト、ネットワークエラー、2xx 以外のレスポンス、契約で定義された判定ではない本文、契約で定義されていない判定、別のインテントに対する判定、または評価前に期限切れとなったインテントは、ホスト側で許可なしの BLOCK として記録されます。SHADOW ではこれが記録される一方、引き続きフィクスチャの判定に従うため、キーを設定しても正常に動作するフォークの挙動は変わりません。ENFORCEMENT では脅威モデルの要件どおりブロックされます。どちらのモードも、フィクスチャのみの場合より制限が緩くなることはありません。このマトリックスは
ShadowGate.test.ts で、各失敗モードは
FailClosed.test.ts で検証されています。
プロセスの外に送信されるのは、キャプチャされたインテントだけです。つまり、エージェントが提案したアクション、対象、パラメーターと、信頼された設定から提供されたテナント、アクター、下流の対象、期限、コンテキストです。これはインテントハッシュの対象となる同じ ExecutionIntentBinding で、それ以外は送信されません。認証情報はエグゼキューターの背後に保管され、インテントに含まれることはありません。リクエスト本文の各フィールドは
FailClosed.test.ts で固定されています。
さらに、すべてのホスト側呼び出しには、このパッケージ名とバージョンを示す User-Agent が付加されます。例からの呼び出しでは、上流リポジトリのスラッグと例の名前も含まれます。これにより、Decionis はキーが最初に使用された例を集計できます。これがすべてです。ヘッダーが送信されるのはキーが設定されている場合のみで、判定入力にもドシエにも含まれません。また、source を渡さないインテグレーションでは、パッケージ名とバージョンのみが送信されます。
元に戻すには、キーを削除してください。それだけです。
フィクスチャからDecionisへ
このパッケージは3つの段階で使用します。各段階で同じIntentCapture、ActionRegistry、ハンドラーコードを使用するため、段階間で書き直す必要はありません。
| 段階 | 権限 | 検証できること |
|---|---|---|
| 開発 | createFixtureAuthorityPair(NODE_ENV=productionでは拒否) | インテント、レジストリ、エグゼキューターの配線が正しいこと |
| シャドウ | mode: "SHADOW"を指定したDecionisGate上のShadowPipeline | すでに実行されているアクションについて、Decionisがどのような判断を下したか。グラントは発行されません |
| 強制適用 | SafeExecutor内のDecionisGateとDecionisGrantVerifier | 独立した判断があり、単一使用のグラントが消費されない限り、何も実行されない |
Decionisの認証情報は、信頼されたエグゼキュータープロセスにのみ配置し、エージェントのランタイムには決して配置しないでください。
DECIONIS_API_URL=https://api.decionis.com
DECIONIS_API_KEY=server-side-secret
強制適用の完全な例はパッケージのREADMEを、シャドウから段階的に移行する手順はdocs/shadow-mode.mdを参照してください。設定だけで例を段階間で移行する方法については、任意:Decionisの署名付きDecision Dossierを参照してください。
境界をインプロセスではなく独立したサービスとして実行する場合、packages/agentsafeにあるエグゼキューターがプロセスとして動作します。これは@decionis/agentsafeであり、同じコンポーネントの前段でリクエストを受け付け、ハンドラーを接続するための差し込み口を備えています。examples/trusted-executorは、ループバックのダブルに対して実際のHTTP通信で動作を検証する例であり、導入者が出発点にできるテンプレートです。deploy/には、そのイメージ、認証情報をすべて参照するだけで書き込まない2つのゾーン用Kubernetesマニフェスト、およびシャドウから強制適用に移行するためのランブックがあります。
研究と仕様
Decionis ResearchはExecution Authorityアーキテクチャを定義し、このリポジトリはそれを実行・テスト可能なコードとして実証し、Decionisプラットフォームはホスト型の権限として運用します。来歴の連鎖は、研究論文 -> プロトコル契約 -> リファレンス実装(このリポジトリ)-> 本番サービスです。
公開済みの研究:
- Jejelowo, Festus. 「The Execution Verifiability Gap: Why Model Governance Cannot Authorize Consequential Actions.」Decionis Research、バージョン1.0、2026年8月21日。正規版の記事 · 保存用PDF · 研究インデックス。
プロトコルのプロファイル:Banking Execution Authority Profile(BEAP)は、このアーキテクチャを銀行の支払い、支払処理、または限度額の引き上げに適用します。具体的には、実行ドメイン、正規の銀行指示、バッチのバインド、複数当事者による承認、効果の証拠を扱い、そのリファレンスランタイムは@decionis/agent-safe-pipelineを基盤としています。BEAP v1.0は2026-09-15に公開されました。これはDecionisが公開・実装するプロファイルであり、いかなる団体も承認した標準ではありません。0.1ドラフトは凍結され、profiles/beap/v0.1にミラーされています。そのランタイムの半分はここにあり、残り半分はありません。プロファイルのセクション24.5では、リファレンスTrusted Executorとして@decionis/agentsafeを指定しています。これが実装するエグゼキューター側のサブセットはdocs/beap-conformance.mdに記載されています。一方、権限側の部分であるポリシー、グラント、ドシエ、L1およびL2の要件は、このリポジトリには含まれておらず、実装しているとも主張していません。リファレンスとして指定されていることは適合性の主張ではなく、適合性の主張は一切していません。エグゼキューターは1.0の識別子を実装しており、プロファイルの他のランタイムとともに移行しました。
ヒューマン・プロオブ・ヒューマン・インフラストラクチャ:プラットフォームサイトのヒューマン・プロオブ・ヒューマン・インフラストラクチャのページでは、人間の権限レイヤーとは何か — 検証済みで、その場に存在する人物が自身のデバイス上で、1つの正確なアクションに結び付けられ、コミット前に権限が再確認する署名済みの Presence Record に封じられること — を説明しており、Presence プロパティがそれを実行する場所です。このリポジトリの PresenceApprovalCoordinator と、examples/local-escalation、examples/presence-live-approval、examples/presence-managed-approval の各例が、それを使って ESCALATE を解決するための参照実装です。本番環境での強制は営業支援付きで提供されます。ループバックのダブルはセレモニーをシミュレートするものであり、実際のセレモニーについて何も証明しません。
実行インテント自体は Agent-Safe Intent v1(agent-safe.intent/1)として公開されています:バインディング、その正規形とハッシュ、単一フィールドの変更はすべて別のインテントであるという要件、conformance/ 以下のベクターに対する適合性、リファレンス実装から生成された JSON Schema、変更履歴、および変更プロセスです。これは Decionis が公開し実装するプロファイルであり、いかなる団体にも承認された標準ではありません。agentsafe verify intent <file|dir> はコーパスをオフラインで実行するか、比較のために独自のバインディングのバイトとハッシュを出力します。spec/intent/v1/frameworks.md では、OpenAI Responses API と Agents SDK、Vercel AI SDK、および LangChain のツール呼び出しレコードがバインディングの何を保持し、アダプターが何を追加するかを、リファレンステストが再現するベクターから説明しています。
Execution Authority モデル、認可プロトコル、Presence で検証された人間による承認、および Decision Dossiers に関する補足ノートは準備中です。このリポジトリの発見ルールに従い、公開リンクはその正規の記事が公開後に解決された場合にのみここに追加されます。
| 研究概念 | このリポジトリでの実装 |
|---|---|
| 実行権限の境界 | IntentCapture -> DecionisGate -> SafeExecutor |
| プロトコル契約 | ワイヤー上では、Decionis の ExecutionAuthorityRequest と ExecutionIntentBinding の契約に厳密に準拠します。DecionisGate と DecionisGrantVerifier は、公開済みの OpenAPI に基づいて要求を行い、最終処理を行います |
| インテントの完全性 | Agent-Safe Intent v1:CanonicalIntentHasher、conformance/ のハッシュベクトル、公開済みのスキーマ、オフラインでの agentsafe verify intent |
| 人間による承認の証拠 | DIRECT の PresenceApprovalCoordinator、または MANAGED の DecionisGate ポーリング。どちらも Presence レシートの検証と Decionis による再評価が必要です |
| 信頼された実行 | シールされた ActionRegistry と、SafeExecutor でのアトミックな単一使用のグラント消費 |
| 判断の証拠 | すべてのゲート判断に decisionId と dossierId を付与し、実行結果には消費済みグラントとのバインディングを保持します |
| 失敗時のセマンティクス | 本番環境でフェイルクローズする不変条件と THREAT-MODEL.md |
| 権限を持たない観測 | SHADOW モードのゲート上で動作する ShadowPipeline:障害を分離し、範囲を制限し、グラントを使用せず、SafeExecutor によって拒否されます。詳しくは docs/shadow-mode.md を参照してください |
| MCP ガバナンス | examples/mcp-tool-gate |
| 運用パターン | examples/shopify-refund-agent、examples/github-deploy-agent、examples/procurement-agent |
リポジトリの構成
packages/pipeline—IntentCapture、DecionisGate、Presence の調整、SafeExecutor。packages/agentsafe—@decionis/agentsafe。信頼された実行機能を、デプロイ可能な単一プロセスとして提供します。HTTP リスナー、設定、エスカレーションの解決、packages/pipelineの前段にあるハンドラー接続部を備え、独自のイメージを持ちます。packages/mcp—@decionis/commerceのリリース済みソースのインデックスであり、Commerce Gate MCP クライアントです。継続的な開発は Commerce が担います。このインデックスにより、公開済みランタイムとその Apache-2.0 のソース履歴へのアクセスを維持します。packages/mcp/extension/claude— MIT ライセンスの Claude Desktop ラッパーのリリース済みソースのインデックスです。公開済みの MCPB には、別個の Apache-2.0 Commerce Gate ランタイム、ライセンス、通知が含まれます。今後のパッケージ化作業は Commerce が担います。examples/golden-adversarial-demo— 自己検証型の証明です。1 つのゴールデンパス、8 件の攻撃、未承認の実行は 0 件です。examples/whisper-boundary-demo— ショッピングエージェント向けの同じ証明です。加盟店のテキストによる誘導、セッションをまたぐ認証情報の検索、署名後に変更されたカート、コンテキスト圧縮で失われた制約、委譲時に失われたプリンシパルという 6 件の攻撃に対し、未承認の影響は 0 件です。examples/crm-outreach-demo— 営業開拓エージェント向けの同じ証明です。CRM 更新または送信メッセージを誰が承認できるか、承認後に変更された受信者、テンプレート外のメッセージ、配信停止を選択した連絡先、期限切れの承認、送信後に失われたプロバイダー応答を 1 回だけ照合して再送しないことを検証します。6 件の攻撃に対し、未承認の影響は 0 件です。examples/infra-scale-demo— Compromised Principal Test です。ID、認証情報、API がすべて有効なインフラストラクチャエージェントが、許可されていないdeployment.scaleを提案します。960 個のレプリカ、別のサービス、別のクラスター、認可後の変更、承認の差し替え、許可の再利用、クラスターへの直接呼び出しという 7 件の攻撃に対し、未承認の影響は 0 件です。examples/changed-conditions-demo— Changed Conditions Test です。誠実なデプロイエージェントのキューにある作業が、変化した状況に直面します。同じパスにある設定、拡大したターゲットグループ、別のロールアウトが使用した割当、撤回された承認、ポリシーのリリース、再分類されたセキュリティグループ、コミットと同時ではなくコミット後に公開された割当です。21 件の試行を拒否し、正当な対応処理 15 件をそれぞれ正確に 1 回完了します。examples/staged-change-demo— 本番環境の変更を、統制された計画として扱います。開始、ドレイン、デプロイ、再有効化の各ステップを個別に判断して許可し、権限側は最終確定レコードから計画の事実を導出します。ドレインのコミット前に拒否されるデプロイ、デプロイ失敗後にエスカレーションされる再有効化、独自の許可に基づくロールバックを扱い、計画はPARTIALで終了します。examples/basic-agent— 最小構成の BLOCK フローです。examples/shopify-refund-agent— 金額に基づく ALLOW/ESCALATE/BLOCK です。examples/github-deploy-agent— 環境と強制プッシュの制御です。examples/procurement-agent— 予算内のソフトウェア購入リクエストを、既存のツールにユーザー向けの処理能力が残っている場合に保留します。examples/mcp-tool-gate— 統制対象のツールを備えた、実際の stdio MCP サーバーです。examples/presence-live-approval— FIDO2 または FIDO2 と生体検知を組み合わせた認証手順による、実サービスに対する Presence バインド型の強制です。実際の認証情報が必要です。examples/presence-managed-approval— Decionis 管理の Presence オーケストレーションです。ポーリングは Decionis のみが行い、実行機能には Presence の認証情報を保持しません。examples/local-escalation— ループバック上の Decionis と Presence のテスト用実装を相手に、両方の Presence 統合モードを実行します。認証情報は不要で、認証手順はシミュレートされます。examples/trusted-executor— ループバックのテスト用実装に対する実際の HTTP 通信を通じて@decionis/agentsafeを検証する証明であり、導入者がひな形として使える例でもあります。ハンドラー接続部と、数行で構成されるプロセスを示します。govern/— Govern はワークフロー用のゲートです。GitHub Actions、GitLab CI、Jenkins、その他、ステップを実行インテントとして取得するランナーで使える単一の Go バイナリです。enforce-and-bindを通じて Decionis に問い合わせ、取得した許可がある場合にのみコマンドを実行し、結果を Decision Dossier に最終記録します。2026-09-21 以降のdecionis/governアクションのソースです(v2。v1 は evaluate-decision API を使う node20 アクションでした)。説明ページはdocs/govern.mdです。deploy/— デプロイキットです。実行機能のイメージ、エージェントゾーンと実行機能ゾーン向けの適合性テスト済み Kubernetes マニフェスト(Secrets は参照のみで、決して書き込まれません)、シャドーモードから強制モードへ移行するための運用手順書が含まれます。ARCHITECTURE.mdとTHREAT-MODEL.md— 信頼境界と悪用の分析です。OPEN-CORE.md— ここで Apache-2.0 の対象となるもの、Decionis が運用するもの、両者の接続部について説明します。docs/— 概念、実行インテント、Compromised Principal Test、結果、人間による承認、Presence Evidence の意味、リモート CRO のシーケンス、シャドーモード、Decision Dossier、信頼境界、実行機能の連鎖証拠、実行機能が BEAP v0.1 の銀行プロファイルのうち実装する内容、実行機能のインシデント対応、実行機能のバイパスが実際に阻止される場所、保証に関する注記を掲載しています。spec/intent/v1— Agent-Safe Intent v1 です。仕様、リファレンス実装から生成された JSON Schema、変更履歴、フレームワーク対応表が含まれます。conformance/agent-safe-intent-v1.json— 移植可能な正規ハッシュのテストベクトルです。conformance/vectors/— エッジケースの正規ハッシュベクトル(Unicode/補助平面文字、NFC と NFD の違い、負のゼロ、小数/指数表記の数値、ネストされた配列、UTF-16 のキーソート順)と、ベクトルとしての Compromised Principal Test(1 つのインテント、8 件の単一フィールド変更、9 個の異なるハッシュ)を収録しています。適合性テストが自動検出します。conformance/frameworks/— 同じ返金提案を OpenAI のfunction_callアイテム、Vercel AI SDK のtool-callパート、LangChain のToolCallとして表現しています。それぞれに提案、信頼されたコンテキスト、バインディング、ハッシュ、および 8 つのプロデューサー機能に関する対応状況の行が含まれます。dossiers/— 正規バイト列、SHA-256 ダイジェスト、Ed25519 署名、意図的に公開されたコーパスキーを備えた、再現可能な合成 Decision Dossier コーパスです。tests/integration/contract/— ループバック上の Decionis と Presence のスタブです。実際の HTTP 通信を通じて、パッケージ化されたパッケージの完全なワイヤーコントラクトを検証します。FIXTURE-PROVENANCE.md— すべてのフィクスチャファミリーの由来と許可された用途です。profiles/beap/v1.0とprofiles/beap/v0.1— Banking Execution Authority Profile です。独自のリポジトリにある同期スクリプトによって、バイト単位でそのリポジトリから複製されています。実行機能が実装するバージョン 1.0 と、このリポジトリの概念 DOI のもとでアーカイブするためにここに置かれた、凍結済みの 0.1 ドラフトを収録しています。DEPENDENCY-LICENSES.md— 生成されるインベントリの方法と、プラットフォームによって条件が異なる依存関係に関する注記です。SECURITY-EVIDENCE.md— 制御と成果物の対応を示す証拠マップ、および公開済みのギャップです。PUBLICATION-SIGNOFFS.md— 自動化では決定できない、人間による判断です。
Decionis CLI のインストール
このリポジトリは、コマンドラインツール decionis の公開配布拠点でもあります。GitHub releases には各リリースの
npm tarball、Debian および RPM パッケージ、Windows アーカイブとレジストリマニフェストが含まれており、以下に示す 2 つのマニフェストはパッケージマネージャーが読み取るものです。CLI 自体はこのリポジトリの Apache-2.0 ソースには含まれません。formula/ と apps/ はメタデータのみを保持します。
- npm:
npm install -g decionis - Homebrew:
brew tap decionis/agent-safe https://github.com/decionis/agent-safe-pipelineの後にbrew install decionis(Formula/decionis.rbが npm tarball を取得し、その SHA-256 を固定します) - Decionis アプリのインストール:
app install decionisはapps/decionis.jsonを読み取ります - Windows: WinGet マニフェスト
Decionis.CLIは、ここにある各リリースのdecionis-windows-x64-<version>.zipを指します。マニフェストが winget-pkgs に受け入れられるまでは、 リリースからアーカイブをダウンロードし、decionis\binをPATHに追加してください
オープンコア
アーキテクチャ、インテントコントラクト、実行境界、クライアントアダプター、監査コントラクト、シャドウモード、適合性ベクター、およびサンプルは Apache-2.0 です。リリースされた Commerce Gate ランタイムと Claude Desktop ラッパーは、ランタイムインデックス と ラッパーインデックス からリンクされているソース履歴において、それぞれの Apache-2.0 および MIT ライセンスを保持しています。それらの継続的な開発は Commerce が所有します。Decionis は DecionisGate の背後にあるポリシー制御プレーンを運用しています。すなわち、ポリシー評価、グラントの発行とアトミックな消費、Decision Dossier の署名と保持、および Presence です。境界面は、2 つのエクスポートされたインターフェース DecisionAuthority と AuthorizationVerifier、および公開された OpenAPI コントラクトです。ライブラリはプラン、キー、エンタイトルメントをチェックしません。OPEN-CORE.md はその境界と、それを安定に保つためのコミットメントを明示しています。
公開リポジトリのポリシー
これは公開された正規のリファレンス実装となることを意図しています。ミラーすべきではありません。ミラーはコントラクトとセキュリティ修正のドリフトを生みます。公開コンテンツはここに属します。すなわち、アーキテクチャ、パッケージソース、合成ポリシー、実行可能なサンプルです。本番ポリシーバンドル、顧客データ、認証情報、内部インフラストラクチャ、および非公開のインシデント資料は含まれません。
Decionis は引き続き権威ある意思決定サービスであり、Presence は引き続き人的検証サービスであり、それらのサーバー内部はバージョン管理されたコントラクトの背後で独立して進化できます。
ここから始める
ONBOARDING.md は採用者の道のりです — インストール、キャプチャ、判定、承認、 グラント、一度だけ実行、結果、証拠 — これを 5 つのファミリー(AI エージェント、コマース、バンキング、人間の証明、 および自律ワークフロー)についてたどり、それぞれがそれを実行するサンプルとそれを所有するプロパティを指し示します。
このリポジトリの評価
EVALUATION-PATH.md はレビュアーの道筋です。どの成果物を 見ているのか、どのコントロールを誰が所有するのか、各証拠が何を立証し何を立証しないのか、そして 何をどの順序で実行するのか。
ステータス
パッケージは @decionis/agent-safe-pipeline として公開されています。最新の安定版リリースは npm install @decionis/agent-safe-pipeline でインストールできます。プレリリースは next dist-tag で公開され、npm install @decionis/agent-safe-pipeline@next のような明示的な指定が必要です。
アーカイブされたリリースは Zenodo concept DOI
10.5281/zenodo.22312955 の下で引用可能です。
release-metadata contract は、
プリフライトチェック、バージョン DOI の検証、および人間による公開の境界について説明しています。
開発
pnpm install --frozen-lockfile
pnpm verify
pnpm verify は、フォーマット、Markdown の lint、フィクスチャの規約、正規のライセンス、プロダクションとツールチェーンの個別監査、決定論的なパフォーマンステスト、型、テスト、および行数/関数数/文のカバレッジ 90%、分岐のカバレッジ 85%というしきい値を適用します。pnpm mutation は、信頼境界のテストが意図的なコード変更を検出できることを確認します。pnpm fuzz は、正規のインテント処理に対する決定論的なプロパティテストを実行します。CI でも毎週、サンプル数の上限を増やして実行します。インストールすると、リポジトリの simple-git-hooks によるコミット前のガードレールが有効になります。
ローカルでのエスカレーションテスト
@decionis/agent-safe-pipeline/testing には LocalPresence と LocalAuthority が含まれています。これらは、本番クライアントが変更なしで通信するループバック用のダブルです。構造的なインテントハッシュのバインドを強制し、Decionis と同じ方法でレシートを検証し、単回使用の許可を発行して、管理されたエスカレーションを調整し、最終処理を記録します。人による手続きはメソッド呼び出し、またはローカルの制御ルートで行います。docs/local-testing.md と examples/local-escalation を参照してください。
フィクスチャの来歴とループバックオリジン
フィクスチャを含むすべてのファイルは fixtures/manifest.json に記載されており、pnpm fixture:check で検証されます。対象は、packages/pipeline/test 配下の単体テスト、サンプルソース、適合性ベクトル、ドシエコーパス、合成ポリシー、および tests/integration 配下の統合ハーネスです。このゲートは、合成 ID(synthetic- または fixture_ のプレフィックス、および予約 UUID ブロック内のテナント)を必須とし、検出した URL 形式のリテラルをすべて解析します。それらは localhost、127.0.0.1、example.com、または .example もしくは .invalid ドメインに解決されなければなりません。テスト、サンプル、ハーネスがループバックを越えてネットワークにアクセスすることはありません。
テストを追加または評価する際は、次の 2 点が重要です。
- ループバックスタブは、エフェメラルポートで
127.0.0.1にバインドし、単純な文字列定数const LOOPBACK_ORIGIN = "http://127.0.0.1"からベース URL を作成して、ポートを別途追加します。`http://127.0.0.1:${port}`のように URL 内で補間するテンプレートリテラルは、ゲートによってリテラルテキストとして読み取られ、無効な URL として拒否されます。これは意図的な動作です。ゲートは、補間されたホストがどこに解決されるかを推測しません。 - フィクスチャを含む新しいファイルを追加する場合は、同じ変更にマニフェストのエントリーも必要です。検出には
git ls-filesを使うため、未追跡のファイルはステージングされるまでゲートに認識されません。マニフェストと検出結果は完全に一致する必要があります。
構築ルールの詳細は FIXTURE-PROVENANCE.md を、これらのルールに従うループバックハーネスは tests/integration/contract/ を参照してください。
コントリビューション、サポート、ライセンス
変更を取り込む手順は CONTRIBUTING.md に記載されています。プルリクエスト前の pnpm verify、関連するコーディング、セキュリティ、ディスカバリのルール、ブランチからプルリクエストを作成するボットについて説明しています。質問やバグ報告には GitHub issues をご利用ください。ランタイムが最初に実行するガバナンス対象のアクションの件数こそが、このリポジトリの評価基準であり、スターの数ではありません。docs/reference/telemetry.md では、ランタイムがその情報について何を記録し、何を送信しないかを正確に説明しています。
AgentSafe ワークスペースは Apache-2.0 ライセンスです。過去の Commerce Gate リリースには、ランタイムおよびラッパーのインデックスにリンクされているライセンスが引き続き適用されます。LICENSE、OPEN-CORE.md、TRADEMARKS.md、SECURITY.md、CONTRIBUTING.md を参照してください。脆弱性の疑いがある場合は、公開 issue ではなく GitHub の非公開アドバイザリフォームから報告してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。