mcpField
A
Assurance

Assurance

ローカル
github.com/i-ops-hq開発ツール71 日前に更新

Assurance について

Assuranceは、コーディングエージェントのセッションや実行記録を調べるコマンドラインツールです。テスト済みの内容や見落としを示し、確認できない点も明記して、コミットやデプロイ前の未テスト変更を検出します。

主な機能

  1. 01Claude CodeとCodexのセッション監査
  2. 02編集後のテストとコマンドの確認
  3. 03Claude Codeのターン終了フック
  4. 04検索網羅性とMCPツール変更の確認
  5. 05CIゲートとローカル監査エンドポイント

活用シーン

  1. 01編集後に指定テストが実行されたか確認
  2. 02プッシュやデプロイ前に変更をレビュー
  3. 03検索文書と必要資料を照合
  4. 04MCPツールの説明変更を確認

MCP 対応

assurance-mcpパッケージは、指定した --root 内に限定した読み取り専用チェックをMCPツールとして提供します。ローカルエンドポイントはエージェントの実行記録やトレースを受け取り、監査結果を返すこともできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"i-ops-hq-assurance": {
"command": "uvx",
"args": [
"assurance-mcp"
]
}
}
}
起動コマンドuvx assurance-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiassurance-mcp0.5.10

ツール

6

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
folderstringいいえ
period_rangeanyいいえ

詳細

assurance

AI エージェントは完了したと言います。Assurance は、何を確認していないかを教えてくれます。

PyPI Python tests License

クイックスタート · 作業中に · ユースケース · コマンド · ガイド · フィードバック


コーディングエージェントは 「完了しました。テストは合格しました」 と報告します。Assurance は実際に起きたことを読み取り、何を実行し、何を省略し、何を検証できなかったかを、平易な文章で伝えます。

クイックスタート

Claude Code または Codex を使ったことのあるプロジェクトで、次のコマンドを実行してください。

uvx assurance audit                        # with uv: runs it without installing anything
pip install assurance && assurance audit   # without uv

このフォルダーでどちらかのエージェントが残した最新のセッションを読み取ります。設定は不要で、どちらを使ったかを指定するフラグもありません。まだどちらも使っていない場合は、uvx assurance audit --demo を実行すると、同梱のサンプルセッションでレポートを確認できます。

uvxがありませんか? uvに付属しています。インストールは1行で完了します。
場所コマンド
macOS(Homebrew)brew install uv
macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh
Windowspowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Windows(WinGet)winget install --id=astral-sh.uv -e
Python が使える環境pipx install uv または pip install uv

その後、新しいターミナルを開くと、uvx が PATH に追加されます。あるいは uv を使わず、pip install assurance を実行しても、同じ assurance コマンドを利用できます。

このリポジトリのサンプルセッションでの実際の出力を紹介します。エージェントには、invoice.py の丸め処理のバグを修正し、「pytest -q tests/test_invoice.py が合格することを確認する」 よう依頼しました。そして最後に 「完了しました。合計は正しくなりました」 と報告しました。

$ assurance audit examples/audit/sample-session.jsonl
Claude Code session demo-8f2 — 13 min in /home/you/my-app
10 tool calls, 3 failed — Bash 6, Edit 2, Grep 1, Read 1

  Looped: 3 rounds of Bash `pytest -q tests/test_invoice.py` failing the same way, with nothing new read
  After the last edit (14:09): no test or check it recognises; 2 unclassified commands ran after it (make lint-fix, python script)
  Against the last prompt (14:00, "The invoice totals are off by a cent for EUR. Fix it in inv…"):
    invoice.py: changed at 14:04 (src/billing/invoice.py).
    pytest -q tests/test_invoice.py: did not run after the last edit to src/billing/rates.py (14:09); it last failed at 14:08, before that.
    Only what the last prompt names is checked here; whether the work does what it asks is not.
  Not classified: 2 shell commands (make lint-fix, python script), so whether they read, wrote or tested anything is unknown.
  Also in the transcript: 1 assistant turn, 1 user turn, 1 bookkeeping record.
  Not read: 0 lines.

