Show HN: Halo – 開源的で改ざん痕跡のあるAIエージェント向けランタイム証拠

2026/07/07 23:07

Show HN: Halo – 開源的で改ざん痕跡のあるAIエージェント向けランタイム証拠

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本稿は、AI エージェントに対して改ざん検知可能な実行時ログを提供するオープンソース参照実装である「halo-record」を紹介する。これは付加のみで書き込まれ、SHA-256 ハッシュ化と RFC 8785 正規化を用いたハッシュ連結構造により構成され、プロデューサーへの信頼を必要とせず、誰でも整合性を検証できるようにしている。その最小限のスタックはレコーダー、バーファイア、witness クライアント、レポートサーバーの 4 つのコンポーネントで構成され、標準ライブラリ依存関係のみに加え、1 つの pip パッケージのみが必要である。ネットワークコールはオプションの"witness"を除き実行せず、記録数とチェーンフィンガープリントのみを受信するだけであり、ログ内容がインフラストラクチャから外に流出しないよう確保されている。生データの入力は保存されず、代わりに引数はハッシュ化され、一般的な秘密情報/PII 形式への最善の試みの正規表現パターンを用いて改行されたサマリーとして保存される(ディフェンス・イン・ dept)。監査向けのコードベースは、Apache-2.0 ライセンスの下で約 4,300 行の Python で構成されている。統合はシームレスであり、OpenTelemetry GenAI スパン対応(CrewAI や LlamaIndex などフレームワークを支援)、MCP インターセプタ、LangChain/LangGraph コールバック、Claude Code フック用のネイティブアダプターを提供し、エントリーポイントをラップしログファイルを指定する仅需 1 行(

from halo import trace
)で実現可能(例:
./audit.jsonl
)。組み込みの 60 秒デモは、
uvx --from halo-record halo demo --serve
または
pip install halo-record
により実行でき、架空のベンダーシナリオをスケルトン化し、改ざん検知を実演できる。データがインフラストラクチャ内に保持され、外部"witness"アンカーファイルを用いて記録の削除がないことを証明できるようにすることで、SOC 2、EU AI Act、OWASP GenAI セキュリティプロジェクト、CSA AARM、AIUC-1 その他フレームワークへのコンプライアンス準備を支援している。

本文

AI エージェント向け改ざん検知 Runtime 記録:ハッシュ連結による完全監査証跡

アーキテクチャと基本概念

AI エージェント(ツールコール、モデル呼出し、データアクセスなど)が行ったすべてのアクションは、追記のみで可能なハッシュ連結されたログの形式で保存されます。

  • 改ざん検知機能: 記録が一度も変更されていないことを検証するには、作成者の信頼を要しません。
  • 第三者検証可能: 顧客のセキュリティチームや任意の関係者が独立して監査を行うことができます。
  • 監査証跡の提示: セキュリティレビューにおいては、説明文ではなく検証可能なレポートへのリンクを提供します。
  • 対応の必要性: SOC2 チェックリストや AI 規制に準拠するための、書面での保証を超えたリアルタイム証明が必要とされています。

記録形式はオープンであり、以下のコンポーネントを備えた参考実装(パッケージ)が提供されます:

  • recorder
    : 記録機能
  • verifier
    : 検証機能
  • witness
    : 第三者による指紋保持クライアント
  • report server
    : レポート配信サーバー

なぜこのコードを信頼できるのか

エージェント内部へ組み込む際、以下の特性に基づいて信頼性を持たせています。盲目的に採用すべきではありませんが、以下の点は注目すべきです:

  • ゼロのランタイム依存関係: 標準ライブラリのみを使用します。インストールは
    pip install halo-record
    の単一パッケージで完了します。
  • ネットワーク通信の排除:
    witness
    を除き(オプトイン制)、記録内容や連鎖指紋以外は一切送信しません。データはローカルに留まります
  • 生データの非保存: 入力された引数はハッシュ化され、秘密情報の形式に準拠したサマリーとしてのみ保存されます。完全な生値は一切保存されません。(※防御的対策ですが、完全なる保証ではない点にご注意ください)。
  • 小規模かつ監査容易: コード量は Python で約 4,300 行程度。短期間で全文を閲覧可能です。
  • Apache-2.0 ライセンス: オープンソースとして利用できます。

