
Движок политик и EDR для флотов AI-агентов и рабочих станций разработчиков. Отслеживает вызовы инструментов, доступ к файлам, сетевые потоки и выполнение процессов с аудиторскими записями, подписанными Ed25519, и принудительным применением с блокировкой при сбое.
EDR для эпохи роя.
Отказ с блокировкой. Подписывайте истину.
Статус: бета до версии 1.0. Публичные API стабильны; значения по умолчанию могут быть ужесточены до версии 1.0.
Clawdstrike — это движок политик, EDR и цепочка подписанных аудитов в одном бинарном файле. tool_call ИИ-агента находится в той же таксономии событий, что и file_access, process_exec, network_flow, dylib_load или launch_persistence на уровне ядра. Один движок политик оценивает их. Один причинно-следственный граф, подписанный Ed25519, записывает их. По умолчанию — отказ с блокировкой.
Тот же движок поставляется в виде крейта Rust, SDK TypeScript, пакета Python, модуля Go, CLI, настольного агента EDR (macOS Endpoint Security + Network Extension; Linux Tetragon + Hubble) и корпоративной панели управления.
Быстрый старт · Защитники (Guards) · Политики · Формальная верификация · Предприятие · Дизайн
Установка через предпочитаемый менеджер пакетов:
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
# записывает policy.yaml, config.toml, keys/clawdstrike.key{,.pub}
clawdstrike daemon start && clawdstrike daemon status
# Статус: healthy | Версия: 0.2.7 | В работе: 2s
Три отказа, каждый подписан:
$ clawdstrike check --action-type file --ruleset strict ~/.ssh/id_rsa
Заблокировано [Critical]: Доступ к запрещённому пути: ~/.ssh/id_rsa
$ clawdstrike check --action-type egress --ruleset strict api.openai.com:443
Заблокировано [Error]: Исходящее соединение с api.openai.com заблокировано политикой
$ clawdstrike check --action-type mcp --ruleset strict shell_exec
Заблокировано [Error]: Инструмент 'shell_exec' заблокирован политикой
Проверьте, что политика компилируется и внутренне непротиворечива:
$ clawdstrike verify --policy strict
Согласованность: PASS (47 формул, 0 конфликтов)
Полнота: PASS (охвачено 4/4 типов действий)
Наследование: PASS (0 ослабленных запретов)
Запустите реального агента под контролем:
clawdstrike run --policy clawdstrike:strict -- python my_agent.py
Агент работает нормально. Каждый вызов инструмента сначала проходит через движок. Отказы порождают типизированную ошибку в вашем SDK и выдают подписанную квитанцию.
Для развёртывания на флоте установите Helm chart. hushd и подписанты Spine работают по принципу «отказ с блокировкой» и нуждаются в ключах во время установки, поэтому заранее создайте Secrets и ссылайтесь на них из чарта:
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. Управляющий API (регистрация, команды состояния, подписанные пакеты завершения) и мосты телеметрии Tetragon/Hubble являются опциональными.
Полный набор параметров см. в README чарта, а полный процесс подключения агента — в регистрации на предприятии.
flowchart LR
A[Агент / сенсор] --> B[Каноническое событие]
B --> C[Движок политик + стек защитников]
C -->|разрешить| D[Действие выполняется]
C -->|запретить| E[Заблокировано, отказ с блокировкой]
C --> F[Квитанция Ed25519]
F --> G[Причинно-следственный граф]
G -.->|enterprise| H[Цепочка аудита Spine]
Адаптеры SDK и сенсоры уровня ОС подают одно и то же каноническое событие в движок политик. Адаптеры охватывают вызовы инструментов ИИ-агентов; сенсоры ядра (macOS Endpoint Security и Network Extension, Linux Tetragon и Hubble) охватывают события файлов, процессов, сети, динамических библиотек и персистентности. Стек защитников возвращает вердикт, вердикт сопровождается квитанцией Ed25519, и каждая квитанция хэшируется по содержимому в причинно-следственный граф сессии, который связывает идентичность агента с последующими событиями ОС.
Когда решение пересекает порог реагирования, движок выдаёт подписанное воздействие: поместить файл в карантин, ограничить исходящее направление, приостановить дерево процессов, отозвать ранее выданное разрешение. Воздействия по возможности обратимы. Прошлые наблюдения остаются на дисковом регистраторе, поэтому ужесточённую политику можно протестировать на состоянии прошлой недели, прежде чем развёртывать. В корпоративном режиме цепочка квитанций отправляется через NATS на контрольную точку Spine; независимый свидетель подписывает каждый пакет.
Журналы — это истории; доказательство — подпись.
Каждый защитник — это компонуемая проверка на границе инструмента. Возвращает вердикт с доказательствами. Быстрый отказ или агрегация; настраивается для каждой политики.
Источник правды: crates/libs/clawdstrike/src/guards/.
Версионированный, детерминированный код политик. Схема 1.5.0 (обратно совместима с 1.1.0+). Поддерживает extends из встроенных, локальных файлов, удалённых URL и git-ссылок. Удалённый 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 и дифференциально тестируется на соответствие реализации на Rust через конвейер трансляции Aeneas.
Доказано в Lean (5 свойств для 44 из 45 основных функций):
extends всегда обнаруживаютсяВне рамок доказательства: защитники за пределами основной логики принятия решений, ввод-вывод, сеть и сами криптопримитивы (мы полагаемся на ed25519-dalek).
clawdstrike verify --policy strict # анализ политик Z3
cargo test -p formal-diff-tests # ночные дифференциальные тесты
cd formal/lean4/ClawdStrike && lake build
См. руководство по формальной верификации.
Каждый вердикт сопровождается аттестацией, подписанной Ed25519, содержащей решение, политику, которая его приняла, и доказательства. Квитанции канонизируются с помощью канонизации JSON RFC 8785, поэтому подпись проверяется побайтово одинаково в Rust, TypeScript и Python.
Корпоративные развёртывания пересылают квитанции через 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 подписана Ed25519
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. Регистрация через mTLS, команды состояния с подтверждением запрос/ответ, подписанные пакеты завершения обратно к API.
См. регистрацию на предприятии и адаптивную архитектуру.
Clawdstrike не является сертифицированным продуктом. Он создаёт доказательства, соответствующие стандартным контрольным фреймворкам: подписанные аттестации действий, цепочки аудита с неотказуемостью, детерминированная оценка политик.
| Фреймворк | Доказательства, которые предоставляет движок |
|---|---|
| SOC 2 (CC6.1, CC7.2) | Контроль логического доступа и подписанная цепочка аудита |
| HIPAA §164.312(b) | Контроль аудита с неотказуемыми квитанциями |
| PCI-DSS 10.5 | Журналы, защищённые от изменений, связанные хэшами |
Соответствие фреймворкам является черновиком. Если вам нужна формализация фреймворка, откройте Issue.
Отказ с блокировкой. Недействительные политики отклоняются при загрузке. Ошибки оценки приводят к отказу доступа. Отсутствующие настройки по умолчанию становятся строгими. Ухудшение безопасности требует явного, аудируемого действия.
Доказательство, а не логи. Квитанции Ed25519 — это криптографические аттестации, а не строки логов, которые кто-то может отредактировать. Канонический JSON (RFC 8785) гарантирует, что подписи проверяются побайтово одинаково в Rust, TypeScript и Python.
Один конверт, любой канал. Подписанный конверт Spine побайтово идентичен, независимо от того, передаётся ли он через NATS со скоростью 100 тыс. сообщений/с, gossipsub libp2p через домашний интернет или LoRa-радио на 1200 бит/с. Транспорт невидим для уровня истины.
Только ослабление. Агенты делегируют подмножества своих возможностей, никогда не повышая их. Токены делегирования несут криптографические ограничения возможностей. Повышение привилегий предотвращается не политикой, а математикой.
Владейте своим стеком. Apache-2.0. Возможность самостоятельного хостинга. Нет зависимости от поставщика для критически важной инфраструктуры безопасности. Тот же движок работает на ноутбуке разработчика, корпоративном парке и Raspberry Pi на радио-сетке.
Если вы обнаружили уязвимость:
security.См. SECURITY.md и THREAT_MODEL.md.
См. CONTRIBUTING.md.
cargo fmt --all && cargo clippy --workspace -- -D warnings && cargo test --workspace
Лицензия Apache 2.0. См. LICENSE.
| Защитник | Что отслеживает |
|---|
ForbiddenPathGuard | Доступ к .ssh, .env, .aws, хранилищам учётных данных, веткам реестра |
PathAllowlistGuard | Белый список доступа к файлам для агентов с минимальными привилегиями |
EgressAllowlistGuard | Исходящие сетевые вызовы по доменам (запрещены по умолчанию или есть белый список) |
SecretLeakGuard | Ключи AWS, токены GitHub, закрытые ключи, секреты API при записи файлов |
PatchIntegrityGuard | Опасные патчи типа rm -rf /, chmod 777, отключить защиту |
ShellCommandGuard | Опасные shell-команды до выполнения |
McpToolGuard | Вызовы инструментов MCP с подтверждением |
PromptInjectionGuard | Атаки внедрения в недоверенном вводе |
JailbreakGuard | 4-уровневое обнаружение: эвристика + статистика + ML + опциональный LLM-судья |
ComputerUseGuard | Действия CUA: удалённые сессии, буфер обмена, ввод с клавиатуры, передача файлов |
RemoteDesktopSideChannelGuard | Буфер обмена, аудио, сопоставление дисков, передача файлов в сессиях CUA |
InputInjectionCapabilityGuard | Ограничения возможностей ввода для сред CUA |
SpiderSenseGuard | Иерархическая проверка угроз: векторная близость, опциональное эскалирование LLM |
| Плагин | Установка |
|---|
| Claude Code | clawdstrike-plugin/ |
| Cursor | cursor-plugin/ |
| OpenClaw adapter | npm install @clawdstrike/openclaw (руководство) |
| Desktop Agent | apps/agent/ |
| Начало работы | Rust · TypeScript · Python |
| Концепции | Философия дизайна · Уровни принуждения · Многоязычность |
| Руководства по фреймворкам | OpenAI · Claude · Vercel AI · LangChain · OpenClaw |
| Справочник | Защитники · Схема политики · Карта репозитория |
| Предприятие | Руководство по регистрации · Адаптивная архитектура |