「完了しました」の報告に含まれていなかったこと:

  • ❌ テストは3回連続で失敗し、毎回同じ結果でした。
  • ❔ 最後の編集後に、Assurance が認識できるテストは実行されていません。コマンドは2つ実行されましたが、どちらについても合格かどうかを保証できないため、そのコマンドを示しています。何も言わないことは合格を意味しません。
  • ❔ プロンプトで指定されたテストが最後に実行されたのは、最後の編集より前で、そのときは失敗していました。指定されたファイルは変更されています。修正が正しいかどうかは分からないと、Assurance は明言しています。

セッションごとに実行する

Stop フックを有効にすると、Claude Code は Claude がターンを終えるたびに監査を実行します。伝えることがある場合に限り、最初に示される次の 3 段階のいずれかで通知します。

レベル条件誰に確認するか
noteこのターンでコードが変更され、まだテストされていない場合あなたに一度、実行するコマンドを伝えます。Claude には何も尋ねません
suggested review最後の編集後にテストが失敗した場合、保護対象のパスが変更された場合、または裏付けがないまま Claude がテストに合格したと言った場合あなたと Claude に、修正するか、その理由を説明するよう求めます
stop and check未テストのコードが main でプッシュ、マージ、公開、デプロイ、マイグレーション、またはコミットされた場合あなたと Claude に、後続の作業に進む前に確認するよう求めます
assurance · note: no test or check has passed since the last edit to src/billing/invoice.py (14:04). Run pytest -q tests/test_invoice.py before you commit or push.
assurance · suggested review: the last test run after the last edit to src/billing/invoice.py (14:04) failed: pytest -q tests/test_invoice.py (tests/test_invoice.py::test_eur_rounding; 1 failed, 11 passed in 0.33s).
assurance · stop and check: pushed at 14:06 with no passing test or check after the last edit to src/billing/invoice.py (14:04).
uvx assurance@latest hook install   # shows the change to ~/.claude/settings.json, asks, then writes it
uvx assurance hook remove           # takes it out again; nothing else changes

Maven、Gradle、Bazel、Django、Rails、jest、vitest、go、cargo などのテストコマンドに対応しています。package.json、Makefile、justfile のスクリプトを読み取り、プロジェクト固有のコマンドを把握します。また、テストが 0 件の実行を合格として扱うことはありません。対応しているもの。

または、Claude Code プラグインとして利用できます。claude plugin marketplace add i-ops-hq/assurance を実行してから、claude plugin install assurance@i-ops-hq を実行してください。セッションをブロックしたり、失敗させたりすることはありません。バージョンの固定、チームとの共有、Windows、およびプラグインが実行する内容については、フックガイドをご覧ください。

ユースケース

Assurance が、現在の作業のどこに組み込まれるかを紹介します。各ページは簡潔です。問題が起きる場面、組み込む場所、設定する行を説明しています。

作業内容確認する内容
決済とフィンテック資金を扱うコードが依存するテストが、最後の編集後に実行され、何かをリリースする前に合格していること
銀行業務と規制対象の変更セッションごとに、変更内容とテスト内容の記録が残ること。また、変更が及ぶすべての所有者に対して、依頼者が許可されているかどうか
医療とライフサイエンスエージェントが依頼されていないのに変更した保護対象のパス、およびインストールで実行される内容を実行前に確認できること
法律、保険、文書調査エージェントが質問に必要なすべての文書を読んだかどうか、およびレポートのフォルダーで欠けている期間
プラットフォーム、DevOps、SRE未テストのコードに対するプッシュ、デプロイ、マイグレーション、変更が及ぶ範囲、およびセッションでは引き上げられない制限
独自のエージェントを構築するチームエージェントの「完了」とゲートの「許可」を、その後に起きたことと照らし合わせます。実行記録または OTel トレースから確認できます
prompt ─▶ agent edits ─▶ note ─▶ tests ─▶ suggested review ─▶ push / deploy ─▶ stop and check ─▶ CI gate