60 秒で動作を確認するデモ

エージェントの事前セットアップも不要です。環境構築(

uv
など)なしで素早く試すことができます。

インストール方法

  1. uv を使用する場合
    uvx --from halo-record halo demo --serve
    
  2. 従来の pip 方式の場合
    pip install halo-record
    halo demo --serve
    

デモの内容

上記コマンドを実行すると、以下のデモ環境が起動します。

  • 架空のエージェントベンダーの構築
  • 2 つの顧客の設定とチェーン検証
  • ゲートされた Runtime レポートの配信
  • ブラウザによるオペレーターコンソールの表示

改ざんテスト例: デモで生成された

.jsonl
ファイルから 1 行を削除し再読み込みすると、システムはその改ざんを検知します


ご自身のエージェント記録への導入

境界点(エントリーポイント)での 1 行のカット&ペーストで開始可能です。

Python エージェントへの組み込み

エントリポイントをラップして、各ツールコールを

./audit.jsonl
に記録します。

from halo import trace

# run_my_agent が定義された関数です
agent = trace(run_my_agent, profile="my-agent", log="audit.jsonl") 
  • デフォルトの保存場所:
    log
    引数が省略される場合、
    ~/.halo/my-agent.jsonl
    に保存されます(エージェントごとに個別のチェーンが生成されます)。
  • アダプター利用: 既存システムとの連携アダプターも用意されています(詳細は後述)。

レポートの描画と配信

記録されたデータを HTML 形式で表示したり、顧客向けに配信したりします。

# チェーン単体の自己検証レポート生成
halo report audit.jsonl -o report.html

# テナント単位のカスタムアクセス制御付きサーバー起動
halo serve ./records --port 8721

クイックスタート完了: ブラウザで自身のエージェント Runtime レポートが表示されれば準備は整います。JSONL ファイルを取得しても表示されない場合は、Issue をお立ちください。


既存システムとの連携アダプター

ソースタグが付与されたすべての記録により、レポートは証拠の収集方法を明文化します。

境界点でのキャプチャ既存テレメトリからのインGEST
ネイティブ recorder (
from halo import trace
)
OpenTelemetry GenAI スパン
MCP インターセプタLiteLLM カallback
LangChain / LangGraph のキャブバックLangfuse エクスポート
OpenAI Agents SDK のフック任意のゲートウェイ / リバースプロキシログ
Claude Code / Agent SDK のフック-

アダプターの概要:

  • OpenTelemetry 系: CrewAI、LlamaIndex など、OTel 機能を備えたフレームワークはアダプター経由でチェーンへ接続します。
  • TypeScript: Vercel AI SDK および JS エコシステム向けのネイティブアダプター同梱されています。
  • カスタム対応: スタックにない場合は Issue をお立ちください(多くのアダプターは約 100 行程度です)。

クロードコード (Claude Code) への適用

Claude Code は各ツールコール後に

PostToolUse
フックを発火させます。これらを Halo に対応させることで、ファイル書き込みやシェルコマンドなど全ての動作がローカルチェーン内に記録されます。

コード変更なしの設定

既存のコーディングスタイルを維持したまま、設定ファイルに以下の JSON を追加するだけで機能します。

{
  "hooks": {
    "PostToolUse": [
      {"matcher": "*", "hooks": [{"type": "command", "command": "halo hook"}]}
    ]
  }
}

この設定を

~/.claude/settings.json
に追加すれば、記録はデフォルトの
~/.halo/audit.jsonl
に保存されます(環境変数
$HALO_LOG
で上書き可能)。

