
Policy engine and EDR for AI agent fleets and developer workstations. Monitors tool calls, file access, network flows, and process execution with Ed25519-signed audit trails and fail-closed enforcement.
群れの時代のEDR。
Fail closed. Sign the truth.
ステータス: pre-1.0 beta. 公開APIは安定していますが、デフォルトは1.0までにさらに厳しくなる可能性があります。
Clawdstrikeは、ポリシーエンジン、EDR、署名済み監査チェーンを1つのバイナリに統合したものです。AIエージェントのtool_callは、カーネルレベルのfile_access、process_exec、network_flow、dylib_load、launch_persistenceと同じイベント分類に属します。1つのポリシーエンジンが評価し、1つのEd25519署名付き因果グラフが記録します。デフォルトはフェイルクローズドです。
同じエンジンは、Rustクレート、TypeScript SDK、Pythonパッケージ、Goモジュール、CLI、デスクトップEDRエージェント(macOS Endpoint Security + Network Extension、Linux Tetragon + Hubble)、エンタープライズコントロールプレーンとして提供されます。
クイックスタート · ガード · ポリシー · 形式検証 · エンタープライズ · 設計
お好みのパッケージマネージャーでインストール:
brew install backbay-labs/tap/clawdstrike # macOS, Linux
npm install @clawdstrike/sdk # TypeScript
pip install clawdstrike # Python
cargo add clawdstrike # Rust
go get github.com/backbay-labs/clawdstrike-go
プロジェクトをスキャフォールドし、デーモンを起動:
clawdstrike init --keygen
# writes policy.yaml, config.toml, keys/clawdstrike.key{,.pub}
clawdstrike daemon start && clawdstrike daemon status
# Status: healthy | Version: 0.2.7 | Uptime: 2s
3つの拒否、それぞれ署名付き:
$ clawdstrike check --action-type file --ruleset strict ~/.ssh/id_rsa
BLOCKED [Critical]: Access to forbidden path: ~/.ssh/id_rsa
$ clawdstrike check --action-type egress --ruleset strict api.openai.com:443
BLOCKED [Error]: Egress to api.openai.com blocked by policy
$ clawdstrike check --action-type mcp --ruleset strict shell_exec
BLOCKED [Error]: Tool 'shell_exec' is blocked by policy
ポリシー自体がコンパイルでき、内部で一貫していることを確認:
$ clawdstrike verify --policy strict
Consistency: PASS (47 formulas, 0 conflicts)
Completeness: PASS (4/4 action types covered)
Inheritance: PASS (0 weakened prohibitions)
実際のエージェントを強制下で実行:
clawdstrike run --policy clawdstrike:strict -- python my_agent.py
エージェントは通常通り動作します。すべてのツールコールは最初にエンジンを経由します。拒否はSDKで型付けされたエラーを発生させ、署名付きレシートを発行します。
フリート展開の場合は、Helmチャートをインストールします。hushd と Spine サイナーはフェイルクローズドであり、インストール時にキーが必要です。そのため、事前にシークレットを作成し、チャートから参照してください:
NS=clawdstrike-system
kubectl create namespace "$NS"
kubectl -n "$NS" create secret generic clawdstrike-hushd-auth \
--from-literal=CLAWDSTRIKE_API_KEY="$(openssl rand -hex 32)" \
--from-literal=CLAWDSTRIKE_ADMIN_KEY="$(openssl rand -hex 32)" \
--from-literal=CLAWDSTRIKE_AUTH_PEPPER="$(openssl rand -hex 32)"
kubectl -n "$NS" create secret generic clawdstrike-spine \
--from-literal=SPINE_LOG_SEED_HEX="$(openssl rand -hex 32)" \
--from-literal=SPINE_WITNESS_SEED_HEX="$(openssl rand -hex 32)"
helm install clawdstrike \
oci://ghcr.io/backbay-labs/clawdstrike/helm/clawdstrike --version 0.2.0 \
--namespace "$NS" \
--set hushd.auth.existingSecret=clawdstrike-hushd-auth \
--set spine.secrets.existingSecret=clawdstrike-spine
これにより、hushd、Spine チェックポインター + 証人、およびバンドルされたNATS JetStreamが起動します。Control API(登録、姿勢コマンド、署名付き完了バンドルの返送)およびTetragon/Hubbleテレメトリーブリッジはオプトインです。
完全なパラメータセットについてはchart READMEを、エージェントのエンドツーエンドのオンボーディングについてはEnterprise enrollmentを参照してください。
flowchart LR
A[Agent / sensor] --> B[Canonical event]
B --> C[Policy engine + guard stack]
C -->|allow| D[Action runs]
C -->|deny| E[Blocked, fail-closed]
C --> F[Ed25519 receipt]
F --> G[Causal graph]
G -.->|enterprise| H[Spine audit chain]
SDKアダプターとOSレベルのセンサーは、同じ正規化イベントをポリシーエンジンに送ります。アダプターはAIエージェントのツールコールをカバーし、カーネルセンサー(macOS Endpoint SecurityおよびNetwork Extension、Linux TetragonおよびHubble)はファイル、プロセス、ネットワーク、dylib、永続化イベントをカバーします。ガードスタックは判定を返し、判定はEd25519レシートとともに送られ、各レシートはコンテンツハッシュ化されてセッションごとの因果グラフに格納され、エージェントのアイデンティティをダウンストリームのOSイベントに結び付けます。
決定が応答しきい値を超えると、エンジンは署名付き効果を発行します: ファイルの隔離、出力先の制限、プロセスツリーの一時停止、以前発行された承認の取り消しなど。効果は可能な限り可逆的です。過去の観測はディスク上のフライトレコーダーに残るため、強化されたポリシーを出荷前に先週の状態に対してシミュレートできます。エンタープライズモードでは、レシートチェーンはNATSを介してSpineチェックポインターに送信され、独立した証人が各バッチに共同署名します。
ログは物語であり、証拠は署名です。
各ガードはツール境界での合成可能なチェックです。証拠を含む判定を返します。フェイルファストまたは集約。ポリシーごとに設定可能。
ソース: crates/libs/clawdstrike/src/guards/.
バージョン管理され、決定論的なポリシーasコード。スキーマ 1.5.0(1.1.0+ と後方互換)。ビルトイン、ローカルファイル、リモートURL、git参照からのextendsをサポート。リモートextendsはホスト許可リストと#sha256=<64-hex>による整合性固定が必要。
ビルトインルールセット: permissive · default · strict · ai-agent · ai-agent-posture · cicd · remote-desktop · remote-desktop-permissive · remote-desktop-strict · spider-sense.
運用ループ(観測、合成、強化):
# 観測イベントから最小権限候補を生成
clawdstrike policy synth run.events.jsonl \
--extends clawdstrike:default --out candidate.yaml
# 候補に対してイベントを再生
clawdstrike policy simulate candidate.yaml run.events.jsonl --fail-on-deny
# 候補とベースラインを比較
clawdstrike policy diff clawdstrike:default candidate.yaml
ポリシースキーマ、姿勢スキーマ、観測、合成、強化ガイドを参照。
ポリシーエンジンの中核となる決定ロジックはLean 4で記述され、Aeneas変換パイプラインを介してRust実装と差分的にテストされています。
Leanで証明済み(45のコア関数のうち44で5つのプロパティ):
extendsチェーンは常に検出される証明の範囲外: コア決定ロジックを超えるガード、IO、ネットワーク、および暗号プリミティブ自体(ed25519-dalekに依存)。
clawdstrike verify --policy strict # Z3ポリシー分析
cargo test -p formal-diff-tests # ナイトリー差分テスト
cd formal/lean4/ClawdStrike && lake build
形式検証ガイドを参照。
すべての判定には、決定、それを下したポリシー、証拠を含むEd25519署名付き証明が添付されます。レシートはRFC 8785 JSON正規化で正規化されるため、署名はRust、TypeScript、Pythonでバイト単位で検証できます。
エンタープライズ展開では、レシートはSpineを通じて転送されます。SpineはEd25519署名付きでハッシュチェーンされたエンベロープログです。レコードの改ざんは、その後のすべてのレコードの検証を失敗させます。
npm install @clawdstrike/sdk
import { HushEngine, loadPolicy } from "@clawdstrike/sdk";
const engine = new HushEngine(await loadPolicy("clawdstrike:strict"));
const verdict = await engine.check({
actionType: "file",
target: "~/.ssh/id_rsa",
});
// verdict.decision === "deny"
// verdict.receipt is Ed25519-signed
pip install clawdstrike
from clawdstrike import HushEngine, load_policy
engine = HushEngine(load_policy("clawdstrike:strict"))
verdict = engine.check(action_type="file", target="~/.ssh/id_rsa")
# verdict.decision == "deny"
[dependencies]
clawdstrike = "0.2"
use clawdstrike::{HushEngine, Policy, Action, Decision};
let policy = Policy::load_builtin("strict")?;
let engine = HushEngine::new(policy);
let verdict = engine.check(&Action::file("~/.ssh/id_rsa"))?;
assert_eq!(verdict.decision, Decision::Deny);
go get github.com/backbay-labs/clawdstrike-go
engine, _ := clawdstrike.NewEngine(clawdstrike.LoadBuiltin("strict"))
verdict, _ := engine.Check(clawdstrike.FileAction{Target: "~/.ssh/id_rsa"})
// verdict.Decision == clawdstrike.Deny
同じエンジンに管理コントロールプレーンを追加: Control API、NATS JetStreamトランスポート、Spine監査チェーン、SOCワークフローのためのControl Console。mTLSによる登録、リクエスト/リプライ確認応答付きの姿勢コマンド、APIへの署名付き完了バンドル。
エンタープライズ登録およびアダプティブアーキテクチャを参照。
Clawdstrikeは認証製品ではありません。標準的な制御フレームワークに対応した証拠を生成します: 署名付きアクション証明、整合性チェーン監査証跡、決定論的ポリシー評価。
| フレームワーク | エンジンが生成する証拠 |
|---|---|
| SOC 2 (CC6.1, CC7.2) | 論理アクセス制御と署名付き監査証跡 |
| HIPAA §164.312(b) | 否認防止レシート付き監査制御 |
| PCI-DSS 10.5 | 改ざん防止、ハッシュチェーンログ |
コンプライアンスマッピングはドラフトです。フレームワークの正式化が必要な場合は、issueを開いてください。
Fail closed. 無効なポリシーはロード時に拒否。評価エラーはアクセスを拒否。デフォルト設定がない場合は制限的に動作。セキュリティの低下には明示的で監査可能なアクションが必要。
証明、ログではない. Ed25519レシートは暗号学的証明であり、誰かが編集できるログ行ではありません。正規JSON(RFC 8785)により、署名はRust、TypeScript、Pythonで同一に検証されます。
同じエンベロープ、任意のパイプ. 署名付きSpineエンベロープは、NATS上で100K msg/sec、libp2p gossipsub over residential internet、1,200 bpsのLoRa無線のいずれで運ばれてもバイト単位で同一です。トランスポートは真理層に影響を与えません。
減衰のみ. エージェントは能力のサブセットを委任し、決して昇格しません。委任トークンは暗号化された能力の上限を持ちます。権限昇格はポリシーによって防止されるのではなく、数学によって防止されます。
自分のスタックを所有する. Apache-2.0。セルフホスト可能。セキュリティクリティカルなインフラにベンダー依存はありません。同じエンジンは開発者のラップトップ、エンタープライズフリート、およびラジオメッシュ上のRaspberry Piで動作します。
脆弱性を発見した場合:
securityラベルを付けてGitHub issueを開く。SECURITY.md および THREAT_MODEL.md を参照。
CONTRIBUTING.md を参照。
cargo fmt --all && cargo clippy --workspace -- -D warnings && cargo test --workspace
Apache License 2.0。 LICENSE を参照。
| Guard | キャッチするもの |
|---|
ForbiddenPathGuard | .ssh、.env、.aws、資格情報ストア、レジストリハイブへのアクセス |
PathAllowlistGuard | 最小権限エージェントのためのファイルアクセス許可リスト |
EgressAllowlistGuard | ドメイン別のアウトバウンドネットワークコール(デフォルト拒否または許可リスト) |
SecretLeakGuard | ファイル書き込みにおけるAWSキー、GitHubトークン、秘密鍵、APIシークレット |
PatchIntegrityGuard | rm -rf /、chmod 777、disable securityなどの危険なパッチ |
ShellCommandGuard | 実行前の危険なシェルコマンド |
McpToolGuard | MCPツール呼び出し、確認ゲート付き |
PromptInjectionGuard | 信頼できない入力へのインジェクション攻撃 |
JailbreakGuard | 4層検出: ヒューリスティック + 統計 + ML + オプションのLLM判定 |
ComputerUseGuard | CUAアクション: リモートセッション、クリップボード、入力インジェクション、ファイル転送 |
RemoteDesktopSideChannelGuard | CUAセッションにおけるクリップボード、オーディオ、ドライブマッピング、ファイル転送 |
InputInjectionCapabilityGuard | CUA環境における入力インジェクション機能の制限 |
SpiderSenseGuard | 階層的脅威スクリーニング: ベクトル類似度、オプションのLLMエスカレーション |
| プラグイン | インストール |
|---|
| Claude Code | clawdstrike-plugin/ |
| Cursor | cursor-plugin/ |
| OpenClaw アダプター | npm install @clawdstrike/openclaw (ガイド) |
| デスクトップエージェント | apps/agent/ |
| はじめに | Rust · TypeScript · Python |
| コンセプト | デザイン哲学 · 強制レベル · マルチ言語 |
| フレームワークガイド | OpenAI · Claude · Vercel AI · LangChain · OpenClaw |
| リファレンス | ガード · ポリシースキーマ · リポジトリマップ |
| エンタープライズ | 登録ガイド · アダプティブアーキテクチャ |