コマンド

インストールは一度だけ。コマンドは assurance だけです。

コマンド確認できること
assurance auditこのフォルダーでの Claude Code または Codex のセッション、あるいは独自のエージェントの実行やトレースで、何が行われ、何がスキップされたかを確認します。
assurance hookClaude Code の各ターン後に監査を実行するよう設定するか、実行を停止します:install、remove、status。
assurance noticesフックが各通知を出した後、次のターンでテストを実行したか、失敗を修正したか、ファイルを元に戻したかを確認します。このマシンのトランスクリプトから読み取るため、データは送信されません。
assurance serveあらゆるエージェントがトレースや実行記録を送信でき、あらゆるワークフローが実行の監査を要求できるローカルエンドポイントです。
assurance couplingGit の履歴から、変更したものと通常一緒に変更されるもの、そしてそのうちまだ触れていないものを確認します。グラフも設定も不要です。
assurance reachGraphify などのコードグラフを使って、このファイルへの変更がどこまで影響するか、またそのグラフがコードからどれほど遅れているかを確認します。
assurance clearance変更が影響するすべてのオーナーについて、依頼者に権限があるかを確認します。
assurance diff作業が必要なものをすべて網羅したかを確認します。たとえば、取得したドキュメントと必要なドキュメントを照合します。
assurance pinMCP サーバーが、承認後にツールの説明をひそかに変更していないかを確認します。
assurance depspip install または npm install がマシン上で何を実行するかを、実行せずに読み取ります。
assurance budgetエージェントの実行で予算をどこに費やし、どこでループしたかを確認します。
assurance authority他人のアクセス権を借りずに、依頼者の権限でこのタスクを進められるかを確認します。
assurance check日付付きレポートのフォルダーが完全か、どの期間が欠けているかを確認します。

すべてのコマンドは、そのまま CI ゲートとして使用できます。

終了コード意味
0確認済み。問題は見つかりませんでした
1確認が必要なものがあります。確認できなかったものも含みます
2実行できませんでした

ガイド

対応しないこと

  • 推測しません。 数値を確定できない場合は、作り上げずにその旨を伝えます。
  • モデルやネットワークを呼び出しません。 すべての結果は、自分で確認できる計算に基づきます。
  • 確認した以上のことを主張しません。 audit は Claude Code のトランスクリプト、Codex のロールアウト、独自のエージェントが書き込む実行記録を読み取ります。認識できない形式の記録は、ツール呼び出しとして推測することなく未読として数え、その件数をレポートに表示します。他のエージェントのログへの対応は今後の予定です: 使用しているものをお知らせください。

問題がある箇所をお知らせください

まだ開発初期の段階です。実際の作業で実行していただくことが、最も役立ちます。

役に立った場合は、⭐を付けると、ほかの人にも見つけてもらいやすくなります。

パッケージ

pip install assurance を実行すると、すべてのコマンドがインストールされます。各パッケージは個別にインストールすることもできます。

パッケージ内容
assurance-cliassurance コマンド:diff、check、pin、drift、init
assurance-budgetコーディングエージェントのセッション用の audit と、実行ログ用の budget
assurance-depsインストール時に実行される内容を、実行せずに読み取ります
assurance-authority依頼した人にとって、タスクを進めてよいかどうかを判断します
assurance-reachコードグラフを使って変更の影響範囲と、そのグラフがコードにどれほど遅れているかを確認します
assurance-mcp--root の範囲に限定された、読み取り専用 MCP ツールとしてのチェック機能です
assurance-core基盤となる純粋な判定ライブラリです。I/O、モデル、依存関係はありません

I-Ops の一部です。モデル、エージェント、オーケストレーションはそのままに、独立したチェック機能を追加できます。

Apache-2.0 · セキュリティ · コントリビューション · リリース

コメント

MCP は初めてですか?

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

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