重要な動作特性:

  • 思考過程の除外: データやネットワーク、外部状態を操作しない純粋なオーケストレーションツールはスキップされます。
  • 記録対象: 境界点でのアクションのみを記録します(思考プロセスではなく)。
  • ハッシュのみモード:
    HALO_HASH_ONLY=1
    を設定すると、サマリーなしにコンテンツハッシュのみを記録できます。

検証とレポート生成

halo verify ~/.halo/audit.jsonl
halo report ~/.halo/audit.jsonl -o report.html

任意の Runtime がポストアクションフックをサポートしていれば、同様のコマンドでイベントを読み込んで記録を追加できます(標準入力の JSON 形式)。


完全性と整合性 (Integrity) の仕組み

自己管理チェーン: チェーン内で何らかの変更がなされなかったことを証明できます。

  • 不可避: 事後に編集や再順序付けは検知されます。
  • 限界: recorder オペレーターによる記録の削除や書き換えに対しては、内部的には完全性を保証できません(信頼できる第三者の介入が必要です)。

完全性証明 (Witness): 信頼できる第三者が定期的にチェーンの指紋(数とヘッダーハッシュのみ)を保持することで、客観的な完全性を証明します。

# ローカルな witness にチェックポイントをアンカー設定
halo anchor audit.jsonl witness.jsonl

# アンカー設定の完全性判定
halo anchor audit.jsonl witness.jsonl --check
  • 役割分担: 自己検証は整合性の証明になりますが、顧客への完全性保証には信頼できる
    witness
    の存在が必要です。
  • 早期アクセス: ホストされ認知された
    witness
    の導入については、
    bkuan001@gmail.com
    までお問い合わせください。

コンプライアンススタックにおける位置づけ

halo-record
は認証ではなく、証拠生成層です。以下のような規制・フレームワークの要件に適合するためのアーティファクトを提供します:

  • セキュリティ監査 / SOC 2: 検証可能な Runtime レポートで代替可能です(スクリーンショットや文章説明の代わり)。
  • AIUC-1 (EU AI Act): エージェント振る舞いの継続的な Runtime 証拠。監査時に再構築するのではなく、リアルタイムで保持されます。
  • OWASP GenAI Top 10: 過剰な代理権限や機密情報の漏洩リスクに対する、具体的なエージェント・ツール・データ操作の記録です。
  • AARM (CSA): 改ざん検知可能なアクション受領書(R5/R6)を生成します。
    halo-record
    は受領書レイヤーであり、完全な AARM システムには強制ゲートウェイとの連携が必要です。
  • EU AI Act: ハイリスク AI システム向けのログ記録および保持義務の満たし。
  • ISO 42001 / NIST AI RMF: 管理システム制御の背後にある運用証拠の提供。

重要: これらの出力自体は「認証」を行いますが、評価者に検証可能な証拠を見せるためのものです。


コマンドラインインターフェース (CLI) チュートリアル

  • halo verify
    : シーマ+ハッシュチェーンを検証(失敗時は非ゼロ終了ステータス;CI/CD 親和)。
  • halo report
    : チェーンを自己検証可能な HTML レポートとして描画。
  • halo serve
    : HTTP プロトコルでテナント別レポートを配信(顧客ごとのアクセス制御付き)。
  • halo grant
    : レポート受信者(メールまたはドメイン)を指定。
  • halo anchor
    : チェーンヘッダーを witness にアンカーし、
    --check
    で完全性を検証。
  • halo demo
    : 完全なベンダーデモのスケルトンを作成(記録 → witness → ゲートレポート)。
  • halo sample
    : 有効な例ログを出力。
  • halo hash
    : JSON 値の正規化 SHA-256 ハッシュ計算。
  • halo hook
    : Claude Code の PostToolUse フックを実行。

技術的詳細:整合性モデルと互換性

整合性の仕組み

レコードのハッシュは、

integrity.hash
に記録され、前段のハッシュ値
integrity.prev_hash
を参照します。

  • 正規化: RFC 8785 (JSON Canonicalization Scheme) を使用。
  • 暗号化: バイト列を SHA-256 でハッシュ化。
  • 初期値: 最初のレコードの
    prev_hash
    はゼロ(64 ビット)です。
  • 認証不要: 秘密鍵は不要で、公開アルゴリズムのみが本質です。

警告: チェーンを改ざんして検知されないとお考えですか?試行錯誤の結果と検証場所は以下のリンクにて閲覧可能です。

スキーマ参照

完全なフィールド定義については

halo-record.schema.json
をご参照ください。

TypeScript 環境 (Node.js)

同じ記録フォーマットと witness プロトコルを Node 向けにも提供しています (

halo-record-ts
)。Python かどちらの言語で記録しても、共通の検証器 (
verifier
) で検証可能です。

ライセンス

Apache-2.0

同じ日のほかのニュース

一覧に戻る →

2026/07/08 3:24

Kokoro を活用したローカル動作・CPU対応で高品質な TTS(テキスト対話)

## Japanese Translation: 2026 年 3 月 31 日にリリースされた Kokoro-82M は、わずか 8200 万パラメータだけで英語・中国語・ヒンディー語の極めてリアルな声を生成する特段に軽量な Text-to-Speech モデルです。CPU 上で完結するように設計されており、高価な GPU の依存を回避できます(GPU はローカルの LLL推論用に留保されます)。同モデルは AMD Ryzen チップを搭載した標準的なプロセッサ、Intel Core i7 システム、Apple M シリーズ CPU にもデプロイ可能です。ベンチマーク結果では、各種ハードウェア上で合成時間が 5 秒以内となっています:Intel Core i7-4770K で約 4.7 秒、Apple M2 Pro で 4.5 秒、短かい段落では AMD Ryzen 7 8745HS で低至くとも 1.5 秒です。 最も簡単なデプロイ方法では、プリダウンロード済みの音声モデルを含む Kokoro-FastAPI コンテナイメージ(約 5 GB)を使用します。ユーザーは `podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu` コマンドで Podman を使用してサービスを開始し、`localhost:8880/web` でウェブ UI にアクセスすることで、オーディオを直接生成・再生できます。コンテナは OpenAI 互換の音声 API を公開しており、JavaScript(`./speak.js`)および Python(`./speak.py`)スクリプトなどの実装例があります。音声モデルは環境変数 `TTS_VOICE` を使用して選択でき(全リストは HuggingFace で確認可能)、出力は MP3 ファイルとして保存され、SoX がインストールされている場合は自動再生も可能です。 音声認識と Text-to-Speech の両方が必要なアプリケーション向けには、オプションの Speaches コンテナ化サービスが Whisper とシームレスに統合され、また OpenAI API 互換性もサポートしています。リソース要求を低く抑えつつ、簡潔なデプロイオプションを提供することで、Kokoro-82M は自然で多言語の音声合成を開発者のワークフローや広範なアプリケーションに統合するためのハードルを大幅に低下させます。

2026/07/07 21:38

StreetComplete:1 つの小さなクエストで OpenStreetMap を修正していくプロジェクト

## Japanese Translation: StreetComplete は、誰でも現在地から OpenStreetMap の精度を向上させるシンプルな方法を提供します。アプリは生地図上に不足している情報を簡単な「クエスト」として表示し、利用者に特定の場所を訪れて短く質問に答えるよう促し、データギャップを埋めます。このアプローチにより、高度な編集スキルや専用ソフトがなくても OpenStreetMap が最新の状態を保つことができます。ユーザーがタスクを完了すると、その貢献は瞬時にグローバルデータベースで更新され、直ちにその名前でクレジットされます。このメカニズムにより、地図の改善は情報を収集した実際の観察者まで追跡可能になります。したがって、ナビゲーションや地域発見のためのストリートレベルの詳細はより正確かつ信頼性が高まります。究極的には、このツールはマッピングを民主化し、無関心な訪問者を能動的な貢献者に転換させます。これにより、遠隔編集や大規模な専門チームに依存することなく、簡単な現場での相互作用を通じて正確な地理データが継続的に拡張されるコミュニティが育まれます。

2026/07/07 23:23

Chat Control バージョン 1.0 と 2.0 の解説

## Japanese Translation: 欧州連合(EU)は、企業に対し、子供による性虐待資料(CSAM)を検出するために私信をスキャンすることを義務付ける有効期限を迎えた暫定権能(チャットコントロール 1.0,規制 EU 2021/1232)の復活を図ろうとしている。当初 2024 年 8 月 3 日に有効期限が切れる予定だったこの措置は、2 回延期された——最初に 2026 年 4 月 3 日(2024 年 4 月 29 日の議決)、続いてさらに 2028 年 4 月まで(2025 年 12 月 18 日の提案)。2026 年 3 月 26 日、下院での投票で改正案 34 が否決されず、その一方で不特定の写真やテキストの自動評価を禁止する改正案 34 が僅差(307 対 306)で可決されたことを受け、無効化措置に基づく自発的スキャンの法的根拠は 2026 年 4 月 4 日に終了した。にもかかわらず、主要プラットフォーム(Google、Meta、Microsoft、Snap)は自発的に引き続きスキャンを行うと発表した。 しかし、立法上の行き違いが生じている:欧州議会の LIBE 委員会は 2026 年 3 月 2 日に延期を拒否し、欧州議会は 2026 年 3 月 11 日、広範な自動分析に対する保護性指令を採用し、理事会は同年 3 月中旬に欧州議会の条件を拒否した。これに対し、EU の大使たちは 2026 年 6 月 26 日に手続の簡素化を通じて暫定復活を推進することに合意し、理事会は同年 7 月 2 日にも自らの立場を採用した。2026 年 7 月 7 日、欧州議会は緊急手続を承認するため 331 対 303 の投票を行い、その際に関連する委員会を bypass して、有効期限を迎えた特別措置を迅速処理する手続きをとった。この議題に対する法的拘束力のある投票は木曜日(7 月 9 日)に予定されており、絶対多数である 361 人の欧州議会議員の賛成が必要となる。 同時に、「チャットコントロール 2.0」と呼ばれる恒久解決策を確立するための努力も停滞している。委員会は 2022 年 5 月 11 日、プラットフォームに対し暗号化全体(エンドツーエンド)を迂回して検出と報告を行うことを求める恒久規制を提案した。2023 年 11 月、欧州議会は E2E スキャンに反対する保護性指令を採用し、視覚情報のみを対象とした分析、特定の裁判所命令の要件のみを受け入れること、また年齢認証の義務化を拒否することを要請した。2025 年 12 月から 2026 年 5 月までの 4回のトリログ(三回協議)ラウンドに加えて、2026 年 6 月 29 日の「最終」ラウンドも失敗に終わったが、チャットコントロール 2.0 に関する合意は依然として達されていない。 2026 年 6 月 10 日、理事会の法務部は、裁判所の承認なしに行われる自発的スキャンは、EU 基本権憲章第 7 条(プライバシーとデータ保護)に抵触する一般化されたスキャンであるとして警告した。恒久 CSA 規制について 5回のトリログラウンドが完了後なお合意に至らず、2025 年 10 月にドイツの議長国としての任務でリスク評価と軽減義務への重点が移行している状況において、EU は児童安全の強化とデジタル権限の維持という狭いバランスを navigate しなければならない。7 月 9 日の緊急投票は、国家関連のスキャン手続に議論を伴う形で再び導入することを強いるリスクがあり、これにより憲法上の保護や公共の信頼に関連する新たな法的課題が引き起こされる可能性がある。